diff --git a/Configuration.h b/Configuration.h
deleted file mode 100644
index fcbdaec..0000000
--- a/Configuration.h
+++ /dev/null
@@ -1,3166 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#define CONFIG_EXAMPLES_DIR "FlashForge/CreatorPro"
-
-/**
- * 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
- */
-#define CONFIGURATION_H_VERSION 02000905
-
-//===========================================================================
-//============================= Getting Started =============================
-//===========================================================================
-
-/**
- * Here are some useful links to help get your machine configured and calibrated:
- *
- * Example Configs: https://github.com/MarlinFirmware/Configurations/branches/all
- *
- * Průša Calculator: https://blog.prusaprinters.org/calculator_3416/
- *
- * Calibration Guides: https://reprap.org/wiki/Calibration
- * https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
- * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
- * https://youtu.be/wAL9d7FgInk
- *
- * Calibration Objects: https://www.thingiverse.com/thing:5573
- * https://www.thingiverse.com/thing:1278865
- */
-
-// @section info
-
-// Author info of this build printed to the host during boot and M115
-#define STRING_CONFIG_H_AUTHOR "M. Baker" // Who made the changes.
-//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
-
-/**
- * *** VENDORS PLEASE READ ***
- *
- * Marlin allows you to add a custom boot image for Graphical LCDs.
- * With this option Marlin will first show your custom screen followed
- * by the standard Marlin logo with version number and web URL.
- *
- * We encourage you to take advantage of this new feature and we also
- * respectfully request that you retain the unmodified Marlin boot screen.
- */
-
-// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION **
-#define SHOW_BOOTSCREEN
-
-// Show the bitmap in Marlin/_Bootscreen.h on startup.
-//#define SHOW_CUSTOM_BOOTSCREEN
-
-// Show the bitmap in Marlin/_Statusscreen.h on the status screen.
-//#define CUSTOM_STATUS_SCREEN_IMAGE
-
-// @section machine
-
-// Choose the name from boards.h that matches your setup
-#ifndef MOTHERBOARD
- #define MOTHERBOARD BOARD_MKS_GEN_L_V21
-#endif
-
-/**
- * Select the serial port on the board to use for communication with the host.
- * This allows the connection of wireless adapters (for instance) to non-default port pins.
- * Serial port -1 is the USB emulated serial port, if available.
- * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
- *
- * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
- */
-#define SERIAL_PORT 0
-
-/**
- * Serial Port Baud Rate
- * This is the default communication speed for all serial ports.
- * Set the baud rate defaults for additional serial ports below.
- *
- * 250000 works in most cases, but you might try a lower speed if
- * you commonly experience drop-outs during host printing.
- * You may try up to 1000000 to speed up SD file transfer.
- *
- * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
- */
-#define BAUDRATE 9600
-//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
-
-/**
- * Select a secondary serial port on the board to use for communication with the host.
- * Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
- * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
- */
-//#define SERIAL_PORT_2 -1
-//#define BAUDRATE_2 250000 // Enable to override BAUDRATE
-
-/**
- * Select a third serial port on the board to use for communication with the host.
- * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1
- * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
- */
-//#define SERIAL_PORT_3 1
-//#define BAUDRATE_3 250000 // Enable to override BAUDRATE
-
-// Enable the Bluetooth serial interface on AT90USB devices
-//#define BLUETOOTH
-
-// Name displayed in the LCD "Ready" message and Info menu
-#define CUSTOM_MACHINE_NAME "Makerbot Replicator"
-
-// Printer's unique ID, used by some programs to differentiate between machines.
-// Choose your own or use a service like https://www.uuidgenerator.net/version4
-//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
-
-/**
- * Stepper Drivers
- *
- * These settings allow Marlin to tune stepper driver timing and enable advanced options for
- * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
- *
- * Use TMC2208/TMC2208_STANDALONE for TMC2225 drivers and TMC2209/TMC2209_STANDALONE for TMC2226 drivers.
- *
- * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,
- * TB6560, TB6600, TMC2100,
- * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
- * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
- * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
- * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
- */
-#define X_DRIVER_TYPE TMC2209_STANDALONE
-#define Y_DRIVER_TYPE TMC2209_STANDALONE
-#define Z_DRIVER_TYPE TMC2209_STANDALONE
-//#define X2_DRIVER_TYPE A4988
-//#define Y2_DRIVER_TYPE A4988
-//#define Z2_DRIVER_TYPE A4988
-//#define Z3_DRIVER_TYPE A4988
-//#define Z4_DRIVER_TYPE A4988
-//#define I_DRIVER_TYPE A4988
-//#define J_DRIVER_TYPE A4988
-//#define K_DRIVER_TYPE A4988
-#define E0_DRIVER_TYPE TMC2209_STANDALONE
-#define E1_DRIVER_TYPE TMC2209_STANDALONE
-//#define E2_DRIVER_TYPE A4988
-//#define E3_DRIVER_TYPE A4988
-//#define E4_DRIVER_TYPE A4988
-//#define E5_DRIVER_TYPE A4988
-//#define E6_DRIVER_TYPE A4988
-//#define E7_DRIVER_TYPE A4988
-
-/**
- * Additional Axis Settings
- *
- * AXISn_NAME defines the letter used to refer to the axis in (most) G-code commands.
- * By convention the names and roles are typically:
- * 'A' : Rotational axis parallel to X
- * 'B' : Rotational axis parallel to Y
- * 'C' : Rotational axis parallel to Z
- * 'U' : Secondary linear axis parallel to X
- * 'V' : Secondary linear axis parallel to Y
- * 'W' : Secondary linear axis parallel to Z
- *
- * Regardless of these settings the axes are internally named I, J, K.
- */
-#ifdef I_DRIVER_TYPE
- #define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W']
-#endif
-#ifdef J_DRIVER_TYPE
- #define AXIS5_NAME 'B' // :['B', 'C', 'U', 'V', 'W']
-#endif
-#ifdef K_DRIVER_TYPE
- #define AXIS6_NAME 'C' // :['C', 'U', 'V', 'W']
-#endif
-
-// @section extruder
-
-// This defines the number of extruders
-// :[0, 1, 2, 3, 4, 5, 6, 7, 8]
-#define EXTRUDERS 2
-
-// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
-#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
-
-// For Cyclops or any "multi-extruder" that shares a single nozzle.
-//#define SINGLENOZZLE
-
-// Save and restore temperature and fan speed on tool-change.
-// Set standby for the unselected tool with M104/106/109 T...
-#if ENABLED(SINGLENOZZLE)
- //#define SINGLENOZZLE_STANDBY_TEMP
- //#define SINGLENOZZLE_STANDBY_FAN
-#endif
-
-/**
- * Multi-Material Unit
- * Set to one of these predefined models:
- *
- * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version)
- * PRUSA_MMU2 : Průša MMU2
- * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5)
- * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
- * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
- *
- * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
- * See additional options in Configuration_adv.h.
- */
-//#define MMU_MODEL PRUSA_MMU2
-
-// A dual extruder that uses a single stepper motor
-//#define SWITCHING_EXTRUDER
-#if ENABLED(SWITCHING_EXTRUDER)
- #define SWITCHING_EXTRUDER_SERVO_NR 0
- #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
- #if EXTRUDERS > 3
- #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
- #endif
-#endif
-
-// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
-//#define SWITCHING_NOZZLE
-#if ENABLED(SWITCHING_NOZZLE)
- #define SWITCHING_NOZZLE_SERVO_NR 0
- //#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second
- #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
-#endif
-
-/**
- * Two separate X-carriages with extruders that connect to a moving part
- * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN.
- */
-//#define PARKING_EXTRUDER
-
-/**
- * Two separate X-carriages with extruders that connect to a moving part
- * via a magnetic docking mechanism using movements and no solenoid
- *
- * project : https://www.thingiverse.com/thing:3080893
- * movements : https://youtu.be/0xCEiG9VS3k
- * https://youtu.be/Bqbcs0CU2FE
- */
-//#define MAGNETIC_PARKING_EXTRUDER
-
-#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER)
-
- #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders
- #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // (mm) Distance to move beyond the parking point to grab the extruder
-
- #if ENABLED(PARKING_EXTRUDER)
-
- #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage
- #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil
- #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // (ms) Delay for magnetic field. No delay if 0 or not defined.
- //#define MANUAL_SOLENOID_CONTROL // Manual control of docking solenoids with M380 S / M381
-
- #elif ENABLED(MAGNETIC_PARKING_EXTRUDER)
-
- #define MPE_FAST_SPEED 9000 // (mm/min) Speed for travel before last distance point
- #define MPE_SLOW_SPEED 4500 // (mm/min) Speed for last distance travel to park and couple
- #define MPE_TRAVEL_DISTANCE 10 // (mm) Last distance point
- #define MPE_COMPENSATION 0 // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling
-
- #endif
-
-#endif
-
-/**
- * Switching Toolhead
- *
- * Support for swappable and dockable toolheads, such as
- * the E3D Tool Changer. Toolheads are locked with a servo.
- */
-//#define SWITCHING_TOOLHEAD
-
-/**
- * Magnetic Switching Toolhead
- *
- * Support swappable and dockable toolheads with a magnetic
- * docking mechanism using movement and no servo.
- */
-//#define MAGNETIC_SWITCHING_TOOLHEAD
-
-/**
- * Electromagnetic Switching Toolhead
- *
- * Parking for CoreXY / HBot kinematics.
- * Toolheads are parked at one edge and held with an electromagnet.
- * Supports more than 2 Toolheads. See https://youtu.be/JolbsAKTKf4
- */
-//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD
-
-#if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_Y_POS 235 // (mm) Y position of the toolhead dock
- #define SWITCHING_TOOLHEAD_Y_SECURITY 10 // (mm) Security distance Y axis
- #define SWITCHING_TOOLHEAD_Y_CLEAR 60 // (mm) Minimum distance from dock for unobstructed X axis
- #define SWITCHING_TOOLHEAD_X_POS { 215, 0 } // (mm) X positions for parking the extruders
- #if ENABLED(SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_SERVO_NR 2 // Index of the servo connector
- #define SWITCHING_TOOLHEAD_SERVO_ANGLES { 0, 180 } // (degrees) Angles for Lock, Unlock
- #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_Y_RELEASE 5 // (mm) Security distance Y axis
- #define SWITCHING_TOOLHEAD_X_SECURITY { 90, 150 } // (mm) Security distance X axis (T0,T1)
- //#define PRIME_BEFORE_REMOVE // Prime the nozzle before release from the dock
- #if ENABLED(PRIME_BEFORE_REMOVE)
- #define SWITCHING_TOOLHEAD_PRIME_MM 20 // (mm) Extruder prime length
- #define SWITCHING_TOOLHEAD_RETRACT_MM 10 // (mm) Retract after priming length
- #define SWITCHING_TOOLHEAD_PRIME_FEEDRATE 300 // (mm/min) Extruder prime feedrate
- #define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE 2400 // (mm/min) Extruder retract feedrate
- #endif
- #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_Z_HOP 2 // (mm) Z raise for switching
- #endif
-#endif
-
-/**
- * "Mixing Extruder"
- * - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
- * - Extends the stepping routines to move multiple steppers in proportion to the mix.
- * - Optional support for Repetier Firmware's 'M164 S' supporting virtual tools.
- * - This implementation supports up to two mixing extruders.
- * - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from 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
- //#define GRADIENT_MIX // Support for gradient mixing with M166 and LCD
- //#define MIXING_PRESETS // Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS
- #if ENABLED(GRADIENT_MIX)
- //#define GRADIENT_VTOOL // Add M166 T to use a V-tool index as a Gradient alias
- #endif
-#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, -34.00 } // (mm) relative X-offset for each nozzle
-//#define HOTEND_OFFSET_Y { 0.0, 0.00 } // (mm) relative Y-offset for each nozzle
-//#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle
-
-// @section machine
-
-/**
- * Power Supply Control
- *
- * Enable and connect the power supply to the PS_ON_PIN.
- * Specify whether the power supply is active HIGH or active LOW.
- */
-//#define PSU_CONTROL
-//#define PSU_NAME "Power Supply"
-
-#if ENABLED(PSU_CONTROL)
- //#define MKS_PWC // Using the MKS PWC add-on
- //#define PS_OFF_CONFIRM // Confirm dialog when power off
- //#define PS_OFF_SOUND // Beep 1s when power off
- #define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box
-
- //#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
- //#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power
- //#define LED_POWEROFF_TIMEOUT 10000 // (ms) Turn off LEDs after power-off, with this amount of delay
-
- //#define POWER_OFF_TIMER // Enable M81 D to power off after a delay
- //#define POWER_OFF_WAIT_FOR_COOLDOWN // Enable M81 S to power off only after cooldown
-
- //#define PSU_POWERUP_GCODE "M355 S1" // G-code to run after power-on (e.g., case light on)
- //#define PSU_POWEROFF_GCODE "M355 S0" // G-code to run before power-off (e.g., case light off)
-
- //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin
- #if ENABLED(AUTO_POWER_CONTROL)
- #define AUTO_POWER_FANS // Turn on PSU if fans need power
- #define AUTO_POWER_E_FANS
- #define AUTO_POWER_CONTROLLERFAN
- #define AUTO_POWER_CHAMBER_FAN
- #define AUTO_POWER_COOLER_FAN
- #define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration
- //#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time.
- #endif
- #if EITHER(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN)
- //#define AUTO_POWER_E_TEMP 50 // (°C) PSU on if any extruder is over this temperature
- //#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) PSU on if the chamber is over this temperature
- //#define AUTO_POWER_COOLER_TEMP 26 // (°C) PSU on if the cooler is over this temperature
- #endif
-#endif
-
-//===========================================================================
-//============================= Thermal Settings ============================
-//===========================================================================
-// @section temperature
-
-/**
- * --NORMAL IS 4.7kΩ PULLUP!-- 1kΩ pullup can be used on hotend sensor, using correct resistor and table
- *
- * Temperature sensors available:
- *
- * SPI RTD/Thermocouple Boards - IMPORTANT: Read the NOTE below!
- * -------
- * -5 : MAX31865 with Pt100/Pt1000, 2, 3, or 4-wire (only for sensors 0-1)
- * NOTE: You must uncomment/set the MAX31865_*_OHMS_n defines below.
- * -3 : MAX31855 with Thermocouple, -200°C to +700°C (only for sensors 0-1)
- * -2 : MAX6675 with Thermocouple, 0°C to +700°C (only for sensors 0-1)
- *
- * NOTE: Ensure TEMP_n_CS_PIN is set in your pins file for each TEMP_SENSOR_n using an SPI Thermocouple. By default,
- * Hardware SPI on the default serial bus is used. If you have also set TEMP_n_SCK_PIN and TEMP_n_MISO_PIN,
- * Software SPI will be used on those ports instead. You can force Hardware SPI on the default bus in the
- * Configuration_adv.h file. At this time, separate Hardware SPI buses for sensors are not supported.
- *
- * Analog Themocouple Boards
- * -------
- * -4 : AD8495 with Thermocouple
- * -1 : AD595 with Thermocouple
- *
- * Analog Thermistors - 4.7kΩ pullup - Normal
- * -------
- * 1 : 100kΩ EPCOS - Best choice for EPCOS thermistors
- * 331 : 100kΩ Same as #1, but 3.3V scaled for MEGA
- * 332 : 100kΩ Same as #1, but 3.3V scaled for DUE
- * 2 : 200kΩ ATC Semitec 204GT-2
- * 202 : 200kΩ Copymaster 3D
- * 3 : ???Ω Mendel-parts thermistor
- * 4 : 10kΩ Generic Thermistor !! DO NOT use for a hotend - it gives bad resolution at high temp. !!
- * 5 : 100kΩ ATC Semitec 104GT-2/104NT-4-R025H42G - Used in ParCan, J-Head, and E3D, SliceEngineering 300°C
- * 501 : 100kΩ Zonestar - Tronxy X3A
- * 502 : 100kΩ Zonestar - used by hot bed in Zonestar Průša P802M
- * 503 : 100kΩ Zonestar (Z8XM2) Heated Bed thermistor
- * 504 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-B3950) Hotend Thermistor
- * 505 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-3950) Bed Thermistor
- * 512 : 100kΩ RPW-Ultra hotend
- * 6 : 100kΩ EPCOS - Not as accurate as table #1 (created using a fluke thermocouple)
- * 7 : 100kΩ Honeywell 135-104LAG-J01
- * 71 : 100kΩ Honeywell 135-104LAF-J01
- * 8 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT
- * 9 : 100kΩ GE Sensing AL03006-58.2K-97-G1
- * 10 : 100kΩ RS PRO 198-961
- * 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1%
- * 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed
- * 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1%
- * 15 : 100kΩ Calibrated for JGAurora A5 hotend
- * 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327
- * 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input
- * 23 : 100kΩ GTM32 Pro vB - bed - 4.7kΩ pullup to 3.3v and 220Ω to analog input
- * 30 : 100kΩ Kis3d Silicone heating mat 200W/300W with 6mm precision cast plate (EN AW 5083) NTC100K - beta 3950
- * 60 : 100kΩ Maker's Tool Works Kapton Bed Thermistor - beta 3950
- * 61 : 100kΩ Formbot/Vivedino 350°C Thermistor - beta 3950
- * 66 : 4.7MΩ Dyze Design High Temperature Thermistor
- * 67 : 500kΩ SliceEngineering 450°C Thermistor
- * 68 : PT100 amplifier board from Dyze Design
- * 70 : 100kΩ bq Hephestos 2
- * 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32
- * 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor
- *
- * Analog Thermistors - 1kΩ pullup - Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ.
- * ------- (but gives greater accuracy and more stable PID)
- * 51 : 100kΩ EPCOS (1kΩ pullup)
- * 52 : 200kΩ ATC Semitec 204GT-2 (1kΩ pullup)
- * 55 : 100kΩ ATC Semitec 104GT-2 - Used in ParCan & J-Head (1kΩ pullup)
- *
- * Analog Thermistors - 10kΩ pullup - Atypical
- * -------
- * 99 : 100kΩ Found on some Wanhao i3 machines with a 10kΩ pull-up resistor
- *
- * Analog RTDs (Pt100/Pt1000)
- * -------
- * 110 : Pt100 with 1kΩ pullup (atypical)
- * 147 : Pt100 with 4.7kΩ pullup
- * 1010 : Pt1000 with 1kΩ pullup (atypical)
- * 1047 : Pt1000 with 4.7kΩ pullup (E3D)
- * 20 : Pt100 with circuit in the Ultimainboard V2.x with mainboard ADC reference voltage = INA826 amplifier-board supply voltage.
- * NOTE: (1) Must use an ADC input with no pullup. (2) Some INA826 amplifiers are unreliable at 3.3V so consider using sensor 147, 110, or 21.
- * 21 : Pt100 with circuit in the Ultimainboard V2.x with 3.3v ADC reference voltage (STM32, LPC176x....) and 5V INA826 amplifier board supply.
- * NOTE: ADC pins are not 5V tolerant. Not recommended because it's possible to damage the CPU by going over 500°C.
- * 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x
- *
- * Custom/Dummy/Other Thermal Sensors
- * ------
- * 0 : not used
- * 1000 : Custom - Specify parameters in Configuration_adv.h
- *
- * !!! Use these for Testing or Development purposes. NEVER for production machine. !!!
- * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
- * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
- *
- */
-#define TEMP_SENSOR_0 1
-#define TEMP_SENSOR_1 1
-#define TEMP_SENSOR_2 0
-#define TEMP_SENSOR_3 0
-#define TEMP_SENSOR_4 0
-#define TEMP_SENSOR_5 0
-#define TEMP_SENSOR_6 0
-#define TEMP_SENSOR_7 0
-#define TEMP_SENSOR_BED 1
-#define TEMP_SENSOR_PROBE 0
-#define TEMP_SENSOR_CHAMBER 0
-#define TEMP_SENSOR_COOLER 0
-#define TEMP_SENSOR_BOARD 0
-#define TEMP_SENSOR_REDUNDANT 0
-
-// Dummy thermistor constant temperature readings, for use with 998 and 999
-#define DUMMY_THERMISTOR_998_VALUE 25
-#define DUMMY_THERMISTOR_999_VALUE 100
-
-// Resistor values when using MAX31865 sensors (-5) on TEMP_SENSOR_0 / 1
-//#define MAX31865_SENSOR_OHMS_0 100 // (Ω) Typically 100 or 1000 (PT100 or PT1000)
-//#define MAX31865_CALIBRATION_OHMS_0 430 // (Ω) Typically 430 for Adafruit PT100; 4300 for Adafruit PT1000
-//#define MAX31865_SENSOR_OHMS_1 100
-//#define MAX31865_CALIBRATION_OHMS_1 430
-
-#define TEMP_RESIDENCY_TIME 0 // (seconds) Time to wait for hotend to "settle" in M109
-#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
-#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
-
-#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) Time to wait for bed to "settle" in M190
-#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
-#define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
-
-#define TEMP_CHAMBER_RESIDENCY_TIME 10 // (seconds) Time to wait for chamber to "settle" in M191
-#define TEMP_CHAMBER_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
-#define TEMP_CHAMBER_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
-
-/**
- * Redundant Temperature Sensor (TEMP_SENSOR_REDUNDANT)
- *
- * Use a temp sensor as a redundant sensor for another reading. Select an unused temperature sensor, and another
- * sensor you'd like it to be redundant for. If the two thermistors differ by TEMP_SENSOR_REDUNDANT_MAX_DIFF (°C),
- * the print will be aborted. Whichever sensor is selected will have its normal functions disabled; i.e. selecting
- * the Bed sensor (-1) will disable bed heating/monitoring.
- *
- * For selecting source/target use: COOLER, PROBE, BOARD, CHAMBER, BED, E0, E1, E2, E3, E4, E5, E6, E7
- */
-#if TEMP_SENSOR_REDUNDANT
- #define TEMP_SENSOR_REDUNDANT_SOURCE E1 // The sensor that will provide the redundant reading.
- #define TEMP_SENSOR_REDUNDANT_TARGET E0 // The sensor that we are providing a redundant reading for.
- #define TEMP_SENSOR_REDUNDANT_MAX_DIFF 10 // (°C) Temperature difference that will trigger a print abort.
-#endif
-
-// Below this temperature the heater will be switched off
-// because it probably indicates a broken thermistor wire.
-#define HEATER_0_MINTEMP 5
-#define HEATER_1_MINTEMP 5
-#define HEATER_2_MINTEMP 5
-#define HEATER_3_MINTEMP 5
-#define HEATER_4_MINTEMP 5
-#define HEATER_5_MINTEMP 5
-#define HEATER_6_MINTEMP 5
-#define HEATER_7_MINTEMP 5
-#define BED_MINTEMP 5
-#define CHAMBER_MINTEMP 5
-
-// Above this temperature the heater will be switched off.
-// This can protect components from overheating, but NOT from shorts and failures.
-// (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 HEATER_4_MAXTEMP 260
-#define HEATER_5_MAXTEMP 260
-#define HEATER_6_MAXTEMP 260
-#define HEATER_7_MAXTEMP 260
-#define BED_MAXTEMP 110
-#define CHAMBER_MAXTEMP 60
-
-/**
- * Thermal Overshoot
- * During heatup (and printing) the temperature can often "overshoot" the target by many degrees
- * (especially before PID tuning). Setting the target temperature too close to MAXTEMP guarantees
- * a MAXTEMP shutdown! Use these values to forbid temperatures being set too close to MAXTEMP.
- */
-#define HOTEND_OVERSHOOT 15 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT
-#define BED_OVERSHOOT 10 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT
-#define COOLER_OVERSHOOT 2 // (°C) Forbid temperatures closer than OVERSHOOT
-
-//===========================================================================
-//============================= PID Settings ================================
-//===========================================================================
-
-// Enable PIDTEMP for PID control or MPCTEMP for Predictive Model.
-// temperature control. Disable both for bang-bang heating.
-#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
-//#define MPCTEMP // ** EXPERIMENTAL **
-
-#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
-#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
-#define PID_K1 0.95 // Smoothing factor within any PID loop
-
-#if ENABLED(PIDTEMP)
- //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
- // Set/get with G-code: M301 E[extruder number, 0-2]
-
- #if ENABLED(PID_PARAMS_PER_HOTEND)
- // Specify up to one value per hotend here, according to your setup.
- // If there are fewer values, the last one applies to the remaining hotends.
- #define DEFAULT_Kp_LIST { 20.03, 20.03 }
- #define DEFAULT_Ki_LIST { 1.22, 1.22 }
- #define DEFAULT_Kd_LIST { 82.05, 82.05 }
- #else
- #define DEFAULT_Kp 20.03
- #define DEFAULT_Ki 1.22
- #define DEFAULT_Kd 82.05
- #endif
-#endif
-
-/**
- * Model Predictive Control for hotend
- *
- * Use a physical model of the hotend to control temperature. When configured correctly
- * this gives better responsiveness and stability than PID and it also removes the need
- * for PID_EXTRUSION_SCALING and PID_FAN_SCALING. Use M306 T to autotune the model.
- */
-#if ENABLED(MPCTEMP)
- //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1300 bytes of flash)
- //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash)
-
- #define MPC_MAX BANG_MAX // (0..255) Current to nozzle while MPC is active.
- #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers.
-
- #define MPC_INCLUDE_FAN // Model the fan speed?
-
- // Measured physical constants from M306
- #define MPC_BLOCK_HEAT_CAPACITY { 16.7f } // (J/K) Heat block heat capacities.
- #define MPC_SENSOR_RESPONSIVENESS { 0.22f } // (K/s per ∆K) Rate of change of sensor temperature from heat block.
- #define MPC_AMBIENT_XFER_COEFF { 0.068f } // (W/K) Heat transfer coefficients from heat block to room air with fan off.
- #if ENABLED(MPC_INCLUDE_FAN)
- #define MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full.
- #endif
-
- // For one fan and multiple hotends MPC needs to know how to apply the fan cooling effect.
- #if ENABLED(MPC_INCLUDE_FAN)
- //#define MPC_FAN_0_ALL_HOTENDS
- //#define MPC_FAN_0_ACTIVE_HOTEND
- #endif
-
- #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA).
- //#define FILAMENT_HEAT_CAPACITY_PERMM { 3.6e-3f } // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG).
-
- // Advanced options
- #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization.
- #define MPC_MIN_AMBIENT_CHANGE 1.0f // (K/s) Modeled ambient temperature rate of change, when correcting model inaccuracies.
- #define MPC_STEADYSTATE 0.5f // (K/s) Temperature change rate for steady state logic to be enforced.
-
- #define MPC_TUNING_POS { X_CENTER, Y_CENTER, 1.0f } // (mm) M306 Autotuning position, ideally bed center at first layer height.
- #define MPC_TUNING_END_Z 10.0f // (mm) M306 Autotuning final Z position.
-#endif
-
-//===========================================================================
-//====================== PID > Bed Temperature Control ======================
-//===========================================================================
-
-/**
- * PID Bed Heating
- *
- * If this option is enabled set PID constants below.
- * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis.
- *
- * The PID frequency will be the same as the extruder PWM.
- * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
- * which is fine for driving a square wave into a resistive load and does not significantly
- * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W
- * heater. If your configuration is significantly different than this and you don't understand
- * the issues involved, don't use bed PID until someone else verifies that your hardware works.
- */
-//#define PIDTEMPBED
-
-//#define BED_LIMIT_SWITCHING
-
-/**
- * Max Bed Power
- * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis).
- * When set to any value below 255, enables a form of PWM to the bed that acts like a divider
- * so don'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 MIN_BED_POWER 0
- //#define PID_BED_DEBUG // Sends debug data to the serial port.
-
- // 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
-
- // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
-#endif // PIDTEMPBED
-
-//===========================================================================
-//==================== PID > Chamber Temperature Control ====================
-//===========================================================================
-
-/**
- * PID Chamber Heating
- *
- * If this option is enabled set PID constants below.
- * If this option is disabled, bang-bang will be used and CHAMBER_LIMIT_SWITCHING will enable
- * hysteresis.
- *
- * The PID frequency will be the same as the extruder PWM.
- * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
- * which is fine for driving a square wave into a resistive load and does not significantly
- * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 200W
- * heater. If your configuration is significantly different than this and you don't understand
- * the issues involved, don't use chamber PID until someone else verifies that your hardware works.
- */
-//#define PIDTEMPCHAMBER
-//#define CHAMBER_LIMIT_SWITCHING
-
-/**
- * Max Chamber Power
- * Applies to all forms of chamber control (PID, bang-bang, and bang-bang with hysteresis).
- * When set to any value below 255, enables a form of PWM to the chamber heater that acts like a divider
- * so don't use it unless you are OK with PWM on your heater. (See the comment on enabling PIDTEMPCHAMBER)
- */
-#define MAX_CHAMBER_POWER 255 // limits duty cycle to chamber heater; 255=full current
-
-#if ENABLED(PIDTEMPCHAMBER)
- #define MIN_CHAMBER_POWER 0
- //#define PID_CHAMBER_DEBUG // Sends debug data to the serial port.
-
- // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element
- // and placed inside the small Creality printer enclosure tent.
- //
- #define DEFAULT_chamberKp 37.04
- #define DEFAULT_chamberKi 1.40
- #define DEFAULT_chamberKd 655.17
- // M309 P37.04 I1.04 D655.17
-
- // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles.
-#endif // PIDTEMPCHAMBER
-
-#if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER)
- //#define PID_DEBUG // Sends debug data to the serial port. Use 'M303 D' to toggle activation.
- //#define PID_OPENLOOP // 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_FUNCTIONAL_RANGE 15 // 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_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash)
- //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash)
-#endif
-
-// @section extruder
-
-/**
- * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP.
- * Add M302 to set the minimum extrusion temperature and/or turn
- * cold extrusion prevention on and off.
- *
- * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
- */
-#define PREVENT_COLD_EXTRUSION
-#define EXTRUDE_MINTEMP 170
-
-/**
- * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH.
- * Note: For Bowden Extruders make this large enough to allow load/unload.
- */
-#define PREVENT_LENGTHY_EXTRUDE
-#define EXTRUDE_MAXLENGTH 200
-
-//===========================================================================
-//======================== Thermal Runaway Protection =======================
-//===========================================================================
-
-/**
- * Thermal Protection provides additional protection to your printer from damage
- * and fire. Marlin always includes safe min and max temperature ranges which
- * protect against a broken or disconnected thermistor wire.
- *
- * The issue: If a thermistor falls out, it will report the much lower
- * temperature of the air in the room, and the 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
-#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber
-#define THERMAL_PROTECTION_COOLER // Enable thermal protection for the laser cooling
-
-//===========================================================================
-//============================= Mechanical Settings =========================
-//===========================================================================
-
-// @section machine
-
-// Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics,
-// either in the usual order or reversed
-//#define COREXY
-//#define COREXZ
-//#define COREYZ
-//#define COREYX
-//#define COREZX
-//#define COREZY
-//#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042
-//#define MARKFORGED_YX
-
-// Enable for a belt style printer with endless "Z" motion
-//#define BELTPRINTER
-
-// Enable for Polargraph Kinematics
-//#define POLARGRAPH
-#if ENABLED(POLARGRAPH)
- #define POLARGRAPH_MAX_BELT_LEN 1035.0
- #define POLAR_SEGMENTS_PER_SECOND 5
-#endif
-
-// Enable for DELTA kinematics and configure below
-//#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
-
- // After homing move down to a height where XY movement is unconstrained
- //#define DELTA_HOME_TO_SAFE_ZONE
-
- // Delta calibration menu
- // uncomment to add three points calibration menu option.
- // See http://minow.blogspot.com/index.html#4918805519571907051
- //#define DELTA_CALIBRATION_MENU
-
- // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
- //#define DELTA_AUTO_CALIBRATION
-
- // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
-
- #if ENABLED(DELTA_AUTO_CALIBRATION)
- // set the default number of probe points : n*n (1 -> 7)
- #define DELTA_CALIBRATION_DEFAULT_POINTS 4
- #endif
-
- #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU)
- // Set the steprate for papertest probing
- #define PROBE_MANUALLY_STEP 0.05 // (mm)
- #endif
-
- // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
- #define DELTA_PRINTABLE_RADIUS 140.0 // (mm)
-
- // Maximum reachable area
- #define DELTA_MAX_RADIUS 140.0 // (mm)
-
- // Center-to-center distance of the holes in the diagonal push rods.
- #define DELTA_DIAGONAL_ROD 250.0 // (mm)
-
- // Distance between bed and nozzle Z home position
- #define DELTA_HEIGHT 250.00 // (mm) Get this value from G33 auto calibrate
-
- #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate
-
- // Horizontal distance bridged by diagonal push rods when effector is centered.
- #define DELTA_RADIUS 124.0 // (mm) Get this value from G33 auto calibrate
-
- // Trim adjustments for individual towers
- // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
- // measured in degrees anticlockwise looking from above the printer
- #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate
-
- // Delta radius and diagonal rod adjustments (mm)
- //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
- //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
-#endif
-
-/**
- * MORGAN_SCARA was developed by QHARLEY in South Africa in 2012-2013.
- * Implemented and slightly reworked by JCERNY in June, 2014.
- *
- * Mostly Printed SCARA is an open source design by Tyler Williams. See:
- * https://www.thingiverse.com/thing:2487048
- * https://www.thingiverse.com/thing:1241491
- */
-//#define MORGAN_SCARA
-//#define MP_SCARA
-#if EITHER(MORGAN_SCARA, MP_SCARA)
- // If movement is choppy try lowering this value
- #define SCARA_SEGMENTS_PER_SECOND 200
-
- // Length of inner and outer support arms. Measure arm lengths precisely.
- #define SCARA_LINKAGE_1 150 // (mm)
- #define SCARA_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)
-
- #if ENABLED(MORGAN_SCARA)
-
- //#define DEBUG_SCARA_KINEMATICS
- #define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly
-
- // Radius around the center where the arm cannot reach
- #define MIDDLE_DEAD_ZONE_R 0 // (mm)
-
- #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073
- #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See http://reprap.harleystudio.co.za/?page_id=1073
-
- #elif ENABLED(MP_SCARA)
-
- #define SCARA_OFFSET_THETA1 12 // degrees
- #define SCARA_OFFSET_THETA2 131 // degrees
-
- #endif
-
-#endif
-
-// Enable for TPARA kinematics and configure below
-//#define AXEL_TPARA
-#if ENABLED(AXEL_TPARA)
- #define DEBUG_ROBOT_KINEMATICS
- #define ROBOT_SEGMENTS_PER_SECOND 200
-
- // Length of inner and outer support arms. Measure arm lengths precisely.
- #define ROBOT_LINKAGE_1 120 // (mm)
- #define ROBOT_LINKAGE_2 120 // (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 ROBOT_OFFSET_X 0 // (mm)
- #define ROBOT_OFFSET_Y 0 // (mm)
- #define ROBOT_OFFSET_Z 0 // (mm)
-
- #define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly
-
- // Radius around the center where the arm cannot reach
- #define MIDDLE_DEAD_ZONE_R 0 // (mm)
-
- // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073
- #define THETA_HOMING_OFFSET 0
- #define PSI_HOMING_OFFSET 0
-#endif
-
-//===========================================================================
-//============================== 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_IMIN_PLUG
-//#define USE_JMIN_PLUG
-//#define USE_KMIN_PLUG
-#define USE_XMAX_PLUG
-//#define USE_YMAX_PLUG
-//#define USE_ZMAX_PLUG
-//#define USE_IMAX_PLUG
-//#define USE_JMAX_PLUG
-//#define USE_KMAX_PLUG
-
-// Enable pullup for all endstops to prevent a floating state
-#define ENDSTOPPULLUPS
-#if DISABLED(ENDSTOPPULLUPS)
- // Disable ENDSTOPPULLUPS to set pullups individually
- //#define ENDSTOPPULLUP_XMIN
- //#define ENDSTOPPULLUP_YMIN
- //#define ENDSTOPPULLUP_ZMIN
- //#define ENDSTOPPULLUP_IMIN
- //#define ENDSTOPPULLUP_JMIN
- //#define ENDSTOPPULLUP_KMIN
- //#define ENDSTOPPULLUP_XMAX
- //#define ENDSTOPPULLUP_YMAX
- //#define ENDSTOPPULLUP_ZMAX
- //#define ENDSTOPPULLUP_IMAX
- //#define ENDSTOPPULLUP_JMAX
- //#define ENDSTOPPULLUP_KMAX
- //#define ENDSTOPPULLUP_ZMIN_PROBE
-#endif
-
-// Enable pulldown for all endstops to prevent a floating state
-//#define ENDSTOPPULLDOWNS
-#if DISABLED(ENDSTOPPULLDOWNS)
- // Disable ENDSTOPPULLDOWNS to set pulldowns individually
- //#define ENDSTOPPULLDOWN_XMIN
- //#define ENDSTOPPULLDOWN_YMIN
- //#define ENDSTOPPULLDOWN_ZMIN
- //#define ENDSTOPPULLDOWN_IMIN
- //#define ENDSTOPPULLDOWN_JMIN
- //#define ENDSTOPPULLDOWN_KMIN
- //#define ENDSTOPPULLDOWN_XMAX
- //#define ENDSTOPPULLDOWN_YMAX
- //#define ENDSTOPPULLDOWN_ZMAX
- //#define ENDSTOPPULLDOWN_IMAX
- //#define ENDSTOPPULLDOWN_JMAX
- //#define ENDSTOPPULLDOWN_KMAX
- //#define ENDSTOPPULLDOWN_ZMIN_PROBE
-#endif
-
-// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
-#define X_MIN_ENDSTOP_INVERTING 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 I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
-#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
-
-// Enable this feature if all enabled endstop pins are interrupt-capable.
-// This will remove the need to poll the interrupt pins, saving many CPU cycles.
-//#define ENDSTOP_INTERRUPTS_FEATURE
-
-/**
- * Endstop Noise Threshold
- *
- * Enable if your probe or endstops falsely trigger due to noise.
- *
- * - Higher values may affect repeatability or accuracy of some bed probes.
- * - To fix noise install a 100nF ceramic capacitor in parallel with the switch.
- * - This feature is not required for common micro-switches mounted on PCBs
- * based on the Makerbot design, which already have the 100nF capacitor.
- *
- * :[2,3,4,5,6,7]
- */
-//#define ENDSTOP_NOISE_THRESHOLD 2
-
-// Check for stuck or disconnected endstops during homing moves.
-//#define DETECT_BROKEN_ENDSTOP
-
-//=============================================================================
-//============================== Movement Settings ============================
-//=============================================================================
-// @section motion
-
-/**
- * Default Settings
- *
- * These settings can be reset by M502
- *
- * Note that if EEPROM is enabled, saved values will override these.
- */
-
-/**
- * With this option each E stepper can have its own factors for the
- * following movement settings. If fewer factors are given than the
- * total number of extruders, the last value applies to the rest.
- */
-//#define DISTINCT_E_FACTORS
-
-/**
- * Default Axis Steps Per Unit (steps/mm)
- * Override with M92
- * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
- */
-#define DEFAULT_AXIS_STEPS_PER_UNIT { 94.139704, 94.139704, 400, 96.275201870 }
-
-/**
- * Default Max Feed Rate (mm/s)
- * Override with M203
- * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
- */
-#define DEFAULT_MAX_FEEDRATE { 250, 250, 20, 100 }
-
-//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
-#if ENABLED(LIMITED_MAX_FR_EDITING)
- #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits
-#endif
-
-/**
- * Default Max Acceleration (change/s) change = mm/s
- * (Maximum start speed for accelerated moves)
- * Override with M201
- * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
- */
-#define DEFAULT_MAX_ACCELERATION { 1000, 1000, 100, 5000 }
-
-//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
-#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
- #define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // ...or, set your own edit limits
-#endif
-
-/**
- * Default Acceleration (change/s) change = mm/s
- * Override with M204
- *
- * M204 P Acceleration
- * M204 R Retract Acceleration
- * M204 T Travel Acceleration
- */
-#define DEFAULT_ACCELERATION 250 // X, Y, Z ... and E acceleration for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 5000 // E acceleration for retracts
-#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z ... acceleration for travel (non printing) moves
-
-/**
- * Default Jerk limits (mm/s)
- * Override with M205 X Y Z E
- *
- * "Jerk" specifies the minimum speed change that requires acceleration.
- * When changing speed and direction, if the difference is less than the
- * value set here, it may happen instantaneously.
- */
-//#define CLASSIC_JERK
-#if ENABLED(CLASSIC_JERK)
-#define DEFAULT_XJERK 20.0
-#define DEFAULT_YJERK 20.0
-#define DEFAULT_ZJERK 0.4
- //#define DEFAULT_IJERK 0.3
- //#define DEFAULT_JJERK 0.3
- //#define DEFAULT_KJERK 0.3
-
- //#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves
-
- //#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2
- #if ENABLED(LIMITED_JERK_EDITING)
- #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits
- #endif
-#endif
-
-#define DEFAULT_EJERK 2.0 // May be used by Linear Advance
-
-/**
- * Junction Deviation Factor
- *
- * See:
- * https://reprap.org/forum/read.php?1,739819
- * https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
- */
-#if DISABLED(CLASSIC_JERK)
- #define JUNCTION_DEVIATION_MM 0.64 // (mm) Distance from real junction edge
- #define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle
- // for small segments (< 1mm) with large junction angles (> 135°).
-#endif
-
-/**
- * S-Curve Acceleration
- *
- * This option eliminates vibration during printing by fitting a Bézier
- * curve to move acceleration, producing much smoother direction changes.
- *
- * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
- */
-#define S_CURVE_ACCELERATION
-
-//===========================================================================
-//============================= Z Probe Options =============================
-//===========================================================================
-// @section probes
-
-//
-// See https://marlinfw.org/docs/configuration/probes.html
-//
-
-/**
- * Enable this option for a probe connected to the Z-MIN pin.
- * The probe replaces the Z-MIN endstop and is used for Z homing.
- * (Automatically enables USE_PROBE_FOR_Z_HOMING.)
- */
-#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
-
-// Force the use of the probe for Z-axis homing
-//#define USE_PROBE_FOR_Z_HOMING
-
-/**
- * Z_MIN_PROBE_PIN
- *
- * Define this pin if the probe is not connected to Z_MIN_PIN.
- * If not defined the default pin for the selected MOTHERBOARD
- * will be used. Most of the time the default is what you want.
- *
- * - The simplest option is to use a free endstop connector.
- * - Use 5V for powered (usually inductive) sensors.
- *
- * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
- * - For simple switches connect...
- * - normally-closed switches to GND and D32.
- * - normally-open switches to 5V and D32.
- */
-//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default
-
-/**
- * Probe Type
- *
- * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
- * Activate one of these to use Auto Bed Leveling below.
- */
-
-/**
- * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
- * Use G29 repeatedly, adjusting the Z height at each point with movement commands
- * or (with LCD_BED_LEVELING) the LCD controller.
- */
-//#define PROBE_MANUALLY
-
-/**
- * A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
- * (e.g., an inductive probe or a nozzle-based probe-switch.)
- */
-//#define FIX_MOUNTED_PROBE
-
-/**
- * Use the nozzle as the probe, as with a conductive
- * nozzle system or a piezo-electric smart effector.
- */
-//#define NOZZLE_AS_PROBE
-
-/**
- * Z Servo Probe, such as an endstop switch on a rotating arm.
- */
-//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector.
-//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles
-
-/**
- * The BLTouch probe uses a Hall effect sensor and emulates a servo.
- */
-//#define BLTOUCH
-
-/**
- * MagLev V4 probe by MDD
- *
- * This probe is deployed and activated by powering a built-in electromagnet.
- */
-//#define MAGLEV4
-#if ENABLED(MAGLEV4)
- //#define MAGLEV_TRIGGER_PIN 11 // Set to the connected digital output
- #define MAGLEV_TRIGGER_DELAY 15 // Changing this risks overheating the coil
-#endif
-
-/**
- * Touch-MI Probe by hotends.fr
- *
- * This probe is deployed and activated by moving the X-axis to a magnet at the edge of the bed.
- * By default, the magnet is assumed to be on the left and activated by a home. If the magnet is
- * on the right, enable and set TOUCH_MI_DEPLOY_XPOS to the deploy position.
- *
- * Also requires: BABYSTEPPING, BABYSTEP_ZPROBE_OFFSET, Z_SAFE_HOMING,
- * and a minimum Z_HOMING_HEIGHT of 10.
- */
-//#define TOUCH_MI_PROBE
-#if ENABLED(TOUCH_MI_PROBE)
- #define TOUCH_MI_RETRACT_Z 0.5 // Height at which the probe retracts
- //#define TOUCH_MI_DEPLOY_XPOS (X_MAX_BED + 2) // For a magnet on the right side of the bed
- //#define TOUCH_MI_MANUAL_DEPLOY // For manual deploy (LCD menu)
-#endif
-
-// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
-//#define SOLENOID_PROBE
-
-// A sled-mounted probe 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.
-
-// A probe deployed by moving the x-axis, such as the Wilson II's rack-and-pinion probe designed by Marty Rice.
-//#define RACK_AND_PINION_PROBE
-#if ENABLED(RACK_AND_PINION_PROBE)
- #define Z_PROBE_DEPLOY_X X_MIN_POS
- #define Z_PROBE_RETRACT_X X_MAX_POS
-#endif
-
-// Duet Smart Effector (for delta printers) - https://bit.ly/2ul5U7J
-// When the pin is defined you can use M672 to set/reset the probe sensitivity.
-//#define DUET_SMART_EFFECTOR
-#if ENABLED(DUET_SMART_EFFECTOR)
- #define SMART_EFFECTOR_MOD_PIN -1 // Connect a GPIO pin to the Smart Effector MOD pin
-#endif
-
-/**
- * Use StallGuard2 to probe the bed with the nozzle.
- * Requires stallGuard-capable Trinamic stepper drivers.
- * CAUTION: This can damage machines with Z lead screws.
- * Take extreme care when setting up this feature.
- */
-//#define SENSORLESS_PROBING
-
-/**
- * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
- * Deploys by touching z-axis belt. Retracts by pushing the probe down.
- */
-//#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 { 30.0, DELTA_PRINTABLE_RADIUS, 100.0 }
- #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_DEPLOY_2 { 0.0, DELTA_PRINTABLE_RADIUS, 100.0 }
- #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_FEEDRATE)/10
-
- #define Z_PROBE_ALLEN_KEY_DEPLOY_3 { 0.0, (DELTA_PRINTABLE_RADIUS) * 0.75, 100.0 }
- #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_STOW_1 { -64.0, 56.0, 23.0 } // Move the probe into position
- #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_STOW_2 { -64.0, 56.0, 3.0 } // Push it down
- #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_FEEDRATE)/10
-
- #define Z_PROBE_ALLEN_KEY_STOW_3 { -64.0, 56.0, 50.0 } // Move it up to clear
- #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_STOW_4 { 0.0, 0.0, 50.0 }
- #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_FEEDRATE
-
-#endif // Z_PROBE_ALLEN_KEY
-
-/**
- * Nozzle-to-Probe offsets { X, Y, Z }
- *
- * X and Y offset
- * Use a caliper or ruler to measure the distance from the tip of
- * the Nozzle to the center-point of the Probe in the X and Y axes.
- *
- * Z offset
- * - For the Z offset use your best known value and adjust at runtime.
- * - Common probes trigger below the nozzle and have negative values for Z offset.
- * - Probes triggering above the nozzle height are uncommon but do exist. When using
- * probes such as this, carefully set Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES
- * to avoid collisions during probing.
- *
- * Tune and Adjust
- * - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc.
- * - PROBE_OFFSET_WIZARD (configuration_adv.h) can be used for setting the Z offset.
- *
- * Assuming the typical work area orientation:
- * - Probe to RIGHT of the Nozzle has a Positive X offset
- * - Probe to LEFT of the Nozzle has a Negative X offset
- * - Probe in BACK of the Nozzle has a Positive Y offset
- * - Probe in FRONT of the Nozzle has a Negative Y offset
- *
- * Some examples:
- * #define NOZZLE_TO_PROBE_OFFSET { 10, 10, -1 } // Example "1"
- * #define NOZZLE_TO_PROBE_OFFSET {-10, 5, -1 } // Example "2"
- * #define NOZZLE_TO_PROBE_OFFSET { 5, -5, -1 } // Example "3"
- * #define NOZZLE_TO_PROBE_OFFSET {-15,-10, -1 } // Example "4"
- *
- * +-- BACK ---+
- * | [+] |
- * L | 1 | R <-- Example "1" (right+, back+)
- * E | 2 | I <-- Example "2" ( left-, back+)
- * F |[-] N [+]| G <-- Nozzle
- * T | 3 | H <-- Example "3" (right+, front-)
- * | 4 | T <-- Example "4" ( left-, front-)
- * | [-] |
- * O-- FRONT --+
- */
-#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
-
-// Most probes should stay away from the edges of the bed, but
-// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
-#define PROBING_MARGIN 10
-
-// X and Y axis travel speed (mm/min) between probes
-#define XY_PROBE_FEEDRATE (133*60)
-
-// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2)
-#define Z_PROBE_FEEDRATE_FAST (4*60)
-
-// Feedrate (mm/min) for the "accurate" probe of each point
-#define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2)
-
-/**
- * Probe Activation Switch
- * A switch indicating proper deployment, or an optical
- * switch triggered when the carriage is near the bed.
- */
-//#define PROBE_ACTIVATION_SWITCH
-#if ENABLED(PROBE_ACTIVATION_SWITCH)
- #define PROBE_ACTIVATION_SWITCH_STATE LOW // State indicating probe is active
- //#define PROBE_ACTIVATION_SWITCH_PIN PC6 // Override default pin
-#endif
-
-/**
- * Tare Probe (determine zero-point) prior to each probe.
- * Useful for a strain gauge or piezo sensor that needs to factor out
- * elements such as cables pulling on the carriage.
- */
-//#define PROBE_TARE
-#if ENABLED(PROBE_TARE)
- #define PROBE_TARE_TIME 200 // (ms) Time to hold tare pin
- #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before
- #define PROBE_TARE_STATE HIGH // State to write pin for tare
- //#define PROBE_TARE_PIN PA5 // Override default pin
- #if ENABLED(PROBE_ACTIVATION_SWITCH)
- //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active
- #endif
-#endif
-
-/**
- * Probe Enable / Disable
- * The probe only provides a triggered signal when enabled.
- */
-//#define PROBE_ENABLE_DISABLE
-#if ENABLED(PROBE_ENABLE_DISABLE)
- //#define PROBE_ENABLE_PIN -1 // Override the default pin here
-#endif
-
-/**
- * Multiple Probing
- *
- * You may get improved results by probing 2 or more times.
- * With EXTRA_PROBING the more atypical reading(s) will be disregarded.
- *
- * A total of 2 does fast/slow probes with a weighted average.
- * A total of 3 or more adds more slow probes, taking the average.
- */
-//#define MULTIPLE_PROBING 2
-//#define EXTRA_PROBING 1
-
-/**
- * Z probes require clearance when deploying, stowing, and moving between
- * probe points to avoid hitting the bed and other hardware.
- * Servo-mounted probes require extra space for the arm to rotate.
- * Inductive probes need space to keep from triggering early.
- *
- * Use these settings to specify the distance (mm) to raise the probe (or
- * lower the bed). The values set here apply over and above any (negative)
- * probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD.
- * Only integer values >= 1 are valid here.
- *
- * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
- * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
- */
-#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
-#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
-#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
-//#define Z_AFTER_PROBING 5 // Z position after probing is done
-
-#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping
-
-// 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
-
-// Enable the M48 repeatability test to test probe accuracy
-//#define Z_MIN_PROBE_REPEATABILITY_TEST
-
-// Before deploy/stow pause for user confirmation
-//#define PAUSE_BEFORE_DEPLOY_STOW
-#if ENABLED(PAUSE_BEFORE_DEPLOY_STOW)
- //#define PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED // For Manual Deploy Allenkey Probe
-#endif
-
-/**
- * Enable one or more of the following if probing seems unreliable.
- * Heaters and/or fans can be disabled during probing to minimize electrical
- * noise. A delay can also be added to allow noise and vibration to settle.
- * These options are most useful for the BLTouch probe, but may also improve
- * readings with inductive probes and piezo sensors.
- */
-//#define PROBING_HEATERS_OFF // Turn heaters off when probing
-#if ENABLED(PROBING_HEATERS_OFF)
- //#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy)
- //#define WAIT_FOR_HOTEND // Wait for hotend to heat back up between probes (to improve accuracy & prevent cold extrude)
-#endif
-//#define PROBING_FANS_OFF // Turn fans off when probing
-//#define PROBING_ESTEPPERS_OFF // Turn all extruder steppers off when probing
-//#define PROBING_STEPPERS_OFF // Turn all steppers off (unless needed to hold position) when probing (including extruders)
-//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
-
-// Require minimum nozzle and/or bed temperature for probing
-//#define PREHEAT_BEFORE_PROBING
-#if ENABLED(PREHEAT_BEFORE_PROBING)
- #define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
- #define PROBING_BED_TEMP 50
-#endif
-
-// 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
-//#define I_ENABLE_ON 0
-//#define J_ENABLE_ON 0
-//#define K_ENABLE_ON 0
-
-// Disable axis steppers immediately when they're not being stepped.
-// WARNING: When motors turn off there is a chance of losing position accuracy!
-#define DISABLE_X false
-#define DISABLE_Y false
-#define DISABLE_Z false
-//#define DISABLE_I false
-//#define DISABLE_J false
-//#define DISABLE_K false
-
-// Turn off the display blinking that warns about possible accuracy reduction
-//#define DISABLE_REDUCED_ACCURACY_WARNING
-
-// @section extruder
-
-#define DISABLE_E false // Disable the extruder when not stepping
-#define DISABLE_INACTIVE_EXTRUDER // Keep only the 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
-//#define INVERT_I_DIR false
-//#define INVERT_J_DIR false
-//#define INVERT_K_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
-#define INVERT_E4_DIR false
-#define INVERT_E5_DIR false
-#define INVERT_E6_DIR false
-#define INVERT_E7_DIR false
-
-// @section homing
-
-//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed. Also enable HOME_AFTER_DEACTIVATE for extra safety.
-//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated. Also enable NO_MOTION_BEFORE_HOMING for extra safety.
-
-/**
- * Set Z_IDLE_HEIGHT if the Z-Axis moves on its own when steppers are disabled.
- * - Use a low value (i.e., Z_MIN_POS) if the nozzle falls down to the bed.
- * - Use a large value (i.e., Z_MAX_POS) if the bed falls down, away from the nozzle.
- */
-#define Z_IDLE_HEIGHT Z_MAX_POS
-
-//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ...
- // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding.
-
-//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z
-
-// 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 I_HOME_DIR -1
-//#define J_HOME_DIR -1
-//#define K_HOME_DIR -1
-
-// @section machine
-
-// these values are used in your slicer
-#define X_BED_SIZE 227
-#define Y_BED_SIZE 148
-
-// Travel limits (mm) after homing, corresponding to endstop positions.
-#define X_MIN_POS -115
-#define Y_MIN_POS -84
-#define Z_MIN_POS 0
-#define X_MAX_POS 152
-#define Y_MAX_POS 77
-#define Z_MAX_POS 150
-//#define I_MIN_POS 0
-//#define I_MAX_POS 50
-//#define J_MIN_POS 0
-//#define J_MAX_POS 50
-//#define K_MIN_POS 0
-//#define K_MAX_POS 50
-
-/**
- * Software Endstops
- *
- * - Prevent moves outside the set machine bounds.
- * - Individual axes can be disabled, if desired.
- * - X and Y only apply to Cartesian robots.
- * - Use 'M211' to set software endstops on/off or report current state
- */
-
-// Min software endstops constrain movement within minimum coordinate bounds
-#define MIN_SOFTWARE_ENDSTOPS
-#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
- #define MIN_SOFTWARE_ENDSTOP_X
- #define MIN_SOFTWARE_ENDSTOP_Y
- #define MIN_SOFTWARE_ENDSTOP_Z
- #define MIN_SOFTWARE_ENDSTOP_I
- #define MIN_SOFTWARE_ENDSTOP_J
- #define MIN_SOFTWARE_ENDSTOP_K
-#endif
-
-// Max software endstops constrain movement within maximum coordinate bounds
-#define MAX_SOFTWARE_ENDSTOPS
-#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
- #define MAX_SOFTWARE_ENDSTOP_X
- #define MAX_SOFTWARE_ENDSTOP_Y
- #define MAX_SOFTWARE_ENDSTOP_Z
- #define MAX_SOFTWARE_ENDSTOP_I
- #define MAX_SOFTWARE_ENDSTOP_J
- #define MAX_SOFTWARE_ENDSTOP_K
-#endif
-
-#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
- //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD
-#endif
-
-/**
- * Filament Runout Sensors
- * Mechanical or opto endstops are used to check for the presence of filament.
- *
- * IMPORTANT: Runout will only trigger if Marlin is aware that a print job is running.
- * Marlin knows a print job is running when:
- * 1. Running a print job from media started with M24.
- * 2. The Print Job Timer has been started with M75.
- * 3. The heaters were turned on and PRINTJOB_TIMER_AUTOSTART is enabled.
- *
- * RAMPS-based boards use SERVO3_PIN for the first runout sensor.
- * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
- */
-//#define FILAMENT_RUNOUT_SENSOR
-#if ENABLED(FILAMENT_RUNOUT_SENSOR)
- #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.
- #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
-
- #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
- #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
- //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
- //#define WATCH_ALL_RUNOUT_SENSORS // Execute runout script on any triggering sensor, not only for the active extruder.
- // This is automatically enabled for MIXING_EXTRUDERs.
-
- // Override individually if the runout sensors vary
- //#define FIL_RUNOUT1_STATE LOW
- //#define FIL_RUNOUT1_PULLUP
- //#define FIL_RUNOUT1_PULLDOWN
-
- //#define FIL_RUNOUT2_STATE LOW
- //#define FIL_RUNOUT2_PULLUP
- //#define FIL_RUNOUT2_PULLDOWN
-
- //#define FIL_RUNOUT3_STATE LOW
- //#define FIL_RUNOUT3_PULLUP
- //#define FIL_RUNOUT3_PULLDOWN
-
- //#define FIL_RUNOUT4_STATE LOW
- //#define FIL_RUNOUT4_PULLUP
- //#define FIL_RUNOUT4_PULLDOWN
-
- //#define FIL_RUNOUT5_STATE LOW
- //#define FIL_RUNOUT5_PULLUP
- //#define FIL_RUNOUT5_PULLDOWN
-
- //#define FIL_RUNOUT6_STATE LOW
- //#define FIL_RUNOUT6_PULLUP
- //#define FIL_RUNOUT6_PULLDOWN
-
- //#define FIL_RUNOUT7_STATE LOW
- //#define FIL_RUNOUT7_PULLUP
- //#define FIL_RUNOUT7_PULLDOWN
-
- //#define FIL_RUNOUT8_STATE LOW
- //#define FIL_RUNOUT8_PULLUP
- //#define FIL_RUNOUT8_PULLDOWN
-
- // Commands to execute on filament runout.
- // With multiple runout sensors use the %c placeholder for the current tool in commands (e.g., "M600 T%c")
- // NOTE: After 'M412 H1' the host handles filament runout and this script does not apply.
- #define FILAMENT_RUNOUT_SCRIPT "M600"
-
- // After a runout is detected, continue printing this length of filament
- // before executing the runout script. Useful for a sensor at the end of
- // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
- //#define FILAMENT_RUNOUT_DISTANCE_MM 25
-
- #ifdef FILAMENT_RUNOUT_DISTANCE_MM
- // Enable this option to use an encoder disc that toggles the runout pin
- // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
- // large enough to avoid false positives.)
- //#define FILAMENT_MOTION_SENSOR
- #endif
-#endif
-
-//===========================================================================
-//=============================== Bed Leveling ==============================
-//===========================================================================
-// @section calibrate
-
-/**
- * Choose one of the options below to enable G29 Bed Leveling. The parameters
- * and behavior of G29 will change depending on your selection.
- *
- * If using a Probe for Z Homing, enable Z_SAFE_HOMING also!
- *
- * - AUTO_BED_LEVELING_3POINT
- * Probe 3 arbitrary points on the bed (that aren't collinear)
- * You specify the XY coordinates of all 3 points.
- * The result is a single tilted plane. Best for a flat bed.
- *
- * - AUTO_BED_LEVELING_LINEAR
- * Probe several points in a grid.
- * You specify the rectangle and the density of sample points.
- * The result is a single tilted plane. Best for a flat bed.
- *
- * - AUTO_BED_LEVELING_BILINEAR
- * Probe several points in a grid.
- * You specify the rectangle and the density of sample points.
- * The result is a mesh, best for large or uneven beds.
- *
- * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
- * A comprehensive bed leveling system combining the features and benefits
- * of other systems. UBL also includes integrated Mesh Generation, Mesh
- * Validation and Mesh Editing systems.
- *
- * - MESH_BED_LEVELING
- * Probe a grid manually
- * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.)
- * For machines without a probe, Mesh Bed Leveling provides a method to perform
- * leveling in steps so you can manually adjust the Z height at each grid-point.
- * With an LCD controller the process is guided step-by-step.
- */
-//#define AUTO_BED_LEVELING_3POINT
-//#define AUTO_BED_LEVELING_LINEAR
-//#define AUTO_BED_LEVELING_BILINEAR
-//#define AUTO_BED_LEVELING_UBL
-//#define MESH_BED_LEVELING
-
-/**
- * Normally G28 leaves leveling disabled on completion. Enable one of
- * these options to restore the prior leveling state or to always enable
- * leveling immediately after G28.
- */
-//#define RESTORE_LEVELING_AFTER_G28
-//#define ENABLE_LEVELING_AFTER_G28
-
-/**
- * Auto-leveling needs preheating
- */
-//#define PREHEAT_BEFORE_LEVELING
-#if ENABLED(PREHEAT_BEFORE_LEVELING)
- #define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
- #define LEVELING_BED_TEMP 50
-#endif
-
-/**
- * Enable detailed logging of G28, G29, M48, etc.
- * Turn on with the command 'M111 S32'.
- * NOTE: Requires a lot of PROGMEM!
- */
-//#define DEBUG_LEVELING_FEATURE
-
-#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL, PROBE_MANUALLY)
- // Set a height for the start of manual adjustment
- #define MANUAL_PROBE_START_Z 0.2 // (mm) Comment out to use the last-measured height
-#endif
-
-#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL)
- // Gradually reduce leveling correction until a set height is reached,
- // at which point movement will be level to the machine's XY plane.
- // The height can be set with M420 Z
- #define ENABLE_LEVELING_FADE_HEIGHT
- #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
- #define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height.
- #endif
-
- // For Cartesian machines, instead of dividing moves on mesh boundaries,
- // split up moves into short segments like a Delta. This follows the
- // contours of the bed more closely than edge-to-edge straight moves.
- #define SEGMENT_LEVELED_MOVES
- #define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one)
-
- /**
- * Enable the G26 Mesh Validation Pattern tool.
- */
- //#define G26_MESH_VALIDATION
- #if ENABLED(G26_MESH_VALIDATION)
- #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
- #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
- #define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26.
- #define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26.
- #define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves.
- #define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves.
- #define G26_RETRACT_MULTIPLIER 1.0 // G26 Q (retraction) used by default between mesh test elements.
- #endif
-
-#endif
-
-#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
-
- // Set the number of grid points per dimension.
- #define GRID_MAX_POINTS_X 3
- #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
-
- // Probe along the Y axis, advancing X after each column
- //#define PROBE_Y_FIRST
-
- #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
-
- // Beyond the probed grid, continue the implied tilt?
- // Default is to maintain the height of the nearest edge.
- //#define EXTRAPOLATE_BEYOND_GRID
-
- //
- // Experimental Subdivision of the grid by Catmull-Rom method.
- // Synthesizes intermediate points to produce a more detailed mesh.
- //
- //#define ABL_BILINEAR_SUBDIVISION
- #if ENABLED(ABL_BILINEAR_SUBDIVISION)
- // Number of subdivisions between probe points
- #define BILINEAR_SUBDIVISIONS 3
- #endif
-
- #endif
-
-#elif ENABLED(AUTO_BED_LEVELING_UBL)
-
- //===========================================================================
- //========================= Unified Bed Leveling ============================
- //===========================================================================
-
- //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
-
- #define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed
- #define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited.
- #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
-
- //#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points
-
- #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
- #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
-
- //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used
- // as the Z-Height correction value.
-
- //#define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh
-
-#elif ENABLED(MESH_BED_LEVELING)
-
- //===========================================================================
- //=================================== Mesh ==================================
- //===========================================================================
-
- #define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed
- #define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited.
- #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
-
- //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS
-
-#endif // BED_LEVELING
-
-/**
- * Add a bed leveling sub-menu for ABL or MBL.
- * Include a guided procedure if manual probing is enabled.
- */
-//#define LCD_BED_LEVELING
-
-#if ENABLED(LCD_BED_LEVELING)
- #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
- #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
- //#define MESH_EDIT_MENU // Add a menu to edit mesh points
-#endif
-
-// Add a menu item to move between bed corners for manual bed adjustment
-//#define LCD_BED_TRAMMING
-
-#if ENABLED(LCD_BED_TRAMMING)
- #define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets
- #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at leveling points
- #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between leveling points
- //#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner
- //#define BED_TRAMMING_USE_PROBE
- #if ENABLED(BED_TRAMMING_USE_PROBE)
- #define BED_TRAMMING_PROBE_TOLERANCE 0.1 // (mm)
- #define BED_TRAMMING_VERIFY_RAISED // After adjustment triggers the probe, re-probe to verify
- //#define BED_TRAMMING_AUDIO_FEEDBACK
- #endif
-
- /**
- * Corner Leveling Order
- *
- * Set 2 or 4 points. When 2 points are given, the 3rd is the center of the opposite edge.
- *
- * LF Left-Front RF Right-Front
- * LB Left-Back RB Right-Back
- *
- * Examples:
- *
- * Default {LF,RB,LB,RF} {LF,RF} {LB,LF}
- * LB --------- RB LB --------- RB LB --------- RB LB --------- RB
- * | 4 3 | | 3 2 | | <3> | | 1 |
- * | | | | | | | <3>|
- * | 1 2 | | 1 4 | | 1 2 | | 2 |
- * LF --------- RF LF --------- RF LF --------- RF LF --------- RF
- */
- #define BED_TRAMMING_LEVELING_ORDER { LF, RF, RB, LB }
-#endif
-
-/**
- * Commands to execute at the end of G29 probing.
- * Useful to retract or move the Z probe out of the way.
- */
-//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
-
-// @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
-//#define MANUAL_I_HOME_POS 0
-//#define MANUAL_J_HOME_POS 0
-//#define MANUAL_K_HOME_POS 0
-
-/**
- * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
- *
- * - Moves the Z probe (or nozzle) to a defined XY point before Z homing.
- * - Allows Z homing only when XY positions are known and trusted.
- * - If stepper drivers sleep, XY homing may be required again before Z homing.
- */
-//#define Z_SAFE_HOMING
-
-#if ENABLED(Z_SAFE_HOMING)
- #define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing
- #define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing
-#endif
-
-// Homing speeds (mm/min)
-#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
-
-// Validate that endstops are triggered on homing moves
-#define VALIDATE_HOMING_ENDSTOPS
-
-// @section calibrate
-
-/**
- * Bed Skew Compensation
- *
- * This feature corrects for misalignment in the XYZ axes.
- *
- * Take the following steps to get the bed skew in the XY plane:
- * 1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185)
- * 2. For XY_DIAG_AC measure the diagonal A to C
- * 3. For XY_DIAG_BD measure the diagonal B to D
- * 4. For XY_SIDE_AD measure the edge A to D
- *
- * Marlin automatically computes skew factors from these measurements.
- * Skew factors may also be computed and set manually:
- *
- * - Compute AB : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
- * - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
- *
- * If desired, follow the same procedure for XZ and YZ.
- * Use these diagrams for reference:
- *
- * Y Z Z
- * ^ B-------C ^ B-------C ^ B-------C
- * | / / | / / | / /
- * | / / | / / | / /
- * | A-------D | A-------D | A-------D
- * +-------------->X +-------------->X +-------------->Y
- * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
- */
-//#define SKEW_CORRECTION
-
-#if ENABLED(SKEW_CORRECTION)
- // Input all length measurements here:
- #define XY_DIAG_AC 282.8427124746
- #define XY_DIAG_BD 282.8427124746
- #define XY_SIDE_AD 200
-
- // Or, set the default skew factors directly here
- // to override the above measurements:
- #define XY_SKEW_FACTOR 0.0
-
- //#define SKEW_CORRECTION_FOR_Z
- #if ENABLED(SKEW_CORRECTION_FOR_Z)
- #define XZ_DIAG_AC 282.8427124746
- #define XZ_DIAG_BD 282.8427124746
- #define YZ_DIAG_AC 282.8427124746
- #define YZ_DIAG_BD 282.8427124746
- #define YZ_SIDE_AD 200
- #define XZ_SKEW_FACTOR 0.0
- #define YZ_SKEW_FACTOR 0.0
- #endif
-
- // Enable this option for M852 to set skew at runtime
- //#define SKEW_CORRECTION_GCODE
-#endif
-
-//=============================================================================
-//============================= Additional Features ===========================
-//=============================================================================
-
-// @section extras
-
-/**
- * EEPROM
- *
- * Persistent storage to preserve configurable settings across reboots.
- *
- * M500 - Store settings to EEPROM.
- * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
- * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
- */
-#define EEPROM_SETTINGS // Persistent storage with M500 and M501
-//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
-#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
-#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
-#if ENABLED(EEPROM_SETTINGS)
- #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
- //#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build.
-#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.
-#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating
-
-//
-// G20/G21 Inch mode support
-//
-//#define INCH_MODE_SUPPORT
-
-//
-// M149 Set temperature units support
-//
-//#define TEMPERATURE_UNITS_SUPPORT
-
-// @section temperature
-
-//
-// Preheat Constants - Up to 6 are supported without changes
-//
-#define PREHEAT_1_LABEL "PLA"
-#define PREHEAT_1_TEMP_HOTEND 200
-#define PREHEAT_1_TEMP_BED 50
-#define PREHEAT_1_TEMP_CHAMBER 35
-#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
-
-#define PREHEAT_2_LABEL "ABS"
-#define PREHEAT_2_TEMP_HOTEND 220
-#define PREHEAT_2_TEMP_BED 100
-#define PREHEAT_2_TEMP_CHAMBER 35
-#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
-
-/**
- * Nozzle Park
- *
- * Park the nozzle at the given XYZ position on idle or G27.
- *
- * The "P" parameter controls the action applied to the Z axis:
- *
- * P0 (Default) If Z is below park Z raise the nozzle.
- * P1 Raise the nozzle always to Z-park height.
- * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS.
- */
-#define NOZZLE_PARK_FEATURE
-
-#if ENABLED(NOZZLE_PARK_FEATURE)
- // Specify a park position as { X, Y, Z_raise }
- #define NOZZLE_PARK_POINT { (X_MAX_POS - 2), (Y_MAX_POS - 2), 20 }
- #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X
- #define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance
- #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis)
- #define NOZZLE_PARK_Z_FEEDRATE 5 // (mm/s) Z axis feedrate (not used for delta printers)
-#endif
-
-/**
- * Clean Nozzle Feature -- EXPERIMENTAL
- *
- * Adds the G12 command to perform a nozzle cleaning process.
- *
- * Parameters:
- * P Pattern
- * S Strokes / Repetitions
- * T Triangles (P1 only)
- *
- * Patterns:
- * P0 Straight line (default). This process requires a sponge type material
- * at a fixed bed location. "S" specifies strokes (i.e. back-forth motions)
- * between the start / end points.
- *
- * P1 Zig-zag pattern between (X0, Y0) and (X1, Y1), "T" specifies the
- * number of zig-zag triangles to do. "S" defines the number of strokes.
- * Zig-zags are done in whichever is the narrower dimension.
- * For example, "G12 P1 S1 T3" will execute:
- *
- * --
- * | (X0, Y1) | /\ /\ /\ | (X1, Y1)
- * | | / \ / \ / \ |
- * A | | / \ / \ / \ |
- * | | / \ / \ / \ |
- * | (X0, Y0) | / \/ \/ \ | (X1, Y0)
- * -- +--------------------------------+
- * |________|_________|_________|
- * T1 T2 T3
- *
- * P2 Circular pattern with middle at NOZZLE_CLEAN_CIRCLE_MIDDLE.
- * "R" specifies the radius. "S" specifies the stroke count.
- * Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT.
- *
- * Caveats: The ending Z should be the same as starting Z.
- * Attention: EXPERIMENTAL. G-code arguments may change.
- */
-//#define NOZZLE_CLEAN_FEATURE
-
-#if ENABLED(NOZZLE_CLEAN_FEATURE)
- // Default number of pattern repetitions
- #define NOZZLE_CLEAN_STROKES 12
-
- // Default number of triangles
- #define NOZZLE_CLEAN_TRIANGLES 3
-
- // Specify positions for each tool as { { X, Y, Z }, { X, Y, Z } }
- // Dual hotend system may use { { -20, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }, { 420, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }}
- #define NOZZLE_CLEAN_START_POINT { { 30, 30, (Z_MIN_POS + 1) } }
- #define NOZZLE_CLEAN_END_POINT { { 100, 60, (Z_MIN_POS + 1) } }
-
- // Circular pattern radius
- #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
- // Circular pattern circle fragments number
- #define NOZZLE_CLEAN_CIRCLE_FN 10
- // Middle point of circle
- #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
-
- // Move the nozzle to the initial position after cleaning
- #define NOZZLE_CLEAN_GOBACK
-
- // For a purge/clean station that's always at the gantry height (thus no Z move)
- //#define NOZZLE_CLEAN_NO_Z
-
- // For a purge/clean station mounted on the X axis
- //#define NOZZLE_CLEAN_NO_Y
-
- // Require a minimum hotend temperature for cleaning
- #define NOZZLE_CLEAN_MIN_TEMP 170
- //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe
-
- // Explicit wipe G-code script applies to a G12 with no arguments.
- //#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0"
-
-#endif
-
-/**
- * Print Job Timer
- *
- * Automatically start and stop the print job timer on M104/M109/M140/M190/M141/M191.
- * The print job timer will only be stopped if the bed/chamber target temp is
- * below BED_MINTEMP/CHAMBER_MINTEMP.
- *
- * M104 (hotend, no wait) - high temp = none, low temp = stop timer
- * M109 (hotend, wait) - high temp = start timer, low temp = stop timer
- * M140 (bed, no wait) - high temp = none, low temp = stop timer
- * M190 (bed, wait) - high temp = start timer, low temp = none
- * M141 (chamber, no wait) - high temp = none, low temp = stop timer
- * M191 (chamber, wait) - high temp = start timer, low temp = none
- *
- * For M104/M109, high temp is anything over EXTRUDE_MINTEMP / 2.
- * For M140/M190, high temp is anything over BED_MINTEMP.
- * For M141/M191, high temp is anything over CHAMBER_MINTEMP.
- *
- * The timer can also be controlled with 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
- *
- * Track statistical data such as:
- *
- * - Total print jobs
- * - Total successful print jobs
- * - Total failed print jobs
- * - Total time printing
- *
- * View the current statistics with M78.
- */
-#define PRINTCOUNTER
-#if ENABLED(PRINTCOUNTER)
- #define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print
-#endif
-
-/**
- * Password
- *
- * Set a numerical password for the printer which can be requested:
- *
- * - When the printer boots up
- * - Upon opening the 'Print from Media' Menu
- * - When SD printing is completed or aborted
- *
- * The following G-codes can be used:
- *
- * M510 - Lock Printer. Blocks all commands except M511.
- * M511 - Unlock Printer.
- * M512 - Set, Change and Remove Password.
- *
- * If you forget the password and get locked out you'll need to re-flash
- * the firmware with the feature disabled, reset EEPROM, and (optionally)
- * re-flash the firmware again with this feature enabled.
- */
-//#define PASSWORD_FEATURE
-#if ENABLED(PASSWORD_FEATURE)
- #define PASSWORD_LENGTH 4 // (#) Number of digits (1-9). 3 or 4 is recommended
- #define PASSWORD_ON_STARTUP
- #define PASSWORD_UNLOCK_GCODE // Unlock with the M511 P command. Disable to prevent brute-force attack.
- #define PASSWORD_CHANGE_GCODE // Change the password with M512 P S.
- //#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent gcodes from running
- //#define PASSWORD_AFTER_SD_PRINT_END
- //#define PASSWORD_AFTER_SD_PRINT_ABORT
- //#include "Configuration_Secure.h" // External file with PASSWORD_DEFAULT_VALUE
-#endif
-
-//=============================================================================
-//============================= LCD and SD support ============================
-//=============================================================================
-
-// @section lcd
-
-/**
- * LCD LANGUAGE
- *
- * Select the language to display on the LCD. These languages are available:
- *
- * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hr, hu, it,
- * jp_kana, ko_KR, nl, pl, pt, pt_br, ro, ru, sk, sv, tr, uk, vi, zh_CN, zh_TW
- *
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' }
- */
-#define LCD_LANGUAGE en
-
-/**
- * LCD Character Set
- *
- * Note: This option is NOT applicable to Graphical Displays.
- *
- * All character-based LCDs 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://marlinfw.org/docs/development/lcd_language.html
- *
- * :['JAPANESE', 'WESTERN', 'CYRILLIC']
- */
-#define DISPLAY_CHARSET_HD44780 JAPANESE
-
-/**
- * Info Screen Style (0:Classic, 1:Průša)
- *
- * :[0:'Classic', 1:'Průša']
- */
-#define LCD_INFO_SCREEN_STYLE 0
-
-/**
- * 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: ENABLE CRC
- *
- * Use CRC checks and retries on the SD communication.
- */
-#define SD_CHECK_AND_RETRY
-
-/**
- * LCD Menu Items
- *
- * Disable all menus and only display the Status Screen, or
- * just remove some extraneous menu items to recover space.
- */
-//#define NO_LCD_MENUS
-//#define SLIM_LCD_MENUS
-
-//
-// 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
-
-//
-// This option reverses the encoder direction for Select Screen.
-//
-// If CLOCKWISE normally moves LEFT this makes it go RIGHT.
-// If CLOCKWISE normally moves RIGHT this makes it go LEFT.
-//
-//#define REVERSE_SELECT_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
-//#define INDIVIDUAL_AXIS_HOMING_SUBMENU
-
-//
-// 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 2
-//#define LCD_FEEDBACK_FREQUENCY_HZ 5000
-
-//=============================================================================
-//======================== LCD / Controller Selection =========================
-//======================== (Character-based LCDs) =========================
-//=============================================================================
-
-//
-// RepRapDiscount Smart Controller.
-// https://reprap.org/wiki/RepRapDiscount_Smart_Controller
-//
-// Note: Usually sold with a white PCB.
-//
-//#define REPRAP_DISCOUNT_SMART_CONTROLLER
-
-//
-// GT2560 (YHCB2004) LCD Display
-//
-// Requires Testato, Koepel softwarewire library and
-// Andriy Golovnya's LiquidCrystal_AIP31068 library.
-//
-//#define YHCB2004
-
-//
-// Original RADDS LCD Display+Encoder+SDCardReader
-// http://doku.radds.org/dokumentation/lcd-display/
-//
-//#define RADDS_DISPLAY
-
-//
-// ULTIMAKER Controller.
-//
-//#define ULTIMAKERCONTROLLER
-
-//
-// ULTIPANEL as seen on Thingiverse.
-//
-//#define ULTIPANEL
-
-//
-// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
-// https://reprap.org/wiki/PanelOne
-//
-//#define PANEL_ONE
-
-//
-// GADGETS3D G3D LCD/SD Controller
-// https://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
-//
-// Note: Usually sold with a blue PCB.
-//
-//#define G3D_PANEL
-
-//
-// RigidBot Panel V1.0
-// http://www.inventapart.com/
-//
-//#define RIGIDBOT_PANEL
-
-//
-// Makeboard 3D Printer Parts 3D Printer Mini Display 1602 Mini Controller
-// https://www.aliexpress.com/item/32765887917.html
-//
-//#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
-
-//
-// ANET and Tronxy 20x4 Controller
-//
-//#define ZONESTAR_LCD // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
- // This LCD is known to be susceptible to electrical interference
- // which scrambles the display. Pressing any button clears it up.
- // This is a LCD2004 display with 5 analog buttons.
-
-//
-// Generic 16x2, 16x4, 20x2, or 20x4 character-based LCD.
-//
-//#define ULTRA_LCD
-
-//=============================================================================
-//======================== LCD / Controller Selection =========================
-//===================== (I2C and Shift-Register LCDs) =====================
-//=============================================================================
-
-//
-// 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 (YwRobot) LCD Displays
-//
-// These require F.Malpartida's LiquidCrystal_I2C library
-// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
-//
-//#define LCD_SAINSMART_I2C_1602
-//#define LCD_SAINSMART_I2C_2004
-
-//
-// 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
-
-//
-// CONTROLLER TYPE: Shift register panels
-//
-
-//
-// 2-wire Non-latching LCD SR from https://goo.gl/aJJ4sH
-// LCD configuration: https://reprap.org/wiki/SAV_3D_LCD
-//
-//#define SAV_3DLCD
-
-//
-// 3-wire SR LCD with strobe using 74HC4094
-// https://github.com/mikeshub/SailfishLCD
-// Uses the code directly from Sailfish
-//
-//#define FF_INTERFACEBOARD
-
-//
-// TFT GLCD Panel with Marlin UI
-// Panel connected to main board by SPI or I2C interface.
-// See https://github.com/Serhiy-K/TFTGLCDAdapter
-//
-//#define TFTGLCD_PANEL_SPI
-//#define TFTGLCD_PANEL_I2C
-
-//=============================================================================
-//======================= LCD / Controller Selection =======================
-//========================= (Graphical LCDs) ========================
-//=============================================================================
-
-//
-// CONTROLLER TYPE: Graphical 128x64 (DOGM)
-//
-// IMPORTANT: The U8glib library is required for Graphical Display!
-// https://github.com/olikraus/U8glib_Arduino
-//
-// NOTE: If the LCD is unresponsive you may need to reverse the plugs.
-//
-
-//
-// RepRapDiscount FULL GRAPHIC Smart Controller
-// https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
-//
-//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
-
-//
-// K.3D Full Graphic Smart Controller
-//
-//#define K3D_FULL_GRAPHIC_SMART_CONTROLLER
-
-//
-// 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
-// https://www.panucatt.com
-//
-//#define VIKI2
-//#define miniVIKI
-
-//
-// Alfawise Ex8 printer LCD marked as WYH L12864 COG
-//
-//#define WYH_L12864
-
-//
-// MakerLab Mini Panel with graphic
-// controller and SD support - https://reprap.org/wiki/Mini_panel
-//
-//#define MINIPANEL
-
-//
-// MaKr3d Makr-Panel with graphic controller and SD support.
-// https://reprap.org/wiki/MaKr3d_MaKrPanel
-//
-//#define MAKRPANEL
-
-//
-// Adafruit ST7565 Full Graphic Controller.
-// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/
-//
-//#define ELB_FULL_GRAPHIC_CONTROLLER
-
-//
-// BQ LCD Smart Controller shipped by
-// default with the BQ Hephestos 2 and Witbox 2.
-//
-//#define BQ_LCD_SMART_CONTROLLER
-
-//
-// Cartesio UI
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
-//
-//#define CARTESIO_UI
-
-//
-// LCD for Melzi Card with Graphical LCD
-//
-//#define LCD_FOR_MELZI
-
-//
-// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
-// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
-//
-//#define ULTI_CONTROLLER
-
-//
-// MKS MINI12864 with graphic controller and SD support
-// https://reprap.org/wiki/MKS_MINI_12864
-//
-//#define MKS_MINI_12864
-
-//
-// MKS MINI12864 V3 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight.
-//
-#define MKS_MINI_12864_V3
-
-//
-// MKS LCD12864A/B with graphic controller and SD support. Follows MKS_MINI_12864 pinout.
-// https://www.aliexpress.com/item/33018110072.html
-//
-//#define MKS_LCD12864A
-//#define MKS_LCD12864B
-
-//
-// FYSETC variant of the MINI12864 graphic controller with SD support
-// https://wiki.fysetc.com/Mini12864_Panel/
-//
-//#define FYSETC_MINI_12864_X_X // Type C/D/E/F. No tunable RGB Backlight by default
-//#define FYSETC_MINI_12864_1_2 // Type C/D/E/F. Simple RGB Backlight (always on)
-//#define FYSETC_MINI_12864_2_0 // Type A/B. Discreet RGB Backlight
-//#define FYSETC_MINI_12864_2_1 // Type A/B. NeoPixel RGB Backlight
-//#define FYSETC_GENERIC_12864_1_1 // Larger display with basic ON/OFF backlight.
-
-//
-// BigTreeTech Mini 12864 V1.0 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight.
-//
-//#define BTT_MINI_12864_V1
-
-//
-// Factory display for Creality CR-10
-// https://www.aliexpress.com/item/32833148327.html
-//
-// This is RAMPS-compatible using a single 10-pin connector.
-// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
-//
-//#define CR10_STOCKDISPLAY
-
-//
-// Ender-2 OEM display, a variant of the MKS_MINI_12864
-//
-//#define ENDER2_STOCKDISPLAY
-
-//
-// ANET and Tronxy Graphical Controller
-//
-// Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
-// A clone of the RepRapDiscount full graphics display but with
-// different pins/wiring (see pins_ANET_10.h). Enable one of these.
-//
-//#define ANET_FULL_GRAPHICS_LCD
-//#define ANET_FULL_GRAPHICS_LCD_ALT_WIRING
-
-//
-// AZSMZ 12864 LCD with SD
-// https://www.aliexpress.com/item/32837222770.html
-//
-//#define AZSMZ_12864
-
-//
-// Silvergate GLCD controller
-// https://github.com/android444/Silvergate
-//
-//#define SILVER_GATE_GLCD_CONTROLLER
-
-//=============================================================================
-//============================== OLED Displays ==============================
-//=============================================================================
-
-//
-// 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
-
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
-//
-// MKS OLED 1.3" 128×64 Full Graphics Controller
-// https://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
-//
-// Zonestar OLED 128×64 Full Graphics Controller
-//
-//#define ZONESTAR_12864LCD // Graphical (DOGM) with ST7920 controller
-//#define ZONESTAR_12864OLED // 1.3" OLED with SH1106 controller (default)
-//#define ZONESTAR_12864OLED_SSD1306 // 0.96" OLED with SSD1306 controller
-
-//
-// Einstart S OLED SSD1306
-//
-//#define U8GLIB_SH1106_EINSTART
-
-//
-// Overlord OLED display/controller with i2c buzzer and LEDs
-//
-//#define OVERLORD_OLED
-
-//
-// FYSETC OLED 2.42" 128×64 Full Graphics Controller with WS2812 RGB
-// Where to find : https://www.aliexpress.com/item/4000345255731.html
-//#define FYSETC_242_OLED_12864 // Uses the SSD1309 controller
-
-//
-// K.3D SSD1309 OLED 2.42" 128×64 Full Graphics Controller
-//
-//#define K3D_242_OLED_CONTROLLER // Software SPI
-
-//=============================================================================
-//========================== Extensible UI Displays ===========================
-//=============================================================================
-
-/**
- * DGUS Touch Display with DWIN OS. (Choose one.)
- * ORIGIN : https://www.aliexpress.com/item/32993409517.html
- * FYSETC : https://www.aliexpress.com/item/32961471929.html
- * MKS : https://www.aliexpress.com/item/1005002008179262.html
- *
- * Flash display with DGUS Displays for Marlin:
- * - Format the SD card to FAT32 with an allocation size of 4kb.
- * - Download files as specified for your type of display.
- * - Plug the microSD card into the back of the display.
- * - Boot the display and wait for the update to complete.
- *
- * ORIGIN (Marlin DWIN_SET)
- * - Download https://github.com/coldtobi/Marlin_DGUS_Resources
- * - Copy the downloaded DWIN_SET folder to the SD card.
- *
- * FYSETC (Supplier default)
- * - Download https://github.com/FYSETC/FYSTLCD-2.0
- * - Copy the downloaded SCREEN folder to the SD card.
- *
- * HIPRECY (Supplier default)
- * - Download https://github.com/HiPrecy/Touch-Lcd-LEO
- * - Copy the downloaded DWIN_SET folder to the SD card.
- *
- * MKS (MKS-H43) (Supplier default)
- * - Download https://github.com/makerbase-mks/MKS-H43
- * - Copy the downloaded DWIN_SET folder to the SD card.
- *
- * RELOADED (T5UID1)
- * - Download https://github.com/Desuuuu/DGUS-reloaded/releases
- * - Copy the downloaded DWIN_SET folder to the SD card.
- */
-//#define DGUS_LCD_UI_ORIGIN
-//#define DGUS_LCD_UI_FYSETC
-//#define DGUS_LCD_UI_HIPRECY
-//#define DGUS_LCD_UI_MKS
-//#define DGUS_LCD_UI_RELOADED
-#if ENABLED(DGUS_LCD_UI_MKS)
- #define USE_MKS_GREEN_UI
-#endif
-
-//
-// Touch-screen LCD for Malyan M200/M300 printers
-//
-//#define MALYAN_LCD
-
-//
-// Touch UI for FTDI EVE (FT800/FT810) displays
-// See Configuration_adv.h for all configuration options.
-//
-//#define TOUCH_UI_FTDI_EVE
-
-//
-// Touch-screen LCD for Anycubic printers
-//
-//#define ANYCUBIC_LCD_I3MEGA
-//#define ANYCUBIC_LCD_CHIRON
-#if EITHER(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON)
- //#define ANYCUBIC_LCD_DEBUG
-#endif
-
-//
-// 320x240 Nextion 2.8" serial TFT Resistive Touch Screen NX3224T028
-//
-//#define NEXTION_TFT
-
-//
-// Third-party or vendor-customized controller interfaces.
-// Sources should be installed in 'src/lcd/extui'.
-//
-//#define EXTENSIBLE_UI
-
-#if ENABLED(EXTENSIBLE_UI)
- //#define EXTUI_LOCAL_BEEPER // Enables use of local Beeper pin with external display
-#endif
-
-//=============================================================================
-//=============================== Graphical TFTs ==============================
-//=============================================================================
-
-/**
- * Specific TFT Model Presets. Enable one of the following options
- * or enable TFT_GENERIC and set sub-options.
- */
-
-//
-// 480x320, 3.5", SPI Display with Rotary Encoder from MKS
-// Usually paired with MKS Robin Nano V2 & V3
-//
-//#define MKS_TS35_V2_0
-
-//
-// 320x240, 2.4", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT24
-
-//
-// 320x240, 2.8", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT28
-
-//
-// 320x240, 3.2", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT32
-
-//
-// 480x320, 3.5", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT35
-
-//
-// 480x272, 4.3", FSMC Display From MKS
-//
-//#define MKS_ROBIN_TFT43
-
-//
-// 320x240, 3.2", FSMC Display From MKS
-// Usually paired with MKS Robin
-//
-//#define MKS_ROBIN_TFT_V1_1R
-
-//
-// 480x320, 3.5", FSMC Stock Display from TronxXY
-//
-//#define TFT_TRONXY_X5SA
-
-//
-// 480x320, 3.5", FSMC Stock Display from AnyCubic
-//
-//#define ANYCUBIC_TFT35
-
-//
-// 320x240, 2.8", FSMC Stock Display from Longer/Alfawise
-//
-//#define LONGER_LK_TFT28
-
-//
-// 320x240, 2.8", FSMC Stock Display from ET4
-//
-//#define ANET_ET4_TFT28
-
-//
-// 480x320, 3.5", FSMC Stock Display from ET5
-//
-//#define ANET_ET5_TFT35
-
-//
-// 1024x600, 7", RGB Stock Display with Rotary Encoder from BIQU-BX
-//
-//#define BIQU_BX_TFT70
-
-//
-// 480x320, 3.5", SPI Stock Display with Rotary Encoder from BIQU B1 SE Series
-//
-//#define BTT_TFT35_SPI_V1_0
-
-//
-// Generic TFT with detailed options
-//
-//#define TFT_GENERIC
-#if ENABLED(TFT_GENERIC)
- // :[ 'AUTO', 'ST7735', 'ST7789', 'ST7796', 'R61505', 'ILI9328', 'ILI9341', 'ILI9488' ]
- #define TFT_DRIVER AUTO
-
- // Interface. Enable one of the following options:
- //#define TFT_INTERFACE_FSMC
- //#define TFT_INTERFACE_SPI
-
- // TFT Resolution. Enable one of the following options:
- //#define TFT_RES_320x240
- //#define TFT_RES_480x272
- //#define TFT_RES_480x320
- //#define TFT_RES_1024x600
-#endif
-
-/**
- * TFT UI - User Interface Selection. Enable one of the following options:
- *
- * TFT_CLASSIC_UI - Emulated DOGM - 128x64 Upscaled
- * TFT_COLOR_UI - Marlin Default Menus, Touch Friendly, using full TFT capabilities
- * TFT_LVGL_UI - A Modern UI using LVGL
- *
- * For LVGL_UI also copy the 'assets' folder from the build directory to the
- * root of your SD card, together with the compiled firmware.
- */
-//#define TFT_CLASSIC_UI
-//#define TFT_COLOR_UI
-//#define TFT_LVGL_UI
-
-#if ENABLED(TFT_LVGL_UI)
- //#define MKS_WIFI_MODULE // MKS WiFi module
-#endif
-
-/**
- * TFT Rotation. Set to one of the following values:
- *
- * TFT_ROTATE_90, TFT_ROTATE_90_MIRROR_X, TFT_ROTATE_90_MIRROR_Y,
- * TFT_ROTATE_180, TFT_ROTATE_180_MIRROR_X, TFT_ROTATE_180_MIRROR_Y,
- * TFT_ROTATE_270, TFT_ROTATE_270_MIRROR_X, TFT_ROTATE_270_MIRROR_Y,
- * TFT_MIRROR_X, TFT_MIRROR_Y, TFT_NO_ROTATION
- */
-//#define TFT_ROTATION TFT_NO_ROTATION
-
-//=============================================================================
-//============================ Other Controllers ============================
-//=============================================================================
-
-//
-// Ender-3 v2 OEM display. A DWIN display with Rotary Encoder.
-//
-//#define DWIN_CREALITY_LCD // Creality UI
-//#define DWIN_LCD_PROUI // Pro UI by MRiscoC
-//#define DWIN_CREALITY_LCD_JYERSUI // Jyers UI by Jacob Myers
-//#define DWIN_MARLINUI_PORTRAIT // MarlinUI (portrait orientation)
-//#define DWIN_MARLINUI_LANDSCAPE // MarlinUI (landscape orientation)
-
-//
-// Touch Screen Settings
-//
-//#define TOUCH_SCREEN
-#if ENABLED(TOUCH_SCREEN)
- #define BUTTON_DELAY_EDIT 50 // (ms) Button repeat delay for edit screens
- #define BUTTON_DELAY_MENU 250 // (ms) Button repeat delay for menus
-
- //#define TOUCH_IDLE_SLEEP 300 // (s) Turn off the TFT backlight if set (5mn)
-
- #define TOUCH_SCREEN_CALIBRATION
-
- //#define TOUCH_CALIBRATION_X 12316
- //#define TOUCH_CALIBRATION_Y -8981
- //#define TOUCH_OFFSET_X -43
- //#define TOUCH_OFFSET_Y 257
- //#define TOUCH_ORIENTATION TOUCH_LANDSCAPE
-
- #if BOTH(TOUCH_SCREEN_CALIBRATION, EEPROM_SETTINGS)
- #define TOUCH_CALIBRATION_AUTO_SAVE // Auto save successful calibration values to EEPROM
- #endif
-
- #if ENABLED(TFT_COLOR_UI)
- //#define SINGLE_TOUCH_NAVIGATION
- #endif
-#endif
-
-//
-// RepRapWorld REPRAPWORLD_KEYPAD v1.1
-// https://reprapworld.com/products/electronics/ramps/keypad_v1_0_fully_assembled/
-//
-//#define REPRAPWORLD_KEYPAD
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // (mm) Distance to move per key-press
-
-//
-// EasyThreeD ET-4000+ with button input and status LED
-//
-//#define EASYTHREED_UI
-
-//=============================================================================
-//=============================== Extra Features ==============================
-//=============================================================================
-
-// @section extras
-
-// Set number of user-controlled fans. Disable to use all board-defined fans.
-// :[1,2,3,4,5,6,7,8]
-//#define NUM_M106_FANS 1
-
-// 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.
-// :[0,1,2,3,4,5,6,7]
-#define SOFT_PWM_SCALE 0
-
-// If SOFT_PWM_SCALE is set to a value higher than 0, dithering can
-// be used to mitigate the associated resolution loss. If enabled,
-// some of the PWM cycles are stretched so on average the desired
-// duty cycle is attained.
-//#define SOFT_PWM_DITHER
-
-// Temperature status LEDs that display the hotend and bed temperature.
-// If all hotends, bed temperature, and target temperature are under 54C
-// then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis)
-//#define TEMP_STAT_LEDS
-
-// Support for the BariCUDA Paste Extruder
-//#define BARICUDA
-
-// Support for BlinkM/CyzRgb
-//#define BLINKM
-
-// Support for PCA9632 PWM LED driver
-//#define PCA9632
-
-// Support for PCA9533 PWM LED driver
-#define PCA9533
-
-/**
- * RGB LED / LED Strip Control
- *
- * Enable support for an RGB LED connected to 5V digital pins, or
- * an RGB Strip connected to MOSFETs controlled by digital pins.
- *
- * Adds the M150 command to set the LED (or LED strip) color.
- * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of
- * luminance values can be set from 0 to 255.
- * For NeoPixel LED an overall brightness parameter is also available.
- *
- * *** CAUTION ***
- * LED Strips require a MOSFET Chip between PWM lines and LEDs,
- * as the Arduino cannot handle the current the LEDs will require.
- * Failure to follow this precaution can destroy your Arduino!
- * NOTE: A separate 5V power supply is required! The NeoPixel LED needs
- * more current than the Arduino 5V linear regulator can produce.
- * *** CAUTION ***
- *
- * LED Type. Enable only one of the following two options.
- */
-//#define RGB_LED
-//#define RGBW_LED
-
-#if EITHER(RGB_LED, RGBW_LED)
- //#define RGB_LED_R_PIN 34
- //#define RGB_LED_G_PIN 43
- //#define RGB_LED_B_PIN 35
- //#define RGB_LED_W_PIN -1
-#endif
-
-// Support for Adafruit NeoPixel LED driver
-//#define NEOPIXEL_LED
-#if ENABLED(NEOPIXEL_LED)
- #define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc.
- // See https://github.com/adafruit/Adafruit_NeoPixel/blob/master/Adafruit_NeoPixel.h
- //#define NEOPIXEL_PIN 4 // LED driving pin
- //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
- //#define NEOPIXEL2_PIN 5
- #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.)
- #define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
- #define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
- //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
-
- // Support for second Adafruit NeoPixel LED driver controlled with M150 S1 ...
- //#define NEOPIXEL2_SEPARATE
- #if ENABLED(NEOPIXEL2_SEPARATE)
- #define NEOPIXEL2_PIXELS 15 // Number of LEDs in the second strip
- #define NEOPIXEL2_BRIGHTNESS 127 // Initial brightness (0-255)
- #define NEOPIXEL2_STARTUP_TEST // Cycle through colors at startup
- #else
- //#define NEOPIXEL2_INSERIES // Default behavior is NeoPixel 2 in parallel
- #endif
-
- // Use some of the NeoPixel LEDs for static (background) lighting
- //#define NEOPIXEL_BKGD_INDEX_FIRST 0 // Index of the first background LED
- //#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last background LED
- //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
- //#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
-#endif
-
-/**
- * Printer Event LEDs
- *
- * During printing, the LEDs will reflect the printer status:
- *
- * - Gradually change from blue to violet as the heated bed gets to target temp
- * - Gradually change from violet to red as the hotend gets to temperature
- * - Change to white to illuminate work surface
- * - Change to green once print has finished
- * - Turn off after the print has finished and the user has pushed a button
- */
-#if ANY(BLINKM, RGB_LED, RGBW_LED, PCA9632, PCA9533, NEOPIXEL_LED)
- #define PRINTER_EVENT_LEDS
-#endif
-
-/**
- * Number of servos
- *
- * For some servo-related options NUM_SERVOS will be set automatically.
- * Set this manually if there are extra servos needing manual control.
- * Set to 0 to turn off servo support.
- */
-//#define NUM_SERVOS 3 // Note: Servo index starts with 0 for M280-M282 commands
-
-// (ms) Delay 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 }
-
-// Only power servos during movement, otherwise leave off to prevent jitter
-//#define DEACTIVATE_SERVOS_AFTER_MOVE
-
-// Edit servo angles with M281 and save to EEPROM with M500
-//#define EDITABLE_SERVO_ANGLES
-
-// Disable servo with M282 to reduce power consumption, noise, and heat when not in use
-//#define SERVO_DETACH_GCODE
diff --git a/Configuration_adv.h b/Configuration_adv.h
deleted file mode 100644
index 87ad426..0000000
--- a/Configuration_adv.h
+++ /dev/null
@@ -1,4354 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#define CONFIG_EXAMPLES_DIR "FlashForge/CreatorPro"
-
-/**
- * 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
- */
-#define CONFIGURATION_ADV_H_VERSION 02000905
-
-//===========================================================================
-//============================= Thermal Settings ============================
-//===========================================================================
-// @section temperature
-
-/**
- * Thermocouple sensors are quite sensitive to noise. Any noise induced in
- * the sensor wires, such as by stepper motor wires run in parallel to them,
- * may result in the thermocouple sensor reporting spurious errors. This
- * value is the number of errors which can occur in a row before the error
- * is reported. This allows us to ignore intermittent error conditions while
- * still detecting an actual failure, which should result in a continuous
- * stream of errors from the sensor.
- *
- * Set this value to 0 to fail on the first error to occur.
- */
-#define THERMOCOUPLE_MAX_ERRORS 15
-
-//
-// Custom Thermistor 1000 parameters
-//
-#if TEMP_SENSOR_0 == 1000
- #define HOTEND0_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND0_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND0_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_1 == 1000
- #define HOTEND1_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND1_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND1_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_2 == 1000
- #define HOTEND2_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND2_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND2_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_3 == 1000
- #define HOTEND3_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND3_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND3_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_4 == 1000
- #define HOTEND4_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND4_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND4_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_5 == 1000
- #define HOTEND5_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND5_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND5_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_6 == 1000
- #define HOTEND6_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND6_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND6_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_7 == 1000
- #define HOTEND7_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND7_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND7_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_BED == 1000
- #define BED_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define BED_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define BED_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_CHAMBER == 1000
- #define CHAMBER_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define CHAMBER_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define CHAMBER_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_COOLER == 1000
- #define COOLER_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define COOLER_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define COOLER_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_PROBE == 1000
- #define PROBE_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define PROBE_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define PROBE_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_BOARD == 1000
- #define BOARD_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define BOARD_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define BOARD_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_REDUNDANT == 1000
- #define REDUNDANT_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define REDUNDANT_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define REDUNDANT_BETA 3950 // Beta value
-#endif
-
-/**
- * Thermocouple Options — for MAX6675 (-2), MAX31855 (-3), and MAX31865 (-5).
- */
-//#define TEMP_SENSOR_FORCE_HW_SPI // Ignore SCK/MOSI/MISO pins; use CS and the default SPI bus.
-//#define MAX31865_SENSOR_WIRES_0 2 // (2-4) Number of wires for the probe connected to a MAX31865 board.
-//#define MAX31865_SENSOR_WIRES_1 2
-
-//#define MAX31865_50HZ_FILTER // Use a 50Hz filter instead of the default 60Hz.
-//#define MAX31865_USE_READ_ERROR_DETECTION // Treat value spikes (20°C delta in under 1s) as read errors.
-
-//#define MAX31865_USE_AUTO_MODE // Read faster and more often than 1-shot; bias voltage always on; slight effect on RTD temperature.
-//#define MAX31865_MIN_SAMPLING_TIME_MSEC 100 // (ms) 1-shot: minimum read interval. Reduces bias voltage effects by leaving sensor unpowered for longer intervals.
-//#define MAX31865_IGNORE_INITIAL_FAULTY_READS 10 // Ignore some read faults (keeping the temperature reading) to work around a possible issue (#23439).
-
-//#define MAX31865_WIRE_OHMS_0 0.95f // For 2-wire, set the wire resistances for more accurate readings.
-//#define MAX31865_WIRE_OHMS_1 0.0f
-
-/**
- * Hephestos 2 24V heated bed upgrade kit.
- * https://store.bq.com/en/heated-bed-kit-hephestos2
- */
-//#define HEPHESTOS2_HEATED_BED_KIT
-#if ENABLED(HEPHESTOS2_HEATED_BED_KIT)
- #undef TEMP_SENSOR_BED
- #define TEMP_SENSOR_BED 70
- #define HEATER_BED_INVERTING true
-#endif
-
-//
-// Heated Bed Bang-Bang options
-//
-#if DISABLED(PIDTEMPBED)
- #define BED_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control
- #if ENABLED(BED_LIMIT_SWITCHING)
- #define BED_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > BED_HYSTERESIS
- #endif
-#endif
-
-//
-// Heated Chamber options
-//
-#if DISABLED(PIDTEMPCHAMBER)
- #define CHAMBER_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control
- #if ENABLED(CHAMBER_LIMIT_SWITCHING)
- #define CHAMBER_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > CHAMBER_HYSTERESIS
- #endif
-#endif
-
-#if TEMP_SENSOR_CHAMBER
- //#define HEATER_CHAMBER_PIN P2_04 // Required heater on/off pin (example: SKR 1.4 Turbo HE1 plug)
- //#define HEATER_CHAMBER_INVERTING false
- //#define FAN1_PIN -1 // Remove the fan signal on pin P2_04 (example: SKR 1.4 Turbo HE1 plug)
-
- //#define CHAMBER_FAN // Enable a fan on the chamber
- #if ENABLED(CHAMBER_FAN)
- //#define CHAMBER_FAN_INDEX 2 // Index of a fan to repurpose as the chamber fan. (Default: first unused fan)
- #define CHAMBER_FAN_MODE 2 // Fan control mode: 0=Static; 1=Linear increase when temp is higher than target; 2=V-shaped curve; 3=similar to 1 but fan is always on.
- #if CHAMBER_FAN_MODE == 0
- #define CHAMBER_FAN_BASE 255 // Chamber fan PWM (0-255)
- #elif CHAMBER_FAN_MODE == 1
- #define CHAMBER_FAN_BASE 128 // Base chamber fan PWM (0-255); turns on when chamber temperature is above the target
- #define CHAMBER_FAN_FACTOR 25 // PWM increase per °C above target
- #elif CHAMBER_FAN_MODE == 2
- #define CHAMBER_FAN_BASE 128 // Minimum chamber fan PWM (0-255)
- #define CHAMBER_FAN_FACTOR 25 // PWM increase per °C difference from target
- #elif CHAMBER_FAN_MODE == 3
- #define CHAMBER_FAN_BASE 128 // Base chamber fan PWM (0-255)
- #define CHAMBER_FAN_FACTOR 25 // PWM increase per °C above target
- #endif
- #endif
-
- //#define CHAMBER_VENT // Enable a servo-controlled vent on the chamber
- #if ENABLED(CHAMBER_VENT)
- #define CHAMBER_VENT_SERVO_NR 1 // Index of the vent servo
- #define HIGH_EXCESS_HEAT_LIMIT 5 // How much above target temp to consider there is excess heat in the chamber
- #define LOW_EXCESS_HEAT_LIMIT 3
- #define MIN_COOLING_SLOPE_TIME_CHAMBER_VENT 20
- #define MIN_COOLING_SLOPE_DEG_CHAMBER_VENT 1.5
- #endif
-#endif
-
-//
-// Laser Cooler options
-//
-#if TEMP_SENSOR_COOLER
- #define COOLER_MINTEMP 8 // (°C)
- #define COOLER_MAXTEMP 26 // (°C)
- #define COOLER_DEFAULT_TEMP 16 // (°C)
- #define TEMP_COOLER_HYSTERESIS 1 // (°C) Temperature proximity considered "close enough" to the target
- #define COOLER_PIN 8 // Laser cooler on/off pin used to control power to the cooling element (e.g., TEC, External chiller via relay)
- #define COOLER_INVERTING false
- #define TEMP_COOLER_PIN 15 // Laser/Cooler temperature sensor pin. ADC is required.
- #define COOLER_FAN // Enable a fan on the cooler, Fan# 0,1,2,3 etc.
- #define COOLER_FAN_INDEX 0 // FAN number 0, 1, 2 etc. e.g.
- #if ENABLED(COOLER_FAN)
- #define COOLER_FAN_BASE 100 // Base Cooler fan PWM (0-255); turns on when Cooler temperature is above the target
- #define COOLER_FAN_FACTOR 25 // PWM increase per °C above target
- #endif
-#endif
-
-//
-// Motherboard Sensor options
-//
-#if TEMP_SENSOR_BOARD
- #define THERMAL_PROTECTION_BOARD // Halt the printer if the board sensor leaves the temp range below.
- #define BOARD_MINTEMP 8 // (°C)
- #define BOARD_MAXTEMP 70 // (°C)
- #ifndef TEMP_BOARD_PIN
- //#define TEMP_BOARD_PIN -1 // Board temp sensor pin, if not set in pins file.
- #endif
-#endif
-
-/**
- * Thermal Protection provides additional protection to your printer from damage
- * and fire. Marlin always includes safe min and max temperature ranges which
- * protect against a broken or disconnected thermistor wire.
- *
- * The issue: If a thermistor falls out, it will report the much lower
- * temperature of the air in the room, and the 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
-
- //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
- #if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
- //#define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303
- #endif
-
- /**
- * Whenever an M104, M109, or M303 increases the target temperature, the
- * firmware will wait for the WATCH_TEMP_PERIOD to expire. If the temperature
- * hasn't increased by WATCH_TEMP_INCREASE degrees, the machine is halted and
- * requires a hard reset. This test restarts with any M104/M109/M303, 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 set
- * 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
-
- /**
- * As described above, except for the bed (M140/M190/M303).
- */
- #define WATCH_BED_TEMP_PERIOD 60 // Seconds
- #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
-#endif
-
-/**
- * Thermal Protection parameters for the heated chamber.
- */
-#if ENABLED(THERMAL_PROTECTION_CHAMBER)
- #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // Seconds
- #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // Degrees Celsius
-
- /**
- * Heated chamber watch settings (M141/M191).
- */
- #define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds
- #define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius
-#endif
-
-/**
- * Thermal Protection parameters for the laser cooler.
- */
-#if ENABLED(THERMAL_PROTECTION_COOLER)
- #define THERMAL_PROTECTION_COOLER_PERIOD 10 // Seconds
- #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // Degrees Celsius
-
- /**
- * Laser cooling watch settings (M143/M193).
- */
- #define WATCH_COOLER_TEMP_PERIOD 60 // Seconds
- #define WATCH_COOLER_TEMP_INCREASE 3 // Degrees Celsius
-#endif
-
-#if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER)
- /**
- * Thermal Protection Variance Monitor - EXPERIMENTAL.
- * Kill the machine on a stuck temperature sensor. Disable if you get false positives.
- */
- //#define THERMAL_PROTECTION_VARIANCE_MONITOR // Detect a sensor malfunction preventing temperature updates
-#endif
-
-#if ENABLED(PIDTEMP)
- // Add an experimental additional term to the heater power, proportional to the extrusion speed.
- // A well-chosen Kc value should add just enough power to melt the increased material volume.
- //#define PID_EXTRUSION_SCALING
- #if ENABLED(PID_EXTRUSION_SCALING)
- #define DEFAULT_Kc (100) // heating power = Kc * e_speed
- #define LPQ_MAX_LEN 50
- #endif
-
- /**
- * Add an experimental additional term to the heater power, proportional to the fan speed.
- * A well-chosen Kf value should add just enough power to compensate for power-loss from the cooling fan.
- * You can either just add a constant compensation with the DEFAULT_Kf value
- * or follow the instruction below to get speed-dependent compensation.
- *
- * Constant compensation (use only with fanspeeds of 0% and 100%)
- * ---------------------------------------------------------------------
- * A good starting point for the Kf-value comes from the calculation:
- * kf = (power_fan * eff_fan) / power_heater * 255
- * where eff_fan is between 0.0 and 1.0, based on fan-efficiency and airflow to the nozzle / heater.
- *
- * Example:
- * Heater: 40W, Fan: 0.1A * 24V = 2.4W, eff_fan = 0.8
- * Kf = (2.4W * 0.8) / 40W * 255 = 12.24
- *
- * Fan-speed dependent compensation
- * --------------------------------
- * 1. To find a good Kf value, set the hotend temperature, wait for it to settle, and enable the fan (100%).
- * Make sure PID_FAN_SCALING_LIN_FACTOR is 0 and PID_FAN_SCALING_ALTERNATIVE_DEFINITION is not enabled.
- * If you see the temperature drop repeat the test, increasing the Kf value slowly, until the temperature
- * drop goes away. If the temperature overshoots after enabling the fan, the Kf value is too big.
- * 2. Note the Kf-value for fan-speed at 100%
- * 3. Determine a good value for PID_FAN_SCALING_MIN_SPEED, which is around the speed, where the fan starts moving.
- * 4. Repeat step 1. and 2. for this fan speed.
- * 5. Enable PID_FAN_SCALING_ALTERNATIVE_DEFINITION and enter the two identified Kf-values in
- * PID_FAN_SCALING_AT_FULL_SPEED and PID_FAN_SCALING_AT_MIN_SPEED. Enter the minimum speed in PID_FAN_SCALING_MIN_SPEED
- */
- //#define PID_FAN_SCALING
- #if ENABLED(PID_FAN_SCALING)
- //#define PID_FAN_SCALING_ALTERNATIVE_DEFINITION
- #if ENABLED(PID_FAN_SCALING_ALTERNATIVE_DEFINITION)
- // The alternative definition is used for an easier configuration.
- // Just figure out Kf at fullspeed (255) and PID_FAN_SCALING_MIN_SPEED.
- // DEFAULT_Kf and PID_FAN_SCALING_LIN_FACTOR are calculated accordingly.
-
- #define PID_FAN_SCALING_AT_FULL_SPEED 13.0 //=PID_FAN_SCALING_LIN_FACTOR*255+DEFAULT_Kf
- #define PID_FAN_SCALING_AT_MIN_SPEED 6.0 //=PID_FAN_SCALING_LIN_FACTOR*PID_FAN_SCALING_MIN_SPEED+DEFAULT_Kf
- #define PID_FAN_SCALING_MIN_SPEED 10.0 // Minimum fan speed at which to enable PID_FAN_SCALING
-
- #define DEFAULT_Kf (255.0*PID_FAN_SCALING_AT_MIN_SPEED-PID_FAN_SCALING_AT_FULL_SPEED*PID_FAN_SCALING_MIN_SPEED)/(255.0-PID_FAN_SCALING_MIN_SPEED)
- #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0
-
- #else
- #define PID_FAN_SCALING_LIN_FACTOR (0) // Power loss due to cooling = Kf * (fan_speed)
- #define DEFAULT_Kf 10 // A constant value added to the PID-tuner
- #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING
- #endif
- #endif
-#endif
-
-/**
- * Automatic Temperature Mode
- *
- * Dynamically adjust the hotend target temperature based on planned E moves.
- *
- * (Contrast with PID_EXTRUSION_SCALING, which tracks E movement and adjusts PID
- * behavior using an additional kC value.)
- *
- * Autotemp is calculated by (mintemp + factor * mm_per_sec), capped to maxtemp.
- *
- * Enable Autotemp Mode with M104/M109 F S B.
- * Disable by sending M104/M109 with no F parameter (or F0 with AUTOTEMP_PROPORTIONAL).
- */
-#define AUTOTEMP
-#if ENABLED(AUTOTEMP)
- #define AUTOTEMP_OLDWEIGHT 0.98 // Factor used to weight previous readings (0.0 < value < 1.0)
- // Turn on AUTOTEMP on M104/M109 by default using proportions set here
- //#define AUTOTEMP_PROPORTIONAL
- #if ENABLED(AUTOTEMP_PROPORTIONAL)
- #define AUTOTEMP_MIN_P 0 // (°C) Added to the target temperature
- #define AUTOTEMP_MAX_P 5 // (°C) Added to the target temperature
- #define AUTOTEMP_FACTOR_P 1 // Apply this F parameter by default (overridden by M104/M109 F)
- #endif
-#endif
-
-// Show Temperature ADC value
-// Enable for M105 to include ADC values 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 TEMP_SENSOR_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 runout prevention.
-// If the machine is idle and the temperature over MINTEMP
-// then extrude some filament every couple of SECONDS.
-//#define EXTRUDER_RUNOUT_PREVENT
-#if ENABLED(EXTRUDER_RUNOUT_PREVENT)
- #define EXTRUDER_RUNOUT_MINTEMP 190
- #define EXTRUDER_RUNOUT_SECONDS 30
- #define EXTRUDER_RUNOUT_SPEED 1500 // (mm/min)
- #define EXTRUDER_RUNOUT_EXTRUDE 5 // (mm)
-#endif
-
-/**
- * Hotend Idle Timeout
- * Prevent filament in the nozzle from charring and causing a critical jam.
- */
-//#define HOTEND_IDLE_TIMEOUT
-#if ENABLED(HOTEND_IDLE_TIMEOUT)
- #define HOTEND_IDLE_TIMEOUT_SEC (5*60) // (seconds) Time without extruder movement to trigger protection
- #define HOTEND_IDLE_MIN_TRIGGER 180 // (°C) Minimum temperature to enable hotend protection
- #define HOTEND_IDLE_NOZZLE_TARGET 0 // (°C) Safe temperature for the nozzle after timeout
- #define HOTEND_IDLE_BED_TARGET 0 // (°C) Safe temperature for the bed after timeout
-#endif
-
-// @section temperature
-
-// Calibration for AD595 / AD8495 sensor to adjust temperature measurements.
-// The final temperature is calculated as (measuredTemp * GAIN) + OFFSET.
-#define TEMP_SENSOR_AD595_OFFSET 0.0
-#define TEMP_SENSOR_AD595_GAIN 1.0
-#define TEMP_SENSOR_AD8495_OFFSET 0.0
-#define TEMP_SENSOR_AD8495_GAIN 1.0
-
-/**
- * Controller Fan
- * To cool down the stepper drivers and MOSFETs.
- *
- * The fan turns on automatically whenever any driver is enabled and turns
- * off (or reduces to idle speed) shortly after drivers are turned off.
- */
-//#define USE_CONTROLLER_FAN
-#if ENABLED(USE_CONTROLLER_FAN)
- //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
- //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered
- //#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled.
- #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.)
- #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled
- #define CONTROLLERFAN_SPEED_IDLE 0 // (0-255) Idle speed, used when motors are disabled
- #define CONTROLLERFAN_IDLE_TIME 60 // (seconds) Extra time to keep the fan running after disabling motors
-
- // Use TEMP_SENSOR_BOARD as a trigger for enabling the controller fan
- //#define CONTROLLER_FAN_MIN_BOARD_TEMP 40 // (°C) Turn on the fan if the board reaches this temperature
-
- //#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
- #if ENABLED(CONTROLLER_FAN_EDITABLE)
- #define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu
- #endif
-#endif
-
-// 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
-
-// Some coolers may require a non-zero "off" state.
-//#define FAN_OFF_PWM 1
-
-/**
- * PWM Fan Scaling
- *
- * Define the min/max speeds for PWM fans (as set with M106).
- *
- * With these options the M106 0-255 value range is scaled to a subset
- * to ensure that the fan has enough power to spin, or to run lower
- * current fans with higher current. (e.g., 5V/12V fans with 12V/24V)
- * Value 0 always turns off the fan.
- *
- * Define one or both of these to override the default 0-255 range.
- */
-//#define FAN_MIN_PWM 50
-//#define FAN_MAX_PWM 128
-
-/**
- * Fan Fast PWM
- *
- * Combinations of PWM Modes, prescale values and TOP resolutions are used internally
- * to produce a frequency as close as possible to the desired frequency.
- *
- * FAST_PWM_FAN_FREQUENCY
- * Set this to your desired frequency.
- * For AVR, if left undefined this defaults to F = F_CPU/(2*255*1)
- * i.e., F = 31.4kHz on 16MHz microcontrollers or F = 39.2kHz on 20MHz microcontrollers.
- * For non AVR, if left undefined this defaults to F = 1Khz.
- * This F value is only to protect the hardware from an absence of configuration
- * and not to complete it when users are not aware that the frequency must be specifically set to support the target board.
- *
- * NOTE: Setting very low frequencies (< 10 Hz) may result in unexpected timer behavior.
- * Setting very high frequencies can damage your hardware.
- *
- * USE_OCR2A_AS_TOP [undefined by default]
- * Boards that use TIMER2 for PWM have limitations resulting in only a few possible frequencies on TIMER2:
- * 16MHz MCUs: [62.5kHz, 31.4kHz (default), 7.8kHz, 3.92kHz, 1.95kHz, 977Hz, 488Hz, 244Hz, 60Hz, 122Hz, 30Hz]
- * 20MHz MCUs: [78.1kHz, 39.2kHz (default), 9.77kHz, 4.9kHz, 2.44kHz, 1.22kHz, 610Hz, 305Hz, 153Hz, 76Hz, 38Hz]
- * A greater range can be achieved by enabling USE_OCR2A_AS_TOP. But note that this option blocks the use of
- * PWM on pin OC2A. Only use this option if you don't need PWM on 0C2A. (Check your schematic.)
- * USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies.
- */
-//#define FAST_PWM_FAN // Increase the fan PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
-#if ENABLED(FAST_PWM_FAN)
- //#define FAST_PWM_FAN_FREQUENCY 31400 // Define here to override the defaults below
- //#define USE_OCR2A_AS_TOP
- #ifndef FAST_PWM_FAN_FREQUENCY
- #ifdef __AVR__
- #define FAST_PWM_FAN_FREQUENCY ((F_CPU) / (2 * 255 * 1))
- #else
- #define FAST_PWM_FAN_FREQUENCY 1000U
- #endif
- #endif
-#endif
-
-/**
- * Use one of the PWM fans as a redundant part-cooling fan
- */
-//#define REDUNDANT_PART_COOLING_FAN 2 // Index of the fan to sync with FAN 0.
-
-// @section extruder
-
-/**
- * Extruder cooling fans
- *
- * Extruder auto fans automatically turn on when their extruders'
- * temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
- *
- * Your board's pins file specifies the recommended pins. Override those here
- * or set to -1 to disable completely.
- *
- * 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 E0_AUTO_FAN_PIN -1
-//#define E1_AUTO_FAN_PIN -1
-#define E2_AUTO_FAN_PIN -1
-#define E3_AUTO_FAN_PIN -1
-#define E4_AUTO_FAN_PIN -1
-#define E5_AUTO_FAN_PIN -1
-#define E6_AUTO_FAN_PIN -1
-#define E7_AUTO_FAN_PIN -1
-#define CHAMBER_AUTO_FAN_PIN -1
-#define COOLER_AUTO_FAN_PIN -1
-
-#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
-#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
-#define CHAMBER_AUTO_FAN_TEMPERATURE 30
-#define CHAMBER_AUTO_FAN_SPEED 255
-#define COOLER_AUTO_FAN_TEMPERATURE 18
-#define COOLER_AUTO_FAN_SPEED 255
-
-/**
- * Hotend Cooling Fans tachometers
- *
- * Define one or more tachometer pins to enable fan speed
- * monitoring, and reporting of fan speeds with M123.
- *
- * NOTE: Only works with fans up to 7000 RPM.
- */
-//#define FOURWIRES_FANS // Needed with AUTO_FAN when 4-wire PWM fans are installed
-//#define E0_FAN_TACHO_PIN -1
-//#define E0_FAN_TACHO_PULLUP
-//#define E0_FAN_TACHO_PULLDOWN
-//#define E1_FAN_TACHO_PIN -1
-//#define E1_FAN_TACHO_PULLUP
-//#define E1_FAN_TACHO_PULLDOWN
-//#define E2_FAN_TACHO_PIN -1
-//#define E2_FAN_TACHO_PULLUP
-//#define E2_FAN_TACHO_PULLDOWN
-//#define E3_FAN_TACHO_PIN -1
-//#define E3_FAN_TACHO_PULLUP
-//#define E3_FAN_TACHO_PULLDOWN
-//#define E4_FAN_TACHO_PIN -1
-//#define E4_FAN_TACHO_PULLUP
-//#define E4_FAN_TACHO_PULLDOWN
-//#define E5_FAN_TACHO_PIN -1
-//#define E5_FAN_TACHO_PULLUP
-//#define E5_FAN_TACHO_PULLDOWN
-//#define E6_FAN_TACHO_PIN -1
-//#define E6_FAN_TACHO_PULLUP
-//#define E6_FAN_TACHO_PULLDOWN
-//#define E7_FAN_TACHO_PIN -1
-//#define E7_FAN_TACHO_PULLUP
-//#define E7_FAN_TACHO_PULLDOWN
-
-/**
- * Part-Cooling Fan Multiplexer
- *
- * This feature allows you to digitally multiplex the fan output.
- * The multiplexer is automatically switched at tool-change.
- * Set FANMUX[012]_PINs below for up to 2, 4, or 8 multiplexed fans.
- */
-#define FANMUX0_PIN -1
-#define FANMUX1_PIN -1
-#define FANMUX2_PIN -1
-
-/**
- * M355 Case Light on-off / brightness
- */
-//#define CASE_LIGHT_ENABLE
-#if ENABLED(CASE_LIGHT_ENABLE)
- //#define CASE_LIGHT_PIN 4 // Override the default pin if needed
- #define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW
- #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on
- #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin)
- //#define CASE_LIGHT_NO_BRIGHTNESS // Disable brightness control. Enable for non-PWM lighting.
- //#define CASE_LIGHT_MAX_PWM 128 // Limit PWM duty cycle (0-255)
- //#define CASE_LIGHT_MENU // Add Case Light options to the LCD menu
- #if ENABLED(NEOPIXEL_LED)
- //#define CASE_LIGHT_USE_NEOPIXEL // Use NeoPixel LED as case light
- #endif
- #if EITHER(RGB_LED, RGBW_LED)
- //#define CASE_LIGHT_USE_RGB_LED // Use RGB / RGBW LED as case light
- #endif
- #if EITHER(CASE_LIGHT_USE_NEOPIXEL, CASE_LIGHT_USE_RGB_LED)
- #define CASE_LIGHT_DEFAULT_COLOR { 255, 255, 255, 255 } // { Red, Green, Blue, White }
- #endif
-#endif
-
-// @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.
-
-// Employ an external closed loop controller. Override pins here if needed.
-//#define EXTERNAL_CLOSED_LOOP_CONTROLLER
-#if ENABLED(EXTERNAL_CLOSED_LOOP_CONTROLLER)
- //#define CLOSED_LOOP_ENABLE_PIN -1
- //#define CLOSED_LOOP_MOVE_COMPLETE_PIN -1
-#endif
-
-/**
- * Dual X Carriage
- *
- * This setup has two X carriages that can move independently, each with its own hotend.
- * The carriages can be used to print an object with two colors or materials, or in
- * "duplication mode" it can print two identical or X-mirrored objects simultaneously.
- * The inactive carriage is parked automatically to prevent oozing.
- * X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
- * By default the X2 stepper is assigned to the first unused E plug on the board.
- *
- * The following Dual X Carriage modes can be selected with M605 S:
- *
- * 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)
- *
- * 1 : (AUTO_PARK) The firmware automatically parks and unparks the X-carriages on tool-change so
- * that additional slicer support is not required. (M605 S1)
- *
- * 2 : (DUPLICATION) The firmware moves the second X-carriage and extruder in synchronization with
- * the first X-carriage and extruder, to print 2 copies of the same object at the same time.
- * Set the constant X-offset and temperature differential with M605 S2 X[offs] R[deg] and
- * follow with M605 S2 to initiate duplicated movement.
- *
- * 3 : (MIRRORED) Formbot/Vivedino-inspired mirrored mode in which the second extruder duplicates
- * the movement of the first except the second extruder is reversed in the X axis.
- * Set the initial X offset and temperature differential with M605 S2 X[offs] R[deg] and
- * follow with M605 S3 to initiate mirrored movement.
- */
-//#define DUAL_X_CARRIAGE
-#if ENABLED(DUAL_X_CARRIAGE)
- #define X1_MIN_POS X_MIN_POS // Set to X_MIN_POS
- #define X1_MAX_POS X_BED_SIZE // A max coordinate so the X1 carriage can't hit the parked X2 carriage
- #define X2_MIN_POS 80 // A min coordinate so the X2 carriage can't hit the parked X1 carriage
- #define X2_MAX_POS 353 // The max position of the X2 carriage, typically also the home position
- #define X2_HOME_DIR 1 // Set to 1. The X2 carriage always homes to the max endstop position
- #define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS.
- // NOTE: For Dual X Carriage use M218 T1 Xn to override the X2_HOME_POS.
- // This allows recalibration of endstops distance without a rebuild.
- // Remember to set the second extruder's X-offset to 0 in your slicer.
-
- // This is the default power-up mode which can be changed later using M605 S.
- #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_AUTO_PARK_MODE
-
- // Default x offset in duplication mode (typically set to half print bed width)
- #define DEFAULT_DUPLICATION_X_OFFSET 100
-
- // Default action to execute following M605 mode change commands. Typically G28X to apply new mode.
- //#define EVENT_GCODE_IDEX_AFTER_MODECHANGE "G28X"
-#endif
-
-/**
- * Multi-Stepper / Multi-Endstop
- *
- * When X2_DRIVER_TYPE is defined, this indicates that the X and X2 motors work in tandem.
- * The following explanations for X also apply to Y and Z multi-stepper setups.
- * Endstop offsets may be changed by 'M666 X Y Z' and stored to EEPROM.
- *
- * - Enable INVERT_X2_VS_X_DIR if the X2 motor requires an opposite DIR signal from X.
- *
- * - Enable X_DUAL_ENDSTOPS if the second motor has its own endstop, with adjustable offset.
- *
- * - Extra endstops are included in the output of 'M119'.
- *
- * - Set X_DUAL_ENDSTOP_ADJUSTMENT to the known error in the X2 endstop.
- * Applied to the X2 motor on 'G28' / 'G28 X'.
- * Get the offset by homing X and measuring the error.
- * Also set with 'M666 X' and stored to EEPROM with 'M500'.
- *
- * - Use X2_USE_ENDSTOP to set the endstop plug by name. (_XMIN_, _XMAX_, _YMIN_, _YMAX_, _ZMIN_, _ZMAX_)
- */
-#if HAS_X2_STEPPER && DISABLED(DUAL_X_CARRIAGE)
- //#define INVERT_X2_VS_X_DIR // X2 direction signal is the opposite of X
- //#define X_DUAL_ENDSTOPS // X2 has its own endstop
- #if ENABLED(X_DUAL_ENDSTOPS)
- #define X2_USE_ENDSTOP _XMAX_ // X2 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define X2_ENDSTOP_ADJUSTMENT 0 // X2 offset relative to X endstop
- #endif
-#endif
-
-#if HAS_DUAL_Y_STEPPERS
- //#define INVERT_Y2_VS_Y_DIR // Y2 direction signal is the opposite of Y
- //#define Y_DUAL_ENDSTOPS // Y2 has its own endstop
- #if ENABLED(Y_DUAL_ENDSTOPS)
- #define Y2_USE_ENDSTOP _YMAX_ // Y2 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Y2_ENDSTOP_ADJUSTMENT 0 // Y2 offset relative to Y endstop
- #endif
-#endif
-
-//
-// Multi-Z steppers
-//
-#ifdef Z2_DRIVER_TYPE
- //#define INVERT_Z2_VS_Z_DIR // Z2 direction signal is the opposite of Z
-
- //#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops
- #if ENABLED(Z_MULTI_ENDSTOPS)
- #define Z2_USE_ENDSTOP _XMAX_ // Z2 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Y endstop
- #endif
- #ifdef Z3_DRIVER_TYPE
- //#define INVERT_Z3_VS_Z_DIR // Z3 direction signal is the opposite of Z
- #if ENABLED(Z_MULTI_ENDSTOPS)
- #define Z3_USE_ENDSTOP _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Y endstop
- #endif
- #endif
- #ifdef Z4_DRIVER_TYPE
- //#define INVERT_Z4_VS_Z_DIR // Z4 direction signal is the opposite of Z
- #if ENABLED(Z_MULTI_ENDSTOPS)
- #define Z4_USE_ENDSTOP _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Y endstop
- #endif
- #endif
-#endif
-
-// Drive the E axis with two synchronized steppers
-//#define E_DUAL_STEPPER_DRIVERS
-#if ENABLED(E_DUAL_STEPPER_DRIVERS)
- //#define INVERT_E1_VS_E0_DIR // E direction signals are opposites
-#endif
-
-// Activate a solenoid on the active extruder with M380. Disable all with M381.
-// Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid.
-//#define EXT_SOLENOID
-
-// @section homing
-
-/**
- * Homing Procedure
- * Homing (G28) does an indefinite move towards the endstops to establish
- * the position of the toolhead relative to the workspace.
- */
-
-//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (mm) Backoff from endstops before sensorless homing
-
-#define HOMING_BUMP_MM { 5, 5, 2 } // (mm) Backoff from endstops after first bump
-#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
-
-//#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (mm) Backoff from endstops after homing
-
-#define QUICK_HOME // If G28 contains XY do a diagonal move first
-//#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X
-//#define HOME_Z_FIRST // Home Z first. Requires a Z-MIN endstop (not a probe).
-//#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first
-
-// @section bltouch
-
-#if ENABLED(BLTOUCH)
- /**
- * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
- * Do not activate settings that the probe might not understand. Clones might misunderstand
- * advanced commands.
- *
- * Note: If the probe is not deploying, do a "Reset" and "Self-Test" and then check the
- * wiring of the BROWN, RED and ORANGE wires.
- *
- * Note: If the trigger signal of your probe is not being recognized, it has been very often
- * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
- * like they would be with a real switch. So please check the wiring first.
- *
- * Settings for all BLTouch and clone probes:
- */
-
- // Safety: The probe needs time to recognize the command.
- // Minimum command delay (ms). Enable and increase if needed.
- //#define BLTOUCH_DELAY 500
-
- /**
- * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
- */
-
- // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
- // in special cases, like noisy or filtered input configurations.
- //#define BLTOUCH_FORCE_SW_MODE
-
- /**
- * Settings for BLTouch Smart 3.0 and 3.1
- * Summary:
- * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
- * - High-Speed mode
- * - Disable LCD voltage options
- */
-
- /**
- * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
- * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
- * If disabled, OD mode is the hard-coded default on 3.0
- * On startup, Marlin will compare its eeprom to this value. If the selected mode
- * differs, a mode set eeprom write will be completed at initialization.
- * Use the option below to force an eeprom write to a V3.1 probe regardless.
- */
- //#define BLTOUCH_SET_5V_MODE
-
- /**
- * Safety: Activate if connecting a probe with an unknown voltage mode.
- * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
- * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
- * To preserve the life of the probe, use this once then turn it off and re-flash.
- */
- //#define BLTOUCH_FORCE_MODE_SET
-
- /**
- * Enable "HIGH SPEED" option for probing.
- * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
- * This feature was designed for Deltabots with very fast Z moves; however, higher speed Cartesians
- * might be able to use it. If the machine can't raise Z fast enough the BLTouch may go into ALARM.
- *
- * Set the default state here, change with 'M401 S' or UI, use M500 to save, M502 to reset.
- */
- //#define BLTOUCH_HS_MODE true
-
- // Safety: Enable voltage mode settings in the LCD menu.
- //#define BLTOUCH_LCD_VOLTAGE_MENU
-
-#endif // BLTOUCH
-
-// @section extras
-
-/**
- * Z Steppers Auto-Alignment
- * Add the G34 command to align multiple Z steppers using a bed probe.
- */
-//#define Z_STEPPER_AUTO_ALIGN
-#if ENABLED(Z_STEPPER_AUTO_ALIGN)
- /**
- * Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]]
- * These positions are machine-relative and do not shift with the M206 home offset!
- * If not defined, probe limits will be used.
- * Override with 'M422 S X Y'.
- */
- //#define Z_STEPPER_ALIGN_XY { { 10, 190 }, { 100, 10 }, { 190, 190 } }
-
- /**
- * Orientation for the automatically-calculated probe positions.
- * Override Z stepper align points with 'M422 S X Y'
- *
- * 2 Steppers: (0) (1)
- * | | 2 |
- * | 1 2 | |
- * | | 1 |
- *
- * 3 Steppers: (0) (1) (2) (3)
- * | 3 | 1 | 2 1 | 2 |
- * | | 3 | | 3 |
- * | 1 2 | 2 | 3 | 1 |
- *
- * 4 Steppers: (0) (1) (2) (3)
- * | 4 3 | 1 4 | 2 1 | 3 2 |
- * | | | | |
- * | 1 2 | 2 3 | 3 4 | 4 1 |
- */
- #ifndef Z_STEPPER_ALIGN_XY
- //#define Z_STEPPERS_ORIENTATION 0
- #endif
-
- /**
- * Z Stepper positions for more rapid convergence in bed alignment.
- * Requires 3 or 4 Z steppers.
- *
- * Define Stepper XY positions for Z1, Z2, Z3... corresponding to the screw
- * positions in the bed carriage, with one position per Z stepper in stepper
- * driver order.
- */
- //#define Z_STEPPER_ALIGN_STEPPER_XY { { 210.7, 102.5 }, { 152.6, 220.0 }, { 94.5, 102.5 } }
-
- #ifndef Z_STEPPER_ALIGN_STEPPER_XY
- // Amplification factor. Used to scale the correction step up or down in case
- // the stepper (spindle) position is farther out than the test point.
- #define Z_STEPPER_ALIGN_AMP 1.0 // Use a value > 1.0 NOTE: This may cause instability!
- #endif
-
- // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm
- #define G34_MAX_GRADE 5 // (%) Maximum incline that G34 will handle
- #define Z_STEPPER_ALIGN_ITERATIONS 3 // Number of iterations to apply during alignment
- #define Z_STEPPER_ALIGN_ACC 0.02 // Stop iterating early if the accuracy is better than this
- #define RESTORE_LEVELING_AFTER_G34 // Restore leveling after G34 is done?
- // After G34, re-home Z (G28 Z) or just calculate it from the last probe heights?
- // Re-homing might be more precise in reproducing the actual 'G28 Z' homing height, especially on an uneven bed.
- #define HOME_AFTER_G34
-#endif
-
-//
-// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe.
-//
-//#define ASSISTED_TRAMMING
-#if ENABLED(ASSISTED_TRAMMING)
-
- // Define positions for probe points.
- #define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } }
-
- // Define position names for probe points.
- #define TRAMMING_POINT_NAME_1 "Front-Left"
- #define TRAMMING_POINT_NAME_2 "Front-Right"
- #define TRAMMING_POINT_NAME_3 "Back-Right"
- #define TRAMMING_POINT_NAME_4 "Back-Left"
-
- #define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation
- //#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first
-
- //#define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu
-
- //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment
-
- /**
- * Screw thread:
- * M3: 30 = Clockwise, 31 = Counter-Clockwise
- * M4: 40 = Clockwise, 41 = Counter-Clockwise
- * M5: 50 = Clockwise, 51 = Counter-Clockwise
- */
- #define TRAMMING_SCREW_THREAD 30
-
-#endif
-
-// @section motion
-
-#define AXIS_RELATIVE_MODES { false, false, false, false }
-
-// Add a Duplicate option for well-separated conjoined nozzles
-//#define MULTI_NOZZLE_DUPLICATION
-
-// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
-#define INVERT_X_STEP_PIN false
-#define INVERT_Y_STEP_PIN false
-#define INVERT_Z_STEP_PIN false
-#define INVERT_I_STEP_PIN false
-#define INVERT_J_STEP_PIN false
-#define INVERT_K_STEP_PIN false
-#define INVERT_E_STEP_PIN false
-
-/**
- * Idle Stepper Shutdown
- * Set DISABLE_INACTIVE_? 'true' to shut down axis steppers after an idle period.
- * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout.
- */
-#define DEFAULT_STEPPER_DEACTIVE_TIME 120
-#define DISABLE_INACTIVE_X true
-#define DISABLE_INACTIVE_Y true
-#define DISABLE_INACTIVE_Z false // Set 'false' if the nozzle could fall onto your printed part!
-#define DISABLE_INACTIVE_I true
-#define DISABLE_INACTIVE_J true
-#define DISABLE_INACTIVE_K true
-#define DISABLE_INACTIVE_E true
-
-// Default Minimum Feedrates for printing and travel moves
-#define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s) Minimum feedrate. Set with M205 S.
-#define DEFAULT_MINTRAVELFEEDRATE 0.0 // (mm/s) Minimum travel feedrate. Set with M205 T.
-
-// Minimum time that a segment needs to take as the buffer gets emptied
-#define DEFAULT_MINSEGMENTTIME 20000 // (µs) Set with M205 B.
-
-// Slow down the machine if the lookahead buffer is (by default) half full.
-// Increase the slowdown divisor for larger buffer sizes.
-#define SLOWDOWN
-#if ENABLED(SLOWDOWN)
- #define SLOWDOWN_DIVISOR 2
-#endif
-
-/**
- * XY Frequency limit
- * Reduce resonance by limiting the frequency of small zigzag infill moves.
- * See https://hydraraptor.blogspot.com/2010/12/frequency-limit.html
- * Use M201 F G to change limits at runtime.
- */
-//#define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F.
-#ifdef XY_FREQUENCY_LIMIT
- #define XY_FREQUENCY_MIN_PERCENT 5 // (percent) Minimum FR percentage to apply. Set with M201 G.
-#endif
-
-// 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/s)
-
-//
-// Backlash Compensation
-// Adds extra movement to axes on direction-changes to account for backlash.
-//
-//#define BACKLASH_COMPENSATION
-#if ENABLED(BACKLASH_COMPENSATION)
- // Define values for backlash distance and correction.
- // If BACKLASH_GCODE is enabled these values are the defaults.
- #define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm) One value for each linear axis
- #define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction
-
- // Add steps for motor direction changes on CORE kinematics
- //#define CORE_BACKLASH
-
- // Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments
- // to reduce print artifacts. (Enabling this is costly in memory and computation!)
- //#define BACKLASH_SMOOTHING_MM 3 // (mm)
-
- // Add runtime configuration and tuning of backlash values (M425)
- //#define BACKLASH_GCODE
-
- #if ENABLED(BACKLASH_GCODE)
- // Measure the Z backlash when probing (G29) and set with "M425 Z"
- #define MEASURE_BACKLASH_WHEN_PROBING
-
- #if ENABLED(MEASURE_BACKLASH_WHEN_PROBING)
- // When measuring, the probe will move up to BACKLASH_MEASUREMENT_LIMIT
- // mm away from point of contact in BACKLASH_MEASUREMENT_RESOLUTION
- // increments while checking for the contact to be broken.
- #define BACKLASH_MEASUREMENT_LIMIT 0.5 // (mm)
- #define BACKLASH_MEASUREMENT_RESOLUTION 0.005 // (mm)
- #define BACKLASH_MEASUREMENT_FEEDRATE Z_PROBE_FEEDRATE_SLOW // (mm/min)
- #endif
- #endif
-#endif
-
-/**
- * Automatic backlash, position and hotend offset calibration
- *
- * Enable G425 to run automatic calibration using an electrically-
- * conductive cube, bolt, or washer mounted on the bed.
- *
- * G425 uses the probe to touch the top and sides of the calibration object
- * on the bed and measures and/or correct positional offsets, axis backlash
- * and hotend offsets.
- *
- * Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within
- * ±5mm of true values for G425 to succeed.
- */
-//#define CALIBRATION_GCODE
-#if ENABLED(CALIBRATION_GCODE)
-
- //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..."
- //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved"
-
- #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm
-
- #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min
- #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min
- #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min
-
- // The following parameters refer to the conical section of the nozzle tip.
- #define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm
- #define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm
-
- // Uncomment to enable reporting (required for "G425 V", but consumes PROGMEM).
- //#define CALIBRATION_REPORTING
-
- // The true location and dimension the cube/bolt/washer on the bed.
- #define CALIBRATION_OBJECT_CENTER { 264.0, -22.0, -2.0 } // mm
- #define CALIBRATION_OBJECT_DIMENSIONS { 10.0, 10.0, 10.0 } // mm
-
- // Comment out any sides which are unreachable by the probe. For best
- // auto-calibration results, all sides must be reachable.
- #define CALIBRATION_MEASURE_RIGHT
- #define CALIBRATION_MEASURE_FRONT
- #define CALIBRATION_MEASURE_LEFT
- #define CALIBRATION_MEASURE_BACK
-
- //#define CALIBRATION_MEASURE_IMIN
- //#define CALIBRATION_MEASURE_IMAX
- //#define CALIBRATION_MEASURE_JMIN
- //#define CALIBRATION_MEASURE_JMAX
- //#define CALIBRATION_MEASURE_KMIN
- //#define CALIBRATION_MEASURE_KMAX
-
- // Probing at the exact top center only works if the center is flat. If
- // probing on a screwhead or hollow washer, probe near the edges.
- //#define CALIBRATION_MEASURE_AT_TOP_EDGES
-
- // Define the pin to read during calibration
- #ifndef CALIBRATION_PIN
- //#define CALIBRATION_PIN -1 // Define here to override the default pin
- #define CALIBRATION_PIN_INVERTING false // Set to true to invert the custom pin
- //#define CALIBRATION_PIN_PULLDOWN
- #define CALIBRATION_PIN_PULLUP
- #endif
-#endif
-
-/**
- * Adaptive Step Smoothing increases the resolution of multi-axis moves, particularly at step frequencies
- * below 1kHz (for AVR) or 10kHz (for ARM), where aliasing between axes in multi-axis moves causes audible
- * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the
- * lowest stepping frequencies.
- */
-//#define ADAPTIVE_STEP_SMOOTHING
-
-/**
- * Custom Microstepping
- * Override as-needed for your setup. Up to 3 MS pins are supported.
- */
-//#define MICROSTEP1 LOW,LOW,LOW
-//#define MICROSTEP2 HIGH,LOW,LOW
-//#define MICROSTEP4 LOW,HIGH,LOW
-//#define MICROSTEP8 HIGH,HIGH,LOW
-//#define MICROSTEP16 LOW,LOW,HIGH
-//#define MICROSTEP32 HIGH,LOW,HIGH
-
-// Microstep settings (Requires a board with pins named X_MS1, X_MS2, etc.)
-#define MICROSTEP_MODES { 16, 16, 16, 16, 16, 16 } // [1,2,4,8,16]
-
-/**
- * @section stepper motor current
- *
- * Some boards have a means of setting the stepper motor current via firmware.
- *
- * The power on motor currents are set by:
- * PWM_MOTOR_CURRENT - used by MINIRAMBO & ULTIMAIN_2
- * known compatible chips: A4982
- * DIGIPOT_MOTOR_CURRENT - used by BQ_ZUM_MEGA_3D, RAMBO & SCOOVO_X9H
- * known compatible chips: AD5206
- * DAC_MOTOR_CURRENT_DEFAULT - used by PRINTRBOARD_REVF & RIGIDBOARD_V2
- * known compatible chips: MCP4728
- * DIGIPOT_I2C_MOTOR_CURRENTS - used by 5DPRINT, AZTEEG_X3_PRO, AZTEEG_X5_MINI_WIFI, MIGHTYBOARD_REVE
- * known compatible chips: MCP4451, MCP4018
- *
- * Motor currents can also be set by M907 - M910 and by the LCD.
- * M907 - applies to all.
- * M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
- * M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
- */
-//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps
-//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
-
-/**
- * I2C-based DIGIPOTs (e.g., Azteeg X3 Pro)
- */
-//#define DIGIPOT_MCP4018 // Requires https://github.com/felias-fogg/SlowSoftI2CMaster
-//#define DIGIPOT_MCP4451
-#if EITHER(DIGIPOT_MCP4018, DIGIPOT_MCP4451)
- #define DIGIPOT_I2C_NUM_CHANNELS 5 // 5DPRINT:4 AZTEEG_X3_PRO:8 MKS_SBASE:5 MIGHTYBOARD_REVE:5
-
- // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
- #define DIGIPOT_I2C_MOTOR_CURRENTS { 0.84, 0.84, 0.4, 1.0, 1.0 } // AZTEEG_X3_PRO
-
- //#define DIGIPOT_USE_RAW_VALUES // Use DIGIPOT_MOTOR_CURRENT raw wiper values (instead of A4988 motor currents)
-
- /**
- * Common slave addresses:
- *
- * A (A shifted) B (B shifted) IC
- * Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
- * AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
- * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
- * AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
- * MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
- */
- //#define DIGIPOT_I2C_ADDRESS_A 0x2C // Unshifted slave address for first DIGIPOT
- //#define DIGIPOT_I2C_ADDRESS_B 0x2D // Unshifted slave address for second DIGIPOT
-#endif
-
-//===========================================================================
-//=============================Additional Features===========================
-//===========================================================================
-
-// @section lcd
-
-#if HAS_MANUAL_MOVE_MENU
- #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel
- #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines
- #if IS_ULTIPANEL
- #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position"
- //#define ULTIPANEL_FEEDMULTIPLY // Encoder sets the feedrate multiplier on the Status Screen
- #endif
-#endif
-
-// Change values more rapidly when the encoder is rotated faster
-#define ENCODER_RATE_MULTIPLIER
-#if ENABLED(ENCODER_RATE_MULTIPLIER)
- #define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed
- #define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed
-#endif
-
-// Play a beep when the feedrate is changed from the Status Screen
-//#define BEEP_ON_FEEDRATE_CHANGE
-#if ENABLED(BEEP_ON_FEEDRATE_CHANGE)
- #define FEEDRATE_CHANGE_BEEP_DURATION 10
- #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440
-#endif
-
-//
-// LCD Backlight Timeout
-//
-//#define LCD_BACKLIGHT_TIMEOUT 30 // (s) Timeout before turning off the backlight
-
-#if HAS_BED_PROBE && EITHER(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI)
- //#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu
- #if ENABLED(PROBE_OFFSET_WIZARD)
- /**
- * Enable to init the Probe Z-Offset when starting the Wizard.
- * Use a height slightly above the estimated nozzle-to-probe Z offset.
- * For example, with an offset of -5, consider a starting height of -4.
- */
- //#define PROBE_OFFSET_WIZARD_START_Z -4.0
-
- // Set a convenient position to do the calibration (probing point and nozzle/bed-distance)
- //#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER }
- #endif
-#endif
-
-#if HAS_MARLINUI_MENU
-
- #if HAS_BED_PROBE
- // Add calibration in the Probe Offsets menu to compensate for X-axis twist.
- //#define X_AXIS_TWIST_COMPENSATION
- #if ENABLED(X_AXIS_TWIST_COMPENSATION)
- /**
- * Enable to init the Probe Z-Offset when starting the Wizard.
- * Use a height slightly above the estimated nozzle-to-probe Z offset.
- * For example, with an offset of -5, consider a starting height of -4.
- */
- #define XATC_START_Z 0.0
- #define XATC_MAX_POINTS 3 // Number of points to probe in the wizard
- #define XATC_Y_POSITION Y_CENTER // (mm) Y position to probe
- #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points
- #endif
- #endif
-
- // Include a page of printer information in the LCD Main Menu
- //#define LCD_INFO_MENU
- #if ENABLED(LCD_INFO_MENU)
- //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages
- #endif
-
- // BACK menu items keep the highlight at the top
- //#define TURBO_BACK_MENU_ITEM
-
- // Insert a menu for preheating at the top level to allow for quick access
- //#define PREHEAT_SHORTCUT_MENU_ITEM
-
-#endif // HAS_MARLINUI_MENU
-
-#if ANY(HAS_DISPLAY, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI)
- //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu
- #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state
-#endif
-
-#if EITHER(HAS_DISPLAY, DWIN_LCD_PROUI)
- // The timeout to return to the status screen from sub-menus
- //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms)
-
- #if ENABLED(SHOW_BOOTSCREEN)
- #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s)
- #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI)
- #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash)
- #endif
- #endif
-
- // Scroll a longer status message into view
- //#define STATUS_MESSAGE_SCROLLING
-
- // Apply a timeout to low-priority status messages
- //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds)
-
- // On the Info Screen, display XY with one decimal place when possible
- //#define LCD_DECIMAL_SMALL_XY
-
- // Add an 'M73' G-code to set the current percentage
- //#define LCD_SET_PROGRESS_MANUALLY
-
- // Show the E position (filament used) during printing
- //#define LCD_SHOW_E_TOTAL
-
- /**
- * LED Control Menu
- * Add LED Control to the LCD menu
- */
- #define LED_CONTROL_MENU
- #if ENABLED(LED_CONTROL_MENU)
- #define LED_COLOR_PRESETS // Enable the Preset Color menu option
- //#define NEO2_COLOR_PRESETS // Enable a second NeoPixel Preset Color menu option
- #if ENABLED(LED_COLOR_PRESETS)
- #define LED_USER_PRESET_RED 255 // User defined RED value
- #define LED_USER_PRESET_GREEN 255 // User defined GREEN value
- #define LED_USER_PRESET_BLUE 255 // User defined BLUE value
- #define LED_USER_PRESET_WHITE 255 // User defined WHITE value
- #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity
- #define LED_USER_PRESET_STARTUP RED // Have the printer display the user preset color on startup
- #endif
- #if ENABLED(NEO2_COLOR_PRESETS)
- #define NEO2_USER_PRESET_RED 255 // User defined RED value
- #define NEO2_USER_PRESET_GREEN 128 // User defined GREEN value
- #define NEO2_USER_PRESET_BLUE 0 // User defined BLUE value
- #define NEO2_USER_PRESET_WHITE 255 // User defined WHITE value
- #define NEO2_USER_PRESET_BRIGHTNESS 255 // User defined intensity
- //#define NEO2_USER_PRESET_STARTUP // Have the printer display the user preset color on startup for the second strip
- #endif
- #endif
-
-#endif
-
-// LCD Print Progress options
-#if EITHER(SDSUPPORT, LCD_SET_PROGRESS_MANUALLY)
- #if CAN_SHOW_REMAINING_TIME
- //#define SHOW_REMAINING_TIME // Display estimated time to completion
- #if ENABLED(SHOW_REMAINING_TIME)
- //#define USE_M73_REMAINING_TIME // Use remaining time from M73 command instead of estimation
- //#define ROTATE_PROGRESS_DISPLAY // Display (P)rogress, (E)lapsed, and (R)emaining time
- #endif
- #endif
-
- #if EITHER(HAS_MARLINUI_U8GLIB, EXTENSIBLE_UI)
- //#define PRINT_PROGRESS_SHOW_DECIMALS // Show progress with decimal digits
- #endif
-
- #if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL)
- //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
- #if ENABLED(LCD_PROGRESS_BAR)
- #define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar
- #define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message
- #define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever)
- //#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it
- //#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar
- #endif
- #endif
-#endif
-
-#if ENABLED(SDSUPPORT)
- /**
- * SD Card SPI Speed
- * May be required to resolve "volume init" errors.
- *
- * Enable and set to SPI_HALF_SPEED, SPI_QUARTER_SPEED, or SPI_EIGHTH_SPEED
- * otherwise full speed will be applied.
- *
- * :['SPI_HALF_SPEED', 'SPI_QUARTER_SPEED', 'SPI_EIGHTH_SPEED']
- */
- //#define SD_SPI_SPEED SPI_HALF_SPEED
-
- // The standard SD detect circuit reads LOW when media is inserted and HIGH when empty.
- // Enable this option and set to HIGH if your SD cards are incorrectly detected.
- //#define SD_DETECT_STATE HIGH
-
- //#define SD_IGNORE_AT_STARTUP // Don't mount the SD card when starting up
- //#define SDCARD_READONLY // Read-only SD card (to save over 2K of flash)
-
- //#define GCODE_REPEAT_MARKERS // Enable G-code M808 to set repeat markers and do looping
-
- #define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls
-
- #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished
- #define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place
-
- // Reverse SD sort to show "more recent" files first, according to the card's FAT.
- // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended.
- #define SDCARD_RATHERRECENTFIRST
-
- #define SD_MENU_CONFIRM_START // Confirm the selected SD file before printing
-
- //#define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM
- //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files
-
- //#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted
-
- //#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu
-
- #define EVENT_GCODE_SD_ABORT "G27" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27")
-
- #if ENABLED(PRINTER_EVENT_LEDS)
- #define PE_LEDS_COMPLETED_TIME (30*60) // (seconds) Time to keep the LED "done" color before restoring normal illumination
- #endif
-
- /**
- * Continue after Power-Loss (Creality3D)
- *
- * Store the current state to the SD Card at the start of each layer
- * during SD printing. If the recovery file is found at boot time, present
- * an option on the LCD screen to continue the print from the last-known
- * point in the file.
- */
- //#define POWER_LOSS_RECOVERY
- #if ENABLED(POWER_LOSS_RECOVERY)
- #define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500)
- //#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss
- //#define POWER_LOSS_ZRAISE 2 // (mm) Z axis raise on resume (on power loss with UPS)
- //#define POWER_LOSS_PIN 44 // Pin to detect power loss. Set to -1 to disable default pin on boards without module.
- //#define POWER_LOSS_STATE HIGH // State of pin indicating power loss
- //#define POWER_LOSS_PULLUP // Set pullup / pulldown as appropriate for your sensor
- //#define POWER_LOSS_PULLDOWN
- //#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume
- //#define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power.
-
- // Without a POWER_LOSS_PIN the following option helps reduce wear on the SD card,
- // especially with "vase mode" printing. Set too high and vases cannot be continued.
- #define POWER_LOSS_MIN_Z_CHANGE 0.05 // (mm) Minimum Z change before saving power-loss data
-
- // Enable if Z homing is needed for proper recovery. 99.9% of the time this should be disabled!
- //#define POWER_LOSS_RECOVER_ZHOME
- #if ENABLED(POWER_LOSS_RECOVER_ZHOME)
- //#define POWER_LOSS_ZHOME_POS { 0, 0 } // Safe XY position to home Z while avoiding objects on the bed
- #endif
- #endif
-
- /**
- * Sort SD file listings in alphabetical order.
- *
- * With this option enabled, items on SD cards will be sorted
- * by name for easier navigation.
- *
- * By default...
- *
- * - Use the slowest -but safest- method for sorting.
- * - Folders are sorted to the top.
- * - The sort key is statically allocated.
- * - No added G-code (M34) support.
- * - 40 item sorting limit. (Items after the first 40 are unsorted.)
- *
- * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the
- * compiler to calculate the worst-case usage and throw an error if the SRAM
- * limit is exceeded.
- *
- * - SDSORT_USES_RAM provides faster sorting via a static directory buffer.
- * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer.
- * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!)
- * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!)
- */
- //#define SDCARD_SORT_ALPHA
-
- // SD Card Sorting options
- #if ENABLED(SDCARD_SORT_ALPHA)
- #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each.
- #define FOLDER_SORTING -1 // -1=above 0=none 1=below
- #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 G-code.
- #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting.
- #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.)
- #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option.
- #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use!
- #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting.
- // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM.
- #endif
-
- // Allow international symbols in long filenames. To display correctly, the
- // LCD's font must contain the characters. Check your selected LCD language.
- //#define UTF_FILENAME_SUPPORT
-
- //#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L'
- //#define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol
-
- //#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu
-
- //#define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!)
-
- /**
- * Abort SD printing when any endstop is triggered.
- * This feature is enabled with 'M540 S1' or from the LCD menu.
- * Endstops must be activated for this option to work.
- */
- //#define SD_ABORT_ON_ENDSTOP_HIT
-
- //#define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file
-
- //#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S'
-
- /**
- * Support for USB thumb drives using an Arduino USB Host Shield or
- * equivalent MAX3421E breakout board. The USB thumb drive will appear
- * to Marlin as an SD card.
- *
- * The MAX3421E can be assigned the same pins as the SD card reader, with
- * the following pin mapping:
- *
- * SCLK, MOSI, MISO --> SCLK, MOSI, MISO
- * INT --> SD_DETECT_PIN [1]
- * SS --> SDSS
- *
- * [1] On AVR an interrupt-capable pin is best for UHS3 compatibility.
- */
- //#define USB_FLASH_DRIVE_SUPPORT
- #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
- /**
- * USB Host Shield Library
- *
- * - UHS2 uses no interrupts and has been production-tested
- * on a LulzBot TAZ Pro with a 32-bit Archim board.
- *
- * - UHS3 is newer code with better USB compatibility. But it
- * is less tested and is known to interfere with Servos.
- * [1] This requires USB_INTR_PIN to be interrupt-capable.
- */
- //#define USE_UHS2_USB
- //#define USE_UHS3_USB
-
- /**
- * Native USB Host supported by some boards (USB OTG)
- */
- //#define USE_OTG_USB_HOST
-
- #if DISABLED(USE_OTG_USB_HOST)
- #define USB_CS_PIN SDSS
- #define USB_INTR_PIN SD_DETECT_PIN
- #endif
- #endif
-
- /**
- * When using a bootloader that supports SD-Firmware-Flashing,
- * add a menu item to activate SD-FW-Update on the next reboot.
- *
- * Requires ATMEGA2560 (Arduino Mega)
- *
- * Tested with this bootloader:
- * https://github.com/FleetProbe/MicroBridge-Arduino-ATMega2560
- */
- //#define SD_FIRMWARE_UPDATE
- #if ENABLED(SD_FIRMWARE_UPDATE)
- #define SD_FIRMWARE_UPDATE_EEPROM_ADDR 0x1FF
- #define SD_FIRMWARE_UPDATE_ACTIVE_VALUE 0xF0
- #define SD_FIRMWARE_UPDATE_INACTIVE_VALUE 0xFF
- #endif
-
- /**
- * Enable this option if you have more than ~3K of unused flash space.
- * Marlin will embed all settings in the firmware binary as compressed data.
- * Use 'M503 C' to write the settings out to the SD Card as 'mc.zip'.
- * See docs/ConfigEmbedding.md for details on how to use 'mc-apply.py'.
- */
- //#define CONFIGURATION_EMBEDDING
-
- // Add an optimized binary file transfer mode, initiated with 'M28 B1'
- //#define BINARY_FILE_TRANSFER
-
- #if ENABLED(BINARY_FILE_TRANSFER)
- // Include extra facilities (e.g., 'M20 F') supporting firmware upload via BINARY_FILE_TRANSFER
- //#define CUSTOM_FIRMWARE_UPLOAD
- #endif
-
- /**
- * Set this option to one of the following (or the board's defaults apply):
- *
- * LCD - Use the SD drive in the external LCD controller.
- * ONBOARD - Use the SD drive on the control board.
- * CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
- *
- * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
- */
- //#define SDCARD_CONNECTION LCD
-
- // Enable if SD detect is rendered useless (e.g., by using an SD extender)
- //#define NO_SD_DETECT
-
- /**
- * Multiple volume support - EXPERIMENTAL.
- * Adds 'M21 Pm' / 'M21 S' / 'M21 U' to mount SD Card / USB Drive.
- */
- //#define MULTI_VOLUME
- #if ENABLED(MULTI_VOLUME)
- #define VOLUME_SD_ONBOARD
- #define VOLUME_USB_FLASH_DRIVE
- #define DEFAULT_VOLUME SV_SD_ONBOARD
- #define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE
- #endif
-
-#endif // SDSUPPORT
-
-/**
- * By default an onboard SD card reader may be shared as a USB mass-
- * storage device. This option hides the SD card from the host PC.
- */
-//#define NO_SD_HOST_DRIVE // Disable SD Card access over USB (for security).
-
-/**
- * Additional options for Graphical Displays
- *
- * Use the optimizations here to improve printing performance,
- * which can be adversely affected by graphical display drawing,
- * especially when doing several short moves, and when printing
- * on DELTA and SCARA machines.
- *
- * Some of these options may result in the display lagging behind
- * controller events, as there is a trade-off between reliable
- * printing performance versus fast display updates.
- */
-#if HAS_MARLINUI_U8GLIB
- // Save many cycles by drawing a hollow frame or no frame on the Info Screen
- //#define XYZ_NO_FRAME
- #define XYZ_HOLLOW_FRAME
-
- // A bigger font is available for edit items. Costs 3120 bytes of flash.
- // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
- //#define USE_BIG_EDIT_FONT
-
- // A smaller font may be used on the Info Screen. Costs 2434 bytes of flash.
- // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
- //#define USE_SMALL_INFOFONT
-
- /**
- * Graphical Display Sleep
- *
- * The U8G library provides sleep / wake functions for SH1106, SSD1306,
- * SSD1309, and some other DOGM displays.
- * Enable this option to save energy and prevent OLED pixel burn-in.
- * Adds the menu item Configuration > LCD Timeout (m) to set a wait period
- * from 0 (disabled) to 99 minutes.
- */
- //#define DISPLAY_SLEEP_MINUTES 2 // (minutes) Timeout before turning off the screen
-
- /**
- * ST7920-based LCDs can emulate a 16 x 4 character display using
- * the ST7920 character-generator for very fast screen updates.
- * Enable LIGHTWEIGHT_UI to use this special display mode.
- *
- * Since LIGHTWEIGHT_UI has limited space, the position and status
- * message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
- * length of time to display the status message before clearing.
- *
- * Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
- * This will prevent position updates from being displayed.
- */
- #if IS_U8GLIB_ST7920
- // Enable this option and reduce the value to optimize screen updates.
- // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
- //#define DOGM_SPI_DELAY_US 5
-
- //#define LIGHTWEIGHT_UI
- #if ENABLED(LIGHTWEIGHT_UI)
- #define STATUS_EXPIRE_SECONDS 20
- #endif
- #endif
-
- /**
- * Status (Info) Screen customizations
- * These options may affect code size and screen render time.
- * Custom status screens can forcibly override these settings.
- */
- //#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones
- //#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends)
- #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM for numbered hotends)
- #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
- #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
- #define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating
- //#define STATUS_CUTTER_ANIM // Use a second bitmap to indicate spindle / laser active
- //#define STATUS_COOLER_ANIM // Use a second bitmap to indicate laser cooling
- //#define STATUS_FLOWMETER_ANIM // Use multiple bitmaps to indicate coolant flow
- //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
- //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
- //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
- //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
- //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash.
-
- // Frivolous Game Options
- //#define MARLIN_BRICKOUT
- //#define MARLIN_INVADERS
- //#define MARLIN_SNAKE
- //#define GAMES_EASTER_EGG // Add extra blank lines above the "Games" sub-menu
-
-#endif // HAS_MARLINUI_U8GLIB
-
-#if HAS_MARLINUI_U8GLIB || IS_DWIN_MARLINUI
- // Show SD percentage next to the progress bar
- //#define SHOW_SD_PERCENT
-
- // Enable to save many cycles by drawing a hollow frame on Menu Screens
- #define MENU_HOLLOW_FRAME
-
- // Swap the CW/CCW indicators in the graphics overlay
- //#define OVERLAY_GFX_REVERSE
-#endif
-
-//
-// Additional options for DGUS / DWIN displays
-//
-#if HAS_DGUS_LCD
- #define LCD_BAUDRATE 115200
-
- #define DGUS_RX_BUFFER_SIZE 128
- #define DGUS_TX_BUFFER_SIZE 48
- //#define SERIAL_STATS_RX_BUFFER_OVERRUNS // Fix Rx overrun situation (Currently only for AVR)
-
- #define DGUS_UPDATE_INTERVAL_MS 500 // (ms) Interval between automatic screen updates
-
- #if ANY(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS, DGUS_LCD_UI_HIPRECY)
- #define DGUS_PRINT_FILENAME // Display the filename during printing
- #define DGUS_PREHEAT_UI // Display a preheat screen during heatup
-
- #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS)
- //#define DGUS_UI_MOVE_DIS_OPTION // Disabled by default for FYSETC and MKS
- #else
- #define DGUS_UI_MOVE_DIS_OPTION // Enabled by default for UI_HIPRECY
- #endif
-
- #define DGUS_FILAMENT_LOADUNLOAD
- #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
- #define DGUS_FILAMENT_PURGE_LENGTH 10
- #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
- #endif
-
- #define DGUS_UI_WAITING // Show a "waiting" screen between some screens
- #if ENABLED(DGUS_UI_WAITING)
- #define DGUS_UI_WAITING_STATUS 10
- #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
- #endif
- #endif
-#endif // HAS_DGUS_LCD
-
-//
-// Additional options for AnyCubic Chiron TFT displays
-//
-#if ENABLED(ANYCUBIC_LCD_CHIRON)
- // By default the type of panel is automatically detected.
- // Enable one of these options if you know the panel type.
- //#define CHIRON_TFT_STANDARD
- //#define CHIRON_TFT_NEW
-
- // Enable the longer Anycubic powerup startup tune
- //#define AC_DEFAULT_STARTUP_TUNE
-
- /**
- * Display Folders
- * By default the file browser lists all G-code files (including those in subfolders) in a flat list.
- * Enable this option to display a hierarchical file browser.
- *
- * NOTES:
- * - Without this option it helps to enable SDCARD_SORT_ALPHA so files are sorted before/after folders.
- * - When used with the "new" panel, folder names will also have '.gcode' appended to their names.
- * This hack is currently required to force the panel to show folders.
- */
- #define AC_SD_FOLDER_VIEW
-#endif
-
-//
-// Specify additional languages for the UI. Default specified by LCD_LANGUAGE.
-//
-#if ANY(DOGLCD, TFT_COLOR_UI, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI)
- //#define LCD_LANGUAGE_2 fr
- //#define LCD_LANGUAGE_3 de
- //#define LCD_LANGUAGE_4 es
- //#define LCD_LANGUAGE_5 it
- #ifdef LCD_LANGUAGE_2
- //#define LCD_LANGUAGE_AUTO_SAVE // Automatically save language to EEPROM on change
- #endif
-#endif
-
-//
-// Touch UI for the FTDI Embedded Video Engine (EVE)
-//
-#if ENABLED(TOUCH_UI_FTDI_EVE)
- // Display board used
- //#define LCD_FTDI_VM800B35A // FTDI 3.5" with FT800 (320x240)
- //#define LCD_4DSYSTEMS_4DLCD_FT843 // 4D Systems 4.3" (480x272)
- //#define LCD_HAOYU_FT800CB // Haoyu with 4.3" or 5" (480x272)
- //#define LCD_HAOYU_FT810CB // Haoyu with 5" (800x480)
- //#define LCD_LULZBOT_CLCD_UI // LulzBot Color LCD UI
- //#define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480)
- //#define LCD_EVE3_50G // Matrix Orbital 5.0", 800x480, BT815
- //#define LCD_EVE2_50G // Matrix Orbital 5.0", 800x480, FT813
-
- // Correct the resolution if not using the stock TFT panel.
- //#define TOUCH_UI_320x240
- //#define TOUCH_UI_480x272
- //#define TOUCH_UI_800x480
-
- // Mappings for boards with a standard RepRapDiscount Display connector
- //#define AO_EXP1_PINMAP // LulzBot CLCD UI EXP1 mapping
- //#define AO_EXP2_PINMAP // LulzBot CLCD UI EXP2 mapping
- //#define CR10_TFT_PINMAP // Rudolph Riedel's CR10 pin mapping
- //#define S6_TFT_PINMAP // FYSETC S6 pin mapping
- //#define F6_TFT_PINMAP // FYSETC F6 pin mapping
-
- //#define OTHER_PIN_LAYOUT // Define pins manually below
- #if ENABLED(OTHER_PIN_LAYOUT)
- // Pins for CS and MOD_RESET (PD) must be chosen
- #define CLCD_MOD_RESET 9
- #define CLCD_SPI_CS 10
-
- // If using software SPI, specify pins for SCLK, MOSI, MISO
- //#define CLCD_USE_SOFT_SPI
- #if ENABLED(CLCD_USE_SOFT_SPI)
- #define CLCD_SOFT_SPI_MOSI 11
- #define CLCD_SOFT_SPI_MISO 12
- #define CLCD_SOFT_SPI_SCLK 13
- #endif
- #endif
-
- // Display Orientation. An inverted (i.e. upside-down) display
- // is supported on the FT800. The FT810 and beyond also support
- // portrait and mirrored orientations.
- //#define TOUCH_UI_INVERTED
- //#define TOUCH_UI_PORTRAIT
- //#define TOUCH_UI_MIRRORED
-
- // UTF8 processing and rendering.
- // Unsupported characters are shown as '?'.
- //#define TOUCH_UI_USE_UTF8
- #if ENABLED(TOUCH_UI_USE_UTF8)
- // Western accents support. These accented characters use
- // combined bitmaps and require relatively little storage.
- #define TOUCH_UI_UTF8_WESTERN_CHARSET
- #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET)
- // Additional character groups. These characters require
- // full bitmaps and take up considerable storage:
- //#define TOUCH_UI_UTF8_SUPERSCRIPTS // ¹ ² ³
- //#define TOUCH_UI_UTF8_COPYRIGHT // © ®
- //#define TOUCH_UI_UTF8_GERMANIC // ß
- //#define TOUCH_UI_UTF8_SCANDINAVIAN // Æ Ð Ø Þ æ ð ø þ
- //#define TOUCH_UI_UTF8_PUNCTUATION // « » ¿ ¡
- //#define TOUCH_UI_UTF8_CURRENCY // ¢ £ ¤ ¥
- //#define TOUCH_UI_UTF8_ORDINALS // º ª
- //#define TOUCH_UI_UTF8_MATHEMATICS // ± × ÷
- //#define TOUCH_UI_UTF8_FRACTIONS // ¼ ½ ¾
- //#define TOUCH_UI_UTF8_SYMBOLS // µ ¶ ¦ § ¬
- #endif
-
- // Cyrillic character set, costs about 27KiB of flash
- //#define TOUCH_UI_UTF8_CYRILLIC_CHARSET
- #endif
-
- // Use a smaller font when labels don't fit buttons
- #define TOUCH_UI_FIT_TEXT
-
- // Use a numeric passcode for "Screen lock" keypad.
- // (recommended for smaller displays)
- //#define TOUCH_UI_PASSCODE
-
- // Output extra debug info for Touch UI events
- //#define TOUCH_UI_DEBUG
-
- // Developer menu (accessed by touching "About Printer" copyright text)
- //#define TOUCH_UI_DEVELOPER_MENU
-#endif
-
-//
-// Classic UI Options
-//
-#if TFT_SCALED_DOGLCD
- //#define TFT_MARLINUI_COLOR 0xFFFF // White
- //#define TFT_MARLINBG_COLOR 0x0000 // Black
- //#define TFT_DISABLED_COLOR 0x0003 // Almost black
- //#define TFT_BTCANCEL_COLOR 0xF800 // Red
- //#define TFT_BTARROWS_COLOR 0xDEE6 // 11011 110111 00110 Yellow
- //#define TFT_BTOKMENU_COLOR 0x145F // 00010 100010 11111 Cyan
-#endif
-
-//
-// ADC Button Debounce
-//
-#if HAS_ADC_BUTTONS
- #define ADC_BUTTON_DEBOUNCE_DELAY 16 // Increase if buttons bounce or repeat too fast
-#endif
-
-// @section safety
-
-/**
- * The watchdog hardware timer will do a reset and disable all outputs
- * if the firmware gets too overloaded to read the temperature sensors.
- *
- * If you find that watchdog reboot causes your AVR board to hang forever,
- * enable WATCHDOG_RESET_MANUAL to use a custom timer instead of WDTO.
- * NOTE: This method is less reliable as it can only catch hangups while
- * interrupts are enabled.
- */
-#define USE_WATCHDOG
-#if ENABLED(USE_WATCHDOG)
- //#define WATCHDOG_RESET_MANUAL
-#endif
-
-// @section lcd
-
-/**
- * Babystepping enables movement of the axes by tiny increments without changing
- * the current position values. This feature is used primarily to adjust the Z
- * axis in the first layer of a print in real-time.
- *
- * Warning: Does not respect endstops!
- */
-//#define BABYSTEPPING
-#if ENABLED(BABYSTEPPING)
- //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
- //#define BABYSTEP_WITHOUT_HOMING
- //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
- //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
- #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
- //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
- #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep
- #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep
-
- //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
- #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
- #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
- // Note: Extra time may be added to mitigate controller latency.
- //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle.
- #if ENABLED(MOVE_Z_WHEN_IDLE)
- #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size.
- #endif
- #endif
-
- //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
-
- //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
- #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
- //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
- //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
- #endif
-#endif
-
-// @section extruder
-
-/**
- * Linear Pressure Control v1.5
- *
- * Assumption: advance [steps] = k * (delta velocity [steps/s])
- * K=0 means advance disabled.
- *
- * NOTE: K values for LIN_ADVANCE 1.5 differ from earlier versions!
- *
- * Set K around 0.22 for 3mm PLA Direct Drive with ~6.5cm between the drive gear and heatbreak.
- * Larger K values will be needed for flexible filament and greater distances.
- * If this algorithm produces a higher speed offset than the extruder can handle (compared to E jerk)
- * print acceleration will be reduced during the affected moves to keep within the limit.
- *
- * See https://marlinfw.org/docs/features/lin_advance.html for full instructions.
- */
-//#define LIN_ADVANCE
-#if ENABLED(LIN_ADVANCE)
- //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
- #define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed
- //#define LA_DEBUG // If enabled, this will generate debug information output over USB.
- //#define EXPERIMENTAL_SCURVE // Enable this option to permit S-Curve Acceleration
- //#define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends.
-#endif
-
-// @section leveling
-
-/**
- * Points to probe for all 3-point Leveling procedures.
- * Override if the automatically selected points are inadequate.
- */
-#if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL)
- //#define PROBE_PT_1_X 15
- //#define PROBE_PT_1_Y 180
- //#define PROBE_PT_2_X 15
- //#define PROBE_PT_2_Y 20
- //#define PROBE_PT_3_X 170
- //#define PROBE_PT_3_Y 20
-#endif
-
-/**
- * Probing Margins
- *
- * Override PROBING_MARGIN for each side of the build plate
- * Useful to get probe points to exact positions on targets or
- * to allow leveling to avoid plate clamps on only specific
- * sides of the bed. With NOZZLE_AS_PROBE negative values are
- * allowed, to permit probing outside the bed.
- *
- * If you are replacing the prior *_PROBE_BED_POSITION options,
- * LEFT and FRONT values in most cases will map directly over
- * RIGHT and REAR would be the inverse such as
- * (X/Y_BED_SIZE - RIGHT/BACK_PROBE_BED_POSITION)
- *
- * This will allow all positions to match at compilation, however
- * should the probe position be modified with M851XY then the
- * probe points will follow. This prevents any change from causing
- * the probe to be unable to reach any points.
- */
-#if PROBE_SELECTED && !IS_KINEMATIC
- //#define PROBING_MARGIN_LEFT PROBING_MARGIN
- //#define PROBING_MARGIN_RIGHT PROBING_MARGIN
- //#define PROBING_MARGIN_FRONT PROBING_MARGIN
- //#define PROBING_MARGIN_BACK PROBING_MARGIN
-#endif
-
-#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
- // Override the mesh area if the automatic (max) area is too large
- //#define MESH_MIN_X MESH_INSET
- //#define MESH_MIN_Y MESH_INSET
- //#define MESH_MAX_X X_BED_SIZE - (MESH_INSET)
- //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
-#endif
-
-#if BOTH(AUTO_BED_LEVELING_UBL, EEPROM_SETTINGS)
- //#define OPTIMIZED_MESH_STORAGE // Store mesh with less precision to save EEPROM space
-#endif
-
-/**
- * Repeatedly attempt G29 leveling until it succeeds.
- * Stop after G29_MAX_RETRIES attempts.
- */
-//#define G29_RETRY_AND_RECOVER
-#if ENABLED(G29_RETRY_AND_RECOVER)
- #define G29_MAX_RETRIES 3
- #define G29_HALT_ON_FAILURE
- /**
- * Specify the GCODE commands that will be executed when leveling succeeds,
- * between attempts, and after the maximum number of retries have been tried.
- */
- #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
- #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
- #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
-
-#endif
-
-/**
- * Thermal Probe Compensation
- *
- * Adjust probe measurements to compensate for distortion associated with the temperature
- * of the probe, bed, and/or hotend.
- * Use G76 to automatically calibrate this feature for probe and bed temperatures.
- * (Extruder temperature/offset values must be calibrated manually.)
- * Use M871 to set temperature/offset values manually.
- * For more details see https://marlinfw.org/docs/features/probe_temp_compensation.html
- */
-//#define PTC_PROBE // Compensate based on probe temperature
-//#define PTC_BED // Compensate based on bed temperature
-//#define PTC_HOTEND // Compensate based on hotend temperature
-
-#if ANY(PTC_PROBE, PTC_BED, PTC_HOTEND)
- /**
- * If the probe is outside the defined range, use linear extrapolation with the closest
- * point and the point with index PTC_LINEAR_EXTRAPOLATION. e.g., If set to 4 it will use the
- * linear extrapolation between data[0] and data[4] for values below PTC_PROBE_START.
- */
- //#define PTC_LINEAR_EXTRAPOLATION 4
-
- #if ENABLED(PTC_PROBE)
- // Probe temperature calibration generates a table of values starting at PTC_PROBE_START
- // (e.g., 30), in steps of PTC_PROBE_RES (e.g., 5) with PTC_PROBE_COUNT (e.g., 10) samples.
- #define PTC_PROBE_START 30 // (°C)
- #define PTC_PROBE_RES 5 // (°C)
- #define PTC_PROBE_COUNT 10
- #define PTC_PROBE_ZOFFS { 0 } // (µm) Z adjustments per sample
- #endif
-
- #if ENABLED(PTC_BED)
- // Bed temperature calibration builds a similar table.
- #define PTC_BED_START 60 // (°C)
- #define PTC_BED_RES 5 // (°C)
- #define PTC_BED_COUNT 10
- #define PTC_BED_ZOFFS { 0 } // (µm) Z adjustments per sample
- #endif
-
- #if ENABLED(PTC_HOTEND)
- // Note: There is no automatic calibration for the hotend. Use M871.
- #define PTC_HOTEND_START 180 // (°C)
- #define PTC_HOTEND_RES 5 // (°C)
- #define PTC_HOTEND_COUNT 20
- #define PTC_HOTEND_ZOFFS { 0 } // (µm) Z adjustments per sample
- #endif
-
- // G76 options
- #if BOTH(PTC_PROBE, PTC_BED)
- // Park position to wait for probe cooldown
- #define PTC_PARK_POS { 0, 0, 100 }
-
- // Probe position to probe and wait for probe to reach target temperature
- //#define PTC_PROBE_POS { 12.0f, 7.3f } // Example: MK52 magnetic heatbed
- #define PTC_PROBE_POS { 90, 100 }
-
- // The temperature the probe should be at while taking measurements during
- // bed temperature calibration.
- #define PTC_PROBE_TEMP 30 // (°C)
-
- // Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster.
- // Note: The Z=0.0 offset is determined by the probe Z offset (e.g., as set with M851 Z).
- #define PTC_PROBE_HEATING_OFFSET 0.5
- #endif
-#endif // PTC_PROBE || PTC_BED || PTC_HOTEND
-
-// @section extras
-
-//
-// G60/G61 Position Save and Return
-//
-//#define SAVED_POSITIONS 1 // Each saved position slot costs 12 bytes
-
-//
-// G2/G3 Arc Support
-//
-#define ARC_SUPPORT // Requires ~3226 bytes
-#if ENABLED(ARC_SUPPORT)
- #define MIN_ARC_SEGMENT_MM 0.1 // (mm) Minimum length of each arc segment
- #define MAX_ARC_SEGMENT_MM 1.0 // (mm) Maximum length of each arc segment
- #define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle
- //#define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length
- #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
- //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
- //#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure
-#endif
-
-// G5 Bézier Curve Support with XYZE destination and IJPQ offsets
-//#define BEZIER_CURVE_SUPPORT // Requires ~2666 bytes
-
-#if EITHER(ARC_SUPPORT, BEZIER_CURVE_SUPPORT)
- //#define CNC_WORKSPACE_PLANES // Allow G2/G3/G5 to operate in XY, ZX, or YZ planes
-#endif
-
-/**
- * Direct Stepping
- *
- * Comparable to the method used by Klipper, G6 direct stepping significantly
- * reduces motion calculations, increases top printing speeds, and results in
- * less step aliasing by calculating all motions in advance.
- * Preparing your G-code: https://github.com/colinrgodsey/step-daemon
- */
-//#define DIRECT_STEPPING
-
-/**
- * G38 Probe Target
- *
- * This option adds G38.2 and G38.3 (probe towards target)
- * and optionally G38.4 and G38.5 (probe away from target).
- * Set MULTIPLE_PROBING for G38 to probe more than once.
- */
-//#define G38_PROBE_TARGET
-#if ENABLED(G38_PROBE_TARGET)
- //#define G38_PROBE_AWAY // Include G38.4 and G38.5 to probe away from target
- #define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move.
-#endif
-
-// Moves (or segments) with fewer steps than this will be joined with the next move
-#define MIN_STEPS_PER_SEGMENT 6
-
-/**
- * Minimum delay before and after setting the stepper DIR (in ns)
- * 0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
- * 20 : Minimum for TMC2xxx drivers
- * 200 : Minimum for A4988 drivers
- * 400 : Minimum for A5984 drivers
- * 500 : Minimum for LV8729 drivers (guess, no info in datasheet)
- * 650 : Minimum for DRV8825 drivers
- * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
- * 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
- *
- * Override the default value based on the driver type set in Configuration.h.
- */
-//#define MINIMUM_STEPPER_POST_DIR_DELAY 650
-//#define MINIMUM_STEPPER_PRE_DIR_DELAY 650
-
-/**
- * Minimum stepper driver pulse width (in µs)
- * 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
- * 0 : Minimum 500ns for LV8729, adjusted in stepper.h
- * 1 : Minimum for A4988 and A5984 stepper drivers
- * 2 : Minimum for DRV8825 stepper drivers
- * 3 : Minimum for TB6600 stepper drivers
- * 30 : Minimum for TB6560 stepper drivers
- *
- * Override the default value based on the driver type set in Configuration.h.
- */
-//#define MINIMUM_STEPPER_PULSE 2
-
-/**
- * Maximum stepping rate (in Hz) the stepper driver allows
- * If undefined, defaults to 1MHz / (2 * MINIMUM_STEPPER_PULSE)
- * 5000000 : Maximum for TMC2xxx stepper drivers
- * 1000000 : Maximum for LV8729 stepper driver
- * 500000 : Maximum for A4988 stepper driver
- * 250000 : Maximum for DRV8825 stepper driver
- * 150000 : Maximum for TB6600 stepper driver
- * 15000 : Maximum for TB6560 stepper driver
- *
- * Override the default value based on the driver type set in Configuration.h.
- */
-//#define MAXIMUM_STEPPER_RATE 250000
-
-// @section temperature
-
-// Control heater 0 and heater 1 in parallel.
-//#define HEATERS_PARALLEL
-
-//===========================================================================
-//================================= Buffers =================================
-//===========================================================================
-
-// @section motion
-
-// The number of linear moves that can be in the planner at once.
-// The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32)
-#if BOTH(SDSUPPORT, DIRECT_STEPPING)
- #define BLOCK_BUFFER_SIZE 8
-#elif ENABLED(SDSUPPORT)
- #define BLOCK_BUFFER_SIZE 16
-#else
- #define BLOCK_BUFFER_SIZE 16
-#endif
-
-// @section serial
-
-// The ASCII buffer for serial input
-#define MAX_CMD_SIZE 96
-#define BUFSIZE 4
-
-// Transmission to Host Buffer Size
-// To save 386 bytes of flash (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
-
-// Host Receive Buffer Size
-// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
-// To use flow control, set this buffer size to at least 1024 bytes.
-// :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
-//#define RX_BUFFER_SIZE 1024
-
-#if RX_BUFFER_SIZE >= 1024
- // Enable to have the controller send XON/XOFF control characters to
- // the host to signal the RX buffer is becoming full.
- //#define SERIAL_XON_XOFF
-#endif
-
-#if ENABLED(SDSUPPORT)
- // Enable this option to collect and display the maximum
- // RX queue usage after transferring a file to SD.
- //#define SERIAL_STATS_MAX_RX_QUEUED
-
- // Enable this option to collect and display the number
- // of dropped bytes after a file transfer to SD.
- //#define SERIAL_STATS_DROPPED_RX
-#endif
-
-// Monitor RX buffer usage
-// Dump an error to the serial port if the serial receive buffer overflows.
-// If you see these errors, increase the RX_BUFFER_SIZE value.
-// Not supported on all platforms.
-//#define RX_BUFFER_MONITOR
-
-/**
- * Emergency Command Parser
- *
- * Add a low-level parser to intercept certain commands as they
- * enter the serial receive buffer, so they cannot be blocked.
- * Currently handles M108, M112, M410, M876
- * NOTE: Not yet implemented for all platforms.
- */
-//#define EMERGENCY_PARSER
-
-/**
- * Realtime Reporting (requires EMERGENCY_PARSER)
- *
- * - Report position and state of the machine (like Grbl).
- * - Auto-report position during long moves.
- * - Useful for CNC/LASER.
- *
- * Adds support for commands:
- * S000 : Report State and Position while moving.
- * P000 : Instant Pause / Hold while moving.
- * R000 : Resume from Pause / Hold.
- *
- * - During Hold all Emergency Parser commands are available, as usual.
- * - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
- */
-//#define REALTIME_REPORTING_COMMANDS
-#if ENABLED(REALTIME_REPORTING_COMMANDS)
- //#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
-#endif
-
-// 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
-
-// Printrun may have trouble receiving long strings all at once.
-// This option inserts short delays between lines of serial output.
-#define SERIAL_OVERRUN_PROTECTION
-
-// For serial echo, the number of digits after the decimal point
-//#define SERIAL_FLOAT_PRECISION 4
-
-/**
- * Set the number of proportional font spaces required to fill up a typical character space.
- * This can help to better align the output of commands like `G29 O` Mesh Output.
- *
- * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
- * Otherwise, adjust according to your client and font.
- */
-#define PROPORTIONAL_FONT_RATIO 1.0
-
-// @section extras
-
-/**
- * Extra Fan Speed
- * Adds a secondary fan speed for each print-cooling fan.
- * 'M106 P T3-255' : Set a secondary speed for
- * 'M106 P T2' : Use the set secondary speed
- * 'M106 P T1' : Restore the previous fan speed
- */
-//#define EXTRA_FAN_SPEED
-
-/**
- * Firmware-based and LCD-controlled retract
- *
- * Add G10 / G11 commands for automatic firmware-based retract / recover.
- * Use M207 and M208 to define parameters for retract / recover.
- *
- * Use M209 to enable or disable auto-retract.
- * With auto-retract enabled, all G1 E moves within the set range
- * will be converted to firmware-based retract/recover moves.
- *
- * Be sure to turn off auto-retract during filament change.
- *
- * Note that M207 / M208 / M209 settings are saved to EEPROM.
- */
-//#define FWRETRACT
-#if ENABLED(FWRETRACT)
- #define FWRETRACT_AUTORETRACT // Override slicer retractions
- #if ENABLED(FWRETRACT_AUTORETRACT)
- #define MIN_AUTORETRACT 0.1 // (mm) Don't convert E moves under this length
- #define MAX_AUTORETRACT 10.0 // (mm) Don't convert E moves over this length
- #endif
- #define RETRACT_LENGTH 3 // (mm) Default retract length (positive value)
- #define RETRACT_LENGTH_SWAP 13 // (mm) Default swap retract length (positive value)
- #define RETRACT_FEEDRATE 45 // (mm/s) Default feedrate for retracting
- #define RETRACT_ZRAISE 0 // (mm) Default retract Z-raise
- #define RETRACT_RECOVER_LENGTH 0 // (mm) Default additional recover length (added to retract length on recover)
- #define RETRACT_RECOVER_LENGTH_SWAP 0 // (mm) Default additional swap recover length (added to retract length on recover from toolchange)
- #define RETRACT_RECOVER_FEEDRATE 8 // (mm/s) Default feedrate for recovering from retraction
- #define RETRACT_RECOVER_FEEDRATE_SWAP 8 // (mm/s) Default feedrate for recovering from swap retraction
- #if ENABLED(MIXING_EXTRUDER)
- //#define RETRACT_SYNC_MIXING // Retract and restore all mixing steppers simultaneously
- #endif
-#endif
-
-/**
- * Universal tool change settings.
- * Applies to all types of extruders except where explicitly noted.
- */
-#if HAS_MULTI_EXTRUDER
- // Z raise distance for tool-change, as needed for some extruders
- #define TOOLCHANGE_ZRAISE 0 // (mm)
- //#define TOOLCHANGE_ZRAISE_BEFORE_RETRACT // Apply raise before swap retraction (if enabled)
- //#define TOOLCHANGE_NO_RETURN // Never return to previous position on tool-change
- #if ENABLED(TOOLCHANGE_NO_RETURN)
- //#define EVENT_GCODE_AFTER_TOOLCHANGE "G12X" // Extra G-code to run after tool-change
- #endif
-
- /**
- * Extra G-code to run while executing tool-change commands. Can be used to use an additional
- * stepper motor (I axis, see option LINEAR_AXES in Configuration.h) to drive the tool-changer.
- */
- //#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0
- //#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1
- //#define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution!
-
- /**
- * Tool Sensors detect when tools have been picked up or dropped.
- * Requires the pins TOOL_SENSOR1_PIN, TOOL_SENSOR2_PIN, etc.
- */
- //#define TOOL_SENSOR
-
- /**
- * Retract and prime filament on tool-change to reduce
- * ooze and stringing and to get cleaner transitions.
- */
- //#define TOOLCHANGE_FILAMENT_SWAP
- #if ENABLED(TOOLCHANGE_FILAMENT_SWAP)
- // Load / Unload
- #define TOOLCHANGE_FS_LENGTH 12 // (mm) Load / Unload length
- #define TOOLCHANGE_FS_EXTRA_RESUME_LENGTH 0 // (mm) Extra length for better restart. Adjust with LCD or M217 B.
- #define TOOLCHANGE_FS_RETRACT_SPEED (50*60) // (mm/min) (Unloading)
- #define TOOLCHANGE_FS_UNRETRACT_SPEED (25*60) // (mm/min) (On SINGLENOZZLE or Bowden loading must be slowed down)
-
- // Longer prime to clean out a SINGLENOZZLE
- #define TOOLCHANGE_FS_EXTRA_PRIME 0 // (mm) Extra priming length
- #define TOOLCHANGE_FS_PRIME_SPEED (4.6*60) // (mm/min) Extra priming feedrate
- #define TOOLCHANGE_FS_WIPE_RETRACT 0 // (mm) Retract before cooling for less stringing, better wipe, etc.
-
- // Cool after prime to reduce stringing
- #define TOOLCHANGE_FS_FAN -1 // Fan index or -1 to skip
- #define TOOLCHANGE_FS_FAN_SPEED 255 // 0-255
- #define TOOLCHANGE_FS_FAN_TIME 10 // (seconds)
-
- // Use TOOLCHANGE_FS_PRIME_SPEED feedrate the first time each extruder is primed
- //#define TOOLCHANGE_FS_SLOW_FIRST_PRIME
-
- /**
- * Prime T0 the first time T0 is sent to the printer:
- * [ Power-On -> T0 { Activate & Prime T0 } -> T1 { Retract T0, Activate & Prime T1 } ]
- * If disabled, no priming on T0 until switching back to T0 from another extruder:
- * [ Power-On -> T0 { T0 Activated } -> T1 { Activate & Prime T1 } -> T0 { Retract T1, Activate & Prime T0 } ]
- * Enable with M217 V1 before printing to avoid unwanted priming on host connect.
- */
- //#define TOOLCHANGE_FS_PRIME_FIRST_USED
-
- /**
- * Tool Change Migration
- * This feature provides G-code and LCD options to switch tools mid-print.
- * All applicable tool properties are migrated so the print can continue.
- * Tools must be closely matching and other restrictions may apply.
- * Useful to:
- * - Change filament color without interruption
- * - Switch spools automatically on filament runout
- * - Switch to a different nozzle on an extruder jam
- */
- #define TOOLCHANGE_MIGRATION_FEATURE
-
- #endif
-
- /**
- * Position to park head during tool change.
- * Doesn't apply to SWITCHING_TOOLHEAD, DUAL_X_CARRIAGE, or PARKING_EXTRUDER
- */
- //#define TOOLCHANGE_PARK
- #if ENABLED(TOOLCHANGE_PARK)
- #define TOOLCHANGE_PARK_XY { X_MIN_POS + 10, Y_MIN_POS + 10 }
- #define TOOLCHANGE_PARK_XY_FEEDRATE 6000 // (mm/min)
- //#define TOOLCHANGE_PARK_X_ONLY // X axis only move
- //#define TOOLCHANGE_PARK_Y_ONLY // Y axis only move
- #endif
-#endif // HAS_MULTI_EXTRUDER
-
-/**
- * Advanced Pause for Filament Change
- * - Adds the G-code M600 Filament Change to initiate a filament change.
- * - This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
- *
- * Requirements:
- * - For Filament Change parking enable and configure NOZZLE_PARK_FEATURE.
- * - For user interaction enable an LCD display, HOST_PROMPT_SUPPORT, or EMERGENCY_PARSER.
- *
- * Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park.
- */
-#define ADVANCED_PAUSE_FEATURE
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
- #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
- // This short retract is done immediately, before parking the nozzle.
- #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
- #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
- #define FILAMENT_CHANGE_UNLOAD_LENGTH 80 // (mm) The length of filament for a complete unload.
- // For Bowden, the full length of the tube and nozzle.
- // For direct drive, the full length of the nozzle.
- // Set to 0 for manual unloading.
- #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
- #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 80 // (mm) Slow length, to allow time to insert material.
- // 0 to disable start loading and skip to fast load only
- #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
- #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
- #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
- // For Bowden, the full length of the tube and nozzle.
- // For direct drive, the full length of the nozzle.
- //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
- #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
- #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
- // Set to 0 for manual extrusion.
- // Filament can be extruded repeatedly from the Filament Change menu
- // until extrusion is consistent, and to purge old filament.
- #define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
- //#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
-
- // Filament Unload does a Retract, Delay, and Purge first:
- #define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length.
- #define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract.
- #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
- #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
-
- #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
- #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
- //#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again.
- //#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing.
-
- #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
- //#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
-
- #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
- //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
-#endif
-
-// @section tmc
-
-/**
- * TMC26X Stepper Driver options
- *
- * The TMC26XStepper library is required for this stepper driver.
- * https://github.com/trinamic/TMC26XStepper
- */
-#if HAS_DRIVER(TMC26X)
-
- #if AXIS_DRIVER_TYPE_X(TMC26X)
- #define X_MAX_CURRENT 1000 // (mA)
- #define X_SENSE_RESISTOR 91 // (mOhms)
- #define X_MICROSTEPS 16 // Number of microsteps
- #endif
-
- #if AXIS_DRIVER_TYPE_X2(TMC26X)
- #define X2_MAX_CURRENT 1000
- #define X2_SENSE_RESISTOR 91
- #define X2_MICROSTEPS X_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Y(TMC26X)
- #define Y_MAX_CURRENT 1000
- #define Y_SENSE_RESISTOR 91
- #define Y_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_Y2(TMC26X)
- #define Y2_MAX_CURRENT 1000
- #define Y2_SENSE_RESISTOR 91
- #define Y2_MICROSTEPS Y_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Z(TMC26X)
- #define Z_MAX_CURRENT 1000
- #define Z_SENSE_RESISTOR 91
- #define Z_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_Z2(TMC26X)
- #define Z2_MAX_CURRENT 1000
- #define Z2_SENSE_RESISTOR 91
- #define Z2_MICROSTEPS Z_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Z3(TMC26X)
- #define Z3_MAX_CURRENT 1000
- #define Z3_SENSE_RESISTOR 91
- #define Z3_MICROSTEPS Z_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Z4(TMC26X)
- #define Z4_MAX_CURRENT 1000
- #define Z4_SENSE_RESISTOR 91
- #define Z4_MICROSTEPS Z_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_I(TMC26X)
- #define I_MAX_CURRENT 1000
- #define I_SENSE_RESISTOR 91
- #define I_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_J(TMC26X)
- #define J_MAX_CURRENT 1000
- #define J_SENSE_RESISTOR 91
- #define J_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_K(TMC26X)
- #define K_MAX_CURRENT 1000
- #define K_SENSE_RESISTOR 91
- #define K_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_E0(TMC26X)
- #define E0_MAX_CURRENT 1000
- #define E0_SENSE_RESISTOR 91
- #define E0_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_E1(TMC26X)
- #define E1_MAX_CURRENT 1000
- #define E1_SENSE_RESISTOR 91
- #define E1_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E2(TMC26X)
- #define E2_MAX_CURRENT 1000
- #define E2_SENSE_RESISTOR 91
- #define E2_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E3(TMC26X)
- #define E3_MAX_CURRENT 1000
- #define E3_SENSE_RESISTOR 91
- #define E3_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E4(TMC26X)
- #define E4_MAX_CURRENT 1000
- #define E4_SENSE_RESISTOR 91
- #define E4_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E5(TMC26X)
- #define E5_MAX_CURRENT 1000
- #define E5_SENSE_RESISTOR 91
- #define E5_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E6(TMC26X)
- #define E6_MAX_CURRENT 1000
- #define E6_SENSE_RESISTOR 91
- #define E6_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E7(TMC26X)
- #define E7_MAX_CURRENT 1000
- #define E7_SENSE_RESISTOR 91
- #define E7_MICROSTEPS E0_MICROSTEPS
- #endif
-
-#endif // TMC26X
-
-// @section tmc_smart
-
-/**
- * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 stepper drivers in SPI mode
- * connect your SPI pins to the hardware SPI interface on your board and define
- * the required CS pins in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3
- * pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
- * You may also use software SPI if you wish to use general purpose IO pins.
- *
- * To use TMC2208 stepper UART-configurable stepper drivers connect #_SERIAL_TX_PIN
- * to the driver side PDN_UART pin with a 1K resistor.
- * To use the reading capabilities, also connect #_SERIAL_RX_PIN to PDN_UART without
- * a resistor.
- * The drivers can also be used with hardware serial.
- *
- * TMCStepper library is required to use TMC stepper drivers.
- * https://github.com/teemuatlut/TMCStepper
- */
-#if HAS_TRINAMIC_CONFIG
-
- #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current
-
- /**
- * Interpolate microsteps to 256
- * Override for each driver with _INTERPOLATE settings below
- */
- #define INTERPOLATE true
-
- #if AXIS_IS_TMC(X)
- #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
- #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
- #define X_MICROSTEPS 16 // 0..256
- #define X_RSENSE 0.11
- #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ...
- //#define X_INTERPOLATE true // Enable to override 'INTERPOLATE' for the X axis
- //#define X_HOLD_MULTIPLIER 0.5 // Enable to override 'HOLD_MULTIPLIER' for the X axis
- #endif
-
- #if AXIS_IS_TMC(X2)
- #define X2_CURRENT 800
- #define X2_CURRENT_HOME X2_CURRENT
- #define X2_MICROSTEPS X_MICROSTEPS
- #define X2_RSENSE 0.11
- #define X2_CHAIN_POS -1
- //#define X2_INTERPOLATE true
- //#define X2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Y)
- #define Y_CURRENT 800
- #define Y_CURRENT_HOME Y_CURRENT
- #define Y_MICROSTEPS 16
- #define Y_RSENSE 0.11
- #define Y_CHAIN_POS -1
- //#define Y_INTERPOLATE true
- //#define Y_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Y2)
- #define Y2_CURRENT 800
- #define Y2_CURRENT_HOME Y2_CURRENT
- #define Y2_MICROSTEPS Y_MICROSTEPS
- #define Y2_RSENSE 0.11
- #define Y2_CHAIN_POS -1
- //#define Y2_INTERPOLATE true
- //#define Y2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z)
- #define Z_CURRENT 800
- #define Z_CURRENT_HOME Z_CURRENT
- #define Z_MICROSTEPS 16
- #define Z_RSENSE 0.11
- #define Z_CHAIN_POS -1
- //#define Z_INTERPOLATE true
- //#define Z_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z2)
- #define Z2_CURRENT 800
- #define Z2_CURRENT_HOME Z2_CURRENT
- #define Z2_MICROSTEPS Z_MICROSTEPS
- #define Z2_RSENSE 0.11
- #define Z2_CHAIN_POS -1
- //#define Z2_INTERPOLATE true
- //#define Z2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z3)
- #define Z3_CURRENT 800
- #define Z3_CURRENT_HOME Z3_CURRENT
- #define Z3_MICROSTEPS Z_MICROSTEPS
- #define Z3_RSENSE 0.11
- #define Z3_CHAIN_POS -1
- //#define Z3_INTERPOLATE true
- //#define Z3_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z4)
- #define Z4_CURRENT 800
- #define Z4_CURRENT_HOME Z4_CURRENT
- #define Z4_MICROSTEPS Z_MICROSTEPS
- #define Z4_RSENSE 0.11
- #define Z4_CHAIN_POS -1
- //#define Z4_INTERPOLATE true
- //#define Z4_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(I)
- #define I_CURRENT 800
- #define I_CURRENT_HOME I_CURRENT
- #define I_MICROSTEPS 16
- #define I_RSENSE 0.11
- #define I_CHAIN_POS -1
- //#define I_INTERPOLATE true
- //#define I_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(J)
- #define J_CURRENT 800
- #define J_CURRENT_HOME J_CURRENT
- #define J_MICROSTEPS 16
- #define J_RSENSE 0.11
- #define J_CHAIN_POS -1
- //#define J_INTERPOLATE true
- //#define J_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(K)
- #define K_CURRENT 800
- #define K_CURRENT_HOME K_CURRENT
- #define K_MICROSTEPS 16
- #define K_RSENSE 0.11
- #define K_CHAIN_POS -1
- //#define K_INTERPOLATE true
- //#define K_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E0)
- #define E0_CURRENT 800
- #define E0_MICROSTEPS 16
- #define E0_RSENSE 0.11
- #define E0_CHAIN_POS -1
- //#define E0_INTERPOLATE true
- //#define E0_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E1)
- #define E1_CURRENT 800
- #define E1_MICROSTEPS E0_MICROSTEPS
- #define E1_RSENSE 0.11
- #define E1_CHAIN_POS -1
- //#define E1_INTERPOLATE true
- //#define E1_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E2)
- #define E2_CURRENT 800
- #define E2_MICROSTEPS E0_MICROSTEPS
- #define E2_RSENSE 0.11
- #define E2_CHAIN_POS -1
- //#define E2_INTERPOLATE true
- //#define E2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E3)
- #define E3_CURRENT 800
- #define E3_MICROSTEPS E0_MICROSTEPS
- #define E3_RSENSE 0.11
- #define E3_CHAIN_POS -1
- //#define E3_INTERPOLATE true
- //#define E3_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E4)
- #define E4_CURRENT 800
- #define E4_MICROSTEPS E0_MICROSTEPS
- #define E4_RSENSE 0.11
- #define E4_CHAIN_POS -1
- //#define E4_INTERPOLATE true
- //#define E4_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E5)
- #define E5_CURRENT 800
- #define E5_MICROSTEPS E0_MICROSTEPS
- #define E5_RSENSE 0.11
- #define E5_CHAIN_POS -1
- //#define E5_INTERPOLATE true
- //#define E5_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E6)
- #define E6_CURRENT 800
- #define E6_MICROSTEPS E0_MICROSTEPS
- #define E6_RSENSE 0.11
- #define E6_CHAIN_POS -1
- //#define E6_INTERPOLATE true
- //#define E6_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E7)
- #define E7_CURRENT 800
- #define E7_MICROSTEPS E0_MICROSTEPS
- #define E7_RSENSE 0.11
- #define E7_CHAIN_POS -1
- //#define E7_INTERPOLATE true
- //#define E7_HOLD_MULTIPLIER 0.5
- #endif
-
- /**
- * Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here.
- * The default pins can be found in your board's pins file.
- */
- //#define X_CS_PIN -1
- //#define Y_CS_PIN -1
- //#define Z_CS_PIN -1
- //#define X2_CS_PIN -1
- //#define Y2_CS_PIN -1
- //#define Z2_CS_PIN -1
- //#define Z3_CS_PIN -1
- //#define Z4_CS_PIN -1
- //#define I_CS_PIN -1
- //#define J_CS_PIN -1
- //#define K_CS_PIN -1
- //#define E0_CS_PIN -1
- //#define E1_CS_PIN -1
- //#define E2_CS_PIN -1
- //#define E3_CS_PIN -1
- //#define E4_CS_PIN -1
- //#define E5_CS_PIN -1
- //#define E6_CS_PIN -1
- //#define E7_CS_PIN -1
-
- /**
- * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
- * The default SW SPI pins are defined the respective pins files,
- * but you can override or define them here.
- */
- //#define TMC_USE_SW_SPI
- //#define TMC_SW_MOSI -1
- //#define TMC_SW_MISO -1
- //#define TMC_SW_SCK -1
-
- /**
- * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
- * Set the address using jumpers on pins MS1 and MS2.
- * Address | MS1 | MS2
- * 0 | LOW | LOW
- * 1 | HIGH | LOW
- * 2 | LOW | HIGH
- * 3 | HIGH | HIGH
- *
- * Set *_SERIAL_TX_PIN and *_SERIAL_RX_PIN to match for all drivers
- * on the same serial port, either here or in your board's pins file.
- */
- //#define X_SLAVE_ADDRESS 0
- //#define Y_SLAVE_ADDRESS 0
- //#define Z_SLAVE_ADDRESS 0
- //#define X2_SLAVE_ADDRESS 0
- //#define Y2_SLAVE_ADDRESS 0
- //#define Z2_SLAVE_ADDRESS 0
- //#define Z3_SLAVE_ADDRESS 0
- //#define Z4_SLAVE_ADDRESS 0
- //#define I_SLAVE_ADDRESS 0
- //#define J_SLAVE_ADDRESS 0
- //#define K_SLAVE_ADDRESS 0
- //#define E0_SLAVE_ADDRESS 0
- //#define E1_SLAVE_ADDRESS 0
- //#define E2_SLAVE_ADDRESS 0
- //#define E3_SLAVE_ADDRESS 0
- //#define E4_SLAVE_ADDRESS 0
- //#define E5_SLAVE_ADDRESS 0
- //#define E6_SLAVE_ADDRESS 0
- //#define E7_SLAVE_ADDRESS 0
-
- /**
- * Software enable
- *
- * Use for drivers that do not use a dedicated enable pin, but rather handle the same
- * function through a communication line such as SPI or UART.
- */
- //#define SOFTWARE_DRIVER_ENABLE
-
- /**
- * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
- * Use Trinamic's ultra quiet stepping mode.
- * When disabled, Marlin will use spreadCycle stepping mode.
- */
- #define STEALTHCHOP_XY
- #define STEALTHCHOP_Z
- #define STEALTHCHOP_I
- #define STEALTHCHOP_J
- #define STEALTHCHOP_K
- #define STEALTHCHOP_E
-
- /**
- * Optimize spreadCycle chopper parameters by using predefined parameter sets
- * or with the help of an example included in the library.
- * Provided parameter sets are
- * CHOPPER_DEFAULT_12V
- * CHOPPER_DEFAULT_19V
- * CHOPPER_DEFAULT_24V
- * CHOPPER_DEFAULT_36V
- * CHOPPER_09STEP_24V // 0.9 degree steppers (24V)
- * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Průša firmware for MK3 (24V)
- * CHOPPER_MARLIN_119 // Old defaults from Marlin v1.1.9
- *
- * Define your own with:
- * { , , hysteresis_start[1..8] }
- */
- #define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below)
- //#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below)
- //#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X
- //#define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below)
- //#define CHOPPER_TIMING_Y2 CHOPPER_TIMING_Y
- //#define CHOPPER_TIMING_Z CHOPPER_TIMING // For Z Axes (override below)
- //#define CHOPPER_TIMING_Z2 CHOPPER_TIMING_Z
- //#define CHOPPER_TIMING_Z3 CHOPPER_TIMING_Z
- //#define CHOPPER_TIMING_Z4 CHOPPER_TIMING_Z
- //#define CHOPPER_TIMING_I CHOPPER_TIMING
- //#define CHOPPER_TIMING_J CHOPPER_TIMING
- //#define CHOPPER_TIMING_K CHOPPER_TIMING
- //#define CHOPPER_TIMING_E CHOPPER_TIMING // For Extruders (override below)
- //#define CHOPPER_TIMING_E1 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E2 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E3 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E4 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E5 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E6 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E7 CHOPPER_TIMING_E
-
- /**
- * Monitor Trinamic drivers
- * for error conditions like overtemperature and short to ground.
- * To manage over-temp Marlin can decrease the driver current until the error condition clears.
- * Other detected conditions can be used to stop the current print.
- * Relevant G-codes:
- * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
- * M911 - Report stepper driver overtemperature pre-warn condition.
- * M912 - Clear stepper driver overtemperature pre-warn condition flag.
- * M122 - Report driver parameters (Requires TMC_DEBUG)
- */
- //#define MONITOR_DRIVER_STATUS
-
- #if ENABLED(MONITOR_DRIVER_STATUS)
- #define CURRENT_STEP_DOWN 50 // [mA]
- #define REPORT_CURRENT_CHANGE
- #define STOP_ON_ERROR
- #endif
-
- /**
- * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
- * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
- * This mode allows for faster movements at the expense of higher noise levels.
- * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
- * M913 X/Y/Z/E to live tune the setting
- */
- //#define HYBRID_THRESHOLD
-
- #define X_HYBRID_THRESHOLD 100 // [mm/s]
- #define X2_HYBRID_THRESHOLD 100
- #define Y_HYBRID_THRESHOLD 100
- #define Y2_HYBRID_THRESHOLD 100
- #define Z_HYBRID_THRESHOLD 3
- #define Z2_HYBRID_THRESHOLD 3
- #define Z3_HYBRID_THRESHOLD 3
- #define Z4_HYBRID_THRESHOLD 3
- #define I_HYBRID_THRESHOLD 3
- #define J_HYBRID_THRESHOLD 3
- #define K_HYBRID_THRESHOLD 3
- #define E0_HYBRID_THRESHOLD 30
- #define E1_HYBRID_THRESHOLD 30
- #define E2_HYBRID_THRESHOLD 30
- #define E3_HYBRID_THRESHOLD 30
- #define E4_HYBRID_THRESHOLD 30
- #define E5_HYBRID_THRESHOLD 30
- #define E6_HYBRID_THRESHOLD 30
- #define E7_HYBRID_THRESHOLD 30
-
- /**
- * Use StallGuard to home / probe X, Y, Z.
- *
- * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
- * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
- * X, Y, and Z homing will always be done in spreadCycle mode.
- *
- * X/Y/Z_STALL_SENSITIVITY is the default stall threshold.
- * Use M914 X Y Z to set the stall threshold at runtime:
- *
- * Sensitivity TMC2209 Others
- * HIGHEST 255 -64 (Too sensitive => False positive)
- * LOWEST 0 63 (Too insensitive => No trigger)
- *
- * It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }.
- *
- * SPI_ENDSTOPS *** Beta feature! *** TMC2130/TMC5160 Only ***
- * Poll the driver through SPI to determine load when homing.
- * Removes the need for a wire from DIAG1 to an endstop pin.
- *
- * IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when
- * homing and adds a guard period for endstop triggering.
- *
- * Comment *_STALL_SENSITIVITY to disable sensorless homing for that axis.
- */
- //#define SENSORLESS_HOMING // StallGuard capable drivers only
-
- #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
- // TMC2209: 0...255. TMC2130: -64...63
- #define X_STALL_SENSITIVITY 8
- #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
- #define Y_STALL_SENSITIVITY 8
- #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY
- //#define Z_STALL_SENSITIVITY 8
- //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY
- //#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY
- //#define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY
- //#define I_STALL_SENSITIVITY 8
- //#define J_STALL_SENSITIVITY 8
- //#define K_STALL_SENSITIVITY 8
- //#define SPI_ENDSTOPS // TMC2130 only
- //#define IMPROVE_HOMING_RELIABILITY
- #endif
-
- /**
- * TMC Homing stepper phase.
- *
- * Improve homing repeatability by homing to stepper coil's nearest absolute
- * phase position. Trinamic drivers use a stepper phase table with 1024 values
- * spanning 4 full steps with 256 positions each (ergo, 1024 positions).
- * Full step positions (128, 384, 640, 896) have the highest holding torque.
- *
- * Values from 0..1023, -1 to disable homing phase for that axis.
- */
- //#define TMC_HOME_PHASE { 896, 896, 896 }
-
- /**
- * Beta feature!
- * Create a 50/50 square wave step pulse optimal for stepper drivers.
- */
- //#define SQUARE_WAVE_STEPPING
-
- /**
- * Enable M122 debugging command for TMC stepper drivers.
- * M122 S0/1 will enable continuous reporting.
- */
- //#define TMC_DEBUG
-
- /**
- * You can set your own advanced settings by filling in predefined functions.
- * A list of available functions can be found on the library github page
- * https://github.com/teemuatlut/TMCStepper
- *
- * Example:
- * #define TMC_ADV() { \
- * stepperX.diag0_otpw(1); \
- * stepperY.intpol(0); \
- * }
- */
- #define TMC_ADV() { }
-
-#endif // HAS_TRINAMIC_CONFIG
-
-// @section L64XX
-
-/**
- * L64XX Stepper Driver options
- *
- * Arduino-L6470 library (0.8.0 or higher) is required.
- * https://github.com/ameyer/Arduino-L6470
- *
- * Requires the following to be defined in your pins_YOUR_BOARD file
- * L6470_CHAIN_SCK_PIN
- * L6470_CHAIN_MISO_PIN
- * L6470_CHAIN_MOSI_PIN
- * L6470_CHAIN_SS_PIN
- * ENABLE_RESET_L64XX_CHIPS(Q) where Q is 1 to enable and 0 to reset
- */
-
-#if HAS_L64XX
-
- //#define L6470_CHITCHAT // Display additional status info
-
- #if AXIS_IS_L64XX(X)
- #define X_MICROSTEPS 128 // Number of microsteps (VALID: 1, 2, 4, 8, 16, 32, 128) - L6474 max is 16
- #define X_OVERCURRENT 2000 // (mA) Current where the driver detects an over current
- // L6470 & L6474 - VALID: 375 x (1 - 16) - 6A max - rounds down
- // POWERSTEP01: VALID: 1000 x (1 - 32) - 32A max - rounds down
- #define X_STALLCURRENT 1500 // (mA) Current where the driver detects a stall (VALID: 31.25 * (1-128) - 4A max - rounds down)
- // L6470 & L6474 - VALID: 31.25 * (1-128) - 4A max - rounds down
- // POWERSTEP01: VALID: 200 x (1 - 32) - 6.4A max - rounds down
- // L6474 - STALLCURRENT setting is used to set the nominal (TVAL) current
- #define X_MAX_VOLTAGE 127 // 0-255, Maximum effective voltage seen by stepper - not used by L6474
- #define X_CHAIN_POS -1 // Position in SPI chain, 0=Not in chain, 1=Nearest MOSI
- #define X_SLEW_RATE 1 // 0-3, Slew 0 is slowest, 3 is fastest
- #endif
-
- #if AXIS_IS_L64XX(X2)
- #define X2_MICROSTEPS X_MICROSTEPS
- #define X2_OVERCURRENT 2000
- #define X2_STALLCURRENT 1500
- #define X2_MAX_VOLTAGE 127
- #define X2_CHAIN_POS -1
- #define X2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Y)
- #define Y_MICROSTEPS 128
- #define Y_OVERCURRENT 2000
- #define Y_STALLCURRENT 1500
- #define Y_MAX_VOLTAGE 127
- #define Y_CHAIN_POS -1
- #define Y_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Y2)
- #define Y2_MICROSTEPS Y_MICROSTEPS
- #define Y2_OVERCURRENT 2000
- #define Y2_STALLCURRENT 1500
- #define Y2_MAX_VOLTAGE 127
- #define Y2_CHAIN_POS -1
- #define Y2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z)
- #define Z_MICROSTEPS 128
- #define Z_OVERCURRENT 2000
- #define Z_STALLCURRENT 1500
- #define Z_MAX_VOLTAGE 127
- #define Z_CHAIN_POS -1
- #define Z_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z2)
- #define Z2_MICROSTEPS Z_MICROSTEPS
- #define Z2_OVERCURRENT 2000
- #define Z2_STALLCURRENT 1500
- #define Z2_MAX_VOLTAGE 127
- #define Z2_CHAIN_POS -1
- #define Z2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z3)
- #define Z3_MICROSTEPS Z_MICROSTEPS
- #define Z3_OVERCURRENT 2000
- #define Z3_STALLCURRENT 1500
- #define Z3_MAX_VOLTAGE 127
- #define Z3_CHAIN_POS -1
- #define Z3_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z4)
- #define Z4_MICROSTEPS Z_MICROSTEPS
- #define Z4_OVERCURRENT 2000
- #define Z4_STALLCURRENT 1500
- #define Z4_MAX_VOLTAGE 127
- #define Z4_CHAIN_POS -1
- #define Z4_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(I)
- #define I_MICROSTEPS 128
- #define I_OVERCURRENT 2000
- #define I_STALLCURRENT 1500
- #define I_MAX_VOLTAGE 127
- #define I_CHAIN_POS -1
- #define I_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(J)
- #define J_MICROSTEPS 128
- #define J_OVERCURRENT 2000
- #define J_STALLCURRENT 1500
- #define J_MAX_VOLTAGE 127
- #define J_CHAIN_POS -1
- #define J_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(K)
- #define K_MICROSTEPS 128
- #define K_OVERCURRENT 2000
- #define K_STALLCURRENT 1500
- #define K_MAX_VOLTAGE 127
- #define K_CHAIN_POS -1
- #define K_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E0)
- #define E0_MICROSTEPS 128
- #define E0_OVERCURRENT 2000
- #define E0_STALLCURRENT 1500
- #define E0_MAX_VOLTAGE 127
- #define E0_CHAIN_POS -1
- #define E0_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E1)
- #define E1_MICROSTEPS E0_MICROSTEPS
- #define E1_OVERCURRENT 2000
- #define E1_STALLCURRENT 1500
- #define E1_MAX_VOLTAGE 127
- #define E1_CHAIN_POS -1
- #define E1_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E2)
- #define E2_MICROSTEPS E0_MICROSTEPS
- #define E2_OVERCURRENT 2000
- #define E2_STALLCURRENT 1500
- #define E2_MAX_VOLTAGE 127
- #define E2_CHAIN_POS -1
- #define E2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E3)
- #define E3_MICROSTEPS E0_MICROSTEPS
- #define E3_OVERCURRENT 2000
- #define E3_STALLCURRENT 1500
- #define E3_MAX_VOLTAGE 127
- #define E3_CHAIN_POS -1
- #define E3_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E4)
- #define E4_MICROSTEPS E0_MICROSTEPS
- #define E4_OVERCURRENT 2000
- #define E4_STALLCURRENT 1500
- #define E4_MAX_VOLTAGE 127
- #define E4_CHAIN_POS -1
- #define E4_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E5)
- #define E5_MICROSTEPS E0_MICROSTEPS
- #define E5_OVERCURRENT 2000
- #define E5_STALLCURRENT 1500
- #define E5_MAX_VOLTAGE 127
- #define E5_CHAIN_POS -1
- #define E5_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E6)
- #define E6_MICROSTEPS E0_MICROSTEPS
- #define E6_OVERCURRENT 2000
- #define E6_STALLCURRENT 1500
- #define E6_MAX_VOLTAGE 127
- #define E6_CHAIN_POS -1
- #define E6_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E7)
- #define E7_MICROSTEPS E0_MICROSTEPS
- #define E7_OVERCURRENT 2000
- #define E7_STALLCURRENT 1500
- #define E7_MAX_VOLTAGE 127
- #define E7_CHAIN_POS -1
- #define E7_SLEW_RATE 1
- #endif
-
- /**
- * Monitor L6470 drivers for error conditions like over temperature and over current.
- * In the case of over temperature Marlin can decrease the drive until the error condition clears.
- * Other detected conditions can be used to stop the current print.
- * Relevant G-codes:
- * M906 - I1/2/3/4/5 Set or get motor drive level using axis codes X, Y, Z, E. Report values if no axis codes given.
- * I not present or I0 or I1 - X, Y, Z or E0
- * I2 - X2, Y2, Z2 or E1
- * I3 - Z3 or E3
- * I4 - Z4 or E4
- * I5 - E5
- * M916 - Increase drive level until get thermal warning
- * M917 - Find minimum current thresholds
- * M918 - Increase speed until max or error
- * M122 S0/1 - Report driver parameters
- */
- //#define MONITOR_L6470_DRIVER_STATUS
-
- #if ENABLED(MONITOR_L6470_DRIVER_STATUS)
- #define KVAL_HOLD_STEP_DOWN 1
- //#define L6470_STOP_ON_ERROR
- #endif
-
-#endif // HAS_L64XX
-
-// @section i2cbus
-
-//
-// I2C Master ID for LPC176x LCD and Digital Current control
-// Does not apply to other peripherals based on the Wire library.
-//
-//#define I2C_MASTER_ID 1 // Set a value from 0 to 2
-
-/**
- * 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 M260 commands with one B arg
- * M260 A99 ; Target slave address
- * M260 B77 ; M
- * M260 B97 ; a
- * M260 B114 ; r
- * M260 B108 ; l
- * M260 B105 ; i
- * M260 B110 ; n
- * M260 S1 ; Send the current buffer
- *
- * ; Example #2
- * ; Request 6 bytes from slave device with address 0x63 (99)
- * M261 A99 B5
- *
- * ; Example #3
- * ; Example serial output of a M261 request
- * echo:i2c-reply: from:99 bytes:5 data:hello
- */
-
-//#define EXPERIMENTAL_I2CBUS
-#if ENABLED(EXPERIMENTAL_I2CBUS)
- #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
-#endif
-
-// @section extras
-
-/**
- * Photo G-code
- * Add the M240 G-code to take a photo.
- * The photo can be triggered by a digital pin or a physical movement.
- */
-//#define PHOTO_GCODE
-#if ENABLED(PHOTO_GCODE)
- // A position to move to (and raise Z) before taking the photo
- //#define PHOTO_POSITION { X_MAX_POS - 5, Y_MAX_POS, 0 } // { xpos, ypos, zraise } (M240 X Y Z)
- //#define PHOTO_DELAY_MS 100 // (ms) Duration to pause before moving back (M240 P)
- //#define PHOTO_RETRACT_MM 6.5 // (mm) E retract/recover for the photo move (M240 R S)
-
- // Canon RC-1 or homebrew digital camera trigger
- // Data from: https://www.doc-diy.net/photo/rc-1_hacked/
- //#define PHOTOGRAPH_PIN 23
-
- // Canon Hack Development Kit
- // https://captain-slow.dk/2014/03/09/3d-printing-timelapses/
- //#define CHDK_PIN 4
-
- // Optional second move with delay to trigger the camera shutter
- //#define PHOTO_SWITCH_POSITION { X_MAX_POS, Y_MAX_POS } // { xpos, ypos } (M240 I J)
-
- // Duration to hold the switch or keep CHDK_PIN high
- //#define PHOTO_SWITCH_MS 50 // (ms) (M240 D)
-
- /**
- * PHOTO_PULSES_US may need adjustment depending on board and camera model.
- * Pin must be running at 48.4kHz.
- * Be sure to use a PHOTOGRAPH_PIN which can rise and fall quick enough.
- * (e.g., MKS SBase temp sensor pin was too slow, so used P1.23 on J8.)
- *
- * Example pulse data for Nikon: https://bit.ly/2FKD0Aq
- * IR Wiring: https://git.io/JvJf7
- */
- //#define PHOTO_PULSES_US { 2000, 27850, 400, 1580, 400, 3580, 400 } // (µs) Durations for each 48.4kHz oscillation
- #ifdef PHOTO_PULSES_US
- #define PHOTO_PULSE_DELAY_US 13 // (µs) Approximate duration of each HIGH and LOW pulse in the oscillation
- #endif
-#endif
-
-/**
- * Spindle & Laser control
- *
- * Add the M3, M4, and M5 commands to turn the spindle/laser on and off, and
- * to set spindle speed, spindle direction, and laser power.
- *
- * SuperPid is a router/spindle speed controller used in the CNC milling community.
- * Marlin can be used to turn the spindle on and off. It can also be used to set
- * the spindle speed from 5,000 to 30,000 RPM.
- *
- * You'll need to select a pin for the ON/OFF function and optionally choose a 0-5V
- * hardware PWM pin for the speed control and a pin for the rotation direction.
- *
- * See https://marlinfw.org/docs/configuration/2.0.9/laser_spindle.html for more config details.
- */
-//#define SPINDLE_FEATURE
-//#define LASER_FEATURE
-#if EITHER(SPINDLE_FEATURE, LASER_FEATURE)
- #define SPINDLE_LASER_ACTIVE_STATE LOW // Set to "HIGH" if SPINDLE_LASER_ENA_PIN is active HIGH
-
- #define SPINDLE_LASER_USE_PWM // Enable if your controller supports setting the speed/power
- #if ENABLED(SPINDLE_LASER_USE_PWM)
- #define SPINDLE_LASER_PWM_INVERT false // Set to "true" if the speed/power goes up when you want it to go slower
- #define SPINDLE_LASER_FREQUENCY 2500 // (Hz) Spindle/laser frequency (only on supported HALs: AVR, ESP32, and LPC)
- // ESP32: If SPINDLE_LASER_PWM_PIN is onboard then <=78125Hz. For I2S expander
- // the frequency determines the PWM resolution. 2500Hz = 0-100, 977Hz = 0-255, ...
- // (250000 / SPINDLE_LASER_FREQUENCY) = max value.
- #endif
-
- //#define AIR_EVACUATION // Cutter Vacuum / Laser Blower motor control with G-codes M10-M11
- #if ENABLED(AIR_EVACUATION)
- #define AIR_EVACUATION_ACTIVE LOW // Set to "HIGH" if the on/off function is active HIGH
- //#define AIR_EVACUATION_PIN 42 // Override the default Cutter Vacuum or Laser Blower pin
- #endif
-
- //#define AIR_ASSIST // Air Assist control with G-codes M8-M9
- #if ENABLED(AIR_ASSIST)
- #define AIR_ASSIST_ACTIVE LOW // Active state on air assist pin
- //#define AIR_ASSIST_PIN 44 // Override the default Air Assist pin
- #endif
-
- //#define SPINDLE_SERVO // A servo converting an angle to spindle power
- #ifdef SPINDLE_SERVO
- #define SPINDLE_SERVO_NR 0 // Index of servo used for spindle control
- #define SPINDLE_SERVO_MIN 10 // Minimum angle for servo spindle
- #endif
-
- /**
- * Speed / Power can be set ('M3 S') and displayed in terms of:
- * - PWM255 (S0 - S255)
- * - PERCENT (S0 - S100)
- * - RPM (S0 - S50000) Best for use with a spindle
- * - SERVO (S0 - S180)
- */
- #define CUTTER_POWER_UNIT PWM255
-
- /**
- * Relative Cutter Power
- * Normally, 'M3 O' sets
- * OCR power is relative to the range SPEED_POWER_MIN...SPEED_POWER_MAX.
- * so input powers of 0...255 correspond to SPEED_POWER_MIN...SPEED_POWER_MAX
- * instead of normal range (0 to SPEED_POWER_MAX).
- * Best used with (e.g.) SuperPID router controller: S0 = 5,000 RPM and S255 = 30,000 RPM
- */
- //#define CUTTER_POWER_RELATIVE // Set speed proportional to [SPEED_POWER_MIN...SPEED_POWER_MAX]
-
- #if ENABLED(SPINDLE_FEATURE)
- //#define SPINDLE_CHANGE_DIR // Enable if your spindle controller can change spindle direction
- #define SPINDLE_CHANGE_DIR_STOP // Enable if the spindle should stop before changing spin direction
- #define SPINDLE_INVERT_DIR false // Set to "true" if the spin direction is reversed
-
- #define SPINDLE_LASER_POWERUP_DELAY 5000 // (ms) Delay to allow the spindle/laser to come up to speed/power
- #define SPINDLE_LASER_POWERDOWN_DELAY 5000 // (ms) Delay to allow the spindle to stop
-
- /**
- * M3/M4 Power Equation
- *
- * Each tool uses different value ranges for speed / power control.
- * These parameters are used to convert between tool power units and PWM.
- *
- * Speed/Power = (PWMDC / 255 * 100 - SPEED_POWER_INTERCEPT) / SPEED_POWER_SLOPE
- * PWMDC = (spdpwr - SPEED_POWER_MIN) / (SPEED_POWER_MAX - SPEED_POWER_MIN) / SPEED_POWER_SLOPE
- */
- #if ENABLED(SPINDLE_LASER_USE_PWM)
- #define SPEED_POWER_INTERCEPT 0 // (%) 0-100 i.e., Minimum power percentage
- #define SPEED_POWER_MIN 5000 // (RPM)
- #define SPEED_POWER_MAX 30000 // (RPM) SuperPID router controller 0 - 30,000 RPM
- #define SPEED_POWER_STARTUP 25000 // (RPM) M3/M4 speed/power default (with no arguments)
- #endif
-
- #else
-
- #if ENABLED(SPINDLE_LASER_USE_PWM)
- #define SPEED_POWER_INTERCEPT 0 // (%) 0-100 i.e., Minimum power percentage
- #define SPEED_POWER_MIN 0 // (%) 0-100
- #define SPEED_POWER_MAX 100 // (%) 0-100
- #define SPEED_POWER_STARTUP 80 // (%) M3/M4 speed/power default (with no arguments)
- #endif
-
- // Define the minimum and maximum test pulse time values for a laser test fire function
- #define LASER_TEST_PULSE_MIN 1 // (ms) Used with Laser Control Menu
- #define LASER_TEST_PULSE_MAX 999 // (ms) Caution: Menu may not show more than 3 characters
-
- #define SPINDLE_LASER_POWERUP_DELAY 50 // (ms) Delay to allow the spindle/laser to come up to speed/power
- #define SPINDLE_LASER_POWERDOWN_DELAY 50 // (ms) Delay to allow the spindle to stop
-
- /**
- * Laser Safety Timeout
- *
- * The laser should be turned off when there is no movement for a period of time.
- * Consider material flammability, cut rate, and G-code order when setting this
- * value. Too low and it could turn off during a very slow move; too high and
- * the material could ignite.
- */
- #define LASER_SAFETY_TIMEOUT_MS 1000 // (ms)
-
- /**
- * Any M3 or G1/2/3/5 command with the 'I' parameter enables continuous inline power mode.
- *
- * e.g., 'M3 I' enables continuous inline power which is processed by the planner.
- * Power is stored in move blocks and applied when blocks are processed by the Stepper ISR.
- *
- * 'M4 I' sets dynamic mode which uses the current feedrate to calculate a laser power OCR value.
- *
- * Any move in dynamic mode will use the current feedrate to calculate the laser power.
- * Feed rates are set by the F parameter of a move command e.g. G1 X0 Y10 F6000
- * Laser power would be calculated by bit shifting off 8 LSB's. In binary this is div 256.
- * The calculation gives us ocr values from 0 to 255, values over F65535 will be set as 255 .
- * More refined power control such as compesation for accell/decell will be addressed in future releases.
- *
- * M5 I clears inline mode and set power to 0, M5 sets the power output to 0 but leaves inline mode on.
- */
-
- /**
- * Enable M3 commands for laser mode inline power planner syncing.
- * This feature enables any M3 S-value to be injected into the block buffers while in
- * CUTTER_MODE_CONTINUOUS. The option allows M3 laser power to be commited without waiting
- * for a planner syncronization
- */
- //#define LASER_POWER_SYNC
-
- /**
- * Scale the laser's power in proportion to the movement rate.
- *
- * - Sets the entry power proportional to the entry speed over the nominal speed.
- * - Ramps the power up every N steps to approximate the speed trapezoid.
- * - Due to the limited power resolution this is only approximate.
- */
- //#define LASER_POWER_TRAP
-
- //
- // Laser I2C Ammeter (High precision INA226 low/high side module)
- //
- //#define I2C_AMMETER
- #if ENABLED(I2C_AMMETER)
- #define I2C_AMMETER_IMAX 0.1 // (Amps) Calibration value for the expected current range
- #define I2C_AMMETER_SHUNT_RESISTOR 0.1 // (Ohms) Calibration shunt resistor value
- #endif
-
- //
- // Laser Coolant Flow Meter
- //
- //#define LASER_COOLANT_FLOW_METER
- #if ENABLED(LASER_COOLANT_FLOW_METER)
- #define FLOWMETER_PIN 20 // Requires an external interrupt-enabled pin (e.g., RAMPS 2,3,18,19,20,21)
- #define FLOWMETER_PPL 5880 // (pulses/liter) Flow meter pulses-per-liter on the input pin
- #define FLOWMETER_INTERVAL 1000 // (ms) Flow rate calculation interval in milliseconds
- #define FLOWMETER_SAFETY // Prevent running the laser without the minimum flow rate set below
- #if ENABLED(FLOWMETER_SAFETY)
- #define FLOWMETER_MIN_LITERS_PER_MINUTE 1.5 // (liters/min) Minimum flow required when enabled
- #endif
- #endif
-
- #endif
-#endif // SPINDLE_FEATURE || LASER_FEATURE
-
-/**
- * Synchronous Laser Control with M106/M107
- *
- * Marlin normally applies M106/M107 fan speeds at a time "soon after" processing
- * a planner block. This is too inaccurate for a PWM/TTL laser attached to the fan
- * header (as with some add-on laser kits). Enable this option to set fan/laser
- * speeds with much more exact timing for improved print fidelity.
- *
- * NOTE: This option sacrifices some cooling fan speed options.
- */
-//#define LASER_SYNCHRONOUS_M106_M107
-
-/**
- * Coolant Control
- *
- * Add the M7, M8, and M9 commands to turn mist or flood coolant on and off.
- *
- * Note: COOLANT_MIST_PIN and/or COOLANT_FLOOD_PIN must also be defined.
- */
-//#define COOLANT_CONTROL
-#if ENABLED(COOLANT_CONTROL)
- #define COOLANT_MIST // Enable if mist coolant is present
- #define COOLANT_FLOOD // Enable if flood coolant is present
- #define COOLANT_MIST_INVERT false // Set "true" if the on/off function is reversed
- #define COOLANT_FLOOD_INVERT false // Set "true" if the on/off function is reversed
-#endif
-
-/**
- * Filament Width Sensor
- *
- * Measures the filament width in real-time and adjusts
- * flow rate to compensate for any irregularities.
- *
- * Also allows the measured filament diameter to set the
- * extrusion rate, so the slicer only has to specify the
- * volume.
- *
- * Only a single extruder is supported at this time.
- *
- * 34 RAMPS_14 : Analog input 5 on the AUX2 connector
- * 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E)
- * 301 RAMBO : Analog input 3
- *
- * Note: May require analog pins to be defined for other boards.
- */
-//#define FILAMENT_WIDTH_SENSOR
-
-#if ENABLED(FILAMENT_WIDTH_SENSOR)
- #define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor. :[0,1,2,3,4]
- #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber
-
- #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it
- #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM.
-
- #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially
-
- // Display filament width on the LCD status line. Status messages will expire after 5 seconds.
- //#define FILAMENT_LCD_DISPLAY
-#endif
-
-/**
- * Power Monitor
- * Monitor voltage (V) and/or current (A), and -when possible- power (W)
- *
- * Read and configure with M430
- *
- * The current sensor feeds DC voltage (relative to the measured current) to an analog pin
- * The voltage sensor feeds DC voltage (relative to the measured voltage) to an analog pin
- */
-//#define POWER_MONITOR_CURRENT // Monitor the system current
-//#define POWER_MONITOR_VOLTAGE // Monitor the system voltage
-
-#if ENABLED(POWER_MONITOR_CURRENT)
- #define POWER_MONITOR_VOLTS_PER_AMP 0.05000 // Input voltage to the MCU analog pin per amp - DO NOT apply more than ADC_VREF!
- #define POWER_MONITOR_CURRENT_OFFSET 0 // Offset (in amps) applied to the calculated current
- #define POWER_MONITOR_FIXED_VOLTAGE 13.6 // Voltage for a current sensor with no voltage sensor (for power display)
-#endif
-
-#if ENABLED(POWER_MONITOR_VOLTAGE)
- #define POWER_MONITOR_VOLTS_PER_VOLT 0.077933 // Input voltage to the MCU analog pin per volt - DO NOT apply more than ADC_VREF!
- #define POWER_MONITOR_VOLTAGE_OFFSET 0 // Offset (in volts) applied to the calculated voltage
-#endif
-
-/**
- * Stepper Driver Anti-SNAFU Protection
- *
- * If the SAFE_POWER_PIN is defined for your board, Marlin will check
- * that stepper drivers are properly plugged in before applying power.
- * Disable protection if your stepper drivers don't support the feature.
- */
-//#define DISABLE_DRIVER_SAFE_POWER_PROTECT
-
-/**
- * CNC Coordinate Systems
- *
- * Enables G53 and G54-G59.3 commands to select coordinate systems
- * and G92.1 to reset the workspace to native machine space.
- */
-//#define CNC_COORDINATE_SYSTEMS
-
-/**
- * Auto-report fan speed with M123 S
- * Requires fans with tachometer pins
- */
-//#define AUTO_REPORT_FANS
-
-/**
- * Auto-report temperatures with M155 S
- */
-#define AUTO_REPORT_TEMPERATURES
-#if ENABLED(AUTO_REPORT_TEMPERATURES) && TEMP_SENSOR_REDUNDANT
- //#define AUTO_REPORT_REDUNDANT // Include the "R" sensor in the auto-report
-#endif
-
-/**
- * Auto-report position with M154 S
- */
-//#define AUTO_REPORT_POSITION
-
-/**
- * Include capabilities in M115 output
- */
-#define EXTENDED_CAPABILITIES_REPORT
-#if ENABLED(EXTENDED_CAPABILITIES_REPORT)
- //#define M115_GEOMETRY_REPORT
-#endif
-
-/**
- * Expected Printer Check
- * Add the M16 G-code to compare a string to the MACHINE_NAME.
- * M16 with a non-matching string causes the printer to halt.
- */
-//#define EXPECTED_PRINTER_CHECK
-
-/**
- * Disable all Volumetric extrusion options
- */
-//#define NO_VOLUMETRICS
-
-#if DISABLED(NO_VOLUMETRICS)
- /**
- * Volumetric extrusion default state
- * Activate to make volumetric extrusion the default method,
- * with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter.
- *
- * M200 D0 to disable, M200 Dn to set a new diameter (and enable volumetric).
- * M200 S0/S1 to disable/enable volumetric extrusion.
- */
- //#define VOLUMETRIC_DEFAULT_ON
-
- //#define VOLUMETRIC_EXTRUDER_LIMIT
- #if ENABLED(VOLUMETRIC_EXTRUDER_LIMIT)
- /**
- * Default volumetric extrusion limit in cubic mm per second (mm^3/sec).
- * This factory setting applies to all extruders.
- * Use 'M200 [T] L' to override and 'M502' to reset.
- * A non-zero value activates Volume-based Extrusion Limiting.
- */
- #define DEFAULT_VOLUMETRIC_EXTRUDER_LIMIT 0.00 // (mm^3/sec)
- #endif
-#endif
-
-/**
- * Enable this option for a leaner build of Marlin that removes all
- * workspace offsets, simplifying coordinate transformations, leveling, etc.
- *
- * - M206 and M428 are disabled.
- * - G92 will revert to its behavior from Marlin 1.0.
- */
-//#define NO_WORKSPACE_OFFSETS
-
-// Extra options for the M114 "Current Position" report
-//#define M114_DETAIL // Use 'M114` for details to check planner calculations
-//#define M114_REALTIME // Real current position based on forward kinematics
-//#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed.
-
-//#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others)
-
-/**
- * Spend 28 bytes of SRAM to optimize the G-code parser
- */
-#define FASTER_GCODE_PARSER
-
-#if ENABLED(FASTER_GCODE_PARSER)
- //#define GCODE_QUOTED_STRINGS // Support for quoted string parameters
-#endif
-
-// Support for MeatPack G-code compression (https://github.com/scottmudge/OctoPrint-MeatPack)
-//#define MEATPACK_ON_SERIAL_PORT_1
-//#define MEATPACK_ON_SERIAL_PORT_2
-
-//#define GCODE_CASE_INSENSITIVE // Accept G-code sent to the firmware in lowercase
-
-//#define REPETIER_GCODE_M360 // Add commands originally from Repetier FW
-
-/**
- * CNC G-code options
- * Support CNC-style G-code dialects used by laser cutters, drawing machine cams, etc.
- * Note that G0 feedrates should be used with care for 3D printing (if used at all).
- * High feedrates may cause ringing and harm print quality.
- */
-//#define PAREN_COMMENTS // Support for parentheses-delimited comments
-//#define GCODE_MOTION_MODES // Remember the motion mode (G0 G1 G2 G3 G5 G38.X) and apply for X Y Z E F, etc.
-
-// Enable and set a (default) feedrate for all G0 moves
-//#define G0_FEEDRATE 3000 // (mm/min)
-#ifdef G0_FEEDRATE
- //#define VARIABLE_G0_FEEDRATE // The G0 feedrate is set by F in G0 motion mode
-#endif
-
-/**
- * Startup commands
- *
- * Execute certain G-code commands immediately after power-on.
- */
-//#define STARTUP_COMMANDS "M17 Z"
-
-/**
- * G-code Macros
- *
- * Add G-codes M810-M819 to define and run G-code macros.
- * Macros are not saved to EEPROM.
- */
-//#define GCODE_MACROS
-#if ENABLED(GCODE_MACROS)
- #define GCODE_MACROS_SLOTS 5 // Up to 10 may be used
- #define GCODE_MACROS_SLOT_SIZE 50 // Maximum length of a single macro
-#endif
-
-/**
- * User-defined menu items to run custom G-code.
- * Up to 25 may be defined, but the actual number is LCD-dependent.
- */
-
-// Custom Menu: Main Menu
-//#define CUSTOM_MENU_MAIN
-#if ENABLED(CUSTOM_MENU_MAIN)
- //#define CUSTOM_MENU_MAIN_TITLE "Custom Commands"
- #define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done"
- #define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK
- //#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script
- #define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle
-
- #define MAIN_MENU_ITEM_1_DESC "Home & UBL Info"
- #define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W"
- //#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
-
- #define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL
- #define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
- //#define MAIN_MENU_ITEM_2_CONFIRM
-
- //#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL
- //#define MAIN_MENU_ITEM_3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
- //#define MAIN_MENU_ITEM_3_CONFIRM
-
- //#define MAIN_MENU_ITEM_4_DESC "Heat Bed/Home/Level"
- //#define MAIN_MENU_ITEM_4_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
- //#define MAIN_MENU_ITEM_4_CONFIRM
-
- //#define MAIN_MENU_ITEM_5_DESC "Home & Info"
- //#define MAIN_MENU_ITEM_5_GCODE "G28\nM503"
- //#define MAIN_MENU_ITEM_5_CONFIRM
-#endif
-
-// Custom Menu: Configuration Menu
-//#define CUSTOM_MENU_CONFIG
-#if ENABLED(CUSTOM_MENU_CONFIG)
- //#define CUSTOM_MENU_CONFIG_TITLE "Custom Commands"
- #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M117 Wireless Script Done"
- #define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK
- //#define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script
- #define CUSTOM_MENU_CONFIG_ONLY_IDLE // Only show custom menu when the machine is idle
-
- #define CONFIG_MENU_ITEM_1_DESC "Wifi ON"
- #define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678"
- //#define CONFIG_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
-
- #define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON"
- #define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678"
- //#define CONFIG_MENU_ITEM_2_CONFIRM
-
- //#define CONFIG_MENU_ITEM_3_DESC "Radio OFF"
- //#define CONFIG_MENU_ITEM_3_GCODE "M118 [ESP110] OFF pwd=12345678"
- //#define CONFIG_MENU_ITEM_3_CONFIRM
-
- //#define CONFIG_MENU_ITEM_4_DESC "Wifi ????"
- //#define CONFIG_MENU_ITEM_4_GCODE "M118 ????"
- //#define CONFIG_MENU_ITEM_4_CONFIRM
-
- //#define CONFIG_MENU_ITEM_5_DESC "Wifi ????"
- //#define CONFIG_MENU_ITEM_5_GCODE "M118 ????"
- //#define CONFIG_MENU_ITEM_5_CONFIRM
-#endif
-
-/**
- * User-defined buttons to run custom G-code.
- * Up to 25 may be defined.
- */
-//#define CUSTOM_USER_BUTTONS
-#if ENABLED(CUSTOM_USER_BUTTONS)
- //#define BUTTON1_PIN -1
- #if PIN_EXISTS(BUTTON1)
- #define BUTTON1_HIT_STATE LOW // State of the triggered button. NC=LOW. NO=HIGH.
- #define BUTTON1_WHEN_PRINTING false // Button allowed to trigger during printing?
- #define BUTTON1_GCODE "G28"
- #define BUTTON1_DESC "Homing" // Optional string to set the LCD status
- #endif
-
- //#define BUTTON2_PIN -1
- #if PIN_EXISTS(BUTTON2)
- #define BUTTON2_HIT_STATE LOW
- #define BUTTON2_WHEN_PRINTING false
- #define BUTTON2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
- #define BUTTON2_DESC "Preheat for " PREHEAT_1_LABEL
- #endif
-
- //#define BUTTON3_PIN -1
- #if PIN_EXISTS(BUTTON3)
- #define BUTTON3_HIT_STATE LOW
- #define BUTTON3_WHEN_PRINTING false
- #define BUTTON3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
- #define BUTTON3_DESC "Preheat for " PREHEAT_2_LABEL
- #endif
-#endif
-
-/**
- * Host Action Commands
- *
- * Define host streamer action commands in compliance with the standard.
- *
- * See https://reprap.org/wiki/G-code#Action_commands
- * Common commands ........ poweroff, pause, paused, resume, resumed, cancel
- * G29_RETRY_AND_RECOVER .. probe_rewipe, probe_failed
- *
- * Some features add reason codes to extend these commands.
- *
- * Host Prompt Support enables Marlin to use the host for user prompts so
- * filament runout and other processes can be managed from the host side.
- */
-//#define HOST_ACTION_COMMANDS
-#if ENABLED(HOST_ACTION_COMMANDS)
- //#define HOST_PAUSE_M76 // Tell the host to pause in response to M76
- //#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback
- #if ENABLED(HOST_PROMPT_SUPPORT)
- //#define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications
- #endif
- //#define HOST_START_MENU_ITEM // Add a menu item that tells the host to start
- //#define HOST_SHUTDOWN_MENU_ITEM // Add a menu item that tells the host to shut down
-#endif
-
-/**
- * Cancel Objects
- *
- * Implement M486 to allow Marlin to skip objects
- */
-//#define CANCEL_OBJECTS
-#if ENABLED(CANCEL_OBJECTS)
- #define CANCEL_OBJECTS_REPORTING // Emit the current object as a status message
-#endif
-
-/**
- * I2C position encoders for closed loop control.
- * Developed by Chris Barr at Aus3D.
- *
- * Wiki: https://wiki.aus3d.com.au/Magnetic_Encoder
- * Github: https://github.com/Aus3D/MagneticEncoder
- *
- * Supplier: https://aus3d.com.au/magnetic-encoder-module
- * Alternative Supplier: https://reliabuild3d.com/
- *
- * Reliabuild encoders have been modified to improve reliability.
- */
-
-//#define I2C_POSITION_ENCODERS
-#if ENABLED(I2C_POSITION_ENCODERS)
-
- #define I2CPE_ENCODER_CNT 1 // The number of encoders installed; max of 5
- // encoders supported currently.
-
- #define I2CPE_ENC_1_ADDR I2CPE_PRESET_ADDR_X // I2C address of the encoder. 30-200.
- #define I2CPE_ENC_1_AXIS X_AXIS // Axis the encoder module is installed on. _AXIS.
- #define I2CPE_ENC_1_TYPE I2CPE_ENC_TYPE_LINEAR // Type of encoder: I2CPE_ENC_TYPE_LINEAR -or-
- // I2CPE_ENC_TYPE_ROTARY.
- #define I2CPE_ENC_1_TICKS_UNIT 2048 // 1024 for magnetic strips with 2mm poles; 2048 for
- // 1mm poles. For linear encoders this is ticks / mm,
- // for rotary encoders this is ticks / revolution.
- //#define I2CPE_ENC_1_TICKS_REV (16 * 200) // Only needed for rotary encoders; number of stepper
- // steps per full revolution (motor steps/rev * microstepping)
- //#define I2CPE_ENC_1_INVERT // Invert the direction of axis travel.
- #define I2CPE_ENC_1_EC_METHOD I2CPE_ECM_MICROSTEP // Type of error error correction.
- #define I2CPE_ENC_1_EC_THRESH 0.10 // Threshold size for error (in mm) above which the
- // printer will attempt to correct the error; errors
- // smaller than this are ignored to minimize effects of
- // measurement noise / latency (filter).
-
- #define I2CPE_ENC_2_ADDR I2CPE_PRESET_ADDR_Y // Same as above, but for encoder 2.
- #define I2CPE_ENC_2_AXIS Y_AXIS
- #define I2CPE_ENC_2_TYPE I2CPE_ENC_TYPE_LINEAR
- #define I2CPE_ENC_2_TICKS_UNIT 2048
- //#define I2CPE_ENC_2_TICKS_REV (16 * 200)
- //#define I2CPE_ENC_2_INVERT
- #define I2CPE_ENC_2_EC_METHOD I2CPE_ECM_MICROSTEP
- #define I2CPE_ENC_2_EC_THRESH 0.10
-
- #define I2CPE_ENC_3_ADDR I2CPE_PRESET_ADDR_Z // Encoder 3. Add additional configuration options
- #define I2CPE_ENC_3_AXIS Z_AXIS // as above, or use defaults below.
-
- #define I2CPE_ENC_4_ADDR I2CPE_PRESET_ADDR_E // Encoder 4.
- #define I2CPE_ENC_4_AXIS E_AXIS
-
- #define I2CPE_ENC_5_ADDR 34 // Encoder 5.
- #define I2CPE_ENC_5_AXIS E_AXIS
-
- // Default settings for encoders which are enabled, but without settings configured above.
- #define I2CPE_DEF_TYPE I2CPE_ENC_TYPE_LINEAR
- #define I2CPE_DEF_ENC_TICKS_UNIT 2048
- #define I2CPE_DEF_TICKS_REV (16 * 200)
- #define I2CPE_DEF_EC_METHOD I2CPE_ECM_NONE
- #define I2CPE_DEF_EC_THRESH 0.1
-
- //#define I2CPE_ERR_THRESH_ABORT 100.0 // Threshold size for error (in mm) error on any given
- // axis after which the printer will abort. Comment out to
- // disable abort behavior.
-
- #define I2CPE_TIME_TRUSTED 10000 // After an encoder fault, there must be no further fault
- // for this amount of time (in ms) before the encoder
- // is trusted again.
-
- /**
- * Position is checked every time a new command is executed from the buffer but during long moves,
- * this setting determines the minimum update time between checks. A value of 100 works well with
- * error rolling average when attempting to correct only for skips and not for vibration.
- */
- #define I2CPE_MIN_UPD_TIME_MS 4 // (ms) Minimum time between encoder checks.
-
- // Use a rolling average to identify persistent errors that indicate skips, as opposed to vibration and noise.
- #define I2CPE_ERR_ROLLING_AVERAGE
-
-#endif // I2C_POSITION_ENCODERS
-
-/**
- * Analog Joystick(s)
- */
-//#define JOYSTICK
-#if ENABLED(JOYSTICK)
- #define JOY_X_PIN 5 // RAMPS: Suggested pin A5 on AUX2
- #define JOY_Y_PIN 10 // RAMPS: Suggested pin A10 on AUX2
- #define JOY_Z_PIN 12 // RAMPS: Suggested pin A12 on AUX2
- #define JOY_EN_PIN 44 // RAMPS: Suggested pin D44 on AUX2
-
- //#define INVERT_JOY_X // Enable if X direction is reversed
- //#define INVERT_JOY_Y // Enable if Y direction is reversed
- //#define INVERT_JOY_Z // Enable if Z direction is reversed
-
- // Use M119 with JOYSTICK_DEBUG to find reasonable values after connecting:
- #define JOY_X_LIMITS { 5600, 8190-100, 8190+100, 10800 } // min, deadzone start, deadzone end, max
- #define JOY_Y_LIMITS { 5600, 8250-100, 8250+100, 11000 }
- #define JOY_Z_LIMITS { 4800, 8080-100, 8080+100, 11550 }
- //#define JOYSTICK_DEBUG
-#endif
-
-/**
- * Mechanical Gantry Calibration
- * Modern replacement for the Prusa TMC_Z_CALIBRATION.
- * Adds capability to work with any adjustable current drivers.
- * Implemented as G34 because M915 is deprecated.
- */
-//#define MECHANICAL_GANTRY_CALIBRATION
-#if ENABLED(MECHANICAL_GANTRY_CALIBRATION)
- #define GANTRY_CALIBRATION_CURRENT 600 // Default calibration current in ma
- #define GANTRY_CALIBRATION_EXTRA_HEIGHT 15 // Extra distance in mm past Z_###_POS to move
- #define GANTRY_CALIBRATION_FEEDRATE 500 // Feedrate for correction move
- //#define GANTRY_CALIBRATION_TO_MIN // Enable to calibrate Z in the MIN direction
-
- //#define GANTRY_CALIBRATION_SAFE_POSITION XY_CENTER // Safe position for nozzle
- //#define GANTRY_CALIBRATION_XY_PARK_FEEDRATE 3000 // XY Park Feedrate - MMM
- //#define GANTRY_CALIBRATION_COMMANDS_PRE ""
- #define GANTRY_CALIBRATION_COMMANDS_POST "G28" // G28 highly recommended to ensure an accurate position
-#endif
-
-/**
- * Instant freeze / unfreeze functionality
- * Potentially useful for emergency stop that allows being resumed.
- */
-//#define FREEZE_FEATURE
-#if ENABLED(FREEZE_FEATURE)
- //#define FREEZE_PIN 41 // Override the default (KILL) pin here
- #define FREEZE_STATE LOW // State of pin indicating freeze
-#endif
-
-/**
- * MAX7219 Debug Matrix
- *
- * Add support for a low-cost 8x8 LED Matrix based on the Max7219 chip as a realtime status display.
- * Requires 3 signal wires. Some useful debug options are included to demonstrate its usage.
- */
-//#define MAX7219_DEBUG
-#if ENABLED(MAX7219_DEBUG)
- #define MAX7219_CLK_PIN 64
- #define MAX7219_DIN_PIN 57
- #define MAX7219_LOAD_PIN 44
-
- //#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
- #define MAX7219_INIT_TEST 2 // Test pattern at startup: 0=none, 1=sweep, 2=spiral
- #define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
- #define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
- // connector at: right=0 bottom=-90 top=90 left=180
- //#define MAX7219_REVERSE_ORDER // The individual LED matrix units may be in reversed order
- //#define MAX7219_SIDE_BY_SIDE // Big chip+matrix boards can be chained side-by-side
-
- /**
- * Sample debug features
- * If you add more debug displays, be careful to avoid conflicts!
- */
- #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning
- #define MAX7219_DEBUG_PLANNER_HEAD 3 // Show the planner queue head position on this and the next LED matrix row
- #define MAX7219_DEBUG_PLANNER_TAIL 5 // Show the planner queue tail position on this and the next LED matrix row
-
- #define MAX7219_DEBUG_PLANNER_QUEUE 0 // Show the current planner queue depth on this and the next LED matrix row
- // If you experience stuttering, reboots, etc. this option can reveal how
- // tweaks made to the configuration are affecting the printer in real-time.
-#endif
-
-/**
- * NanoDLP Sync support
- *
- * Support for Synchronized Z moves when used with NanoDLP. G0/G1 axis moves will
- * output a "Z_move_comp" string to enable synchronization with DLP projector exposure.
- * This feature allows you to use [[WaitForDoneMessage]] instead of M400 commands.
- */
-//#define NANODLP_Z_SYNC
-#if ENABLED(NANODLP_Z_SYNC)
- //#define NANODLP_ALL_AXIS // Send a "Z_move_comp" report for any axis move (not just Z).
-#endif
-
-/**
- * Ethernet. Use M552 to enable and set the IP address.
- */
-#if HAS_ETHERNET
- #define MAC_ADDRESS { 0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0x0D } // A MAC address unique to your network
-#endif
-
-/**
- * WiFi Support (Espressif ESP32 WiFi)
- */
-//#define WIFISUPPORT // Marlin embedded WiFi managenent
-//#define ESP3D_WIFISUPPORT // ESP3D Library WiFi management (https://github.com/luc-github/ESP3DLib)
-
-#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
- //#define WEBSUPPORT // Start a webserver (which may include auto-discovery)
- //#define OTASUPPORT // Support over-the-air firmware updates
- //#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host
-
- /**
- * To set a default WiFi SSID / Password, create a file called Configuration_Secure.h with
- * the following defines, customized for your network. This specific file is excluded via
- * .gitignore to prevent it from accidentally leaking to the public.
- *
- * #define WIFI_SSID "WiFi SSID"
- * #define WIFI_PWD "WiFi Password"
- */
- //#include "Configuration_Secure.h" // External file with WiFi SSID / Password
-#endif
-
-/**
- * Průša Multi-Material Unit (MMU)
- * Enable in Configuration.h
- *
- * These devices allow a single stepper driver on the board to drive
- * multi-material feeders with any number of stepper motors.
- */
-#if HAS_PRUSA_MMU1
- /**
- * This option only allows the multiplexer to switch on tool-change.
- * Additional options to configure custom E moves are pending.
- *
- * Override the default DIO selector pins here, if needed.
- * Some pins files may provide defaults for these pins.
- */
- //#define E_MUX0_PIN 40 // Always Required
- //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs
- //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs
-#elif HAS_PRUSA_MMU2
- // Serial port used for communication with MMU2.
- #define MMU2_SERIAL_PORT 2
-
- // Use hardware reset for MMU if a pin is defined for it
- //#define MMU2_RST_PIN 23
-
- // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
- //#define MMU2_MODE_12V
-
- // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
- #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
-
- // Add an LCD menu for MMU2
- //#define MMU2_MENUS
- #if EITHER(MMU2_MENUS, HAS_PRUSA_MMU2S)
- // Settings for filament load / unload from the LCD menu.
- // This is for Průša MK3-style extruders. Customize for your hardware.
- #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
- #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
- { 7.2, 1145 }, \
- { 14.4, 871 }, \
- { 36.0, 1393 }, \
- { 14.4, 871 }, \
- { 50.0, 198 }
-
- #define MMU2_RAMMING_SEQUENCE \
- { 1.0, 1000 }, \
- { 1.0, 1500 }, \
- { 2.0, 2000 }, \
- { 1.5, 3000 }, \
- { 2.5, 4000 }, \
- { -15.0, 5000 }, \
- { -14.0, 1200 }, \
- { -6.0, 600 }, \
- { 10.0, 700 }, \
- { -10.0, 400 }, \
- { -50.0, 2000 }
- #endif
-
- /**
- * Using a sensor like the MMU2S
- * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S.
- * See https://help.prusa3d.com/en/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560, step 11
- */
- #if HAS_PRUSA_MMU2S
- #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries)
-
- #define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min)
- #define MMU2_CAN_LOAD_SEQUENCE \
- { 0.1, MMU2_CAN_LOAD_FEEDRATE }, \
- { 60.0, MMU2_CAN_LOAD_FEEDRATE }, \
- { -52.0, MMU2_CAN_LOAD_FEEDRATE }
-
- #define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values
- #define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation
-
- #define MMU2_CAN_LOAD_INCREMENT 0.2 // (mm) To reuse within MMU2 module
- #define MMU2_CAN_LOAD_INCREMENT_SEQUENCE \
- { -MMU2_CAN_LOAD_INCREMENT, MMU2_CAN_LOAD_FEEDRATE }
-
- #else
-
- /**
- * MMU1 Extruder Sensor
- *
- * Support for a Průša (or other) IR Sensor to detect filament near the extruder
- * and make loading more reliable. Suitable for an extruder equipped with a filament
- * sensor less than 38mm from the gears.
- *
- * During loading the extruder will stop when the sensor is triggered, then do a last
- * move up to the gears. If no filament is detected, the MMU2 can make some more attempts.
- * If all attempts fail, a filament runout will be triggered.
- */
- //#define MMU_EXTRUDER_SENSOR
- #if ENABLED(MMU_EXTRUDER_SENSOR)
- #define MMU_LOADING_ATTEMPTS_NR 5 // max. number of attempts to load filament if first load fail
- #endif
-
- #endif
-
- //#define MMU2_DEBUG // Write debug info to serial output
-
-#endif // HAS_PRUSA_MMU2
-
-/**
- * Advanced Print Counter settings
- */
-#if ENABLED(PRINTCOUNTER)
- #define SERVICE_WARNING_BUZZES 3
- // Activate up to 3 service interval watchdogs
- //#define SERVICE_NAME_1 "Service S"
- //#define SERVICE_INTERVAL_1 100 // print hours
- //#define SERVICE_NAME_2 "Service L"
- //#define SERVICE_INTERVAL_2 200 // print hours
- //#define SERVICE_NAME_3 "Service 3"
- //#define SERVICE_INTERVAL_3 1 // print hours
-#endif
-
-// @section develop
-
-//
-// M100 Free Memory Watcher to debug memory usage
-//
-//#define M100_FREE_MEMORY_WATCHER
-
-//
-// M42 - Set pin states
-//
-//#define DIRECT_PIN_CONTROL
-
-//
-// M43 - display pin status, toggle pins, watch pins, watch endstops & toggle LED, test servo probe
-//
-//#define PINS_DEBUGGING
-
-// Enable Marlin dev mode which adds some special commands
-//#define MARLIN_DEV_MODE
-
-#if ENABLED(MARLIN_DEV_MODE)
- /**
- * D576 - Buffer Monitoring
- * To help diagnose print quality issues stemming from empty command buffers.
- */
- //#define BUFFER_MONITORING
-#endif
-
-/**
- * Postmortem Debugging captures misbehavior and outputs the CPU status and backtrace to serial.
- * When running in the debugger it will break for debugging. This is useful to help understand
- * a crash from a remote location. Requires ~400 bytes of SRAM and 5Kb of flash.
- */
-//#define POSTMORTEM_DEBUGGING
-
-/**
- * Software Reset options
- */
-//#define SOFT_RESET_VIA_SERIAL // 'KILL' and '^X' commands will soft-reset the controller
-//#define SOFT_RESET_ON_KILL // Use a digital button to soft-reset the controller after KILL
-
-// Report uncleaned reset reason from register r2 instead of MCUSR. Supported by Optiboot on AVR.
-//#define OPTIBOOT_RESET_REASON
diff --git a/Makefile b/Makefile
deleted file mode 100644
index b39e760..0000000
--- a/Makefile
+++ /dev/null
@@ -1,1035 +0,0 @@
-# Marlin Firmware Arduino Project Makefile
-#
-# Makefile Based on:
-# Arduino 0011 Makefile
-# Arduino adaptation by mellis, eighthave, oli.keller
-# Marlin adaption by Daid
-# Marlin 2.0 support and RELOC_WORKAROUND by @marcio-ao
-#
-# 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 macOS, 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. Set
-# "PROG_MCU" as the AVR part name corresponding to "MCU". You can use the
-# following command to get a list of correspondences: `avrdude -c alf -p x`
-# Older boards 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 at the top of this file can be overridden from
-# the command line with, for example, "make HARDWARE_MOTHERBOARD=71"
-#
-# To compile for RAMPS (atmega2560) with Arduino 1.6.9 at root/arduino you would use...
-#
-# make ARDUINO_VERSION=10609 AVR_TOOLS_PATH=/root/arduino/hardware/tools/avr/bin/ \
-# HARDWARE_MOTHERBOARD=1200 ARDUINO_INSTALL_DIR=/root/arduino
-#
-# To compile and upload simply add "upload" to the end of the line...
-#
-# make ARDUINO_VERSION=10609 AVR_TOOLS_PATH=/root/arduino/hardware/tools/avr/bin/ \
-# HARDWARE_MOTHERBOARD=1200 ARDUINO_INSTALL_DIR=/root/arduino upload
-#
-# If uploading doesn't work try adding the parameter "AVRDUDE_PROGRAMMER=wiring" or
-# start upload manually (using stk500) like so:
-#
-# avrdude -C /root/arduino/hardware/tools/avr/etc/avrdude.conf -v -p m2560 -c stk500 \
-# -U flash:w:applet/Marlin.hex:i -P /dev/ttyUSB0
-#
-# Or, try disconnecting USB to power down and then reconnecting before running avrdude.
-#
-
-# This defines the board to compile for (see boards.h for your board's ID)
-HARDWARE_MOTHERBOARD ?= 1020
-
-ifeq ($(OS),Windows_NT)
- # Windows
- ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
- ARDUINO_USER_DIR ?= ${HOME}/Arduino
-else
- UNAME_S := $(shell uname -s)
- ifeq ($(UNAME_S),Linux)
- # Linux
- ARDUINO_INSTALL_DIR ?= /usr/share/arduino
- ARDUINO_USER_DIR ?= ${HOME}/Arduino
- endif
- ifeq ($(UNAME_S),Darwin)
- # Darwin (macOS)
- ARDUINO_INSTALL_DIR ?= /Applications/Arduino.app/Contents/Java
- ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino
- AVR_TOOLS_PATH ?= /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/
- endif
-endif
-
-# Arduino source install directory, and version number
-# On most linuxes this will be /usr/share/arduino
-ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
-ARDUINO_VERSION ?= 106
-
-# The installed Libraries are in the User folder
-ARDUINO_USER_DIR ?= ${HOME}/Arduino
-
-# You can optionally set a path to the avr-gcc tools.
-# Requires a trailing slash. For example, /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
-
-# This defines if Tone is needed (i.e., SPEAKER is defined in Configuration.h)
-# Disabling this (and SPEAKER) saves approximately 350 bytes of memory.
-TONE ?= 1
-
-# This defines if U8GLIB is needed (may require RELOC_WORKAROUND)
-U8GLIB ?= 0
-
-# This defines whether to include the Trinamic TMCStepper library
-TMC ?= 0
-
-# This defines whether to include the AdaFruit NeoPixel library
-NEOPIXEL ?= 0
-
-############
-# Try to automatically determine whether RELOC_WORKAROUND is needed based
-# on GCC versions:
-# https://www.avrfreaks.net/comment/1789106#comment-1789106
-
-CC_MAJ:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC__ | cut -f3 -d\ )
-CC_MIN:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_MINOR__ | cut -f3 -d\ )
-CC_PATCHLEVEL:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_PATCHLEVEL__ | cut -f3 -d\ )
-CC_VER:=$(shell echo $$(( $(CC_MAJ) * 10000 + $(CC_MIN) * 100 + $(CC_PATCHLEVEL) )))
-ifeq ($(shell test $(CC_VER) -lt 40901 && echo 1),1)
- $(warning This GCC version $(CC_VER) is likely broken. Enabling relocation workaround.)
- RELOC_WORKAROUND = 1
-endif
-
-############################################################################
-# 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", ...
-
-ifeq ($(HARDWARE_MOTHERBOARD),0)
-
- # No motherboard selected
-
-#
-# RAMPS 1.3 / 1.4 - ATmega1280, ATmega2560
-#
-
-# MEGA/RAMPS up to 1.2
-else ifeq ($(HARDWARE_MOTHERBOARD),1000)
-
-# RAMPS 1.3 (Power outputs: Hotend, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1010)
-# RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1011)
-# RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1)
-else ifeq ($(HARDWARE_MOTHERBOARD),1012)
-# RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),1013)
-# RAMPS 1.3 (Power outputs: Spindle, Controller Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),1014)
-
-# RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1020)
-# RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1021)
-# RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1)
-else ifeq ($(HARDWARE_MOTHERBOARD),1022)
-# RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),1023)
-# RAMPS 1.4 (Power outputs: Spindle, Controller Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),1024)
-
-# RAMPS Plus 3DYMY (Power outputs: Hotend, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1030)
-# RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1031)
-# RAMPS Plus 3DYMY (Power outputs: Hotend, Fan0, Fan1)
-else ifeq ($(HARDWARE_MOTHERBOARD),1032)
-# RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),1033)
-# RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),1034)
-
-#
-# RAMPS Derivatives - ATmega1280, ATmega2560
-#
-
-# 3Drag Controller
-else ifeq ($(HARDWARE_MOTHERBOARD),1100)
-# Velleman K8200 Controller (derived from 3Drag Controller)
-else ifeq ($(HARDWARE_MOTHERBOARD),1101)
-# Velleman K8400 Controller (derived from 3Drag Controller)
-else ifeq ($(HARDWARE_MOTHERBOARD),1102)
-# Velleman K8600 Controller (Vertex Nano)
-else ifeq ($(HARDWARE_MOTHERBOARD),1103)
-# Velleman K8800 Controller (Vertex Delta)
-else ifeq ($(HARDWARE_MOTHERBOARD),1104)
-# 2PrintBeta BAM&DICE with STK drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),1105)
-# 2PrintBeta BAM&DICE Due with STK drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),1106)
-# MKS BASE v1.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1107)
-# MKS BASE v1.4 with Allegro A4982 stepper drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),1108)
-# MKS BASE v1.5 with Allegro A4982 stepper drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),1109)
-# MKS BASE v1.6 with Allegro A4982 stepper drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),1110)
-# MKS BASE 1.0 with Heroic HR4982 stepper drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),1111)
-# MKS GEN v1.3 or 1.4
-else ifeq ($(HARDWARE_MOTHERBOARD),1112)
-# MKS GEN L
-else ifeq ($(HARDWARE_MOTHERBOARD),1113)
-# BigTreeTech or BIQU KFB2.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1114)
-# zrib V2.0 (Chinese RAMPS replica)
-else ifeq ($(HARDWARE_MOTHERBOARD),1115)
-# zrib V5.2 (Chinese RAMPS replica)
-else ifeq ($(HARDWARE_MOTHERBOARD),1116)
-# Felix 2.0+ Electronics Board (RAMPS like)
-else ifeq ($(HARDWARE_MOTHERBOARD),1117)
-# Invent-A-Part RigidBoard
-else ifeq ($(HARDWARE_MOTHERBOARD),1118)
-# Invent-A-Part RigidBoard V2
-else ifeq ($(HARDWARE_MOTHERBOARD),1119)
-# Sainsmart 2-in-1 board
-else ifeq ($(HARDWARE_MOTHERBOARD),1120)
-# Ultimaker
-else ifeq ($(HARDWARE_MOTHERBOARD),1121)
-# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
-else ifeq ($(HARDWARE_MOTHERBOARD),1122)
- MCU ?= atmega1280
- PROG_MCU ?= m1280
-# Azteeg X3
-else ifeq ($(HARDWARE_MOTHERBOARD),1123)
-# Azteeg X3 Pro
-else ifeq ($(HARDWARE_MOTHERBOARD),1124)
-# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
-else ifeq ($(HARDWARE_MOTHERBOARD),1125)
-# Rumba
-else ifeq ($(HARDWARE_MOTHERBOARD),1126)
-# Raise3D N series Rumba derivative
-else ifeq ($(HARDWARE_MOTHERBOARD),1127)
-# Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
-else ifeq ($(HARDWARE_MOTHERBOARD),1128)
-# Formbot T-Rex 2 Plus
-else ifeq ($(HARDWARE_MOTHERBOARD),1129)
-# Formbot T-Rex 3
-else ifeq ($(HARDWARE_MOTHERBOARD),1130)
-# Formbot Raptor
-else ifeq ($(HARDWARE_MOTHERBOARD),1131)
-# Formbot Raptor 2
-else ifeq ($(HARDWARE_MOTHERBOARD),1132)
-# bq ZUM Mega 3D
-else ifeq ($(HARDWARE_MOTHERBOARD),1133)
-# MakeBoard Mini v2.1.2 by MicroMake
-else ifeq ($(HARDWARE_MOTHERBOARD),1134)
-# TriGorilla Anycubic version 1.3-based on RAMPS EFB
-else ifeq ($(HARDWARE_MOTHERBOARD),1135)
-# ... Ver 1.4
-else ifeq ($(HARDWARE_MOTHERBOARD),1136)
-# ... Rev 1.1 (new servo pin order)
-else ifeq ($(HARDWARE_MOTHERBOARD),1137)
-# Creality: Ender-4, CR-8
-else ifeq ($(HARDWARE_MOTHERBOARD),1138)
-# Creality: CR10S, CR20, CR-X
-else ifeq ($(HARDWARE_MOTHERBOARD),1139)
-# Dagoma F5
-else ifeq ($(HARDWARE_MOTHERBOARD),1140)
-# FYSETC F6 1.3
-else ifeq ($(HARDWARE_MOTHERBOARD),1141)
-# FYSETC F6 1.4
-else ifeq ($(HARDWARE_MOTHERBOARD),1142)
-# Wanhao Duplicator i3 Plus
-else ifeq ($(HARDWARE_MOTHERBOARD),1143)
-# VORON Design
-else ifeq ($(HARDWARE_MOTHERBOARD),1144)
-# Tronxy TRONXY-V3-1.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1145)
-# Z-Bolt X Series
-else ifeq ($(HARDWARE_MOTHERBOARD),1146)
-# TT OSCAR
-else ifeq ($(HARDWARE_MOTHERBOARD),1147)
-# Overlord/Overlord Pro
-else ifeq ($(HARDWARE_MOTHERBOARD),1148)
-# ADIMLab Gantry v1
-else ifeq ($(HARDWARE_MOTHERBOARD),1149)
-# ADIMLab Gantry v2
-else ifeq ($(HARDWARE_MOTHERBOARD),1150)
-# BIQU Tango V1
-else ifeq ($(HARDWARE_MOTHERBOARD),1151)
-# MKS GEN L V2
-else ifeq ($(HARDWARE_MOTHERBOARD),1152)
-# MKS GEN L V2.1
-else ifeq ($(HARDWARE_MOTHERBOARD),1153)
-# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1154)
-# Ortur 4
-else ifeq ($(HARDWARE_MOTHERBOARD),1155)
-# Tenlog D3 Hero IDEX printer
-else ifeq ($(HARDWARE_MOTHERBOARD),1156)
-# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1157)
-# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1158)
-# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),1159)
-# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
-else ifeq ($(HARDWARE_MOTHERBOARD),1160)
-# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
-else ifeq ($(HARDWARE_MOTHERBOARD),1161)
-# Zonestar zrib V5.3 (Chinese RAMPS replica)
-else ifeq ($(HARDWARE_MOTHERBOARD),1162)
-# Pxmalion Core I3
-else ifeq ($(HARDWARE_MOTHERBOARD),1163)
-
-#
-# RAMBo and derivatives
-#
-
-# Rambo
-else ifeq ($(HARDWARE_MOTHERBOARD),1200)
-# Mini-Rambo
-else ifeq ($(HARDWARE_MOTHERBOARD),1201)
-# Mini-Rambo 1.0a
-else ifeq ($(HARDWARE_MOTHERBOARD),1202)
-# Einsy Rambo
-else ifeq ($(HARDWARE_MOTHERBOARD),1203)
-# Einsy Retro
-else ifeq ($(HARDWARE_MOTHERBOARD),1204)
-# abee Scoovo X9H
-else ifeq ($(HARDWARE_MOTHERBOARD),1205)
-# Rambo ThinkerV2
-else ifeq ($(HARDWARE_MOTHERBOARD),1206)
-
-#
-# Other ATmega1280, ATmega2560
-#
-
-# Cartesio CN Controls V11
-else ifeq ($(HARDWARE_MOTHERBOARD),1300)
-# Cartesio CN Controls V12
-else ifeq ($(HARDWARE_MOTHERBOARD),1301)
-# Cartesio CN Controls V15
-else ifeq ($(HARDWARE_MOTHERBOARD),1302)
-# Cheaptronic v1.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1303)
-# Cheaptronic v2.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1304)
-# Makerbot Mightyboard Revision E
-else ifeq ($(HARDWARE_MOTHERBOARD),1305)
-# Megatronics
-else ifeq ($(HARDWARE_MOTHERBOARD),1306)
-# Megatronics v2.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1307)
-# Megatronics v3.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1308)
-# Megatronics v3.1
-else ifeq ($(HARDWARE_MOTHERBOARD),1309)
-# Megatronics v3.2
-else ifeq ($(HARDWARE_MOTHERBOARD),1310)
-# Elefu Ra Board (v3)
-else ifeq ($(HARDWARE_MOTHERBOARD),1311)
-# Leapfrog
-else ifeq ($(HARDWARE_MOTHERBOARD),1312)
-# Mega controller
-else ifeq ($(HARDWARE_MOTHERBOARD),1313)
-# Geeetech GT2560 Rev A
-else ifeq ($(HARDWARE_MOTHERBOARD),1314)
-# Geeetech GT2560 Rev A+ (with auto level probe)
-else ifeq ($(HARDWARE_MOTHERBOARD),1315)
-# Geeetech GT2560 Rev B
-else ifeq ($(HARDWARE_MOTHERBOARD),1316)
-# Geeetech GT2560 Rev B for A10(M/T/D)
-else ifeq ($(HARDWARE_MOTHERBOARD),1317)
-# Geeetech GT2560 Rev B for A10(M/T/D)
-else ifeq ($(HARDWARE_MOTHERBOARD),1318)
-# Geeetech GT2560 Rev B for Mecreator2
-else ifeq ($(HARDWARE_MOTHERBOARD),1319)
-# Geeetech GT2560 Rev B for A20(M/T/D)
-else ifeq ($(HARDWARE_MOTHERBOARD),1320)
-# Einstart retrofit
-else ifeq ($(HARDWARE_MOTHERBOARD),1321)
-# Wanhao 0ne+ i3 Mini
-else ifeq ($(HARDWARE_MOTHERBOARD),1322)
-# Leapfrog Xeed 2015
-else ifeq ($(HARDWARE_MOTHERBOARD),1323)
-# PICA Shield (original version)
-else ifeq ($(HARDWARE_MOTHERBOARD),1324)
-# PICA Shield (rev C or later)
-else ifeq ($(HARDWARE_MOTHERBOARD),1325)
-# Intamsys 4.0 (Funmat HT)
-else ifeq ($(HARDWARE_MOTHERBOARD),1326)
-# Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
-else ifeq ($(HARDWARE_MOTHERBOARD),1327)
-# Geeetech GT2560 Rev B for A20(M/T/D)
-else ifeq ($(HARDWARE_MOTHERBOARD),1328)
-# Mega controller & Protoneer CNC Shield V3.00
-else ifeq ($(HARDWARE_MOTHERBOARD),1329)
-
-#
-# ATmega1281, ATmega2561
-#
-
-# Minitronics v1.0/1.1
-else ifeq ($(HARDWARE_MOTHERBOARD),1400)
- MCU ?= atmega1281
- PROG_MCU ?= m1281
-# Silvergate v1.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1401)
- MCU ?= atmega1281
- PROG_MCU ?= m1281
-
-#
-# Sanguinololu and Derivatives - ATmega644P, ATmega1284P
-#
-
-# Sanguinololu < 1.2
-else ifeq ($(HARDWARE_MOTHERBOARD),1500)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Sanguinololu 1.2 and above
-else ifeq ($(HARDWARE_MOTHERBOARD),1501)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Melzi
-else ifeq ($(HARDWARE_MOTHERBOARD),1502)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Melzi V2.0
-else ifeq ($(HARDWARE_MOTHERBOARD),1503)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# Melzi with ATmega1284 (MaKr3d version)
-else ifeq ($(HARDWARE_MOTHERBOARD),1504)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# Melzi Creality3D board (for CR-10 etc)
-else ifeq ($(HARDWARE_MOTHERBOARD),1505)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# Melzi Malyan M150 board
-else ifeq ($(HARDWARE_MOTHERBOARD),1506)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# Tronxy X5S
-else ifeq ($(HARDWARE_MOTHERBOARD),1507)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# STB V1.1
-else ifeq ($(HARDWARE_MOTHERBOARD),1508)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# Azteeg X1
-else ifeq ($(HARDWARE_MOTHERBOARD),1509)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# Anet 1.0 (Melzi clone)
-else ifeq ($(HARDWARE_MOTHERBOARD),1510)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-# ZoneStar ZMIB V2
-else ifeq ($(HARDWARE_MOTHERBOARD),1511)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
-
-#
-# Other ATmega644P, ATmega644, ATmega1284P
-#
-
-# Gen3 Monolithic Electronics
-else ifeq ($(HARDWARE_MOTHERBOARD),1600)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Gen3+
-else ifeq ($(HARDWARE_MOTHERBOARD),1601)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Gen6
-else ifeq ($(HARDWARE_MOTHERBOARD),1602)
- HARDWARE_VARIANT ?= Gen6
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Gen6 deluxe
-else ifeq ($(HARDWARE_MOTHERBOARD),1603)
- HARDWARE_VARIANT ?= Gen6
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Gen7 custom (Alfons3 Version)
-else ifeq ($(HARDWARE_MOTHERBOARD),1604)
- HARDWARE_VARIANT ?= Gen7
- MCU ?= atmega644
- PROG_MCU ?= m644
- F_CPU ?= 20000000
-# Gen7 v1.1, v1.2
-else ifeq ($(HARDWARE_MOTHERBOARD),1605)
- HARDWARE_VARIANT ?= Gen7
- MCU ?= atmega644p
- PROG_MCU ?= m644p
- F_CPU ?= 20000000
-# Gen7 v1.3
-else ifeq ($(HARDWARE_MOTHERBOARD),1606)
- HARDWARE_VARIANT ?= Gen7
- MCU ?= atmega644p
- PROG_MCU ?= m644p
- F_CPU ?= 20000000
-# Gen7 v1.4
-else ifeq ($(HARDWARE_MOTHERBOARD),1607)
- HARDWARE_VARIANT ?= Gen7
- MCU ?= atmega1284p
- PROG_MCU ?= m1284p
- F_CPU ?= 20000000
-# Alpha OMCA board
-else ifeq ($(HARDWARE_MOTHERBOARD),1608)
- HARDWARE_VARIANT ?= SanguinoA
- MCU ?= atmega644
- PROG_MCU ?= m644
-# Final OMCA board
-else ifeq ($(HARDWARE_MOTHERBOARD),1609)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-# Sethi 3D_1
-else ifeq ($(HARDWARE_MOTHERBOARD),1610)
- HARDWARE_VARIANT ?= Sanguino
- MCU ?= atmega644p
- PROG_MCU ?= m644p
-
-#
-# Teensyduino - AT90USB1286, AT90USB1286P
-#
-
-# Teensylu
-else ifeq ($(HARDWARE_MOTHERBOARD),1700)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-# Printrboard (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),1701)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-# Printrboard Revision F (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),1702)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-# Brainwave (AT90USB646)
-else ifeq ($(HARDWARE_MOTHERBOARD),1703)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb646
- PROG_MCU ?= usb646
-# Brainwave Pro (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),1704)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-# SAV Mk-I (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),1705)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-# Teensy++2.0 (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),1706)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-# 5DPrint D8 Driver Board
-else ifeq ($(HARDWARE_MOTHERBOARD),1707)
- HARDWARE_VARIANT ?= Teensy
- MCU ?= at90usb1286
- PROG_MCU ?= usb1286
-
-# UltiMachine Archim1 (with DRV8825 drivers)
-else ifeq ($(HARDWARE_MOTHERBOARD),3023)
- HARDWARE_VARIANT ?= archim
- MCPU = cortex-m3
- F_CPU = 84000000
- IS_MCU = 0
-# UltiMachine Archim2 (with TMC2130 drivers)
-else ifeq ($(HARDWARE_MOTHERBOARD),3024)
- HARDWARE_VARIANT ?= archim
- MCPU = cortex-m3
- F_CPU = 84000000
- IS_MCU = 0
-endif
-
-# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py
-# if you are setting this to something other than 16MHz
-# Do not put the UL suffix, it's done later on.
-# Set to 16Mhz if not yet set.
-F_CPU ?= 16000000
-
-# Set to microcontroller if IS_MCU not yet set
-IS_MCU ?= 1
-
-ifeq ($(IS_MCU),1)
- # Set to arduino, ATmega2560 if not yet set.
- HARDWARE_VARIANT ?= arduino
- MCU ?= atmega2560
- PROG_MCU ?= m2560
-
- TOOL_PREFIX = avr
- MCU_FLAGS = -mmcu=$(MCU)
- SIZE_FLAGS = --mcu=$(MCU) -C
-else
- TOOL_PREFIX = arm-none-eabi
- CPU_FLAGS = -mthumb -mcpu=$(MCPU)
- SIZE_FLAGS = -A
-endif
-
-# 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
-
-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
-
-# The Makefile for previous versions of Marlin used VPATH for all
-# source files, but for Marlin 2.0, we use VPATH only for arduino
-# library files.
-
-VPATH = .
-VPATH += $(BUILD_DIR)
-VPATH += $(HARDWARE_SRC)
-
-ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino))
- # Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
- # New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src
-endif
-
-ifeq ($(IS_MCU),1)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino
-
- # Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial
- # New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial/src
-endif
-
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal/src
-
-ifeq ($(LIQUID_TWI2), 1)
- WIRE = 1
- VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2
-endif
-ifeq ($(WIRE), 1)
- # Old libraries (avr-core 1.6.21 / Arduino < 1.6.8)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/utility
- # New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src/utility
-endif
-ifeq ($(NEOPIXEL), 1)
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Adafruit_NeoPixel
-endif
-ifeq ($(U8GLIB), 1)
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/csrc
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/cppsrc
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/fntsrc
-endif
-ifeq ($(TMC), 1)
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/TMCStepper/src
-VPATH += $(ARDUINO_INSTALL_DIR)/libraries/TMCStepper/src/source
-endif
-
-ifeq ($(HARDWARE_VARIANT), arduino)
- HARDWARE_SUB_VARIANT ?= mega
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/variants/$(HARDWARE_SUB_VARIANT)
-else ifeq ($(HARDWARE_VARIANT), Sanguino)
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/variants/sanguino
-else ifeq ($(HARDWARE_VARIANT), archim)
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/libsam
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/CMSIS/CMSIS/Include/
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/CMSIS/Device/ATMEL/
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/cores/arduino
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/cores/arduino/avr
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/cores/arduino/USB
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/libraries/Wire/src
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/libraries/SPI/src
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/libraries/U8glib/src/clib
- VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/variants/archim
- LDSCRIPT = $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/variants/archim/linker_scripts/gcc/flash.ld
- LDLIBS = $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/variants/archim/libsam_sam3x8e_gcc_rel.a
-else
- HARDWARE_SUB_VARIANT ?= standard
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT)
-endif
-
-LIB_SRC = wiring.c \
- wiring_analog.c wiring_digital.c \
- wiring_shift.c WInterrupts.c hooks.c
-
-ifeq ($(HARDWARE_VARIANT), archim)
- LIB_ASRC += wiring_pulse_asm.S
-else
- LIB_SRC += wiring_pulse.c
-endif
-
-ifeq ($(HARDWARE_VARIANT), Teensy)
- LIB_SRC = wiring.c
- VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy
-endif
-
-LIB_CXXSRC = WMath.cpp WString.cpp Print.cpp SPI.cpp
-
-ifeq ($(NEOPIXEL), 1)
- LIB_CXXSRC += Adafruit_NeoPixel.cpp
-endif
-
-ifeq ($(LIQUID_TWI2), 0)
- LIB_CXXSRC += LiquidCrystal.cpp
-else
- LIB_SRC += twi.c
- LIB_CXXSRC += Wire.cpp LiquidTWI2.cpp
-endif
-
-ifeq ($(WIRE), 1)
- LIB_SRC += twi.c
- LIB_CXXSRC += Wire.cpp
-endif
-
-ifeq ($(TONE), 1)
- LIB_CXXSRC += Tone.cpp
-endif
-
-ifeq ($(U8GLIB), 1)
- LIB_CXXSRC += U8glib.cpp
- LIB_SRC += u8g_ll_api.c u8g_bitmap.c u8g_clip.c u8g_com_null.c u8g_delay.c \
- u8g_page.c u8g_pb.c u8g_pb16h1.c u8g_rect.c u8g_state.c u8g_font.c \
- u8g_font_6x13.c u8g_font_04b_03.c u8g_font_5x8.c
-endif
-
-ifeq ($(TMC), 1)
- LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp \
- CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp \
- DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp \
- SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp \
- TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
-endif
-
-ifeq ($(RELOC_WORKAROUND), 1)
- LD_PREFIX=-nodefaultlibs
- LD_SUFFIX=-lm -lgcc -lc -lgcc
-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)
- LIB_CXXSRC += main.cpp
-else
- LIB_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)$(TOOL_PREFIX)-gcc
-CXX = $(AVR_TOOLS_PATH)$(TOOL_PREFIX)-g++
-OBJCOPY = $(AVR_TOOLS_PATH)$(TOOL_PREFIX)-objcopy
-OBJDUMP = $(AVR_TOOLS_PATH)$(TOOL_PREFIX)-objdump
-AR = $(AVR_TOOLS_PATH)$(TOOL_PREFIX)-ar
-SIZE = $(AVR_TOOLS_PATH)$(TOOL_PREFIX)-size
-NM = $(AVR_TOOLS_PATH)$(TOOL_PREFIX)-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-MV = mv -f
-
-# Place -D or -U options here
-CDEFS = -DF_CPU=$(F_CPU)UL ${addprefix -D , $(DEFINES)} -DARDUINO=$(ARDUINO_VERSION)
-CXXDEFS = $(CDEFS)
-
-ifeq ($(HARDWARE_VARIANT), Teensy)
- CDEFS += -DUSB_SERIAL
- LIB_SRC += usb.c pins_teensy.c
- LIB_CXXSRC += usb_api.cpp
-
-else ifeq ($(HARDWARE_VARIANT), archim)
- CDEFS += -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__
- CDEFS += -DUSB_VID=0x27B1 -DUSB_PID=0x0001 -DUSBCON
- CDEFS += '-DUSB_MANUFACTURER="UltiMachine"' '-DUSB_PRODUCT_STRING="Archim"'
-
- LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp \
- UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp \
- PluggableUSB.cpp USBCore.cpp
-
- LIB_SRC += cortex_handlers.c iar_calls_sam3.c syscalls_sam3.c dtostrf.c itoa.c
-
- ifeq ($(U8GLIB), 1)
- LIB_SRC += u8g_com_api.c u8g_pb32h1.c
- endif
-endif
-
-# Add all the source directories as include directories too
-CINCS = ${addprefix -I ,${VPATH}}
-CXXINCS = ${addprefix -I ,${VPATH}}
-
-# Silence warnings for library code (won't work for .h files, unfortunately)
-LIBWARN = -w -Wno-packed-bitfield-compat
-
-# Compiler flag to set the C/CPP Standard level.
-CSTANDARD = -std=gnu99
-CXXSTANDARD = -std=gnu++11
-CDEBUG = -g$(DEBUG)
-CWARN = -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
-CXXWARN = -Wall -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
-CTUNING = -fsigned-char -funsigned-bitfields -fno-exceptions \
- -fshort-enums -ffunction-sections -fdata-sections
-ifneq ($(HARDWARE_MOTHERBOARD),)
- CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}
-endif
-
-#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
-CXXEXTRA = -fno-use-cxa-atexit -fno-threadsafe-statics -fno-rtti
-CFLAGS := $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CEXTRA) $(CTUNING) $(CSTANDARD)
-CXXFLAGS := $(CDEFS) $(CINCS) -O$(OPT) $(CXXEXTRA) $(CTUNING) $(CXXSTANDARD)
-ASFLAGS := $(CDEFS)
-#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-ifeq ($(HARDWARE_VARIANT), archim)
- LD_PREFIX = -Wl,--gc-sections,-Map,Marlin.ino.map,--cref,--check-sections,--entry=Reset_Handler,--unresolved-symbols=report-all,--warn-common,--warn-section-align
- LD_SUFFIX = $(LDLIBS)
-
- LDFLAGS = -lm -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty
- LDFLAGS += -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
-else
- LD_PREFIX = -Wl,--gc-sections,--relax
- LDFLAGS = -lm
- CTUNING += -flto
-endif
-
-# 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$(PROG_MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
- -b$(UPLOAD_RATE)
-
-# Since Marlin 2.0, the source files may be distributed into several
-# different directories, so it is necessary to find them recursively
-
-SRC = $(shell find src -name '*.c' -type f)
-CXXSRC = $(shell find src -name '*.cpp' -type f)
-
-# Define all object files.
-OBJ = ${patsubst %.c, $(BUILD_DIR)/arduino/%.o, ${LIB_SRC}}
-OBJ += ${patsubst %.cpp, $(BUILD_DIR)/arduino/%.o, ${LIB_CXXSRC}}
-OBJ += ${patsubst %.S, $(BUILD_DIR)/arduino/%.o, ${LIB_ASRC}}
-OBJ += ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}}
-OBJ += ${patsubst %.cpp, $(BUILD_DIR)/%.o, ${CXXSRC}}
-
-# Define all listing files.
-LST = $(LIB_ASRC:.S=.lst) $(LIB_CXXSRC:.cpp=.lst) $(LIB_SRC:.c=.lst)
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = $(MCU_FLAGS) $(CPU_FLAGS) $(CFLAGS) -I.
-ALL_CXXFLAGS = $(MCU_FLAGS) $(CPU_FLAGS) $(CXXFLAGS)
-ALL_ASFLAGS = $(MCU_FLAGS) $(CPU_FLAGS) $(ASFLAGS) -x assembler-with-cpp
-
-# set V=1 (eg, "make V=1") to print the full commands etc.
-ifneq ($V,1)
- Pecho=@echo
- P=@
-else
- Pecho=@:
- P=
-endif
-
-# Create required build hierarchy if it does not exist
-
-$(shell mkdir -p $(dir $(OBJ)))
-
-# Default target.
-all: sizeafter
-
-build: elf hex bin
-
-elf: $(BUILD_DIR)/$(TARGET).elf
-bin: $(BUILD_DIR)/$(TARGET).bin
-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) $(SIZE_FLAGS) $(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 .bin
-.PRECIOUS: .o
-
-.elf.hex:
- $(Pecho) " COPY $@"
- $P $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-.elf.bin:
- $(Pecho) " COPY $@"
- $P $(OBJCOPY) -O binary -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 $(CXX) $(LD_PREFIX) $(ALL_CXXFLAGS) -o $@ -L. $(OBJ) $(LDFLAGS) $(LD_SUFFIX)
-
-# Object files that were found in "src" will be stored in $(BUILD_DIR)
-# in directories that mirror the structure of "src"
-
-$(BUILD_DIR)/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE)
- $(Pecho) " CC $<"
- $P $(CC) -MMD -c $(ALL_CFLAGS) $(CWARN) $< -o $@
-
-$(BUILD_DIR)/%.o: %.cpp Configuration.h Configuration_adv.h $(MAKEFILE)
- $(Pecho) " CXX $<"
- $P $(CXX) -MMD -c $(ALL_CXXFLAGS) $(CXXWARN) $< -o $@
-
-# Object files for Arduino libs will be created in $(BUILD_DIR)/arduino
-
-$(BUILD_DIR)/arduino/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE)
- $(Pecho) " CC $<"
- $P $(CC) -MMD -c $(ALL_CFLAGS) $(LIBWARN) $< -o $@
-
-$(BUILD_DIR)/arduino/%.o: %.cpp Configuration.h Configuration_adv.h $(MAKEFILE)
- $(Pecho) " CXX $<"
- $P $(CXX) -MMD -c $(ALL_CXXFLAGS) $(LIBWARN) $< -o $@
-
-$(BUILD_DIR)/arduino/%.o: %.S $(MAKEFILE)
- $(Pecho) " CXX $<"
- $P $(CXX) -MMD -c $(ALL_ASFLAGS) $< -o $@
-
-# Target: clean project.
-clean:
- $(Pecho) " RMDIR $(BUILD_DIR)/"
- $P rm -rf $(BUILD_DIR)
-
-
-.PHONY: all build elf hex eep lss sym program coff extcoff clean depend sizebefore sizeafter
-
-# Automatically include the dependency files created by gcc
--include ${patsubst %.o, %.d, ${OBJ}}
diff --git a/Marlin.ino.mega.hex b/Marlin.ino.mega.hex
deleted file mode 100644
index 182e06a..0000000
--- a/Marlin.ino.mega.hex
+++ /dev/null
@@ -1,10345 +0,0 @@
-:100000000C94481E0C94881E0C94881E0C94881E18
-:100010000C94881E0C94881E0C94881E0C94881EC8
-:100020000C94881E0D944B200D944B200D944B2066
-:100030000C94881E0C94881E0C94881E0C94881EA8
-:100040000C94881E0C941A880C94881E0C94881E9C
-:100050000C94881E0C947C850C94881E0D94DD1ED7
-:100060000C94881E0C9499DD0C948FDD0C94881EE2
-:100070000C94881E0C94881E0C94881E0C94881E68
-:100080000C94881E0C94881E0C94881E0C94881E58
-:100090000C94881E0C94881E0C94881E0D94271FA7
-:1000A0000C94881E0C94881E0C94881E0C94881E38
-:1000B0000C94881E0C94881E0C94881E0C94881E28
-:1000C0000C94881E0C94881E0C94881E0C94881E18
-:1000D0000C94881E0C94881E0C94881E0C94881E08
-:1000E0000C94881E084AD73B3BCE016E84BCBFFDF2
-:1000F000C12F3D6C74319ABD56833DDA3D00C77FF8
-:1001000011BED9E4BB4C3E916BAAAABE0000008090
-:100110003F05A84CCDB2D44EB93836A9020C50B91F
-:10012000918688083CA6AAAA2ABE000000803F004B
-:100130000C942C440C941F4E0D94C8090C94BE963C
-:100140000C945E270C941C440C942D740C9418444D
-:100150000D94B0180C9433CE0D940A1C0C9473605B
-:100160000D9475070C94DA220C94EE340C94A230A2
-:100170000C94462E0C946E260C9413CE0D94C30949
-:100180000C9439470C94DE470C946E280C94879697
-:100190000C942A250D94A8180C94AB960D945B072B
-:1001A0000C943A2E0C9496260C94FC470C946A25D9
-:1001B0000C94012E0D94251C0C94662D0D94D206E2
-:1001C0000C940C440D9426090C9485270C940E482D
-:1001D0000C94D7200C9428230C94C3960C94EFCD48
-:1001E0000C9457CE0C941A480D94671C0C94092952
-:1001F0000C94EB270C9424510C9406560C947628FE
-:100200000D94E0090C94CD640D944B070C947E265C
-:100210000C94FA480C9401320C9421240C94D32CA5
-:100220000D942E090C946E760C94A7280C944A70A9
-:100230000C943F960C943D750C94D92B0C94CC2BBC
-:100240000C94BF270C94F5CB0C94C8260C94F1CBDE
-:100250000C94432E0D94F0090C94F6470C94F32063
-:100260000D94D1070C944D2E0D944C070C94583BD3
-:100270000C94F21E0C9432280D948D180C94EF23DC
-:100280000C9428440D94C3180C9459CE0C94BE5869
-:100290000C9456260C944B2E0C94A5730C94C920E8
-:1002A0000C9466260C9436470C94372E0D94BF2779
-:1002B0000C94C76F0C9444270C94FA340D94CB180B
-:1002C0000C94B0200C9435CE0C944D700D94D9182C
-:1002D0000D94831C0C94145F0C942E270C948F2582
-:1002E0000C944F750C9402480C94C6220C94A622D0
-:1002F0000D94731C0C94A8530D94C41C0D940834D5
-:100300000C94312E0C94F4340D94D6090D945C09A0
-:100310000C94B2530C940B370C9486260C94501FFB
-:100320000C9419390C9424440D94D1060C948E3BF2
-:100330000C94FC220D94791C0C9408440C94062314
-:100340000D9492180C9422C60C94EF570C940C5CEC
-:100350000C94DD2B0C947A280C94532E0C94E126EB
-:100360000C94E4470C945E260D94D1180C947228DA
-:100370000C94EA470C94C8230C94AC270C94497055
-:100380000C9492740C943F260C94502E0C94742868
-:100390000C9433470C9493960C9492220C94D84767
-:1003A0000C94111F0C948B250C944F450C94AD5359
-:1003B0000C944D3E0D946E070D944C1D0C940CCC7A
-:1003C0000D947F090D94A4180C94CFCD0D9446097B
-:1003D0000C943A240C9408CC0C9408240C941448E3
-:1003E0000D94B9180D94E9070C947C280D94AC1861
-:1003F0000C9416350C940F350C9495750C9437CEDF
-:100400000C944C450C940FCE0C9464630C94E8222D
-:100410000D94D5180C9430290C9452450C94F36D1E
-:100420000C9420440D94F1090C94F0470D94CD09DF
-:100430000C94A1240C94AD740C9499270C94C3CD06
-:100440000D945D080D94621C0D94BD180C945150D0
-:100450000D94A1090C945BCE0C94BE1E0C94A69630
-:100460000C944B270C9428280C948A1E0C949C25E1
-:100470000C942DC50C94342E0C94B7530C9408484E
-:100480000D9445080C9411CE0C94635A0C94E771AA
-:100490000C9488730C948D2E0D94B3180C94AF2685
-:1004A0000C9476260C94B0220C94142F0C94E52016
-:1004B0000C94444B0C9410440C944E740C94A4244F
-:1004C0000C9463250D948E1C0C94402E0C94924C2D
-:1004D0000D94E3180C9471270C9478280C94013532
-:1004E0000C942F960C94B5240D94DF180C947E2850
-:1004F0000C9408350C94061F0C943D2E0C94EDCDF5
-:100500000C9414230C94DF2C0D94D0060D94C71872
-:100510000C94262E0C9414440D94A2074E414E497F
-:100520004E495459494E46CDCCCC3D0AD7233C17B1
-:10053000B7D13877CC2B329595E6241FB14F0A00FE
-:100540000020410000C84200401C4620BCBE4CCAEE
-:100550001B0E5AAEC59D741FE0201023102490106E
-:10056000A011202210241037B00840048003001F7F
-:10057000E02010211023101520112021102110310E
-:10058000300840048003001FE03FF03CF03B701F48
-:10059000601EE03DF03BF038700FC0078003001F85
-:1005A000E03FF03EF03CF01AE01EE03EF03EF03E50
-:1005B000F00FC007800300554E4C4F414420464980
-:1005C0004C414D454E54004C4F41442046494C410E
-:1005D0004D454E540046494C414D454E54204348EC
-:1005E000414E47450041425300504C410045727214
-:1005F0003A207574663820666F6E74206E6F7420B2
-:10060000696E697469616C697A65642E00FFE0FF48
-:10061000D140A0C8A6A22FF80023AC00AF10FFFE67
-:10062000FF05FFD0FFE0FFC1FFD1E240A0C8A6A2B6
-:100630002FF800238127AC00AFFFD0FF64FFD1A5C6
-:10064000FFD0FF64FF64FFD1A4FFD0FF16FFFE427E
-:10065000656400456E636C6F73757265002568751F
-:100660003A25303268750025303268753A253032C7
-:100670006875002530326875272530326875002589
-:100680006875642025303268753A25303268750007
-:1006900020202020202020002020202000657272B1
-:1006A000006F0557059F0587053FFFF03800703044
-:1006B000FC3020FC102078102030102C00D02E317F
-:1006C000D02F7BD02F7BD02E31D02C00D0203010DB
-:1006D00020781020FC1030FC303800703FFFF03FD5
-:1006E000FFF03800703186302387102787902F87DE
-:1006F000D02F03D020301020781020781020301018
-:100700002F03D02F87D0278790238710318630384A
-:1007100000703FFFF01FFFF81FFFF80410400208B1
-:1007200020020820041040082080104100104100E1
-:100730000820800410400000001FFFF81FFFF85041
-:1007400072696E742041626F72746564004D323557
-:1007500020500A4D32340050617573696E672E2E39
-:100760002E004D3234004C6F6164202A004C6F61C2
-:1007700064206D6D00556E6C6F6164202A00556EAB
-:100780006C6F6164206D6D0046696C2E2044696158
-:100790002E202A0046696C2E204469612E004520D7
-:1007A000696E206D6D5E3300200820466163740021
-:1007B0002008204D6178002008204D696E004F66AA
-:1007C00066004F6E004175746F74656D70004D6901
-:1007D0006E2054726176656C205370656564004DBF
-:1007E000696E2056656C6F63697479004D6178207D
-:1007F00040205370656564004D6178204520416359
-:1008000063656C004D6178204020416363656C0036
-:1008100054726176656C20416363656C0052657447
-:100820007261637420416363656C00416363656C4E
-:1008300000402073746570732F6D6D0041647661A4
-:100840006E6365642053657474696E6773003F005E
-:1008500043616E63656C00496E6974004D343238D3
-:1008600000496E697469616C697A6520454550522A
-:100870004F4D0046696C616D656E740054656D7016
-:100880006572617475726500544D432044726976D7
-:100890006572730053746570732F6D6D004A756EC9
-:1008A0006374696F6E2044657600416363656C65AF
-:1008B000726174696F6E004D617820537065656474
-:1008C00020286D6D2F73290053657420486F6D6566
-:1008D000204F66667365747300436F6E6669677553
-:1008E000726174696F6E005A2052616973650032DB
-:1008F0006E64204E6F7A7A6C652040004265640019
-:100900004E6F7A7A6C650046616E2053706565643F
-:1009100000436F6E66696775726174696F6E00522D
-:100920006573746F72652044656661756C747300DD
-:100930004C6F61642053657474696E6773005374FF
-:100940006F72652053657474696E677300507265C9
-:1009500068656174202420436F6E6600546F6F6C6D
-:10096000204368616E676500546F6F6C204F666648
-:100970007365747300416476616E636564205365CA
-:100980007474696E6773004D61696E004D37303263
-:1009900020542564004D36303020423020542564E8
-:1009A000004D373032203B2564004D373031205424
-:1009B0002564004368616E67652046696C616D65FA
-:1009C0006E7400556E6C6F61642046696C616D6574
-:1009D0006E74004C6F61642046696C616D656E7465
-:1009E000005072656865617420437573746F6D00A3
-:1009F000507265686561742024004261636B005524
-:100A00006E6C6F6164202A004C6F6164202A004381
-:100A100068616E67652046696C616D656E74202A39
-:100A2000004D61696E00436F6E74696E75650050AC
-:100A300075726765206D6F726500524553554D455F
-:100A4000204F5054494F4E533A005052494E542073
-:100A50005041555345440020204E6F7A7A6C653AD8
-:100A600020005061726B696E672E2E2E00000057B9
-:100A700061697420666F720066696C616D656E7481
-:100A8000206368616E676500746F207374617274AF
-:100A9000005761697420666F720066696C616D65EC
-:100AA0006E7420756E6C6F616400004E6F7A7A6CA4
-:100AB000652068656174696E6700506C6561736577
-:100AC00020776169742E2E2E00005072657373209A
-:100AD000627574746F6E00746F2068656174206E47
-:100AE0006F7A7A6C650000496E736572742066696E
-:100AF0006C616D656E7400616E64207072657373F5
-:100B000020627574746F6E00746F20636F6E746909
-:100B10006E7565005761697420666F720066696C56
-:100B2000616D656E74206C6F616400005072657356
-:100B30007320427574746F6E00746F2072657375E4
-:100B40006D65207072696E7400005761697420666B
-:100B50006F72207072696E7400746F2072657375A5
-:100B60006D652E2E2E00005761697420666F72002D
-:100B700066696C616D656E742070757267650000E2
-:100B80004D36303020423020542569004D37303109
-:100B900020542569004D37303220542569005669AC
-:100BA0006F6C657400496E6469676F00426C7565AF
-:100BB00000477265656E0059656C6C6F77004F7207
-:100BC000616E67650052656400576869746500422C
-:100BD0006C756520496E74656E736974790047722F
-:100BE00065656E20496E74656E736974790052652F
-:100BF0006420496E74656E73697479004C454420B5
-:100C0000436F6E74726F6C00437573746F6D204C1C
-:100C10006967687473004C69676874205072657303
-:100C20006574730044656661756C74004F66660098
-:100C30004F6E004C6967687473004D61696E003FC8
-:100C4000004261636B0053746F70004E6F204D65FE
-:100C5000646961005072696E742066726F6D204D18
-:100C600065646961004368616E6765204D6564690C
-:100C700061004D3231004C696768747300436861EC
-:100C80006E67652046696C616D656E7400436F6EBA
-:100C900066696775726174696F6E0054656D706521
-:100CA000726174757265004D6F74696F6E00526584
-:100CB00073756D65205072696E740054756E6500B1
-:100CC00053746F70205072696E7400506175736553
-:100CD000205072696E7400496E666F2053637265AE
-:100CE000656E003F005374617274205072696E74B7
-:100CF0000043616E63656C005072696E74004361FD
-:100D00006E6E6F7420656E746572207375626469AF
-:100D1000723A200002202E2E004D61696E004D6F48
-:100D2000766520246D6D00302E303235004D6F76A3
-:100D30006520302E316D6D004D6F766520316D6D03
-:100D4000004D6F76652031306D6D002100486F7465
-:100D5000656E6420746F6F20636F6C640042616322
-:100D60006B0050726F63656564004D6F7665202A75
-:100D7000004D6F7665204578747275646572004D1C
-:100D80006F76652040004D6F74696F6E0044697323
-:100D900061626C65205374657070657273004D38C4
-:100DA00034004732385A004732385900486F6D6571
-:100DB00020400047323858004175746F20486F6DED
-:100DC0006500473238004D6F7665204178697300C1
-:100DD0004D61696E0050726568656174202420421F
-:100DE00065640050726568656174202420416C6CF4
-:100DF0000050726568656174202420456E64207E11
-:100E000000507265686561742024207E0054656D11
-:100E1000706572617475726500E905E505436F6F71
-:100E20006C646F776E005072656865617420240091
-:100E300046616E205370656564207E0042656400E3
-:100E40004E6F7A7A6C65207E004D61696E00453286
-:100E5000004531005A005900580045320045310024
-:100E60005A0059004F6666004F6E005800544D43BB
-:100E7000204472697665727300537465616C74689E
-:100E800043686F7020456E61626C656400537465E1
-:100E90007070696E67204D6F646500447269766595
-:100EA000722043757272656E7400416476616E6380
-:100EB00065642053657474696E677300466C6F7760
-:100EC000207E00466C6F770046616E20537065652A
-:100ED00064207E00426564004E6F7A7A6C65207EE5
-:100EE000005370656564004D61696E00000C0F0071
-:100EF000FE07022503BB017FFE08FE08FE05080869
-:100F000006000040F0C88888987810050808060098
-:100F100000C0F88888888888F80505050600012043
-:100F200030F830200508080600002070F820202046
-:100F300020E00509090600FF2070A8A8B88888707D
-:100F400020070505070001D86C366CD8050909068D
-:100F500000FFF8A88888888888A8F8050A0A06008B
-:100F6000FE205050505088A8A88870030303060044
-:100F70000340A040FFFFFFFFFFFFFFFFFFFFFFFF5A
-:100F8000FFFFFFFFFFFFFFFFFFFF0000000605FF61
-:100F90000107070602008080808080008003030331
-:100FA000060105A0A0A005060606000050F8505056
-:100FB000F8500509090600FF2070A8A07028A87045
-:100FC00020050707060000C8C810204098980507AC
-:100FD0000706000040A0A040A89068010303060295
-:100FE000058080800309090601FF20404080808041
-:100FF0004040200309090601FF8040402020204096
-:10100000408005070706000020A8702070A8200572
-:1010100005050600012020F820200203030601FF39
-:10102000C04080050101060003F80202020601002B
-:10103000C0C00507070600000810102040408005CA
-:101040000707060000708898A8C88870030707067D
-:10105000010040C040404040E00507070600007026
-:101060008808102040F8050707060000F80810302F
-:1010700008887005070706000010305090F810101F
-:10108000050707060000F880F008088870050707C4
-:10109000060000304080F0888870050707060000D1
-:1010A000F808101020202005070706000070888827
-:1010B0007088887005070706000070888878081017
-:1010C00060020505060100C0C000C0C00206060699
-:1010D00001FFC0C000C0408003050506010120409B
-:1010E000804020050303060002F800F8030505060A
-:1010F000010180402040800507070600007088102D
-:10110000202000200507070600007088B8A8B880D6
-:1011100070050707060000708888F888888805072A
-:1011200007060000F04848704848F0050707060029
-:101130000070888080808870050707060000F048EE
-:1011400048484848F0050707060000F88080F0800E
-:1011500080F8050707060000F88080F08080800591
-:1011600007070600007088808098887005070706CA
-:101170000000888888F8888888030707060100E04F
-:101180004040404040E005070706000038101010BE
-:101190001090600507070600008890A0C0A0908806
-:1011A000050707060000808080808080F80507071B
-:1011B00006000088D8A888888888050707060000E8
-:1011C0008888C8A89888880507070600007088885E
-:1011D00088888870050707060000F08888F08080FE
-:1011E0008005070706000070888888A890680507B2
-:1011F00007060000F08888F0A09088050707060021
-:101200000070888070088870050707060000F820C5
-:10121000202020202005070706000088888888886D
-:1012200088700507070600008888888850502005C8
-:10123000070706000088888888A8A85005070706C1
-:10124000000088885020508888050707060000881D
-:10125000885020202020050707060000F8081020ED
-:101260004080F80309090601FFE0808080808080CB
-:1012700080E00507070600008040402010100803AA
-:1012800009090601FFE020202020202020E005039E
-:10129000030600052050880501010600FEF803033F
-:1012A000030601058040200505050600007008784A
-:1012B00088780507070600008080F0888888F00598
-:1012C000050506000070808088700507070600008D
-:1012D000080878888888780505050600007088F079
-:1012E0008070050707060000304840E04040400598
-:1012F00007070600FE7088888878087005070706CB
-:1013000000008080F0888888880307070601004075
-:1013100000C0404040E00409090601FE1000301002
-:10132000101010906005070706000080808890E08C
-:101330009088030707060100C04040404040E00598
-:101340000505060000D0A8A8A8A805050506000008
-:10135000B0C88888880505050600007088888870F0
-:101360000507070600FEF0888888F08080050707DB
-:101370000600FE78888888780808050505060000BC
-:10138000B0C880808005050506000078807008F0F0
-:101390000507070600002020F82020201805050575
-:1013A000060000888888986805050506000088887A
-:1013B0008850200505050600008888A8A850050566
-:1013C0000506000088502050880507070600FE88A3
-:1013D000888850204080050505060000F810204050
-:1013E000F80309090601FF204040408040404020AA
-:1013F0000109090602FF8080808080808080800350
-:1014000009090601FF80404040204040408005031C
-:101410000306000248A890FF486F6D696E6720467A
-:1014200061696C6564006F70656E0054524947478E
-:1014300045524544003A20007A5F6D696E00795F3D
-:101440006D696E00785F6D6178005265706F7274BF
-:10145000696E6720656E6473746F70207374617455
-:1014600075730A000000184300009A4200001643FA
-:101470000000E6C20000A8C20000000020746F6FE8
-:10148000206C6F6E6720657874727573696F6E205B
-:1014900070726576656E7465640A0020636F6C64B3
-:1014A00020657874727573696F6E207072657665E9
-:1014B0006E7465640A00000018430000A8C20000B2
-:1014C00000005761726E696E673A20486F6D696EF1
-:1014D000672042756D702044697669736F72203C95
-:1014E00020310A00020204008085430000214300ED
-:1014F0000016430000A0400000A040000000400093
-:10150000000001000000010000800055555500005A
-:1015100000400033333300AAAA2A00499224000075
-:10152000002000C7711C0099991900D1451700557A
-:101530005515003BB1130024491200111111000090
-:101540000010000F0F0F00E3380E0043790D00CCA0
-:10155000CC0C00C3300C00E8A20B0064210B00AAE5
-:10156000AA0A00703D0A009DD80900427B0900923A
-:10157000240900DCD3080088880800104208000015
-:10158000000800F0C1070087870700755007007149
-:101590001C07003EEB0600A1BC0600699006006631
-:1015A000660600703E06006118060017F405007418
-:1015B000D105005BB00500B29005006272050055D0
-:1015C00055050078390500B81E0500050505004ED3
-:1015D000EC040087D40400A1BD040090A7040049D6
-:1015E000920400C17D0400EE690400C75604004463
-:1015F0004404005C3204000821040041100400008F
-:101600000004003FF00300F8E0030026D20300C30B
-:10161000C30300CCB503003AA803000A9B030038BB
-:101620008E0300C08103009F750300D06903005042
-:101630005E03001D53030034480300913D03003353
-:1016400033030016290300381F03009715030030E9
-:101650000C0300030303000BFA020049F10200BA75
-:10166000E802005CE002002DD802002DD0020059F3
-:10167000C80200B0C0020031B90200DAB10200AA0B
-:10168000AA0200A0A30200BC9C0200FA9502005C22
-:101690008F0200DF88020082820200457C02002760
-:1016A00076020027700200436A02007C640200D0C8
-:1016B0005E02003F590200C8530200FFFDFCFAF829
-:1016C000F6F4F2F0EEECEAE9E7E5E3E1E0DEDCDA9D
-:1016D000D9D7D5D4D2D0CFCDCBCAC8C7C5C3C2C045
-:1016E000BFBDBCBAB9B7B6B4B3B2B0AFADACAAA9BE
-:1016F000A8A6A5A4A2A1A09E9D9C9A99989795940E
-:101700009392908F8E8D8B8A89888786848382813D
-:10171000807F7E7D7B7A797877767574737271704D
-:101720006F6E6D6C6B6A6968676665646362616041
-:101730005F5E5D5C5B5A5958585756555453525129
-:1017400050504F4E4D4C4B4A4A49484746464544F7
-:1017500043424241403F3E3E3D3C3B3B3A393838B4
-:1017600037363535343332323130302F2E2E2D2C62
-:101770002B2B2A2929282727262525242323222104
-:101780002120201F1E1E1D1C1C1B1B1A1919181896
-:10179000171616151514131312121111100F0F0E20
-:1017A0000E0D0D0C0C0B0A0A09090808070706069E
-:1017B0000505040403030202010000DB0FC93F45D5
-:1017C000BCDA3F8FB30240FCF0274056946140FEE4
-:1017D0004B9B4084A5D840E0231841346A5641E829
-:1017E00059974164DBD5416E271742B4B75542CEB5
-:1017F0001A9742C8AED542B5885A43D40684BFA6CC
-:101800005FA7BF7443E0BF10B11AC01C2C58C0E8DA
-:10181000F697C0B849D6C04E4E17C124D355C180E3
-:101820002497C1A0B5D5C1121A17C244AE55C278CB
-:101830001797C26CACD5C267885AC320746F6F20EB
-:101840006C6F6E6720657874727573696F6E207047
-:10185000726576656E7465640A0020636F6C64203F
-:10186000657874727573696F6E2070726576656ED7
-:101870007465640A0053657474696E6773205374E9
-:101880006F72656400290A002062797465733B20D9
-:10189000637263200053657474696E6773205374B8
-:1018A0006F726564202800454550524F4D20496EA7
-:1018B000697469616C697A65640A0048617264637D
-:1018C0006F6465642044656661756C74205365744B
-:1018D00074696E6773204C6F616465640020286DC5
-:1018E0006D290020460020420020480020204D3174
-:1018F00034352053004D6174657269616C206865F0
-:101900006174757020706172616D657465727300C9
-:1019100020204D39303600205431204500205430ED
-:101920002045005374657070657220647269766535
-:10193000722063757272656E740020204D353639E1
-:1019400020533100543120450054302045002058A8
-:1019500000447269766572207374657070696E6791
-:10196000206D6F64650020204D3134392043203BC9
-:1019700020556E69747320696E2043656C736975B8
-:10198000730A0054656D70657261747572652055D7
-:101990006E697473002020473231203B004C696E21
-:1019A00065617220556E69747300454550524F4D04
-:1019B000206461746173697A65206572726F722E3A
-:1019C0000A00290A002062797465733B2063726300
-:1019D00020002073746F7265642073657474696E7F
-:1019E00067732072657472696576656420280020CB
-:1019F0002863616C63756C6174656429210A002039
-:101A0000213D2000454550524F4D20435243206D0B
-:101A100069736D61746368202D202873746F72651B
-:101A2000642920002053697A653A2000496E646574
-:101A3000783A200000007A4300007A430000A04179
-:101A40000000C8428747BC428747BC420000C843E9
-:101A5000E78CC042E8030000E803000064000000D7
-:101A600088130000204D61726C696E3D563836292E
-:101A70000A00454550524F4D2076657273696F6E6E
-:101A8000206D69736D617463682028454550524F1D
-:101A90004D3D0024F4D43050C38E20C2A2401782A2
-:101AA0008B7011127A910D816CD90AA861E108C777
-:101AB000586607615143061E4B5D05C145A7041AD0
-:101AC000411104093D9803713931034036DB026549
-:101AD000339102D4305402802E1D02632CEE017526
-:101AE0002AC501B028A001102781018F2564012B90
-:101AF000244B01E0223401AC211F018D200D018017
-:101B00001FFC00841EED00971DDF00B81CD200E60C
-:101B10001BC600201BBC00641AB200B219A8000A40
-:101B200019A0006A189900D117910040178B00B5D1
-:101B300016840031167E00B31579003A157300C77C
-:101B4000146F0058146A00EE1366008813630025B2
-:101B5000135E00C7125B006C12570015125400C1CF
-:101B600011510070114F0021114B00D61049008D0A
-:101B70001047004610440002104200C00F40008091
-:101B80000F3E00420F3C00060F3B00CB0E38009387
-:101B90000E37005C0E3500270E3400F30D3200C105
-:101BA0000D3100900D3000600D2E00320D2D00051E
-:101BB0000D2C00D90C2B00AE0C2900850C29005CE3
-:101BC0000C2700350C27000E0C2600E80B2400C45F
-:101BD0000B2400A00B23007D0B23005A0B2100399E
-:101BE0000B2100180B2000F80A1F00D90A1E00BBA9
-:101BF0000A1E009D0A1D00800A1D00630A1C004782
-:101C00000A1B002C0A1B00110A1A00F7091A00DD32
-:101C1000091900C4091900AB091900920917007BC2
-:101C2000091800630917004C091600360916002030
-:101C30000916000A091500F5081500E0081400CC83
-:101C4000081400B8081400A4081400900813007DBC
-:101C50000812006B081300580812004608120034DE
-:101C6000081100230811001208110001081100F0EA
-:101C7000071000E0071000D0071000C0071000B0E8
-:101C8000070F00A107100091070E0083070F0074D3
-:101C9000070F0065070E0057070E0049070E003BAF
-:101CA000070D002E070E0020070D0013070D00067C
-:101CB000070D00F9060C00ED060D00E0060C00D43F
-:101CC000060C00C8060C00BC060C00B0060C00A4F4
-:101CD000060B0099060C008D060B0082060B0077A0
-:101CE000060B006C060B0061060A0057060B004C41
-:101CF000060A0042060A0038060A002E060A0024D8
-:101D0000060A001A060A001006090007060A00FD66
-:101D1000050900F4050900EB050900E2050900D9F1
-:101D2000050900D0050900C7050900BE050900B571
-:101D3000050800AD050800A50509009C05080094EC
-:101D40000508008C050800840508007C050800745F
-:101D50000508006C050700650508005D05070056CD
-:101D60000508004E05070047050700400508003834
-:101D7000050700310507002A050700230507001C99
-:101D8000050600160507000F0507000805060002F6
-:101D9000050700FB040600F5040700EE040600E852
-:101DA000040600E2040700DB040600D5040600CFA9
-:101DB000040600C9040600C3040600BD040600B7FB
-:101DC000040600B1040500AC040600A6040600A049
-:101DD0000405009B04060095040500900406008A93
-:101DE00004050085040500800406007A04050075DA
-:101DF000040500700405006B04050066040500611D
-:101E00000405005C04050057040500520405004D5C
-:101E100004050048040500430405003E0404003A9C
-:101E200004050035040500300404002C04050027D7
-:101E3000040400230405001E0404001A0404001610
-:101E4000040500110404000D040400090405000445
-:101E500004040000040400FC030400F8030400F47C
-:101E6000030400F0030400EC030400E8030400E4AE
-:101E7000030400E0030400DC030400D8030400D4DE
-:101E8000030400D0030400CC030400C8030300C50E
-:101E900003030024F404D9201BC40C5C0E9804C472
-:101EA000095F0265077101F405F900FB04B30048FE
-:101EB000048700C10369005803550003034500BEB1
-:101EC000023A008402310053022A0029022500044C
-:101ED000022000E4011C00C8011900AF011700989E
-:101EE0000114008401130071011000610110005100
-:101EF000010E0043010D0036010B002B010B0020E9
-:101F0000010B00150109000C01090003010800FB89
-:101F1000000800F3000800EB000700E4000600DE04
-:101F2000000600D8000600D2000600CC000500C75D
-:101F3000000500C2000500BD000400B9000400B5A2
-:101F4000000400B1000400AD000400A9000400A5D5
-:101F5000000300A20003009F0004009B0003009800
-:101F60000003009500020093000300900003008D21
-:101F70000002008B0003008800020086000200843B
-:101F8000000300810002007F0002007D0002007B50
-:101F90000002007900020077000100760002007460
-:101FA00000020072000100710002006F0002006D6B
-:101FB0000001006C0002006A000100690002006775
-:101FC000000100660001006500010064000200627B
-:101FD00000010061000100600001005F0002005D7F
-:101FE0000001005C0001005B0001005A0001005983
-:101FF0000001005800010057000100560001005583
-:102000000001005400010053000000530001005281
-:1020100000010051000100500001004F0001004E7E
-:102020000000004E0001004D0001004C0001004B7B
-:102030000000004B0001004A000100490001004877
-:102040000000004800010047000100460000004673
-:10205000000100450000004500010044000100436C
-:102060000000004300010042000000420001004166
-:1020700000000041000100400001003F0000003F5F
-:102080000001003E0000003E0001003D0000003D58
-:102090000001003C0000003C0000003C0001003B4F
-:1020A0000000003B0001003A0000003A0001003946
-:1020B000000000390001003800000038000000383E
-:1020C0000001003700000037000100360000003634
-:1020D000000000360001003500000035000000352A
-:1020E000000100340000003400000034000100331F
-:1020F0000000003300000033000100320000003215
-:102100000000003200010031000000310000003109
-:102110000001003000000030000000300001002FFE
-:102120000000002F0000002F0000002F0001002EF3
-:102130000000002E0000002E0001002D0000002DE8
-:102140000000002D0000002D0001002C0000002CDC
-:102150000000002C0000002C0001002B0000002BD0
-:102160000000002B0000002B0001002A0000002AC4
-:102170000000002A0000002A0001002900000029B8
-:1021800000000029000000290000002900010028AB
-:10219000000000280000002800000028000000289F
-:1021A0000001002700000027000000270000002792
-:1021B0000000002700010026000000260000002685
-:1021C0000000002600000026000100250000002578
-:1021D000000000250000002500000025000000256B
-:1021E000000100240000002400000024000000245E
-:1021F0000000002400010023000000230000002351
-:102200000000002300000023000000230000002342
-:102210000001002200000022000000220000002235
-:102220000000002200000022000100210000002127
-:10223000000000210000002100000021000000211A
-:10224000000000210001002000000020000000200C
-:1022500000000020000000200000002000000020FE
-:10226000000000200001001F0000001F0000001FF0
-:102270000000001F0000001F0000001F0000001FE2
-:102280000001001E0000001E0000001E0000001ED5
-:10229000000000393000003325000087190000B02D
-:1022A0000F0000DB080000BD040000740200003FC6
-:1022B00001000020436F756E7420583A00453200CB
-:1022C000426564004531004500626564002C20735E
-:1022D000797374656D2073746F7070656421204824
-:1022E00065617465725F49443A20004572723A2014
-:1022F0004D415854454D50004D415854454D502086
-:102300007472696767657265640048656174696EB7
-:1023100067204661696C65640048656174696E6731
-:10232000206661696C6564004572723A204D494EC1
-:1023300054454D50004D494E54454D5020747269DE
-:1023400067676572656400544845524D414C2052A0
-:10235000554E4157415900546865726D616C205269
-:10236000756E6177617900202F0020400020424087
-:102370003A0020403A00496E76616C6964206578C5
-:102380007472756465720A004163746976652045EC
-:10239000787472756465723A20000009121B242D4E
-:1023A000363F48415A536C657E7719100B023D3415
-:1023B0002F265158434A757C676E323B2029161FE1
-:1023C000040D7A7368615E574C452B2239300F0635
-:1023D0001D14636A7178474E555C646D767F404981
-:1023E000525B2C253E3708011A137D746F665950D5
-:1023F0004B42353C272E1118030A565F444D727B21
-:1024000060691E170C053A3328214F465D546B62F4
-:102410007970070E151C232A31384148535A656CD0
-:10242000777E09001B122D243F3658514A437C7594
-:102430006E671019020B343D262F737A6168575E60
-:10244000454C3B3229201F160D046A6378714E47B4
-:102450005C55222B3039060F141D252C373E010800
-:10246000131A6D647F7649405B523C352E27181154
-:102470000A03747D666F5059424B171E050C333AA0
-:1024800021285F564D447B7269600E071C152A2374
-:102490003831464F545D626B707900002110422044
-:1024A00063308440A550C660E770088129914AA135
-:1024B0006BB18CC1ADD1CEE1EFF1311210027332AC
-:1024C0005222B5529442F772D662399318837BB385
-:1024D0005AA3BDD39CC3FFF3DEE36224433420043C
-:1024E0000114E664C774A44485546AA54BB52885D5
-:1024F0000995EEE5CFF5ACC58DD55336722611168C
-:102500003006D776F6669556B4465BB77AA7199724
-:102510003887DFF7FEE79DD7BCC7C448E558866813
-:10252000A7784008611802282338CCC9EDD98EE974
-:10253000AFF9488969990AA92BB9F55AD44AB77AEB
-:10254000966A711A500A333A122AFDDBDCCBBFFBC4
-:102550009EEB799B588B3BBB1AABA66C877CE44CFB
-:10256000C55C222C033C600C411CAEED8FFDECCD14
-:10257000CDDD2AAD0BBD688D499D977EB66ED55ECB
-:10258000F44E133E322E511E700E9FFFBEEFDDDF64
-:10259000FCCF1BBF3AAF599F788F8891A981CAB1F0
-:1025A000EBA10CD12DC14EF16FE18010A100C23022
-:1025B000E3200450254046706760B9839893FBA3DD
-:1025C000DAB33DC31CD37FE35EF3B1029012F32272
-:1025D000D2323542145277625672EAB5CBA5A8952D
-:1025E00089856EF54FE52CD50DC5E234C324A014C2
-:1025F00081046674476424540544DBA7FAB79987BD
-:10260000B8975FE77EF71DC73CD7D326F236910611
-:10261000B01657667676154634564CD96DC90EF904
-:102620002FE9C899E9898AB9ABA944586548067861
-:102630002768C018E1088238A3287DCB5CDB3FEB1C
-:102640001EFBF98BD89BBBAB9ABB754A545A376AB1
-:10265000167AF10AD01AB32A923A2EFD0FED6CDDEC
-:102660004DCDAABD8BADE89DC98D267C076C645C01
-:10267000454CA23C832CE01CC10C1FEF3EFF5DCFFC
-:102680007CDF9BAFBABFD98FF89F176E367E554E51
-:10269000745E932EB23ED10EF01E7C3C3E5E2B3D0E
-:1026A0003F2F5B5D3B2C2A225C0043616E6E6F7492
-:1026B000206F70656E2073756264697220004D65CD
-:1026C00064696120496E6974204661696C005344F5
-:1026D0002063617264206F6B0A006F70656E526FC9
-:1026E0006F74206661696C65640A00766F6C756D45
-:1026F000652E696E6974206661696C65640A004EB6
-:102700006F20534420636172640A000A4D32340022
-:102710004D3233202573002E0A006F70656E2066DF
-:1027200061696C65642C2046696C653A20004669D5
-:102730006C652073656C65637465640A0020536979
-:102740007A653A200046696C65206F70656E656435
-:102750003A2000454E4420535542524F5554494E5D
-:10276000450A002220706F73002220706172656E2E
-:10277000743A2200535542524F5554494E45204316
-:10278000414C4C207461726765743A220053756243
-:1027900063616C6C204F766572666C6F770045786C
-:1027A000636565646564206D617820535542524FBE
-:1027B0005554494E452064657074683A00577269F3
-:1027C00074696E6720746F2066696C653A200043F7
-:1027D0004F4D4D554E49434154494F4E0044525977
-:1027E00052554E004552524F525300494E464F00EB
-:1027F0004543484F004572726F7220777269746961
-:102800006E6720746F20454550524F4D210A00538A
-:10281000544F505045442E20005072696E746572BA
-:102820002073746F707065642064756520746F2008
-:102830006572726F72732E20466978207468652005
-:102840006572726F7220616E6420757365204D39F8
-:10285000393920746F20726573746172742E202868
-:1028600054656D706572617475726520697320724C
-:10287000657365742E2053657420697420616674D5
-:1028800065722072657374617274696E67290A00DB
-:102890004E6F20436865636B73756D20776974684C
-:1028A000206C696E65206E756D6265722C204C61BE
-:1028B0007374204C696E653A20004E6F2043686542
-:1028C000636B73756D2077697468206C696E652021
-:1028D0006E756D6265722C204C617374204C696E4C
-:1028E000653A2000636865636B73756D206D69736D
-:1028F0006D617463682C204C617374204C696E6543
-:102900003A20004C696E65204E756D6265722069D3
-:1029100073206E6F74204C617374204C696E652057
-:102920004E756D6265722B312C204C617374204C96
-:10293000696E653A20004D3131300053657269612E
-:102940006C20737461747573206D69736D61746349
-:10295000680A0053442072656164206572726F7268
-:102960000A004B494C4C20627574746F6E2F70696D
-:102970006E0A002121204B494C4C20636175736520
-:10298000642062792000746F6F206D756368206920
-:102990006E6163746976652074696D65202D2063AE
-:1029A000757272656E7420636F6D6D616E643A202E
-:1029B000002121204B494C4C2063617573656420D4
-:1029C00062792000627573793A207061757365646D
-:1029D00020666F7220696E7075740A006275737973
-:1029E0003A2070617573656420666F722075736537
-:1029F000720A00627573793A2070726F636573733F
-:102A0000696E670A004D656469612052656D6F7675
-:102A10006564004D6564696120496E736572746513
-:102A20006400506C65617365205265736574005075
-:102A300052494E5445522048414C54454400255378
-:102A40003A202553004B494C4C45442E20005072EF
-:102A5000696E7465722068616C7465642E206B69A0
-:102A60006C6C28292063616C6C6564210A00006528
-:102A700063686F3A004572726F723A00486F74650E
-:102A80006E6420746F6F20636F6C640A005072650F
-:102A9000737320627574746F6E20746F2072657327
-:102AA000756D650A00496E736572742066696C61A4
-:102AB0006D656E7420616E64207072657373206240
-:102AC0007574746F6E0A005072657373206275744A
-:102AD000746F6E20746F2068656174206E6F7A7AEF
-:102AE0006C650A004C4F570048494748004F4B005F
-:102AF0004572726F723A20416C6C200020636F6ED9
-:102B00006E656374696F6E2E2E2E2000546573748B
-:102B1000696E6720004C4F570048494748004F4BAB
-:102B2000004572726F723A20416C6C200020636F16
-:102B30006E6E656374696F6E2E2E2E200054657361
-:102B400074696E6720004C4F570048494748004F52
-:102B50004B004572726F723A20416C6C200020630A
-:102B60006F6E6E656374696F6E2E2E2E2000546535
-:102B70007374696E6720004C4F57004849474800FE
-:102B80004F4B004572726F723A20416C6C200020EE
-:102B9000636F6E6E656374696F6E2E2E2E20005407
-:102BA000657374696E6720004C4F57004849474869
-:102BB000004F4B004572726F723A20416C6C2000DE
-:102BC00020636F6E6E656374696F6E2E2E2E20000B
-:102BD00054657374696E672000544D4320434F4E13
-:102BE0004E454354494F4E204552524F52002044C7
-:102BF0000020204D32303020540020204D32303023
-:102C0000205300202844697361626C6564293A008E
-:102C100046696C616D656E742073657474696E6766
-:102C2000730020204D3230312058004D6178204112
-:102C30006363656C65726174696F6E2028756E6977
-:102C400074732F7332290020204D32303320580006
-:102C50004D617820666565647261746573202875BE
-:102C60006E6974732F73290020520020204D32307A
-:102C700034205000416363656C65726174696F6EE6
-:102C80002028756E6974732F7332292028503C7088
-:102C900072696E742D616363656C3E20523C72658F
-:102CA00074726163742D616363656C3E20543C747F
-:102CB000726176656C2D616363656C3E2900204A04
-:102CC0000020540020530020204D32303520420097
-:102CD000416476616E6365642028423C6D696E5F75
-:102CE0007365676D656E745F74696D655F75733E5E
-:102CF00020533C6D696E5F66656564726174653E04
-:102D000020543C6D696E5F74726176656C5F6665B8
-:102D10006564726174653E204A3C6A756E635F64E7
-:102D200065763E290020204D32313700546F6F6C9C
-:102D30002D6368616E67696E670020204D323138FF
-:102D4000205400486F74656E64206F666673657406
-:102D5000730020440020490020204D3330312050A2
-:102D600000486F74656E6420504944004F46460029
-:102D70004F4E0020204D61783A2000200020204D49
-:102D8000696E3A2000203B200020204D3231312056
-:102D90005300536F667420656E6473746F707300B4
-:102DA000203B00205500204C0020204D36303320A1
-:102DB000540046696C616D656E74206C6F61642FA0
-:102DC000756E6C6F616400737072656164437963E2
-:102DD0006C6500737465616C746843686F70002083
-:102DE000647269766572206D6F64653A090073706C
-:102DF000726561644379636C6500737465616C74BA
-:102E00006843686F700020647269766572206D6F28
-:102E100064653A09007370726561644379636C6537
-:102E200000737465616C746843686F70002064722D
-:102E300069766572206D6F64653A0900737072651A
-:102E400061644379636C6500737465616C74684395
-:102E5000686F700020647269766572206D6F6465BA
-:102E60003A09007370726561644379636C6500733D
-:102E70007465616C746843686F7000206472697671
-:102E80006572206D6F64653A0900202E6873747254
-:102E9000743A2000202E68656E643A200020636832
-:102EA0006F70706572202E746F66663A2000202E57
-:102EB00068737472743A2000202E68656E643A203C
-:102EC000002063686F70706572202E746F66663ABA
-:102ED0002000202E68737472743A2000202E6865DA
-:102EE0006E643A20002063686F70706572202E74E3
-:102EF0006F66663A2000202E68737472743A200060
-:102F0000202E68656E643A20002063686F707065DB
-:102F100072202E746F66663A2000202E68737472D9
-:102F2000743A2000202E68656E643A2000206368A1
-:102F30006F70706572202E746F66663A20003F5382
-:102F4000206F7574206F662072616E67652028316E
-:102F50002E2E38290A003F50206F7574206F66208E
-:102F600072616E676520282D332E2E3132290A00BA
-:102F70003F4F206F7574206F662072616E67652009
-:102F800028312E2E3135290A003B200020496E764B
-:102F9000616C69642065787472756465722000479D
-:102FA000322F47332062616420706172616D6574F5
-:102FB0006572730A00536C6565702E2E2E00436C8B
-:102FC00069636B20746F20526573756D652E2E2EAC
-:102FD000004E6F204D6F76652E00456E6420666949
-:102FE0006C65206C6973740A00426567696E2066BF
-:102FF000696C65206C6973740A004E6F206D65649E
-:1030000069610A00286E6F2066696C652900437546
-:103010007272656E742066696C653A2000534420B4
-:103020007072696E74696E67206279746520004EF3
-:103030006F74205344207072696E74696E670A0061
-:103040002E0A0044656C6574696F6E206661696C58
-:1030500065642C2046696C653A200046696C6520E1
-:1030600064656C657465643A005072696E742074AE
-:10307000696D653A20000A53746174733A20466999
-:103080006C616D656E7420757365643A20002C2048
-:103090004C6F6E67657374206A6F623A2000546FDC
-:1030A00074616C2074696D653A20005374617473A7
-:1030B0003A20002C204661696C65643A20002C207F
-:1030C00046696E69736865643A20005072696E746F
-:1030D000733A200053746174733A20006F6B006F71
-:1030E000666600F027EB27E427DD27CF274445421B
-:1030F00055473A004D3131322053687574646F770B
-:103100006E004D3131332053004D616B6572626F3B
-:1031100074205265706C696361746F72204F46460B
-:103120002E002F2F004D31343520533C696E6465DD
-:10313000783E206F7574206F662072616E6765201F
-:1031400028302D31290A003F4A206F7574206F66A0
-:103150002072616E67652028302E303120746F2018
-:10316000302E33290A0046523A0020466C6F773AD7
-:103170002000496E76616C696420657874727564AC
-:1031800065720A0064697300656E0043290A006174
-:10319000626C656420286D696E2074656D70200016
-:1031A000436F6C6420657874727564657320617216
-:1031B0006520004F666673657473204170706C699A
-:1031C0006564004572723A20546F6F206661722107
-:1031D00000546F6F206661722066726F6D20726599
-:1031E000666572656E636520706F696E740A00456E
-:1031F0004550524F4D204F4B0A002064726976654E
-:10320000722063757272656E743A20002064726970
-:103210007665722063757272656E743A2000206460
-:1032200072697665722063757272656E743A2000F9
-:10323000206472697665722063757272656E743A85
-:103240002000206472697665722063757272656E03
-:10325000743A200020204D323036205800486F6DDF
-:1032600065206F6666736574004361703A00434F72
-:103270004E4649475F4558504F5254004D454154C2
-:103280005041434B00434F4F4C45525F54454D50C6
-:1032900045524154555245004348414D4245525FC5
-:1032A00054454D50455241545552450042414259B2
-:1032B0005354455050494E470041524353004D4FDF
-:1032C00054494F4E5F4D4F44455300544845524D6D
-:1032D000414C5F50524F54454354494F4E0045585E
-:1032E00054454E4445445F4D323000435553544F8E
-:1032F0004D5F4649524D574152455F55504C4F41E5
-:1033000044004C464E5F5752495445004C4F4E477F
-:103310005F46494C454E414D45004155544F52453D
-:10332000504F52545F53445F5354415455530053CC
-:10333000445F575249544500524550454154004D51
-:10334000554C54495F564F4C554D450053444341ED
-:1033500052440050524F4D50545F535550504F52AD
-:103360005400484F53545F414354494F4E5F434FBD
-:103370004D4D414E445300454D455247454E4359EE
-:103380005F50415253455200434153455F4C4947BA
-:1033900048545F4252494748544E45535300544F96
-:1033A00047474C455F4C494748545300534F465498
-:1033B000574152455F504F574552004255494C4482
-:1033C0005F50455243454E54004C4556454C494E7E
-:1033D000475F44415441005A5F50524F42450052AA
-:1033E000554E4F5554004155544F4C4556454C0091
-:1033F0005052494E545F4A4F420050524F47524537
-:103400005353004155544F5245504F52545F544509
-:103410004D50004155544F5245504F52545F504FFC
-:103420005300564F4C554D45545249430045455065
-:10343000524F4D0042494E4152595F46494C455FFB
-:103440005452414E534645520053455249414C5FF8
-:10345000584F4E5F584F4646004649524D574152CD
-:10346000455F4E414D453A4D61726C696E20322E7A
-:10347000302E392E352028417072203131203230E3
-:1034800032342031373A30343A31392920534F55CC
-:103490005243455F434F44455F55524C3A67697408
-:1034A0006875622E636F6D2F4D61726C696E46692F
-:1034B000726D776172652F4D61726C696E2050522A
-:1034C0004F544F434F4C5F56455253494F4E3A313C
-:1034D0002E30204D414348494E455F545950453A9E
-:1034E0004D616B6572626F74205265706C696361C7
-:1034F000746F722045585452554445525F434F559E
-:103500004E543A3220555549443A636564653261F8
-:1035100032662D343161322D343734382D396231F1
-:10352000322D6335356336326633363766660A00C8
-:1035300020204D3235302043004C434420436F6EF1
-:103540007472617374004D383400446F6E6520707E
-:1035500072696E74696E672066696C650A004D3722
-:1035600037004D3331002569730025696D202569C9
-:1035700073002569682025696D2025697300256918
-:1035800064202569682025696D20256973002569F7
-:103590007920256964202569682025696D202569C1
-:1035A0007300436F6F6C696E672E2E2E0045256386
-:1035B0002025530042656420436F6F6C696E672E4F
-:1035C0002E2E004265642048656174696E672E2E58
-:1035D0002E00206661696C65642120426164206868
-:1035E00065617465722069640A0050494420417520
-:1035F000746F74756E650023646566696E6520443A
-:10360000454641554C545F004B6420004B692000F7
-:103610004B7020002066696E6973686564212050D4
-:10362000757420746865206C617374204B702C2055
-:103630004B6920616E64204B6420636F6E7374610C
-:103640006E74732066726F6D2062656C6F7720698F
-:103650006E746F20436F6E66696775726174696F0F
-:103660006E2E680A00504944204175746F74756E5F
-:103670006500206661696C6564212074696D656F01
-:1036800075740A00504944204175746F74756E65F5
-:1036900000206661696C6564212054656D706572F7
-:1036A000617475726520746F6F20686967680A00BD
-:1036B000504944204175746F74756E6500504944DB
-:1036C000204379636C65730025532025692F256994
-:1036D00000204B643A2000204B693A2000204B70B8
-:1036E0003A200020436C6173736963205049442081
-:1036F0000A002054753A2000204B753A2000206DB6
-:1037000061783A2000206D696E3A200020643A20EA
-:103710000020626961733A200048656174696E67D0
-:103720002E2E2E002073746172740A0050494420BA
-:103730004175746F74756E6500206661696C6564AF
-:10374000212054656D706572617475726520746FA7
-:103750006F20686967680A00504944204175746F9A
-:1037600074756E6500504944204175746F74756EB0
-:1037700065004572723A207574663820666F6E7403
-:10378000206E6F7420696E697469616C697A656412
-:103790002E004572723A207574663820666F6E741A
-:1037A000206E6F7420696E697469616C697A6564F2
-:1037B0002E00667265736800646F696E670020662C
-:1037C000696C653A20004E6F7720002F6175746F29
-:1037D00025632E670000002100240027002A002D09
-:1037E000003000330001010000040107010A01005C
-:1037F000000A0B02090C0D0E08070304010000006B
-:1038000000000000000000000000000000000000B8
-:103810000000000000000000000000121110000075
-:103820000000000000000000000000000000000098
-:1038300000000000006D61726C696E66772E6F7219
-:103840006700322E302E392E35001FFFFFFFFFFF9D
-:10385000FF600000000001FF400000000000FF804A
-:1038600000000000007F83CF00000C303F87FF8006
-:10387000000C301F867980000C000F8C30C7838CC1
-:1038800030E78C30CFC7CC31F38C30DCECEC33B983
-:103890008C30D86C6C33198C30D06C0C33198C3064
-:1038A000D86C0C33198C30DC6C0E3B198C30CF7C0F
-:1038B000079F198C30C77C038F194000000000005F
-:1038C00002600000000000061FFFFFFFFFFFF8700E
-:1038D000012C0190012701B0012201C0011D01F05E
-:1038E0000118011002130130020E0160020901905B
-:1038F000020401C002FF000003FA004003F500804B
-:1039000003F000D003EB002004E6007004E100E0C7
-:1039100004DC004005D700C005D2004006CD00D031
-:1039200006C8008007C3003008BE00F008B900C018
-:1039300009B400B00AAF00B00BAA00D00CA500007B
-:103940000EA000500F9B00C0109600501291000076
-:10395000148C00C0158700B0178200B0197D00D00C
-:103960001B7800001E730040206E0090226900F05A
-:1039700024640040275F0090295A00E02B55001076
-:103980002E500020304B0010324600E033410090B2
-:10399000353C001037370070383200A0392D00B0A8
-:1039A0003A2800A03B2300603C1E00103D19009007
-:1039B0003D1400103E0F00703E0A00C03E0500009E
-:1039C0003F0000403FFBFF803FF6FFC03FF1FF207C
-:1039D00020506C616E6E65724275666665724279E2
-:1039E0007465733A20002046726565204D656D6FE1
-:1039F00072793A200020436F6D70696C65643A20DB
-:103A000041707220313120323032340A00204C6152
-:103A1000737420557064617465643A2032303232B8
-:103A20002D30372D3239207C20417574686F723A01
-:103A3000204D2E2042616B65720A004D61726C69E7
-:103A40006E20322E302E392E350A0020536F6674C8
-:103A5000776172652052657365740A00205761743E
-:103A60006368646F672052657365740A0020427250
-:103A70006F776E206F75742052657365740A00202D
-:103A800045787465726E616C2052657365740A00C6
-:103A9000506F77657255700A0073746172740A0012
-:103AA000473237004D31303031006F6B0065727234
-:103AB0006F722077726974696E6720746F2066690F
-:103AC0006C650A00446F6E6520736176696E6720CD
-:103AD00066696C652E0A004D323900456E64737458
-:103AE0006F707300255320256320256320256320F4
-:103AF000256300205A3A0020593A0020583A0065C0
-:103B00006E6473746F7073206869743A20000000EB
-:103B100020002300260029002C002F003200000185
-:103B20000000030106010901000022002500280011
-:103B30002B002E00310034000201000005010801B5
-:103B40000B01050505050705080808080202020221
-:103B50000A0A080804040404010101010101010129
-:103B60000303030303030303040707070C0C0C0CF4
-:103B70000C0C0C0C020202020606060606060606DD
-:103B80000B0B0B0B0B0B0B0B01021020200808106A
-:103B900020401020408002010201080402010102BD
-:103BA0000408102040808040201008040201800496
-:103BB00002018040201008040201080402010102F1
-:103BC000040810204080010204081020408001FFFA
-:103BD000FF496E736572742066696C616D656E7401
-:103BE00020616E6420707265737320627574746FE7
-:103BF0006E0A00220A00556E6B6E6F776E20636F3F
-:103C00006D6D616E643A202200204500205A00202C
-:103C1000590020204D3932205800537465707320AC
-:103C200070657220756E697400486F6D652025732C
-:103C3000257325732046697273740020453A00206D
-:103C40005A3A0020593A00583A004D616B65726249
-:103C50006F74205265706C696361746F7220526575
-:103C60006164792E005072696E74696E672E2E2E13
-:103C7000005072696E7420506175736564006F6BDB
-:103C80000A00526573656E643A20000056017E0199
-:103C900011241FBECFEFD1E2DEBFCDBF00E00CBFCD
-:103CA00084B780930F1914BE0FB6F894A89580912D
-:103CB0006000886180936000109260000FBE13E086
-:103CC000A0E0B2E0ECE5F4E802E00BBF02C0079030
-:103CD0000D92AA3FB107D9F729E1AAEFB3E001C0DD
-:103CE0001D92AF30B207E1F71EE1C7E4DEE100E06C
-:103CF00006C021970109802FFE010F945C41C63454
-:103D0000D10780E00807A9F70F943E2A0D941C42C2
-:103D10000C9400000F931F93CF93DF93809147097A
-:103D200090E0EC01CC0FDD1FCC0FDD1F8E010A5D92
-:103D30001D4F880F991FFC01EE5DFD4F6081718161
-:103D4000072E000C880B990B0F94B8392AE037ED39
-:103D500043E25CE30F94173ACA54DA4F2881398161
-:103D60004A815B810F94173AF801608371838283E3
-:103D70009383DF91CF911F910F9108950F931F931C
-:103D8000CF93DF938091510990E0EC01CC0FDD1FC0
-:103D9000CC0FDD1F8E010A5D1D4F880F991FFC019E
-:103DA000EE5DFD4F60817181072E000C880B990B31
-:103DB0000F94B8392AE037ED43E25CE30F94173AE9
-:103DC000CA54DA4F288139814A815B810F94173AAE
-:103DD000F8016083718382839383DF91CF911F9178
-:103DE0000F910895CF93DF93EC01CB01BA010F94AB
-:103DF000B8392DEC3CEC4CEC5DE30F94023F0F9492
-:103E00007B3F79836883DF91CF910895E0914709E3
-:103E1000E23030F4F0E0EE52FA4F809136098083C0
-:103E20000895809197178823C1F081508093971748
-:103E3000E4EAF4E1882351F08150990B2BE1289FAB
-:103E4000F001299FF00D1124E757F94E8BE1A9E805
-:103E5000B4E101900D928A95E1F720919717211115
-:103E600005C08091A21780648093A21781E090E042
-:103E7000A0E0B0E0211103C080E090E0DC0180937D
-:103E80003B0990933C09A0933D09B0933E091092E1
-:103E9000A10581E080939F0583E0809375020895DA
-:103EA000CF93DF93EC01CB01BA010F94B8390F9493
-:103EB0007B3F6883DF91CF91089581E080934E0925
-:103EC000089582E080934E0908958F929F92AF9259
-:103ED000BF92CF92DF92EF92FF92CF936B017C0162
-:103EE00020E030E0A9010F94B13987FFA3C06DEB4A
-:103EF00077E386E095EBA70196010F94083E6B01EE
-:103F00007C0120E030E040E251E40F94173A20E0D9
-:103F100030E048EC52E40F94173A4B015C0120E08A
-:103F200030E040E251ECC701B6010F94B1391816E8
-:103F300054F420E030E048EC52E4C701B6010F949D
-:103F4000684087FD8BC020E030E0A901C701B601C1
-:103F50000F94B13987FF73C060E070E080EA90ECA5
-:103F6000A50194010F94083E20E030E040E251E4C6
-:103F70000F94023F0F94743F6B017C01F7FC64C007
-:103F800020E137E240E050E00F94C63DCA01B9019C
-:103F90002AE030E040E050E00F94C63D605D609361
-:103FA000A305C701B60128EE33E040E050E00F94CE
-:103FB000C63D9AE0892E912CA12CB12CCA01B901E1
-:103FC000A50194010F94C63D605D6093A405C701EF
-:103FD000B60124E630E040E050E00F94C63DCA014F
-:103FE000B901A50194010F94C63D605D6093A505DC
-:103FF0008EE28093A605C701B601A50194010F9436
-:10400000C63DC62FCA01B901A50194010F94C63D52
-:10401000605D6093A705C05DC093A80583EA95E045
-:10402000CF91FF90EF90DF90CF90BF90AF909F9097
-:104030008F9008956DEB77E386E095E35CCF60E0C9
-:1040400070E080EA90E48CCFF094E094D094C09437
-:10405000C11CD11CE11CF11C6DE2A1CF20E030E0BD
-:10406000A901C701B6010F94B13987FF6AC060E0AA
-:1040700070E080EA90ECA50194010F94083E20E0E6
-:1040800030E040E251E40F94023F0F94743F4B0143
-:104090005C0120E030E0A901C701B6010F9468403F
-:1040A00087FD0BC020E030E040E251E4C701B601DB
-:1040B0000F94B13960E287FD13C0B7FC47C0C5015A
-:1040C000B40128EE33E040E050E00F94C63DCA0151
-:1040D000B9012AE030E040E050E00F94C63D605D59
-:1040E0006093A405C501B40124E630E040E050E04F
-:1040F0000F94C63D8AE0C82ED12CE12CF12CCA01C8
-:10410000B901A70196010F94C63D605D6093A505B6
-:104110008EE28093A605C501B401A70196010F9414
-:10412000C63DC62FCA01B901A70196010F94C63D2D
-:10413000605D6093A705C05DC093A80584EA95E023
-:104140006FCF60E070E080EA90E495CFB094A094E7
-:1041500090948094811C911CA11CB11C6DE2C0CF75
-:10416000CF93DF93EC01CB01BA010F94B83929EC5E
-:1041700038EC48EC5EE30F94023F20E030E040E092
-:104180005FE30F94083E0F947B3F6883DF91CF91EC
-:104190000895CF93DF93EC01CB01BA010F94B839A6
-:1041A000688379838A839B83DF91CF910895CF932E
-:1041B000DF93EC01CB01BA010F94B839688379839E
-:1041C0008A839B83DF91CF910895E091470986E030
-:1041D000E802F0011124EE50FA4F8091360990E088
-:1041E00095838483089580915109882369F0809193
-:1041F000E4088770873041F482EC9DE09093F308E7
-:104200008093F2081092510908958F929F92AF9275
-:10421000BF92CF92DF92EF92FF92CF936B017C011E
-:1042200020E030E0A9010F94B13987FDC3C06DEBE8
-:1042300077E386E095E3A70196010F94083E6B01B2
-:104240007C0120E030E0A9010F94B13987FFB7C0AD
-:10425000C701B601905820E030E040E251E40F94ED
-:10426000173A20E030E040E251E40F94173A20E0A2
-:1042700030E040EA50E40F94083E20E030E040E2B5
-:1042800051E40F94023F0F94743F6B017C0160E294
-:1042900080EAC81686E8D80681E0E806F1048CF0CA
-:1042A000C701B60120EA36E841E050E00F94C63D70
-:1042B000CA01B9012AE030E040E050E00F94C63D69
-:1042C000605D6093A20560E280E1C81687E2D806CF
-:1042D000E104F1048CF0C701B60120E137E240E0CF
-:1042E00050E00F94C63DCA01B9012AE030E040E039
-:1042F00050E00F94C63D605D6093A30560E288EED8
-:10430000C81683E0D806E104F1048CF0C701B601B9
-:1043100028EE33E040E050E00F94C63DCA01B901F9
-:104320002AE030E040E050E00F94C63D605D6093CD
-:10433000A40560E284E6C816D104E104F1048CF01F
-:10434000C701B60124E630E040E050E00F94C63DDE
-:10435000CA01B9012AE030E040E050E00F94C63DC8
-:10436000605D6093A5058AE0882E912CA12CB12C6C
-:10437000C701B601A50194010F94C63DC62FCA011D
-:10438000B901A50194010F94C63D605D6093A60537
-:104390008EE28093A705C05DC093A80582EA95E0F0
-:1043A000CF91FF90EF90DF90CF90BF90AF909F9014
-:1043B0008F9008956DEB77E386E095EB3CCF20E09E
-:1043C00030E040E251E4C701B60149CF8F929F929D
-:1043D000AF92BF92CF92DF92EF92FF92CF936B0199
-:1043E0007C0120E030E0A9010F94B13987FD93C032
-:1043F0006DEB77E386E095E3A70196010F94083E05
-:104400006B017C0120E030E040E251E40F94173A68
-:1044100020E030E04AE754E40F94173A4B015C0186
-:1044200020E030E0A901C701B6010F94B13920E0C6
-:1044300030E040EA50E487FF04C020E030E040EA8A
-:1044400050ECC501B4010F94083E20E030E040E29A
-:1044500051E40F94023F0F94743F6B017C01C1142F
-:10446000D104E104F10409F45BC0F7FE59C0F094F3
-:10447000E094D094C094C11CD11CE11CF11C8DE2CD
-:104480008093A305C701B60128EE33E040E050E079
-:104490000F94C63D8AE0882E912CA12CB12CCA0124
-:1044A000B901A50194010F94C63D605D6093A40518
-:1044B0008EE28093A505C701B60124E630E040E016
-:1044C00050E00F94C63DCA01B901A50194010F94B3
-:1044D000C63D605D6093A605C701B601A5019401C4
-:1044E0000F94C63DC62FCA01B901A50194010F94CE
-:1044F000C63D605D6093A705C05DC093A80583EAD3
-:1045000095E0CF91FF90EF90DF90CF90BF90AF906C
-:104510009F908F9008956DEB77E386E095EB6CCFDD
-:1045200080E2AECFCF93DF93EC01CB01BA010F94C1
-:10453000B83920E030E040E251E40F94023F688354
-:1045400079838A839B83DF91CF9108950F94B83943
-:1045500020E030E040E251E40F94023F0C9405214A
-:10456000CF93DF93EC01CB01BA010F94B8392AE065
-:1045700037ED43E25DE30F94023F0F947B3F688386
-:1045800079838A839B83DF91CF910895CF93DF93C3
-:10459000EC01CB01BA010F94B8392AE037ED43E2C0
-:1045A0005DE30F94023F688379838A839B83DF9165
-:1045B000CF910895CF93DF93EC01CB01BA010F9413
-:1045C000B839688379838A839B83DF91CF9108957B
-:1045D000CF93DF93EC01CB01BA010F94B83920E0FF
-:1045E00030E048EC52E40F94023F688379838A8379
-:1045F0009B83DF91CF9108950F94B83920E030E08C
-:1046000048EC52E40F94023F0C94651FCF93DF9364
-:10461000EC01CB01BA010F94B8390F94743F798340
-:104620006883DF91CF910895CF93DF93EC01CB01A5
-:10463000BA010F94B83920E030E04AE754E40F940F
-:10464000023F688379838A839B83DF91CF910895AA
-:104650000F94B83920E030E04AE754E40F94023F69
-:104660000C94E621282F8FEF80931B0210924509AE
-:1046700080913B0990913C09A0913D09B0913E0980
-:10468000B7FF08C010923B0910923C0910923D09F7
-:1046900010923E0980919705882331F080913B0963
-:1046A0008093A00510929F0580919E051816FCF43A
-:1046B000082E000C990B821B91092091A005022E57
-:1046C000000C330B2817390794F097FF02C090E0D5
-:1046D00080E08093A005092E000CAA0BBB0B8093F1
-:1046E0003B0990933C09A0933D09B0933E0980910A
-:1046F000A0056623A9F09091A105891714F4809371
-:10470000A1052091A105022E000C330B2C5F3F4F19
-:10471000482F082E000C550B241735071CF4845025
-:104720008093A10508950F931F93522F2091431654
-:10473000309144162817390741F1109201049093E3
-:104740004416809343168B0130E020E000933B0930
-:1047500010933C0920933D0930933E094093A105F5
-:1047600050939E058D5C944621F41092400910925E
-:104770008F0582E08093750281E080939F051092FF
-:10478000940580931B0210923A091F910F9108958E
-:1047900020E040E070E060E08FE095E30C9493232C
-:1047A000CF93C1E0C0934009FC0180819181A28137
-:1047B000B38180931C0290931D02A0931E02B093BC
-:1047C0001F0220E040E070E060E080919C05909145
-:1047D0009D050E949323C0930104CF910895CF9328
-:1047E000DF9300D01F92CDB7DEB78DEC9CECACEC24
-:1047F000BCE389839A83AB83BC83CE0101960E947C
-:10480000D0230F900F900F900F90DF91CF910895CC
-:10481000CF93DF9300D01F92CDB7DEB78DEC9CEC29
-:10482000ACECBDE389839A83AB83BC83CE01019654
-:104830000E94D0230F900F900F900F90DF91CF9197
-:104840000895CF93DF9300D01F92CDB7DEB780E0FD
-:1048500090E0A0E8BFE389839A83AB83BC83CE0159
-:1048600001960E94D0230F900F900F900F90DF9130
-:10487000CF910895CF93DF9300D01F92CDB7DEB7CD
-:1048800080E090E0A0E2B1E489839A83AB83BC83AB
-:10489000CE0101960E94D0230F900F900F900F90A1
-:1048A000DF91CF910895E0918F05E63028F581E002
-:1048B0008E0F80938F0540913B0950913C09609188
-:1048C0003D0970913E092091A10590919E0580912E
-:1048D000400939E0E39FF0011124E65BFA4FA09113
-:1048E0004316B0914416B183A083428353836483FB
-:1048F00075832683978380870895CF93DF93EC0198
-:104900000E94532420E040E070E060E0CE01DF919F
-:10491000CF910C949323FC01A081B1811C92A281C0
-:10492000B3818C918F5F8C930280F381E02D908115
-:104930008CE0989F800D1124E5E4F6E113AE84AF7E
-:104940000895FC0184910895FC01808108950097E9
-:1049500051F0FC0180E09191992331F0907C9038E6
-:10496000D1F38F5FF8CF80E0089590E080E0089564
-:10497000CF92DF92EF92FF92CF93C82F833011F442
-:1049800060932F050F941E1D6B017C0124EA30E714
-:104990004DE75FE360911C0270911D0280911E0241
-:1049A00090911F020F94B13987FD18C08AEF90E0F3
-:1049B000A0E0B0E08C0D9D1DAE1DBF1D80933005A5
-:1049C00090933105A0933205B0933305C093100244
-:1049D000CF91FF90EF90DF90CF90089580E090E02E
-:1049E000DC01E8CFCF92DF92EF92FF920F931F93FB
-:1049F0000F941E1D009106051091070520910805D2
-:104A0000309109056B017C01C01AD10AE20AF30A50
-:104A10009701860137FD11C020910505209520934F
-:104A200005056A547C4F8F4F9F4F60930605709326
-:104A30000705809308059093090581E0909105058D
-:104A4000911101C080E01F910F91FF90EF90DF90D6
-:104A5000CF900895CF92DF92EF92FF920F94B839E2
-:104A60006B017C0120E030E0A9010F94B1392DEBFE
-:104A700037E346E055E387FF04C02DEB37E346E01C
-:104A800055EBC701B6010F94083E6B017C0120E095
-:104A900030E0A9010F94B13920E030E040E05FE35D
-:104AA00087FF04C020E030E040E05FEBC701B601C3
-:104AB0000F94083E0F94743FCB01FF90EF90DF906E
-:104AC000CF900C9492BD0F94B8390F94743FCB01E2
-:104AD0000C9492BD0F94B83929EC38EC48EC5EE3A5
-:104AE0000F94023F20E030E040E05FE30F94083E87
-:104AF0000F947B3F862F0C942ABECF93DF93CDB7C4
-:104B0000DEB720E2488559856F818E810F941E158E
-:104B1000DF91CF910895809147090C949ACC0F941E
-:104B2000B8392DEC3CEC4CEC5DE30F94023F0F9454
-:104B30007B3FCB010C94C7BDAF92BF92CF92DF9267
-:104B4000EF92FF920F931F93CF93DF9361E081E089
-:104B50000E943223C091A10505E00C0FD1E086E24E
-:104B6000E82E8AE0F82E12E01C1B9FE2C92E9AE084
-:104B7000D92EBD2EBC1AAC2EA194C1112EC0DD239E
-:104B8000D9F08091A0051816BCF040913B095091D6
-:104B90003C0960913D0970913E094F5F5F4F6F4F37
-:104BA0007F4F40933B0950933C0960933D097093BC
-:104BB0003E098F5F8093A00580917502882331F0B4
-:104BC00041E06AE37AE08A2D0F949314CF5F0C13CF
-:104BD000D4CF83E080939E051FC0C13041F59091F2
-:104BE000A005913069F0809175028823C9F11F9268
-:104BF000DF92CF92BF9281E0913051F180E028C0E6
-:104C000080913F0910923F09882369F3C0934E09B0
-:104C100080919F05882339F3DF91CF911F910F91E8
-:104C2000FF90EF90DF90CF90BF90AF900895C2308B
-:104C300069F69091A0059230A9F0809175028823C1
-:104C400079F01F92FF92EF921F9381E09230B1F6BC
-:104C50008F930E947D250F900F900F900F900F90D3
-:104C6000D0E0B4CF80913F0910923F09882329F307
-:104C7000C0934E0980919F058823F9F2CDCF809192
-:104C80007502882341F0609190057091910541E093
-:104C900081E00D94931408950D9421120D9419122E
-:104CA0000D9411120D9409120D9401126091F814D3
-:104CB0007091F9148FEB94E10D940F2160913415EC
-:104CC000709135158BEF94E10D940F216091701563
-:104CD0007091711587E395E10D940F216091AC15EA
-:104CE0007091AD1583E795E10D940F216091E81562
-:104CF0007091E9158FEA95E10D940F2160914709B4
-:104D000080913609909137090C94DCCC809151093F
-:104D10000E940CCD882341F020E040E070E060E08C
-:104D200086E996E20C9493230C94C823EF92FF92A9
-:104D30000F931F938BE4E82E8DE0F82E10E000E037
-:104D40002DE43DE048EC53E26DE57DE082E69DE038
-:104D50000F941D241F910F91FF90EF900895EF92F3
-:104D6000FF920F931F938FE3E82E8CE0F82E10E054
-:104D700000E020EC3CE04DE45EE361E47CE086E4AE
-:104D80009CE00F941D241F910F91FF90EF900895C8
-:104D9000EF92FF920F931F938EE4E82E88E0F82E97
-:104DA00010E000E021E638E043E55EE260E578E00F
-:104DB00087E598E00F941D241F910F91FF90EF90CD
-:104DC0000895CF92DF92EF92FF920F931F93CF93AC
-:104DD000DF93CDB7DEB7CDB6DEB68091FC1169E7C3
-:104DE0007FE0882311F06CEF71E1FB01019000205E
-:104DF000E9F7CF01861B970B01962DB73EB7281B0D
-:104E0000390B0FB6F8943EBF0FBE2DBF0DB71EB7BE
-:104E10000F5F1F4F80E2EDB7FEB78183C801019697
-:104E20000F94ED4183EEE82E8CE0F82E25EE3CE069
-:104E300041E05EE261EF7CE088EF9CE00F941D248E
-:104E40000FB6F894DEBE0FBECDBEDF91CF911F919D
-:104E50000F91FF90EF90DF90CF9008950F948E10F8
-:104E600010924F09109274020E9473CD882351F062
-:104E70008091A21782FD06C082E697E09093F30826
-:104E80008093F2080C94A6BB0F94B8390F947B3F23
-:104E9000862F0C9408BECF93DF9300D0CDB7DEB73A
-:104EA0008FEF89838A838B83CE0101960E94F6CA95
-:104EB0000F900F900F90DF91CF910895CF93DF93D4
-:104EC00000D0CDB7DEB78FEF89831A821B82CE0167
-:104ED00001960E94F6CA0F900F900F90DF91CF912C
-:104EE0000895CF93DF9300D0CDB7DEB78FEF8983DE
-:104EF00089E18A831B82CE0101960E94F6CA0F9037
-:104F00000F900F90DF91CF910895CF93DF9300D052
-:104F1000CDB7DEB78FEF89838BE48A831B82CE0106
-:104F200001960E94F6CA0F900F900F90DF91CF91DB
-:104F30000895CF93DF9300D0CDB7DEB719821A82E0
-:104F40008FEF8B83CE0101960E94F6CA0F900F90CF
-:104F50000F90DF91CF910895CF93DF9300D0CDB71D
-:104F6000DEB719828FEF8A838B83CE0101960E9470
-:104F7000F6CA0F900F900F90DF91CF910895CF93C5
-:104F8000DF9300D0CDB7DEB78FEF89831A828B8392
-:104F9000CE0101960E94F6CA0F900F900F90DF91FC
-:104FA000CF910895CF93DF9300D01F92CDB7DEB796
-:104FB0000F947B3F0F94B63969837A838B839C83EC
-:104FC000CE0101960E9414BC0F900F900F900F908D
-:104FD000DF91CF9108950F94B8392AE037ED43E27D
-:104FE0005DE30F94023F0C94D227CF92DF92EF92B1
-:104FF000FF92CF93DF9300D01F92CDB7DEB76B0146
-:105000007C0120E030E0A9010F94B13987FD1BC07D
-:105010006DEB77E386E095E3A70196010F94083ED8
-:1050200069837A838B839C83CE0101960E9414BC92
-:105030000F900F900F900F90DF91CF91FF90EF9016
-:10504000DF90CF9008956DEB77E386E095EBE4CFAA
-:105050000F94B8392AE037ED43E25DE30F94023F45
-:105060000C94F5270F94B8390C94F527CF92DF9262
-:10507000EF92FF926B017C0120E030E0A9010F94D8
-:10508000B13987FD26C06DEB77E386E095E3A70194
-:1050900096010F94083E6B017C0120E030E0A901ED
-:1050A0000F94B13920E030E040E05FE387FF04C0B7
-:1050B00020E030E040E05FEBC701B6010F94083E0E
-:1050C0000F94743FCB01FF90EF90DF90CF900C9442
-:1050D00013BD6DEB77E386E095EBD9CF0F94B8392C
-:1050E0000C9436280C945B8F0C945B8F0C940D8F72
-:1050F0000C940D8F0C940D8F0C940D8FEF92FF92EA
-:105100000F931F93CF93DF93EC018B017A018A8574
-:105110009B858617970731F0888199810F9419250F
-:105120001B870A87B701888199810F948B152E817F
-:105130003F81820F932F911D9F838E8390E080E0AB
-:10514000DF91CF911F910F91FF90EF9008959F9263
-:10515000AF92BF92CF92DF92EF92FF920F931F9385
-:10516000CF93DF93EC018B01942EA52E8A859B852E
-:105170008617970731F0888199810F9419251B872D
-:105180000A8788859985019649F5BC800A818E81B8
-:10519000080FC880D980D6015596ED91FC91C601C3
-:1051A0001995B80EE92CFA2C10E0F70121917F0136
-:1051B000211127C08E819F81810F911D9F838E8336
-:1051C00090E080E0DF91CF911F910F91FF90EF90E1
-:1051D000DF90CF90BF90AF909F9008950E811F8178
-:1051E000692D7A2D888199810F948B15800F912FCD
-:1051F000911D288539852817390738F681E090E018
-:10520000E1CF4B2D602FC6010F947125080F180FA9
-:10521000CCCFDF92EF92FF920F931F93CF93DF9348
-:10522000EC01D62E1CAD0BAD7C0184E0E80EF11C28
-:10523000E98DFA8DC7011995412F480F2D2D602F4B
-:10524000C7010F9471259BAD890F8BAF81E090E072
-:10525000DF91CF911F910F91FF90EF90DF90089514
-:10526000AF92BF92DF92EF92FF920F931F93CF9373
-:10527000DF938C01EB01D42E79018FE0481709F4FC
-:1052800088C0A5E14A17C1F1BAE04B130EC0EC810A
-:10529000FD8130E020E042E061E0C801199542E282
-:1052A00056E0BE01C8010F941C260A80DB81C02D88
-:1052B000F2E3DF1609F4E4C0FD1508F493C085E1BC
-:1052C000D81609F4E2C0A7E1DA1609F4FCC0B4E18B
-:1052D000DB127DC0EE81FF818D8190E0880F991FE8
-:1052E0008E0F9F1F11928E179F07E1F71A828881F8
-:1052F00081508B831C826BC0AA80BB804DE056E03E
-:10530000C8010F941C26F5014481440F406BBE0177
-:10531000C8010F94042641E0BE01C8010F940C2679
-:10532000D50116962D913C911797EC81FD8115962C
-:105330004C9166E0C801199540E0BE01C8010F9488
-:1053400014264DE056E0BE01C8010F941C26F5015D
-:105350004481440F4F5F406BBE01C8010F94042687
-:1053600041E0BE01C8010F940C26D50115964C9161
-:10537000159716962D913C91240F311DEC81FD81DE
-:1053800066E0C801199540E0BE01C8010F941426DB
-:105390008CCF41E0C8010F94142640E0BE01C80143
-:1053A0000F940C2641E8BE01C8010F940426F701B2
-:1053B000408150E05595479555954795BE01C801E8
-:1053C0000F94042640E0BE01C8010F94142681E02A
-:1053D000DF91CF911F910F91FF90EF90DF90BF90E1
-:1053E000AF900895E6E4DE1609F47CC0F7E4DF161A
-:1053F00009F47CC08BE3D812EACFD70111969C91B7
-:10540000119713968C9138E0390F813031F0833049
-:1054100011F0392F02C0392F985021E04B814917E4
-:1054200008F420E041E0391708F040E091E05A81AB
-:10543000351708F490E0322F342B932311F42423F2
-:1054400031F2F701128100E0D12C843048F490E071
-:10545000FC01EC55FD4FD08080569D4FDC010C9136
-:1054600017FF04C0B701CE010F941222F70180810B
-:105470008D0D80838181800F8183110F89F7A7CFE4
-:10548000B701CE010F941222A2CF88819A81980F82
-:105490009A832981921770F59C819F5F9C839B81E1
-:1054A000890F821710F08FEF820F8B83EE81FF81BF
-:1054B0008D8190E0880F991F8E0F9F1F11928E177C
-:1054C0009F07E1F784CFD7011C928A8111968C93B4
-:1054D00011978D81815012968C9312978B81139620
-:1054E0008C9375CF8D81F701808371CF8981D7012E
-:1054F0008C936DCF80E06CCF8F929F92AF92BF92D2
-:10550000CF92DF92EF92FF920F931F93CF93DF938F
-:10551000CDB7DEB760970FB6F894DEBF0FBECDBF34
-:105520008B0140E050E068EC72E449875A876B8752
-:105530007C8740E050E060EA70E44D875E876F87CB
-:10554000788B8130B9F1823009F462C020E030E01C
-:1055500040E050E460917E0270917F028091800271
-:10556000909181020F94083E4B017C0120E030E0D5
-:1055700046E153E40F946840181634F4812C912CC2
-:1055800086E1E82E93E4F92EF801A084B184C28468
-:10559000D3849401A701B501C6010F946840181681
-:1055A00014F054016701C501D60189839A83AB8346
-:1055B000BC8351C0BE01635F7F4FC80108960E9443
-:1055C000C4B488E0F801DE01119601900D928A952D
-:1055D000E1F7AE01475F5F4FBE016B5F7F4FCE01CA
-:1055E00001960E94A2B40E94BBB860960FB6F894D0
-:1055F000DEBF0FBECDBFDF91CF911F910F91FF9006
-:10560000EF90DF90CF90BF90AF909F908F900895D4
-:10561000F801208531854285538560917E02709125
-:105620007F0280918002909181020F94083E6B016D
-:105630007C0120E030E046E153E40F94B13987FD6E
-:1056400006C0C12CD12C26E1E22E23E4F22EC98221
-:10565000DA82EB82FC82BE01635F7F4FCE0101964E
-:10566000AECF0F931F930F941E1D0091CB08109186
-:10567000CC082091CD083091CE08011511052105E7
-:105680003105D9F5209131162223A1F1E0912F1691
-:1056900021502093311621E02E0F20932F163091A8
-:1056A0003216231302C010922F1624E0E29FF0015D
-:1056B0001124ED5CF94E0081118122813381009328
-:1056C000C7081093C8082093C9083093CA08600F10
-:1056D000711F811D911D6093CB087093CC0880933E
-:1056E000CD089093CE088091C9089091CA08892B63
-:1056F00009F0409A1F910F910895601B710B820B66
-:10570000930B97FDF7CF40981092CB081092CC08DE
-:105710001092CD081092CE08EDCF0F931F93CF9328
-:10572000DF938C01EB019091311620913216921388
-:1057300005C00E94312B0E94A591F5CF80913016B3
-:1057400034E0839FF0011124ED5CF94E1183008356
-:10575000D383C2839F5F909331168F5F281739F0F0
-:1057600080933016DF91CF911F910F910895109281
-:105770003016F8CF63E972E084E690E00E948D2B4A
-:1057800070E060E08AE090E00E948D2B6AEB72E0AE
-:1057900084E690E00C948D2B0E947CB90C94BA2B7B
-:1057A00081110C94BA2B68E270E080E991E00C94CE
-:1057B0008D2B0E94648B0C94D02B0E940FC50C94EF
-:1057C000D02B4FE350E0BC0184EF98E00D940242EF
-:1057D0000F931F93CF93DF93CDB7DEB72C970FB600
-:1057E000F894DEBF0FBECDBF80914709282F082E49
-:1057F000000C330B3F938F9385E99BE09F938F932E
-:105800008E010F5F1F4F1F930F930F944839C801EC
-:105810000E94E12B0F900F900F900F900F900F9020
-:105820002C960FB6F894DEBF0FBECDBFDF91CF919F
-:105830001F910F9108950C94E82B0F931F93CF9312
-:10584000DF93CDB7DEB72C970FB6F894DEBF0FBE4F
-:10585000CDBF80914709282F082E000C330B3F93B2
-:105860008F938CE89BE09F938F938E010F5F1F4F68
-:105870001F930F930F944839C8010E94E12B0F909A
-:105880000F900F900F900F900F902C960FB6F894EA
-:10589000DEBF0FBECDBFDF91CF911F910F91089555
-:1058A0000C941D2C0F931F93CF93DF93CDB7DEB7CE
-:1058B0002F970FB6F894DEBF0FBECDBF809147097A
-:1058C000282F082E000C330B3F938F9380E89BE02A
-:1058D0009F938F938E010F5F1F4F1F930F930F9412
-:1058E0004839C8010E94E12B0F900F900F900F9044
-:1058F0000F900F902F960FB6F894DEBF0FBECDBF5E
-:10590000DF91CF911F910F9108950C94522CEF923B
-:10591000FF920F931F93CF93DF9300D000D000D05E
-:105920001F921F92CDB7DEB77C0120919205422FC6
-:10593000022E000C550B80919305833089F1843041
-:1059400041F185E999E05F932F939F938F938E01A7
-:105950000F5F1F4F1F930F930F944839609192056B
-:10596000C7010E94DCCCC8010E94E12B0F900F9070
-:105970000F900F900F900F902B960FB6F894DEBFFC
-:105980000FBECDBFDF91CF911F910F91FF90EF9090
-:10599000089581EA99E027FDD6CF8CE899E0D3CF2E
-:1059A0008AEA99E0D0CFE091470986E0E802F00169
-:1059B0001124EE50FA4F808191810C94872CE09154
-:1059C000470987E1E89FF0011124E15CF94F8085E8
-:1059D00091850C94872C2F923F924F925F926F92F9
-:1059E0007F928F929F92AF92BF92CF92DF92EF926F
-:1059F000FF920F931F93CF93DF9300D000D0CDB7CA
-:105A0000DEB71C017A8369832B833C834D835E83DD
-:105A10002701380181E080939F050E94532483E091
-:105A20008093750230928E0520928D0589819A812E
-:105A300090938C0580938B058B819C81AD81BE8179
-:105A40008093870590938805A0938905B0938A0574
-:105A50004092830550928405609285057092860578
-:105A6000F12CE12CC0923B09D0923C09E0923D0917
-:105A7000F0923E09B0924416A0924316909282058D
-:105A8000809281058C8D8093800526960FB6F894C0
-:105A9000DEBF0FBECDBFDF91CF911F910F91FF9061
-:105AA000EF90DF90CF90BF90AF909F908F907F90BE
-:105AB0006F905F904F903F902F90089520E040E0CE
-:105AC00070E060E08DEC94E60C9493230E9497CDF7
-:105AD0000E94B4850C945E2DCF93DF93782FC62F50
-:105AE000D42F67FD36C086E06802F0011124EE5025
-:105AF000FA4F408151811416150684F4E72FF0E027
-:105B0000EE0FFF1FE054FD4F808191810F974817E2
-:105B100059070CF4CA01672F0E94DCCCD7FF1BC0C9
-:105B2000E0915109E23008F0E0E0F0E0EE52FA4F87
-:105B300086E0C802D0011124AE50BA4F14968D9160
-:105B40009C918F3F910519F010F08FEF90E08083CA
-:105B50001AC047FD18C086E0D802F0011124EE50AB
-:105B6000FA4F82819381181619065CF484369105E8
-:105B700014F084E690E090933706809336060E94F6
-:105B800022C6C7FFCDCFDF91CF910C945E2D0F932E
-:105B90001F93CF93DF93C6E3D9E0E88186E0E80264
-:105BA000F0011124EE50FA4F0081118160E0C8012C
-:105BB0000E94DCCC61E0C8010E94DCCC48816FEF20
-:105BC00080E0DF91CF911F910F910C946C2D0C947C
-:105BD000C72D60913609462F809147090C946C2D92
-:105BE0000C94E92D4FEF60913609809147090C9490
-:105BF0006C2D0C94F22D409136096FEF80E00C94DF
-:105C00006C2D89E79FE00E949B790E945E2D0D9488
-:105C10008E10611160931A02409300048C3008F0DA
-:105C20003AC0E82F880FFF0B8827E65EF14D8F4FB3
-:105C30000D945C414D2E262E312E502E342E372EB3
-:105C40003A2E462E3D2E4B2E402E432E8CE094E4D1
-:105C500021E02093400920E040E070E060E00C94F7
-:105C6000932384E194E4F4CF88E194E4F1CF8CE1D0
-:105C700094E4EECF80E294E4EBCF84E294E4E8CFC6
-:105C800088E294E4E5CF8CE294E4E2CF10924E09EE
-:105C90008CE995E2DDCF0C945E2D88E094E4D8CFBA
-:105CA00080E194E4D5CFCF930E947CB90E94648BAD
-:105CB000C82F882319F080E00E942E8A8C2F0E9422
-:105CC000D02BCF910C945E2D8CE598E09093F30847
-:105CD0008093F2080C945E2DCF93DF93C0918F05D3
-:105CE000CC23B9F0C150C0938F0589E0C89FE00173
-:105CF0001124C65BDA4F6A817B812F814E818881B6
-:105D000099810E949323888580934009DF91CF91E8
-:105D10000895DF91CF910C945E2DEF92FF920F9337
-:105D20001F93CF93DF9361E081E00E943223C09103
-:105D3000A10585E0F82EFC0ED2E0DC1B11E01C1B57
-:105D4000EC2EE194C1112BC00091A0050023A1F01D
-:105D500080917502882349F081E0011180E024E000
-:105D60004AEA5EE06E2D0F941E15CF5FFC12EACF5B
-:105D700083E080939E050CC080913F0910923F09FB
-:105D8000882331F30E946C2E80919F05882301F3B4
-:105D9000DF91CF911F910F91FF90EF900895C13047
-:105DA00001F50091A005013069F08091750288230A
-:105DB000E1F281E0013009F080E023E04BE95EE0B0
-:105DC000612FD1CF80913F0910923F09882369F359
-:105DD00084E49BE40E947D2480919F05882329F31D
-:105DE000D7CFC23011F60091A005023071F080913A
-:105DF0007502882309F4B9CF81E0023009F080E010
-:105E000023E04DE85EE06D2FAECF80913F09109208
-:105E10003F09882361F382E99CE40E947D248091FC
-:105E20009F05882321F3B4CF2F923F924F925F9228
-:105E30006F927F928F929F92AF92BF92CF92DF929A
-:105E4000EF92FF920F931F93CF93DF9300D01F9297
-:105E5000CDB7DEB70091360961E081E00E943223C0
-:105E60002091A1052B8310E0000F111F075E114F39
-:105E7000422E2B5F2983842D81958A8341E0E42E75
-:105E80004EE0F42E51EFC52E5DE0D52E63EEA62E2A
-:105E90006DE0B62E85E0582E541875ED872E7DE006
-:105EA000972E2B81211114C08091A0058C8388230B
-:105EB00009F4E3C080917502882351F081E09C8150
-:105EC000911180E024E04DE05EE06A810F941E15A0
-:105ED000612C21E02C833B8034188B819C818913B9
-:105EE0002DC0E0913609F0E0EE0FFF1FE75EF14FA5
-:105EF000859194916092470990934B0980934A0948
-:105F000010924909109248097090A0052B817216D1
-:105F100009F4D8C080917502882381F01F92FF9206
-:105F2000EF923F9281E09C81791280E08F930E94F2
-:105F30007D250F900F900F900F900F907C80872DF4
-:105F40008F5F2B8182132CC0E0913609F0E0EE0FB9
-:105F5000FF1FE75EF14F85919491609247099093FE
-:105F60004B0980934A0910924909109248092090E0
-:105F7000A005221609F4B5C080917502882381F02E
-:105F80001F92DF92CF923F9281E09B81291280E0A5
-:105F90008F930E947D250F900F900F900F900F9080
-:105FA00063942C812E5F2C83253009F096CF8B8152
-:105FB000853041F5F80185919491109247099093AD
-:105FC0004B0980934A09109249091092480990910F
-:105FD000A0059C83953009F493C0809175028823B5
-:105FE00089F01F92BF92AF925F9281E02C812530A1
-:105FF00009F080E08F930E947D250F900F900F9005
-:106000000F900F9083E0870D9B8189132BC0F801BF
-:10601000859194911092470990934B0980934A0976
-:1060200010924909109248092091A0052C838B8178
-:10603000281709F474C080917502882399F01F9283
-:106040009F928F928B8184198F9381E09C812B8109
-:10605000921380E08F930E947D250F900F900F90F8
-:106060000F900F908B818F5F8B839981891319CF4C
-:1060700084E0870D80939E050EC080913F091092A9
-:106080003F09882309F416CF0E946C2E80919F054A
-:10609000882309F40FCF0F900F900F900F90DF918E
-:1060A000CF911F910F91FF90EF90DF90CF90BF9015
-:1060B000AF909F908F907F906F905F904F903F90A8
-:1060C0002F90089580913F0910923F09882309F489
-:1060D00021CF0E94E92D80919F05882309F41ACFD2
-:1060E000DACF80913F0910923F09882309F444CF09
-:1060F0000E94F22D80919F05882309F43DCFCBCFDC
-:1061000080913F0910923F09882309F466CF0E94CD
-:10611000C72D80919F05882309F45FCFBCCF809164
-:106120003F0910923F09882309F485CF4091360931
-:106130006FEF80E00E946C2D80919F05882309F409
-:106140007ACFA9CF6F927F928F929F92AF92BF9298
-:10615000CF92DF92EF92FF920F931F93CF93DF9333
-:1061600061E081E00E943223C091A1059C2E85E070
-:10617000C82ECC0E9EE9A92E9DE0B92ED6E0DC1BE0
-:10618000EE24E39422E0D22E15E01C1B04E00C1B4D
-:1061900083E0F82EFC1A8D2C8C1A7E2C7C1AC111EF
-:1061A00034C06090A0056620A9F080917502882314
-:1061B00051F0692D619581E0611080E024E040EDAF
-:1061C0005DE00F941E15CF5FCC11E9CF87E080937F
-:1061D0009E050CC080913F0910923F09882329F346
-:1061E0000E946C2E80919F058823F9F2DF91CF9158
-:1061F0001F910F91FF90EF90DF90CF90BF90AF90E5
-:106200009F908F907F906F900895C13001F56090BE
-:10621000A00581E0681661F080917502882399F2EB
-:1062200081E0681280E023E046EC5DE0672DC9CF95
-:1062300080913F0910923F09882371F381E092E336
-:106240000E947D2480919F05882331F3CFCFC230F7
-:1062500009F0B9C09091A005923071F0809175025B
-:10626000882309F4B0CF81E0923009F080E020E289
-:1062700048EB5DE0682DA5CF80913F0910923F0962
-:10628000882361F322EC3DE03093F3082093F20879
-:1062900080919F05882311F3A9CF1092470910928E
-:1062A0004B0910924A09109249091092480990919D
-:1062B000A005933071F080917502882309F483CF93
-:1062C00081E0933009F080E020E24CEA5DE06F2D40
-:1062D00078CF80913F0910923F09882361F323EB27
-:1062E0003DE03093F3082093F20880919F058823C6
-:1062F00011F37CCFE092470910924B0910924A09A2
-:1063000010924909109248099091A005943071F0BB
-:1063100080917502882309F456CF81E0943009F00A
-:1063200080E020E24CEA5DE0602F4BCF80913F0996
-:1063300010923F09882361F327EA3DE03093F30888
-:106340002093F20880919F05882311F34FCFD092BC
-:10635000470910924B0910924A091092490910926C
-:1063600048099091A005953071F0809175028823BD
-:1063700009F429CF81E0953009F080E020E24CEA71
-:106380005DE0612F1ECF80913F0910923F09882365
-:1063900061F322EA3DE03093F3082093F208809104
-:1063A0009F05882311F322CF80913F0910923F0966
-:1063B0008823C9F0B092F308A092F20880919F055B
-:1063C000882389F013CFC33009F467CFC43009F4B0
-:1063D00091CFC53009F4BBCFC63009F0F4CE90910F
-:1063E000A005963009F380917502882309F4EBCE5D
-:1063F00081E0963009F080E020E24DE85DE06D2F0D
-:10640000E0CE8F929F92AF92BF92CF92DF92EF92A7
-:10641000FF920F931F93CF93DF9361E081E00E947F
-:106420003223C091A10585E0B82EBC0ED1E016E064
-:106430001C1B05E00C1B84E0F82EFC1A92E0D92E00
-:1064400083E0E82EEC1AAD2CAC1A9D2E9C1A8C2EF3
-:106450008194C11131C0C090A005CC20A1F08091E1
-:106460007502882349F081E0C11080E024E046E80D
-:106470005DE0682D0F941E15CF5FCB11EACF87E04A
-:1064800080939E050CC080913F0910923F0988239C
-:1064900031F30E946C2E80919F05882301F3DF91D8
-:1064A000CF911F910F91FF90EF90DF90CF90BF9011
-:1064B000AF909F908F900895C13051F51092470989
-:1064C00010924B0910924A091092490910924809FA
-:1064D000C090A00581E0C81661F080917502882304
-:1064E00059F281E0C81280E023E04FE75DE0692DBA
-:1064F000C1CF80913F0910923F09882371F388E052
-:1065000095E30E947D2480919F05882331F3C7CFB6
-:10651000C23009F0B5C0D093470910924B091092D0
-:106520004A091092490910924809C090A00592E0CA
-:10653000C91671F080917502882309F49DCF81E01E
-:1065400092E0C91280E023E04FE75DE06A2D92CF30
-:1065500080913F0910923F09882361F381E095E320
-:106560000E947D2480919F05882321F398CFD092AB
-:10657000470910924B0910924A091092490910924A
-:106580004809C090A00583E0C81671F0809175029B
-:10659000882309F471CF81E093E0C91280E023E001
-:1065A0004FE75DE06E2D66CF80913F0910923F0965
-:1065B000882361F38AEF94E30E947D2480919F05F4
-:1065C000882321F36CCFC090A00584E0C81671F039
-:1065D00080917502882309F44FCF81E094E0C912BD
-:1065E00080E023E041E75DE06F2D44CF80913F09DB
-:1065F00010923F09882361F386E896E20E947D2489
-:1066000080919F05882321F34ACF10924709109269
-:106610004B0910924A091092490910924809C090FA
-:10662000A00585E0C81671F080917502882309F4F1
-:1066300023CF81E095E0C91280E023E04AE65DE0E7
-:10664000602F18CF80913F0910923F09882361F392
-:1066500084EF94E30E947D2480919F05882321F399
-:106660001ECF80913F0910923F09882321F18EEEC1
-:1066700094E30E947D2480919F058823E1F00FCF51
-:10668000C33009F474CFC43009F49DCFC53009F488
-:10669000BCCFC63009F0F0CED093470910924B0919
-:1066A00010924A091092490910924809C090A00519
-:1066B00086E0C816B1F280917502882309F4DCCE19
-:1066C00081E096E0C91280E023E04AE65DE0612FB8
-:1066D000D1CE7F928F929F92AF92BF92CF92DF9254
-:1066E000EF92FF920F931F93CF93DF93F82E842E98
-:1066F00070939D0560939C0561E081E00E943223C8
-:10670000C091A10585E0982E9C0ED1E007E21DE026
-:1067100085E0E82EEC1A84E0D82EDC1A83E0C82E3F
-:10672000CC1A82E0B82EBC1A7D2E7C1AAC2EA19415
-:1067300083E0F81609F44EC0C11196C0F0924709E3
-:1067400010924B0910924A09109249091092480977
-:10675000DD23D9F08091A0051816BCF040913B09CB
-:1067600050913C0960913D0970913E094F5F5F4F28
-:106770006F4F7F4F40933B0950933C0960933D0915
-:1067800070933E098F5F8093A005809175028823E6
-:1067900031F043E06FE77DE08A2D0F94931482E09F
-:1067A000F8125BC0C530A1F41092470910934B0951
-:1067B00000934A091092490910924809D091A00506
-:1067C000D53009F4D9C0809175028111E6C0D0E0BE
-:1067D00086E044C08091820290918302A09184025D
-:1067E000B09185028093980590939905A0939A059E
-:1067F000B0939B05C11138C08092470910924B0994
-:1068000010924A091092490910924809DD23D9F0E3
-:106810008091A0051816BCF040913B0950913C09AD
-:1068200060913D0970913E094F5F5F4F6F4F7F4F01
-:1068300040933B0950933C0960933D0970933E0996
-:106840008F5F8093A00580917502882331F043E02B
-:106850006AE67DE08A2D0F94931485E0CF5F9C1249
-:1068600067CF80939E0522C0C13071F5D091A005FD
-:10687000D13081F080917502882351F081E0D130D0
-:1068800009F080E024E046EC5DE0672D0F941E15D2
-:10689000D0E085CF80913F0910923F09882351F3C2
-:1068A0000E946C2E80919F05882321F3DF91CF9168
-:1068B0001F910F91FF90EF90DF90CF90BF90AF901E
-:1068C0009F908F907F900895C23009F071C0D09151
-:1068D000A005D23069F0809175028823C9F281E069
-:1068E000D23009F080E023E041E45DE06B2DCECFB3
-:1068F00080913F0910923F09882369F38AE394E26B
-:106900000E947D2480919F05882329F3CFCF809119
-:106910003F0910923F09882309F452C081E294E2B2
-:106920000E947D2480919F05882309F449C0BECF31
-:10693000C43009F034CFD091A005D43071F08091EB
-:106940007502882309F4A4CF81E0D43009F080E0F7
-:1069500023E04DE25DE06D2D99CF80913F091092CB
-:106960003F09882361F388E094E20E947D248091AE
-:106970009F05882321F39ACF80913F0910923F0908
-:10698000882309F420CF8FEE93E20E947D2480912A
-:106990009F05882309F417CF89CF81E0D53009F00E
-:1069A00080E023E04EE15DE06E2D0F941E150FCFC9
-:1069B000C33009F0BDCFD091A005D33009F4A7CFE3
-:1069C00080917502882309F463CF81E0D33009F008
-:1069D00080E023E048E35DE06C2D58CF41E06CE4BB
-:1069E00075E483E00C94693340E06FE475E483E080
-:1069F0000C9469334091510963E377E482E00C948D
-:106A000069334091510966E377E481E00C9469337E
-:106A10004091510969E377E480E00C946933409137
-:106A2000510962E575E483E00C9469332F923F923B
-:106A30004F925F926F927F928F929F92AF92BF928E
-:106A4000CF92DF92EF92FF920F931F93CF93DF933A
-:106A500000D000D01F92CDB7DEB70E9462CD482E85
-:106A600061E081E00E9432237090A105572C25E05F
-:106A7000270D298382E087198A8381E087198B8318
-:106A8000872D81958C8309ED1BE29EE3E92E99E029
-:106A9000F92E2CECC22E2BE2D22E3FE1A32E39E0B0
-:106AA000B32E4DED842E4BE2942E711000C19091C7
-:106AB000A0059D83992309F4D3C080917502882392
-:106AC00009F4A3C181E02D81211180E024E047E891
-:106AD00059E06C810F941E1582E041103AC183E0A9
-:106AE0008D838D81871115C09091A0059E83981785
-:106AF00009F437C180917502882359F0672D651913
-:106B000081E02E81271180E023E04CE559E00F94CD
-:106B10001E156D8063941F821E82272C2518761007
-:106B200025C0EE81FF81EE0FFF1FE75EF14F8591DB
-:106B300094912E812093470990934B0980934A09A1
-:106B400010924909109248093090A005371409F4B1
-:106B50001EC180917502882349F081E0361080E0E3
-:106B600023E04DE459E0622D0F941E15362C662467
-:106B70006394630C8E819F81019709F003C16710B4
-:106B80001EC08091A005871509F412C1809175027D
-:106B90008823A9F01F930F93FF92EF92872D8519F9
-:106BA0008F9381E09091A005971180E08F930E94D0
-:106BB0007D250F900F900F900F900F900F9082E017
-:106BC000830D411046C0871120C08091A005871514
-:106BD00009F4FDC0809175028823B9F09F928F92CD
-:106BE00080E399E09F938F93872D85198F9381E0A0
-:106BF0009091A005971180E08F930E947D250F90C2
-:106C00000F900F900F900F900F9083E0830D8711DE
-:106C10001EC08091A005871509F4E8C08091750217
-:106C20008823A9F0DF92CF92BF92AF92872D85196A
-:106C30008F9381E09091A005971180E08F930E943F
-:106C40007D250F900F900F900F900F900F9084E084
-:106C5000830D73949981971128CF80939E050EC060
-:106C600080913F0910923F09882309F426CF0E94A2
-:106C70006C2E80919F05882309F41FCF27960FB6AD
-:106C8000F894DEBF0FBECDBFDF91CF911F910F9162
-:106C9000FF90EF90DF90CF90BF90AF909F908F903C
-:106CA0007F906F905F904F903F902F90089591E06C
-:106CB000791214C02091A0052D83213001F180911B
-:106CC0007502882359F081E09D81913009F080E0C0
-:106CD00023E045E759E06B810F941E1541103BC03E
-:106CE00022E072123BC08091A0058D838230B1F00A
-:106CF00080917502811121C093E09D830ACF80911C
-:106D00003F0910923F098823D1F287EB93E50E9457
-:106D10007D2480919F05882391F2B0CF80913F0917
-:106D200010923F09882321F386E096E50E947D2496
-:106D300080919F058823E1F2A1CF81E02D8122304F
-:106D400009F080E023E048E659E06A810F941E15BF
-:106D500083E08D83DECE92E09D83C3CE23E02D833E
-:106D6000C0CE80913F0910923F09882309F4C2CE1A
-:106D70008FEE97E50E947D2480919F05882309F47A
-:106D8000B9CE7CCF81E090E09F838E83C8CE809186
-:106D90003F0910923F09882309F4DBCE8EEB98E57A
-:106DA0000E947D2480919F05882309F4D2CE66CF6E
-:106DB00080913F0910923F09882309F4E7CE0E9491
-:106DC000D92B80919F05882309F4E0CE57CF80917D
-:106DD0003F0910923F09882309F4FCCE0E94DD2B65
-:106DE00080919F05882309F4F5CE48CF80913F0913
-:106DF00010923F09882309F411CF0E94CC2B809177
-:106E00009F05882309F40ACF39CF442009F474CFB1
-:106E100022E02D837ECE2F923F924F925F926F920F
-:106E20007F928F929F92AF92BF92CF92DF92EF921A
-:106E3000FF920F931F93CF93DF9300D0CDB7DEB7B0
-:106E40000E9481CD8111EEC082E0809336090E94BC
-:106E500062CD682E61E081E00E9432232091A1057D
-:106E60002A83722E2B5F2983572C51949FE0C92EC1
-:106E70009AE0D92E28E0A22E2AE0B22E3FEF832EF0
-:106E800039E0932E8A81811114C09091A0059B83D3
-:106E9000992309F4C9C080917502882351F081E0DB
-:106EA000EB81E11180E024E041E25AE0652D0F948E
-:106EB0001E150FE316E07801F1E0FB834A804A9447
-:106EC0003A803718F701808591850E94F7CC882396
-:106ED00009F4E2C0FA812B81F2131DC040924709E8
-:106EE00010924B0910924A091092490910924809D0
-:106EF0002090A0052F1609F4BEC08091750288234A
-:106F000051F081E09A81291280E023E04FE05AE0BD
-:106F1000632D0F941E158B818F5F97E1E90EF11C95
-:106F2000EB81E23009F0A4C0611073C08B838FE362
-:106F3000E82E86E0F82E412C3A803718F70180853C
-:106F400091850E94F7CC882309F4F1C0FA812B8146
-:106F5000F2131DC04092470910924B0910924A0942
-:106F600010924909109248092090A0052F1609F4A3
-:106F7000CDC080917502882351F081E09A81291259
-:106F800080E023E048E05AE0632D0F941E158B81CA
-:106F90008F5F97E1E90EF11CEB81EF5FEB83F1E08E
-:106FA0004F12B1C08B83F12CEA80E718F80180857D
-:106FB00091850E94F7CC882309F404C1FA812B81C2
-:106FC000F2131DC0F092470910924B0910924A0922
-:106FD00010924909109248094090A0054F1609F4F3
-:106FE000E0C080917502882351F081E09A814912B6
-:106FF00080E023E04FEF59E06E2D0F941E158B813A
-:107000008F5F095E1F4F9B819F5F9B83E1E0FE12B4
-:10701000C5C0FA81FF5FFA8329812F1333CF809394
-:107020009E0510C081E011CF80913F0910923F0969
-:10703000882309F430CF0E946C2E80919F0588230D
-:1070400009F429CF0F900F900F90DF91CF911F91EE
-:107050000F91FF90EF90DF90CF90BF90AF909F90F7
-:107060008F907F906F905F904F903F902F900895FA
-:1070700022E02B8327CF80913F0910923F0988237C
-:1070800009F43BCF82EB93E50E947D2480919F051C
-:10709000882309F432CFD6CFEA81FB81EF133BCFAF
-:1070A0004092470910924B0910924A0910924909DF
-:1070B000109248098091A0058E17C1F08091750249
-:1070C000882309F428CF1F92DF92CF923F9281E06C
-:1070D0009091A0052A81921380E08F930E947D25D4
-:1070E0000F900F900F900F900F9015CF80913F0948
-:1070F00010923F09882311F30E94522C80919F0522
-:107100008823E1F29FCF4424439418CF80913F0914
-:1071100010923F09882309F42CCF8DEA93E50E9451
-:107120007D2480919F05882309F423CF8BCFEA81AA
-:10713000FB81EF132CCF4092470910924B0910921C
-:107140004A0910924909109248098091A0058E17AA
-:10715000C1F080917502882309F419CF1F92BF9264
-:10716000AF923F9281E09091A0052A81921380E036
-:107170008F930E947D250F900F900F900F900F908E
-:1071800006CF80913F0910923F09882311F30E9496
-:107190001D2C80919F058823E1F254CFFF24F394A6
-:1071A00005CF80913F0910923F09882309F419CF38
-:1071B00088EA93E50E947D2480919F05882309F445
-:1071C00010CF40CFEA81FB81EF1319CFF09247092E
-:1071D00010924B0910924A091092490910924809DD
-:1071E0008091A0058E17C1F080917502882309F463
-:1071F00006CF1F929F928F92EF9281E09091A0050F
-:107200002A81921380E08F930E947D250F900F902A
-:107210000F900F900F90F3CE80913F0910923F098D
-:10722000882311F30E94E82B80919F058823E1F2C7
-:1072300009CF8F929F92AF92BF92CF92DF92EF923F
-:10724000FF920F931F93CF93DF9361E081E00E9441
-:107250003223C091A1051C2F85E0882E8C0ED1E031
-:107260009FEBC92E97E2D92E09E00C1B88E0F82E7F
-:10727000FC1A87E0E82EEC1A86E0B82EBC1A85E0EE
-:10728000A82EAC1A84E0982E9C1AC1112FC0DD23C1
-:10729000D9F08091A0051816BCF040913B0950919F
-:1072A0003C0960913D0970913E094F5F5F4F6F4F00
-:1072B0007F4F40933B0950933C0960933D09709385
-:1072C0003E098F5F8093A00580917502882339F075
-:1072D00043E066E17CE0812F81950F949314CF5FAA
-:1072E0008C12D3CF8AE080939E0523C0C13071F504
-:1072F000D091A005D13089F080917502882359F092
-:1073000061E0611B81E0D13009F080E024E04CEFC6
-:107310005BE00F941E15D0E0E2CF80913F09109200
-:107320003F09882349F30E946C2E80919F05882392
-:1073300019F3DF91CF911F910F91FF90EF90DF90A4
-:10734000CF90BF90AF909F908F900895C23009F07A
-:1073500029C18091A0058230B9F0809175028823FF
-:10736000D1F28BE497E29F938F9389EC9BE09F93FC
-:107370008F9382E0811B8F9381E09091A0059230E2
-:1073800009F42EC180E02CC180913F0910923F0981
-:10739000882319F30E944B2780919F058823E9F2E7
-:1073A000C8CF80913F0910923F09882309F402C198
-:1073B0000E945E2780919F05882309F4FBC0B9CF06
-:1073C000C43029F58091A0058430A1F08091750228
-:1073D000882309F4A0CF81E797E29F938F938EEBE8
-:1073E0009BE09F938F939F9281E09091A0059430B2
-:1073F00049F6F6C080913F0910923F09882331F386
-:107400000E94712780919F05882301F392CFC53098
-:1074100031F58091A0058530A9F08091750288230F
-:1074200009F479CF85E897E29F938F9387EB9BE0F0
-:107430009F938F93AF9281E09091A005953009F0D2
-:10744000A1CFCEC080913F0910923F09882329F334
-:107450000E94852780919F058823F9F26ACFC63064
-:1074600051F58091A0058630A9F08091750288239E
-:1074700009F451CF85EF9BEC9F938F9381EB9BE0B9
-:107480009F938F93BF9281E09091A005963009F071
-:1074900079CFA6C080913F0910923F09882329F334
-:1074A00085EF9BEC892B11F00E94F5CB80919F0515
-:1074B0008823D9F23ECFC73031F58091A0058730BF
-:1074C000A9F080917502882309F425CF89E997E214
-:1074D0009F938F938CEA9BE09F938F93EF9281E031
-:1074E0009091A005973009F04DCF7AC080913F0967
-:1074F00010923F09882329F30E94992780919F05C4
-:107500008823F9F216CFC83031F58091A005883074
-:10751000A9F080917502882309F4FDCE8CEA97E2E8
-:107520009F938F9385EA9BE09F938F93FF9281E0D7
-:107530009091A005983009F025CF52C080913F0965
-:1075400010923F09882329F30E94AC2780919F0560
-:107550008823F9F2EECEC93009F0C1CE8091A005A2
-:10756000893099F080917502882309F4D4CEDF9296
-:10757000CF928EE99BE09F938F930F9381E0909140
-:10758000A005993009F0FECE2BC080913F091092E2
-:107590003F09882339F30E94BF2780919F058823E4
-:1075A00009F3C7CEC33009F00BCF8091A00583301B
-:1075B00009F4F7CE80917502882309F4ACCE8EE5EC
-:1075C00097E29F938F9385EC9BE09F938F9383E04B
-:1075D000811B8F9381E09091A005933009F0D2CE6A
-:1075E0008F930E947D250F900F900F900F900F901A
-:1075F0000F9091CECF93DF93CDB7DEB78E81282F3A
-:10760000082E000C330B909144129217130609F0C8
-:107610008CF4809344129E01275F3F4F4F81588521
-:107620006AE270E089E192E10F94783910921812C1
-:1076300010921712DF91CF9108950F931F93CF935C
-:10764000DF938C016F3F19F41092441260E0209197
-:107650004412862F062E000C990B2817190609F0E4
-:1076600014F560934412C8010F94FE38800F911FE7
-:10767000EC01C01BD10BCB32D1053CF00197FC01D2
-:107680002491207C2038D1F3F3CFDD27AE01B8015F
-:1076900089E192E10F941F39C75EDD4E1882109286
-:1076A000181210921712DF91CF911F910F91089528
-:1076B000CF9380914205811109C087E597E09093AF
-:1076C00091058093900581E0809342050E945324A8
-:1076D00020E040E070E060E08FE396E20E949323B8
-:1076E000C1E0C09340090E947F8F109240090E9420
-:1076F0006C2EC093400960E081E79CE30E941D3B33
-:107700004091510961E080E00E94092E8DE497E0EC
-:107710009093F3088093F208CF9108952F923F92AF
-:107720004F925F926F927F928F929F92AF92BF9291
-:10773000CF92DF92EF92FF920F931F93CF93DF933D
-:1077400000D000D01F92CDB7DEB780919A06412CB1
-:10775000811103C00E944FCD482E8091A21784FB57
-:10776000222720F92983312C84FF03C00E9473CD86
-:10777000382E61E081E00E9432238091A1058E8342
-:10778000582E8B5F8A8380E00EEA1CE091E0792E10
-:107790007518952D91959B8398E5E92E9BE3F92E1D
-:1077A0002BECC22E2CE0D22E92E095199C8393E014
-:1077B00095199D833BE4A32E3CE0B32E42E7842E33
-:1077C0004CE0942E9A812E81921709F463C22223F1
-:1077D00039F1411079C00E9481CD882309F4B2C1EA
-:1077E0008E81813009F47DC192E09F832E818F814B
-:1077F000281398C12090A005221609F4A5C18091F4
-:107800007502882309F48EC16E81651981E09E811D
-:10781000291280E023E047EA5CE00F941E1582C144
-:107820006090A005662059F180917502882389F245
-:1078300081E0611080E024E047ED5CE06B810F9413
-:107840001E15442041F224E02F838F819E818913ED
-:107850005EC02090A005281609F487C180917502AA
-:10786000882309F454C06E81651981E02E812212AB
-:1078700080E023E04BE95CE00F941E1548C0809146
-:107880003F0910923F09882379F20E946C2E809163
-:107890009F05882349F227960FB6F894DEBF0FBEE6
-:1078A000CDBFDF91CF911F910F91FF90EF90DF90AF
-:1078B000CF90BF90AF909F908F907F906F905F9090
-:1078C0004F903F902F9008958E81813009F4A8C089
-:1078D000823009F4D0C09E81933009F0B4CF8091FA
-:1078E000A0058F83833009F4EBC080917502882353
-:1078F00009F4A9CF81E09F81933009F080E023E073
-:107900004BEB5CE06D810F941E1524E02F838F817B
-:107910008F5F9E81891314C02090A005291609F459
-:1079200035C180917502882359F06E81651981E017
-:107930002E81221280E023E04DE85CE00F941E15BA
-:107940008F818E5F9E81891314C02090A005291617
-:1079500009F42DC180917502882359F06E81651953
-:1079600081E02E81221280E023E04DE75CE00F945D
-:107970001E158F818D5F9E81891314C02090A005F4
-:10798000291609F425C180917502882359F06E816A
-:10799000651981E02E81221280E023E046E75CE059
-:1079A0000F941E158F818C5F9981992309F444C12E
-:1079B000311032C02E81821314C09091A00592170D
-:1079C00009F417C180917502882359F06E816519F9
-:1079D00081E02E81921380E020E245E65CE00F9486
-:1079E0001E158F818B5F9E81891314C02090A00586
-:1079F000291609F410C180917502882359F06E810F
-:107A0000651981E02E81221280E023E044E55CE0EC
-:107A10000F941E158F818A5F9E819F5F9E83D2CEB9
-:107A20008091A0058130D1F080917502882309F4FE
-:107A30000ACFFF92EF92DF92CF927F9281E09091F6
-:107A4000A005913009F080E08F930E947D250F9072
-:107A50000F900F900F900F900F90F5CE80913F09EF
-:107A600010923F09882301F30E94583B80919F05A3
-:107A70008823D1F210CF2091A0052F83223089F0E6
-:107A800080917502882309F4DECE81E09F819230D7
-:107A900009F080E023E040EC5CE06C810F941E155F
-:107AA000D2CE80913F0910923F09882349F38FEA93
-:107AB00096E20E947D2480919F05882309F3EBCEF6
-:107AC00080913F0910923F09882309F40ECF8AEF75
-:107AD00098E40E947D2480919F05882309F405CFB6
-:107AE000DACE8091A005813001F180917502882362
-:107AF00009F47ACE8EE297E29F938F931F930F93B0
-:107B00007F9281E09091A005913009F080E08F9301
-:107B10000E947D250F900F900F900F900F900F9067
-:107B200082E08F832F812F5F8FCE80913F0910924B
-:107B30003F098823D1F20E942E2780919F05882338
-:107B4000A1F2A9CE91E051CE80913F0910923F0958
-:107B5000882309F454CE82EA90E30E947D24809128
-:107B60009F05882309F44BCE96CE80913F09109251
-:107B70003F09882309F472CE8FE19EE40E947D24A0
-:107B800080919F05882309F469CE85CE80913F09B5
-:107B900010923F09882309F4C4CE86E195E30E9440
-:107BA0007D2480919F05882309F4BBCE74CE8091FB
-:107BB0003F0910923F09882309F4CCCE8BE097E36C
-:107BC0000E947D2480919F05882309F4C3CE63CE53
-:107BD00080913F0910923F09882309F4D4CE84E2B2
-:107BE00091E50E947D2480919F05882309F4CBCEE6
-:107BF00052CE80913F0910923F09882309F4E2CECA
-:107C00009092F3088092F20880919F05882309F4EE
-:107C1000D9CE8E8101CF80913F0910923F098823F0
-:107C200009F4E9CE83EF9DE60E947D2480919F05B3
-:107C3000882309F4E0CEEDCF9E8189131DC0909179
-:107C4000A0052E819217D9F0809175028823A1F0AA
-:107C50001F921F92BF92AF928E8185198F9381E000
-:107C60002E81921380E08F930E947D250F900F90BC
-:107C70000F900F900F900F908F818B5FCDCE8091E2
-:107C80003F0910923F098823F9F280919F058823CC
-:107C9000D9F2BFCF80939E05FECD10924F0910926E
-:107CA00074020E9473CD9091A21780FB97F9909374
-:107CB000A21760E08FE397E00E941D3B0C945E2DBD
-:107CC0000F931F930F941E1D00913E0510913F05C9
-:107CD0002091400530914105601B710B820B930B85
-:107CE00097FD0BC086B18295817091E08927369B04
-:107CF0008260329B84608093FF038091FF038170D8
-:107D00009091FF0391FD826090913D05981749F095
-:107D1000813029F148F0823089F08330A1F08093DE
-:107D20003D051F910F910895913089F09230B9F778
-:107D300090913C0520911B02921B0EC0992339F0B3
-:107D40009330B1F3ECCF913099F3923041F79091A9
-:107D50003C0520911B02920F90933C05E0CF9923A4
-:107D600039F39330E1F6F3CFFC0180E0309749F02E
-:107D70009491992331F0907C903809F08F5F31967F
-:107D8000F7CF0895AF92BF92CF92DF92EF92FF921A
-:107D90000F931F93CF93DF93EC015B018A01FB01EB
-:107DA000199587FD16C0C82ED12CF12CE12C2196F7
-:107DB000F801C082D182E282F382CE01DF91CF91BD
-:107DC0001F910F91FF90EF90DF90CF90BF90AF90F9
-:107DD0000895982F907E903CA9F48F7190E0B0E0C8
-:107DE000A0E06C017D0156E0CC0CDD1CEE1CFF1CFC
-:107DF0005A95D1F7CE010196F50119958F73C82ACE
-:107E00002296D6CF982F907F903E11F58F7090E0FC
-:107E1000B0E0A0E06C017D0136E0CC0CDD1CEE1C76
-:107E2000FF1C3A95D1F7CE010196F50119958F7394
-:107E3000C82A46E0CC0CDD1CEE1CFF1C4A95D1F78D
-:107E4000CE010296F50119958F73C82A2396B0CFFB
-:107E5000982F987F903F79F5877090E0B0E0A0E090
-:107E60006C017D0186E0CC0CDD1CEE1CFF1C8A95AC
-:107E7000D1F7CE010196F50119958F73C82A96E0C6
-:107E8000CC0CDD1CEE1CFF1C9A95D1F7CE0102969E
-:107E9000F50119958F73C82A26E0CC0CDD1CEE1C69
-:107EA000FF1C2A95D1F7CE010396F50119958F7322
-:107EB000C82A24967DCF982F907C903841F4807CFE
-:107EC000803869F42196CE01F5011995F8CF8E7F9F
-:107ED0008D3F28F02196CE01F5011995F8CFC12CE0
-:107EE000D12C760165CF9CE0899F802D112491E0F3
-:107EF000980F909304052CE0280F2093460930E05A
-:107F00002E5F3F4F40917D164217130619F014F073
-:107F100080E0089520917F169217D0F7662341F0F4
-:107F20008E5F0F947423809146098E5F0F947423A3
-:107F30008091460990917D16891750F320917F1604
-:107F400090910405291720F31092801680938116D2
-:107F500081E0089520910205022E000C330B821758
-:107F6000130641F0809302056CEE7EE089E496E111
-:107F70000D94192508951F93CF93DF931F92CDB7CA
-:107F8000DEB710912E0280918216811105C081E02A
-:107F9000809382160F94492260914B1670914C1673
-:107FA00019839E012F5F3F4F4FE089E496E10F94C4
-:107FB00045220F90DF91CF911F910895CF9380912B
-:107FC000030581114FC010928016109281161092F5
-:107FD000821610924E1610924D1610925016109254
-:107FE0004F161092521681E08093511682E28093D0
-:107FF00053161092581610925716ECE6F6E12AE73F
-:1080000036E18FEF81932E173F07E1F7C1E0C09370
-:10801000691622E132E030935F1620935E16C0931A
-:108020006016109261161092621690E49093631697
-:10803000109264162AE231E030937B1620937A1670
-:1080400028E032E030934C1620934B1691E1909348
-:108050006E1690E190936D1680936C160F944922E2
-:10806000C0930305099A11988FE19EE40197F1F7F7
-:1080700000C00000119A8FE19EE40197F1F700C063
-:108080000000C1E0C09382160F9449228FEF8093C5
-:108090002E020E94BB3FC093FA038DE096E09093BE
-:1080A000880F8093870F10928A0F1092890FCF91BB
-:1080B00008950E94DE3F3C98449A3E98469A3A982A
-:1080C000429A0E94603E10923C050D948E10EF92F1
-:1080D000FF920F931F93CF93DF93CDB7DEB72C970B
-:1080E0000FB6F894DEBF0FBECDBFFC016081718179
-:1080F000828193816F3F71058105910509F0C0F47C
-:1081000085E496E10E940929E0914D16F0914E1602
-:108110003196849190E02C960FB6F894DEBF0FBE96
-:10812000CDBFDF91CF911F910F91FF90EF900895F8
-:1081300010918016009181162091FA0321110FC031
-:108140004DEE55E0602F812F0F94DD2590E080E00B
-:10815000180F10938016009381169927DCCFE090BA
-:108160004D16F0904E1629E436E13A832983212FEB
-:1081700030E03C832B83202F30E03E832D83188614
-:108180001F822FEF3FEF3A8729871C861B8627EA3D
-:1081900038E2AE014F5F5F4FBF01C7010F948B0FF5
-:1081A000B70189E496E10F9419258F819885D0CF86
-:1081B0004F925F926F927F928F929F92BF92CF92D7
-:1081C000DF92EF92FF920F931F93CF93DF9300D034
-:1081D00000D01F921F92CDB7DEB77C016A01490122
-:1081E000FB0190818CE0989F800D1124982FF7015E
-:1081F0002081822F880F820F880F809380169093A2
-:1082000081164115510579F1FA82E9827C836B83ED
-:10821000011122C0AE014B5F5F4FB401C6010E9445
-:10822000C23E6C018D819E81AF81B885892B8A2BDE
-:108230008B2BC9F0CE0105960E946740F701808123
-:108240008F5F8083853130F3CE0101960E948B24AD
-:10825000E1CFB12C860129C08A01B12C26C0452866
-:1082600046284728B1F728960FB6F894DEBF0FBE10
-:10827000CDBFDF91CF911F910F91FF90EF90DF90D5
-:10828000CF90BF909F908F907F906F905F904F9016
-:108290000895B39407C0B1102EC001151105C9F29D
-:1082A0000F5F1F4F01151105A9F2AE014B5F5F4F24
-:1082B000B401C6010E94C23E6C014D805E806F8099
-:1082C00078844114510461047104A9F0F0E24F165E
-:1082D000510461047104F9F2D301C2018D97A1091F
-:1082E000B1090297A105B10530F04BE244165104E3
-:1082F0006104710471F6F7018081482F4B0D5527F9
-:10830000551F4631510534F0853020F0CE010196DD
-:108310000E948B2481E0411451046104710409F42A
-:1083200080E0B80EF70180818B0D8083BB2009F4BB
-:1083300096CFBA94AE014B5F5F4FB401C8010E9463
-:10834000C23E8C01CE0105960E946740EFCF6F922E
-:108350007F928F929F92AF92BF92CF92DF92EF92D5
-:10836000FF920F931F93CF93DF9300D000D01F9203
-:108370001F92CDB7DEB77C01162F5A014901862F17
-:10838000660F990B9C0124563D4F690186E0682ECB
-:10839000712C10160CF046C0AE014B5F5F4F61EAC6
-:1083A00074E2C7010E94C23E7C018D819E81AF8133
-:1083B000B8850097A105B105A9F18D339105A105F7
-:1083C000B10509F480C08E379105A105B10509F406
-:1083D0007AC08A329105A105B105D1F517FF12C007
-:1083E00083E596E01E3F11F08FE496E036E003024D
-:1083F000B00111240E947FC766E070E00F944841ED
-:10840000061B9BC085E490E0A0E0B0E089839A83DE
-:10841000AB83BC83CE0101960E946740015009F0F6
-:1084200054C000E0802F28960FB6F894DEBF0FBE30
-:10843000CDBFDF91CF911F910F91FF90EF90DF9013
-:10844000CF90BF90AF909F908F907F906F90089546
-:1084500084329105A105B105D1F48114910461F034
-:10846000E6E00E02B0011124C4010E947FC7B301EF
-:108470000F944841061B8DCFA114B104F1F0F6E032
-:108480000F02B0011124C5010E94DDC7F0CF803476
-:108490009105A105B10589F40150F6018081082EEE
-:1084A000000C990BAA0BBB0B89839A83AB83BC830B
-:1084B000CE0101960E9467406CCFCE0105960E94C6
-:1084C0006740015066CF17FD8BCF81E04D815E8103
-:1084D0006F8178854D3351056105710509F480E0A0
-:1084E000810F8A30CCF001506AE00F942641D92EDA
-:1084F000082E000C990BC096092E000CAA0BBB0B82
-:1085000089839A83AB83BC83CE0101960E94674026
-:10851000002309F486CF8D2D082E000C990BC096F0
-:10852000092E000CAA0BBB0B89839A83AB83BC83F7
-:10853000CE0101960E9467400150002309F471CFDB
-:1085400086E00802B0011124C7010E947FC766E0DF
-:1085500070E00F944841061B65CF6FEF7FEF0C94DE
-:10856000DDC72F923F924F925F926F927F928F92D0
-:108570009F92AF92BF92CF92DF92EF92FF920F93B2
-:108580001F93CF93DF9300D000D01F92CDB7DEB7FB
-:108590004C010F94FE3801966401C80ED91EC60125
-:1085A0000F94FE3801961601280E391ED601EC9064
-:1085B00001E0E11001C000E0F101408077247394F4
-:1085C000411001C0712C11E0E11010E060E085E085
-:1085D0000E9432235090A105F52C9EE0A92EB12CCB
-:1085E000F52DF195FF83812F90E00196080F192F4B
-:1085F000111D9801270D311D3E832D83F1101BC0E5
-:1086000080917502882391F0E0911A02E2506AE4A9
-:108610007AE0E33038F4F0E0EE0FFF1FE654FD4F50
-:108620006081718143E08F810F94931401E0E11028
-:1086300011C002E00FC002E0E11001E00F110AC01A
-:1086400080917502882331F041E0B401802F8519B3
-:108650000F94931411E0100F7F2C7518EE2069F021
-:108660001F1109C080917502882329F041E0B601ED
-:10867000872D0F94931412E0100F442061F01F1106
-:1086800009C080917502882329F041E0B101872D4E
-:108690000F9493141F5F4D815E81433051050CF49C
-:1086A0001F5F1F1190C080917502882309F488C054
-:1086B00042E067E57AE0872D0F9493149EEF9A0DC0
-:1086C00080917D168A151B0411F00CF079C0209161
-:1086D0007F1683EF8A0D821708F072C000910004A4
-:1086E00025E430E040E050E029833A834B835C830B
-:1086F0003EE33093801690938116CE0101960E943E
-:10870000674081E3800F082E000C990BAA0BBB0B6E
-:1087100089839A83AB83BC83CE0101960E94674014
-:1087200080E290E0A0E0B0E089839A83AB83BC83D1
-:10873000CE0101960E946740602E712C97E1969DB4
-:10874000F001979DF00D1124E15CF94F20E030E03D
-:1087500040E05FE364817581868197810F94083ED4
-:108760000F94743FCB010E9492BD0E94AD422FE254
-:1087700030E040E050E029833A834B835C83CE01B4
-:1087800001960E9467400E94F22481110BC035E0DF
-:10879000369DF001379DF00D1124E25EF94F848182
-:1087A00081110EC047E1469DF001479DF00D112457
-:1087B000E15CF94F808591850E9492BD0E94AD4297
-:1087C00052E0509375028CE0A80EB11CF3949AE429
-:1087D000A916B10409F012CF1F5F10939E052796CA
-:1087E0000FB6F894DEBF0FBECDBFDF91CF911F91C2
-:1087F0000F91FF90EF90DF90CF90BF90AF909F9040
-:108800008F907F906F905F904F903F902F90089542
-:1088100082E69AE00C94B1428FE69AE00C94B14261
-:1088200081E99AE00C94B1428CE29BE00C94B14255
-:1088300087EE9AE00C94B14284E19BE00C94B14243
-:1088400087E69BE00C94B1428AE49BE00C94B14231
-:108850008AEC9AE00C94B1428BEA9AE00C94B14213
-:108860008F929F92AF92BF92CF92DF92EF92FF9240
-:108870000F931F93CF93DF9300D01F92CDB7DEB736
-:108880004C016B0181E080931B02C4010E94B43E45
-:10889000A82EC6010E94A724B12C23E130E0790163
-:1088A000E81AF10815E2EA14FB040CF41FE1812F29
-:1088B00090E09C012E5F3F4F40917D1642171306BA
-:1088C00011F00CF04AC0099720917F16281719065D
-:1088D0000CF443C020914A0930914B09409148095A
-:1088E00050914909609147091092801610938116A2
-:1088F00005E1C4010E94A74101E0C114D104E1F0E7
-:108900008AE390E0A0E0B0E089839A83AB83BC83E4
-:10891000CE0101960E946740EA14FB0404F5145F3F
-:1089200080917D16181740F020917F16412F4950F5
-:10893000550B24171506ACF40F900F900F900F9065
-:10894000DF91CF911F910F91FF90EF90DF90CF902B
-:10895000BF90AF909F908F90089500E0CECF0023FE
-:1089600059F380E290E0A0E0B0E089839A83AB8382
-:10897000BC838E2D880FE80EEE0CE09280161093CB
-:108980008116CE0101960E946740C6010E94AD4249
-:10899000D3CF1F93CF93DF9300D01F92CDB7DEB715
-:1089A000182F80913F0910923F09882361F010929F
-:1089B00040090E946C2E0F900F900F900F90DF9146
-:1089C000CF911F91089560913B0970913C0980916E
-:1089D0003D0990913E09611571058105910569F187
-:1089E0000F94B83920911C0230911D0240911E0253
-:1089F00050911F020F94173A209182023091830206
-:108A000040918402509185020F94083E6093820247
-:108A1000709383028093840290938502612F83E098
-:108A20000E94B82481E08093750210923B09109255
-:108A30003C0910923D0910923E09809175028823ED
-:108A400009F4B9CF1093470910924B0910924A09C3
-:108A50001092490910924809209198053091990582
-:108A600040919A0550919B0560918202709183021A
-:108A700080918402909185020F94073E69837A83E6
-:108A80008B839C83CE0101960E9497BCBC018AE631
-:108A90009DE00E9430448FCF81E00C94C94480E077
-:108AA0000C94C944809151090C94C9443F924F924F
-:108AB0005F926F927F928F929F92AF92BF92CF926E
-:108AC000DF92EF92FF920F931F93CF93DF9300D02B
-:108AD00000D000D01F92CDB7DEB7382E80913F096D
-:108AE00010923F098823E1F0109240090E946C2EF9
-:108AF0002A960FB6F894DEBF0FBECDBFDF91CF919F
-:108B00001F910F91FF90EF90DF90CF90BF90AF90AB
-:108B10009F908F907F906F905F904F903F900895BF
-:108B200060913B0970913C0980913D0990913E090B
-:108B3000611571058105910509F459C0209137022D
-:108B4000222309F4B9C0209138022111B5C021E0D7
-:108B5000321609F48FC0A2E03A1609F49CC0C09006
-:108B60003902D0903A02E0903B02F0903C024090F3
-:108B700045025090460260904702709048020F9460
-:108B8000B83920911C0230911D0240911E02509173
-:108B90001F020F94173A6F83788789879A87B4E00A
-:108BA0003B9E80011124F801EA58FD4FFE83ED83BE
-:108BB00020813181428153810F94083E4B015C0139
-:108BC000A3019201C701B6010F94B139811183C08D
-:108BD000F801EA58FD4F80829182A282B3826091AF
-:108BE0005109832D0E94B82481E080937502109270
-:108BF0003B0910923C0910923D0910923E09809168
-:108C00007502882309F474CF30924709F4E03F9E3F
-:108C1000C0011124FC01EA58FD4F8359904FDC013B
-:108C20002D913D914D915C91608171818281938103
-:108C30000F94083E6B017C01C982DA82EB82FC82D0
-:108C40002DEC3CEC4CEC5DE360911C0270911D023C
-:108C500080911E0290911F020F94684087FD66C0AC
-:108C6000CE0101960E9497BCBC018FE79DE00E9457
-:108C700030443ECFC0903D02D0903E02E0903F0293
-:108C8000F09040024090490250904A0260904B029E
-:108C900070904C0274CFC0904102D0904202E0909C
-:108CA0004302F090440240904D0250904E0260907A
-:108CB0004F027090500263CF412C20E5522E23ECDE
-:108CC000622E27E4722EC12C30E5D32E33ECE32E36
-:108CD00037ECF32E54CF20E030E0A9016F81788586
-:108CE00089859A850F94B13987FF10C0A701960135
-:108CF000C501B4010F94B13987FF6ACFAD81BE8140
-:108D0000CD92DD92ED92FC92139769CFA30192016F
-:108D1000C501B4010F94684018160CF059CFED81CD
-:108D2000FE81408251826282738259CF20E030E01E
-:108D300040E251E4C701B6010F94173A20E030E059
-:108D40004AE754E40F94173A4B015C0120E030E00D
-:108D5000A901C701B6010F94B13920E030E040EA23
-:108D600050E487FF04C020E030E040EA50ECC50149
-:108D7000B4010F94083E20E030E040E251E40F944B
-:108D8000023F0F94743F6B017C01F7FC62C020EA44
-:108D900036E841E050E00F94C63DCA01B9012AE02F
-:108DA00030E040E050E00F94C63D605D6093A20566
-:108DB000C701B60120E137E240E050E00F94C63D24
-:108DC0008AE0882E912CA12CB12CCA01B901A501F1
-:108DD00094010F94C63D605D6093A305C701B60181
-:108DE00028EE33E040E050E00F94C63DCA01B901DF
-:108DF000A50194010F94C63D605D6093A4058EE2C9
-:108E00008093A505C701B60124E630E040E050E0BC
-:108E10000F94C63DCA01B901A50194010F94C63D46
-:108E2000605D6093A605C701B601A50194010F948A
-:108E3000C63D162FCA01B901A50194010F94C63D84
-:108E4000605D6093A705105D1093A80582EA95E028
-:108E50000BCFF094E094D094C094C11CD11CE11CC1
-:108E6000F11C6DE2A3CF82E00C94564581E00C9496
-:108E7000564580E00C9456450F931F93CF93DF9394
-:108E8000FC01EB0180913B0990913C09A0913D09C7
-:108E9000B0913E09B7FF08C010923B0910923C09FF
-:108EA00010923D0910923E098091830590918405AE
-:108EB000A0918505B091860540913B0950913C09F0
-:108EC00060913D0970913E0984179507A607B70781
-:108ED00044F480933B0990933C09A0933D09B093DF
-:108EE0003E09809175028823E1F060913B09709101
-:108EF0003C0980913D0990913E09009187051091B0
-:108F000088052091890530918A05600F711F821FA5
-:108F1000931F1995BC0180918D0590918E050E943B
-:108F2000304480913F09811108C0809180058823D9
-:108F3000D1F1809175028823B1F180918B059091D8
-:108F40008C050097B1F040913B0950913C0960912C
-:108F50003D0970913E090091870510918805209187
-:108F6000890530918A05400F511F621F731FFE0152
-:108F70001995E0918105F0918205309741F080913B
-:108F80008005811103C080913F098111199580915D
-:108F90003F0910923F09882331F0DF91CF911F9153
-:108FA0000F910C946C2EDF91CF911F910F9108952A
-:108FB00062EF7EE18FE895E20C943C4760E57FE14B
-:108FC00084E497E20C943C4760EB70E28AE695E219
-:108FD0000C943C4767ED70E28AE295E20C943C47C2
-:108FE00068EE72E28CEF92E20C943C4762E972E226
-:108FF00086EA92E20C943C4760EB72E28BEE97E2D9
-:109000000C943C4766EC72E288E298E20C943C4790
-:109010006AED72E282E398E20C943C4766E073E208
-:1090200083E695E20C943C4769EC70E28EE698E2A8
-:109030000C943C4764E173E288E293E20C943C4771
-:109040004F925F926F927F928F929F92AF92BF9258
-:10905000CF92DF92EF92FF920F931F93CF93DF9304
-:10906000CDB7DEB72C970FB6F894DEBF0FBECDBFDD
-:10907000982F862F5A017901D02E692F0E94733FB5
-:10908000882309F49CC01091FA03C701002309F456
-:1090900041C00E94B43EC82E80904D1690904E164E
-:1090A000111155C01FEF03E10C1920914A093091AD
-:1090B0004B09409148095091490960914709C50100
-:1090C0000E94A741CC2009F47AC0B6E08B9F5001E2
-:1090D00011248AE390E0A0E0B0E089839A83AB8317
-:1090E000BC83CE0101960E94674080E2482E512C3D
-:1090F000612C712C57E0A516B10408F445C04982D3
-:109100005A826B827C82CE0101960E946740A81A27
-:10911000B90AF0CF0E94A724C82E80904D169090D7
-:109120004E16112309F4BECFFE0133968AE0DF010B
-:109130001D928A95E9F789E496E19A8389830EE77F
-:1091400018E29E012F5F3F4F44EA54E212C0FE0135
-:1091500033968AE0DF011D928A95E9F789E496E16A
-:109160009A8389830EE718E29E012F5F3F4F41EA01
-:1091700054E2B701C4010F945010B40189E496E1A0
-:109180000F9419251F818FCF40914609212F30E080
-:10919000A6E0CA9EC00111242E5F3F4F2817390751
-:1091A0000CF49C0180E8821B80938016409381160A
-:1091B000DD20E1F06FEF7FEFC7010E947FC72C96A3
-:1091C0000FB6F894DEBF0FBECDBFDF91CF911F91D8
-:1091D0000F91FF90EF90DF90CF90BF90AF909F9056
-:1091E0008F907F906F905F904F900895C7010E947D
-:1091F000AD42E5CF6F927F928F929F92AF92BF92D6
-:10920000CF92DF92EF92FF920F931F93CF93DF9352
-:1092100061E081E00E943223C091A105DC2FF5E0DE
-:10922000AF2EAC0E81E0D82EDC1A9C2E9194A7E1D3
-:10923000BA2E8824839484E0C82ECC1AC11142C16E
-:109240001091A005112309F420C180917502882393
-:1092500049F081E0111180E024E047EE5EE0692DE5
-:109260000F941E15F12CE12CE2E07E2E6C2E6D1A6F
-:10927000C7112BC0E092470910924B0910924A097E
-:1092800010924909109248098091A0058C1709F4A1
-:1092900051C1809175028823C1F011E08091A00531
-:1092A000871110E0BE9CF001BF9CF00D1124E15C21
-:1092B000F94F808591850E9492BD00E09C0148EDA8
-:1092C0005EE0662D812F0E942048872D9FEFE91ACE
-:1092D000F90A63E0762E833059F6C430E9F48091C0
-:1092E000A005843009F44DC1809175028823A1F056
-:1092F00011E08091A005843009F010E080913606DD
-:10930000909137060E9492BD00E09C0144ED5EE022
-:109310006C2D812F0E9420488091D20580933609C0
-:10932000C53031F51092470910924B0910924A0945
-:1093300010924909109248098091A005853009F4DE
-:109340003BC180917502882399F0FC2EFD1A11E033
-:109350008091A0058C1310E0809136090E942ABEEE
-:1093600000E09C0148EC5EE06F2D812F0E942048B8
-:109370008091D30580933609C63031F58092470934
-:1093800010924B0910924A0910924909109248090B
-:109390008091A005863009F424C18091750288234C
-:1093A00099F0FC2EFD1A11E08091A0058C1310E0BD
-:1093B000809136090E942ABE00E09C0148EC5EE0E4
-:1093C0006F2D812F0E942048C73019F58091A0058C
-:1093D000873009F41BC1809175028823D1F0FC2EDF
-:1093E000FD1A11E08091A0058C1310E0E091510965
-:1093F000F0E0EE0FFF1FEE5DFD4F808191810E9436
-:1094000092BD00E09C0143EC5EE06F2D812F0E9435
-:10941000204838E0732EF12CE12C6C2E6D1AC71108
-:1094200029C0E092470910924B0910924A09109204
-:109430004909109248098091A0058C1709F408C1C8
-:10944000809175028823B1F011E08091A005871109
-:1094500010E0F701EE0FFF1FEE5DFD4F808191815F
-:109460000E9492BD00E09C014CEB5EE0662D812FD6
-:109470000E9420487394EA94EF2809F0E5C0CF5F7A
-:10948000AC12DCCE70929E050EC080913F09109206
-:109490003F09882309F4D9CE0E946C2E80919F0544
-:1094A000882309F4D2CEDF91CF911F910F91FF90C5
-:1094B000EF90DF90CF90BF90AF909F908F907F9074
-:1094C0006F900895C13009F0CDCE8091A005813014
-:1094D000D1F080917502882309F4C4CE11E0809107
-:1094E000A005813009F010E08091200290912102C6
-:1094F0000E9492BD00E09C0141EE5EE06D2D812F47
-:109500000E942048AFCE80913F0910923F098823E6
-:1095100001F310E000E027EE33E04AE050E060E2C3
-:1095200072E081EE9EE00F94CC1680919F05882317
-:1095300081F2B9CF80913F0910923F09882309F445
-:10954000A8CE0F94BF15F701EE0FFF1FE054FD4F9B
-:10955000208131812F503109BE9CB001BF9C700D1C
-:109560001124695B794F0BE815E250E040E088ED8B
-:109570009EE00F94CC1680919F05882309F489CE34
-:1095800092CF80913F0910923F09882309F4ACCE15
-:109590000F94BF1502E216EC24E630E050E040E004
-:1095A00066E376E084ED9EE00F94CC1680919F05F3
-:1095B000882309F499CE77CF80913F0910923F0913
-:1095C000882309F4BECE0F94BF1566E07FE188ECD6
-:1095D0009EE00F94A41780919F05882309F4B1CED3
-:1095E00062CF80913F0910923F09882309F4D5CEBC
-:1095F0000F94BF1566E07FE188EC9EE00F94A417FE
-:1096000080919F05882309F4C8CE4DCF80913F09F2
-:1096100010923F09882309F4DECE6091510970E071
-:10962000660F771F6E5D7D4F0EEB1EE127EE33E078
-:109630004AE050E083EC9EE00F94CC1680919F05A9
-:10964000882309F4C8CE2FCFEE24E394F12CE7CE83
-:1096500080913F0910923F09882309F4F1CEB701A8
-:10966000660F771F6E5D7D4F0AE81EE127EE33E03F
-:109670004AE050E08CEB9EE00F94CC1680919F0561
-:10968000882309F4DDCE0FCFAF92BF92CF92DF9245
-:10969000EF92FF920F931F93CF93DF9361E081E0EE
-:1096A0000E943223C091A10585E0B82EBC0ED5E002
-:1096B000DC1B14E01C1B83E0F82EFC1A82E0E82E71
-:1096C000EC1A81E0D82EDC1AAC2EA194C1112FC067
-:1096D000C090A005CC20A1F080917502882349F0AC
-:1096E00081E0C11080E024E04DE65EE06A2D0F9439
-:1096F0001E15CF5FCB11EACF86E080939E050CC08C
-:1097000080913F0910923F09882331F30E946C2E0B
-:1097100080919F05882301F3DF91CF911F910F91D5
-:10972000FF90EF90DF90CF90BF90AF900895C13041
-:1097300089F58091A0058130D1F080917502882350
-:10974000C1F2CC24C3948091A005813009F0C12CD2
-:109750008091E8159091E9150E94C7BD00E09C0139
-:1097600048E55EE06D2D8C2D0E942048C2CF80918F
-:109770003F0910923F09882301F346E756E268EE5D
-:1097800075E188E59EE00F94141880919F05882369
-:10979000A1F2C2CFC23009F0A0C08091A0058230F2
-:1097A000C1F080917502882309F4A3CFCC24C3941F
-:1097B0008091A005823009F0C12C8091AC15909168
-:1097C000AD150E94C7BD00E09C0146E55EE06E2D30
-:1097D000CACF80913F0910923F09882311F34EE6CA
-:1097E00056E26CEA75E186E59EE00F9414188091CC
-:1097F0009F058823B1F290CF8091A0058330C1F0FE
-:1098000080917502882309F474CFCC24C39480918D
-:10981000A005833009F0C12C8091701590917115CD
-:109820000E94C7BD00E09C0144E55EE06F2D9BCF28
-:1098300080913F0910923F09882311F346E656E2D2
-:1098400060E775E184E59EE00F94141880919F0510
-:109850008823B1F261CF8091A0058430C1F080915E
-:109860007502882309F445CFCC24C3948091A005C8
-:10987000843009F0C12C80913415909135150E94E7
-:10988000C7BD00E09C0141E55EE0612F6CCF809197
-:109890003F0910923F09882311F34EE556E264E335
-:1098A00075E181E59EE00F94141880919F0588234F
-:1098B000B1F232CF80913F0910923F098823D1F055
-:1098C00046E556E268EF74E18EE49EE00F941418CA
-:1098D00080919F05882371F01FCFC33009F48CCF8E
-:1098E000C43009F4B8CFC53009F003CF8091A0058A
-:1098F000853001F380917502882309F4FACECC24D7
-:10990000C3948091A005853009F0C12C8091F81492
-:109910009091F9140E94C7BD00E09C014EE45EE006
-:109920006D2F21CF7F928F929F92AF92BF92CF9255
-:10993000DF92EF92FF920F931F93CF93DF9361E03B
-:1099400081E00E943223C091A1059C2E85E0A82EC3
-:10995000AC0ED1E011E093E0F92E86E0E82EEC1A8F
-:1099600085E0D82EDC1A84E0C82ECC1A8F2C8C1AF5
-:1099700082E0B82EBC1A7D2E7C1AC1112FC0DD23C7
-:10998000D9F08091A0051816BCF040913B09509188
-:109990003C0960913D0970913E094F5F5F4F6F4FE9
-:1099A0007F4F40933B0950933C0960933D0970936E
-:1099B0003E098F5F8093A00580917502882339F05E
-:1099C00041E069E77EE0892D81950F949314CF5F84
-:1099D000AC12D3CF87E080939E0522C0C13071F5D1
-:1099E000D091A005D13081F080917502882351F08B
-:1099F00081E0D13009F080E024E04DE65EE0672DA3
-:109A00000F941E15D0E0E3CF80913F0910923F09DB
-:109A1000882351F30E946C2E80919F05882321F3A7
-:109A2000DF91CF911F910F91FF90EF90DF90CF903A
-:109A3000BF90AF909F908F907F900895C23009F0B3
-:109A4000DEC08091A0058230C9F080917502882324
-:109A5000C9F281E09091A005923009F080E09091E8
-:109A6000EA1528E63EE0911102C024E63EE001E05E
-:109A70004BE65EE06B2D0E942048C4CF80913F09E9
-:109A800010923F09882309F38091EA15812780937A
-:109A9000EA15F09275020E94542680919F05882352
-:109AA000A1F2BECF80913F0910923F09882309F4AB
-:109AB000AEC08091AE1581278093AE15C09375021C
-:109AC0000E94522680919F05882309F4A0C0A8CF48
-:109AD000C43081F58091A0058430C1F08091750279
-:109AE000882309F48FCF81E09091A005943009F08C
-:109AF00080E09091721528E63EE0911102C024E6C4
-:109B00003EE001E040E65EE06C2DB5CF80913F097C
-:109B100010923F09882311F3809172158127809359
-:109B20007215F09275020E94502680919F0588233D
-:109B3000A9F276CFC53081F58091A0058530C1F0BE
-:109B400080917502882309F45DCF81E09091A00592
-:109B5000953009F080E09091361528E63EE09111AD
-:109B600002C024E63EE001E04DE55EE06D2D83CFCE
-:109B700080913F0910923F09882311F38091361597
-:109B8000812780933615F09275020E944E268091AF
-:109B90009F058823A9F244CFC63009F018CF8091E1
-:109BA000A0058630C1F080917502882309F42ACF80
-:109BB00081E09091A005963009F080E09091FA1430
-:109BC00028E63EE0911102C024E63EE001E04AE5CD
-:109BD0005EE06E2D50CF80913F0910923F0988239F
-:109BE00011F38091FA1481278093FA14F092750290
-:109BF0000E944C2680919F058823A9F211CFC33083
-:109C000009F066CF8091A005833009F44BCF809195
-:109C10007502882309F4F6CE81E09091A005933077
-:109C200009F080E09091AE1528E63EE0911102C067
-:109C300024E63EE001E042E65EE0682D1CCF2F9274
-:109C40003F924F925F926F927F928F929F92AF92CC
-:109C5000BF92CF92DF92EF92FF920F931F93CF9319
-:109C6000DF9300D0CDB7DEB78091470690914806CC
-:109C700077247394892B39F480915E0690915F0666
-:109C8000892B09F4712C61E081E00E9432238091DC
-:109C9000A1058A838B83982F9B5F9983382E3194FB
-:109CA00083E0582EEA815E1A55E0452E66E6A62E20
-:109CB0006DE2B62E7DE1872E7EE0972EFA81F111BE
-:109CC00012C01091A005112309F43DC180917502C5
-:109CD000882349F081E0111180E024E049E45EE04E
-:109CE000632D0F941E154FE3C42E46E0D42EF12CA5
-:109CF000E12C662463942A808B81281AF6018085E2
-:109D000091859093370980933609FA81F61126C020
-:109D1000E092470910924B0910924A0910924909A2
-:109D2000109248098091A0058F1709F430C18091E5
-:109D30007502882399F011E08091A005861110E04A
-:109D400080913609909137090E9492BD00E09C01F4
-:109D500040E45EE0622D812F0E942048862D9FEF17
-:109D6000E91AF90AE7E1CE0ED11C22E0622E823018
-:109D700029F6FA81F330E9F48091A005833009F4E3
-:109D800028C1809175028823A1F011E08091A0057F
-:109D9000833009F010E080913606909137060E94DA
-:109DA00092BD00E09C014CE35EE0652D812F0E9496
-:109DB00020488091D205809336098A81843041F50C
-:109DC0001092470910924B0910924A0910924909C2
-:109DD000109248098091A005843009F415C1809142
-:109DE00075028823A9F0FA809B81F91A11E080910D
-:109DF000A005EA818E1310E0809136090E942ABEE8
-:109E000000E09C0140E35EE06F2D812F0E9420481E
-:109E10008091D30580933609FA814F1229C081E0E1
-:109E20008093470910924B0910924A0910924909F0
-:109E3000109248098091A005841509F4FAC0809118
-:109E400075028823A9F0FA809B81F91A11E08091AC
-:109E5000A005EA818E1310E0809136090E942ABE87
-:109E600000E09C0140E35EE06F2D812F0E942048BE
-:109E700096E0F92E09E11EE0E12CDA80FB81DF1A81
-:109E8000E09236098A818F1120C0F8018591949162
-:109E90001092470990934B0980934A0910924909FF
-:109EA00010924809C090A0059A81C91609F4D9C03A
-:109EB00080917502882349F081E0CF1080E023E093
-:109EC00046E25EE06D2D0F941E15CF2CF3940E5FCD
-:109ED0001F4FE1E0EE12C2C0809136069091370626
-:109EE000892B11F4772031F1FA81FF121EC01091F5
-:109EF000A0051F1709F4C6C0809175028823A9F038
-:109F0000BF92AF929F928F928A819B81891B8F9380
-:109F100081E0EA811E1380E08F930E947D250F90DF
-:109F20000F900F900F900F900F9082E0F82EFC0C86
-:109F300077247394FA81FF5FFA838981F813BECE88
-:109F4000F0929E050EC080913F0910923F09882330
-:109F500009F4BCCE0E946C2E80919F05882309F4E1
-:109F6000B5CE0F900F900F90DF91CF911F910F9171
-:109F7000FF90EF90DF90CF90BF90AF909F908F9029
-:109F80007F906F905F904F903F902F9008958091B9
-:109F90003F0910923F09882309F4C9CE0F94BF15D9
-:109FA000F701EE0FFF1FE054FD4F208131812F504C
-:109FB00031090EE716E250E040E066E379E080E424
-:109FC0009EE00F94CC1680919F05882309F4AFCEB4
-:109FD000C8CF80913F0910923F09882309F4D1CE60
-:109FE0000F94BF1502E216EC24E630E050E040E0AA
-:109FF00066E376E08CE39EE00F94CC1680919F059B
-:10A00000882309F4BECEADCF80913F0910923F095D
-:10A01000882309F4E4CE0F94BF1566E07FE180E366
-:10A020009EE00F94A41780919F05882309F4D7CE52
-:10A0300098CF80913F0910923F09882309F4FFCE01
-:10A040000F94BF1566E07FE180E39EE00F94A417B4
-:10A0500080919F05882309F4F2CE83CFEE24E39408
-:10A060000FCF80913F0910923F09882309F420CF38
-:10A0700084E19FE20E947D2480919F05882309F45A
-:10A0800017CF6FCF80913F0910923F09882309F4C1
-:10A0900033CF0E94662D80919F05882309F42CCF31
-:10A0A00060CFCF92DF92EF92FF920F931F93CF93E7
-:10A0B000DF9361E081E00E943223C091A10585E039
-:10A0C000D82EDC0ED3E0DC1B12E01C1B81E0F82E46
-:10A0D000FC1ACC2EC194C1112DC0E090A005EE2039
-:10A0E000A1F080917502882349F081E0E11080E0C1
-:10A0F00024E04CEF5BE06C2D0F941E15CF5FCD116B
-:10A10000EACF84E080939E050CC080913F091092B5
-:10A110003F09882331F30E946C2E80919F0588238C
-:10A1200001F3DF91CF911F910F91FF90EF90DF909E
-:10A13000CF900895C13069F58091A0058130C1F0BC
-:10A14000809175028823D1F2EE24E3948091A005DA
-:10A15000813009F0E12C809183160E9408BE00E056
-:10A160009C014EEE5BE06F2D8E2D0E942048C6CFE5
-:10A1700080913F0910923F09882311F363E876E14B
-:10A180008EEE9BE00F94E81780919F058823C1F223
-:10A19000C8CFC230E1F58091A0058230B1F0809146
-:10A1A0007502882309F4AACFEE24E3948091A005D8
-:10A1B000823009F0E12C809184160E9408BE00E0F4
-:10A1C0009C014EED5BE0612FCFCF80913F09109253
-:10A1D0003F09882321F364E876E18EED9BE00F943C
-:10A1E000E81780919F058823D1F29BCF80913F098A
-:10A1F00010923F09882391F065E876E18FEC9BE0AF
-:10A200000F94E81780919F05882341F08ACFC330CF
-:10A2100009F074CF8091A005833041F380917502DD
-:10A22000882309F46BCFEE24E3948091A00583305A
-:10A2300009F0E12C809185160E9408BE00E09C0187
-:10A240004FEC5BE06D2F90CF5F926F927F928F9279
-:10A250009F92AF92BF92CF92DF92EF92FF920F93B5
-:10A260001F93CF93DF9361E081E00E943223C0917E
-:10A27000A1056C2E85E0782E7C0ED4E0DC1B93E0EB
-:10A28000892E582C5C1A21EFE22E2BECF22E34E2B0
-:10A29000C32E3CE0D32E12E01C1B4CE0A42E4CEC51
-:10A2A000B42E81E0982E9C1AC11113C00091A00514
-:10A2B000002329F180917502882309F4DFC0662DFF
-:10A2C000619581E0011180E024E04AE35CE00F94B5
-:10A2D0001E1580910B0680933609C13009F055C0D8
-:10A2E0009091A005913039F180917502811138C0AB
-:10A2F000CF5F7C12D9CF85E080939E050CC0809102
-:10A300003F0910923F098823A9F20E946C2E809188
-:10A310009F05882379F2DF91CF911F910F91FF90D4
-:10A32000EF90DF90CF90BF90AF909F908F907F90F5
-:10A330006F905F90089590913F0910923F09992383
-:10A3400099F28C278093360980927502A114B1048A
-:10A3500011F00E940CCC80919F05882329F2DBCF5D
-:10A3600081E09091A005913009F080E0909136094C
-:10A3700020E33CE0911102C02CE23CE001E043E329
-:10A380005CE0692D0E942048B3CFC23071F5809106
-:10A39000A0058230D1F080917502882309F4A8CFFE
-:10A3A000FF92EF92DF92CF921F9381E09091A005F0
-:10A3B000923009F080E08F930E947D250F900F90DE
-:10A3C0000F900F900F900F9093CF80913F091092B4
-:10A3D0003F09882301F3E114F10411F00E94F1CB4D
-:10A3E00080919F058823B9F296CFC33091F50091F3
-:10A3F000A005033081F080917502882309F478CF9D
-:10A4000081E0033009F080E023E046E15CE0652D67
-:10A410000F941E156DCF80913F0910923F0988233C
-:10A4200051F389E199E30E947D2480919F0588235F
-:10A4300011F371CF80913F0910923F09882381F079
-:10A4400081E590E50E947D2480919F05882341F05D
-:10A4500062CFC43009F04CCF0091A005043051F315
-:10A4600080917502882309F443CF81E0043009F01C
-:10A4700080E023E048E05CE06D2FCACF80910B06BE
-:10A480008093360935CF2F923F924F925F926F9211
-:10A490007F928F929F92AF92BF92CF92DF92EF9274
-:10A4A000FF920F931F93CF93DF9300D000D01F92A2
-:10A4B000CDB7DEB7482E662E809393056093920544
-:10A4C00020914709298361E081E00E943223709046
-:10A4D000A10527E1362D3202C0011124AC01495BF0
-:10A4E000594F6A01572C55E0570D5A833324339442
-:10A4F000832D87198D8333EDA32E3CE2B32E40EFDD
-:10A50000842E49E0942EE62CF12CEE0CFF1CF70172
-:10A51000E054FD4F7F01562D5203A0011124495BE9
-:10A52000594F5F834E8371107FC03320D9F08091E3
-:10A53000A0051816BCF040913B0950913C09609170
-:10A540003D0970913E094F5F5F4F6F4F7F4F4093C2
-:10A550003B0950933C0960933D0970933E098F5F1E
-:10A560008093A00580917502882389F083E063EDD4
-:10A5700079E0481639F094E063EC79E0491611F07F
-:10A5800063EB79E043E0852D81950F94931409E105
-:10A590001EE022E0222EFEEFF70DFB83272D25196A
-:10A5A0002C83721018C0F801859194913B813093EF
-:10A5B000470990934B0980934A09109249091092D8
-:10A5C00048098091A005871509F46BC08091750238
-:10A5D000811176C0312C822D0E5F1F4F93E0292E02
-:10A5E0008330F9F654E0751214C060924709109256
-:10A5F0004B0910924A09109249091092480980911A
-:10A60000A005843009F471C08091750281118AC05F
-:10A61000312C7394FA81F71186CF85E080939E05E3
-:10A6200029812093470919C0E1E07E12B0CF109133
-:10A63000A005113031F080917502811127C0312CB5
-:10A64000A6CF80913F0910923F098823A1F30E9471
-:10A650006C2E80919F05882371F327960FB6F8948E
-:10A66000DEBF0FBECDBFDF91CF911F910F91FF9045
-:10A67000EF90DF90CF90BF90AF909F908F907F90A2
-:10A680006F905F904F903F902F90089581E0113030
-:10A6900009F080E024E04AEF59E06D810F941E1527
-:10A6A000CECF80913F0910923F09882309F48ECFC5
-:10A6B0000E94D32C80919F05882309F487CFCDCFAA
-:10A6C000BF92AF929F928F924C814F9381E0909175
-:10A6D000A005921180E08F930E947D250F900F902E
-:10A6E0000F900F900F900F9075CF80913F091092AF
-:10A6F0003F09882309F488CF0F94BF15F701208103
-:10A7000031812F5031090FED1CE24AEA50E0B601C9
-:10A7100081EE99E00F94CC1680919F05882309F46F
-:10A7200073CF9BCF11E08091A005843009F010E039
-:10A73000EE81FF81808191810E9492BD64E0651964
-:10A7400000E09C0141EE59E0812F0E94204860CF3B
-:10A750006091470984E00C9443526091470983E07B
-:10A760000C9443526091470982E00C9443522F921B
-:10A770003F924F925F926F927F928F929F92AF9291
-:10A78000BF92CF92DF92EF92FF920F931F93CF93DE
-:10A79000DF9300D000D0CDB7DEB70E9462CD482E47
-:10A7A00061E081E00E9432232091A1052D834420A5
-:10A7B00069F185E08E837D80272D2B5F298385E0DD
-:10A7C00087198A8384E087198B8383E087198C83B8
-:10A7D00082E0682E671881E0582E5718272C2194A4
-:10A7E0002D8121113BC01091A005112391F0809182
-:10A7F0007502882309F451C081E0111180E024E042
-:10A8000049ED58E0622D0F941E1547C096E09E83D7
-:10A81000D2CF80913F0910923F09882341F30E94D3
-:10A820006C2E80919F05882311F326960FB6F8941D
-:10A83000DEBF0FBECDBFDF91CF911F910F91FF9073
-:10A84000EF90DF90CF90BF90AF909F908F907F90D0
-:10A850006F905F904F903F902F9008958D81813041
-:10A8600009F096C01091A005113009F47CC08091C8
-:10A870007502882391F01F9288EC98E09F938F9344
-:10A880005F9281E0113009F080E08F930E947D2576
-:10A890000F900F900F900F900F904110B1C02D812D
-:10A8A000253009F0ADC01091A005153009F402C1A2
-:10A8B0008091750281110FC116E081E0810F9D81A9
-:10A8C000891314C03090A005391609F42CC1809169
-:10A8D0007502882359F06D81671981E02D8132124C
-:10A8E00080E023E04CE758E00F941E1582E0810FD2
-:10A8F0009D81891314C03090A005391609F424C134
-:10A9000080917502882359F06D81671981E02D814E
-:10A91000321280E023E043E758E00F941E1583E0F5
-:10A92000810F9D81891315C09091A0052D819217EB
-:10A9300009F41BC180917502882359F06D81671954
-:10A9400081E02D81921380E023E041E658E00F94EE
-:10A950001E158D818F5F8D839981981341CF1C5F68
-:10A9600010939E0562CF80913F0910923F09882382
-:10A9700009F47DCF8CE598E09093F3088093F2087A
-:10A980000E945E2D80919F05882309F470CF4DCFE2
-:10A990008D81823009F012C11091A005123071F042
-:10A9A00080917502882309F478CF81E0123009F094
-:10A9B00080E023E047EB58E0662D25CF80913F09EA
-:10A9C00010923F09882361F383E69AE50E947D2473
-:10A9D00080919F05882321F328CF1091A005133083
-:10A9E000F1F080917502882309F457CF81E013308C
-:10A9F00009F080E023E04AEA58E06C810F941E15CC
-:10AA00008E819D81891309C01091A005181709F442
-:10AA10006DC08091750281117AC01E814ECF8091E8
-:10AA20003F0910923F098823E1F28CE09CE50E94E7
-:10AA30007D2480919F058823A1F2F7CE80913F0964
-:10AA400010923F09882309F4C6C020E030E04AE7AD
-:10AA500054E46091FE057091FF058091000690918D
-:10AA600001060F94173A20E030E040E85FE30F94CE
-:10AA7000073E0F947B3F1F92912C812C8AE1A82ED8
-:10AA800088E4B82E6B011BE2E12EFF24F39400E072
-:10AA900010E021E030E040E050E06EEF75E08DE93D
-:10AAA00098E00E94EB2C0F9080919F05882309F479
-:10AAB00092C0BBCE80913F0910923F09882309F4D0
-:10AAC000F7CE84E19FE50E947D2480919F05882335
-:10AAD00009F4EECEAACE81E0153009F080E023E043
-:10AAE00044E958E06A810F941E15E6CE80913F0933
-:10AAF00010923F09882309F48CCF8DE89EE20E94D2
-:10AB00007D2480919F05882309F483CF8ECE6D81AB
-:10AB1000671981E02D81121380E023E048E858E0B6
-:10AB20000F941E157ACF80913F0910923F09882318
-:10AB300009F4CDCE84E693E60E947D2480919F05A2
-:10AB4000882309F4C4CE71CE80913F0910923F0949
-:10AB5000882309F4D5CE83E790E60E947D24809176
-:10AB60009F05882309F4CCCE60CE80913F091092D6
-:10AB70003F09882309F4DECE0E94532420E040E000
-:10AB800070E060E088EC96E226960FB6F894DEBF9F
-:10AB90000FBECDBFDF91CF911F910F91FF90EF902E
-:10ABA000DF90CF90BF90AF909F908F907F906F90ED
-:10ABB0005F904F903F902F900C9493232D812330E2
-:10ABC00009F40BCF243009F068CE3090A00594E052
-:10ABD000391609F433CF80917502882309F45DCECC
-:10ABE0006091FE057091FF0580910006909101062D
-:10ABF0000E94E6219C0181E094E0391280E000E0AF
-:10AC00004DE958E06B810E942048FACE2F923F9286
-:10AC10004F925F926F927F928F929F92AF92BF926C
-:10AC2000CF92DF92EF92FF920F931F93CF93DF9318
-:10AC300000D0CDB7DEB761E081E00E9432232091E1
-:10AC4000A1052A832B5F298384E09A81891B8B834A
-:10AC500066246394B2E05B2E83E0782E791A452C4B
-:10AC6000491A362C391A292E21942A8121113DC0E6
-:10AC70001091A0051123B9F080917502882349F045
-:10AC800081E0111180E024E041E159E0622D0F9450
-:10AC90001E159A819F5F9A8329819213E6CF85E0E2
-:10ACA00080939E050CC080913F0910923F09882334
-:10ACB00019F30E946C2E80919F058823E9F20F9072
-:10ACC0000F900F90DF91CF911F910F91FF90EF9018
-:10ACD000DF90CF90BF90AF909F908F907F906F90BC
-:10ACE0005F904F903F902F9008958A81813009F0B6
-:10ACF0006BC01092470910924B0910924A091092AA
-:10AD00004909109248098091A0058130F1F08091A5
-:10AD10007502882309F4BDCF11E08091A005813030
-:10AD200009F010E060917A0670917B0680917C06B4
-:10AD300090917D060E94651F00E09C014FEE58E057
-:10AD4000632D812F0E942048A4CF80913F0910924B
-:10AD50003F098823E1F20F94BF1520E030E048EC72
-:10AD600052E460917A0670917B0680917C06909106
-:10AD70007D060F94173A20E030EB4AE156E40F9439
-:10AD8000083E0F947B3F1F92E3EF8E2EE0E29E2E53
-:10AD9000F0EFAF2EF7E4BF2E6B0118E5E12E1DE4B6
-:10ADA000F12E00E010E024E539ED4FEF5FEF6AE7A8
-:10ADB00076E08FEE98E00E94EB2C0F9080919F053B
-:10ADC000882309F4A4CF7BCF9A81923009F0DDC0AB
-:10ADD0006092470910924B0910924A091092490952
-:10ADE000109248098091A0058230D9F080917502B7
-:10ADF000882309F44ECF11E08091A005823009F03C
-:10AE000010E060917E0670917F068091800690919F
-:10AE100081060E94651F00E09C014FEE58E0642D02
-:10AE200090CF80913F0910923F098823F9F20F9447
-:10AE3000BF1520E030E048EC52E460917E0670914E
-:10AE40007F0680918006909181060F94173A20E04A
-:10AE500030EB4AE156E40F94083E0F947B3F1F927B
-:10AE600033EF832E30E2932E40EFA42E47E4B42E2E
-:10AE70006B0118E5E12E1DE4F12E00E010E024E561
-:10AE800039ED4FEF5FEF6EE776E08FEE98E00E94CE
-:10AE9000EB2C0F9080919F05882309F4A7CF0FCF4B
-:10AEA0005092470910924B0910924A091092490991
-:10AEB000109248098091A0058330D9F080917502E5
-:10AEC000882309F4E6CE11E08091A005833009F0D3
-:10AED00010E06091820670918306809184069091C3
-:10AEE00085060E94651F00E09C014FEE58E0672D2B
-:10AEF00028CF80913F0910923F098823F9F20F94DF
-:10AF0000BF1520E030E048EC52E460918206709179
-:10AF1000830680918406909185060F94173A20E06D
-:10AF200030E048E453E40F94083E0F947B3F1F92B7
-:10AF300083EF882E80E2982E90EFA92E97E4B92E09
-:10AF40006B0110EBE12E14E0F12E00E010E028E39D
-:10AF50003FEF4FEF5FEF62E876E08FEE98E00E9400
-:10AF6000EB2C0F9080919F05882309F4A7CFA7CEE3
-:10AF700080913F0910923F09882391F00E94D92BBC
-:10AF800080919F05882361F09ACE8A81833009F4ED
-:10AF900087CF843009F07DCE8091A005843041F3C5
-:10AFA00080917502882309F474CE89ED9BE29F930A
-:10AFB0008F938EE399E09F938F938B818F9381E0A2
-:10AFC0009091A005943009F080E08F930E947D2538
-:10AFD0000F900F900F900F900F900F905ACE5F929E
-:10AFE0006F927F928F929F92AF92BF92CF92DF9299
-:10AFF000EF92FF920F931F93CF93DF9361E081E075
-:10B000000E943223C091A10525E0722E7C0ED1E072
-:10B01000DC1B6C2E6194C11134C01091A00511236A
-:10B02000A1F080917502882349F081E0111180E040
-:10B0300024E041E159E0662D0F941E15CF5F7C128C
-:10B04000EACF82E080939E050CC080913F09109268
-:10B050003F09882331F30E946C2E80919F0588233D
-:10B0600001F3DF91CF911F910F91FF90EF90DF904F
-:10B07000CF90BF90AF909F908F907F906F905F9098
-:10B080000895C130D9F65090A00581E0581609F412
-:10B0900047C080917502882389F211E0511210E0B7
-:10B0A000C0908606D0908706E0908806F0908906CA
-:10B0B00020E030E0A901C701B6010F94B1392DEBB2
-:10B0C00037E346E055EB87FD04C02DEB37E346E060
-:10B0D00055E3C701B6010F94083E6B017C0120E0E7
-:10B0E00030E0A9010F94B13920E030E040E05FEB9F
-:10B0F00087FD04C020E030E040E05FE3C701B60117
-:10B100000F94083E0F94743FCB010E9492BD00E063
-:10B110009C0147EE58E06D2F812F0E9420488ECF72
-:10B1200080913F0910923F09882309F4B2CF6091C2
-:10B1300086067091870680918806909189060F9403
-:10B140007B3F1F92912C812C8AEEA82E87E4B82E8B
-:10B150006B011AE0E12EF12C00E010E020E030E07D
-:10B16000A90166E876E087EE98E00E94EB2C0F904C
-:10B1700080919F05882309F48CCF73CF2F923F9243
-:10B180004F925F926F927F928F929F92AF92BF92F7
-:10B19000CF92DF92EF92FF920F931F93CF93DF93A3
-:10B1A00000D000D01F921F92CDB7DEB72091470983
-:10B1B000288761E081E00E9432233091A1053F831E
-:10B1C000E8858E2F90E0880F991F9C01275E314FF4
-:10B1D0003C832B8336E0E39FC0011124FC01EC503B
-:10B1E000FA4FFA83E9839C012E503A4F79015F8030
-:10B1F00035E0432E450C11E0312E3518252C2194D5
-:10B20000FE82ED82570134E0A30EB11C49EDC42E3D
-:10B210004BE2D42E85E0782E75184701E2E08E0EC1
-:10B22000911C82E0682E6518FF81F11161C0112325
-:10B23000D9F08091A0051816BCF040913B095091BF
-:10B240003C0960913D0970913E094F5F5F4F6F4F20
-:10B250007F4F40933B0950933C0960933D097093A5
-:10B260003E098F5F8093A00580917502882341F08D
-:10B27000EB81FC816591749143E0822D0F949314CE
-:10B28000F501808180933609FF81F23009F080C09A
-:10B2900028852093470910924B0910924A09109271
-:10B2A0004909109248098091A005823009F45DC0D7
-:10B2B00080917502882391F011E08091A005823081
-:10B2C00009F010E0809136090E942ABE00E09C013E
-:10B2D00047E059E0662D812F0E94204810E02F8121
-:10B2E0002F5F2F834212A0CF86E080939E0519C066
-:10B2F0002F81213029F61091A005113031F0809175
-:10B300007502811127C010E0BBCF80913F091092D8
-:10B310003F098823A1F30E946C2E80919F0588230A
-:10B3200071F328960FB6F894DEBF0FBECDBFDF9144
-:10B33000CF911F910F91FF90EF90DF90CF90BF9032
-:10B34000AF909F908F907F906F905F904F903F90C5
-:10B350002F90089581E0113009F080E024E041E170
-:10B3600059E0632D0F941E15CECF80913F091092A6
-:10B370003F09882309F49CCF65EE70E287E099E0ED
-:10B380000F94A41780919F05882309F491CFC9CF0A
-:10B390003F81333091F58091A0058330C1F08091D9
-:10B3A0007502882309F49ACF11E08091A0058330BB
-:10B3B00009F010E0ED81FE81808191810E9492BDB3
-:10B3C00063E0651900E09C0140E059E084CF809182
-:10B3D0003F0910923F09882311F310E000E025EFA8
-:10B3E00030E045E050E0B70180E099E00F94CC16E2
-:10B3F00080919F05882399F294CFFF81F43091F5D5
-:10B400008091A0058430B9F080917502882309F4F9
-:10B4100065CF11E08091A005843009F010E0F401BF
-:10B42000808191810E9492BD64E0651900E09C01D9
-:10B430004CEF58E050CF80913F0910923F0988238C
-:10B4400019F310E000E024E630E045E050E06981C7
-:10B450007A818CEF98E00F94CC1680919F05882319
-:10B4600099F25FCFFF81F53009F039CF8091A005C7
-:10B470008530E1F080917502882309F42FCFDF92A7
-:10B48000CF928EE399E09F938F937F9281E090918A
-:10B49000A005953009F080E08F930E947D250F90E4
-:10B4A0000F900F900F900F900F9018CF80913F0941
-:10B4B00010923F098823F1F20E94D92B80919F05B9
-:10B4C0008823C1F22ECF5F926F927F928F929F92CC
-:10B4D000AF92BF92CF92DF92EF92FF920F931F93A2
-:10B4E000CF93DF93CDB7DEB760970FB6F894DEBF8A
-:10B4F0000FBECDBF80E1ECE8F2E0DE0111960190D5
-:10B500000D928A95E1F761E081E00E943223D090AC
-:10B51000A1059D2C65E0862E8D0C7D2C719473E029
-:10B52000672ED11012C01091A005112309F4CEC0CE
-:10B5300080917502882349F081E0111180E024E0B8
-:10B540004CE358E0672D0F941E15AA24A394B12C48
-:10B550005D2C5918DA102FC08FEF8A0D80934709A0
-:10B5600010924B0910924A09109249091092480909
-:10B570008091A0058D1509F4CDC0809175028823B6
-:10B58000D1F011E08091A0058D1110E0F501EE0FD2
-:10B59000FF1FEE0FFF1FEB5AF64F60A171A182A1B2
-:10B5A00093A10E94F52700E09C014CEE57E0652D29
-:10B5B000812F0E942048CA2C81E08A0D9FEFA91A92
-:10B5C000B90A94E0A916B10429F68D112CC0609235
-:10B5D000470910924B0910924A091092490910929A
-:10B5E00048098091A0058D1509F4BEC080917502AF
-:10B5F0008823C9F0BD2CB91811E08091A0058D11E8
-:10B6000010E0609185097091860980918709909179
-:10B6100088090E94F52700E09C014CEE57E06B2D55
-:10B62000812F0E94204882E08C0D8D1122C08091D4
-:10B63000A0058D1509F4B6C0809175028823C9F064
-:10B64000BD2CB91811E08091A0058D1110E060911A
-:10B6500095097091960980919709909198090E9497
-:10B66000F52700E09C014FED57E06B2D812F0E94E4
-:10B67000204883E08C0D8D1121C08091A0058D158F
-:10B6800009F4ADC0809175028823C1F011E080916A
-:10B69000A0058D1110E06091990970919A0980912F
-:10B6A0009B0990919C090E94F52700E09C014EECBB
-:10B6B00057E06D2D6919812F0E942048D3948D1079
-:10B6C00030CF84E08C0D80939E050EC080913F09A1
-:10B6D00010923F09882309F42BCF0E946C2E809191
-:10B6E0009F05882309F424CF60960FB6F894DEBF37
-:10B6F0000FBECDBFDF91CF911F910F91FF90EF90C3
-:10B70000DF90CF90BF90AF909F908F907F906F9081
-:10B710005F90089580913F0910923F09882309F4B2
-:10B720002CCF0F94BF15B501660F771F660F771FDB
-:10B73000FB01349781E090E08C0F9D1FE80FF91F0B
-:10B74000E080F180028113816B58764F20E030E079
-:10B7500040E85FE38CEE97E00F94CB1580919F0556
-:10B76000882309F40ACFC0CF80913F0910923F0986
-:10B77000882309F43BCF0F94BF15E12C1CE3F12E75
-:10B780000CE116E420E030E040E85FE365E879E0B2
-:10B790008CEE97E00F94CB1580919F05882309F4D8
-:10B7A00025CFA2CF80913F0910923F09882309F449
-:10B7B00043CF0F94BF15E12C1CE3F12E0CE116E4EE
-:10B7C00020E030E0A90165E979E08FED97E00F9482
-:10B7D000CB1580919F05882309F42ECF85CF8091CA
-:10B7E0003F0910923F09882309F44CCF0F94BF15ED
-:10B7F000E12C1CE3F12E0CE116E420E030E0A9017D
-:10B8000069E979E08EEC97E00F94CB1580919F0564
-:10B81000882309F437CF68CF2F923F924F925F92DF
-:10B820006F927F928F929F92AF92BF92CF92DF9250
-:10B83000EF92FF920F931F93CF93DF93CDB7DEB7B5
-:10B840002C970FB6F894DEBF0FBECDBFC09059093C
-:10B85000D0905A09E0905B09F0905C0980915D09F5
-:10B8600090915E09A0915F09B09160098C159D05CA
-:10B87000AE05BF0510F4D701C601C0905509D090A0
-:10B880005609E0905709F0905809BC01CD016C159C
-:10B890007D058E059F0510F4C701B6010F94B639DA
-:10B8A0002B013C0161E081E00E9432232091A1053F
-:10B8B0002C872E83822F8B5F8D8387E0821B8F8363
-:10B8C00086E0821B888785E0821B898784E0821B53
-:10B8D0008A8783E0821B8B8742E0242E221A322E35
-:10B8E00031942C85211140C01091A0051123B9F08D
-:10B8F00080917502882349F081E0111180E024E0F5
-:10B900004CE358E0632D0F941E159C859F5F9C8728
-:10B910002D812913E6CF88E080939E050CC080918D
-:10B920003F0910923F09882319F30E946C2E8091E1
-:10B930009F058823E9F22C960FB6F894DEBF0FBE60
-:10B94000CDBFDF91CF911F910F91FF90EF90DF90CE
-:10B95000CF90BF90AF909F908F907F906F905F90AF
-:10B960004F903F902F9008958C85813009F081C0D1
-:10B970008091A0058130F9F080917502882329F229
-:10B9800011E08091A005813009F010E060918909F3
-:10B9900070918A0980918B0990918C090E94F527FA
-:10B9A00061E02E81621B00E09C014BE258E0812F98
-:10B9B0000E942048AACF80913F0910923F09882316
-:10B9C000D9F20F94BF152AE037ED43E25DE3C301DE
-:10B9D000B2010F94173A4B015C0120E030E040E0E7
-:10B9E0005FE40F94B13987FD05C0812C912CA12C07
-:10B9F0003FE4B32E2AE037ED43E25DE3609189092D
-:10BA000070918A0980918B0990918C090F94173A53
-:10BA100020E030E040E85FE30F94073E0F947B3F67
-:10BA200069837A838B839C83C501B4010F94743F2F
-:10BA30007B018C0121E0E21AF108010911091F9232
-:10BA4000912C812C22E0A22E28E4B22EC980DA802B
-:10BA500021E030E040E050E069E879E08BE298E0F6
-:10BA60000E94EB2C0F9080919F05882309F484CFCE
-:10BA700062CF8C85823009F0A6C18091A00582300A
-:10BA8000D9F080917502882309F43FCF11E08091AD
-:10BA9000A005823009F010E060918D0970918E0947
-:10BAA00080918F09909190090E94F52700E09C01F8
-:10BAB0004DE158E0622D7BCF80913F0910923F0904
-:10BAC0008823F9F20F94BF156091610970916209A2
-:10BAD00080916309909164090F94B6397B018C01C0
-:10BAE00020E030E048EC52E46DE879E08DE198E048
-:10BAF0000F94CB1580919F05882319F21CCF80915C
-:10BB0000A0058330D9F080917502882309F4FDCE19
-:10BB100011E08091A005833009F010E06091910957
-:10BB20007091920980919309909194090E94F52750
-:10BB300000E09C0140E158E06B8539CF80913F09DE
-:10BB400010923F098823F9F20F94BF152AE037EDD0
-:10BB500043E25DE3C301B2010F94173A4B015C016C
-:10BB600020E030E040E05FE40F94B13987FD05C08C
-:10BB7000812C912CA12C9FE4B92E2AE037ED43E2D1
-:10BB80005DE3609191097091920980919309909180
-:10BB900094090F94173A20E030E040E85FE30F94F7
-:10BBA000073E0F947B3F69837A838B839C83C50117
-:10BBB000B4010F94743F7B018C0121E0E21AF1087B
-:10BBC000010911091F92912C812C82E0A82E88E492
-:10BBD000B82EC980DA8021E030E040E050E061E931
-:10BBE00079E080E198E00E94EB2C0F9080919F0516
-:10BBF000882309F488CF9FCE1092470910924B09F1
-:10BC000010924A0910924909109248098091A005A2
-:10BC10008430E9F080917502882309F476CE11E032
-:10BC20008091A005843009F010E060915509709171
-:10BC3000560980915709909158090F94B6390E947E
-:10BC4000D22700E09C0144E058E06A85B0CE8091A4
-:10BC50003F0910923F098823E9F20F94BF150CE7C2
-:10BC600018E224E630E040E050E065E579E084E069
-:10BC700098E00F94541680919F05882359F25BCE6B
-:10BC800081E08093470910924B0910924A09109263
-:10BC90004909109248098091A0058530E9F080910A
-:10BCA0007502882309F431CE11E08091A00585301A
-:10BCB00009F010E06091590970915A0980915B096F
-:10BCC00090915C090F94B6390E94D22700E09C0144
-:10BCD00044E058E069856BCE80913F0910923F099E
-:10BCE0008823E9F20F94BF150AE718E224E630E052
-:10BCF00040E050E069E579E084E098E00F94541664
-:10BD000080919F05882359F216CE82E080934709DF
-:10BD100010924B0910924A09109249091092480951
-:10BD20008091A0058630E9F080917502882309F49E
-:10BD3000ECCD11E08091A005863009F010E0609113
-:10BD40005D0970915E0980915F09909160090F947F
-:10BD5000B6390E94D22700E09C0144E058E0688593
-:10BD600026CE80913F0910923F098823E9F20F9473
-:10BD7000BF1508E718E22AE030E040E050E06DE54A
-:10BD800079E084E098E00F94541680919F05882311
-:10BD900059F2D1CD80913F0910923F09882339F1A2
-:10BDA0000F94BF1506E718E224E630E040E050E0CB
-:10BDB00061E679E088EF97E00F94541680919F0533
-:10BDC0008823A9F0B8CD8C85833009F498CE8430CF
-:10BDD00009F412CF853009F453CF863009F495CF9A
-:10BDE000873009F092CD8091A005873099F280913B
-:10BDF0007502882309F489CD11E08091A005873070
-:10BE000009F010E060916109709162098091630905
-:10BE1000909164090F94B6390E94D22700E09C01EA
-:10BE200048EF57E06F81C3CD2F923F924F925F92C0
-:10BE30006F927F928F929F92AF92BF92CF92DF923A
-:10BE4000EF92FF920F931F93CF93DF9300D01F9237
-:10BE50001F92CDB7DEB761E081E00E94322380916E
-:10BE6000A1058C838A83982F9B5F9983E82FE195A6
-:10BE7000EB8384E0482EFC814F1A8C81811114C021
-:10BE80009091A0059D83992309F489C08091750242
-:10BE9000882351F081E0ED81E11180E024E04CE362
-:10BEA00058E06B810F941E1565E5662E69E0762ECD
-:10BEB000F1E0FD833C803A942C808A81281A9C8191
-:10BEC000ED819E1328C03092470910924B091092C1
-:10BED0004A0910924909109248098091A0058917D2
-:10BEE00009F483C0809175028823A9F011E0809144
-:10BEF000A005FD818F1310E0F3016489758986899F
-:10BF000097890E94052100E09C0141E358E0622DE1
-:10BF1000812F0E9420485D80F4E06F0E711C81E04B
-:10BF2000850D8D83843059F69C81943069F5E3E06A
-:10BF3000E093470910924B0910924A09109249095F
-:10BF4000109248098091A005843009F48CC080913A
-:10BF500075028823C9F0F1E0FD838091A00584304B
-:10BF600009F01D82609175097091760980917709B9
-:10BF7000909178090E94052100E09C0141E358E07E
-:10BF8000642D8D810E9420488C818F5F8C839981E4
-:10BF9000981373CF5394539450929E050EC0809182
-:10BFA0003F0910923F09882309F470CF0E946C2E3C
-:10BFB00080919F05882309F469CF0F900F900F900F
-:10BFC0000F900F90DF91CF911F910F91FF90EF9005
-:10BFD000DF90CF90BF90AF909F908F907F906F90A9
-:10BFE0005F904F903F902F90089580913F0910925D
-:10BFF0003F09882309F476CF0F94BF1520E030E085
-:10C0000040E251E4F30164897589868997890F9428
-:10C01000173A20E030E048E452E40F94073E0F94D2
-:10C020007B3F1F9234E7832E38E2932E46EFA42EF7
-:10C0300047E4B42E6B0114E6E12E16E8F12E01E080
-:10C0400010E022E330E040E050E0B3016C5E7F4F4F
-:10C0500081E398E00E94EB2C0F9080919F0588234C
-:10C0600009F440CFAACF80913F0910923F0988235D
-:10C0700009F46DCF0F94BF1520E030E040E251E4A9
-:10C08000609175097091760980917709909178098E
-:10C090000F94173A20E030E048E452E40F94073E52
-:10C0A0000F947B3F1F9282E7882E88E2982E96EFAE
-:10C0B000A92E97E4B92E6B0114E6E12E16E8F12EB5
-:10C0C00001E010E022E330E040E050E065E779E095
-:10C0D00081E398E00E94EB2C0F9080919F058823CC
-:10C0E00009F435CF6ACF2F923F924F925F926F92B1
-:10C0F0007F928F929F92AF92BF92CF92DF92EF92F8
-:10C10000FF920F931F93CF93DF9300D000D0CDB752
-:10C11000DEB761E081E00E9432232091A1052D83EA
-:10C120002E83322F3B5F398381E0922F821B8A83DB
-:10C1300091959B8382E0821B8C83FD81F11185C1E7
-:10C140001091A005112309F459C18091750288232B
-:10C1500049F081E0111180E024E04CE358E06B816C
-:10C160000F941E158091F105882309F437C2FD81D3
-:10C17000F23029F58091A005823009F4A2C18091A6
-:10C1800075028823E1F011E08091A005823009F06A
-:10C1900010E0E091510924E0E29FF0011124E75101
-:10C1A000FA4F60817181828193810E94E62100E0D3
-:10C1B0009C0144E957E06C81812F0E942048712C3A
-:10C1C000612C13E0312E2D803E81231A8D81831145
-:10C1D0002EC06092470910924B0910924A091092A2
-:10C1E0004909109248098091A0059D81891709F499
-:10C1F000B1C1809175028823D1F011E08091A00532
-:10C20000831110E0F301EE0FFF1FEE0FFF1FE75148
-:10C21000FA4F60817181828193810E94E62100E062
-:10C220009C0148E857E0622D812F0E942048FFEFD3
-:10C230006F1A7F0A24E032128AC115E03D81131380
-:10C2400029C08091A005811709F4CAC180917502A7
-:10C25000882301F16D809E81691A772473948091FF
-:10C26000A005ED818E13712CE091510928E0E29F29
-:10C27000F0011124E752FA4F60817181828193812C
-:10C280000E94362800E09C014EE757E0662D872D7E
-:10C290000E94204844244394410E712C612C3D801F
-:10C2A0003E81331A8D8184112FC06092470910920C
-:10C2B0004B0910924A09109249091092480980913D
-:10C2C000A0059D81891709F4AAC180917502882370
-:10C2D000D9F011E08091A005841110E0F30133E062
-:10C2E000EE0FFF1F3A95E1F7E752FA4F6081718137
-:10C2F000828193810E94362800E09C0145E757E047
-:10C30000632D812F0E942048542C44244394450CD3
-:10C310006A94672809F07FC1FD814F1228C080917F
-:10C32000A0058F1709F496C1809175028823F9F052
-:10C330007D803E81731A11E08091A0059D81891353
-:10C3400010E0E091510928E0E29FF0011124E7524A
-:10C35000FA4F64817581868197810E94362800E0BA
-:10C360009C014DE657E0672D812F0E942048539491
-:10C370005394712C612C4D803E81431A8D8185111F
-:10C380002FC06092470910924B0910924A091092EF
-:10C390004909109248098091A0059D81891709F4E7
-:10C3A00078C1809175028823D9F011E08091A005B1
-:10C3B000851110E0F30183E0EE0FFF1F8A95E1F78E
-:10C3C000E752FA4F64817581868197810E943628F1
-:10C3D00000E09C0146E657E0642D812F0E94204832
-:10C3E00053946A94672809F050C1FD81FF5FFD8373
-:10C3F00029812F13A2CE50929E050EC080913F0935
-:10C4000010923F09882309F4A0CE0E946C2E8091DF
-:10C410009F05882309F499CE26960FB6F894DEBFBF
-:10C420000FBECDBFDF91CF911F910F91FF90EF9085
-:10C43000DF90CF90BF90AF909F908F907F906F9044
-:10C440005F904F903F902F9008952D81213009F0FB
-:10C4500089CE8091A0058130D1F08091750288232A
-:10C4600009F480CE81E09091A005913009F080E040
-:10C470009091F10522EC37E0911102C02EEB37E0EC
-:10C4800001E04EE957E06A810E9420486BCE80911E
-:10C49000F10590913F0910923F099923F1F23D81F6
-:10C4A00083278093F10583E080937502E7EEF1E73F
-:10C4B000EF2B11F00E94E77180919F05882369F2AC
-:10C4C000ABCF80913F0910923F09882309F457CEE2
-:10C4D0000F94BF156090510924E0629E3001112431
-:10C4E000C30187519A4F3C0120E030E04AE754E411
-:10C4F000FC0160817181828193810F94173A20E061
-:10C5000030E84BEB54E40F94073E0F947B3F1F92AF
-:10C5100007EE802E01E7902E8AE1A82E88E4B82E3F
-:10C520006B0116EDE12E16E0F12E00E010E02CED8F
-:10C5300035E040E050E0B30184E997E00E94EB2C45
-:10C540000F9080919F05882309F419CE65CFB4E040
-:10C550003B2E3CCE80913F0910923F09882309F47D
-:10C5600048CE0F94BF15C301880F991F880F991FDC
-:10C57000FC01E751FA4F2F0120E030E04AE754E494
-:10C5800060817181828193810F94173A20E030E8B5
-:10C590004BEB54E40F94073E0F947B3F1F92E7EE62
-:10C5A0008E2EE1E79E2EFAE1AF2EF8E4BF2E6B014E
-:10C5B00016EDE12E16E0F12E00E010E02CED35E056
-:10C5C00040E050E0B20188E897E00E94EB2C0F9029
-:10C5D00080919F05882309F40CCE1ECF12E02ECE49
-:10C5E00080913F0910923F09882309F42FCE0F94C0
-:10C5F000BF156091510988E0689FB001112467520E
-:10C600007A4F8EE797E00F946A1780919F058823F1
-:10C6100009F41CCE01CF66246394712C43CE809123
-:10C620003F0910923F09882309F44FCE0F94BF159C
-:10C63000B30143E0660F771F4A95E1F767527A4FDF
-:10C6400085E797E00F946A1780919F05882309F486
-:10C650003CCEE2CE80913F0910923F09882309F435
-:10C6600063CE0F94BF156091510928E0629FB0011D
-:10C67000112463527A4F8DE697E00F946A178091E8
-:10C680009F05882309F450CEC7CE66246394712C8D
-:10C6900075CE80913F0910923F09882309F481CE1D
-:10C6A0000F94BF15B30193E0660F771F9A95E1F7DA
-:10C6B00063527A4F86E697E00F946A1780919F0540
-:10C6C000882309F46ECEA8CE2F923F924F925F92AC
-:10C6D0006F927F928F929F92AF92BF92CF92DF9292
-:10C6E000EF92FF920F931F93CF93DF9300D0CDB7BC
-:10C6F000DEB761E081E00E9432232091A1052A8308
-:10C700002B5F298384E09A81891B8B8323E0522E3F
-:10C71000352C391A82E0782E791A81E0682E691A50
-:10C72000292E21942A8121113DC01091A0051123A9
-:10C73000B9F080917502882349F081E0111180E001
-:10C7400024E04CE358E0622D0F941E152A812F5FE0
-:10C750002A8389812813E6CF85E080939E050CC04B
-:10C7600080913F0910923F09882319F30E946C2E93
-:10C7700080919F058823E9F20F900F900F90DF9131
-:10C78000CF911F910F91FF90EF90DF90CF90BF90CE
-:10C79000AF909F908F907F906F905F904F903F9061
-:10C7A0002F9008958A81813071F59091A005913084
-:10C7B000B9F080917502882349F281E0913009F047
-:10C7C00080E090916D0622EC37E0911102C02EEBD3
-:10C7D00037E001E045EC57E0662D0E942048B6CFD7
-:10C7E00080913F0910923F09882319F380916D06CB
-:10C7F0002A81822780936D065092750280919F0551
-:10C800008823B9F2B9CF8A81823009F098C080912B
-:10C81000A0058230C1F080917502882309F496CF7B
-:10C8200011E08091A005823009F010E0809118029B
-:10C83000909119020E9492BD00E09C0147EB57E0E5
-:10C84000672D812FCACF80913F0910923F0988231D
-:10C8500011F310E000E025EF30E050E040E068E147
-:10C8600072E087EB97E00F94CC1680919F058823A8
-:10C8700091F282CF8091A0058330B9F0809175024A
-:10C88000882309F463CF11E08091A005833009F07B
-:10C8900010E080911602909117020E9492BD00E074
-:10C8A0009C0140EB57E0632DCCCF80913F09109263
-:10C8B0003F09882319F310E000E025EF30E050E055
-:10C8C00040E066E172E080EB97E00F94CC16809137
-:10C8D0009F05882399F250CF80913F0910923F091C
-:10C8E0008823C9F120E030E048EC52E46091120264
-:10C8F0007091130280911402909115020F94173ACF
-:10C900000F947B3F1F92912C812C80EFA82E87E4FF
-:10C91000B82E6B0118EEE12E13E0F12E00E010E0CE
-:10C9200020E030E0A90162E172E088EA97E00E942D
-:10C93000EB2C0F9080919F05882369F01DCF9A8181
-:10C94000933009F497CF943009F000CF4090A005C0
-:10C9500094E0491609F280917502882309F4F6CE15
-:10C96000609112027091130280911402909115024D
-:10C970000E94651F9C0181E094E0491280E000E084
-:10C9800048EA57E06B8129CFE5E4F6E183AF64AF75
-:10C990006FEF7FEFCA010C947FC72F923F924F92A7
-:10C9A0005F926F927F928F929F92AF92BF92CF923F
-:10C9B000DF92EF92FF920F931F93CF93DF9300D0FC
-:10C9C00000D01F921F92CDB7DEB710924509E091BB
-:10C9D0001712F0911812309721F0199581110F94C8
-:10C9E0008E1080913F0910923F09882319F120E0B1
-:10C9F00040E070E060E08EE89BE30E9493230E9499
-:10CA0000DE3F28960FB6F894DEBF0FBECDBFDF9194
-:10CA1000CF911F910F91FF90EF90DF90CF90BF903B
-:10CA2000AF909F908F907F906F905F904F903F90CE
-:10CA30002F90089580919705882309F434C260915E
-:10CA4000470670914806072E000C880B990B0F942F
-:10CA5000B83911E0209143063091440640914506D3
-:10CA6000509146060F94684018160CF010E0609143
-:10CA70005E0670915F06072E000C880B990B0F94D1
-:10CA8000B8399B01AC0160915A0670915B068091A8
-:10CA90005C0690915D060F94B13987FD12600E948B
-:10CAA0003BC88111146010932E0520916D0F3091B9
-:10CAB0006E0F40916F0F5091700F609176027091E0
-:10CAC000770280917802909179020F94083E4B0191
-:10CAD0005C012091710F3091720F4091730F509152
-:10CAE000740F60917A0270917B0280917C02909128
-:10CAF0007D020F94083E6D837E838F8398872091FB
-:10CB0000750F3091760F4091770F5091780F6091AB
-:10CB10007E0270917F0280918002909181020F9439
-:10CB2000083E2B013C0120E030E040E251E40F944C
-:10CB3000173A20E030E048EC52E40F94173A6B01CA
-:10CB40007C0120E030E0A901C301B2010F94B139AA
-:10CB500020E030E040EA50EC87FD04C020E030E007
-:10CB600040EA50E4C701B6010F94083E20E030E0EF
-:10CB700040E251E40F94023F0F94743F2B013C01BB
-:10CB800080E277FE09C07094609450944094411CF8
-:10CB9000511C611C711C8DE28093A20560E220E1B2
-:10CBA000421627E25206610471048CF0C301B201FF
-:10CBB00020E137E240E050E00F94C63DCA01B901E0
-:10CBC0002AE030E040E050E00F94C63D605D6093A5
-:10CBD000A30560E238EE431633E0530661047104A6
-:10CBE0008CF0C301B20128EE33E040E050E00F9436
-:10CBF000C63DCA01B9012AE030E040E050E00F94A0
-:10CC0000C63D605D6093A405C301B20124E630E037
-:10CC100040E050E00F94C63D6AE0C62ED12CE12CD6
-:10CC2000F12CCA01B901A70196010F94C63D605DC0
-:10CC30006093A505C301B201A70196010F94C63DFB
-:10CC4000162FCA01B901A70196010F94C63D112301
-:10CC500009F4F6C08EE28093A605605D6093A70597
-:10CC6000105D1093A80562EA75E086E295E00F94E6
-:10CC7000ED4120E030E0A901C501B4010F94B139C4
-:10CC800020E030E040E05FEB87FD04C020E030E0D2
-:10CC900040E05FE3C501B4010F94083E0F94743F78
-:10CCA000CB010E9413BDBC0181E295E00F94ED41E0
-:10CCB00020E030E0A9016D817E818F8198850F94FD
-:10CCC000B13920E030E040E05FEB87FD04C020E0B8
-:10CCD00030E040E05FE36D817E818F8198850F9425
-:10CCE000083E0F94743FCB010E9413BDBC018CE140
-:10CCF00095E00F94ED418091A21714E683FD29C0C1
-:10CD00000E9473CD882309F4ADC080919A17909149
-:10CD10009B17A0919C17B0919D170097A105B10595
-:10CD200009F4A0C0BC01CD016D597F4F8F4F9F4FBB
-:10CD300024E630E040E050E00F94A43D60919E175F
-:10CD400070919F178091A0179091A1170F94A43D07
-:10CD5000122F0E94E4BA4B015C01062F80910F0252
-:10CD60008117A1F010930F0288E4189FB0011124DD
-:10CD700090E080E00F94B6392AE037ED43E25CE3BF
-:10CD80000F94173A0F947B3F60931B0580910E021E
-:10CD9000081709F488C080920E02C501B40120E191
-:10CDA0003EE040E050E00F94A43DC22E732EE22EF0
-:10CDB000F32E5CE3252E312C412C512CC501B401FE
-:10CDC000A20191010F94A43D062F672ECA01B9015B
-:10CDD000A20191010F94A43D162FD72E90E8891639
-:10CDE00091E5990691E0A906B104F0F1C501B401FD
-:10CDF00020E831E541E050E00F94A43D5901DF9275
-:10CE00001F93C70168E170E00F9434419F938F93A3
-:10CE10003F932F938FE796E09F938F938BE095E05E
-:10CE20009F938F930F9448390FB6F894DEBF0FBECF
-:10CE3000CDBF89E0BAE0AB16B10470F588E02CC034
-:10CE4000662351F08EE28093A605605D6093A7058E
-:10CE500080E28093A80507CF80E28093A7058093A6
-:10CE6000A605F6CF10E075CFE114F10409F087C2F2
-:10CE70006F920F93DF921F9383E796E09F938F93B8
-:10CE80008BE095E09F938F930F9448390FB6F894F9
-:10CE9000DEBF0FBECDBF85E0982F990F990F891B7C
-:10CEA000855A80930A050E94F224D82E81E00E94C0
-:10CEB000AA3F80912E05982F947042E102E082FFF4
-:10CEC00002C048E00CE080917D16843180F48091AE
-:10CED0007F16841760F0992309F471C28BE197E003
-:10CEE0007C0123E060E589E496E10F94852680913A
-:10CEF0007D168431B8F480917F16823098F0DD2061
-:10CF000009F460C28091D205882309F45BC28FEDD9
-:10CF100096E07C0102E123E042E068E689E496E1E4
-:10CF20000F94852680917D168C3108F0EAC02FE39E
-:10CF3000222E26E0322E1FE0B12CA12C39E0432E08
-:10CF4000512C612C712C4CE1C42E3A2DD101149638
-:10CF50008D919D910D90BC91A02D8D839E83AF836B
-:10CF6000B887F1018084918480917D16843118F511
-:10CF700080917F168830F8F062E2A11001C068E06D
-:10CF8000F501E855FD4F208180912E0590E002C00B
-:10CF9000959587953A95E2F7F501EE0FFF1F80FF13
-:10CFA00014C2EB55F94FE590F4900CE048E089E4A9
-:10CFB00096E10F94852680917D168830B0F4D110CB
-:10CFC0000BC025E02A9DF0012B9DF00D1124E25E9F
-:10CFD000F94F8481811109C097FEFAC14DE956E0ED
-:10CFE00067E087EF810F0E94C46480917D168C31C9
-:10CFF000C8F480917F168431A8F020E030E040E052
-:10D000005FE36D817E818F8198850F94083E0F9438
-:10D01000743F77FF08C24DE956E06CE187EF810F5E
-:10D020000E94C4643FEFA31AB30A87E1280E311CA3
-:10D03000165E133409F089CF809032069090330643
-:10D04000A0903406B090350680917D16883090F41B
-:10D05000D11004C080912C0681110CC0809136063D
-:10D060009091370697FF09C24DE956E067E081E5E8
-:10D070000E94C46480917D168C31B0F480917F163B
-:10D08000843190F020E030E040E05FE3C501B4017E
-:10D090000F94083E0F94743F77FF1DC24DE956E090
-:10D0A0006CE181E50E94C46480917D168C3148F565
-:10D0B00080917F16843128F18091D205882309F16F
-:10D0C000E4E68E9FC001112481589F4F6FEF70E0FE
-:10D0D0000F944841CB010E9492BD27E62093801611
-:10D0E0002CE1209381160E94AD4285E290E0A0E001
-:10D0F000B0E089839A83AB83BC83CE0101960E9402
-:10D1000067400E9473CD882379F180917D16843326
-:10D1100058F580917F168A3238F107E028E04AE21C
-:10D120006AE289E496E10F94C72305E022E04CE22D
-:10D1300062E389E496E10F94C72324E04AE061E3C7
-:10D140008AE20F948D2360914B1670914C1682E306
-:10D15000809365168BE28093661625E636E142E3FE
-:10D1600089E496E10F94452280917D16853350F431
-:10D1700080917F16813330F024E04AE461E386E356
-:10D180000F948D2380917D16843368F480917F16EF
-:10D19000823348F002E020911B0542E367E389E413
-:10D1A00096E10F94C72380917D16803378F48091A7
-:10D1B0007F16883258F080910A058093801680E3AC
-:10D1C000809381168BE095E00E94AD4280917D16A0
-:10D1D000883208F06FC080917F168D3108F46AC0E4
-:10D1E0002BE040E86DE180E00F948D2380917D1667
-:10D1F000873208F05FC080917F168F3108F45AC0E3
-:10D2000088E590E0A0E0B0E089839A83AB83BC839B
-:10D2100083E08093801616E210938116CE0101966A
-:10D220000E9467408BE08093801610938116DD206A
-:10D2300009F480C181E295E00E94AD4289E590E069
-:10D24000A0E0B0E089839A83AB83BC8388E28093BB
-:10D25000801616E210938116CE0101960E94674057
-:10D2600080E38093801610938116DD2009F48AC133
-:10D270008CE195E00E94AD428AE590E0A0E0B0E04C
-:10D2800089839A83AB83BC838DE48093801616E2F6
-:10D2900010938116CE0101960E94674085E5809328
-:10D2A000801610938116DD2009F494C186E295E082
-:10D2B0000E94AD4280917D168333A8F580917F1640
-:10D2C0008B3288F183E00E94AA3F86E090E0A0E0E4
-:10D2D000B0E089839A83AB83BC8383E0809380161C
-:10D2E00013E310938116CE0101960E94674081E0FE
-:10D2F0000E94AA3F80912002909121020E9492BD3B
-:10D300002CE020938016109381160E94AD4285E296
-:10D3100090E0A0E0B0E089839A83AB83BC83CE0128
-:10D3200001960E94674080917D16813408F069CB98
-:10D3300080917F16863308F464CB109280168EE3BA
-:10D340008093811689E192E10E94A724182F60E85A
-:10D3500070E089E192E10E94DDC780E2C82ED12C05
-:10D36000E12CF12C153108F04CCBC982DA82EB822A
-:10D37000FC82CE0101960E9467401F5FF3CFF4E666
-:10D38000EF16F10438F4DF921F937F92CF9287E675
-:10D3900096E074CDDF921F937F92CF928DE596E059
-:10D3A0009F938F938BE095E09F938F930F944839D1
-:10D3B0000FB6F894DEBF0FBECDBF86E06DCD85E120
-:10D3C00097E08ECD89EA96E0A4CDEF55F94FEBCDED
-:10D3D000C4010E9492BDFC01808193E0803229F457
-:10D3E000818192E0803209F491E0892F880F880FC3
-:10D3F000392F381B832F810F8093801687E080930D
-:10D400008116A3E0B0E0A91BB109CD018E0F9F1FCB
-:10D410000E94AD4249825A826B827C82CE01019683
-:10D420000E946740E2CDCB010E9492BDFC01808149
-:10D4300093E0803229F4818192E0803209F491E016
-:10D44000892F880F880FB92FB81B8B2F810F8093DE
-:10D450008016C092811623E030E0291B3109C901F2
-:10D460008E0F9F1F0E94AD4249825A826B827C823E
-:10D47000CE0101960E946740D5CD0E9492BDFC016D
-:10D48000808193E0803229F4818192E0803209F436
-:10D4900091E0892F880F880FA92FA81B8A2F865A01
-:10D4A0008093801687E08093811623E030E0291B6B
-:10D4B0003109CF01820F931F0E94AD4289E090E0B5
-:10D4C000A0E0B0E089839A83AB83BC83CE01019650
-:10D4D0000E946740CFCDCB010E9492BDFC018081AC
-:10D4E00093E0803229F4818192E0803209F491E066
-:10D4F000892F880F880FB92FB81B8B2F865A8093DE
-:10D5000080168CE18093811623E030E0291B3109DD
-:10D51000CF01820F931F0E94AD4289E090E0A0E00E
-:10D52000B0E089839A83AB83BC83CE0101960E94CD
-:10D530006740BACD0F94171180FF19C001E215E0C2
-:10D54000D8018D918D01882309F478CE8F320CF0AB
-:10D550008FE3082E000C990BAA0BBB0B89839A83CF
-:10D56000AB83BC83CE0101960E946740E9CF8091D6
-:10D57000E40880FD5FCE6FEF7FEF88E996E00E94C0
-:10D580007FC75CCE0F94171181FF19C00CE115E025
-:10D59000F80181918F01882309F46ECE8F320CF04F
-:10D5A0008FE3082E000C990BAA0BBB0B89839A837F
-:10D5B000AB83BC83CE0101960E946740E9CF809186
-:10D5C000E40881FD55CE6FEF7FEF88E996E00E9479
-:10D5D0007FC752CE0F94171182FF19C006E215E0E3
-:10D5E000D8018D918D01882309F464CE8F320CF01F
-:10D5F0008FE3082E000C990BAA0BBB0B89839A832F
-:10D60000AB83BC83CE0101960E946740E9CF809135
-:10D61000E40882FD4BCE6FEF7FEF80E996E00E9439
-:10D620007FC748CECF93DF93FC0125AD211104C005
-:10D6300021E025AF0F944922C0914B16D0914C1692
-:10D64000E0917A16F0917B1682E01995E0917A16B6
-:10D65000F0917B1681E0199530E020E044E1BE01B5
-:10D6600089E496E10F9445222CE736E147E1BE01BB
-:10D6700089E496E10F944522E0917A16F0917B16A9
-:10D6800080E0DF91CF9119944F925F926F927F92D9
-:10D690008F929F92AF92BF92CF92DF92EF92FF92C2
-:10D6A0001F93CF93DF93CDB7DEB760970FB6F89493
-:10D6B000DEBF0FBECDBF0F941E1D6B017C0180919C
-:10D6C00010028F3F09F44DC00F941E1D809030054D
-:10D6D00090903105A0903205B09033056819790912
-:10D6E0008A099B0997FD3DC08091091690910A1601
-:10D6F0008F5F8F708917A9F18091100240E050E090
-:10D7000065E073E4843050F424E0829FF00111243A
-:10D71000E655FD4F40815181628173814D875E875F
-:10D720006F87788B19821A821B821C821D821E824F
-:10D730001F82188619861A861B861C8640912F0523
-:10D74000833011F0409151099E012F5F3F4FBE0180
-:10D75000635F7F4F86E792E00E94ACA68FEF8093D5
-:10D7600010020E94603E8091FF0382FF33C08091CF
-:10D770003B05811131C091E090933B0580914F09A9
-:10D78000892780933F0910924F0983E080937502A7
-:10D790001092FF030F941E1D6C507E4F8F4F9F4FB2
-:10D7A00060933E0570933F0580934005909341053B
-:10D7B00068E873E182E090E00E948D2B16E0115042
-:10D7C00059F00E94312B62E070E080E090E00F940D
-:10D7D000911CF5CF10923B058091FB039091FC03C7
-:10D7E000A091FD03B091FE03A7019601281B390B00
-:10D7F0004A0B5B0BDA01C901B7FF05C080919405A4
-:10D80000882309F4BDC1D701C6018C599F4FAF4F82
-:10D81000BF4F8093FB039093FC03A093FD03B09351
-:10D82000FE0360913C05062E000C770B77FF03C0CA
-:10D8300071956195710990913C0580913A05981315
-:10D8400065C0633008F062C010923C0580913C05D1
-:10D8500080933A05653008F06BC080913F098111D3
-:10D86000E9C080914316909144168D5C944641F432
-:10D8700080911102882309F4EFC081508093110236
-:10D880000E943C958090CE059090CF05A090D00549
-:10D89000B090D10581110E944995D501C4013AE0AB
-:10D8A000B695A795979587953A95D1F7009741E05A
-:10D8B000A407B10520F08FEF9FEFA0E0B0E09695B0
-:10D8C0008795209175022111D9C0309194053111AD
-:10D8D00086C180914316909144168D5C944609F45C
-:10D8E00065C180914009811161C180913605909197
-:10D8F0003705A0913805B0913905C81AD90AEA0A46
-:10D90000FB0AF7FC61C10E945E2D5EC18DEF860FA0
-:10D91000823008F09BCF80913C0591E087FD9FEF1E
-:10D92000892F880F880F890F80933C0565E08ECF83
-:10D930008091450921E030E040E050E0882309F47F
-:10D9400056C08090410990904209A0904309B09040
-:10D95000440981149104A104B104E9F170E090E05C
-:10D9600080E00F94B63920E030E040EA50E40F94B4
-:10D97000023F2B013C01C701B601681979098A09E8
-:10D980009B090F94B6399B01AC01C301B2010F94FE
-:10D99000023F20E030E04AE754E40F94173A4B018D
-:10D9A0005C0120E030E040EA52E40F94684024E655
-:10D9B00030E040E050E087FF12C020E030E040EF70
-:10D9C00051E4C501B4010F9468402AE030E040E022
-:10D9D00050E087FF04C021E030E040E050E0C0921A
-:10D9E0004109D0924209E0924309F0924409A09182
-:10D9F0003C050A2E000CBB0B0F94F03D25E030E0F7
-:10DA000040E050E00F94C63D80913B0990913C0965
-:10DA1000A0913D09B0913E09820F931FA41FB51F2D
-:10DA200080933B0990933C09A0933D09B0933E0934
-:10DA300010923C05D701C6018856954CAF4FBF4F99
-:10DA40008093360590933705A0933805B093390538
-:10DA500081E08093750205CF8CE080931102809164
-:10DA6000340590913505009729F00197909335057D
-:10DA70008093340581E08093750202CF009741F0D6
-:10DA800040913405509135054817590708F021CFCA
-:10DA900080919405811112C0223038F0243008F4AE
-:10DAA00041C0243011F41092750285E496E10E9481
-:10DAB000126B81E0809397058093940583E00E9428
-:10DAC000AA3F81E080936916E0914316F0914416D5
-:10DAD00019951092970580919405811127C0109295
-:10DAE0003F0980914316909144168D5C944609F04D
-:10DAF000F8CE0F941E1DDC01CB018C199D09AE09D7
-:10DB0000BF098090340590903505B12CA12C881662
-:10DB10009906AA06BB0608F0DCCE909335058093E3
-:10DB20003405D7CE81E080937502BFCF89E496E1BA
-:10DB30000F94E72491E0811101C090E09093940547
-:10DB4000882369F280914316909144168D5C944627
-:10DB5000B9F40F941E1DDC01CB018C199D09AE098F
-:10DB6000BF09C0903405D0903505F12CE12CC816C2
-:10DB7000D906EA06FB0620F4909335058093340518
-:10DB800060960FB6F894DEBF0FBECDBFDF91CF9188
-:10DB90001F91FF90EF90DF90CF90BF90AF909F903C
-:10DBA0008F907F906F905F904F90089548E9C40EDA
-:10DBB0004AE3D41EE11CF11CC0923605D092370511
-:10DBC000E0923805F0923905809194058111D8CF03
-:10DBD000809175028130A1F610927502D1CF009725
-:10DBE00009F46CCF4DCF3F924F925F926F927F922C
-:10DBF0008F929F92AF92BF92CF92DF92EF92FF925D
-:10DC00000F931F93CF93DF93CDB7DEB7EB970FB68C
-:10DC1000F894DEBF0FBECDBF8FEF80931B028091C3
-:10DC20009705882369F18091A21700E010E084FF36
-:10DC300023C089E894E10E945F808BE1E9E8F4E188
-:10DC4000DE01919601900D928A95E1F710E000E0D7
-:10DC5000BE016F5F7F4FCE0181960F946C0E181638
-:10DC60003CF4CE0101960E94F579080F111DF0CF0A
-:10DC7000CE0181960E9464800093950510939605CD
-:10DC800061E081E00E9432231091A105412E85E0E0
-:10DC9000582E510E312E319491E1A92E9FE1B92ECB
-:10DCA00024E1822E2DE0922E81E0682E611A11115E
-:10DCB00011C00091A005002329F1809175028823ED
-:10DCC00049F081E0011180E024E049E15DE0632D4D
-:10DCD0000F941E158091A21786FD59C084FF57C06E
-:10DCE000113009F052C00091A005013079F1809106
-:10DCF0007502811138C082E01F5F5112D8CF809326
-:10DD00009E050CC080913F0910923F098823A9F21B
-:10DD10000E946C2E80919F05882379F2EB960FB6B6
-:10DD2000F894DEBF0FBECDBFDF91CF911F910F9151
-:10DD3000FF90EF90DF90CF90BF90AF909F908F902B
-:10DD40007F906F905F904F903F90089580913F0932
-:10DD500010923F09882359F20E94111F80919F055C
-:10DD6000882329F2DBCFBF92AF929F928F926F925E
-:10DD700081E0013009F080E08F930E947D250F90B3
-:10DD80000F900F900F900F900F9082E001C081E0F4
-:10DD900090917502992309F4AFCF082FD12CC12C93
-:10DDA000712E7418802FE0909505F0909605CE1492
-:10DDB000DF0408F0A1CF0113A9C081E0E81AF1083F
-:10DDC000EC18FD0889E894E10E945F808BE1E9E8A6
-:10DDD000F4E1DE01919601900D928A95E1F7F12C24
-:10DDE000BE016F5F7F4FCE0181960F946C0E1816A7
-:10DDF0007CF4CE0101960E94F579882389F3EF1017
-:10DE00006BC0BE016F5F7F4F89E79FE00E94127A6F
-:10DE1000CE0181960E9464808091A217F090A005A7
-:10DE200085FF79C0F11263C080913F0910923F09CC
-:10DE3000882309F45CC019821C8280918C1464EAE6
-:10DE400074E1882311F069E874E121E049E75FE0BB
-:10DE5000CE0101960E946A80882309F43FC08BE1BD
-:10DE6000FE013196A9E8B4E101900D928A95E1F79F
-:10DE70008091A2178F7B8093A217A0919717AA3049
-:10DE800080F481E08A0F809397178BE18A9FD001FD
-:10DE90001124A757B94EE9E8F4E101900D928A9553
-:10DEA000E1F7CE0101960E9464801092A10582E004
-:10DEB00090E0A0E0B0E080933B0990933C09A093F0
-:10DEC0003D09B0933E0981E080939F05109294052F
-:10DED00083E08093750222CFF39482CF0E940FD803
-:10DEE00069E77FE08EEF9CE00F94E226DACF809125
-:10DEF0007502882359F0EE24E394F112E12C6E2D83
-:10DF0000872D0E94733F41E0811116C08FEFC81A20
-:10DF1000D80A0F5F47CFF116A1F0809175028823D0
-:10DF2000A9F3EE24E394F112E12C6E2D872D0E94CB
-:10DF3000733F882359F340E0672D8E2D0F944014D2
-:10DF4000E5CF80913F0910923F09882331F381EE9C
-:10DF500096E20E947D2480919F058823F1F2DECE17
-:10DF6000DC01680F791F90E080E02D91E92FFF27F9
-:10DF7000E227EE0FFF1FE656FB4D25913491982FB7
-:10DF80008827822793276A177B0779F708950F93CD
-:10DF90001F93CF93DF93CDB7DEB760970FB6F8949A
-:10DFA000DEBF0FBECDBF8C01DC01ED91FC91028084
-:10DFB000F381E02DBE016F5F7F4F1995882309F42F
-:10DFC00064C08981807CC9F56F81637070E0762FB1
-:10DFD0006627770F770F8885B4E08B9FC0011124E7
-:10DFE000682B792B89858295869586958370682B19
-:10DFF0006F5F7F4F90E080E02A852370220F3B8582
-:10E0000037FB332730F9232B3E813F70230F332713
-:10E01000331F2750310904C0660F771F881F991FCF
-:10E020002A95D2F760960FB6F894DEBF0FBECDBF2B
-:10E03000DF91CF911F910F910895803419F5688574
-:10E040006695669570E090E080E0CB0177276627C3
-:10E050002A85622B098510E0102F0027012E000C65
-:10E06000220B330B602B712B822B932B6F5F7F4F17
-:10E070008F4F9F4F4AE0660F771F881F991F4A9561
-:10E08000D1F7D0CF8BE0F801848360E070E0CB0162
-:10E09000C9CF0895FC0182810895CF93DF93E09169
-:10E0A000390687E1E89FF0011124E15CF94FC08552
-:10E0B000D18581E0CE31D105C4F020E030E040E0F0
-:10E0C0005FE364817581868197810F94083E0F9488
-:10E0D000743F6C1B7D0B77FF03C0719561957109CF
-:10E0E00081E0633071050CF080E0DF91CF910895FD
-:10E0F000FC0190E1AFEAB7E001900D929A95E1F74B
-:10E100000895BC012091A0073091A1074091A0077C
-:10E110005091A1072417350731F481E026173707FE
-:10E1200009F080E008959A01F1CFEF92FF920F93EA
-:10E130001F93E0920306F0920406009305061093E5
-:10E1400006066093070670930806809309069FEF02
-:10E15000FF27621B730B840B30F4809570956195DB
-:10E16000790B890B992790930E08A6E06A9F00927D
-:10E170000208512DEE277A9F500DE11D8A9FE00D78
-:10E1800050930308E0930408AFE06A9F00920608EA
-:10E19000512DEE277A9F500DE11D8A9FE00D50937F
-:10E1A0000708E0930808AAE06A9F00920A08512D28
-:10E1B000EE277A9F500DE11D8A9FE00D50930B08CA
-:10E1C000E0930C081F910F91FF90EF90089580E06D
-:10E1D00008959F92AF92BF92CF92DF92EF92FF92FB
-:10E1E0000F931F93CF93DF9300D01F921F92CDB751
-:10E1F000DEB7EBEBF6E10027BB27462F572FA82F02
-:10E20000AA2341F4A52F542FB85FAA2319F4A52FF0
-:10E210005527B85FA03138F45295A295452F4F701D
-:10E22000507FA42BBC5FA03428F4550FAA1F550FB4
-:10E23000AA1FBE5FA03818F4550FAA1FB395550F3B
-:10E24000AA1FEA0FF01F449151E0AA27B85081F1AC
-:10E25000C8F0B0FF02C0440F551FB1FF04C0440F07
-:10E26000551F440F551FB2FF06C052954295142FFB
-:10E270001F70407F512BB3FF1BC0A52F542F442785
-:10E280000C945871B195B0FF02C055954795B1FFF8
-:10E2900004C05595479555954795B2FF05C05295D1
-:10E2A000407F4295452B5F70B3FF02C0452F552735
-:10E2B000DD24CC24BB24B2E0649FD018C108B00A8E
-:10E2C000B00B749FC018B108B00B849FB018B1098F
-:10E2D000659FC018B108B00B759FB018B109859F34
-:10E2E000B0196A9FB018B1097A9FB0194D9DA12C41
-:10E2F00099243327992722275D9DA00C911C301F5C
-:10E30000901F201FAD9D900C311D901F201F4C9D14
-:10E31000A00C911C301F901F201F5C9D900C311D84
-:10E32000901F201FAC9D300D911D201F4B9D900C08
-:10E33000311D901F201F5B9D300D911D201FAB9D37
-:10E34000900D211D4B9F300D911D201F5B9F900D47
-:10E35000211DAB9F200DB1E0BB24CC24DD24639FA5
-:10E36000D018C108B00AB00B739FC018B108B00B29
-:10E37000839FB018B109699FC018B108B00B799F8D
-:10E38000B018B109899FB019629FB018B109729F86
-:10E39000B019D61AC70AB80A20F0B1E03B0F901F97
-:10E3A000201F1124792F632F90E0822F0F900F9060
-:10E3B0000F900F900F90DF91CF911F910F91FF90D1
-:10E3C000EF90DF90CF90BF90AF909F9008957F9295
-:10E3D0008F929F92AF92BF92CF92DF92EF92FF9275
-:10E3E0000F931F93CF93DF937090F105C6EBD5E0A9
-:10E3F00092E2C92E92E0D92E26E2E22E22E0F22EFF
-:10E4000009EE15E0772009F45EC0F8018080918064
-:10E41000A280B38020E030E0A901C501B4010F94CF
-:10E42000B139882309F44FC020E030E040E05FE3D9
-:10E43000C501B4010F94173A9B01AC010F94173A30
-:10E440002BED3FE049E450E40F94173A9B01AC01F7
-:10E4500060E070E080E89FE30F94023F4B015C01B5
-:10E4600089929992A992B992F601619171916F0185
-:10E47000072E000C880B990B0F94B8392AE037ED62
-:10E4800043E25CE30F94173AA50194010F94173A05
-:10E49000F70161937193819391937F010C5F1F4FFB
-:10E4A000F5E0CE3BDF0709F0ADCFDF91CF911F91B3
-:10E4B0000F91FF90EF90DF90CF90BF90AF909F9023
-:10E4C0008F907F900895812C912C80E8A82E8FE367
-:10E4D000B82EC6CFFC01908193FB882780F993FF6B
-:10E4E0000E94E770811102C081E0089580E00895E4
-:10E4F000CF92DF92EF92FF920F931F93CF93DF9310
-:10E50000E82FF0E0EF01CC0FDD1FCC0FDD1F461729
-:10E5100039F0823009F049C0C12CD12C760117C0E6
-:10E520008230D1F3A09151098A2F90E0DC01AA0F2B
-:10E53000BB1FA80FB91FAE0FBF1FAA0FBB1FAA0F8B
-:10E54000BB1FA259B94FCD90DD90ED90FC908F018B
-:10E55000000F111F000F111FF801E059FB4E25910C
-:10E56000359145915491C95CDD4FC701B6010F94B7
-:10E57000083E6A837B838C839D83F801EC59FB4EB4
-:10E580002591359145915491C701B6010F94083EEC
-:10E590006E877F87888B998BDF91CF911F910F9129
-:10E5A000FF90EF90DF90CF90089550E0DA01AA0F2E
-:10E5B000BB1FA40FB51FAE0FBF1FAA0FBB1FAA0F13
-:10E5C000BB1FA259B94F862F90E0BC01660F771F81
-:10E5D000680F791FE60FF71FEE0FFF1FEE0FFF1FEB
-:10E5E000E259F94F20813181428153816D917D91B2
-:10E5F0008D919C910F94073E6B017C01C95CDD4FAE
-:10E60000AC019B016A817B818C819D810F94083EC6
-:10E610006A837B838C839D83A70196016E857F85AA
-:10E6200088899989B3CFCF93DF93EC018D810E94C4
-:10E63000CFDD60E08B81DF91CF910D945D18AF92BB
-:10E64000BF92DF92EF92FF920F931F93CF93DF93CE
-:10E6500000D000D0CDB7DEB77C01D62E122F032F0D
-:10E66000B42EA52E0E9413730F942A1D1E821D82A4
-:10E670008D2D80648983AA82BB820C831D838E01C9
-:10E680000F5F1F4FCE010696D801E0E02D91F0E01C
-:10E69000EE0FFF1FE227E656FC4DE491A817B907DD
-:10E6A000A9F7EE0FE160EE83580186E0A80EB11CD9
-:10E6B000F80181918F010E94C3DD0A151B05C1F786
-:10E6C000FCE0DF1202C00E94C8DD10E00E94C8DD3D
-:10E6D000F701868387FF04C01F3F11F01F5FF6CF4D
-:10E6E00026960FB6F894DEBF0FBECDBFDF91CF9157
-:10E6F0001F910F91FF90EF90DF90BF90AF90089522
-:10E7000061E0FC0183810F945D188FEF0C94C3DDF1
-:10E710000F931F93CF938C010E9413730F942A1DA4
-:10E72000C82F882371F08DEF0E94C3DD0F942A1D3E
-:10E73000C82FC8010E9480738C2FCF911F910F9119
-:10E74000089582E1F8018483F4CF8F929F92AF9273
-:10E75000BF92CF92DF92EF92FF920F931F93CF93CE
-:10E76000DF93EC016A017B01590120E030E0A9014F
-:10E7700067E30E941F73A501980167E1CE010E9423
-:10E780001F73811127C08F81833039F089E0CC0C51
-:10E79000DD1CEE1CFF1C8A95D1F7A701960169E1EB
-:10E7A000CE010E941F7311E0882319F010E087E06A
-:10E7B0008C83CE010E948073812FDF91CF911F91B6
-:10E7C0000F91FF90EF90DF90CF90BF90AF909F9010
-:10E7D0008F90089589E08C8310E0EBCFEF92FF9249
-:10E7E0000F931F93CF93DF93EC01E62E8A0160E035
-:10E7F00072E0CA010E94B06FF82E892FEEBCF801BA
-:10E8000098013E5F0DB407FEFDCF90819EBD0DB413
-:10E8100007FEFDCF91819EBD3296E217F30791F777
-:10E820000DB407FEFDCF0E94C3DD8F2D0E94C3DD16
-:10E830000E94C8DD8E838F71853069F083E18C83FF
-:10E84000CE010E94807380E0DF91CF911F910F91E4
-:10E85000FF90EF90089581E0F7CF0F931F93CF9330
-:10E86000DF93EC018B010E9413730F942A1D811119
-:10E870000CC085E18C8310E0CE010E948073812F53
-:10E88000DF91CF911F910F910895A8016CEFCE01F8
-:10E890000E94EE73182F882361F3EECF0F931F931E
-:10E8A000CF93DF93EC0189018F81833039F089E0C8
-:10E8B000440F551F661F771F8A95D1F79A01AB0148
-:10E8C00068E1CE010E941F7381112AC0A8016EEF7A
-:10E8D000CE010E94EE73182F8823B1F00F942A1DE9
-:10E8E000182F8823D1F020E030E0A9016DE0CE019F
-:10E8F0000E941F73882321F086E18C8310E004C0FE
-:10E900000E94C8DD8111F8CFCE010E948073812F53
-:10E91000DF91CF911F910F91089587E18C83F4CF00
-:10E9200086E0EBCF1F93CF93DF93EC010E9413732C
-:10E9300020E030E0A9016CE0CE010E941F7311E0DD
-:10E94000882319F010E083E08C83CE010E9480734D
-:10E95000812FDF91CF911F9108951F93CF93DF9364
-:10E96000EC018F81833039F089E0440F551F661F19
-:10E97000771F8A95D1F79A01AB0162E1CE010E941F
-:10E980001F7311E0882319F010E085E08C83CE011D
-:10E990000E948073812FDF91CF911F9108958F92F4
-:10E9A0009F92AF92BF92CF92DF92FF920F931F93ED
-:10E9B000CF93DF93EC018B016A010F941E1D4B0175
-:10E9C0005C012CE2820E21E0921EA11CB11C0E946F
-:10E9D000C8DD8E838F3F61F40F941E1D681979097D
-:10E9E0008A099B0997FDF3CF81E18C8310E028C051
-:10E9F0008E3F09F040C0C60101972FEF2EBDF801F0
-:10EA00004FEF0DB407FEFDCF2EB521934EBD9F01F4
-:10EA1000201B310B28173907A0F30DB407FEFDCFDB
-:10EA20002EB5800F911FFC0120830E94C8DDF82EB7
-:10EA30000E94C8DDB82E80915502811111C011E0ED
-:10EA4000CE010E948073812FDF91CF911F910F9192
-:10EA5000FF90DF90CF90BF90AF909F908F900895E0
-:10EA6000B601C8010E94B06F3F2D2B2D821793076E
-:10EA700031F38BE1BACF8FE0B8CF0F931F93CF93D1
-:10EA8000DF93EC018B010E94137340E052E0B80168
-:10EA9000CE01DF91CF911F910F910C94CF74AF9263
-:10EAA000BF92CF92DF92EF92FF920F931F93CF937B
-:10EAB000DF93EC016A017B0159018F81833039F0CA
-:10EAC00089E0CC0CDD1CEE1CFF1C8A95D1F713E00D
-:10EAD00004E0A701960161E1CE010E941F73882323
-:10EAE00079F00C83CE010E9480731150E1F020E098
-:10EAF00030E0A9016CE0CE010E941F731C82E9CFB7
-:10EB000040E052E0B501CE010E94CF74882351F35A
-:10EB1000DF91CF911F910F91FF90EF90DF90CF90F9
-:10EB2000BF90AF90089580E0F3CF8F929F92AF9205
-:10EB3000BF92CF92DF92EF92FF920F931F93CF93EA
-:10EB4000DF93EC01162F1F821C824B830F941E1D36
-:10EB50006B017C0120EDC20E27E0D21EE11CF11CEE
-:10EB6000A89561E08B810F945D1861E08B810F9413
-:10EB70002C1B209A289A219A2398229A81E00E949D
-:10EB8000CFDD85E08D830E94CFDD0AE08FEF0E940C
-:10EB9000C3DD0150D9F7A89520E030E0A90160E07D
-:10EBA000CE010E941F738E83813081F00F941E1D51
-:10EBB0006C197D098E099F0997FDEECF81E08C834A
-:10EBC000CE010E9480731A8280E078C021E030E09C
-:10EBD00040E050E06BE3CE010E941F7391E0813072
-:10EBE00009F090E090935502A8952AEA31E040E0C0
-:10EBF00050E068E0CE010E941F73853041F581E04E
-:10EC00008F83A8958F81812C912C5401823029F417
-:10EC1000812C912CA12C80E4B82E20E030E0A901B9
-:10EC200067E3CE010E941F73A501940169E2CE0142
-:10EC30000E941F738E838823F1F00F941E1D6C19A0
-:10EC40007D098E099F0997FDE8CF8AE0B8CF04E0DF
-:10EC50000E94C8DD8E830150D9F78A3A11F482E010
-:10EC6000CFCF0F941E1D6C197D098E099F0997FD4A
-:10EC7000BCCF82E0A4CF8F818230C1F420E030E0AD
-:10EC8000A9016AE3CE010E941F73882311F088E076
-:10EC900096CF0E94C8DD807C803C11F483E08F8396
-:10ECA0000E94C8DD0E94C8DD0E94C8DDCE010E941E
-:10ECB000807381E08A83173070F41D83DF91CF91D8
-:10ECC0001F910F91FF90EF90DF90CF90BF90AF908A
-:10ECD0009F908F90089588E18C8376CF0F931F9338
-:10ECE000CF93DF93EC018B0120E030E0A90169E0D4
-:10ECF0000E941F7381110AC040E150E0B801CE01AB
-:10ED0000DF91CF911F910F910C94CF7480E18C8390
-:10ED1000CE010E94807380E0DF91CF911F910F910F
-:10ED200008950F930091020621E0022725E537E0C0
-:10ED30004CE050E0BC0183E597E00E9461CE0F916A
-:10ED400008950F930091020621E0022725E537E0A0
-:10ED500041E050E0BC0183E597E00E9461CE0F9155
-:10ED600008950F930091020621E0022725E537E080
-:10ED700041E050E0BC0183E597E00E9461CE0F9135
-:10ED800008950F930091020621E0022725E537E060
-:10ED900048E050E0BC0183E597E00E9461CE0F910E
-:10EDA00008950F930091020621E0022725E537E040
-:10EDB0004CE050E0BC0183E597E00E9461CE0F91EA
-:10EDC00008950F930091020621E0022725E537E020
-:10EDD00044E050E0BC0183E597E00E9461CE0F91D2
-:10EDE00008950F9301E025E537E041E050E0BC01D4
-:10EDF00083E597E00E9461CE0F9108950F93AB01D8
-:10EE00000091020621E0022725E537E0BC0183E5F9
-:10EE100097E00E9461CE0F91089525E537E04CE020
-:10EE200050E0BC0183E597E00C9494DA25E537E0E7
-:10EE300041E050E0BC0183E597E00C9494DA25E5CD
-:10EE400037E041E050E0BC0183E597E00C9494DAB0
-:10EE500025E537E04CE050E0BC0183E597E00C94F9
-:10EE600094DA25E537E044E050E0BC0183E597E023
-:10EE70000C9494DACF93C82FCB010E94ACCE85E3DB
-:10EE800094E10E94ACCE86E294E1CC2311F08BE2B7
-:10EE900094E1CF910C9409DB2F923F924F925F92B5
-:10EEA0006F927F928F929F92AF92BF92CF92DF929A
-:10EEB000EF92FF920F931F93CF93DF93CDB7DEB7FF
-:10EEC0006C970FB6F894DEBF0FBECDBF8C015B010F
-:10EED0005A834983FC01E95BFF4F208031804280E7
-:10EEE00053802D823E824F825886C201B1010F9419
-:10EEF000B6396B017C01D5012D913D914D915C910D
-:10EF00000F94173A0F94E63E2B013C01E981FA81F8
-:10EF10002081318142815381C701B6010F94173A94
-:10EF20000F94E63E4B015C01C301B2010F947B3F9D
-:10EF30006D877E878F87988B68377105810591056E
-:10EF400048F438E7232E312C412C512C2D863E8657
-:10EF50004F86588AC501B4010F947B3F698B7A8B29
-:10EF60008B8B9C8B683771058105910548F428E7E8
-:10EF7000222E312C412C512C298A3A8A4B8A5C8AC8
-:10EF8000F801ED5AFF4F80809180A280B380D801B4
-:10EF900095962D903D904D905C90989729863A8655
-:10EFA0004B865C86C501B4010F94B8396D8B7E8B9E
-:10EFB0008F8B988F89288A288B2809F49CC1A701F8
-:10EFC0009601C701B6010F94173A69837A838B8340
-:10EFD0009C836D857E858F8598890F94B6399B01BA
-:10EFE000AC010F94173A698F7A8F8B8F9C8F2D8984
-:10EFF0003E894F89588D60E070E080E09FE30F9478
-:10F00000023F4B015C01298D3A8D4B8D5C8D6981EE
-:10F010007A818B819C810F94073EA50194010F9406
-:10F02000173A6B017C010F94E63E0F947B3F1B0166
-:10F030002C0169897A898B899C890F94B6399B0147
-:10F04000AC010F94173A9B01AC0169817A818B81E5
-:10F050009C810F94073EA50194010F94173A4B0130
-:10F060005C010F94AA3F0F947B3F69837A838B8363
-:10F070009C83DC01CB01820D931DA41DB51D298548
-:10F080003A854B855C85281B390B4A0B5B0BDA01F3
-:10F09000C901B7FF61C069857A858B859C850F940E
-:10F0A000B639A70196010F94083EA50194010F946B
-:10F0B000073E20E030E040E05FE30F94173A0F9402
-:10F0C000E63E6B017C0120E030E0A9010F9468402E
-:10F0D00018161CF0C12CD12C7601C701B6010F9473
-:10F0E0007B3F1B012C0149855A856B857C85421528
-:10F0F00053056405750510F41A012B0169857A859D
-:10F100008B859C85621973098409950969837A83C3
-:10F110008B839C83C201B1010F94B6396B017C01D2
-:10F120002D893E894F89588DCA01B9010F94083E37
-:10F130009B01AC01C701B6010F94173A298D3A8D96
-:10F140004B8D5C8D0F94083E0F94B6400F947B3F1F
-:10F150006D837E838F8398876D817E818F81988573
-:10F160002D853E854F855889621B730B840B950B4B
-:10F170000F94B6392D893E894F89588D0F94023FDF
-:10F1800020E034E244EF59E40F94173A0F947B3FA8
-:10F190006B017C016D817E818F81988529893A89F7
-:10F1A0004B895C89621B730B840B950B0F94B639EA
-:10F1B0002D893E894F89588D0F94023F20E034E21B
-:10F1C00044EF59E40F94173A0F947B3F4B015C01D5
-:10F1D0003FE6C316D104E104F10408F094C0F6013F
-:10F1E000EE0FFF1FEE0FFF1FE150FB4E8591959133
-:10F1F000A591B4913C01AD8BB9874FE6841691047B
-:10F20000A104B10408F087C0F401EE0FFF1FEE0F58
-:10F21000FF1FE150FB4E4591559165917491342F3C
-:10F22000252FCB01D8019A962D923D924D925C925A
-:10F230009D9795964D915D916D917C9198972980C0
-:10F240003A804B805C8042195309640975099E9687
-:10F250004D935D936D937C93D197F801E55BFF4FE0
-:10F260002D843E844F84588820823182428253828A
-:10F27000D696CD92DD92ED92FC92D997F80182AEAE
-:10F2800093AEA4AEB5AEFE96608271822D882282C6
-:10F2900039843382349630832183828393832D8013
-:10F2A0003E804F805884D2962D923D924D925C9232
-:10F2B000D5973D9629883A884B885C882082318290
-:10F2C000428253826C960FB6F894DEBF0FBECDBF5C
-:10F2D000DF91CF911F910F91FF90EF90DF90CF9032
-:10F2E000BF90AF909F908F907F906F905F904F9066
-:10F2F0003F902F90089519821A821B821C82212C24
-:10F30000312C210129CFC701B6010E94E9703B01D0
-:10F310008D8B998772CFC501B4010E94E970362F99
-:10F32000272F80CF8091A21784FF04C08460877F3D
-:10F330008093A2170895CF92DF92EF92FF920F93DE
-:10F340001F93CF93DF93CDB7DEB7EDB6FEB6DC01EA
-:10F350000D900020E9F79D01281B390B285F3F4FD6
-:10F36000EDB7FEB7E21BF30B0FB6F894FEBF0FBE6E
-:10F37000EDBF0DB71EB70F5F1F4F9F938F9380E1B7
-:10F3800097E29F938F931F930F930F9448396801CF
-:10F39000F4E0CF0ED11C0F900F900F900F900F90B4
-:10F3A0000F90D6018D916D01882349F0082E000C35
-:10F3B000990B0F94B141F60131978083F2CF6BE046
-:10F3C00077E2C8010F94E838C8010E94E12B0FB61C
-:10F3D000F894FEBE0FBEEDBEDF91CF911F910F914D
-:10F3E000FF90EF90DF90CF900895FC01938591FFFF
-:10F3F00002C080E00895987121E0903109F020E08A
-:10F400008091A21720FB85F98093A217903141F0DB
-:10F410008085873471F781E091859E3751F3089597
-:10F4200081E0FDCFFC0120E03EE2DB014D91BD011A
-:10F43000403249F0283011F430833196DB011197C6
-:10F440004C91408331962F5F2B3079F710820895CD
-:10F45000CF9380914D14C1E08823C9F080914E1460
-:10F4600090914F1440914514509146146091471467
-:10F4700070914814DC01ED91FC910288F389E02D34
-:10F4800025E432E11995C82F811104C0C0E08C2F0A
-:10F49000CF9108954091491450914A1460914B14B2
-:10F4A00070914C144115510561057105B9F08091B9
-:10F4B0004E1490914F14DC01ED91FC910288F38978
-:10F4C000E02D25E432E11995882301F310924914C7
-:10F4D00010924A1410924B1410924C1410924D1426
-:10F4E000D6CFCF92DF92EF92FF92CF936B017C0148
-:10F4F000C42F8091451490914614A0914714B09167
-:10F5000048148C159D05AE05BF0529F10E94287A87
-:10F51000811108C0C0E08C2FCF91FF90EF90DF9059
-:10F52000CF90089580914E1490914F14DC01ED918D
-:10F53000FC910088F189E02D25E432E1B701A601B4
-:10F540001995882339F3C0924514D0924614E0925D
-:10F550004714F0924814CC2321F081E080934D149D
-:10F56000DACFC1E0D8CF4F925F926F927F928F92A5
-:10F570009F92AF92BF92CF92DF92EF92FF920F9342
-:10F580001F93CF93DF93EC01423051056105710564
-:10F5900090F480E0DF91CF911F910F91FF90EF9059
-:10F5A000DF90CF90BF90AF909F908F907F906F90A3
-:10F5B0005F904F90089589859A85AB85BC850196AB
-:10F5C000A11DB11D84179507A607B70710F38F89F2
-:10F5D0008031C9F5852E962EA72EBB248B899C8958
-:10F5E000AD89BE89880E991EAA1EBB1E280139014D
-:10F5F0006A017B0141E0C501B4010E94717A882350
-:10F6000041F29F89903181F5DD24EE24FF24F6013B
-:10F61000EE0FFF1FEB5BFD4E118300839A89923042
-:10F6200008F4B8CF4D815E816F817885840E951E78
-:10F63000A61EB71E8092491490924A14A0924B14B1
-:10F64000B0924C14A7CF803209F0A3CF8B899C894C
-:10F65000AD89BE894A015B01E7E0B694A79497940F
-:10F660008794EA95D1F7BECFE894C7F8DD24EE245D
-:10F67000FF24F601EE0FFF1FEE0FFF1FEB5BFD4EA9
-:10F680004082518262827382C9CFCF92DF92EF9221
-:10F69000FF920F931F93CF93DF93FC018185928597
-:10F6A000A385B4850196A11DB11D84179507A607F2
-:10F6B000B70750F480E0DF91CF911F910F91FF9039
-:10F6C000EF90DF90CF90089587898031A9F5BB270F
-:10F6D000A72F962F852FC388D488E588F6888C0DB0
-:10F6E0009D1DAE1DBF1DE9016A017B018F01409187
-:10F6F0004514509146146091471470914814841732
-:10F700009507A607B70749F5F8018789803169F59C
-:10F71000B701A601552766277727440F551F4B5B76
-:10F720005D4EFA0180819181B0E0A0E088839983E9
-:10F73000AA83BB8381E0BFCF803209F0BBCFC388EF
-:10F74000D488E588F688DB01CA01C7E0B695A7959D
-:10F7500097958795CA95D1F7C2CF40E0BC01CD01FE
-:10F760000E94717A8111D0CFA5CFB701A6014F7742
-:10F77000552766277727440F551F440F551F4B5BAE
-:10F780005D4EFA0180819181A281B381BF70CECF9D
-:10F790004F925F926F927F92AF92BF92CF92DF9221
-:10F7A000EF92FF920F931F93CF93DF9300D01F929E
-:10F7B000CDB7DEB78C0149835A836B837C835901B3
-:10F7C000C12CD12C7601412C82E0582E612C712C59
-:10F7D00049815A816B817C819E012F5F3F4FC80117
-:10F7E0000E94457B882319F1F8018585A3019201C8
-:10F7F00004C0220F331F441F551F8A95D2F7DA0128
-:10F80000C901C80ED91EEA1EFB1E49815A816B81AF
-:10F810007C8187898031F1F481E0483F5F4F610549
-:10F820007105B0F2F501C082D182E282F3820F90BD
-:10F830000F900F900F90DF91CF911F910F91FF903C
-:10F84000EF90DF90CF90BF90AF907F906F905F90E0
-:10F850004F90089581E0483F5F4F6F4F7F4008F41D
-:10F86000B7CFE0CF0F931F93CF93DF93FC0123819A
-:10F87000222331F080E0DF91CF911F910F91089505
-:10F880008B01EC01FB018789803139F582E08B83A4
-:10F890001D8A1E8A1F8A188E808D918DB0E0A0E08F
-:10F8A00025E0880F991FAA1FBB1F2A95D1F7898BC6
-:10F8B0009A8BAB8BBC8B1A8F098F81E0898318865A
-:10F8C00019861A861B861C821D821E821F82188A38
-:10F8D0001C861D861E861F86CECF803259F683E099
-:10F8E0008B83428D538D648D758D4D8B5E8B6F8BAD
-:10F8F000788F9E012F5E3F4FC8010E94C87B811107
-:10F90000DACFB8CF8F929F92AF92BF92CF92DF9211
-:10F91000EF92FF920F931F93CF93DF93EC018B81B4
-:10F9200081110EC080E0DF91CF911F910F91FF9068
-:10F93000EF90DF90CF90BF90AF909F908F90089501
-:10F9400009891A892B893C89041715072607370767
-:10F9500048F34A015B01823031F488869986AA8691
-:10F96000BB8681E0E0CF81149104A104B10449F485
-:10F97000188619861A861B861C821D821E821F828B
-:10F98000F0CF088519852A853B85E98DFA8D858517
-:10F9900090E00996B901A801415051096109710926
-:10F9A000082E04C076956795579547950A94D2F727
-:10F9B00075016401E1E0CE1AD108E108F10804C044
-:10F9C000F694E794D794C7948A95D2F7C416D506CF
-:10F9D000E606F70620F0012B022B032B11F58D898B
-:10F9E0009E89AF89B88D8C839D83AE83BF838E0142
-:10F9F0000C5F1F4FC114D104E104F10409F4ADCF31
-:10FA00004C815D816E817F819801898D9A8D0E94E4
-:10FA1000457B91E0C91AD108E108F1088111EACFCC
-:10FA200081CFC41AD50AE60AF70AE1CF2F923F9296
-:10FA30004F925F926F927F928F929F92AF92BF92FE
-:10FA4000CF92DF92EF92FF920F931F93CF93DF93AA
-:10FA5000EC014B017A018B81811115C08FEF9FEF73
-:10FA6000DF91CF911F910F91FF90EF90DF90CF909A
-:10FA7000BF90AF909F908F907F906F905F904F90CE
-:10FA80003F902F900895898180FFE8CF89899A89D6
-:10FA9000AB89BC89488559856A857B85841B950B14
-:10FAA000A60BB70BA70170E060E084179507A607C7
-:10FAB000B70708F47C0167011E0124E0220E311C07
-:10FAC000C114D10409F4A9C0488559856A857B858C
-:10FAD0005A0181E0B822898D9A8D2A013B0129E0E3
-:10FAE00076946794579447942A95D1F72B81FC011B
-:10FAF000223081F5628D738D848D958D640D751D19
-:10FB0000861D971D00E012E00A191B09C016D106D8
-:10FB100008F486010115E2E01E0771F440904514D7
-:10FB20005090461460904714709048146415750501
-:10FB30008605970509F04EC040E00E94717A88233F
-:10FB400009F48CCFB5016B5B7D4EA801C4010F9405
-:10FB5000C64152C0148111501421A114B10471F492
-:10FB600011110CC0452B462B472B51F58D899E89D1
-:10FB7000AF89B88D8C839D83AE83BF83E98DFA8D69
-:10FB80004C805D806E807F8022E0421A51086108BF
-:10FB90007108858504C0440C551C661C771C8A9529
-:10FBA000D2F786859785A089B189480E591E6A1EAD
-:10FBB0007B1EC301B201610F711D811D911DA2CF7A
-:10FBC0004C815D816E817F8191010E94457B811115
-:10FBD000D5CF44CFA0914E14B0914F14ED91FC912C
-:10FBE00011970088F189E02D9401AB01BC01CD0192
-:10FBF0001995882309F432CF800E911E8885998546
-:10FC0000AA85BB85800F911FA11DB11D888799878B
-:10FC1000AA87BB87C01AD10A53CFC70121CFCF9380
-:10FC2000DF93EC01462F41706C857D858E859F8525
-:10FC30000E94717A882351F0888920E2829FC00156
-:10FC400011248B5B9D4EDF91CF91089590E080E071
-:10FC5000FACFCF93DF93EC018B81882349F189811F
-:10FC600087FF22C061E0CE010E940F7EFC01892B3C
-:10FC7000F9F08081853EE1F08B81823040F4898902
-:10FC80009A89AB89BC89848F958FA68FB78F8D8910
-:10FC90009E89938F828F8D899E89AF89B88DB58B10
-:10FCA000A48B89818F778983DF91CF910C94287AF7
-:10FCB00081E0888380E0DF91CF910895CF93DF9337
-:10FCC000EC010E94297E1B82DF91CF910895109252
-:10FCD0009A068091A2178F778093A2170E9473CD06
-:10FCE000882321F080E594E10C945E7E0895CF9303
-:10FCF000C091A217C2FF10C0C7FD0EC00E9473CDF5
-:10FD000080FBC7F9C093A2178091A2178F7E8064F1
-:10FD10008093A217CF9108950E94677EF5CFCF936D
-:10FD2000DF938091A2178F7E8093A2178091A714F2
-:10FD3000882321F084EA94E10E945E7E8091A317DB
-:10FD40009091A417DC01ED91FC910190F081E02DE0
-:10FD500045E360E01995811112C00E940FD88FEF22
-:10FD600096E20E94ACCE8091A21784FF34C00F941B
-:10FD7000022783E080937502DF91CF910895C091AF
-:10FD8000A317D091A41761E0CE010F94DA0A811174
-:10FD90000BC060E0CE010F94DA0A811105C00E9409
-:10FDA0000BD88BEE96E2DDCF6BE674E184EA94E14A
-:10FDB0000E94327C811105C00E940BD88AED96E228
-:10FDC000D0CF8091A21780618093A2170E940FD894
-:10FDD0008EEC96E2C6CF80913509882351F261E01E
-:10FDE0008EEB96E20E941D3B0E945E2DC2CFCF9308
-:10FDF000DF93EB01FC012381211104C080E0DF913E
-:10FE0000CF9108952250223028F48FE288831982FE
-:10FE100081E0F5CF60E00E940F7E009779F3DC016E
-:10FE200060E080E09EE22D91203299F0883031F43C
-:10FE30009E01260F311DF90190836F5F9E01260FF1
-:10FE4000311DAD0141505109FA014081F901408352
-:10FE50006F5F8F5F8B3039F7FE01E60FF11D108267
-:10FE6000D7CFCF93DF93EC01CB01E881F98160819B
-:10FE700071810E94F77E28813981D901ED91FC9131
-:10FE8000AA81BB818C919081992359F08936C8F45D
-:10FE9000CF010196F901918380838C918F5F8C93C0
-:10FEA000EACF893670F48FE28083E881F98180811E
-:10FEB0009181019691838083EA81FB8180818F5FAC
-:10FEC0008083DF91CF9108953F924F925F926F921E
-:10FED0007F928F929F92AF92BF92CF92DF92EF92DA
-:10FEE000FF920F931F93CF93DF93CDB7DEB72C977D
-:10FEF0000FB6F894DEBF0FBECDBF5C01DC01599692
-:10FF00008D909C90F40181859285A385B4859C0198
-:10FF1000AD012F5F3F4F4F4F5F4F29873A874B8788
-:10FF20005C87D50114964D905D906D907C901797ED
-:10FF3000411451046104710409F459C0BFEF4B1A14
-:10FF40005B0A6B0A7B0A312C730162011D821E82DF
-:10FF50001F821886F40181859285A385B4852D8141
-:10FF60003E814F815885281739074A075B0708F0FB
-:10FF700056C089859A85AB85BC858C159D05AE05D7
-:10FF8000BF0550F482E0C82ED12CE12CF12C92E078
-:10FF9000492E512C612C712C9E012F5F3F4FB701D0
-:10FFA000A601C4010E94457B8823C9F189819A81F9
-:10FFB000AB81BC81892B8A2B8B2B01F12601370168
-:10FFC0009FEF491A590A690A790A2D813E814F81AA
-:10FFD00058852F5F3F4F4F4F5F4F2D833E834F8399
-:10FFE00058873FEFC31AD30AE30AF30AB3CF40801E
-:10FFF00051806280738033243394A6CFC414D50417
-:020000021000EC
-:10000000E604F70411F70FEF1FEF2FEF3FE0B70102
-:10001000A601C4010E94B37A782E81111AC0712CF6
-:10002000872D2C960FB6F894DEBF0FBECDBFDF91A3
-:10003000CF911F910F91FF90EF90DF90CF90BF90E5
-:10004000AF909F908F907F906F905F904F903F9078
-:100050000895F501448155816681778141155105E7
-:100060006105710539F097018601C4010E94B37AD8
-:100070008823A9F2D5011496CD92DD92ED92FC92DF
-:100080001797332051F0D701C6010196A11DB11D6C
-:10009000F40180839183A283B383F50185899689D6
-:1000A000A789B08D892B8A2B8B2B09F0B9CFC58AF4
-:1000B000D68AE78AF08E818180688183B1CF40E063
-:1000C00050E0BA010C94827CFC01238121110C9434
-:1000D0005E7E08952F923F924F925F926F927F9231
-:1000E0008F929F92AF92BF92CF92DF92EF92FF9248
-:1000F0000F931F93CF93DF93CDB7DEB7C454D109CD
-:100100000FB6F894DEBF0FBECDBF7C014B015A0184
-:10011000222E19821C821C8E1F8E6115710511F40E
-:1001200010E0B3C1DC0113968C918111F9CFFA0173
-:1001300080818B018F32D1F4DB0113968C91139760
-:100140008250823060F059966D917C91CE014C9630
-:100150000E94327C8E01045E1F4F882309F3C50183
-:100160005C010196F50120812F32D1F39E012F5FB2
-:100170003F4F6901290130E2332E2496CFAE2497F8
-:100180002596DFAE25973E013CE1630E711C229659
-:100190003FAE229721963FAE21973FAE3EAE3DAE99
-:1001A0003CAE3BAE3AAE39AE38AE3FAA950190E0D8
-:1001B00047E0D9018D91882361F18F3251F18E3260
-:1001C00039F44A3009F4ACCF98E04AE09D01F1CF10
-:1001D000EAE9F6E22491222321F031968213FACF44
-:1001E0009FCF491708F49CCF813208F499CF8F37FD
-:1001F00009F496CF3FE9380F3A3108F420EEE7E3EF
-:10020000F0E0EC0FFD1FE90FF11D820F80839F5F6F
-:10021000DDCF8FA9803209F483CF5901D9018C91A8
-:100220002F5F3F4F8F32C9F38823A9F008151905B6
-:1002300019F0C8010E945E7E24969FAD24972596F2
-:100240008FAD25974C145D0411F4962D872D8601F2
-:10025000C92ED82E9CCFF801818D928DD7015A9648
-:100260009C938E935997C8010E945F80C12CF8011E
-:1002700080859185A285B385418952896389748976
-:1002800084179507A607B70708F053C025E0B69571
-:10029000A795979587952A95D1F7F82FFF70DF2EB0
-:1002A000D80113968C91823008F43ACF41E050E0A7
-:1002B000BE016E5B7F4FC8010E94167D019709F059
-:1002C0002FCFF80180859185A285B3854F96A11D1A
-:1002D000B11D80879187A287B387F0E2DF9EB001CE
-:1002E00011246B5B7D4E6115710509F419CFDB019B
-:1002F0008C91882341F0853E09F04DC0CC2029F037
-:10030000CC24C394B4CFC1100EC0809145149091F9
-:100310004614A0914714B0914814F701848795873B
-:10032000A687B787D08ADB018C918111E9CFCC24D5
-:10033000C394822D8274823409F0F2CECC2009F469
-:10034000C7C0F701D08861E0C7010E940F7E009707
-:1003500009F4E6CE20E2DC011D922A95E9F72BE0B4
-:10036000FE01F796DC0101900D922A95E1F721E25A
-:1003700038E2FC01318B208B40E058E057874687FC
-:10038000338B228B318F208F578B468B0E94287A9C
-:1003900081110AC0C5CE4BE050E0CE01C7960F9444
-:1003A000B941892B09F063CF2D2D30E0F901B5E07B
-:1003B000EE0FFF1FBA95E1F7DF01AB5BBD4E1B9659
-:1003C0008C91817121F0822D827109F020C1D701B9
-:1003D00059968D919C915A9740914514509146148D
-:1003E00060914714709148141C964D935D936D93E2
-:1003F0007C931F975096DC925097EB5BFD4E848860
-:100400009588B12CA12C54019924882455968D925D
-:100410009D92AD92BC925897428D538D70E060E0F2
-:10042000482959296A297B2955964D935D936D93E7
-:100430007C935897A5E0220F331FAA95E1F7D901C5
-:10044000AB5BBD4E1B962C91287109F0D2C0848DF8
-:10045000958DA68DB78DF701818B928BA38BB48B75
-:1004600081E08383822D8F70F7018183148215824E
-:1004700016821782108611861286138611E024FEDA
-:1004800004C0C7010F94290C182FCE014C960E946E
-:100490006480CE0101960E946480812FCC5BDF4F87
-:1004A0000FB6F894DEBF0FBECDBFDF91CF911F9185
-:1004B0000F91FF90EF90DF90CF90BF90AF909F9003
-:1004C0008F907F906F905F904F903F902F90089506
-:1004D000D80113968C911397823009F421CE51964E
-:1004E0008D919D910D90BC91A02D803E9F4FAF416D
-:1004F000B10508F015CEC8010E94647F882309F475
-:100500000FCE0E94287A882309F40ACED801599682
-:10051000ED91FC915A9714968D909D90AD90BC9062
-:100520001797B2E08B1A9108A108B108858504C01D
-:10053000880C991CAA1CBB1C8A95D2F786859785C6
-:10054000A089B189880E991EAA1EBB1E81E08093E6
-:100550004D148092451490924614A0924714B09284
-:100560004814E5E4F2E180E092E0DF019C011D9295
-:1005700021503040E1F7DD24D394D8015996ED9114
-:10058000FC918481D816C0F480914E1490914F1440
-:10059000DC01ED91FC910288F389E02D25E432E144
-:1005A000B501A4014D0D511D611D711D19958823C3
-:1005B00009F4B6CDD394E1CF258580E092E0A0E0A8
-:1005C000B0E004C0880F991FAA1FBB1F2A95D2F75D
-:1005D000F8014189528963897489840F951FA61F88
-:1005E000B71F818B928BA38BB48B85E492E1D12CC6
-:1005F000B1CE203161F497012F5E3F4F0E94C87B3E
-:10060000882329F084E0D70113968C932BCFD70150
-:1006100013961C9285CD0F931F93CF93DF93CDB785
-:10062000DEB7EB970FB6F894DEBF0FBECDBF8C01DF
-:1006300089E894E10E945F808BE1E9E8F4E1DE0162
-:10064000919601900D928A95E1F7BE016F5F7F4F01
-:10065000CE0181960F946C0E1816A4F4CE0101966B
-:100660000E94F579882389F3BE016F5F7F4F89E788
-:100670009FE00E94127A69E77FE0C8010F94CF41A2
-:10068000892B19F7CE0181960E946480EB960FB6F4
-:10069000F894DEBF0FBECDBFDF91CF911F910F91B8
-:1006A00008958F929F92AF92BF92CF92DF92EF9276
-:1006B000FF920F931F93CF93DF93DC0170E0FB0158
-:1006C000EE0FFF1FEF5BFC4F20813181615C7C4F9F
-:1006D000FB019081D92E80E0E82EF12CB7016D0D41
-:1006E000711D75956795611119C0F9013296659173
-:1006F0007491072E000C880B990B0F94B839DF9179
-:10070000CF911F910F91FF90EF90DF90CF90BF900E
-:10071000AF909F908F900895D62EE0CF681711F07C
-:10072000D6120CC0492F4150550BFA01EE0FFF1F96
-:10073000EE0FFF1F3296E20FF31FD9CFAB014150EE
-:100740005109440F551F440F551FF901E40FF51FC0
-:1007500005911491FA013496E20FF31FC591D491DB
-:10076000A017B107C8F2862FCA17DB0708F4B4CF69
-:10077000FA013296E20FF31FE590F490FA013696F3
-:10078000E20FF31FC590D490A01BB10BBD0190E008
-:1007900080E00F94B6394B015C01B6016E197F09F8
-:1007A000072E000C880B990B0F94B8399B01AC01F4
-:1007B000C501B4010F94173A4B015C01C01BD10B6A
-:1007C000BE0190E080E00F94B6399B01AC01C501F9
-:1007D000B4010F94023F4B015C01B701FF0C880B81
-:1007E000990B0F94B8399B01AC01C501B4010F946A
-:1007F000083E85CF8F929F92AF92BF92CF92DF92A9
-:10080000EF92FF92CF936B017C01C42F20E030E088
-:10081000A9010F94B13987FF07C08DE20E949FCED6
-:10082000F7FAF094F7F8F0942BE037ED43EA5BE346
-:10083000C23021F02FE632E143E05AE3C701B601AE
-:100840000F94083E6B017C010F947B3F4B015C01D0
-:100850000F94B6399B01AC01C701B6010F94073E56
-:100860006B017C01C501B4010F94C00D8EE20E94A2
-:100870009FCEC150E8F020E030E040E251E4C701F3
-:10088000B6010F94173A6B017C010F947B3F4B012B
-:100890005C010F94C00DC501B4010F94B6399B01E2
-:1008A000AC01C701B6010F94073E6B017C01E1CF9B
-:1008B000CF91FF90EF90DF90CF90BF90AF909F903F
-:1008C0008F900895EF92FF920F931F93CF93DF9332
-:1008D000C82F7B018A01D2E48F3F09F0D4E580E282
-:1008E0000E949FCE8D2F0E949FCEC7FD04C080E343
-:1008F0008C0F0E949FCE8AE30E949FCEF7016081F9
-:1009000071818281938142E00E94FA8387E693E2BB
-:100910000E94ACCEF801608171818281938142E0B6
-:100920000E94FA8362E070E080E090E0DF91CF9176
-:100930001F910F91FF90EF900D94911CEF92FF92F9
-:100940000F931F93CF93DF9300D000D01F921F927D
-:10095000CDB7DEB7082F17E1189FC00111249C0105
-:10096000215C394F7901F90160857185072E000CF2
-:10097000880B990B0F94B8396D837E838F8398878A
-:10098000F70184819581A681B78189839A83AB839E
-:10099000BC83AE014B5F5F4FBE016F5F7F4F80E84E
-:1009A0000E9462846091360670913706072E000C13
-:1009B000880B990B0F94B8396D837E838F8398874A
-:1009C0008091320690913306A0913406B09135069D
-:1009D00089839A83AB83BC83AE014B5F5F4FBE01BB
-:1009E0006F5F7F4F8FEF0E94628460914706709126
-:1009F0004806072E000C880B990B0F94B8396D83AD
-:100A00007E838F8398878091430690914406A091BE
-:100A10004506B091460689839A83AB83BC83AE01B9
-:100A20004B5F5F4FBE016F5F7F4F80E00E9462842B
-:100A300060915E0670915F06072E000C880B990B83
-:100A40000F94B8396D837E838F83988780915A067F
-:100A500090915B06A0915C06B0915D0689839A83B4
-:100A6000AB83BC83AE014B5F5F4FBE016F5F7F4FB7
-:100A700081E00E946284609138060F3F31F00103EB
-:100A8000F0011124E15CF94F628570E082E793E2A6
-:100A90000E9487DA6091380670E08DE693E20E944A
-:100AA00087DA60E08AE693E20E94A2D68AE30E9497
-:100AB0009FCE6091490670E090E080E00F942A0E8E
-:100AC00061E08AE693E20E94A2D68AE30E949FCE6A
-:100AD0006091600670E090E080E00F942A0E289606
-:100AE0000FB6F894DEBF0FBECDBFDF91CF911F913F
-:100AF0000F91FF90EF9008950F930FB70F93009110
-:100B00006E000D7F00936E0078940F930BB70F93D8
-:100B10000CB70F921F922F933F934F935F936F9356
-:100B20007F938F939F93AF93BF93EF93FF93112482
-:100B30000E94CB95FF91EF91BF91AF919F918F91C3
-:100B40007F916F915F914F913F912F911F900F90E7
-:100B50000CBF0F910BBF0F910260F89400936E00D1
-:100B60000F910FBF0F911895EF92FF920F931F9364
-:100B7000CF93DF9310926D0660E090E080E00E94DA
-:100B8000DCCCCFE3D6E01A8661E090E080E00E9402
-:100B9000DCCC19A22C9802E011E0F8018081807170
-:100BA000C0E0D1E088838EE2E82E86E0F82EF701DF
-:100BB000118610860E9422C6F7011286F8018081F4
-:100BC00080728883DF91CF911F910F91FF90EF90FA
-:100BD00008958F929F92AF92BF92CF92DF92EF9241
-:100BE000FF920F931F93CF93DF93B0E4A0E06A2F9F
-:100BF00070E0AB014B0F511D55954795411119C040
-:100C0000E1EDF8E365917491072E000C880B990BC8
-:100C10000F94B839DF91CF911F910F91FF90EF9012
-:100C2000DF90CF90BF90AF909F908F900895B42F9A
-:100C3000E0CFA41711F0B41303C0EDECF9E3E2CF59
-:100C40009A0121503109220F331F220F331FF9015E
-:100C5000E153F74CE590F490F901ED52F74CC59152
-:100C6000D4918E159F0518F3A42FC817D90708F43F
-:100C7000BECFF901EF52F74C05911491F901EB52F7
-:100C8000F74CC590D4908E199F09BC0190E080E08C
-:100C90000F94B6394B015C01B601601B710B072E36
-:100CA000000C880B990B0F94B8399B01AC01C5015E
-:100CB000B4010F94173A4B015C01CE19DF09BE0154
-:100CC00090E080E00F94B6399B01AC01C501B401FE
-:100CD0000F94023F6B017C01B801110F880B990B37
-:100CE0000F94B8399B01AC01C701B6010F94083EBF
-:100CF00091CF80910B06882339F060918316709113
-:100D0000841680918516089560E070E080E0089573
-:100D10002F923F924F925F926F927F928F929F920B
-:100D2000AF92BF92CF92DF92EF92FF920F931F93F9
-:100D3000CF93DF93CDB7DEB765970FB6F894DEBFDC
-:100D40000FBECDBF8F836B8B20916D062E871092C7
-:100D50006D0637E1839FF0011124E15CF94F848136
-:100D60009581A681B7818F87988BA98BBA8B1092BA
-:100D70003A0681E080937402212C312C21011B82E0
-:100D80001C821D821E821A869CE39B87ACE1AC8785
-:100D9000B6E4BD87612C10E000E82FEB2A831982AE
-:100DA000AF01485F5F4F59874887CF0104969D8BFD
-:100DB0008C8BA885B9856D917C91072E000C880BD2
-:100DC000990B0F94B8396B017C01262D312F402FE0
-:100DD0005A810F94B1398823A9F0EC89FD892081CB
-:100DE000318142815381FB89B601C701F1117DC078
-:100DF0000F94B139881F8827881F89836C2C1D2D7B
-:100E00000E2DFA820F941E1D6B017C01DC01CB01BB
-:100E10002B813C814D815E81821B930BA40BB50B12
-:100E2000B7FD10C0D701C60188519C4FAF4FBF4FCF
-:100E30008B839C83AD83BE838F810E949E848AE0D6
-:100E40000E949FCE80E00E94EADD0F941E1D6093F9
-:100E50003B0670933C0680933D0690933E06AC891A
-:100E6000BD89AC9011969C90119712968C90129718
-:100E700013967C90B981B1116FC0662D712F802FB0
-:100E80009A810F94743F6B016A2D792D882D972DCF
-:100E90000F94743F4B016F85788989899A890F94E3
-:100EA000743FCB01A601B4010E949DCB80917402D6
-:100EB0008823F9F0A885B9856D917C91072E000CE7
-:100EC000880B990B0F94B8399B01AC01EC89FD8913
-:100ED0006081718182819381F981FF23C1F10F9437
-:100EE000684018160CF465CF04C00F94B13987FF21
-:100EF00028C0209174022983222331F010927402B9
-:100F00000F948E100E944B272E8520936D068981A9
-:100F100065960FB6F894DEBF0FBECDBFDF91CF91BF
-:100F20001F910F91FF90EF90DF90CF90BF90AF9007
-:100F30009F908F907F906F905F904F903F902F90F9
-:100F400008956C2C1D2D0E2DFA8219825BCF0F9403
-:100F5000B13987FD2ECFCDCF211431044104510486
-:100F600041F0D701C60182199309A409B509B7FD5B
-:100F70009DCF2A2D392D482D572D6A857B858C854F
-:100F80009D850F94073E20E030E040EC5FE30F9436
-:100F9000B13987FDAECF16012701E0E62E0EEAEE4D
-:100FA0003E1E411C511CAA869B868C867D867ECF68
-:100FB00012988D5F21E030E001C0220F8A95EAF798
-:100FC0008091BF07822B8093BF070895CF92DF9255
-:100FD000EF92FF92CF93DF93EC01C880D980EA8033
-:100FE000FB8083EB92E20E94ACCEC701B6010F9466
-:100FF0002A0ECC80DD80EE80FF8083E49CE30E949B
-:10100000ACCEC701B6010F942A0EC884D984EA84F5
-:10101000FB848FE39CE30E94ACCEC701B6010F9422
-:101020002A0E8AE0DF91CF91FF90EF90DF90CF9072
-:101030000C949FCE0F930FB70F9300916E000F93F8
-:101040000D7F00936E0000916F000D7F00936F0085
-:101050000F930BB70F930CB70F921F922F933F93E1
-:101060004F935F936F937F938F939F93AF93BF93B0
-:10107000EF93FF9311240E9418A8FF91EF91BF9165
-:10108000AF919F918F917F916F915F914F913F9120
-:101090002F911F900F900CBF0F910BBF0F9102600B
-:1010A000F89400936F000F9100936E000F910FBFA3
-:1010B0000F91189500008091E50880FF27C0899A5C
-:1010C0008FEF809358078091E50881FF22C08F9AA7
-:1010D0008FEF809359078091E50882FF1DC08091B2
-:1010E0000B0180958270809309018FEF80935A07DE
-:1010F00080915C079091E50893FF17C0811113C0A0
-:10110000169A8FEF80935B0700000895899881E01D
-:10111000D8CF8F9881E0DDCF80910B0182708093D2
-:10112000090181E0E3CF4398ECCF811103C0169809
-:1011300081E0E8CF439AFCCFAF92BF92CF92DF928B
-:10114000EF92FF921F93CF93DF9340EC50E070E05B
-:1011500060E08FEA95E10F94CE218FEAA82E85E119
-:10116000B82E11E0F50113AF43E051E860E070E103
-:10117000C5010F940222C0E2D3E0F501D2AFC1AFA6
-:10118000C12CD12CE12C9FE3F92EC586D686E786AB
-:10119000F08A60E273E0C5010F940F2164E0C5019D
-:1011A0000F942E09C5010F94E61160E8C5010F9454
-:1011B000C72044E25EE06DE078ECC5010F94B221F7
-:1011C000C5010F94DA1168EC70E080E090E00F94B4
-:1011D000911C40EC50E070E060E083E795E10F94F3
-:1011E000CE2123E7A22E25E1B22EF50113AF43E075
-:1011F00051E860E070E1C5010F940222F501D2AF21
-:10120000C1AFC586D686E786F08A60E273E0C50185
-:101210000F940F2164E0C5010F942E09C5010F94AE
-:10122000E61160E8C5010F94C72044E25EE06DE07E
-:1012300078ECC5010F94B221C5010F94DA1168EC66
-:1012400070E080E090E00F94911C40EC50E070E082
-:1012500060E087E395E10F94CE2137E3A32E35E1DB
-:10126000B32EF50113AF43E051E860E070E1C50132
-:101270000F940222F501D2AFC1AFC586D686E786AC
-:10128000F08A60E273E0C5010F940F2164E0C501AC
-:101290000F942E09C5010F94E61160E8C5010F9463
-:1012A000C72044E25EE06DE078ECC5010F94B22106
-:1012B000C5010F94DA1168EC70E080E090E00F94C3
-:1012C000911C40EC50E070E060E08BEF94E10F94F3
-:1012D000CE214BEFA42E44E1B42EF50113AF43E031
-:1012E00051E860E070E1C5010F940222F501D2AF30
-:1012F000C1AFC586D686E786F08A60E273E0C50195
-:101300000F940F2164E0C5010F942E09C5010F94BD
-:10131000E61160E8C5010F94C72044E25EE06DE08D
-:1013200078ECC5010F94B221C5010F94DA1168EC75
-:1013300070E080E090E00F94911C40EC50E070E091
-:1013400060E08FEB94E10F94CE215FEBA52E54E18A
-:10135000B52EF50113AF43E051E860E070E1C5013F
-:101360000F940222F501D2AFC1AFC586D686E786BB
-:10137000F08A60E273E0C5010F940F2164E0C501BB
-:101380000F942E09C5010F94E61160E8C5010F9472
-:10139000C72044E25EE06DE078ECC5010F94B22115
-:1013A000C5010F94DA1168EC70E080E090E00F94D2
-:1013B000911CDF91CF911F91FF90EF90DF90CF9024
-:1013C000BF90AF900C945A8893E0980F21E030E0E2
-:1013D00002C0220F331F9A95E2F720953095909125
-:1013E000BF0729232093BF07882321F0813021F0F4
-:1013F00081E00895129AFCCF479AFACF80E00E94CC
-:10140000E48981E00C94E489882319F0813021F08B
-:10141000089580E00C94D88747988091BF07806139
-:101420008093BF070895813089F070F0823081F099
-:1014300021E030E001C0220F8A95EAF78091BF07D2
-:10144000822B8093BF0708955F98F2CF8A98F0CFE0
-:1014500090910801917090930601EACF0F931F932A
-:10146000CF93DF93C82F41E06DE979E10E946FD9F6
-:101470008C2F0E948ED985E999E10E94ACCE8DED2A
-:1014800098E10E9409DB41E063E879E18C2F0E943A
-:101490006FD98C2F0E948ED986E699E10E94ACCE3E
-:1014A0008C2F0E9415DA8C2F0F9432128C2F0E94F1
-:1014B00010D68C2F0E943AD68C2F0E94EED58C2FFE
-:1014C0000E94B6D58C2F0E9494D58C2F0E94E4D90F
-:1014D00041E065EF78E18C2F0E946FD902EF15E0B3
-:1014E000D0E08C2F0E948ED96D2F8CEE98E10E9457
-:1014F00074D6F80160817181072E000C880B990B5E
-:101500000F94B839AB01BC0189EE98E10E94A4CFD9
-:10151000F80162817381072E000C880B990B0F94E0
-:10152000B839AB01BC0186EE98E10E94A4CFF80166
-:101530006481758183EE98E10E9404DB0A5F1F4F8E
-:10154000D13009F098C06FEF8C2F0E9493D98C2F67
-:101550000E9484D641E063E279E18C2F0E946FD92A
-:101560008C2F0E948ED980E199E10E94ACCE6091CF
-:10157000E8157091E9158EE499E10E947BDA60919B
-:10158000AC157091AD158FE09CE30E947BDA609101
-:101590007015709171158CE09CE30E947BDA8AE0F3
-:1015A0000E949FCE8C2F0E948ED980E199E10E94EB
-:1015B000ACCE60913415709135158DE199E10E94A2
-:1015C00004DB8C2F0E948ED980E199E10E94ACCE81
-:1015D0006091F8147091F91487E199E10E9404DB9D
-:1015E0008AE00E949FCE41E061E579E18C2F0E9464
-:1015F0006FD9D091EA151091AE1500917215D111E5
-:101600003CC0111141C001113FC0809136158823A3
-:1016100091F0C11102C00E940FD88AE399E10E94A3
-:10162000ACCE80E20E949FCE89E499E10E94ACCECC
-:101630008AE00E949FCE8091FA14882391F0C11114
-:1016400002C00E940FD88AE399E10E94ACCE80E2EA
-:101650000E949FCE84E499E10E94ACCE8AE00E9471
-:101660009FCE8C2F0E94C7DB8C2FDF91CF911F91D3
-:101670000F910C948ED6D1E034CFCC2349F08AE37D
-:1016800099E10E94ACCE0CC08AE399E1C1110AC075
-:101690000E940FD88AE399E10E94ACCEDD2321F0AD
-:1016A0008EE499E10E94ACCE112321F08FE09CE3FF
-:1016B0000E94ACCE002321F08CE09CE30E94ACCED3
-:1016C0008AE00E949FCEA1CF8F929F92AF92BF924D
-:1016D000DF92EF92FF920F931F93CF93DF93CDB7DB
-:1016E000DEB7C658D1090FB6F894DEBF0FBECDBF26
-:1016F000C358DF4F188219821A821B82CD57D040FF
-:101700008091EF039091F003A091F103B091F20367
-:10171000CF57DF4F88839983AA83BB83C158D040BA
-:1017200084E690E0909354078093530710925607F5
-:10173000109255071092570725E537E044E050E036
-:10174000BE016F577F4F83E597E00E9494DA809146
-:101750005307909154070296909354078093530730
-:10176000109256071092550781E0CA57DF4F8883C1
-:10177000C658D040CE018A579F4F0E941F7725E55B
-:1017800037E048E450E065E579E083E597E00E94C2
-:1017900094DA80E1E4ECF2E08E010F5F1F4FD80194
-:1017A00001900D928A95E1F725E537E040E150E0A0
-:1017B000B80183E597E00E9494DA8EEF95E00E94ED
-:1017C000317786EE98E00E9428778AE796E00E94BB
-:1017D00028777E018DE6E80EF11C8FEFD7018C9300
-:1017E000C7010E941F7719821A821B821C82C801BE
-:1017F0000E94317719821A821B821C82C8010E94C2
-:101800003177C358DF4F188219821A821B82CD5755
-:10181000D04083E0F70180838983CE0183589F4FB6
-:101820000E943177C7010E941F77C8010E941F776D
-:101830005AE0D52EDA94DD2031F0CE0183589F4F47
-:101840000E943177F7CF8CE0D8011D928A95E9F795
-:10185000C8010E942877C358DF4F188219821A8264
-:101860001B82CD57D0404AE0D42EDA94DD2031F0EF
-:10187000CE0183589F4F0E943177F7CF83E0CB573B
-:10188000DF4F8883C558D040EA968FAFEA97CE01E4
-:101890008B579F4F0E941F77CE0187589F4F0E9402
-:1018A0001F7788E0F701982F11929A95E9F7D801F0
-:1018B0001D928A95E9F725E537E048E050E0B70149
-:1018C00083E597E00E9494DA25E537E048E050E0B0
-:1018D000B80183E597E00E9494DAC358DF4F18827D
-:1018E00019821A821B82CD57D0403AE0A32EB12C28
-:1018F000B1E0AB1AB10831F0CE0183589F4F0E947E
-:101900003177F6CF19828FEFF7018083C8010E94EB
-:101910001677C7010E941F7780E1D8011D928A9532
-:10192000E9F725E537E040E150E0B80183E597E0CD
-:101930000E9494DA1982C8010E94167725E537E0E3
-:101940004CE050E062EF75E083E597E00E9494DAA6
-:1019500092E0D92E812C912C20E8A22E2FE3B22EDA
-:10196000198A1A8A1B8A1C8A8D869E86AF86B88A37
-:1019700080914A0690914B06A0914C06B0914D067D
-:1019800089839A83AB83BC832CEA35EC47E25EE320
-:1019900060914E0670914F068091500690915106CD
-:1019A0000F94023F6D837E838F8398872CEA35ECFA
-:1019B00047E25EE3609152067091530680915406AF
-:1019C000909155060F94173A69877A878B879C8781
-:1019D00025E537E044E150E0B80183E597E00E9457
-:1019E00094DAB1E0DB12C5C184E190E09A83898387
-:1019F00025E537E042E050E0B80183E597E00E943A
-:101A000094DA8CE0E4EDF2E0D80101900D928A9531
-:101A1000E1F7C8010E940D778CE0E4EDF2E0D80117
-:101A200001900D928A95E1F7C8010E940D77198205
-:101A3000C8010E941F7780912E028983C8010E94ED
-:101A40001F778FEF8983C8010E941F7785E0E0EE42
-:101A5000F2E0D80101900D928A95E1F725E537E093
-:101A600045E050E0B80183E597E00E9494DA1982DE
-:101A7000C8010E94167780E2E5EEF2E0D8010190FD
-:101A80000D928A95E1F725E537E040E250E0B80194
-:101A900083E597E00E9494DAF7011082C7010E9463
-:101AA000167781EF95E00E94167725E537E048E04C
-:101AB00050E069EE75E083E597E00E9494DAC35840
-:101AC000DF4F188219821A821B82CD57D040CE0177
-:101AD00083589F4F0E943177CE0183589F4F0E94B9
-:101AE0003177FE0137968AE0DF011D928A95E9F78A
-:101AF0008091E8159091E9159A8389838091AC15BE
-:101B00009091AD159C838B83809170159091711588
-:101B10009E838D8380913415909135159A8B898B96
-:101B20008091F8149091F9149C8B8B8B25E537E00C
-:101B300044E150E0B80183E597E00E9494DA88E23E
-:101B4000E5E0F3E0D80101900D928A95E1F725E5F3
-:101B500037E048E250E0B80183E597E00E9494DA6C
-:101B600080E1D82EF8018D2D11928A95E9F725E5AF
-:101B700037E040E150E0B80183E597E00E9494DA55
-:101B80001A8219828091EA1581709091AE1590FBAE
-:101B900081F99091721590FB82F989838A819091E5
-:101BA000361590FB80F99091FA1490FB81F98A83A5
-:101BB00025E537E042E050E0B80183E597E00E9478
-:101BC00094DAC358DF4F188219821A821B82CD57CC
-:101BD000D040CE0183589F4F0E943177CE01835869
-:101BE0009F4F0E943177D8011D92DA94E9F725E5DD
-:101BF00037E040E150E0B80183E597E00E9494DAD5
-:101C00008CE6F80111928A95E9F725E537E04CE674
-:101C100050E0B80183E597E00E9494DA87E497E00A
-:101C20000E940D7725E537E040E150E069ED75E071
-:101C300083E597E00E9494DA25E537E044E050E040
-:101C400066E876E083E597E00E9494DA8CE0D701BD
-:101C50001D928A95E9F7CB57DF4F1882C558D040BF
-:101C600080E090E0A0E4B0E4ED968CAF9DAFAEAF25
-:101C7000BFAFED97C7010E942877CE018B579F4FCA
-:101C80000E941F77CE0187589F4F0E943177D090D6
-:101C90005707D1104EC000915307109154070456B6
-:101CA00011098091550790915607F7019183808320
-:101CB00084E690E0909354078093530725E537E03E
-:101CC00044E050E069E373E083E597E00E9494DA32
-:101CD00025E537E042E050E0B70183E597E00E9458
-:101CE00094DA0E940FD8B80185E998E10E947BDA66
-:101CF000D7018D909C90B12CA12C88E898E10E948E
-:101D0000ACCEC501B4010F94C00D85E898E10E94E6
-:101D1000ACCE033B124041F00E940BD88AEA99E115
-:101D20000E94ACCEDD24D394809157078D298093F7
-:101D3000570780915707811105C060E085E798E15A
-:101D40000E941D3B9091570781E08927CA57DF4FBA
-:101D50000FB6F894DEBF0FBECDBFDF91CF911F91BC
-:101D60000F91FF90EF90DF90BF90AF909F908F907A
-:101D70000895DD24D394F4CDCF93DF9300D01F9248
-:101D8000CDB7DEB78091D108882389F083E390E056
-:101D90009C838B831A8219829E012F5F3F4F40E103
-:101DA00050E062ED78E0CE0103960E9494DA0F9045
-:101DB0000F900F900F90DF91CF910895CF93DF9305
-:101DC00000D01F921F92CDB7DEB781E08093D1087B
-:101DD00080E1E2EDF8E0DF011D928A95E9F70E94CB
-:101DE000BC8E86E18D8382E390E09C838B831A8294
-:101DF00019829E012F5F3F4F41E050E0BE016B5FB3
-:101E00007F4FCE0103960E9494DA0F900F900F90AF
-:101E10000F900F90DF91CF910895AF92BF92CF9224
-:101E2000DF92EF92FF920F931F93CF93DF93C5E55D
-:101E3000D9E00EEB15E085E6A82E89E0B82EC12C7E
-:101E4000D12C7601C39469917991899199910F94DC
-:101E5000B639288939894A895B890F94173A0F94D2
-:101E60007B3FF80161937193819391938F01C61623
-:101E7000D706E806F90610F46B017C01AC16BD0626
-:101E800011F76FEF7FEFCB01A70196010F94A43DEF
-:101E90002093250730932607409327075093280760
-:101EA000DF91CF911F910F91FF90EF90DF90CF9036
-:101EB000BF90AF9008950F931F93CF93DF9309E6E0
-:101EC00019E0CBE2D7E0F801219131914191519194
-:101ED0008F0160E070E080E89FE30F94023F699318
-:101EE000799389939993F7E0CB33DF0761F70F94E8
-:101EF000BA11DF91CF911F910F910C940D8F90919A
-:101F0000091680910A16981306C080914C09909189
-:101F10004D09892B21F080E00E94EADDF0CF089581
-:101F2000CF92DF92EF92FF920F931F93CF93DF93A5
-:101F3000CDB7DEB72C970FB6F894DEBF0FBECDBF7E
-:101F4000182F6B017A0180913509833090F00E943F
-:101F50000BD8C6010E94ACCE8DEC92E20E94ACCEB2
-:101F60001F3F51F589EC92E20E94ACCE8AE00E94BC
-:101F70009FCE0E94B485A8958091C007811152C060
-:101F800081E08093C00782E0809335090E94B48588
-:101F900005E1015019F1A895409A69E170E080E0EF
-:101FA00090E00F94911C409860E570E080E090E034
-:101FB0000F94911CA895EDCF17FDD8CF87EC92E236
-:101FC0000E94ACCE612F012E000C770B880B990B71
-:101FD0000F942A0E8AE00E949FCEC8CF409A0F9499
-:101FE0003211811111C08CE0EDE2F3E0DE011196B7
-:101FF00001900D928A95E1F7BE016F5F7F4F80E0FF
-:102000000E947C2A0E947F8F60EC72E21F3F31F0B9
-:1020100064EC72E2113011F46DEB72E240E0C70142
-:102020000E94E2DC2C960FB6F894DEBF0FBECDBF47
-:10203000DF91CF911F910F91FF90EF90DF90CF90A4
-:1020400008954F925F926F927F929F92AF92BF924C
-:10205000CF92DF92EF92FF920F931F93CF93DF9374
-:10206000EC016B015A01922E8FEFE2E02813E22F70
-:1020700085E0E802F0011124E25EF94F84818823B3
-:1020800009F456C01C821D821E821F8218868C8114
-:102090008230A1F0833009F47CC08130C9F52D81F4
-:1020A0003E814F815885F6016081718182819381E3
-:1020B0000F94B13987FD2CC082E08C830F941E1DD4
-:1020C0002B013C01B701FF0C880B990B0F94B83919
-:1020D0009B01AC016D817E818F8198850F94073EB5
-:1020E0009B01AC01F60160817181828193810F9423
-:1020F000684087FD42C09801A8EEB3E00F94F83D18
-:10210000460E571E681E791E488259826A827B825B
-:10211000DF91CF911F910F91FF90EF90DF90CF90C3
-:10212000BF90AF909F907F906F905F904F90089579
-:10213000F5014080518062807380A30192016D811E
-:102140007E818F8198850F94B139882309F49FCFC0
-:102150004D825E826F8278867724739420E030E02F
-:10216000A901F50160817181828193810F9468409A
-:1021700018160CF0712C7C828ACF88819981AA81F3
-:10218000BB81481A590A6A0A7B0A77FCC1CF83E0EF
-:102190008C8347E453E267E573E2892DDF91CF91A9
-:1021A0001F910F91FF90EF90DF90CF90BF90AF9075
-:1021B0009F907F906F905F904F900C94908F4BEE1C
-:1021C00052E268EF72E20C94908FAF92BF92CF927E
-:1021D000DF92EF92FF920F931F93CF93DF93A89517
-:1021E00060E080914106909142060E945183609385
-:1021F000430670934406809345069093460661E03B
-:1022000080915806909159060E94518360935A0616
-:1022100070935B0680935C0690935D068091300618
-:10222000909131060E94E9856093320670933306DF
-:1022300080933406909335068FE3E82E86E0F82EDF
-:102240009DE3A92E93E0B92EC4E6D2E010E0F70199
-:10225000C280D380F50101915F0107FF4DC08A81E3
-:102260009B81C816D90608F450C0F7018085918576
-:102270001816190644F407FF4CC0888199818C1503
-:102280009D0508F44FC0F7E1EF0EF11C28961130C0
-:1022900089F52091CF083091D00880913006909137
-:1022A00031068217930718F48FEF0E94DF90809118
-:1022B00036069091370618161906E4F52091620249
-:1022C00030916302809130069091310628173907CA
-:1022D00088F548E253E265E373E28FEFDF91CF9137
-:1022E0001F910F91FF90EF90DF90CF90BF90AF9034
-:1022F0000C94908F11E0ABCF002309F4B6CF8A8104
-:102300009B818C159D0508F0B0CF812F0E94DF9036
-:10231000ACCF002309F4B7CF88819981C816D906BC
-:1023200008F0B1CF48E253E265E373E2812F0E94E7
-:10233000908FA9CFDF91CF911F910F91FF90EF90D8
-:10234000DF90CF90BF90AF9008952F923F924F9221
-:102350005F926F927F928F929F92AF92BF92CF9235
-:10236000DF92EF92FF920F931F93CF93DF93CDB73E
-:10237000DEB7A0970FB6F894DEBF0FBECDBF809139
-:10238000350981111AC0A895A0960FB6F894DEBF42
-:102390000FBECDBFDF91CF911F910F91FF90EF90B6
-:1023A000DF90CF90BF90AF909F908F907F906F9075
-:1023B0005F904F903F902F9008958091FB0781117F
-:1023C000E3CF81E08093FB0780912D06811103C04C
-:1023D0001092FB07D9CF0E94E59010922D060F9422
-:1023E0001E1D6F83788789879A8723E436E03E83B2
-:1023F0002D8344E652E0598B488B82E196E09B8B1B
-:102400008A8BABEEB5E1BD8FAC8FEEE1F6E0FF87D6
-:10241000EE8745EC242E47E0342E1B86FB85F8A37F
-:10242000A889B98916966D917C91072E000C880BAE
-:10243000990B0F94B8399B01AC01ED81FE8160814D
-:102440007181828193810F94684018161CF48B85EA
-:102450000E94DF90AE85BF8514968C9114978111F0
-:102460001AC08D919D910D90BC91A02D0097A10552
-:10247000B10589F02F81388549855A85281B390B8C
-:102480004A0B5B0BDA01C901B7FD05C0E1E0AE857F
-:10249000BF851496EC93AD81BE8114966D917C91AD
-:1024A000072E000C880B990B0F94B83969837A8337
-:1024B0008B839C8334E0E32EF12C08E210E02B8523
-:1024C000AE014F5F5F4F6D817E818C8D9D8D0E942F
-:1024D0002190AD81BE812D913D914D915C912C8BD0
-:1024E0003D8B4E8B5F8BE889F98964817581072E5E
-:1024F000000C880B990B0F94B8399B01AC016C89C7
-:102500007D898E899F890F94684018160CF06EC2E1
-:10251000A889B98916966D917C91072E000C880BBD
-:10252000990B0F94B8399B01AC016C897D898E8918
-:102530009F890F94B13987FF59C28091F3078111A8
-:102540003FC0EFE3F6E0F093C607E093C507A7ECC2
-:10255000B7E0ECE01D92EA95E9F71092D3071092EC
-:10256000D4071092D5071092D6071092D707109271
-:10257000D8071092D9071092DA07F1E0F093DB0741
-:1025800026E536E03093DD072093DC07AEEDB7E0BB
-:10259000ECE01D92EA95E9F71092EA071092EB073A
-:1025A0001092EC071092ED071092EE071092EF07D1
-:1025B0001092F0071092F107F093F207F093F307EF
-:1025C000D1010D90BC91A02DBD87AC8718966D915F
-:1025D0007C9119976115710501F114962D913D912A
-:1025E0004D915C911797288F398F4A8F5B8F072EFB
-:1025F000000C880B990B0F94B839288D398D4A8DB2
-:102600005B8D0F94073E4B015C0120E030E040E71A
-:1026100051EC0F94B13987FF07C021E0F101268BFF
-:10262000C12CD12C7601DEC020E030E040E751E43F
-:10263000C501B4010F94684018165CF4E1E0D101C3
-:102640005696EC93C12CD12C2FE7E22E23E4F22EE8
-:10265000C9C0D10156968C915697882371F0569631
-:102660001C925697F10116861786108A118A1A96BF
-:102670001D921D921D921C921D97EC85FD8547842D
-:10268000508861887288D1011E962D913D914D919F
-:102690005C915197C501B4010F94083E7B018C01F8
-:1026A00020E030E0A9010F94B13987FD9AC1A30160
-:1026B000920160E070E08FE793E40F94023F6E8F29
-:1026C0007F8F6C019701A8010F94B13987FF03C078
-:1026D000EE8CFF8C8601C701D801F10186879787B0
-:1026E000A08BB18BAC85BD851B962D913D914D91F5
-:1026F0005C911E97C501B4010F94173A4B015C0120
-:10270000F10182829382A482B5829701A801C3015C
-:10271000B2010F94173A6B017C01D1011696CD924C
-:10272000DD92ED92FC9219971A964D905D906D9006
-:102730007C901D97288D398D4A8D5B8D52966D91B9
-:102740007D918D919C9155970F94073EEC85FD8569
-:1027500023893489458956890F94173AA301920138
-:102760000F94073E20ED3CEC4CE45DE30F94173AE8
-:10277000A30192010F94083E2B013C01D1011A964E
-:102780004D925D926D927C921D97288D398D4A8D68
-:102790005B8D52962D933D934D935C935597A70176
-:1027A0009601C501B4010F94083EA30192010F9454
-:1027B000083E20E030E0A9010F94083E6B017C0147
-:1027C00020E030E0A9010F94B13987FD29CF20E046
-:1027D00030E04FE753E4C701B6010F946840181684
-:1027E0000CF430CFC701B6010F94743F759567950F
-:1027F000ED81FE816683EA89FB8982819381A481D0
-:10280000B5810097A105B105E9F02F81388549858B
-:102810005A85281B390B4A0B5B0BDA01C901B7FD3E
-:1028200011C06C897D898E899F890F94743FAA8914
-:10283000BB892D913C91621773070CF4D9C08B852D
-:102840000E949ACCED81FE817796FE83ED832889E4
-:102850003989285F3F4F398B288B4A895B894A5FCA
-:102860005F4F5B8B4A8B8C8D9D8D09969D8F8C8FD6
-:10287000AE85BF851596BF87AE87B7E12B0E311C9D
-:10288000E1E0EB87F8A1F13009F0C8CD20E030E0BD
-:102890004CED52E46091320670913306809134061B
-:1028A000909135060F94684018161CF48FEF0E9423
-:1028B000DF9080910E0690910F06A0911006B091C6
-:1028C00011060097A105B10501F12F8138854985D1
-:1028D0005A85281B390B4A0B5B0BDA01C901B7FD7E
-:1028E00014C0609132067091330680913406909145
-:1028F00035060F94743F20910C0630910D06621737
-:1029000073070CF47DC00E9422C68091C10790918C
-:10291000C207A091C307B091C4072F8138854985AC
-:102920005A85281B390B4A0B5B0BDA01C901B7FD2D
-:102930004FCD8F819885A985BA8588579C4EAF4F1A
-:10294000BF4F8093C1079093C207A093C307B09372
-:10295000C40780912C0681111BC08091280690919C
-:102960002906A0912A06B0912B060097A105B10572
-:1029700079F02F81388549855A85281B390B4A0BF8
-:102980005B0BDA01C901B7FD03C081E080932C061F
-:102990006091360670913706072E000C880B990B54
-:1029A0000F94B83969837A838B839C8382E0E82E05
-:1029B000F12C04E110E02FEFAE014F5F5F4F62E3B7
-:1029C00076E08DEF95E10E94219080912C0688237E
-:1029D000F9F0109238068091020180728093000114
-:1029E000F7CCE12CF12C00E010E075CE60E000CFD8
-:1029F0004AE053E269E173E28B850E94908F22CF17
-:102A00004AE053E269E173E28FEF0E94908F7DCF3D
-:102A1000C0903206D0903306E0903406F090350630
-:102A200020E030E040EA50E4C701B6010F9468406E
-:102A300087FDCFCF20E030E04CED52E4C701B60176
-:102A40000F94B13918162CF2609136067091370642
-:102A5000072E000C880B990B0F94B8399B01AC0121
-:102A6000C701B6010F94B13987FF04C08FE7809387
-:102A70003806AECC80E0FBCF90916F0081E091FDF5
-:102A800002C080E0089590916F009D7F90936F0049
-:102A90000895EFE6F0E08081826080830895CF930F
-:102AA000C82F0E943C9594E0C99F90011124F90120
-:102AB000ED55F84F2155384FD9014D915D916D91EC
-:102AC0007C91408351836283738391E09093A2074A
-:102AD000882319F0CF910C944995CF910895CF9305
-:102AE000DF9380910807649B4DC081608093080745
-:102AF000909103018091080791FD46C08D7F8093DE
-:102B00000807809108074B9941C08B7F8093080785
-:102B1000C0919307C0FF10C08091E50880FD0CC0F4
-:102B20008091080780FF08C08091340981608093FC
-:102B3000340980E00E944F95C1FF10C08091E508E4
-:102B400081FF0CC08091080781FF08C08091340983
-:102B500082608093340981E00E944F95C2FF18C0C3
-:102B60008091E50882FF14C08091080782FF10C0A1
-:102B70008091340984608093340982E0DF91CF91A1
-:102B80000C944F958E7FB2CF8260B9CF8460BECF58
-:102B9000DF91CF910895809136028F3708F449C0B4
-:102BA0008F57909149069093FF07992309F43FC0EE
-:102BB0002C9A209160062093000890910201211127
-:102BC0009095907190930001209138062093FE0714
-:102BD00090910201211190959072909300018F5F66
-:102BE000809336028091FD0791E089278093FD074D
-:102BF00081110E94603E9091350221E0290F9730AB
-:102C00000CF020E0983008F041C0E92F092E000CAC
-:102C1000FF0B8827E15FF9468F4F0D945C413F968B
-:102C200087969396A696AB96BE96C3962F962C98AB
-:102C3000C0CF9091FF07891708F02C989091000859
-:102C4000891728F090910201907190930001909162
-:102C5000FE07891708F4C3CF90910201BDCF809180
-:102C6000FC07811103C083E08093FC078091FC077F
-:102C700081508093FC07882349F0292F07C0809159
-:102C800034028F5F8031ACF480933402209335029C
-:102C90008091E30881110E946F9580914C09909179
-:102CA0004D09009729F0019790934D0980934C09A5
-:102CB00008951092340280912D0681111BC08091DD
-:102CC0003F06909140069093420680934106809182
-:102CD0005606909157069093590680935806809116
-:102CE0002E0690912F06909331068093300681E056
-:102CF00080932D061092400610923F0610925706C0
-:102D00001092560610922F0610922E06BFCF88E022
-:102D100080937B0085E480937C0080917A008064BE
-:102D200080937A00B3CF80917A0086FDA6CF409140
-:102D300078005091790080913F0690914006840F71
-:102D4000951F9093400680933F06A0CF88E0809324
-:102D50007B0086E4E0CF80917A0086FD8ECF4091A3
-:102D600078005091790080912E0690912F06840F63
-:102D7000951F90932F0680932E0688CF88E080932E
-:102D80007B0087E4C8CF80917A0086FD76CF4091A2
-:102D90007800509179008091560690915706840FE3
-:102DA000951F909357068093560670CF2F923F92AF
-:102DB0004F925F926F927F928F929F92AF92BF924B
-:102DC000CF92DF92EF92FF920F931F93CF93DF93F7
-:102DD000CDB7DEB7C058D1090FB6F894DEBF0FBE2D
-:102DE000CDBF7C018B01242EAA963FAF2EAFAA97B0
-:102DF0002091690930916A0940916B0950916C09E1
-:102E0000DC016D917D918D919C910F94173A0F94F7
-:102E10007540E8966CAF7DAF8EAF9FAFE89720917D
-:102E20006D0930916E0940916F0950917009F70159
-:102E300064817581868197810F94173A0F9475404C
-:102E4000EC966CAF7DAF8EAF9FAFEC972091710980
-:102E5000309172094091730950917409D701189605
-:102E60006D917D918D919C911B970F94173A0F94C2
-:102E70007540C458DF4F688379838A839B83CC571E
-:102E8000D040209175093091760940917709509191
-:102E90007809F70164857585868597850F94173ABB
-:102EA0000F947540A8966CAF7DAF8EAF9FAFA8977B
-:102EB0008091D40583FF0EC0A8962CAD3DAD4EADDC
-:102EC0005FADA89720932B1630932C1640932D16A8
-:102ED00050932E16D801BC916896BFAF6897F80141
-:102EE000F1812C96FFAF2C97D8011296BC91A09639
-:102EF000BFAFA097F80133808091091690910A1610
-:102F0000891B80958F7019F40E94EADDF5CFF0914E
-:102F10000916C058DF4FF883C058D04020910916D9
-:102F20002DAF80914C0990914D09892B11F00C9493
-:102F300071A480911F1690912016A0912116B09136
-:102F40002216E8968CAC9DACAEACBFACE897881A64
-:102F5000990AAA0ABB0A8091231690912416A0917F
-:102F60002516B0912616EC962CAD3DAD4EAD5FAD5D
-:102F7000EC97281B390B4A0B5B0B29AF3AAF4BAFD1
-:102F80005CAF8091271690912816A0912916B091D8
-:102F90002A16C458DF4F288139814A815B81CC577A
-:102FA000D040281B390B4A0B5B0B2DAB3EAB4FAB14
-:102FB00058AF80912B1690912C16A0912D16B091A0
-:102FC0002E16A896CCACDDACEEACFFACA897C81A18
-:102FD000D90AEA0AFB0A09F465C0822D0E940CCDC9
-:102FE0008823B9F0A8968CAD9DADAEADBFADA897C6
-:102FF00080932B1690932C16A0932D16B0932E161B
-:103000000E940FD88AE598E10E94ACCEC12CD12C49
-:10301000760194E0299E800111240A5D1D4FC701AD
-:10302000B6010F94B839D8012D913D914D915C9125
-:103030000F94173A2B013C0120E030E0A9010F94D6
-:10304000684087FF04C077FA709477F8709420E0A6
-:1030500030E048E453E460917509709176098091FD
-:103060007709909178090F94173AA30192010F9470
-:10307000B13987FF17C0A8962CAD3DAD4EAD5FAD01
-:10308000A89720932B1630932C1640932D1650930F
-:103090002E160E940FD88BE398E10E94ACCEC12C73
-:1030A000D12C7601D501C4018827B7FD83959927D6
-:1030B000AA27BB27782E29AD3AAD4BAD5CAD57FFA3
-:1030C00002C0689471F88DA99EA9AFA9B8ADB7FFE9
-:1030D00002C0689472F8F7FE02C0689473F894E036
-:1030E000299E800111240A5D1D4FC701B6010F946E
-:1030F000B839D8012D913D914D915C910F94173ABB
-:103100006B017C0120E030E0A9010F94684087FF4B
-:10311000D2C1C701B6019058FDADEF2FF0E0FCAB76
-:10312000EBAB5DAD4DE5549F90011124D901A35641
-:10313000B64FBEAFADAF20E030E040E05FE30F94AC
-:10314000083E0F947B3F2B966CAF7DAF8EAF9FAF49
-:103150002B97EDADFEAD1082EA5BFF4F70822DA97B
-:103160003EA94FA958AD27962CAF3DAF4EAF5FAFEC
-:10317000279757FF0DC050954095309521953F4FAB
-:103180004F4F5F4F27962CAF3DAF4EAF5FAF2797A6
-:1031900049AC5AAC6BAC7CAC77FE08C070946094C0
-:1031A00050944094411C511C611C711C23968CAEA0
-:1031B0009DAEAEAEBFAE2397B7FE0DC08827992750
-:1031C000DC0188199909AA09BB0923968CAF9DAF28
-:1031D000AEAFBFAF239723962CAD3DAD4EAD5FADE7
-:1031E0002397ADADBEAD55962D933D934D935C9316
-:1031F0005897FD01418E528E638E748E27962CADAA
-:103200003DAD4EAD5FAD27975D962D933D934D93AC
-:103210005C939097C501B4010F94B83920912B07A6
-:1032200030912C0740912D0750912E070F94173A9B
-:1032300063966CAF7DAF8EAF9FAF639769A37AA3A0
-:103240008BA39CA369AD7AAD8BAD9CAD0F94B839BF
-:1032500020912F073091300740913107509132076C
-:103260000F94173A67966CAF7DAF8EAF9FAF67979D
-:103270006DA37EA38FA398A76DA97EA98FA998ADF2
-:103280000F94B839209133073091340740913507B6
-:10329000509136070F94173A6F966CAF7DAF8EAF93
-:1032A0009FAF6F9769A77AA78BA79CA72091370735
-:1032B000309138074091390750913A07C701B6015C
-:1032C0000F94173A69AF7AAF8BAF9CAF6DA77EA70B
-:1032D0008FA798AB23962CAD3DAD4EAD5FAD239738
-:1032E00026303105410551050CF0EDC036E043169E
-:1032F0005104610471040CF0E6C027968CAD9DADBD
-:10330000AEADBFAD27970697A105B1050CF0DBC0A8
-:1033100020E030E0A90169AD7AAD8BAD9CAD0F9492
-:10332000684087FFCBC089AD9AADABADBCADB0589E
-:103330002DE54BA95CA9249FF001259FF00D1124D8
-:10334000E356F64F85879687A787B08B8DE5ABA9A7
-:10335000BCA98A9FF0018B9FF00D1124E356F64F14
-:103360002B962CAD3DAD4EAD5FAD2B9721A332A377
-:1033700043A354A327968CAD9DADAEADBFAD2797AB
-:1033800084159505A605B70510F4D301C20123964F
-:103390002CAD3DAD4EAD5FAD239782179307A407CB
-:1033A000B50710F4DA01C9012B962CAD3DAD4EAD39
-:1033B0005FAD2B9782179307A407B50710F4DA01C6
-:1033C000C9012DE54BA95CA9249FF001259FF00DB3
-:1033D0001124E356F64F85A396A3A7A3B0A706979B
-:1033E000A105B10510F40C9454A4DF01A95ABF4FF4
-:1033F0008091D2058C9311968091D3058C9321A650
-:1034000089288A288B2819F080E00E94138A8DE58C
-:10341000ABA9BCA98A9FF0018B9FF00D1124E35644
-:10342000F64F818D928DA38DB48D892B8A2B8B2B9A
-:1034300019F081E00E94138A8DE52BA93CA9829F97
-:10344000F001839FF00D1124E356F64F858D968D84
-:10345000A78DB0A1892B8A2B8B2B19F082E00E94BB
-:10346000138A2B968CAD9DADAEADBFAD2B97892B3E
-:103470008A2B8B2B11F40C9473A480912907882339
-:1034800019F081508093290780912A07882319F029
-:10349000815080932A07211075C080E00E94D88750
-:1034A00080E28093290780912A0781117AC081E008
-:1034B0000E94E48976C0C701B6012ECE89AD9AADCF
-:1034C000ABADBCAD35CFAA96AEADBFADAA97CD9092
-:1034D000DD90ED90FC9020E030E0A901C701B6013D
-:1034E0000F94B139882379F08DE52BA93CA9829FEF
-:1034F000F001839FF00D1124E356F64FC586D68662
-:10350000E786F08A23CF63962CAD3DAD4EAD5FAD1F
-:103510006397CA01B9010F94173A6B017C01679652
-:103520002CAD3DAD4EAD5FAD6797CA01B9010F94AB
-:10353000173A9B01AC01C701B6010F94083E6B011D
-:103540007C016F962CAD3DAD4EAD5FAD6F97CA015E
-:10355000B9010F94173A9B01AC01C701B6010F9452
-:10356000083E0F94B6402DE54BA95CA9249FF001BD
-:10357000259FF00D1124E356F64F658776878787E0
-:10358000908BE4CE80912907811102C00E94E489CA
-:1035900091E0291288CF81E00E94048A80E2809322
-:1035A0002A07E0909509F0909609009197091091EB
-:1035B00098090C947BA42B968CAD9DADAEADBFADA0
-:1035C0002B97892B8A2B8B2B09F404C52091890911
-:1035D00030918A0940918B0950918C09A4966CAD69
-:1035E0007DAD8EAD9FADA4970F94173A0F94E63E34
-:1035F0000F947B3F6B017C018091250790912607FA
-:10360000A0912707B0912807EDADFEAD218D328D39
-:10361000438D548D2DAB3EAB4FAB58AF258D368DC2
-:10362000478D50A123962CAF3DAF4EAF5FAF239790
-:1036300021A132A143A154A12F962CAF3DAF4EAF93
-:103640005FAF2F9727962CAD3DAD4EAD5FAD279761
-:1036500082179307A407B50708F4C5C48114910421
-:10366000A104B104D1F06091BE057091BF058091B5
-:10367000C0059091C1056C157D058E059F0568F408
-:103680000F94943DA50194010F94A43D2C153D0584
-:103690004E055F0510F469017A018DA99EA9AFA9B5
-:1036A000B8AD892B8A2B8B2B11F16091C2057091DB
-:1036B000C3058091C4059091C5056C157D058E05E7
-:1036C0009F05A8F427962CAD3DAD4EAD5FAD279775
-:1036D0000F94943D2DA93EA94FA958AD0F94A43D38
-:1036E0002C153D054E055F0510F469017A012396FE
-:1036F0002CAD3DAD4EAD5FAD2397232B242B252B59
-:1037000021F16091C6057091C7058091C80590911F
-:10371000C9056C157D058E059F05B8F427962CAD5F
-:103720003DAD4EAD5FAD27970F94943D23962CADE4
-:103730003DAD4EAD5FAD23970F94A43D2C153D05D7
-:103740004E055F0510F469017A012F968CAD9DAD91
-:10375000AEADBFAD2F97892B8A2B8B2B21F16091BA
-:10376000CA057091CB058091CC059091CD056C1563
-:103770007D058E059F05B8F427962CAD3DAD4EAD69
-:103780005FAD27970F94943D2F962CAD3DAD4EAD78
-:103790005FAD2F970F94A43D2C153D054E055F0599
-:1037A00010F469017A018DE54BA95CA9849F800121
-:1037B000859F100D11240356164FF801ED5AFF4F47
-:1037C000C082D182E282F382C701B6010F94B6397A
-:1037D000A4962CAD3DAD4EAD5FADA4970F94023FC6
-:1037E000D80151966D937D938D939C9354976396D6
-:1037F0002CAD3DAD4EAD5FAD6397298B3A8B4B8BB6
-:103800005C8B67968CAD9DADAEADBFAD67978D8B74
-:103810009E8BAF8BB88F6F962CAD3DAD4EAD5FAD2F
-:103820006F97298F3A8F4B8F5C8F89AD9AADABAD77
-:10383000BCAD8D8F9E8FAF8FB8A32B962CAD3DADB9
-:103840004EAD5FAD2B97232B242B252B09F4DAC427
-:103850008E010F5E1F4F5E0131E2A30EB11CC12C21
-:10386000D12C7601D8014D905D906D907D908D01A9
-:1038700020E030E0A901C301B2010F94B1398823DF
-:1038800071F0A3019201C301B2010F94173A9B0199
-:10389000AC01C701B6010F94083E6B017C01A01674
-:1038A000B10601F7C701B6010F94B6409B01AC0108
-:1038B00060E070E080E89FE30F94023F6B017C01C1
-:1038C000AC019B0163966CAD7DAD8EAD9FAD6397F2
-:1038D0000F94173A698B7A8B8B8B9C8BA70196017F
-:1038E00067966CAD7DAD8EAD9FAD67970F94173A1F
-:1038F0006D8B7E8B8F8B988FA70196016F966CAD29
-:103900007DAD8EAD9FAD6F970F94173A698F7A8F0B
-:103910008B8F9C8FA701960169AD7AAD8BAD9CAD65
-:103920000F94173A6D8F7E8F8F8F98A3A096BFAD9F
-:10393000A097BB2309F4A2C520910B1630910C1659
-:1039400040910D1650910E1623962CAF3DAF4EAF01
-:103950005FAF23972DEB37E346E855E323966CAD35
-:103960007DAD8EAD9FAD23970F94B13987FD86C590
-:103970008090150790901607A0901707B090180731
-:10398000C988DA88EB88FC888091190790911A071A
-:10399000A0911B07B0911C078DAB9EABAFABB8AF2E
-:1039A0002D893E894F89588D2B962CAF3DAF4EAF58
-:1039B0005FAF2B9780911D0790911E07A0911F0765
-:1039C000B091200763968CAF9DAFAEAFBFAF63974A
-:1039D000298D3A8D4B8D5C8D67962CAF3DAF4EAFE8
-:1039E0005FAF67978091210790912207A0912307ED
-:1039F000B09124076F968CAF9DAFAEAFBFAF6F97FE
-:103A00002D8D3E8D4F8D58A127962CAF3DAF4EAFDB
-:103A10005FAF2797C501B4019058A70196010F9495
-:103A2000173A2B013C016DA97EA98FA998AD90583A
-:103A30002B962CAD3DAD4EAD5FAD2B970F94173A45
-:103A40009B01AC01C301B2010F94083E2B013C0164
-:103A500063966CAD7DAD8EAD9FAD639790586796C4
-:103A60002CAD3DAD4EAD5FAD67970F94173A9B01FE
-:103A7000AC01C301B2010F94083E2B013C016F96CB
-:103A80006CAD7DAD8EAD9FAD6F97905827962CADE8
-:103A90003DAD4EAD5FAD27970F94173A9B01AC013A
-:103AA000C301B2010F94083E69AF7AAF8BAF9CAFF0
-:103AB0002FEE3FEF4FE75FE30F94684018160CF4CA
-:103AC000D6C4A5019401C701B6010F94073E2B018E
-:103AD0003C0149825A826B827C822DA93EA94FA962
-:103AE00058AD2B966CAD7DAD8EAD9FAD2B970F94E1
-:103AF000073E2B966CAF7DAF8EAF9FAF2B976D833C
-:103B00007E838F83988763962CAD3DAD4EAD5FADC0
-:103B1000639767966CAD7DAD8EAD9FAD67970F9443
-:103B2000073E63966CAF7DAF8EAF9FAF639769879B
-:103B30007A878B879C876F962CAD3DAD4EAD5FAD80
-:103B40006F9727966CAD7DAD8EAD9FAD27970F9487
-:103B5000073E67966CAF7DAF8EAF9FAF67976D875F
-:103B60007E878F87988BAE014F5F5F4F5EAB4DAB0B
-:103B70008E010F5E1F4F1A01C12CD12C7601D1018D
-:103B80008D909D90AD90BD901D0120E030E0A90189
-:103B9000C501B4010F94B139882371F0A5019401D6
-:103BA000C501B4010F94173A9B01AC01C701B601DE
-:103BB0000F94083E6B017C010215130501F7C70144
-:103BC000B6010F94B6409B01AC0160E070E080E864
-:103BD0009FE30F94023F6B017C01AC019B01C30189
-:103BE000B2010F94173A69837A838B839C83A70170
-:103BF00096012B966CAD7DAD8EAD9FAD2B970F943E
-:103C0000173A6D837E838F839887A7019601639609
-:103C10006CAD7DAD8EAD9FAD63970F94173A6987FC
-:103C20007A878B879C87A701960167966CAD7DADDF
-:103C30008EAD9FAD67970F94173A6D877E878F87FC
-:103C4000988BEDADFEAD418852886388748805E598
-:103C500019E0ADA9BEA9CD90DD90ED90FD90BEAB71
-:103C6000ADAB20E030E0A901C701B6010F94B13936
-:103C7000882309F43EC020E030E0A901C701B60165
-:103C80000F94684087FFEBC2A701960150582B960E
-:103C90002CAF3DAF4EAF5FAF2B97D8016D917D91AB
-:103CA0008D919C910F94B6394B015C01A301920157
-:103CB0002B966CAD7DAD8EAD9FAD2B970F94173AC3
-:103CC000A50194010F94684018169CF4A701960171
-:103CD000C501B4010F94023F2B013C0120E030E00C
-:103CE000A9010F94684087FF04C077FA709477F8B1
-:103CF00070940C5F1F4FEDA9FEA92E163F0609F028
-:103D0000A8CFAA96AEADBFADAA971496CD90DD9080
-:103D1000ED90FC90179720E030E0A901C701B601B3
-:103D20000F94B139882309F4A1C2A3019201C701FC
-:103D3000B6010F94173A1B018C0123962CAD3DADB3
-:103D40004EAD5FAD2397CA01B9010F94173A6B01CD
-:103D50007C018DE5ABA9BCA98A9FF0018B9FF00D7A
-:103D60001124E356F64F61817281838194819B0116
-:103D7000AC010F94173A4B015C019B01AC01B601F9
-:103D8000C7010F946840181614F46401750191017D
-:103D9000A801B601C7010F946840181614F4610118
-:103DA000780180E1FE017196A5E1B7E001900D92E6
-:103DB0008A95E1F78DE5EBA9FCA98E9F80018F9F85
-:103DC000100D11240356164FC601D701F801818743
-:103DD0009287A387B487618972898389948990586F
-:103DE0009B01AC010F94083EADADBEAD1D962D916B
-:103DF0003D914D915C9150970F94173A9B01AC0106
-:103E00006BE077ED83E29BE30F94073E6B017C014F
-:103E10008BE097EDA3E2BBE3F80185839683A7834C
-:103E2000B0876181728183819481ADADBEAD2C91EB
-:103E300021602C939B01AC010F94173A9B01AC01BC
-:103E4000C701B6010F94684087FD05C0EDADFEAD1A
-:103E50008081826080838DE52BA93CA9829FF0013F
-:103E6000839FF00D1124E356F64F81819281A38147
-:103E7000B48180930B1690930C16A0930D16B093FB
-:103E80000E16E8968CAD9DADAEADBFADE8978093B4
-:103E90001F1690932016A0932116B0932216EC962D
-:103EA0002CAD3DAD4EAD5FADEC9720932316309316
-:103EB00024164093251650932616C458DF4F888148
-:103EC0009981AA81BB81CC57D040809327169093CB
-:103ED0002816A0932916B0932A16A8962CAD3DADAE
-:103EE0004EAD5FADA89720932B1630932C164093C0
-:103EF0002D1650932E169091091680910A1698133C
-:103F000003C084E680930616C058DF4F8881C058EE
-:103F1000D0408F5F8F708093091680910916909121
-:103F2000081681508F70891709F4D5C310910916AE
-:103F30002090081680910916281609F432C31150F2
-:103F40001F70D12CC12C121509F42BC3812E912C7A
-:103F50003DE5139FC0011124AC014356564F5CABA5
-:103F60004BABCA010E946A72882309F417C38BA95C
-:103F70009CA9892B09F19DE5989DF001999DF00D73
-:103F80001124E356F64FB1840285A384348445801E
-:103F9000568067807084A30192016B2D702F8A2D4B
-:103FA000932D0F94B139811171C2C114D10421F044
-:103FB000D6018C9180FD6EC211501F70822D209011
-:103FC0000816281609F45FC2181709F4EAC28F5FB1
-:103FD0008F70F5CF2091910930919209409193090A
-:103FE00050919409FBCA81149104A104B10409F40D
-:103FF0003FC06091BE057091BF058091C005909152
-:10400000C1056C157D058E059F0590F50F94B63999
-:104010006B962CAD3DAD4EAD5FAD6B970F94173ADF
-:1040200027966CAF7DAF8EAF9FAF2797C501B401C8
-:104030000F94B6399B01AC0127966CAD7DAD8EAD6A
-:104040009FAD27970F94023F4B015C01C701B6015A
-:104050000F94B6399B01AC01C501B4010F94B1397D
-:1040600087FF06C0C501B4010F947B3F6B017C0143
-:104070002DA93EA94FA958AD232B242B252BC9F1DF
-:104080006091C2057091C3058091C4059091C505EA
-:104090006C157D058E059F0560F50F94B6396B96FE
-:1040A0002CAD3DAD4EAD5FAD6B970F94173A4B0104
-:1040B0005C016DA97EA98FA998AD0F94B6399B01BB
-:1040C000AC01C501B4010F94023F4B015C01C70173
-:1040D000B6010F94B6399B01AC01C501B4010F9430
-:1040E000B13987FF06C0C501B4010F947B3F6B0156
-:1040F0007C0123968CAD9DADAEADBFAD2397892BD2
-:104100008A2B8B2BD9F16091C6057091C7058091E0
-:10411000C8059091C9056C157D058E059F0570F544
-:104120000F94B6396B962CAD3DAD4EAD5FAD6B9730
-:104130000F94173A4B015C0123966CAD7DAD8EADAB
-:104140009FAD23970F94B6399B01AC01C501B40113
-:104150000F94023F4B015C01C701B6010F94B639C1
-:104160009B01AC01C501B4010F94B13987FF06C0B2
-:10417000C501B4010F947B3F6B017C012F962CADE0
-:104180003DAD4EAD5FAD2F97232B242B252B09F48E
-:104190000ACB6091CA057091CB058091CC059091B6
-:1041A000CD056C157D058E059F0508F0FCCA0F94A2
-:1041B000B6396B962CAD3DAD4EAD5FAD6B970F94A0
-:1041C000173A4B015C012F966CAD7DAD8EAD9FAD66
-:1041D0002F970F94B6399B01AC01C501B4010F9420
-:1041E000023F4B015C01C701B6010F94B6399B0138
-:1041F000AC01C501B4010F94B13987FFD4CAC50120
-:10420000B401A4C5A301920163966CAD7DAD8EADE2
-:104210009FAD63970F94173A698B7A8B8B8B9C8B2E
-:10422000A301920167966CAD7DAD8EAD9FAD679792
-:104230000F94173A6D8B7E8B8F8B988FA301920111
-:104240006F966CAD7DAD8EAD9FAD6F970F94173AA5
-:10425000698F7A8F8B8F9C8FA30192015DCB2B96F8
-:10426000CCAEDDAEEEAEFFAE2B9717CD2FEE3FEF0F
-:104270004FE75FEB69AD7AAD8BAD9CAD0F94B13973
-:1042800087FF08C02FEE3FEF4FE75FEB29AF3AAF54
-:104290004BAF5CAF29AD3AAD4BAD5CAD60E070E0CB
-:1042A00080E89FE30F94073E20E030E040E05FE3CA
-:1042B0000F94173A0F94B6406B017C012091FE05D4
-:1042C0003091FF054091000650910106C301B201F3
-:1042D0000F94173AA70196010F94173A4B015C010E
-:1042E000A701960160E070E080E89FE30F94073E2D
-:1042F0009B01AC01C501B4010F94023F1B018C016D
-:104300008DE54BA95CA9849FF001859FF00D1124D8
-:10431000E356F64F85859685A785B0898DAB9EAB14
-:10432000AFABB8AF20E030E040E85FE3BC01CD01C7
-:104330000F94B13987FF01CD23EF34E045E35FEB04
-:1043400069AD7AAD8BAD9CAD0F94B13987FFF5CCDB
-:1043500020E030E0A90169AD7AAD8BAD9CAD0F9442
-:10436000B139C12CD12C60E8E62E6FEBF62E87FD1B
-:1043700006C0C12CD12C50E8E52E5FE3F52EA70135
-:10438000960169AD7AAD8BAD9CAD0F94173A4B0198
-:104390005C0129E539ED40E053E30F94B13987FD25
-:1043A00063C0A501940160E070E080E89FE30F9492
-:1043B000073E20E030E040E057E40F94173A0F94B6
-:1043C0007B3FCB010F9464410197880F991F880FA1
-:1043D000991FFC01E550F84E259135914591549176
-:1043E000FC01E554F84E85919591A591B49189AF62
-:1043F0009AAFABAFBCAFC501B4010F94173A29AD6A
-:104400003AAD4BAD5CAD0F94083E4B015C0120E032
-:1044100030E0A901C701B6010F946840181654F4A2
-:10442000A50194016BED7FE089E490E40F94073ED1
-:104430004B015C01A30192016DA97EA98FA998ADE2
-:104440000F94173AA50194010F94023F6B017C0170
-:104450009B01AC01B101C8010F94684018160CF023
-:104460006CCC1601870169CC90E080E0AECF2BE0E8
-:10447000222E37ED332E03E21BE35FCCC12CD12C6F
-:10448000E12CF12C8ECCCBA8DCA85DCDC114D104DD
-:1044900009F45CC0F601C580D680E780F084BDE5F4
-:1044A000B89DF001B99DF00D1124E356F64F8081BF
-:1044B00081FD28C0618972898389948990589B0104
-:1044C000AC010F94083EEBA9FCA9258536854785EC
-:1044D00050890F94173A9B01AC01C701B6010F94A4
-:1044E000073E6B018DAF99AF9B01AC016B2D702F17
-:1044F0008A2D932D0F94B13987FD04C0BC2C0D2D4E
-:10450000ADAC39AC2B2D302F4A2D532DC301B20148
-:104510000F94B139882309F44FCDFDE5F89DC00112
-:10452000F99D900D11249C012356364F6901D90144
-:104530008C9181608C938BA99CA90E9481708823A7
-:1045400019F1F60180818E7F808336CDAA96AEADBB
-:10455000BFADAA971896CD90DD90ED90FC901B977B
-:104560002BE037ED43E25BE3C701B6010F946840EF
-:1045700018160CF494CF9BE0C92E97EDD92E93E238
-:10458000E92E9BE3F92E8BCF8B2D902FAA2DB32DE7
-:10459000F60185839683A783B0870ECDDCAACBAACC
-:1045A0000BCD10910816F12CE12C0DE58091091628
-:1045B000811709F490C0812E912C109FC001112405
-:1045C0009C012356364F3CAB2BABC9010E946A724B
-:1045D000882309F47DC0E114F10409F46AC0C7011D
-:1045E0000E948170811165C0D7018C9181FD4CC002
-:1045F000089DC001099D900D1124AC014356564FF2
-:104600001A01DA0115964D905D906D907C90189787
-:10461000F701A580B680C780D084A3019201C601AE
-:10462000B5010F94B13987FF2FC0D70151966D9115
-:104630007D918D919C91549790589B01AC010F9462
-:10464000083EF70125853685478550890F94173A2E
-:104650009B01AC01C601B5010F94073E6B017C01C3
-:10466000A30192010F94B13987FF0EC0D1018C9143
-:1046700081608C938BA99CA90E9481708823F1F0A2
-:10468000F10180818E7F8083089DF001099DF00DEE
-:104690001124E356F64F2185328543855485658183
-:1046A0007681878190850F94B139811102C0109372
-:1046B00008161F5F1F70EBA8FCA878CFD1011596D4
-:1046C000CD92DD92ED92FC92189710930816DCCFF4
-:1046D000FCAAEBAAEECFF0900A16E09009160DE5C1
-:1046E000FE1409F480C01FEF1E0D1F70109FC00143
-:1046F00011248356964F0E946A72882309F471C070
-:10470000A12CB12C1BAA1DAE10E000E0FE1409F490
-:1047100071C0BDE5FB9EC0011124FC01E356F64FBC
-:104720006F01CF010E946A72882309F45EC0D6012E
-:1047300015966D917D918D919C9118970F94B6402F
-:104740003B014C010115110509F442C0F6018081BD
-:1047500080FF04C0D8018C9181608C93F801808126
-:1047600080FF36C0C8010E94817081112DC0D80120
-:1047700011962D913D914D915C91149760E070E000
-:1047800080E89FE30F94023F1B012C01AC019B01C9
-:10479000B301C4010F94173A69837A838B839C8396
-:1047A00095014BA95DADC201B1010F94173A698B18
-:1047B0007A8B8B8B9C8BAE014F5F5F4FBE016F5E20
-:1047C0007F4FC8010E944C77F80180818E7F8083E3
-:1047D000F394FF2DFF70FF2E53018BAA9DAE86012F
-:1047E00095CFE12E7DCFEF2C8BCF35018BA89DACE3
-:1047F0006801EECF0115110509F456C0AA96AEADB9
-:10480000BFADAA9718966D917D918D919C911B9744
-:104810000F94B6406B017C012DEC3CEC4CE45DE365
-:104820000F946840181644F08DECC82E8CECD82EEE
-:104830008CE4E82E8DE3F82EF8018081816080837E
-:10484000C8010E94817081112BC0D80111962D9151
-:104850003D914D915C91149760E070E080E89FE39A
-:104860000F94023F2B013C01A70196010F94173AC8
-:1048700069837A838B839C83A3019201B5018BA901
-:104880009DAD0F94173A698B7A8B8B8B9C8BAE0105
-:104890004F5F5F4FBE016F5E7F4FC8010E944C7734
-:1048A000F80180818E7F80830E94499581E0C05805
-:1048B000DF4F0FB6F894DEBF0FBECDBFDF91CF91B3
-:1048C0001F910F91FF90EF90DF90CF90BF90AF902E
-:1048D0009F908F907F906F905F904F903F902F9020
-:1048E000089580E0E4CFE0909909F0909A09009152
-:1048F0009B0910919C099701A80168966FAD689774
-:104900002C967FAD2C97A0968FADA097932D0F94EA
-:10491000B13987FD0AC06896EFAC68972C96FFAC5A
-:104920002C97A0960FADA097132D8DE5ABA9BCA930
-:104930008A9FF0018B9FF00D1124E356F64F2585D9
-:1049400036854785508960E070E080E89FE30F94EA
-:10495000023F2B013C019701A8010F94173A6B010C
-:104960007C018091091690910716891B8F70A09683
-:104970008FAFA097A701960160E074E284E799E405
-:104980000F94023F0F9475404B015C01A0968FADD0
-:10499000A09782508630B0F56091650970916609E4
-:1049A0008091670990916809681979098A099B09BA
-:1049B00016161706180619062CF5660F771F881F9E
-:1049C000991FA096BFADA0972B2F30E050E040E09C
-:1049D0000F94C63DCA01B9010F94B8390F94743FC2
-:1049E000860E971EA81EB91EC501B4010F94B839D2
-:1049F0009B01AC0160E074E284E799E40F94023F0C
-:104A00006B017C010E943C954091CE055091CF05F1
-:104A10006091D0057091D105480D591D6A1D7B1D0F
-:104A20004093CE055093CF056093D0057093D10588
-:104A30009DE52BA93CA9929FF001939FF00D1124B5
-:104A4000EA50F64F80829182A282B38281110E9445
-:104A500049958DE54BA95CA9849F8001859F100D28
-:104A600011240356164FD8011D962D913D914D915D
-:104A70005C915097C701B6010F94173AA4966CAF9A
-:104A80007DAF8EAF9FAFA497F8016183728383835C
-:104A9000948325A136A147A150A527962CAF3DAF01
-:104AA0004EAF5FAF2797CA01B9010F94B6396B9625
-:104AB0006CAF7DAF8EAF9FAF6B979B01AC01C70111
-:104AC000B6010F94173A0F94E63E0F947B3FAE96D3
-:104AD0006CAF7DAF8EAF9FAFAE97F801E95BFF4F34
-:104AE0006083718382839383FE01B1962D96FFAF1D
-:104AF000EEAF2D9729E739E0E4963FAF2EAFE4976C
-:104B0000AE01435D5F4F5AAB49AB212C312C50E8CD
-:104B10005DAB8FE38FAF2D96AEADBFAD2D972D91D1
-:104B20003D914D915D912D96BFAFAEAF2D97C701D1
-:104B3000B6010F94173A4B015C0120E030E0A90167
-:104B40000F94684087FF04C0B7FAB094B7F8B094E8
-:104B5000E496AEADBFADE4972D913D914D915D9141
-:104B6000E496BFAFAEAFE497E2962CAF3DAF4EAF49
-:104B70005FAFE297A5019401E2966CAD7DAD8EAD7D
-:104B80009FADE2970F94B13987FF16C0A50194013C
-:104B9000E2966CAD7DAD8EAD9FADE2970F94023F76
-:104BA0005B018C0191014DA95FAD0F94B13987FF75
-:104BB00003C015010DAB1FAFE9A9FAA92D962EADC3
-:104BC0003FAD2D97E217F30709F0A5CFA701960196
-:104BD00069AD7AAD8BAD9CAD0F94173A6B017C013A
-:104BE00020E030E0A9010F94684087FF04C0F7FA85
-:104BF000F094F7F8F0948090850990908609A09041
-:104C00008709B0908809A7019601C501B4010F94E6
-:104C1000B13987FF12C0A7019601C501B4010F94F5
-:104C2000023F7B018C0191014DA95FAD0F94B13919
-:104C300087FF03C017010DAB1FAF20E030E040E855
-:104C40005FE3B1018DA99FAD0F94B13987FF33C0E8
-:104C50008DE54BA95CA9849F8001859F100D1124CF
-:104C60000356164F780157E4E50EF11CAE966CAD75
-:104C70007DAD8EAD9FADAE970F94B63991014DA924
-:104C80005FAD0F94173A0F947B3FD7016D937D93DF
-:104C90008D939C93139791014DA95FADA4966CAD34
-:104CA0007DAD8EAD9FADA4970F94173AF801618347
-:104CB0007283838394836B962CAD3DAD4EAD5FAD17
-:104CC0006B97C301B2010F94173AA4966CAF7DAFF6
-:104CD0008EAF9FAFA4978DE52BA93CA9829FF001D1
-:104CE000839FF00D1124E356F64F85889688A78898
-:104CF000B08C81149104A104B10411F00C94DB9ADE
-:104D0000818D928DA38DB48D892B8A2B8B2B11F0E5
-:104D10000C94DB9A858D968DA78DB0A1892B8A2B5B
-:104D20008B2B11F00C94DB9A20918D0930918E0918
-:104D300040918F0950919009A4966CAD7DAD8EADD8
-:104D40009FADA4970F94173A0F94E63E0F947B3FC4
-:104D50006B017C010C94D39BCF93DF93CDB7DEB76F
-:104D600060970FB6F894DEBF0FBECDBFFC0190E197
-:104D7000DE01119601900D929A95E1F780914C0910
-:104D800090914D09892B69F4CE0101960E94D69627
-:104D900060960FB6F894DEBF0FBECDBFDF91CF9106
-:104DA000089580E0F5CFCF93DF93CDB7DEB72C9792
-:104DB0000FB6F894DEBF0FBECDBF19821A821B82D8
-:104DC0001C821D821E821F82188619861A861B86E7
-:104DD0001C869E012F5F3F4F40915109BC0186E721
-:104DE00092E00E94ACA62C960FB6F894DEBF0FBEE0
-:104DF000CDBFDF91CF9108954F925F926F927F92D6
-:104E00008F929F92AF92BF92CF92DF92EF92FF92DA
-:104E10000F931F93CF93DF93CDB7DEB72C970FB6C9
-:104E2000F894DEBF0FBECDBF2B013C0129873A8726
-:104E30004B875C8747015801F601E080F1800281D1
-:104E4000138120E030E0A901B701C8010F94B13906
-:104E5000882309F484C05E2D4F2D302F212F852FFC
-:104E6000942FA32FB22F89839A83AB83BC8320E036
-:104E700030E0A901B701C8010F94B139811104C014
-:104E8000E12CF12C00E810E4C701D8018D839E834A
-:104E9000AF83B887A501940160917E0270917F0273
-:104EA00080918002909181020F94B13987FF0CC0EC
-:104EB00080927E0290927F02A0928002B092810244
-:104EC000CE0105960E94D3A64092760250927702B8
-:104ED000609278027092790289859A85AB85BC854B
-:104EE00080937A0290937B02A0937C02B0937D0220
-:104EF000CE0101960E94D3A6A501940160917E0285
-:104F000070917F0280918002909181020F9468409D
-:104F1000181664F480927E0290927F02A092800222
-:104F2000B0928102CE0105960E94D3A60E947F8F87
-:104F30002C960FB6F894DEBF0FBECDBFDF91CF9198
-:104F40001F910F91FF90EF90DF90CF90BF90AF90A7
-:104F50009F908F907F906F905F904F90089550E05A
-:104F600040E035E023E47BCF0E943C951092CE05D3
-:104F70001092CF051092D0051092D10581110C949A
-:104F8000499508950F931F938091091690910A16E1
-:104F9000891B8F7009F449C090910616992361F01E
-:104FA000833040F48FEF890F29F08093061690E04C
-:104FB00080E038C01092061680910A162DE5829F77
-:104FC000C00111248356964FFC01208120FDEFCFB4
-:104FD0004091CE055091CF056091D0057091D105DB
-:104FE000E75AFF4F0081118122813381401B510B11
-:104FF000620B730B4093CE055093CF056093D005A1
-:105000007093D10520910A162F5F2F7020930716F9
-:1050100030910A1620910816321304C02091071609
-:10502000209308161F910F9108950E94B4A7BFCF37
-:105030002F923F924F925F926F927F928F929F92A8
-:10504000AF92BF92CF92DF92EF92FF920F931F9396
-:10505000CF93DF93CDB7DEB765970FB6F894DEBF79
-:105060000FBECDBF8FEF9FEF909389008093880094
-:105070000AE00983712C612C789480919C079091AF
-:105080009D07A0919E07B0919F07892B8A2B8B2BA0
-:1050900009F0EFC18091A2078823D1F08091A00789
-:1050A0009091A1071092A207892B91F01092A1076D
-:1050B0001092A007109293079091091680910A16FA
-:1050C000981731F080910A168F5F8F7080930A16BF
-:1050D0008091A0079091A107892B09F4CAC1409142
-:1050E00098075091990760919A0770919B0780915A
-:1050F000940790919507A0919607B091970700911A
-:105100008A0710E030E020E0841B950BA60BB70B5C
-:10511000081719072A073B0710F4D901C801E82F1F
-:10512000840F951FA61FB71F809398079093990728
-:10513000A0939A07B0939B07F1E0409161075091CB
-:105140006207609163077091640780917107909185
-:105150007207A0917307B0917407840F951FA61F63
-:10516000B71F8093710790937207A0937307B09352
-:1051700074071C012D0120943094409450942224F3
-:1051800057FC23943324442455242A82B7FD2FC08E
-:1051900000915807002E000C110B220B330B40918D
-:1051A000AF075091B0076091B1077091B207400FFF
-:1051B000511F621F731F4093AF075093B007609356
-:1051C000B1077093B20740915D0750915E076091FF
-:1051D0005F0770916007841B950BA60BB70B80933C
-:1051E000710790937207A0937307B093740740916F
-:1051F0006507509166076091670770916807809115
-:10520000750790917607A0917707B0917807840F82
-:10521000951FA61FB71F8093750790937607A093DD
-:105220007707B09378078C019D0100951095209524
-:105230003095002737FD03951127222733270C8B44
-:10524000B7FD2FC0C09059070C2C000CDD08EE08EC
-:10525000FF084091B3075091B4076091B507709172
-:10526000B6074C0D5D1D6E1D7F1D4093B307509317
-:10527000B4076093B5077093B60740915D075091EE
-:105280005E0760915F0770916007841B950BA60B0A
-:10529000B70B8093750790937607A0937707B09329
-:1052A00078074091690750916A0760916B07709188
-:1052B0006C078091790790917A07A0917B07B09154
-:1052C0007C07840F951FA61FB71F809379079093C3
-:1052D0007A07A0937B07B0937C07AC01BD01409592
-:1052E000509560957095442777FD4395552766271F
-:1052F00077274B8BB7FD2FC080905A07082C000CE6
-:105300009908AA08BB08C090B707D090B807E090EA
-:10531000B907F090BA07C80CD91CEA1CFB1CC09254
-:10532000B707D092B807E092B907F092BA07C090D9
-:105330005D07D0905E07E0905F07F09060078C19E2
-:105340009D09AE09BF098093790790937A07A093CE
-:105350007B07B0937C07C0906D07D0906E07E090FC
-:105360006F07F090700780917D0790917E07A09164
-:105370007F07B09180078C0D9D1DAE1DBF1D8093D2
-:105380007D0790937E07A0937F07B0938007B7FDBA
-:10539000F2C080905B07082C000C9908AA08BB0893
-:1053A000C090BB07D090BC07E090BD07F090BE074F
-:1053B000C80CD91CEA1CFB1CC092BB07D092BC07CE
-:1053C000E092BD07F092BE07C0905D07D0905E07E7
-:1053D000E0905F07F09060078C199D09AE09BF0946
-:1053E00080937D0790937E07A0937F07B0938007FB
-:1053F000A1E0F11104C080918400909185008A8120
-:105400008111889A9C8991118E9ABB89BB2331F0B6
-:1054100080910B018095887080930901AA2329F05F
-:1054200080915C078111A9C0149A809184009091A9
-:105430008500809184009091850021108898011149
-:105440008E98442329F080910B0188708093090184
-:10545000AA2329F080915C07811191C01498EE2352
-:1054600021F08091840090918500E150F0E009F0F6
-:1054700064CE80919C0790919D07A0919E07B0916A
-:105480009F07892B8A2B8B2B11F00C941EB1E09176
-:10549000A007F091A107FD8BEC8BEF2B11F40C947E
-:1054A00090B18091980790919907A0919A07B09137
-:1054B0009B074091940750919507609196077091D2
-:1054C000970784179507A607B70708F45AC01092E4
-:1054D000A1071092A007109293079091091680914E
-:1054E0000A16981711F40C9490B180910A168F5FE8
-:1054F0008F7080930A1630EDC32E37E0D32EE12C47
-:10550000F12C8091A0079091A107892B11F00C94A8
-:1055100016B10E94C2A79093A1078093A007892B80
-:1055200011F40C9416B1A091A007B091A107BD8B06
-:10553000AC8B9C9193FB882780F993FF0E94E770C6
-:10554000882309F412C58C899D8945960E9478703C
-:105550001092A1071092A00710929307909109163C
-:1055600080910A169817A9F280910A168F5F8F70A2
-:1055700080930A16CECFA0E03CCF419A56CF4198F7
-:105580006ECF40918F075091900760919107709175
-:105590009207481759076A077B0708F40FC2409122
-:1055A0008B0750918C0760918D0770918E07EC8965
-:1055B000FD8986A997A9A0ADB1AD481759076A071B
-:1055C0007B0708F0D1C1411551056105710509F04E
-:1055D00066C08090070690900806A0900906B090DB
-:1055E0000A0683E992E2A1E0FC010591159125915B
-:1055F0003491081519052A053B0558F4B694A7946B
-:1056000097948794AA0F0496EFEAF2E2E817F90755
-:1056100059F7A0938A07F0E28F169104A104B10410
-:1056200028F480E2882E912CA12CB12C00E2801A63
-:105630009108A108B108811428E09206A104B104E0
-:1056400008F49BC134E0939EC00111248D56914E05
-:10565000FC01329625913491A82DEE27A39F80015D
-:10566000A29F010D1E1F06940E1F1E1F112430E065
-:1056700020E0FC01C590D490F12CE12CC01AD10A95
-:10568000E20AF30A4C0D5D1D6E1D7F1D40938B07D2
-:1056900050938C0760938D0770938E0732CF10E084
-:1056A000942F852E862FBD81AE81FF81E8853985B7
-:1056B0002A85FB800C81E0910306E99FA12DFF273D
-:1056C00030910406399FA00DF11D10900506199E1A
-:1056D000F00DE89DA00DF11D389DF00DE89FF00D37
-:1056E0000A2FBF2F0A9FE12D332722270F9FE00D9E
-:1056F000311D211FBA9FE00D311D211FBF9F300DAD
-:10570000211D032FB22F0A9FF12C332722270F9F31
-:10571000F00C311D211FBA9FF00C311D211FBF9FBE
-:10572000300D211D032FB22FEE2790910706809098
-:1057300008068091090600900E08012A09F484C029
-:1057400030910A08309FE119910B810A810B209159
-:105750000B08209FE0199109810A810BF0900C0839
-:10576000F09E90198108810B3B9FE0199109810AF5
-:10577000810B2B9F90198108810BFB9E801881095A
-:105780000A9FF12C332722270F9FF00C311D211F78
-:10579000BA9FF00C311D211FBF9F300D211D032F1B
-:1057A000B22F30910608309FE10D911F811E811F9D
-:1057B00020910708209FE00D911D811E811FF09010
-:1057C0000808F09E900D811C811F3B9FE00D911DEC
-:1057D000811E811F2B9F900D811C811FFB9E800CC1
-:1057E000811D0A9FF12C332722270F9FF00C311DBA
-:1057F000211FBA9FF00C311D211FBF9F300D211DAD
-:10580000032FB22F30910208309FE119910B810ACA
-:10581000810B20910308209FE0199109810A810BD7
-:10582000F0900408F09E90198108810B3B9FE019CD
-:105830009109810A810B2B9F90198108810BFB9E96
-:10584000801881090C94A6AC30910A08309FE10DB4
-:10585000911F811E811F20910B08209FE00D911D3B
-:10586000811E811FF0900C08F09E900D811C811FFD
-:105870003B9FE00D911D811E811F2B9F900D811C70
-:10588000811FFB9E800C811D0A9FF12C332722274C
-:105890000F9FF00C311D211FBA9FF00C311D211FED
-:1058A000BF9F300D211D032FB22F30910608309F6E
-:1058B000E119910B810A810B20910708209FE019C3
-:1058C0009109810A810BF0900808F09E90198108D7
-:1058D000810B3B9FE0199109810A810B2B9F901945
-:1058E0008108810BFB9E801881090A9FF12C3327C8
-:1058F00022270F9FF00C311D211FBA9FF00C311D84
-:10590000211FBF9F300D211D032FB22F30910208A0
-:10591000309FE10D911F811E811F20910308209F60
-:10592000E00D911D811E811FF0900408F09E900DE6
-:10593000811C811F3B9FE00D911D811E811F2B9FAC
-:10594000900D811C811FFB9E800C811D11240C83F6
-:10595000FB82BD83AE83FF83E88739872A87982C33
-:10596000892EB12CA82E3DCEAC89BD89D2968D90C2
-:105970009D90AD90BC90D59734CED501C401B6951D
-:10598000A795979587958C7F8D56954EFC01C59070
-:10599000D490FC01329625913491B82DB770B29F06
-:1059A000C001B39F900D112403E0969587950A9549
-:1059B000E1F7C81AD90AF12CE12C64CE4091860790
-:1059C0005091870760918807709189074817590798
-:1059D0006A077B0708F031C28090810790908207A8
-:1059E000A0908307B090840780918507EC89FD899A
-:1059F00081117CC0EE5BFF4FE080F180028113815A
-:105A0000EC89FD89E15BFF4F208131814281538127
-:105A1000EC89FD8962A973A984A995A90E94957052
-:105A2000F1E0F0938507AC89BD89D2964D915D91E7
-:105A30006D917C91D59783E992E2A1E0FC010591FB
-:105A4000159125913491041715072607370758F447
-:105A50007695679557954795AA0F0496EFEAF2E277
-:105A6000E817F90759F7A0938A07403251056105F5
-:105A7000710520F440E250E060E070E040525109CE
-:105A8000610971094115F8E05F076105710508F4C6
-:105A9000B4C104E0509FC00111248D56914EFC0109
-:105AA000329625913491AA27439FF001429FE10D40
-:105AB000FA1F0694EA1FFA1F1124AF0170E060E09C
-:105AC000FC01C590D490F12CE12CC41AD50AE60A49
-:105AD000F70A8C0C9D1CAE1CBF1C80928107909213
-:105AE0008207A0928307B09284070BCD82AD93AD5D
-:105AF000A4ADB5AD88169906AA06BB0608F073C119
-:105B000081149104A104B10449F440910706509115
-:105B100008066091090670910A068DCFA0E0FB850A
-:105B2000982D492D8A2DEC857D856E85BF855889F8
-:105B300039892A8950910306599F612DBB273091DD
-:105B40000406399F600DB11D10900506199EB00D19
-:105B5000549F600DB11D349FB00D589FB00DE62FBE
-:105B60007B2FE69F512D33272227EB9F500D311DB0
-:105B70002A1F769F500D311D2A1F7B9F300D211D3E
-:105B8000E32F722FE69FF12D33272227EB9FF00D95
-:105B9000311D2A1F769FF00D311D2A1F7B9F300D6E
-:105BA000211DE32F722F552790910706409108067B
-:105BB0008091090600900E080A2A09F484C03091E9
-:105BC0000A083E9F51199A0B4A0B8A0B20910B0829
-:105BD0002E9F501991094A0B8A0BF0910C08FE9FD9
-:105BE000901941098A0B379F501991094A0B8A0B6A
-:105BF000279F901941098A0BF79F40198109E69F59
-:105C0000F12D33272227EB9FF00D311D2A1F769FA0
-:105C1000F00D311D2A1F7B9F300D211DE32F722FA8
-:105C2000309106083E9F510D9A1F4A1F8A1F2091EE
-:105C300007082E9F500D911D4A1F8A1FF0910808DA
-:105C4000FE9F900D411D8A1F379F500D911D4A1FC9
-:105C50008A1F279F900D411D8A1FF79F400D811DB0
-:105C6000E69FF12D33272227EB9FF00D311D2A1FD0
-:105C7000769FF00D311D2A1F7B9F300D211DE32FD4
-:105C8000722F309102083E9F51199A0B4A0B8A0BD2
-:105C9000209103082E9F501991094A0B8A0BF0910D
-:105CA0000408FE9F901941098A0B379F50199109EA
-:105CB0004A0B8A0B279F901941098A0BF79F4019BD
-:105CC00081090C94E5AE30910A083E9F510D9A1F50
-:105CD0004A1F8A1F20910B082E9F500D911D4A1FAD
-:105CE0008A1FF0910C08FE9F900D411D8A1F379F5F
-:105CF000500D911D4A1F8A1F279F900D411D8A1F1D
-:105D0000F79F400D811DE69FF12D33272227EB9F42
-:105D1000F00D311D2A1F769FF00D311D2A1F7B9F2C
-:105D2000300D211DE32F722F309106083E9F51192F
-:105D30009A0B4A0B8A0B209107082E9F5019910944
-:105D40004A0B8A0BF0910808FE9F901941098A0BB3
-:105D5000379F501991094A0B8A0B279F90194109C7
-:105D60008A0BF79F40198109E69FF12D33272227DF
-:105D7000EB9FF00D311D2A1F769FF00D311D2A1F5C
-:105D80007B9F300D211DE32F722F309102083E9F23
-:105D9000510D9A1F4A1F8A1F209103082E9F500DF4
-:105DA000911D4A1F8A1FF0910408FE9F900D411D0E
-:105DB0008A1F379F500D911D4A1F8A1F279F900DE4
-:105DC000411D8A1FF79F400D811D1124FB87EC8721
-:105DD0007D876E87BF87588B398B2A8B542F492F2D
-:105DE00070E0682F28CE2C893D89215B3F4FD90177
-:105DF0004D915D916D917C911ECEDB01CA01B695EE
-:105E0000A795979587958C7F8D56954EFC01C590EB
-:105E1000D490FC013296259134914770429FC00185
-:105E2000439F900D1124F3E096958795FA95E1F73D
-:105E3000C81AD90AF12CE12C4CCE809130029091F5
-:105E40003102A0913202B0913302B7FF62C02C89B7
-:105E50003D89295B3F4FD901CD90DD90ED90FC90BD
-:105E600083E992E221E0FC0145915591659174919D
-:105E70004C155D056E057F0558F4F694E794D794AC
-:105E8000C794220F0496EFEAF2E2E817F90759F7F0
-:105E900020938A07F0E2CF16D104E104F10428F43C
-:105EA00060E2C62ED12CE12CF12C00E2C01AD10800
-:105EB000E108F108C11428E0D206E104F10408F475
-:105EC00031C034E0D39EC00111248D56914EFC01A7
-:105ED0003296259134917C2D6627739FA001729F85
-:105EE000410D561F0694461F561F112470E060E0B6
-:105EF000FC0185919491B0E0A0E0841B950BA60B6A
-:105F0000B70B8093300290933102A0933202B0938A
-:105F10003302C0903002D0903102E0903202F09013
-:105F20003302EFCAD701C601B695A7959795879515
-:105F30008C7F8D56954EFC0125913491FC01329653
-:105F4000459154918C2D8770C82EC49EC001C59E6A
-:105F5000900D112453E0969587955A95E1F7281BEB
-:105F6000390BC901B0E0A0E0CCCFEC89FD89C58830
-:105F7000D688E788F08C81E0C114D104E104F104F3
-:105F800009F480E0AC89BD8959960D911D912D9140
-:105F90003C915C97011511052105310509F08260DE
-:105FA000EC89FD89458D568D678D70A14115510590
-:105FB0006105710509F08460809393071092810751
-:105FC00010928207109283071092840710928B0719
-:105FD00010928C0710928D0710928E07EC89FD8924
-:105FE00085A196A1A7A1B0A580939407909395074A
-:105FF000A0939607B0939707882499245401881A90
-:10600000990AAA0ABB0A8092710790927207A0921D
-:106010007307B09274078092750790927607A092EA
-:106020007707B09278078092790790927A07A092CA
-:106030007B07B0927C0780927D0790927E07A092AA
-:106040007F07B092800781A092A0A3A0B4A0880C83
-:10605000991CAA1CBB1CCC0CDD1CEE1CFF1CC092A6
-:106060006107D0926207E0926307F0926407000F25
-:10607000111F221F331F009365071093660720939B
-:10608000670730936807440F551F661F771F4093BB
-:10609000690750936A0760936B0770936C0780924F
-:1060A0006D0790926E07A0926F07B0927007880FED
-:1060B000991FAA1FBB1F80935D0790935E07A09353
-:1060C0005F07B0936007109298071092990710929B
-:1060D0009A0710929B0782A593A5A4A5B5A58093C6
-:1060E0008F0790939007A0939107B093920786A58E
-:1060F00097A5A0A9B1A98093860790938707A0933D
-:106100008807B093890781A580935C07EA5BFF4FFE
-:1061100090812091E508921304C020912F028217EC
-:1061200031F080932F029093E5080E945A88809165
-:10613000E30881110E946F952FEF3FEFA901209393
-:106140003002309331024093320250933302EC8993
-:10615000FD89FE96E080F18002811381AC89BD89C2
-:10616000D2962D913D914D915C91D597A55BBF4FF6
-:10617000BD8BAC8B6D917D918D919C910E949570A2
-:1061800010928507EC89FD8940815181628173817C
-:1061900083E992E2A1E0FC010591159125913491EA
-:1061A000041715072607370758F47695679557950E
-:1061B0004795AA0F04962FEA32E22817390759F7B4
-:1061C000A0938A07403251056105710520F440E231
-:1061D00050E060E070E040525109610971094115D9
-:1061E00038E053076105710508F478C0A4E05A9FB0
-:1061F000C00111248D56914EFC01329625913491A7
-:10620000AA27439FF001429FE10DFA1F0694EA1F5F
-:10621000FA1F1124AF0170E060E0FC01C590D4903A
-:10622000F12CE12CC41AD50AE60AF70AC0929C07A1
-:10623000D0929D07E0929E07F0929F0780919C0765
-:1062400090919D07A0919E07B0919F07AC01BD0161
-:106250000097E1E0AE07B10520F04FEF5FEF60E09F
-:1062600070E0841B950BA60BB70B80939C07909353
-:106270009D07A0939E07B0939F07F8948091840098
-:10628000909185004096F981F150F983FF2309F43C
-:1062900045C0640E751E6816790610F40C943CA86F
-:1062A0007092890060928800789465960FB6F89491
-:1062B000DEBF0FBECDBFDF91CF911F910F91FF9039
-:1062C000EF90DF90CF90BF90AF909F908F907F9096
-:1062D0006F905F904F903F902F900895DB01CA011F
-:1062E000B695A795979587958C7F8D56954EFC0111
-:1062F000C590D490FC013296259134914770429F0D
-:10630000C001439F900D112433E0969587953A95EF
-:10631000E1F7C81AD90AF12CE12C88CF3C01C0CF93
-:1063200080EDC82E87E0D82EE12CF12C0C9489AAA0
-:10633000FC01208131814281538160917509709106
-:10634000760980917709909178090F94173A0F9404
-:10635000754060932B1670932C1680932D16909396
-:106360002E169091091680910A1698130D9481119A
-:106370000E947F8F0E943C9540912B1650912C16C5
-:1063800060912D1670912E164093BB075093BC0759
-:106390006093BD077093BE0781110C9449950895D1
-:1063A0004F925F926F927F928F929F92AF92BF9225
-:1063B000CF92DF92EF92FF92CF93DF93EC01209187
-:1063C00075093091760940917709509178096C856B
-:1063D0007D858E859F850F94173A0F9475406B01CC
-:1063E0007C0120917109309172094091730950919B
-:1063F0007409688579858A859B850F94173A0F946F
-:1064000075404B015C0120916D0930916E094091FE
-:106410006F09509170096C817D818E819F810F94ED
-:10642000173A0F9475402B013C0120916909309176
-:106430006A0940916B0950916C09688179818A8160
-:106440009B810F94173A0F94754060931F167093B9
-:106450002016809321169093221640922316509274
-:106460002416609225167092261680922716909216
-:106470002816A0922916B0922A16C0922B16D092F6
-:106480002C16E0922D16F0922E16909109168091FE
-:106490000A16981781F0DF91CF91FF90EF90DF906F
-:1064A000CF90BF90AF909F908F907F906F905F90B4
-:1064B0004F900D9481110E947F8F0E943C95C82FB0
-:1064C0008FE196E10E947870CC2381F0DF91CF912B
-:1064D000FF90EF90DF90CF90BF90AF909F908F9004
-:1064E0007F906F905F904F900C944995DF91CF9182
-:1064F000FF90EF90DF90CF90BF90AF909F908F90E4
-:106500007F906F905F904F900895CF92DF92EF92BF
-:10651000FF92CF93DF93C82F0E943C9594E0C99FD0
-:10652000E0011124FE01E155F84FC080D180E280E6
-:10653000F38081110E944995C55DD84FC701B6010E
-:106540000F94B839288139814A815B810F94173AB9
-:10655000DF91CF91FF90EF90DF90CF900895CF9291
-:10656000DF92EF92FF92CF93DF93C82F0E943C956A
-:1065700094E0C99FE0011124FE01ED55F84FC08061
-:10658000D180E280F38081110E944995C55DD84F8A
-:10659000C701B6010F94B839288139814A815B81DE
-:1065A0000F94173ADF91CF91FF90EF90DF90CF904B
-:1065B0000895FC017081472F50E0062E02C05595CA
-:1065C00047950A94E2F740FF14C04091010850E05B
-:1065D000062E02C0559547950A94E2F740FF09C080
-:1065E00021E030E001C0220F6A95EAF720952723C9
-:1065F00020830895CF93DF9324E0829FC00111246C
-:10660000EC01C359D04FFC01EA51F74F86559A4F20
-:10661000DC012D913D914D915C9160817181828170
-:1066200093810F94083E688379838A839B83DF91EB
-:10663000CF9108958F929F92AF92BF92CF92DF92A7
-:10664000EF92FF92CF93DF9320913702222309F438
-:106650008EC0EC0180910108E82E80FF2CC0809054
-:10666000390290903A02A0903B02B0903C022881FF
-:1066700039814A815B81C501B4010F9468401816C5
-:1066800024F488829982AA82BB82809045029090ED
-:106690004602A0904702B0904802288139814A8181
-:1066A0005B81C501B4010F94B13987FF04C08882B2
-:1066B0009982AA82BB82E1FE2CC080903D0290901C
-:1066C0003E02A0903F02B09040022C813D814E815D
-:1066D0005F81C501B4010F946840181624F48C82C0
-:1066E0009D82AE82BF828090490290904A02A09023
-:1066F0004B02B0904C022C813D814E815F81C501DF
-:10670000B4010F94B13987FF04C08C829D82AE82A0
-:10671000BF82E2FE2CC0C0904102D0904202E090C5
-:106720004302F0904402288539854A855B85C7017C
-:10673000B6010F946840181624F4C886D986EA86F4
-:10674000FB86C0904D02D0904E02E0904F02F09038
-:106750005002288539854A855B85C701B6010F94AB
-:10676000B13987FF04C0C886D986EA86FB86DF91E7
-:10677000CF91FF90EF90DF90CF90BF90AF909F9020
-:106780008F900895CF92DF92EF92FF921F93CF9355
-:10679000DF93CDB7DEB760970FB6F894DEBF0FBEBC
-:1067A000CDBF8AE896E00E941AB38091D40583FD9C
-:1067B00076C02091820230918302409184025091F0
-:1067C0008502609196067091970680919806909147
-:1067D00099060F94B139882309F461C08091510959
-:1067E0000E940CCD182F882331F00E940FD88BE91E
-:1067F00094E10E94ACCE20918202309183024091BC
-:10680000840250918502609196067091970680915E
-:106810009806909199060F94073E6B017C0120E049
-:1068200030E0A9010F94684087FF04C0F7FAF094A4
-:10683000F7F8F094E091510984E0E89FF001112409
-:10684000EA5DFD4F2081318142815381C701B6014C
-:106850000F94173A20E030E048E453E40F94684086
-:106860001816DCF40E940FD88CE794E10E94ACCE9D
-:106870008091960690919706A0919806B0919906FE
-:106880008093820290938302A0938402B093850246
-:1068900086E996E00E9498B102C01111E9CF2AE082
-:1068A00037ED43E25CE360915102709152028091B6
-:1068B0005302909154020F94173A6B017C0160913E
-:1068C000200270912102072E000C880B990B0F9467
-:1068D000B8399B01AC01C701B6010F94173A6D8717
-:1068E0007E878F87988B19821A821B821C821D8259
-:1068F0001E821F82188619861A861B861C869E0198
-:106900002F5F3F4F40915109BE01635F7F4F8AE87F
-:1069100096E00E94ACA680E1EAE8F6E0A6E7B2E0E5
-:1069200001900D928A95E1F760960FB6F894DEBF5C
-:106930000FBECDBFDF91CF911F91FF90EF90DF9001
-:10694000CF900895CF92DF92EF92FF920F931F9313
-:106950006A01E0907E02F0907F0200918002109127
-:106960008102FB012081318142815381FC016081E0
-:106970007181828193810E94FCA61F910F91FF90EB
-:10698000EF90DF90CF900895CF92DF92EF92FF9239
-:106990000F931F936B01FC01E080F1800281138152
-:1069A000E6E7F2E02481358146815781608171817B
-:1069B000828193810E94FCA61F910F91FF90EF901E
-:1069C000DF90CF9008958F929F92AF92BF92CF9217
-:1069D000DF92EF92FF92CF93DF93809051029090DD
-:1069E0005202A0905302B0905402FC01C080D180AA
-:1069F000E280F38020E030E0A901C701B6010F94E6
-:106A0000B139882341F0C0925102D0925202E092F3
-:106A10005302F0925402C0912002D091210284E6E8
-:106A200090E09093210280932002E091510984E04C
-:106A3000E89FF0011124EA5DFD4FC080D180E28023
-:106A4000F38080E090E0A0E8BFE380839183A2839D
-:106A5000B3830E94C2B38092510290925202A092DC
-:106A60005302B0925402D0932102C0932002E091CD
-:106A7000510984E0E89FF0011124EA5DFD4FC082D6
-:106A8000D182E282F382DF91CF91FF90EF90DF908D
-:106A9000CF90BF90AF909F908F9008950F931F93CA
-:106AA000CF93DF938B01C6E7D2E0E091510924E058
-:106AB000E29FF0011124EA5DFD4F20813181428186
-:106AC0005381FC0160817181828193810F94023F27
-:106AD0002C853D854E855F850F94083E6C877D87AC
-:106AE0008E879F87C8010E94D3A6DF91CF911F9107
-:106AF0000F910C947F8F0D94BA114F925F926F9209
-:106B00007F928F929F92AF92BF92CF92DF92EF923D
-:106B1000FF920F931F93CF93DF93CDB7DEB72C97E0
-:106B20000FB6F894DEBF0FBECDBF182F062F0E9400
-:106B30007F8F123048F10E940FD884E50E949FCECB
-:106B4000612F70E090E080E00F94C00D80E20E9421
-:106B50009FCE86E793E20E94ACCE2C960FB6F894B7
-:106B6000DEBF0FBECDBFDF91CF911F910F91FF9080
-:106B7000EF90DF90CF90BF90AF909F908F907F90DD
-:106B80006F905F904F900895011108C080910108A7
-:106B90008770873009F032C10E94446BF090510930
-:106BA0001F1509F422C180E1E6E7F2E0AAE8B6E0A9
-:106BB00001900D928A95E1F7209151023091520295
-:106BC000409153025091540229873A874B875C8742
-:106BD00080E090E0A5E0B3E48093510290935202EC
-:106BE000A0935302B0935402412F6F2D80E00E9476
-:106BF0007872412F6F2D81E00E947872412F6F2DA6
-:106C000082E00E947872011146C020918606309180
-:106C10008706409188065091890660917E027091A6
-:106C20007F0280918002909181020F94083E6093D0
-:106C30007E0270937F028093800290938102809005
-:106C40004D0290904E02A0904F02B0905002A501CC
-:106C500094010F946840181644F480927E0290923A
-:106C60007F02A0928002B092810220E030E040E0FA
-:106C70005FE360918109709182098091830990910D
-:106C800084090F94173A69837A838B839C83CE019E
-:106C900001960E94D3A68CE0189F90011124A901AF
-:106CA0004259594F6A018F9DC0011124DC01A2593C
-:106CB000B94F7D012D913D914D915C91F60160811F
-:106CC0007181828193810F94073E2B013C01D70192
-:106CD00014962D913D914D915C911797F601648129
-:106CE0007581868197810F94073E4B015C01D70126
-:106CF00018962D913D914D915C911B97F601608501
-:106D00007185828593850F94073E6B017C011093FA
-:106D10005109A301920160917602709177028091EE
-:106D20007802909179020F94083E609376027093F6
-:106D300077028093780290937902A5019401609183
-:106D40007A0270917B0280917C0290917D020F9477
-:106D5000083E60937A0270937B0280937C0290934A
-:106D60007D02A701960160917E0270917F02809161
-:106D70008002909181020F94083E60937E0270938E
-:106D80007F0280938002909381020E947BB5011163
-:106D900020C0809135098330E0F08AE896E00E94B7
-:106DA0001AB388E0EAE8F6E0DE01119601900D9250
-:106DB0008A95E1F749E759E0BE016B5F7F4FCE014D
-:106DC00001960E94A2B461E879E082E996E00E940F
-:106DD000C4B429853A854B855C8520935102309354
-:106DE000520240935302509354020E947F8F60914D
-:106DF000510988E893E20E947FD6AFCE01E0CECE63
-:106E000021E030E0082E02C0220F331F0A94E2F77F
-:106E1000209530959091BF0729232093BF0781309B
-:106E200061F020F0823071F081E008955F9A8091E6
-:106E3000E4088E7F8093E408F7CF8A9A8091E40873
-:106E40008D7FF8CF80910801809581708093060135
-:106E50008091E4088B7F8093E40880E090E0A6E1D5
-:106E6000B3E480937E0290937F02A0938002B0935C
-:106E700081020E947BB5D8CF80E00E9400B781E0FC
-:106E80000E9400B782E00E9400B70C94FE899091A6
-:106E9000091680910A16981308C080914C099091A8
-:106EA0004D09892B11F40C943CB780E00E94EADD77
-:106EB000EECF4F925F926F927F928F929F92AF929E
-:106EC000BF92DF92EF92FF920F931F93CF93DF93C6
-:106ED000D82EC82FD0E0FE01E253F44C6491062E68
-:106EE000000C770B880B990B0F94B8392B013C01E0
-:106EF0007E01EE0CFF1CEE0CFF1CF701ED50FB4E6B
-:106F00002591359145915491C301B2010F94173ADF
-:106F10004B015C01F701E951FB4E6591759185913B
-:106F2000949120E030E040EC5FE30F94173AA30126
-:106F300092010F94173AAB01BC0100E010E09801F8
-:106F40008D2D0F94811320E030E0A901C501B4011B
-:106F50000F94B139882309F446C0B501A4017058D3
-:106F600000E010E098018D2D0F948113A50194018C
-:106F7000C501B4010F94083E4B015C01CC51DB4EBE
-:106F8000FE01C491C11107C00E940FD882EC94E1A8
-:106F90000E94ACCECAE0DD2039F0F1E060E070E0A4
-:106FA00080E793E4DF1204C060E070E88BE395E4CF
-:106FB00020E030E040E752E40F94023F2B013C0117
-:106FC0006C2F70E090E080E00F94B6399B01AC012B
-:106FD000C301B2010F94023F8B019C01B501A401D2
-:106FE0008D2D0F94811381E090E00D2C01C0880F4E
-:106FF0000A94EAF79091E408982B9093E408909112
-:107000000108892B80930108F701EA54FB4E859112
-:107010009591A591B491E701CA58DD4F8883998372
-:10702000AA83BB83F701E655FA4F108211821282C0
-:1070300013828D2D0E94FAB20E947BB5F701E657AC
-:10704000F94F88819981AA81BB8180839183A28332
-:10705000B383DF91CF911F910F91FF90EF90DF905D
-:10706000BF90AF909F908F907F906F905F904F9068
-:1070700008954F925F926F927F928F929F92AF92FC
-:10708000BF92CF92DF92EF92FF920E943C95F82E32
-:1070900080910A168093091680930816809307162C
-:1070A00084E6809306160E94B4A780ED93E0909347
-:1070B0004D0980934C09F1100E94499581E080931D
-:1070C000A2070E947F8F80E00E9485B22B013C01C5
-:1070D0004092090750920A0760920B0770920C07C2
-:1070E00081E00E9485B24B015C0180920D07909275
-:1070F0000E07A0920F07B092100782E00E9485B29F
-:107100006B017C01C0921107D0921207E092130725
-:10711000F092140783E00E9485B24092760250926A
-:107120007702609278027092790280927A0290924D
-:107130007B02A0927C02B0927D02C0927E02D0922D
-:107140007F02E0928002F09281026093820270934B
-:1071500083028093840290938502FF90EF90DF90EA
-:10716000CF90BF90AF909F908F907F906F905F90E7
-:107170004F900C947BB5CF93DF93CDB7DEB72C97B0
-:107180000FB6F894DEBF0FBECDBF0F94B2100E94B1
-:107190003C959CE0EFEAF7E0DE01119601900D923C
-:1071A0009A95E1F781110E944995CE0101960E94BE
-:1071B000E6872C960FB6F894DEBF0FBECDBFDF91E9
-:1071C000CF9108954F925F926F927F928F929F928C
-:1071D000AF92BF92CF92DF92EF92FF92CF93409007
-:1071E00076025090770260907802709079028090D9
-:1071F0007A0290907B02A0907C02B0907D02C090B9
-:107200007E02D0907F02E0908002F09081020E9486
-:107210000D8F0E94E771C0E08C2F0E94FAB240E00F
-:1072200060E08C2F0E947872CF5FC330A9F70E9474
-:107230005B8FA30192016091760270917702809139
-:107240007802909179020F94B13981111BC0A50188
-:10725000940160917A0270917B0280917C029091FE
-:107260007D020F94B13981110DC020917E023091C1
-:107270007F024091800250918102C701B6010F94B4
-:10728000B13981110E94BBB88FEF80932E02CF914C
-:10729000FF90EF90DF90CF90BF90AF909F908F9036
-:1072A0007F906F905F904F900C94BB3F8AE494E185
-:1072B0000E94ACCE8CB164E474E1829581700E942E
-:1072C0003A77809103016EE374E1869581700E94A4
-:1072D0003A7789B168E374E183FB882780F90C94DD
-:1072E0003A778091E308882331F062E070E080E033
-:1072F00090E00C9421CD0895A5E5B9E090E080E000
-:10730000FC01EC5AF54E45915591659174914D9360
-:107310005D936D937D93FC01EC5BF54E459155912A
-:107320006591749150964D935D936D937C935397B3
-:10733000FC01EC5CF54E45915591659174919096E8
-:107340004D935D936D937C93939704968031910553
-:10735000B9F680E29EE4A0E0B0E0809365099093E6
-:107360006609A0936709B093680980E090E0AAE7F6
-:10737000B3E48093890990938A09A0938B09B09311
-:107380008C0980E090E4ACE9B5E480938D0990939A
-:107390008E09A0938F09B093900980E090E0AAEF46
-:1073A000B3E48093910990939209A0939309B093C9
-:1073B00094091092950910929609109297091092CB
-:1073C00098091092990910929A0910929B091092AB
-:1073D0009C098AE097EDA3E2BFE38093FE059093BA
-:1073E000FF05A0930006B09301061092EE081092DC
-:1073F000EF081092F0081092F1081092EA0810922B
-:10740000EB081092EC081092ED081092E60810922A
-:10741000E7081092E8081092E90810926E061092A0
-:107420006F061092700610927106109272061092FA
-:1074300073061092740610927506109276061092DA
-:107440007706109278061092790610927A061092BA
-:107450007B0610927C0610927D0610927E0610929A
-:107460007F0610928006109281061092820610927A
-:10747000830610928406109285061092860610925A
-:107480008706109288061092890688EC90E0909307
-:10749000F3058093F20582E390E09093F5058093E5
-:1074A000F4051092F7051092F6058CED90E090939C
-:1074B000F9058093F80584E690E09093FB058093AE
-:1074C000FA051092FD051092FC0581E79DE3A0EA04
-:1074D000B1E480934A0690934B06A0934C06B09378
-:1074E0004D068AE99EEAACE4BEE380934E06909393
-:1074F0004F06A0935006B093510681E995E6AAEF96
-:10750000B3E48093520690935306A0935406B0932D
-:1075100055068FEF80932E021092F10580E090E0E7
-:10752000A0EEBFE38093E9059093EA05A093EB05F5
-:10753000B093EC058093ED059093EE05A093EF05D5
-:10754000B093F0051092E3081092E2080E9471B91E
-:107550000E949C8880E090E0A0EAB2E48093D90584
-:107560009093DA05A093DB05B093DC051092DD055E
-:107570001092DE051092DF051092E0058093E10580
-:107580009093E205A093E305B093E4051092E5051E
-:107590001092E6051092E7051092E8050E94E2B805
-:1075A0000E940FD88BEB98E10C9409DB8091340991
-:1075B000882319F010923409089540E070E060E0EB
-:1075C00088E194E10C94E2DC0F931F938091860F85
-:1075D000813019F50F941E1D00913B0710913C0757
-:1075E00020913D0730913E07601B710B820B930B7E
-:1075F00028EE33E040E050E00F94A43D60913F0757
-:10760000709140078091410790914207620F731F6C
-:10761000841F951F1F910F910895609143077091EA
-:1076200044078091450790914607D6CFCF92DF92CD
-:10763000EF92FF92CF93C82F8091860F81508230B6
-:1076400008F067C01092860F0F941E1D60934307C9
-:10765000709344078093450790934607C090D505E3
-:10766000D090D605E090D705F090D8050E94E4BAF6
-:10767000AB01BC014093D5055093D6056093D70567
-:107680007093D8058091D6089091D708A091D8081A
-:10769000B091D9088C199D09AE09BF09840F951FB7
-:1076A000A61FB71F8093D6089093D708A093D80839
-:1076B000B093D908C1110AC0C1E00E94BC8E8C2FC2
-:1076C000CF91FF90EF90DF90CF9008958091D408F4
-:1076D0009091D50801969093D5088093D4080E9484
-:1076E000E4BAC090DA08D090DB08E090DC08F090B3
-:1076F000DD08C616D706E806F906F0F60E94E4BAD9
-:107700006093DA087093DB088093DC089093DD08BF
-:10771000D3CFC0E0D2CF1092860F10923B071092C9
-:107720003C0710923D0710923E07109243071092BB
-:107730004407109245071092460710923F07109297
-:10774000400710924107109242070895CF93C091CD
-:10775000860F80E0C13069F1C23069F50E94E4BA59
-:1077600060933F07709340078093410790934207CF
-:1077700081E08093860F0F941E1D60933B077093EA
-:107780003C0780933D0790933E07C23089F080917B
-:10779000D2089091D30801969093D3088093D20891
-:1077A0001092D5051092D6051092D7051092D805E3
-:1077B00081E0CF9108950E948BBBDACF20914706DC
-:1077C000309148062635310574F420915E063091DB
-:1077D0005F06263531053CF4209136063091370698
-:1077E0002630310524F0882349F00C94A6BB66238B
-:1077F00029F081E00E9416BB0D948E1008958091AF
-:10780000860F813079F482E08093860F0F941E1DDD
-:10781000609343077093440780934507909346070E
-:1078200081E0089580E00895CF92DF92EF92FF9279
-:10783000FC01C080D180E280F38020E030E0A9012B
-:10784000C701B6010F94B13987FF68C0C701B601FF
-:10785000905820E030E040E251E40F94173A20E0E5
-:1078600030E040EA50E40F94083E20E030E040E28F
-:1078700051E40F94023F0F94743F9B0160E220316A
-:10788000F7E23F0730F0C90160E177E20F9434413D
-:10789000605D6093A405283E83E0380708F445C086
-:1078A000C90168EE73E00F943441CB016AE070E0E7
-:1078B0000F943441805D8093A50580E22436310524
-:1078C00058F0C90164E670E00F943441CB016AE0DE
-:1078D00070E00F943441805D8093A60580E22A30E9
-:1078E000310558F0EAE0F0E0C901BF010F943441DE
-:1078F000CB01BF010F943441805D8093A705C9017E
-:107900006AE070E00F943441805D8093A80584EABA
-:1079100095E0FF90EF90DF90CF90089520E030E069
-:1079200040E251E4C701B60198CF80E2C4CF8F9204
-:107930009F92AF92BF92CF92DF92EF92FF92FC01A3
-:10794000C080D180E280F38020E030E040E251E46A
-:10795000C701B6010F94173A20E030E040E251E44D
-:107960000F94173A4B015C0120E030E0A901C701F8
-:10797000B6010F94B13920E030E040EA50E487FFCF
-:1079800004C020E030E040EA50ECC501B4010F949F
-:10799000083E20E030E040E251E40F94023F0F94B3
-:1079A000743F9B018BE237FF05C022273327261B3C
-:1079B000370B8DE28093A305C90168EE73E00F9445
-:1079C0004841CB01EAE0F0E0BF010F944841805DFF
-:1079D0008093A405C90164E670E00F944841CB018F
-:1079E000BF010F944841805D8093A505C901BF0187
-:1079F0000F944841282FCB01BF010F944841805D6F
-:107A00008093A6058EE28093A705205D2093A805AC
-:107A100083EA95E0FF90EF90DF90CF90BF90AF901A
-:107A20009F908F9008959C0197FF26C0EE27FF2717
-:107A3000E81BF90B2D398FEF38070CF05DC08DE294
-:107A40008093A505CF0164E670E00F944841CB0117
-:107A50002AE030E0B9010F944841805D8093A6058B
-:107A6000CF01B9010F944841CB01B9010F944841AE
-:107A7000805D8093A7052AC0283E83E03807B4F1D3
-:107A8000C90168EE73E00F944841CB01EAE0F0E0F1
-:107A9000BF010F944841805D8093A505C90164E64C
-:107AA00070E00F944841CB01BF010F944841805DC5
-:107AB0008093A605C901BF010F944841CB01BF01C6
-:107AC0000F944841805D8093A705F901CF016AE0DA
-:107AD00070E00F944841805D8093A80585EA95E0A9
-:107AE00008958DE237FDC5CF80E2C3CFF90180E272
-:107AF000243631050CF0A4CF80E28093A505809355
-:107B0000A605EA30F1056CF38DE237FF80E2809341
-:107B1000A605CF016AE070E00F944841605D609374
-:107B2000A705D4CF9C0197FD2DC080E224363105F6
-:107B30005CF0C90164E670E00F944841CB016AE053
-:107B400070E00F944841805D8093A60580E22A3062
-:107B500031055CF0EAE0F0E0C901BF010F94484153
-:107B6000CB01BF010F944841805D8093A705C901F7
-:107B70006AE070E00F944841805D8093A80586EA32
-:107B800095E008953195219531098DE2DDCF9C0175
-:107B9000283E83E03807D0F1C90168EE73E00F9406
-:107BA0003441CB016AE070E00F943441805D8093F2
-:107BB000A50580E22436310558F0C90164E670E07D
-:107BC0000F943441CB016AE070E00F943441805D42
-:107BD0008093A60580E22A30310558F0EAE0F0E013
-:107BE000C901BF010F943441CB01BF010F9434414F
-:107BF000805D8093A705C9016AE070E00F9434416D
-:107C0000805D8093A80585EA95E0089580E2CFCF56
-:107C1000282F80E2243628F0822F64E60F941A4140
-:107C2000805D8093A60590E22A3040F03AE0822FF2
-:107C3000632F0F941A410F941A41905D9093A705FA
-:107C4000822F6AE00F941A41905D9093A80586EA0E
-:107C500095E0089524E6829FC001112481589F4F2A
-:107C60006FEF70E00F944841262F81E3643609F0EE
-:107C700080E28093A50590E22A3040F03AE0822F1E
-:107C8000632F0F941A410F941A41905D9093A605AB
-:107C9000822F6AE00F941A41905D9093A70585E2C8
-:107CA0008093A80585EA95E00895BC018AE197E2F2
-:107CB0000E94E0DD87E197E20C94ACCECF92DF9298
-:107CC000EF92FF920F931F93CF93DF9300D000D0DA
-:107CD0001F92CDB7DEB72091A21724FF92C0F62ED7
-:107CE0008C0181E0681709F46DC0681708F463C05F
-:107CF00082E0681709F405C18091A217877F8B7F06
-:107D00008093A2170E94677EA801BE016F5F7F4F1C
-:107D100081E00F94BD0C8C01009709F472C0698159
-:107D20007A8121E0AC0180E594E10E946A80882399
-:107D300009F4EEC08091611490916214A0916314D3
-:107D4000B091641480939A1790939B17A0939C17FB
-:107D5000B0939D1710929E1710929F171092A01724
-:107D60001092A117B80185E497E20E94E0DDC0906F
-:107D70009A17D0909B17E0909C17F0909D178DE379
-:107D800097E20E94ACCEC701B6010F94C00D8AE005
-:107D90000E949FCE8EE297E20E94ACCEC8010E9464
-:107DA0000B838091FC11882311F00CEF11E1C801C5
-:107DB0000F94450E26C0B80182E00F94E72610927A
-:107DC00099179ACF0E9473CD811105C0B80181E047
-:107DD0000F94E72691CFE0909917EE2009F10E94C9
-:107DE0000BD861E070E08EE997E20E9487DA8AE0C2
-:107DF0000E949FCE40E070E060E08DE897E20E9434
-:107E0000E2DC27960FB6F894DEBF0FBECDBFDF9140
-:107E1000CF911F910F91FF90EF90DF90CF90089539
-:107E200080EA96E09E838D838FE280939F06FF8297
-:107E3000CE0105969A83898302969C838B838BE17E
-:107E4000F82E80919717E81658F4EF9CB001112492
-:107E50006757794ECE0101960E94317FE394F1CFAE
-:107E60008F818B3558F460E574E1CE0101960E9454
-:107E7000317F8D819E8101979E838D83ED81FE816F
-:107E80001082E091991784E0E89FF0011124E556F3
-:107E9000F94F80919E1790919F17A091A017B091D4
-:107EA000A11780839183A283B3830E940FD8B80166
-:107EB00084E797E20E94E0DD6091991789E6689F68
-:107EC000B00111246156794F89E697E20E94E0DD06
-:107ED000C0909E17D0909F17E090A017F090A11728
-:107EE00083E697E20E94ACCEC701B6010F94C00DA5
-:107EF0008AE00E949FCE809199178F5F8093991797
-:107F0000FBCE0E940FD883E597E20E94ACCEF4CE60
-:107F1000C8010E9455BE75CF0F931F93CF93DF9377
-:107F20001F921F92CDB7DEB72091A21724FF33C056
-:107F30008C01BC0182E00F94E72610929917809182
-:107F4000A217877F8B7F8093A2170E94677EA8016C
-:107F5000BE016F5F7F4F80E00F94BD0C8C010097D6
-:107F6000D1F069817A8126E5AC0180E594E10E9437
-:107F70006A808823B9F08091A21781608093A2174C
-:107F8000C8010E940B83B8018DEB97E20F94E226A3
-:107F9000C8010F94450E0F900F90DF91CF911F9164
-:107FA0000F910895C8010E9455BEF5CF6F927F9240
-:107FB0008F929F92AF92BF92CF92DF92EF92FF92F9
-:107FC0000F931F93CF93DF93CDB7DEB7C655D1097B
-:107FD0000FB6F894DEBF0FBECDBF5C017B016DB65E
-:107FE0007EB6BE016F5F7F4FC5010F946C0E1816F1
-:107FF0000CF06BC08C858871803109F081C08DB622
-:108000009EB610E000E0E114F10439F0F7010190B0
-:108010000020E9F78F010E191F09C8010D962DB731
-:108020003EB7281B390B0FB6F8943EBF0FBE2DBFCD
-:108030008DB79EB701966C01080F191FE114F1046A
-:1080400039F0B7010F94ED418FE2F8013197808349
-:10805000BE016F5F7F4FC8010E94127A19A21CA255
-:1080600021E0A801B501CE0181960E946A80882393
-:10807000E1F08BE1FE01B196DE01DC9601900D92FC
-:108080008A95E1F7B601CE01CC960E94D6BFCE010B
-:10809000CC960E946480CE0181960E9464800FB6C7
-:1080A000F8949EBE0FBE8DBE9CCF0E940FD8B80123
-:1080B0008AEA96E20F94E226CE0181960E946480BD
-:1080C0000FB6F8949EBE0FBE8DBE0FB6F8947EBE5E
-:1080D0000FBE6DBECA5ADF4F0FB6F894DEBF0FBE9B
-:1080E000CDBFDF91CF911F910F91FF90EF90DF9067
-:1080F000CF90BF90AF909F908F907F906F9008959A
-:10810000CE0101960E94F579882309F46ACFE11423
-:10811000F10431F0C7010F94D6268FE20E949FCE62
-:10812000BE016F5F7F4F89E79FE00E94127A0F9434
-:10813000D62680E20E949FCE6D8D7E8D8F8D98A178
-:108140000F94C00D8AE00E949FCE4BCF2F923F929A
-:108150004F925F926F927F928F929F92AF92BF9257
-:10816000CF92DF92EF92FF920F931F93CF93DF9303
-:10817000CDB7DEB7C558D1090FB6F894DEBF0FBE34
-:10818000CDBF2DB73EB7CC57DF4F39832883C458B6
-:10819000D04001E025E537E044E050E0BE016758FB
-:1081A0007F4F83E597E00E9461CE43E050E0BE013F
-:1081B00067587F4F89E393E00F94F441892B09F4CA
-:1081C00050C0ED968FADED97882339F08FE3EA9696
-:1081D0008FAFEA97EB961FAEEB970E940FD8BE01C8
-:1081E00067587F4F82E79AE10E94E0DD84E69AE1DA
-:1081F0000E94ACCE81E080935707809102068111E6
-:1082000007C080913509833018F080E00E942E8AE3
-:108210009091570781E08927CC57DF4F288139811A
-:10822000C458D0400FB6F8943EBF0FBE2DBFCB57F9
-:10823000DF4F0FB6F894DEBF0FBECDBFDF91CF91F9
-:108240001F910F91FF90EF90DF90CF90BF90AF9074
-:108250009F908F907F906F905F904F903F902F9066
-:10826000089501E025E537E042E050E0BE016358A3
-:108270007F4F83E597E00E9461CEE9961CAE1DAE6C
-:108280001EAE1FAEE9971092560710925507CE0109
-:1082900081589F4F0E94F176ADB6BEB6C158DF4FF0
-:1082A000C880CF57D040D12C33E0C30ED11CCC0CAA
-:1082B000DD1CCC0CDD1C8DB79EB78C199D090FB64B
-:1082C000F8949EBF0FBE8DBFEDB7FEB73196CE5767
-:1082D000DF4FF983E883C258D0402DB73EB72C1941
-:1082E0003D090FB6F8943EBF0FBE2DBF8DB79EB7A8
-:1082F00001964C01EDB7FEB7EC19FD090FB6F894E5
-:10830000FEBF0FBEEDBF2DB73EB72F5F3F4F7901C8
-:10831000B601CE57DF4F88819981C258D0400E9464
-:10832000FE760091020681E0082725E537E044E06B
-:1083300050E065E679E083E597E00E9461CEB60102
-:10834000C4010E94FE76B601C7010E94FE7600912C
-:108350000206011157C0C158DF4F8881CF57D04066
-:1083600090E00296A5E5B9E050E040E030E020E082
-:1083700060E67AE1E0E5CE2EEAE1DE2E8217930791
-:108380000CF4A6C0CE57DF4FE881F981C258D04027
-:10839000E40FF51F40805180628073804D925D92A2
-:1083A0006D927D92821793070CF498C0F401E40F4C
-:1083B000F51F208031801281E3812101612E7E2E04
-:1083C00050964D925D926D927C92539782179307CF
-:1083D0000CF48DC0F701E40FF51F2080318012816D
-:1083E000E3812101612E7E2E90964D925D926D92D9
-:1083F0007C9293972F5F3F4F4C5F5F4F2430310546
-:1084000009F0BCCF89E899E00E94E1768DE899E017
-:108410000E94E17681E999E00E94E17685E999E0A0
-:108420000E94E17689E999E00E94E176CE018B58BD
-:108430009F4F0E94E176CE018B589F4F0E94E176BC
-:10844000CE018B589F4F0E94E176CE018B589F4FF3
-:108450000E94E1768EEF95E00E94E1760FB6F894E7
-:10846000BEBE0FBEADBE86EE98E00E94D1768AE712
-:1084700096E00E94D176CE0183599F4F0E94A1764B
-:10848000CE0101967C010E94E176CE018B589F4F70
-:108490000E94E176CE018B589F4F0E94E176C70182
-:1084A0000E94F176CE0183599F4F0E94F176C980D8
-:1084B000AE968FADAE97C89E6001112491E0C91AA7
-:1084C000D108F8F0CE018B589F4F0E94E176F6CF8D
-:1084D000FB01459055906590749060CFF6014590F2
-:1084E0005590659074901201162DE72D66CFE0E44B
-:1084F000FAE145905590659074901201162DE72D84
-:1085000070CFC7010E94D1761AE01150CE0129F038
-:108510008B589F4F0E94E176F8CF80589F4F0E9462
-:10852000F176CE018F579F4F0E94F176C7010E94CE
-:10853000C176CE0183599F4F0E94C176C058DF4F4C
-:10854000C880C058D040CF57DF4F8881C158D04035
-:10855000C89E60011124F1E0CF1AD10830F0CE019D
-:108560008B589F4F0E94E176F6CFC7010E94B176EB
-:10857000CE0183599F4F0E94A17611E0012725E586
-:1085800037E040E150E0B70183E597E00E9461CE1B
-:10859000C7010E94B17600910206012725E537E068
-:1085A0004CE050E062EF75E083E597E00E9461CE19
-:1085B00012E0DD24D394009102060D2525E537E075
-:1085C00044E150E0B70183E597E00E9461CE00915D
-:1085D0000206011138C089809A80AB80BC80A50159
-:1085E0009401C501B4010F94FA4081112CC080920E
-:1085F0004A0690924B06A0924C06B0924D062CEA89
-:1086000035EC47E25EE36D817E818F8198850F9422
-:10861000173A60934E0670934F06809350069093DE
-:1086200051062CEA35EC47E25EE369857A858B8555
-:108630009C850F94023F609352067093530680937B
-:10864000540690935506113009F090C1012725E595
-:1086500037E042E050E0B70183E597E00E9461CE49
-:10866000C7010E949176C7010E949176C7010E94BE
-:10867000A176C7010E94A17600910206011103C0F4
-:10868000898180932E02C7010E94A17685E0F701BF
-:1086900011928A95E9F711E0012725E537E045E0D9
-:1086A00050E0B70183E597E00E9461CEC7010E94C8
-:1086B000B17600910206012725E537E040E250E05F
-:1086C000B70183E597E00E9461CECE0183599F4FA9
-:1086D0000E94B17600910206012725E537E041E1CD
-:1086E00050E0B70183E597E00E9461CE80910206D9
-:1086F00081110EC089818093F10588E0FE013296D8
-:10870000A9EEB5E001900D928A95E1F70E949C8850
-:108710000091020681E0082725E537E044E150E0BA
-:10872000B70183E597E00E9461CE80910206811136
-:108730004BC069817A816115710511F460E273E0C3
-:108740007093E9156093E8158FEA95E10F940F2176
-:108750006B817C816115710511F460E273E07093A7
-:10876000AD156093AC1583E795E10F940F216D81F2
-:108770007E816115710511F460E273E070937115EB
-:108780006093701587E395E10F940F2169897A89C9
-:108790006115710511F460E273E070933515609313
-:1087A00034158BEF94E10F940F216B897C8961154F
-:1087B000710511F460E273E07093F9146093F8149A
-:1087C0008FEB94E10F940F210091020611E0012735
-:1087D00025E537E048E250E0B70183E597E00E94E5
-:1087E00061CE00910206012725E537E040E150E027
-:1087F000B70183E597E00E9461CE00910206012750
-:1088000025E537E042E050E0B70183E597E00E94BC
-:1088100061CE80910206811122C08981817080938E
-:10882000EA150F9401128981869581708093AE15A7
-:108830000F940912898182FB882780F98093721531
-:108840000F9411128A818170809336150F9419123A
-:108850008A81869581708093FA140F942112009179
-:10886000020611E0012725E537E048E050E0B701B6
-:1088700083E597E00E9461CE00910206012725E57D
-:1088800037E040E150E0B70183E597E00E9461CE18
-:1088900000910206012725E537E04CE650E0B701DC
-:1088A00083E597E00E9461CE19821A821B821C82A6
-:1088B0001D821E821F82188619861A861B861C86B8
-:1088C000C7010E94917600910206012725E537E055
-:1088D00040E150E069ED75E083E597E00E9461CEEC
-:1088E00000910206012725E537E044E050E066E804
-:1088F00076E083E597E00E9461CEC7010E94D176C1
-:10890000CE0180589F4F0E94A176CE0183599F4F80
-:108910000E94E176809153079091540787319340EC
-:1089200039F10E940BD88AEA99E10E94ACCE1093EB
-:1089300057070E940FD860915307709154076456EF
-:1089400071098CE29AE10E9487DA63EB72E084E2BB
-:108950009AE10E9404DB8091020681114ECC809145
-:10896000570781114ACC0E94E2B847CC11E023CED0
-:10897000109257072091550730915607EF968EAD0C
-:108980009FADEF9728173907C9F0109357070E943A
-:108990000BD8EF966EAD7FADEF9784E09AE10E9421
-:1089A0007BDA60915507709156078FEF99E10E942D
-:1089B0007BDA8FEE99E10E94ACCECDCF809102069A
-:1089C0008111C9CF0E940FD889E393E00F94D62676
-:1089D00060915307709154076456710982ED99E1D3
-:1089E0000E9487DAC0905507D0905607F12CE12CF1
-:1089F00085EC99E10E94ACCEC701B6010F94C00D81
-:108A000082EC99E1D8CF84E690E09093540780936C
-:108A1000530710925607109255070C94A6C081E098
-:108A2000809302060E9403C51092020681110C94E5
-:108A300003C50E947CB90E94648B0E940FD887EA0C
-:108A400098E10E94ACCE80E008950F94D6268DE088
-:108A50000E949FCE8AE00C949FCECF93DF93C0916B
-:108A60003606D091370681E0CE31D105E4F020E022
-:108A700030E040E05FE36091320670913306809110
-:108A80003406909135060F94083E0F94743F6C1B8A
-:108A90007D0B77FF03C071956195710981E06330AB
-:108AA00071050CF080E0DF91CF91089590E080E0B7
-:108AB0000895CF93DF93DB01F9019C919130C1F0D0
-:108AC000943080F094509C938830D1F480819181CF
-:108AD000009771F0019791838083480F591FEA0135
-:108AE000188206C08C3539F49C5F9C93943041F415
-:108AF000DF91CF9108958B3339F781E08C93F8CFD4
-:108B000020813181B9016F5F7F4F71836083420F94
-:108B1000531FEA018883808191818F3591056CF71D
-:108B2000E7CF0F931F9381E000919E1710919F173D
-:108B30002091A0173091A11740919A1750919B173F
-:108B400060919C1770919D1704171507260737072A
-:108B500008F480E01F910F9108952091A1088330BF
-:108B600021F425FD0CC024FD0CC030E0A90102C099
-:108B7000559547958A95E2F7CA018170089581E07D
-:108B8000089580E008958091BC0884FD0BC0809119
-:108B9000BE0887FD07C09091BF08937081E019F46B
-:108BA00080E0089581E008952FEB280F2A3108F026
-:108BB00047C0E22FF0E08091BC089091BD08A091E1
-:108BC000BE08B091BF0804C0B695A7959795879544
-:108BD0002A95D2F780FD02C081700895EE55F74FB7
-:108BE000E081EE2341F18091530990915409E80FFF
-:108BF000F92FF11D808190ED980F9A3030F08E3270
-:108C000051F4818180538A3098F4F0939F08E09367
-:108C10009E0881E008958D3211F08B3249F48181F4
-:108C200090ED980F9A3088F38E3211F48281EACF5A
-:108C3000F0E0E0E0EACF10929F0810929E08E9CFA2
-:108C400080E00895CF93DF93C0913606D091370628
-:108C5000209729F160913206709133068091340695
-:108C6000909135060F94743F6E5F7F4F24976C1779
-:108C70007D07ACF470930D0660930C060F941E1DD7
-:108C8000605A75418F4F9F4F60930E0670930F0689
-:108C90008093100690931106DF91CF910895109262
-:108CA0000E0610920F061092100610921106F4CFC5
-:108CB0002F923F924F925F926F927F928F929F92EC
-:108CC000AF92BF92CF92DF92EF92FF920F931F93DA
-:108CD000CF93DF93D62FC72FFC0180809180A28095
-:108CE000B380C501B40120E831E541E050E00F94C4
-:108CF000A43DC9016DE671E00F9434416B017C0124
-:108D0000C501B40120E13EE040E050E00F94A43DF5
-:108D1000CA01B90128E130E040E050E00F94A43DE1
-:108D2000362E272E062F172F8CE3482E512C612C20
-:108D3000712CC501B401A30192010F94A43DB62E7C
-:108D4000A72ECA01B901A30192010F94A43DCB0142
-:108D5000C114D10479F1AF92BF927F936F932F9298
-:108D60003F92FF92EF92DF92CF928EE895E39F932E
-:108D70008F93CF93DF930F9448398DB79EB70E969C
-:108D80000FB6F8949EBF0FBE8DBF8D2F9C2FDF9125
-:108D9000CF911F910F91FF90EF90DF90CF90BF90F8
-:108DA000AF909F908F907F906F905F904F903F908B
-:108DB0002F900895E114F104C9F0AF92BF927F9310
-:108DC0006F932F923F92FF92EF928EE795E39F93DE
-:108DD0008F93CF93DF930F944839EDB7FEB73C964E
-:108DE0000FB6F894FEBF0FBEEDBFCFCF012BB9F089
-:108DF000AF92BF927F936F932F923F9282E795E35A
-:108E00009F938F93CF93DF930F9448398DB79EB77D
-:108E10000A960FB6F8949EBF0FBE8DBFB6CF892BB2
-:108E2000A9F0AF92BF927F936F938AE695E39F93E9
-:108E30008F93CF93DF930F944839EDB7FEB73896F1
-:108E40000FB6F894FEBF0FBEEDBF9FCFAF92BF929B
-:108E500086E695E39F938F93CF93DF930F944839E2
-:108E60000F900F900F900F900F900F908ECF8091DA
-:108E70009E0890919F08009731F04AE050E070E022
-:108E800060E00D94D33760E070E0CB0108958091ED
-:108E90009E0890919F08009731F04AE050E070E002
-:108EA00060E00D94A53660E070E0CB0108950E946B
-:108EB00047C7CB0108950E9447C797FD0CC00E9489
-:108EC00047C76F3F71058105910509F034F40E9491
-:108ED00047C7862F089580E008958FEF0895809109
-:108EE0009E0890919F08892B41F00E945BC791E0FA
-:108EF000811101C090E0892F089591E0FCCFCF92BD
-:108F0000DF92EF92FF920F931F93CF93DF93CDB732
-:108F1000DEB72C970FB6F894DEBF0FBECDBFF09032
-:108F20008016E09081162091FA0321111DC042E9BC
-:108F300057E36E2D8F2D0F94DD2590E080E0F80E25
-:108F4000F0928016E092811699272C960FB6F8942D
-:108F5000DEBF0FBECDBFDF91CF911F910F91FF906C
-:108F6000EF90DF90CF900895C0904D16D0904E16A0
-:108F700029E436E13A8329832F2D30E03C832B838B
-:108F80002E2D30E03E832D8318861F827A876987D5
-:108F90001C861B8607EA18E29E012F5F3F4F41EABD
-:108FA00054E2BC01C6010F945010B60189E496E169
-:108FB0000F9419258F819885C2CFCF92DF92EF92BF
-:108FC000FF920F931F93CF93DF93CDB7DEB72C970C
-:108FD0000FB6F894DEBF0FBECDBFF0908016E090C4
-:108FE00081162091FA0321111DC042E757E36E2D2F
-:108FF0008F2D0F94DD2590E080E0F80EF092801622
-:10900000E092811699272C960FB6F894DEBF0FBE1A
-:10901000CDBFDF91CF911F910F91FF90EF90DF9027
-:10902000CF900895C0904D16D0904E1629E436E1A9
-:109030003A8329832F2D30E03C832B832E2D30E083
-:109040003E832D8318861F827A8769871C861B863C
-:1090500007EA18E29E012F5F3F4F44EA54E2BC0149
-:10906000C6010F945010B60189E496E10F941925BA
-:109070008F819885C2CFCF93609136067091370665
-:10908000072E000C880B990B0F94B839C1E0209182
-:1090900032063091330640913406509135060F94D4
-:1090A000684018160CF0C0E08C2FCF9108958F9275
-:1090B0009F92AF92BF92CF92DF92EF92FF920F9367
-:1090C0001F93CF93DF931092C1081092C0082FE333
-:1090D0002093C4081092C3081092C2081092BC08D2
-:1090E0001092BD081092BE081092BF089C01F901B1
-:1090F00090812F5F3F4F9032D1F39E34C9F481812C
-:1091000090ED980F9A3020F08D3211F08B3281F46F
-:1091100032969F012F5F3F4F808180538A3008F441
-:109120006BC09F012F5F3F4F8081803209F466C082
-:10913000F0935409E09353098F010F5F1F4FC081D3
-:109140006AE270E0C8010F94E241009731F0FC013F
-:10915000319780818032E1F31182CD3421F0C43522
-:1091600011F0C734E1F5F80180810F5F1F4F8032A5
-:10917000D1F380538A3098F5C093C40830E020E0E2
-:109180006AE0AF014F5F5F4F629FC001639F900D28
-:1091900011249C01205331098081280F311D87FD46
-:1091A0003A95FA01808180538A3058F33093C3088E
-:1091B0002093C208DF0131968C918032D9F3CD34EF
-:1091C00049F52E31310539F0D8F42731310519F040
-:1091D0002C313105F9F4B093C108A093C008DF9198
-:1091E000CF911F910F91FF90EF90DF90CF90BF90A4
-:1091F000AF909F908F900895F9018BCFF90191CF97
-:109200002537310538F02737310528F3203A83E038
-:10921000380709F3D091530940E050E0BA0110E05B
-:1092200000E0C12CD12C7601C394FD0131968C91C4
-:10923000882309F47FC08132E1F4CD34D1F42032A7
-:109240003105B9F44093BC085093BD086093BE0843
-:109250007093BF08F093C108E093C00863E270E028
-:10926000CF010F94E241009709F4B9CFFC011082BD
-:10927000B6CF81548A3108F058C0DF019D919032F9
-:1092800091F0A0EDA90FAA30E8F09E3271F491811F
-:1092900090539A30B8F00115110519F48F0101505F
-:1092A000110990E013C0FD01E8CF9D3211F09B320F
-:1092B00091F79181A0EDA90FAA3020F09E3259F7C5
-:1092C0009281E6CF9E2F9D1B309759F3A82FB0E0D7
-:1092D0004601570104C0880C991CAA1CBB1C8A9526
-:1092E000D2F7482959296A297B29AE55B74F9C9353
-:1092F00080818154DF018A3108F497CFDF018191A9
-:10930000882309F492CF90ED980F9A30B8F393ED3B
-:10931000980F923098F38B3289F3CD010196EC913E
-:10932000E03209F082CFDC01F8CF0115110501F719
-:109330008D01DECF1093C1080093C0084093BC0894
-:109340005093BD086093BE087093BF0848CF0F9339
-:109350001F93CF9380919E0890919F080097E9F00A
-:10936000FC018F01C1912C2F2F7D81F0C53411F0AC
-:10937000C536B9F7F801108270E060E00F94473508
-:10938000F801C083CF911F910F91089570E060E0C4
-:10939000CF911F910F910D94473560E070E0CB01A4
-:1093A000F1CF0E94D4C5882341F081E020919E082E
-:1093B00030919F08232B09F480E008954F925F922B
-:1093C0006F927F92AF92BF92CF92DF92EF92FF9215
-:1093D0000F931F93CF938CE9A82E82E0B82E9AE8C2
-:1093E000E92E96E0F92E06E712E02DE6C22E2FE0D8
-:1093F000D22EC0E0F50181915F010E94D1C988237E
-:1094000009F4A6C00E94A7C92B013C018C2F0E9421
-:10941000ADC5882309F492C0F801208131814281D1
-:109420005381C301B2010F94083EF7016083718339
-:1094300082839383CF5FF4E0EF0EF11C0C5F1F4F2C
-:1094400084E0C80ED11CC330A9F685E40E94D1C9BE
-:10945000882309F488C00E94A7C96B017C0183E0BE
-:109460000E94ADC5882371F0209182023091830261
-:109470004091840250918502C701B6010F94083EC5
-:109480006B017C01C0929606D0929706E0929806F6
-:10949000F092990686E40F94841220E030E0A9014E
-:1094A0000F946840181684F40E94A7C920E030E0A9
-:1094B00040E752E40F94023F6093510270935202CE
-:1094C00080935302909354028091D40583FD28C069
-:1094D0008091D108882321F120918202309183026A
-:1094E0004091840250918502609196067091970692
-:1094F00080919806909199060F94073E2091DE087E
-:109500003091DF084091E0085091E1080F94083E47
-:109510006093DE087093DF088093E0089093E10881
-:10952000CF911F910F91FF90EF90DF90CF90BF9060
-:10953000AF907F906F905F904F900895F6012081DB
-:10954000318142815381C301B2010F94073E6DCF37
-:10955000F80180819181A281B381F7018083918399
-:10956000A283B38367CF8091820290918302A091FE
-:109570008402B09185028093960690939706A093FB
-:109580009806B093990686CFCF93DF93EB010E94A4
-:10959000D1C9882321F0DF91CF910C9457C7CE0118
-:1095A000DF91CF910895CF93DF93EB010E94D1C952
-:1095B000882319F00E9447C7EB01CE01DF91CF91BC
-:1095C0000895CF93DF93C82FD62F0E94D1C9882347
-:1095D00021F0DF91CF910C946FC78C2F0E94D4C5DE
-:1095E000811101C08D2FDF91CF910895FF920F93CC
-:1095F0001F93CF93DF93EC019A81A9812881AA233D
-:1096000031F08A2F42E0AF3F21F441E001C040E059
-:1096100080E0222351F02F3F59F0882359F0622F28
-:1096200073E028130AC072E001C070E060E005C07A
-:1096300071E0FCCF60E0822F72E0992309F44FC003
-:109640009F3FE9F18823E9F1981761F16623D9F189
-:10965000961799F1B0E0092F10E0FD01E01BF10B26
-:10966000F7FF03C0F195E195F109FE2E30E0FD0111
-:10967000E21BF30BF7FF03C0F195E195F1095E2FB3
-:10968000F801E21BF30BF7FF03C0F195E195F10937
-:10969000F51650F4FE16C8F49D01200F311F3695C3
-:1096A0002795822F92E01BC05E1788F0FE1678F097
-:1096B000200F311F36952795622F93E010C091E05F
-:1096C0000EC0892FEFCF692FF8CF5E1788F72A0FCA
-:1096D0003B1F36952795822F692F93E072E024E097
-:1096E000429FA0011124472B50E1959F9001112426
-:1096F000422B0F94D61988819981482F490F5527FD
-:10970000551F8A81840F952F911D21E0833091058B
-:109710000CF420E020930B0603974CF0888199818C
-:10972000AA818093831690938416A0938516DF9167
-:10973000CF911F910F91FF9008958F929F92AF92BA
-:10974000BF92CF92DF92EF92FF92CF93DF9300D040
-:10975000CDB7DEB72FEF8417950731F16A01052EDB
-:10976000000CEE08FF084C01092E000CAA08BB08EB
-:10977000681779072CF0CB01461757070CF4CA017C
-:109780009C01990F440B550B281939094A095B09AB
-:10979000AFEFB0E00F94E53DA70196012819390914
-:1097A0004A095B090F94C63D80913A06821759F029
-:1097B00020933A068FEF89831A8220952B83CE015E
-:1097C00001960E94F6CA0F900F900F90DF91CF91F3
-:1097D000FF90EF90DF90CF90BF90AF909F908F90D1
-:1097E000089586E896E10C94F6CACF93DF9300D0F3
-:1097F000CDB7DEB719828FEF8A831B82CE01019627
-:109800000E94F6CA0F900F900F90DF91CF910895AC
-:1098100083E896E10C94F6CACF93DF9300D0CDB7DE
-:10982000DEB780910B06882369F019821A821B82A9
-:10983000CE0101960E94F6CA0F900F900F90DF9113
-:10984000CF9108950E9408CCF7CFCF92DF92EF928C
-:10985000FF920F931F93CF9390911A02913009F4C6
-:1098600061C0662351F010927E0810927A0810921F
-:109870007B0810927C0810927D08C82F0F941E1D43
-:10988000C0907A08D0907B08E0907C08F0907D082A
-:109890009B01AC012C193D094E095F0969017A0150
-:1098A000F7FC40C020917E08C7FD15C04C2F0C2E40
-:1098B000000C550B4C5F5F4FE22F022E000CFF0B8C
-:1098C0004E175F077CF144EFC42EDD24D394E12CC6
-:1098D000F12C2C1734F438EEC32E33E0D32EE12CC8
-:1098E000F12CC60ED71EE81EF91EC0927A08D0923F
-:1098F0007B08E0927C08F0927D08022F017010E056
-:1099000084E2809FB001819F700D701B112460590B
-:109910007C4F82E390E00E948D2B80917E088F5FC8
-:1099200080937E08CF911F910F91FF90EF90DF9071
-:10993000CF9008950F931F93CF93DF93082F10E0DC
-:1099400097E1899FF0011124E15CF94FC085D18531
-:10995000209729F164817581868197810F94743FE6
-:109960006E5F7F4F24976C177D07CCF486E0809F55
-:10997000E001819FD00D1124CE5ED94F7983688399
-:109980000F941E1D605E714B8F4F9F4F6A837B83C8
-:109990008C839D83DF91CF911F910F91089586E075
-:1099A000809FF001819FF00D1124EE5EF94F12822D
-:1099B000138214821582EECFE62FF0E027E1629F3A
-:1099C000D0011124A15CB94FEE0FFF1FE054FD4FF1
-:1099D000208131812F503109821793070CF49C01AB
-:1099E00019963C932E931897862F0C949ACCAC0121
-:1099F0008091A00881110EC09091010491110BC0BB
-:109A000020916002309161022150310981E04217BA
-:109A100053070CF080E0089597E1899FF00111242D
-:109A2000E15CF94F20E030E040E05FE36481758164
-:109A3000868197810F94083E0F94743FCB010C945C
-:109A4000F7CCCF92DF92EF92FF926B017C0183E320
-:109A5000C816D104E104F10470F082E3C81AD108F9
-:109A6000E108F10862E370E080E090E00F94911C5F
-:109A70000E94A591ECCFC701B6010F94911CFF90F5
-:109A8000EF90DF90CF900C94A591809151090E94A6
-:109A9000E48964E670E080E090E00C9421CD809150
-:109AA000860F813069F09091A21792FB882780F988
-:109AB00092FF07C097FB882780F991E089270895D6
-:109AC00081E008958091091690910A16891B8F7084
-:109AD00031F480919A06811104C00C944FCD81E03D
-:109AE000089580E008959091A21794FB882780F94B
-:109AF00094FF06C081E090915314911101C080E061
-:109B0000089580919A06811110C08091860F82304D
-:109B100061F00E9473CD882349F08091A21782FBE7
-:109B2000882780F991E08927089581E00895E2ED82
-:109B3000F5E010821182089581E00895CF93DF93BC
-:109B4000EC01E62F660FFF0BE151F84CE491E25077
-:109B5000E13108F0B0C0F0E08827EE54F2438F4FB7
-:109B60000D945C41C3CD5BCE5BCE5BCE5BCEEDCDC9
-:109B7000CFCD11CE0FCEEFCD35CE33CE13CE5BCEC3
-:109B800059CE57CE37CE82E1E5E4F3E0DE01019015
-:109B90000D928A95E1F7CE01DF91CF91089581E092
-:109BA00020EB30E03983288321EB30E03B832A83AC
-:109BB0001D821C8223EB30E03F832E8324EB30E0B8
-:109BC000398728871B861A861D861C8692E09E8709
-:109BD0008F8781E0888B198ADECF80E0E1CF81E03A
-:109BE0008F5F20E930E03983288321E930E03B832F
-:109BF0002A8322E930E03D832C8328E930E03F834B
-:109C00002E832AE930E0398728872CE930E03B872A
-:109C10002A8726E930E03D872C8793E0D8CF80E083
-:109C2000DFCF80E0DECF81E08F5F20EA30E0398354
-:109C3000288321EA30E03B832A8322EA30E03D8317
-:109C40002C8328EA30E03F832E832AEA30E03987EC
-:109C500028872CEA30E03B872A8726EA30E03D87D8
-:109C60002C8794E0B4CF80E0DFCF80E0DECF81E0CE
-:109C70008F5F20E231E03983288321E231E03B83AA
-:109C80002A8322E231E03D832C8328E231E03F83C6
-:109C90002E832AE231E0398728872CE231E03B87A6
-:109CA0002A8726E231E03D872C8795E090CF80E03F
-:109CB000DFCF80E0DECF82E1FE0111928A95E9F7E5
-:109CC0006ACF8F929F92AF92BF92CF92DF92EF9224
-:109CD000FF920F93CF93DF931F92CDB7DEB75C0156
-:109CE0007B0149016B01C40ED51EF5018081918174
-:109CF0000F947E3D8983002311F0F7018083BE011C
-:109D00006F5F7F4FC4010F94C40AF5018081918178
-:109D1000019691838083FFEFEF1AFF0AEC14FD0494
-:109D200021F780E00F90DF91CF910F91FF90EF909E
-:109D3000DF90CF90BF90AF909F908F9008959091BB
-:109D4000C00095FFFCCF8093C600089585E40E9473
-:109D50009FCE81E30C949FCECF93DF93EC01FE0165
-:109D600084912196882319F00E949FCEF8CFDF912D
-:109D7000CF9108950F931F93CF938C01C62F89E63F
-:109D800092E30E94ACCEC8010E94ACCE8AE30E944E
-:109D90009FCE80E38C0F0E949FCE8AE0CF911F91CF
-:109DA0000F910C949FCE89E594E30E94ACCE60E0C5
-:109DB00089E494E30E94BACE60E084E394E30E94D5
-:109DC000BACE61E08DE294E30E94BACE61E082E215
-:109DD00094E30E94BACE60E083E194E30E94BACE9D
-:109DE00061E083E094E30E94BACE60E08AEF93E3FF
-:109DF0000E94BACE61E080EF93E30E94BACE60E0A9
-:109E000086EE93E30E94BACE60E08FED93E30E946A
-:109E1000BACE60E087ED93E30E94BACE60E089ECB1
-:109E200093E30E94BACE60E08BEB93E30E94BACE3C
-:109E300060E08CEA93E30E94BACE60E08EE993E39F
-:109E40000E94BACE60E088E893E30E94BACE60E058
-:109E500087E793E30E94BACE60E082E693E30E9434
-:109E6000BACE60E083E593E30E94BACE61E08CE471
-:109E700093E30E94BACE60E08FE393E30E94BACEF0
-:109E800060E088E393E30E94BACE61E08FE293E35F
-:109E90000E94BACE60E08AE193E30E94BACE60E00D
-:109EA0008CE093E30E94BACE60E082E093E30E94EC
-:109EB000BACE60E08BEE92E30E94BACE60E08EED07
-:109EC00092E30E94BACE61E08BEC92E30E94BACE9C
-:109ED00060E08EEB92E30E94BACE61E089EB92E300
-:109EE0000E94BACE60E08CEA92E30E94BACE60E0B3
-:109EF00088E992E30E94BACE60E085E892E30E948E
-:109F0000BACE60E08BE89FE00E9456C5682F617072
-:109F10008CE792E30E94BACE60E08EE692E30C9466
-:109F2000BACEE091761081E6E89FF0011124E85264
-:109F3000FF4E8081811107C08AEA9AE30E94ACCE6D
-:109F40008AE00C949FCE0895CF92DF92EF92FF9219
-:109F50006A017B010E94ACCE42E0C701B601FF90CE
-:109F6000EF90DF90CF900C94FA834F925F926F92B4
-:109F70007F928F929F92AF92BF92CF92DF92EF9299
-:109F8000FF92CF93DF93CDB7DEB72C970FB6F8943F
-:109F9000DEBF0FBECDBF83E50E94D4C58823C9F0C4
-:109FA0000E946FC7809337022C960FB6F894DEBFDD
-:109FB0000FBECDBFDF91CF91FF90EF90DF90CF909C
-:109FC000BF90AF909F908F907F906F905F904F90D9
-:109FD000089562E97DE281E00F94291280913702B1
-:109FE000805D898389E89DE20E94ACCE89810E94D0
-:109FF0009FCE85E89DE20E94ACCE80913702811110
-:10A00000C6C08CE69DE20E94ACCE8AE00E949FCE44
-:10A0100040906D0F50906E0F60906F0F7090700FAA
-:10A020002091390230913A0240913B0250913C021A
-:10A03000C301B2010F94083E69837A838B839C83AA
-:10A040008090710F9090720FA090730FB090740F6A
-:10A0500020913D0230913E0240913F0250914002DA
-:10A06000C501B4010F94083E6D837E838F8398876A
-:10A07000C090750FD090760FE090770FF090780F2A
-:10A08000209141023091420240914302509144029A
-:10A09000C701B6010F94083E69877A878B879C8732
-:10A0A000209145023091460240914702509148026A
-:10A0B000C301B2010F94083E2B013C0120914902DB
-:10A0C00030914A0240914B0250914C02C501B401BB
-:10A0D0000F94083E4B015C0120914D0230914E02DD
-:10A0E00040914F0250915002C701B6010F94083EB3
-:10A0F0006B017C018DE79DE20E94ACCE49815A81C3
-:10A100006B817C818EE499E10E94A4CF4D815E81B8
-:10A110006F8178858FE09CE30E94A4CF49855A85A2
-:10A120006B857C858CE09CE30E94A4CF8BE79DE24D
-:10A130000E94ACCE83E79DE20E94ACCEB301A201A7
-:10A140008EE499E10E94A4CFB501A4018FE09CE3C5
-:10A150000E94A4CFB701A6018CE09CE30E94A4CF8B
-:10A160008AE02C960FB6F894DEBF0FBECDBFDF910C
-:10A17000CF91FF90EF90DF90CF90BF90AF909F90E6
-:10A180008F907F906F905F904F900C949FCE80E760
-:10A190009DE239CF0E94A4CF8AE00C949FCE2F92EB
-:10A1A0003F924F925F926F927F928F929F92AF9267
-:10A1B000BF92CF92DF92EF92FF920F931F93CF93B4
-:10A1C000DF93CDB7DEB7CE55D1090FB6F894DEBF19
-:10A1D0000FBECDBF70E060E085E40E94C4CA082FC6
-:10A1E0008EA3823008F042C083E40E94D1C981115D
-:10A1F0005FC025E02BAB83E50E94D1C9882309F419
-:10A200005BC00E9457C79A8B898B60E085E50E94EE
-:10A21000E1CA2F968FAF2F9760E085E697E30E9403
-:10A220001D3B0F941E1D6B8B7C8B8D8B9E8BE02EAC
-:10A23000002E000CFF08F701A3E0EE0FFF1FAA9508
-:10A24000E1F7EC59FD4F868197810E9789889A88AE
-:10A2500088169906B4F188E597E30E94ACCE89E3AD
-:10A2600097E30E94ACCE0F948E1008C08AEE95E35F
-:10A270000E94ACCE82ED95E30E94ACCEC25ADF4F75
-:10A280000FB6F894DEBF0FBECDBFDF91CF911F9107
-:10A290000F91FF90EF90DF90CF90BF90AF909F9085
-:10A2A0008F907F906F905F904F903F902F90089588
-:10A2B0000E9457C78BAB9FCF48EC50E05A8B498B1D
-:10A2C000A4CF2B893C894D895E89205E314B4F4F4D
-:10A2D0005F4F27962CAF3DAF4EAF5FAF27978CE215
-:10A2E00097E30E94ACCE84E297E30E94ACCE0E943A
-:10A2F000B48587E18E9D90018F9D300D1124A901B9
-:10A30000415C594F5A019FE7DA011A969C93089FC6
-:10A3100080011124F801E15CF94F4F01248135815E
-:10A320004681578163962CAF3DAF4EAF5FAF6397C9
-:10A3300010923A060E9479862B966DAF7EAF8FAF52
-:10A340002B9760E089E197E30E941D3B81E08093B9
-:10A3500074022B893C894D895E892FA338A749A7B0
-:10A360005AA72AAF3BAF4CAF5DAF1FA618AA19AAD8
-:10A370001AAA1BA61CA61DA61EA61F821886198631
-:10A380001A868FE790E0A0E0B0E08F8B988FA98FBE
-:10A39000BA8F1D8690E49C8FACE1AD8FB6E4BE8F82
-:10A3A0001F8E18A219A21AA2FFE7CF2ED12CE12CE2
-:10A3B000F12C1EAE23961CAE1DAE1EAE1FAE239713
-:10A3C0001EAA1FAA18AE19AEE1E0EB8F1C861B86F1
-:10A3D00010E000E0212C312C94012C5F3F4F3DAB6D
-:10A3E0002CABA501465F5F4F2D965FAF4EAF2D970B
-:10A3F00089899A894E964C01990FAA08BB086796DD
-:10A400008CAE9DAEAEAEBFAE679789899A894E97E6
-:10A410004C01990FAA08BB086B968CAE9DAEAEAEF0
-:10A42000BFAE6B9789899A8906974C01990FAA0844
-:10A43000BB086F968CAE9DAEAEAEBFAE6F978091EF
-:10A440007402882309F421C20F941E1D2B013C01C4
-:10A4500090902D0628969FAE2897992009F4FEC16A
-:10A460000E94E59010922D06ACA9BDA91C911196F1
-:10A470000C91119712962C90129713963C902F8D59
-:10A4800038A149A15AA1612F702FC1010F946840D2
-:10A49000181624F41F8F08A329A23AA22D853C8DFB
-:10A4A0004D8D5E8D612F702FC1010F94B13987FFE3
-:10A4B00004C01D870C8F2D8E3E8E612F702FC10121
-:10A4C0000F94743F4B0163966CAD7DAD8EAD9FAD27
-:10A4D00063970F94743FCB0149895A89B4010E9454
-:10A4E0009DCBE989FA894F01FF0FAA08BB08FB8DB4
-:10A4F000FF2309F449C0C501B4010F94B8396BA317
-:10A500007CA38DA32E969FAF2E979B01AC01612F4C
-:10A51000702FC1010F94684018160CF09FC1B30151
-:10A52000A2018FA198A5A9A5BAA5481B590B6A0B32
-:10A530007B0BDB01CA0188589341A109B109B7FD22
-:10A540008DC18F89988DA98DBA8D8C199D09AE0901
-:10A55000BF09B595A795979587952D96EEADFFAD5B
-:10A560002D9780834EAB5FAB68AF79AFFBA1FF8FB8
-:10A570002CA128A33DA139A32E964FAD2E974AA317
-:10A580004B8A5C8A6D8A7E8AC501B4010F94B83902
-:10A590006B8F7BA38CA39DA39B01AC01612F702FBC
-:10A5A000C1010F94B13987FD02C01B8E57C1D30181
-:10A5B000C2018B889C88AD88BE8888199909AA0930
-:10A5C000BB09AC01BD01485853416109710977FDD0
-:10A5D000ECCFAB84BC84AB2809F4FEC08EA89FA846
-:10A5E000A8ACB9AC880E991EAA1EBB1E2EA93FA905
-:10A5F00048AD59AD281B390B4A0B5B0BC701B6019F
-:10A600000F94943DA50194010F94C63DCF88D88C3A
-:10A61000E98CFA8CC20ED31EE41EF51E24E1C2168C
-:10A62000D104E104F1040CF445C13CEEC316D1049D
-:10A63000E104F1040CF038C140E8C416D104E1048F
-:10A64000F1040CF445C1CF8AD88EE98EFA8E8EEFD4
-:10A6500090E0A0E0B0E09C01AD012C193D094E094D
-:10A660005F0969017A0181E197E30E94ACCE6F89AD
-:10A67000788D898D9A8D0F942A0E8CE097E30E9435
-:10A68000ACCEC701B6010F942A0E4D855C8D6D8D41
-:10A690007E8D85E097E30E94A4CF4F8D58A169A1DC
-:10A6A0007AA18EEF96E30E94A4CFAB85BC85139769
-:10A6B0000CF492C0C701B6010F94B83920E030E025
-:10A6C00040E850E40F94173A6F83788789879A8718
-:10A6D0002D853C8D4D8D5E8D6F8D78A189A19AA1C0
-:10A6E0000F94073E2BED3FE049E450E40F94173AF6
-:10A6F00020E030E040E05FE30F94173A9B01AC01AB
-:10A700006F81788589859A850F94023F6D877E8752
-:10A710008F87988BC501B4010F94B8392FE632E1C9
-:10A7200043E85AE30F94173A4B015C012AE939E9EF
-:10A7300049E15FE36D857E858F8598890F94173A8F
-:10A740006F83788789879A879B01AC010F94083EB5
-:10A75000A50194010F94023F6BA77CA78DA79EA72C
-:10A760002F81388549855A85C501B4010F94173A60
-:10A7700020E030E040E05EE30F94173A6FA778AB3B
-:10A7800089AB9AAB4D855E856F85788988EF96E3B6
-:10A790000E94A4CFB501A40182EF96E30E94CAD023
-:10A7A00083EE96E30E94ACCE4F81588569857A8509
-:10A7B0008DED96E30E94A4CF4BA55CA56DA57EA56B
-:10A7C00087ED96E30E94A4CF4FA558A969A97AA95D
-:10A7D00081ED96E30E94CAD08F89988DA98DBA8D9C
-:10A7E0008C0D9D1DAE1DBF1DB595A79597958795A1
-:10A7F0002D96EEADFFAD2D9780838BA8882D082C6C
-:10A80000000C990B9F938F929C849F92AB84AF9284
-:10A810008DEB96E39F938F9388EC96E39F938F93B2
-:10A820001F920E94FA3A2B853C852F5F3F4F3C8751
-:10A830002B870FB6F894DEBF0FBECDBF8B8C8D86F5
-:10A840009BA09C8EACA0AD8EBDA0BE8E4FA258A684
-:10A8500069A67AA628968FAC28978B8E67966CADE2
-:10A860007DAD8EAD9FAD67970F94B839212F302FF6
-:10A87000A1010F94B13987FF30C080EB96E30E94AD
-:10A88000ACCE81E996E30E94ACCE109274020E9495
-:10A89000B4852B968DAC9EACAFAC2B978C829D82F1
-:10A8A000AE82CE0104963AC14BEEC42ED12CE12CDF
-:10A8B000F12CC9CE84E190E0A0E0B0E08F8B988FBE
-:10A8C000A98FBA8F34E1C32ED12CE12CF12CCBCE41
-:10A8D000CF8AD88EE98EFA8EC6CED301C2018AAC59
-:10A8E0009BACACACBDAC88199909AA09BB09B7FDF2
-:10A8F0004DC08EA10E949E848AE00E949FCEA3013B
-:10A9000092012053384F4F4F5F4F2AAF3BAF4CAFB0
-:10A910005DAF8EAC811072C023962CAD3DAD4EADB7
-:10A920005FAD2397612F702FC1010F9468401816F7
-:10A930000CF04EC020E030E040E050E4612F702F7A
-:10A94000C1010F94083E23966CAF7DAF8EAF9FAFD1
-:10A950002397A3019201205E314B4F4F5F4F279603
-:10A960002CAF3DAF4EAF5FAF27976F966CAD7DAD0F
-:10A970008EAD9FAD6F970F94B839212F302FA10165
-:10A980000F94B139881F8827881F8EAF8B899C89C7
-:10A99000AD89BE898FA098A4A9A4BAA488169906E7
-:10A9A000AA06BB0610F4D501C401481A590A6A0A5E
-:10A9B0007B0A21E842162FE4520622E16206710466
-:10A9C00098F184E896E30E94ACCE82E796E35BCFF1
-:10A9D000D301C20127968CAC9DACAEACBFAC27971F
-:10A9E00088199909AA09BB094AE053E269E173E2AF
-:10A9F000B7FDCCCF8EA10E94908FC8CF6B966CAD67
-:10AA00007DAD8EAD9FAD6B970F94B8399B01AC01B6
-:10AA1000612F702FC1010F94B13987FFB7CF47E481
-:10AA200053E267E573E2E6CF8BA8882D880C990B7B
-:10AA3000AB84BC848A159B050CF073C09501233050
-:10AA400031050CF46EC085E696E30E94ACCE84E13D
-:10AA500096E30E94ACCE87EF95E30E94ACCE4F8187
-:10AA6000588569857A8580E196E30E94CAD087EF90
-:10AA700095E30E94ACCE4BA55CA56DA57EA58CE0B0
-:10AA800096E30E94CAD087EF95E30E94ACCE4FA513
-:10AA900058A969A97AA988E096E30E94CAD02F969E
-:10AAA0008FAC2F97882081F18F809884A984BA84F5
-:10AAB00080924A0690924B06A0924C06B0924D06A8
-:10AAC0002CEA35EC47E25EE36BA57CA58DA59EA53F
-:10AAD0000F94173A60934E0670934F06809350067A
-:10AAE000909351062CEA35EC47E25EE36FA578A916
-:10AAF00089A99AA90F94023F609352067093530656
-:10AB000080935406909355062B968DAC9EACAFACBB
-:10AB10002B9789829A82AB82CE0101960E94F6CA57
-:10AB2000A2CB0E94446B8BCCCF93DF936DE572E395
-:10AB30000F942912C6EED8E0488159816A817B8141
-:10AB400084E592E30E94A4CF4C815D816E817F8178
-:10AB50008FE09CE30E94A4CF488559856A857B8558
-:10AB60008CE09CE3DF91CF910C94CAD060ED7CE245
-:10AB70000F942912609165097091660980916709A7
-:10AB8000909168090F94B639AB01BC0187EC9CE247
-:10AB90000E94A4CF40919509509196096091970920
-:10ABA0007091980984EC9CE20E94A4CF409199098D
-:10ABB00050919A0960919B0970919C0981EC9CE2EB
-:10ABC0000E94A4CF4091FE055091FF0560910006C0
-:10ABD000709101068EEB9CE20C94CAD0CF93DF9368
-:10ABE00064E77CE20F942912C5E5D9E04CA95DA980
-:10ABF0006EA97FA98BE69CE20E94A4CF48AD59AD17
-:10AC00006AAD7BAD88E69CE20E94A4CF4CAD5DAD01
-:10AC10006EAD7FAD81EC9CE2DF91CF910C94CAD0F8
-:10AC2000CF93DF9360E57CE20F942912C5E5D9E06C
-:10AC30004CA15DA16EA17FA187E49CE20E94A4CFFC
-:10AC400048A559A56AA57BA58FE09CE30E94A4CFE7
-:10AC50004CA55DA56EA57FA58CE09CE30E94A4CFCA
-:10AC600048A959A96AA97BA989E09CE3DF91CF9102
-:10AC70000C94CAD0CF93DF936BE27CE20F9429123D
-:10AC8000C5E5D9E0688179818A819B810F94B639C5
-:10AC9000AB01BC0182E29CE20E94A4CF6C817D8169
-:10ACA0008E819F810F94B639AB01BC018FE09CE38C
-:10ACB0000E94A4CF688579858A859B850F94B639D3
-:10ACC000AB01BC018CE09CE30E94A4CF6C857D8528
-:10ACD0008E859F850F94B639AB01BC0189E09CE35A
-:10ACE000DF91CF910C94CAD0CF93C62F0E94ACCEE7
-:10ACF0006C2F70E090E080E0CF910D94C00D0E9429
-:10AD000074D68AE00C949FCE69E375E30F94291200
-:10AD100060912E0280E395E30C947FD66CE27DE295
-:10AD20000F94291285E29DE20E94ACCE40918606E6
-:10AD30005091870660918806709189068CE09CE3AB
-:10AD40000C94CAD0CF93C62F0E94ACCE6C2FCC0FE0
-:10AD5000770B880B990BCF910D942A0EEF92FF92EF
-:10AD60000F931F93CF93DF9361E87FEF8FE40E94EF
-:10AD7000C4CAD82F813879F18FEF8D0F8F3058F1F9
-:10AD800080E79FE20E94ACCE11E061E87FEF80E5B2
-:10AD90000E94C4CAC82F813849F083E08C0F8031EB
-:10ADA00028F086E59FE20E94ACCE11E061E87FEFDB
-:10ADB00083E50E94C4CA813881F09FEF980F9830D4
-:10ADC00060F08EE39FE2DF91CF911F910F91FF9092
-:10ADD000EF900C94ACCE10E0D8CF111115C1D13842
-:10ADE00009F4D3E0C13809F4CFEF182F813809F402
-:10ADF00011E08CE9E82E82E0F82E00E081E0F70116
-:10AE000091917F0191544091BC085091BD0860918F
-:10AE1000BE087091BF0804C0769567955795479511
-:10AE20009A95D2F740FF19C06D2F023009F4C3C0C4
-:10AE3000033009F4CDC0013009F4B0C08FEA95E1C8
-:10AE40000F94EA216C2F8FEA95E10F94F020612F87
-:10AE50008FEA95E10F94DF2080E00F5F043079F6F0
-:10AE6000882309F4D1C088E50E949FCE8FEA95E13E
-:10AE70000F94E521682F8DE99EE20E9474D68FEA37
-:10AE800095E10F94E720682F84E99EE20E94A2D604
-:10AE90008FEA95E10F94D620682F8AE89EE20E94FF
-:10AEA0007FD689E50E949FCE83E795E10F94E52147
-:10AEB000682F81EC9EE20E9474D683E795E10F949F
-:10AEC000E720682F88EB9EE20E94A2D683E795E1F7
-:10AED0000F94D620682F8EEA9EE20E947FD68AE5E4
-:10AEE0000E949FCE87E395E10F94E521682F85EEC0
-:10AEF0009EE20E9474D687E395E10F94E720682FC5
-:10AF00008CED9EE20E94A2D687E395E10F94D620B5
-:10AF1000682F82ED9EE20E947FD685E40E949FCE3C
-:10AF20008BEF94E10F94E521682F89E09FE20E9466
-:10AF300074D68BEF94E10F94E720682F80E09FE2B6
-:10AF40000E94A2D68BEF94E10F94D620682F86EF53
-:10AF50009EE20E947FD60E94A6CE8FEB94E10F94D2
-:10AF6000E521682F8DE29FE20E9474D68FEB94E179
-:10AF70000F94E720682F84E29FE20E94A2D68FEB15
-:10AF800094E10F94D620682F8AE19FE2DF91CF9160
-:10AF90001F910F91FF90EF900C947FD683E795E17E
-:10AFA0000F94EA216C2F83E795E10F94F020612F35
-:10AFB00083E795E14FCF87E395E10F94EA216C2F6A
-:10AFC00087E395E10F94F020612F87E395E142CF6D
-:10AFD0008BEF94E10F94EA216C2F8BEF94E10F94A7
-:10AFE000F020612F8BEF94E10F94DF206D2F8FEB1A
-:10AFF00094E10F94EA216C2F8FEB94E10F94F020F1
-:10B00000612F8FEB94E126CFDF91CF911F910F91AC
-:10B01000FF90EF90089585E79AE20C94ACCE8FE60E
-:10B020009AE20C94ACCECF9384E50E94D1C9C09132
-:10B0300051098823D9F00E945BC7C82F8230B4F031
-:10B040000E940FD88DE40E949FCE6091C20870913B
-:10B05000C30890E080E00F94C00D6C2F8CE89FE255
-:10B060000E94A2D68AE00E949FCECFEF8C2FCF9174
-:10B0700008954F925F926F927F928F929F92AF92BC
-:10B08000BF92CF92DF92FF920F931F93CF93DF93E4
-:10B090009091D40593FD13C1D82F0E9413D8C82FC7
-:10B0A00087FD0DC189E40E94D1C9882309F47CC0C1
-:10B0B0000E945BC790E01816190614F481E090E036
-:10B0C00026E0289FF001299FF00D1124EE50FA4F41
-:10B0D00080819181F12C6C2F0E94DCCC61E08D2F5E
-:10B0E0000E94DEBB0C2F0C2E000C110B37E1C302AB
-:10B0F000C0011124FC01E15CF94F6F01608571858D
-:10B10000072E000C880B990B0F94B8394B015C018A
-:10B11000F6014480558066807780A30192010F94E8
-:10B120006840181614F0F11039C00F5C1F4FD11190
-:10B13000BAC0A3019201C501B4010F94684018166A
-:10B140000CF084C0DD24D39489E197E39F938F931F
-:10B150001F930F938DEA95E39F938F931F920E9405
-:10B16000FA3A2DB73EB7295F3F4F0FB6F8943EBF6E
-:10B170000FBE2DBFDD2041F0C09339068DE490E76E
-:10B18000909318128093171211E017C082E50E9465
-:10B19000D1C9882389F00E9457C79DCF1F2D0DC0AC
-:10B1A00060E070E0CB0126C083E50E94D1C9F82E93
-:10B1B0008111F1CFD111EACF10E083E50E94D1C90E
-:10B1C000882331F00E9457C7909319028093180288
-:10B1D00082E40E94D1C9882331F00E9457C790931E
-:10B1E00017028093160286E40E94D4C58823C1F218
-:10B1F0000E94A7C9609312027093130280931402F5
-:10B200009093150201E020E030E0A9010F94B139DC
-:10B21000811101C000E000936D06DD2309F44FC0E9
-:10B22000112309F44CC06F2D8C2FDF91CF911F910A
-:10B230000F91FF90DF90CF90BF90AF909F908F9035
-:10B240007F906F905F904F900C94888682EA95E390
-:10B250009F938F931F930F938DEA95E39F938F9303
-:10B260001F920E94FA3A2DB73EB7295F3F4F0FB6A3
-:10B27000F8943EBF0FBE2DBF7FCF89E197E39F9328
-:10B280008F931F930F938DEA95E39F938F931F9254
-:10B290000E94FA3A8DB79EB707960FB6F8949EBFF4
-:10B2A0000FBE8DBF71CFA3019201C501B4010F94F0
-:10B2B0006840181614F3D12C82EA95E347CFDF914A
-:10B2C000CF911F910F91FF90DF90CF90BF90AF90E3
-:10B2D0009F908F907F906F905F904F9008950F9305
-:10B2E0001F93CF93811116C0C42F8B010E940FD8DA
-:10B2F00089E89FE20E94ACCEC8010E94ACCECC236C
-:10B3000049F08AE30E949FCE8AE0CF911F910F916E
-:10B310000C949FCECF911F910F910895811102C07F
-:10B320000C940FD808951F93CF93DF93D82F162F27
-:10B3300041E061E67DE20E946FD9C0E01C1711F088
-:10B340001F3FD1F58D2F0E948ED940914A06509112
-:10B350004B0660914C0670914D0688E59DE20E9477
-:10B36000A4CF2CEA35EC47E25EE360914E06709183
-:10B370004F0680915006909151060F94023FAB0109
-:10B38000BC0185E59DE20E94A4CF2CEA35EC47E2A2
-:10B390005EE360915206709153068091540690913D
-:10B3A00055060F94173AAB01BC0182E59DE20E945D
-:10B3B000A4CF8AE00E949FCEC13021F4DF91CF91CB
-:10B3C0001F910895C1E0BACFCF93DF93C82F63E4F4
-:10B3D0007DE20F9429128C2F0E948ED961E08AE3BE
-:10B3E0009DE20E9474D6CEE6D6E04C855D856E85E2
-:10B3F0007F858EE499E10E94A4CF488959896A89A2
-:10B400007B898FE09CE30E94A4CF8CE09CE30E94A8
-:10B41000ACCE6C897D898E899F8943E00E94FA8336
-:10B420008AE0DF91CF910C949FCECF93DF93C82F0A
-:10B43000811113C040E060E17CE280E00E946FD99E
-:10B440008091F105811104C083E09CE20E94ACCEA2
-:10B450008AE00E949FCE0E940FD8D091F1058AEF1A
-:10B460009BE20E94ACCE6D2F70E090E080E00F94E4
-:10B470002A0E8AE00E949FCE8C2F0E948ED960E017
-:10B4800081EF9BE20E94A2D64091E9055091EA0526
-:10B490006091EB057091EC058EEE9BE20E94CAD0A4
-:10B4A0008C2F0E948ED961E081EF9BE20E94A2D690
-:10B4B0004091ED055091EE056091EF057091F0051A
-:10B4C0008EEE9BE2DF91CF910C94CAD0CF93C82F20
-:10B4D0004091510982E0C11184E060E00E94092E90
-:10B4E0000E940FD88DE89AE2CC2311F085EA9AE207
-:10B4F000CF910C94ACCECF93DF93EB010E94ACCEF6
-:10B50000BE0190E080E0DF91CF910D94C00DCF930C
-:10B51000DF93EB010E94ACCEBE01DD0F880B990BCF
-:10B52000DF91CF910D942A0E5F926F927F928F924E
-:10B530009F92AF92BF92CF92DF92EF92FF920F93C2
-:10B540001F93CF93DF931F92CDB7DEB77C013901F4
-:10B550008B015B01A40EB51ED12CC12CA016B10627
-:10B5600009F450C0F70180809180F80151908F015B
-:10B570005982C4010F947E3D5816B9F1652DC4015E
-:10B580000F94863DFFEFCF1ADF0AC6018F77992708
-:10B59000892B21F162E070E080E090E00F94911C33
-:10B5A000C4010F947E3D99818917F9F00E940FD84C
-:10B5B00085EF97E20E94ACCE81E00F90DF91CF91B2
-:10B5C0001F910F91FF90EF90DF90CF90BF90AF90C1
-:10B5D0009F908F907F906F905F90089562E070E0F1
-:10B5E00080E090E00E9421CDDBCFBE016F5F7F4FF6
-:10B5F000C3010F94C40AF701808191810196918360
-:10B600008083ACCF80E0D9CF0E947BDA8AE00C94B3
-:10B610009FCE0E94ACCE8AE00C949FCEEF92FF9218
-:10B620001F93CF93DF9383E50E94D4C5882309F449
-:10B6300045C06EEF7FEF84E50E94C4CA182F8230A8
-:10B6400008F01EEF0E946FC7D82F8CE9E82E82E029
-:10B65000F82EC0E0F70181917F010E94D4C58823B4
-:10B6600051F0C23089F0C330A1F0C13041F0D09325
-:10B67000EA150F940112CF5FC43061F719C0D0935F
-:10B68000AE150F940912F7CFD09372150F941112C3
-:10B69000F2CF11163CF4113059F4D093FA140F94F0
-:10B6A0002112E9CFD09336150F9419121111F5CF4D
-:10B6B000DF91CF911F91FF90EF90089588E50E9450
-:10B6C0009FCE8FED9DE20E94ACCE8FEA95E10F9464
-:10B6D000C221882309F44CC087EC9DE20E9409DB5B
-:10B6E00089E50E949FCE86E09EE20E94ACCE83E771
-:10B6F00095E10F94C2218823F1F18EEE9DE20E9424
-:10B7000009DB8AE50E949FCE8DE29EE20E94ACCECC
-:10B7100087E395E10F94C221882381F185E19EE2C0
-:10B720000E9409DB85E40E949FCE84E59EE20E9490
-:10B73000ACCE8BEF94E10F94C221882311F18CE3FE
-:10B740009EE20E9409DB0E94A6CE8BE79EE20E9449
-:10B75000ACCE8FEB94E10F94C2218823A9F083E64D
-:10B760009EE2DF91CF911F91FF90EF900C9409DB47
-:10B7700083ED9DE2B3CF8AEF9DE2C1CF81E29EE2ED
-:10B78000CFCF88E49EE2DDCF8FE69EE2EACF0F9333
-:10B790001F93CF93DF93082F41E062EB7DE20E947D
-:10B7A0006FD9C9EDD5E010E0802F0E948ED9612FAE
-:10B7B00089EA9DE20E94A2D64C815D816E817F81E3
-:10B7C00086EA9DE20E94A4CF488159816A817B81EB
-:10B7D00083EA9DE20E94A4CF80EA9DE20E94ACCE63
-:10B7E0008DED98E10E9409DB2896113029F4DF9154
-:10B7F000CF911F910F91089511E0D6CFFF920F9333
-:10B800001F93CF93DF93F62E042F122F882329F155
-:10B810008CE09BE20E94ACCE88E50E949FCE8CEF2C
-:10B820009AE20E94ACCE8FEA95E10F94F820D82FCF
-:10B83000882361F080EF9AE20E94ACCE88EE9AE213
-:10B84000D13031F084EE9AE2D23011F08DEE9AE2EE
-:10B850000E9409DBC1E0D11101C0C0E0FF2039F135
-:10B860008DE39BE20E94ACCE89E50E949FCE8DE2E3
-:10B870009BE20E94ACCE83E795E10F94F820D82F8D
-:10B88000882361F081E29BE20E94ACCE89E19BE2D9
-:10B89000D13031F085E19BE2D23011F08EE19BE2B4
-:10B8A0000E9409DB81E0D11101C080E0C80F0023B4
-:10B8B00039F18EE69BE20E94ACCE8AE50E949FCED3
-:10B8C0008EE59BE20E94ACCE87E395E10F94F820D1
-:10B8D000D82F882361F082E59BE20E94ACCE8AE4F7
-:10B8E0009BE2D13031F086E49BE2D23011F08FE45C
-:10B8F0009BE20E9409DB81E0D11101C080E0C80F0A
-:10B90000112309F44DC08FE99BE20E94ACCE85E47F
-:10B910000E949FCE8FE89BE20E94ACCE8BEF94E119
-:10B920000F94F820D82F882361F083E89BE20E94CF
-:10B93000ACCE8BE79BE2D13031F087E79BE2D2308F
-:10B9400011F080E89BE20E9409DB81E0D11101C087
-:10B9500080E0C80F80ED9BE20E94ACCE0E94A6CE94
-:10B9600080EC9BE20E94ACCE8FEB94E10F94F82028
-:10B97000D82F882361F084EB9BE20E94ACCE8CEA46
-:10B980009BE2D13031F088EA9BE2D23011F081EBBA
-:10B990009BE20E9409DB81E0D11101C080E0C80F69
-:10B9A000CC2351F060E089ED9BE2DF91CF911F91B4
-:10B9B0000F91FF900C941D3BDF91CF911F910F9140
-:10B9C000FF900895CF93DF9300D0CDB7DEB78C0101
-:10B9D0007B01D42E0E94B4850115110509F481C0A4
-:10B9E0000E940FD8C8010E9409DBE114F10421F480
-:10B9F0009EE6E92E9AE2F92E0E945940FF92EF92BC
-:10BA00001F930F938EE39AE29F938F9381E08F931E
-:10BA10000E94FA3A0E945E2D8FEF89831A821B8260
-:10BA2000CE0101960E94F6CA10914A1616951695F7
-:10BA300085E496E10E94126B012F000FF02EF10EAB
-:10BA40000FB6F894DEBF0FBECDBF83E00E94AA3FC1
-:10BA5000109280161093811689E192E10E94AD4206
-:10BA60004FE25AE2602F80E00E94C46442E25AE250
-:10BA70006F2D80E00E94C46489E496E10F94E7246E
-:10BA80008111E3CF0E940BD88EE49AE20E94ACCEE3
-:10BA900089EE93E0019739F000C00000EEE5F9E08F
-:10BAA0003197F0F7F7CFF89489EE93E0019739F0EA
-:10BAB00000C00000E6EEF3E03197F0F7F7CF0E9408
-:10BAC000B485DD2031F00E943CB7909905C0A8955F
-:10BAD000FCCF0E94FE89F9CF909B02C0A895FCCFB5
-:10BAE000FFCFE114F10421F48EE6E82E8AE2F82E6D
-:10BAF00005E41AE281CF80918C0F90918D0F2FEF8A
-:10BB00003FEF981751F0E92FF0E0E457F04F228112
-:10BB100030E09F5F9F7790938D0FC90108951F922A
-:10BB20000F920FB60F9211240F900FBE0F901F901F
-:10BB300018951F920F920FB60F9211240BB60F9209
-:10BB40002F938F939F93EF93FF939091C600209133
-:10BB50008D0FE0918C0F81E08E0F8F77281729F0E1
-:10BB6000F0E0E457F04F9283E82FE0938C0FFF91C1
-:10BB7000EF919F918F912F910F900BBE0F900FBE61
-:10BB80000F901F9018958EBD0DB407FEFDCF089540
-:10BB90008FEF8EBD0DB407FEFDCF8EB50895909149
-:10BBA00064009B7F90936400982F906A96959CBD4B
-:10BBB00080FD03C091E0863009F490E09DBD0895BA
-:10BBC000CF93DF93EB010E94ACCECE01DF91CF91FA
-:10BBD0000D94D6262F923F924F925F926F927F9252
-:10BBE0008F929F92AF92BF92CF92DF92EF92FF928D
-:10BBF0000F931F93CF93DF9300D000D01F921F921B
-:10BC0000CDB7DEB7B82E80917510843008F0E7C14B
-:10BC100061E6D62E80917510843008F025C18091A0
-:10BC20008C0F90918D0F891B8F7709F41DC10E9495
-:10BC30007BDD97FF0BC00E940BD88BE399E20E943B
-:10BC4000ACCE80918C0F80938D0FE4CF8A3019F0A9
-:10BC50008D3009F000C110927410809112109091F3
-:10BC60001310FC01E25FFF4E1682892B19F40E942B
-:10BC7000A591D0CF109213101092121004E110E190
-:10BC8000F8018191803209F446C08E3409F09DC0DC
-:10BC900066E379E2C8010F942E397C01892B41F0CB
-:10BCA0006EE470E0C80104960F94E241009709F435
-:10BCB000C8014AE050E070E060E001960F94A536BC
-:10BCC0002B013C0180910E1090910F10A09110104B
-:10BCD000B09111100196A11DB11D481659066A06B2
-:10BCE0007B0629F060E083E099E2EF2851F16AE2F7
-:10BCF00070E0C8010F9411429C01009729F1982F20
-:10BD0000901BF12C992349F09150F801E90FF11D96
-:10BD10008081F826F7CF8F01B3CF4AE050E070E082
-:10BD200060E0C90101960F94A5362F2D30E050E058
-:10BD300040E0621773078407950751F060E084EED6
-:10BD400098E20F945B0F66CF60E08AEB98E2F9CF40
-:10BD500040920E1050920F106092101070921110BD
-:10BD6000809135098130E1F467E470E0C8010F94F7
-:10BD7000E2410097A9F04AE050E070E060E00196EF
-:10BD80000F94A536643071058105910548F489E169
-:10BD900098E20E94ACCE60E08FE098E20E941D3BEA
-:10BDA000F80180818D3489F58381823309F446C09E
-:10BDB000883309F1803349F58181843331F58281FB
-:10BDC000813319F50E9439B820C08091A21780FFF5
-:10BDD000C7CF67ED7AE3C8010F942E39009739F089
-:10BDE000DC0113968C9180538A3008F0B9CF60E063
-:10BDF00080E998E2A6CF8281803339F48181813352
-:10BE000021F41092740210924F09809114108B3318
-:10BE100009F400CF80917510843008F0FBCE80913A
-:10BE200077108D9DC001112464E170E188589F4E08
-:10BE30000F94ED4180E00F941C0FECCE8281813392
-:10BE400021F78181813309F741E070E060E084EF00
-:10BE500090E30E94E2DC22E130E144E150E164E75A
-:10BE600070E10E9459C5D6CE8091A21783FDB7C05C
-:10BE700082FFB5C087FDB3C01A82198231E6F32E66
-:10BE800044E0E42E59E6D52E80917510843008F0F8
-:10BE9000A6C00E9491C58111A2C041E050E0BE0140
-:10BEA0006D5F7F4F80E594E10E94167D0B8110E06D
-:10BEB000019711F00FEF1FEF8091581490915914D2
-:10BEC000A0915A14B0915B1480939E1790939F1782
-:10BED000A093A017B093A1170E9491C50F3F100720
-:10BEE00049F4811107C00E940BD883E599E20E94B2
-:10BEF000ACCECACF40917710242F30E00A3061F0E9
-:10BF00000D3051F0882309F45CC089819A81009733
-:10BF100019F001969A8389831092620889819A8127
-:10BF2000F29EF001F39EF00D1124EB58FF4EE80F46
-:10BF3000F91F1382892BA9F50E94A5910E9491C532
-:10BF4000882309F4A1CF80E594E10E945E7E809170
-:10BF50009917882361F18150809399178D9DC001B5
-:10BF6000112462E08156994F0E945EBEE0919917BC
-:10BF700024E0E29FF0011124E556F94F4081518100
-:10BF80006281738140939E1750939F176093A0170F
-:10BF90007093A11780E594E10E94827C0E949279BF
-:10BFA00073CF1A82198281E00F941C0FC7CF0E94B1
-:10BFB000677E8091A21788608093A217E09235096E
-:10BFC00063CF4F9DA001112448585F4E9E012F5F03
-:10BFD0003F4F62E678E0802F0E9459C555CF0F94FD
-:10BFE0001E1D6B017C01B11004C080919A0688234C
-:10BFF00051F0C0923B06D0923C06E0923D06F09292
-:10C000003E06BB24B39480919A0890919B08A0911E
-:10C010009C08B0919D080097A105B10551F1409190
-:10C020003B0650913C0660913D0670913E06840FA0
-:10C03000951FA61FB71FA7019601281B390B4A0B96
-:10C040005B0BDA01C901B7FD14C00E940BD881EB6C
-:10C0500099E20E94ACCE609153097091540986E830
-:10C0600099E20F94E22640E070E060E090E080E02A
-:10C07000F0CE9091091680910A16981741F0C0925F
-:10C080003B06D0923C06E0923D06F0923E0640917F
-:10C090005A0250915B0260915C0270915D02452BE7
-:10C0A000462B472B21F0981701F110926D088091D3
-:10C0B0006B0890916C08909946C0019690936C081B
-:10C0C00080936B0880916B0890916C088E3E924033
-:10C0D0000CF43FC00E940BD883E799E20E94ACCEDB
-:10C0E00082E699E20E94ACCEBECFB110DECF0F94B3
-:10C0F0001E1D00913B0610913C0620913D0630919B
-:10C100003E0680905A0290905B02A0905C02B09034
-:10C110005D02080D191D2A1D3B1D601B710B820B52
-:10C12000930B97FDC2CF80916D088111C0CF81E044
-:10C1300080936D0880E00E9400B781E00E9400B704
-:10C140000E94FE89B4CF181619060CF0BBCF0197D8
-:10C15000B5CF8091670890916808A0916908B09167
-:10C160006A0846015701881A990AAA0ABB0AD5012A
-:10C17000C401B7FD72C19091091680910A165091C1
-:10C1800056024091570298131EC08091D20558174D
-:10C19000C1F08093560281E02091D305421779F1D6
-:10C1A000209357020F941E1D6091560270E084E0A8
-:10C1B0000F94E9186091570270E089E00F94E91834
-:10C1C00020C080E0E9CFE0910A162E2F30E08DE507
-:10C1D000E89FF0011124EC50F64F8081581769F068
-:10C1E0008093560281E09DE5929FF001939FF00DB0
-:10C1F0001124EB50F64F2081D1CF80E0F4CF811194
-:10C20000D1CF80916D06882309F41AC1809051091D
-:10C2100088868090180290901902A88427E1A29E37
-:10C22000F0011124E15CF94FC401029720853185AA
-:10C23000281739070CF404C110910A16712C00E07C
-:10C240001C82612C80910916811709F45FC0812F2F
-:10C2500090E02DE5B22EB89EF001B99EF00D1124AC
-:10C26000E356F64F458956896789708D452B462BD5
-:10C27000472B81F4418D528D638D748D452B462B58
-:10C28000472B41F4458D568D678D70A1452B462B6C
-:10C29000472BC9F14DE5489F9001499F300D11246E
-:10C2A000C9018356964F5C01DC0191966D917D9199
-:10C2B0008D919C9194970F94B6391B012C01F50137
-:10C2C00065A176A187A190A50F94B6399B01AC0119
-:10C2D000C201B1010F94023FD50111962D913D91FC
-:10C2E0004D915C9114970F94173A2B015C01272D07
-:10C2F000302F4C81562D0F946840181624F4742C5E
-:10C30000052DAC826B2C1F5F1F709CCFB401990C64
-:10C31000880B990B0F94B839562EA72EB82E192FCB
-:10C320002091120230911302409114025091150293
-:10C33000672D702F8C81962D0F94173A252D3A2D4D
-:10C340004B2D512F0F94083E362E472E782E092F55
-:10C350008090160290901702262F372F482F592FC2
-:10C36000652D7A2D8B2D912F0F9468401816D4F0DF
-:10C37000B401990C880B990B0F94B839562EA72E3F
-:10C38000B82E192F262F372F482F592F632D742D94
-:10C39000872D902F0F946840181624F0532CA42C4E
-:10C3A000B72C102F209163083091640840916508E4
-:10C3B000509166082C833D834E835F83252D3A2D53
-:10C3C0004B2D512F6C817D818E819F810F94684010
-:10C3D000181604F520E037ED43EA5CE3652D7A2D6D
-:10C3E0008B2D912F0F94173A4B015C0128E431EE0D
-:10C3F0004AE75FE36C817D818E819F810F94173ABC
-:10C400009B01AC01C501B4010F94083E562EA72E26
-:10C41000B82E192F852D9A2DAB2DB12F809363083F
-:10C4200090936408A0936508B0936608652D7A2DF3
-:10C430008B2D912F0F94743FCB0168850E94DCCC2B
-:10C4400034E6C30ED11CE11CF11CC0926708D092E7
-:10C450006808E0926908F0926A080E94A5918091AC
-:10C460003509882309F42BC190910901892F809502
-:10C470008170109158021817D1F12091A2172064F1
-:10C480002093A2178093580290FD0FC064EF71E0D3
-:10C4900080E090E00E9421CD0E948F7E8091A217C3
-:10C4A00084FD46C1112319F102C00E94777E12302B
-:10C4B00008F41EC100E00E94DE3F83E08093750215
-:10C4C0000F941E1D6C597F4F8F4F9F4F6093FB033E
-:10C4D0007093FC038093FD039093FE03002339F0D7
-:10C4E000123029F481E0809398170F9413270F944A
-:10C4F0001E1D6B017C01109159021123F1F08091F6
-:10C5000050098823D1F040917608509177086091C6
-:10C5100078087091790846015701841A950AA60A8D
-:10C52000B70AB501A40177FD1AC0833009F4FBC036
-:10C530000CF0EAC081300CF0EFC0212F30E0A8EE03
-:10C54000B3E00F94F83DC60ED71EE81EF91EC09248
-:10C550007608D0927708E0927808F0927908809176
-:10C56000860F813009F073C00F941E1D6B017C0192
-:10C570008091720890917308A0917408B091750829
-:10C58000A7019601281B390B4A0B5B0BDA01C90185
-:10C59000B7FD3AC0D701C601805F984DAF4FBF4F7E
-:10C5A0008093720890937308A0937408B0937508F1
-:10C5B0008090D5059090D605A090D705B090D8056D
-:10C5C0000E94E4BAAB01BC014093D5055093D60557
-:10C5D0006093D7057093D8058091D6089091D708BD
-:10C5E000A091D808B091D90888199909AA09BB095E
-:10C5F000840F951FA61FB71F8093D6089093D70866
-:10C60000A093D808B093D90880916E0890916F08D4
-:10C61000A0917008B091710846015701881A990AD3
-:10C62000AA0ABB0AD501C401B7FD11C020E8C20E99
-:10C630002EEED21E26E3E21EF11CC0926E08D092AE
-:10C640006F08E0927008F09271080E94BC8E0E9400
-:10C65000312B0E94446B80919908882381F10F94BB
-:10C660001E1D6B017C018091950890919608A09108
-:10C670009708B091980846015701881A990AAA0AA2
-:10C68000BB0AD501C401B7FD1AC02091990830E05A
-:10C69000A8EEB3E00F94F83DC60ED71EE81EF91EB3
-:10C6A000C0929508D0929608E0929708F092980868
-:10C6B000809151090E949E848AE00E949FCE289614
-:10C6C0000FB6F894DEBF0FBECDBFDF91CF911F91A3
-:10C6D0000F91FF90EF90DF90CF90BF90AF909F9021
-:10C6E0008F907F906F905F904F903F902F90089524
-:10C6F00060E085E09AE20E941D3B80914009811133
-:10C70000D9CE0E945E2DD6CE843009F016CF0E947D
-:10C710000FD884EC99E204C00E940FD883EF99E20D
-:10C720000E94ACCE0ACF0E940FD88CED99E2F8CFD0
-:10C73000123028F460E083E19AE20E941D3B01E0A0
-:10C74000BACE2F923F924F925F926F927F928F92CA
-:10C750009F92AF92BF92CF92DF92EF92FF920F9390
-:10C760001F93CF93DF93CDB7DEB76B970FB6F894D7
-:10C77000DEBF0FBECDBF9091D40593FD47C1182FEA
-:10C7800089E40E94D1C9882309F46DC10E945BC766
-:10C7900090E01816190614F481E090E026E0289F36
-:10C7A000F001299FF00D1124EE50FA4F8281938100
-:10C7B0001F828436910514F084E690E0909337064A
-:10C7C000809336060E9422C60E943BC860E0882300
-:10C7D00009F40DC183EC95E30E941D3B01E0612F3C
-:10C7E0006027812F0E94DEBB112309F435C1C09060
-:10C7F0003206D0903306E0903406F0903506CC8AAD
-:10C80000DD8AEE8AFF8A8FE780933A0600937402EE
-:10C81000412C512C3201188619861A861B86188ADB
-:10C820002CE3298B3CE13A8B46E44B8B212C1C8278
-:10C8300050E85D838FEB8E83312C609136067091CA
-:10C840003706072E000C880B990B0F94B8397B0123
-:10C850008C01222D3C814D815E810F94B13988235A
-:10C86000B9F0209132063091330640913406509150
-:10C870003506CF80B701C801C110BCC00F94B139D3
-:10C88000382E331C3324331C2E2CFC820D831E8344
-:10C890000F941E1D4B015C01DC01CB01C884D984BF
-:10C8A000EA84FB848C199D09AE09BF09B7FD11C04C
-:10C8B000A501940128513C4F4F4F5F4F288739877E
-:10C8C0004A875B87809151090E949E848AE00E947A
-:10C8D0009FCE80E00E94EADD0F941E1D60933B0610
-:10C8E00070933C0680933D0690933E06109132066D
-:10C8F00000913306D0903406C09035063110C3C085
-:10C90000622D7C818D819E810F94743F4B01612F3C
-:10C91000702F8D2D9C2D0F94743F6C877D878E8793
-:10C920009F870C851D856C897D898E899F890F94D1
-:10C93000743F9B018616970609F487C06401092C91
-:10C94000000CEE08FF08C88ED98EEA8EFB8E6B01B4
-:10C95000072E000CEE08FF08061717072CF09401AD
-:10C96000081519050CF49801032E000C440B550B07
-:10C970002C193D094E095F09AFEFB0E00F94E53D7A
-:10C98000288D398D4A8D5B8D2C193D094E095F0923
-:10C990000F94C63D80913A06821759F020933A06CB
-:10C9A00029831A82DD24DA94DB82CE0101960E946B
-:10C9B000F6CA80917402882309F1332009F447C034
-:10C9C0006091360670913706072E000C880B990B84
-:10C9D0000F94B839209132063091330640913406D5
-:10C9E000509135060F94B13987FD27CF07C084EBEE
-:10C9F00095E3F2CE0F94B13987FF21C08091740284
-:10CA0000882321F0109274020F948E106B960FB64B
-:10CA1000F894DEBF0FBECDBFDF91CF911F910F9174
-:10CA2000FF90EF90DF90CF90BF90AF909F908F904E
-:10CA30007F906F905F904F903F902F9008952E2C95
-:10CA4000FC820D831E83312C23CF2FEFA3CF0E94B6
-:10CA50003BC88111F2CED2CF8DE295EC90931812A3
-:10CA600080931712D3CF83E50E94D1C98F838111A0
-:10CA700007C0112359F282E50E94D1C9882331F2FF
-:10CA80000E9457C796CE411451046104710441F0CD
-:10CA9000D501C40184199509A609B709B7FD89CF45
-:10CAA000212F302F4D2D5C2D688979898A899B89AA
-:10CAB0000F94073E20E030E040E85FE30F94B13987
-:10CAC00087FD9CCF2401350120E6420E2AEE521E3E
-:10CAD000611C711C188B098BDA8ACB8A6ACF1F9371
-:10CAE000CF93DF93D82F162F8091D40583FD15C0E7
-:10CAF000C091510987E1C89FF0011124E15CF94F11
-:10CB0000808591850E94F7CC882339F06C2F809125
-:10CB10006002909161020E94DCCC40915109612F2A
-:10CB20008BE00E94092EDD2341F061E080915109E4
-:10CB3000DF91CF911F910C9488868091A00891E09D
-:10CB400089278093740217E1809174028823F9F099
-:10CB5000C09151091C9FE0011124C15CD94F20E014
-:10CB600030E040E05FE36C817D818E819F810F9496
-:10CB7000083E0F94743F28853985621B730B77FF3D
-:10CB800003C07195619571096230710544F410928A
-:10CB900074028091D40583FF06C081E019C080E053
-:10CBA0000E94EADDD1CFE091510987E1E89FF001D1
-:10CBB0001124E15CF94F808591850E94F7CC882390
-:10CBC00061F30E940FD88CE79AE20E94ACCE80E01D
-:10CBD000DF91CF911F9108956F927F928F929F92D4
-:10CBE000AF92BF92CF92DF92EF92FF920F931F937B
-:10CBF000CF93DF9300D000D01F921F92CDB7DEB746
-:10CC00005C014B013A01F22E68011091220610924C
-:10CC10001E0610921F0610922006109221061092F6
-:10CC2000220680E00E949ACC00912706012B1092E8
-:10CC300023061092240610922506109226061092C2
-:10CC4000270681E00E949ACC6091510987E1689F94
-:10CC5000F0011124E15CF94F808591858C159D05CB
-:10CC60001CF4C6010E94DCCCE12C2F2DA301B401E1
-:10CC7000C5010F948D121C141D0454F460915109C8
-:10CC8000C6010E94DCCC60E0809151090E94888638
-:10CC90004091510960E088E00E94092E60E081E047
-:10CCA0000E946FE580E090E0A0E7B2E489839A8378
-:10CCB000AB83BC8380E090E0A0E0B0EC8D839E83EA
-:10CCC000AF83B887BE016F5F7F4FCE0105960E948C
-:10CCD0004EB50F941711811168C080918202909116
-:10CCE0008302A0918402B091850240917E0250910E
-:10CCF0007F02609180027091810280908308909001
-:10CD00008408A0908508B090860800917F08109153
-:10CD10008008209181083091820800938A06109340
-:10CD20008B0620938C0630938D0680928E0690920F
-:10CD30008F06A0929006B09291064093920650936F
-:10CD4000930660939406709395068093960690934D
-:10CD50009706A0939806B093990680E090E0A8EC1F
-:10CD6000B2E489839A83AB83BC83CE0101960E948F
-:10CD7000E3B48091870890918808A0918908B091C8
-:10CD80008A088093920690939306A0939406B0939A
-:10CD9000950680E090E0A0EAB0E489839A83AB83B3
-:10CDA000BC83CE0101960E94E3B4812C912C80E7D4
-:10CDB000A82E82E4B82E89829A82AB82BC8280E05F
-:10CDC00090E0A0E0B0E48D839E83AF83B887BE017E
-:10CDD0006F5F7F4FCE0105960E944EB520E030E098
-:10CDE000A90160918B0870918C0880918D089091B9
-:10CDF0008E080F94B13987FF0BC089829A82AB826B
-:10CE0000BC82BE016F5F7F4F8BE898E00E944EB5F9
-:10CE100080918B0890918C08A0918D08B0918E081C
-:10CE20008093820290938302A0938402B093850240
-:10CE30008093960690939706A0939806B0939906D0
-:10CE400086E996E00E9498B1809151098093000490
-:10CE50000E945E2D80919A06815080939A0680915F
-:10CE6000860F823011F40E94A6BB80919A06882317
-:10CE700029F0815080939A060E9492790F948E1027
-:10CE80000E945E2D28960FB6F894DEBF0FBECDBF70
-:10CE9000DF91CF911F910F91FF90EF90DF90CF9096
-:10CEA000BF90AF909F908F907F906F9008954F921A
-:10CEB0005F926F927F92AF92BF92CF92DF92EF928A
-:10CEC000FF921F93CF93DF9300D000D01F921F9249
-:10CED000CDB7DEB75C01E62EF42E642F80E00E9411
-:10CEE0006FE5182F81111DC0EE2031F0809151099E
-:10CEF000809300040E945E2D812F28960FB6F8942F
-:10CF0000DEBF0FBECDBFDF91CF911F91FF90EF909D
-:10CF1000DF90CF90BF90AF907F906F905F904F90D9
-:10CF20000895EE2031F0409151096F2D83E00E9469
-:10CF3000092E80E090E0A0E7B2E48D839E83AF836A
-:10CF4000B88780E090E0A0E5B1EC89839A83AB8359
-:10CF5000BC83BE016B5F7F4FCE0101960E944EB530
-:10CF600068E873E180E090E00E9421CDC12CD12CD3
-:10CF700088ECE82E81E4F82ECD82DE82EF82F886FE
-:10CF800080E090E0A8EAB1E489839A83AB83BC8314
-:10CF9000BE016B5F7F4FCE0101960E944EB540905F
-:10CFA0008D0950908E0960908F0970909009C09201
-:10CFB0008D09D0928E09E0928F09F092900980E05D
-:10CFC00090E0A0E2B1E48D839E83AF83B887F50142
-:10CFD00080819181A281B38189839A83AB83BC8351
-:10CFE000BE016B5F7F4FCE0101960E944EB540920D
-:10CFF0008D0950928E0960928F09709290090E945B
-:10D0000045CD7ACFAF92BF92CF92DF92EF92FF924F
-:10D010000F931F93CF93DF9300D01F92CDB7DEB74E
-:10D020007C015B01D42E890181E080939A06809176
-:10D03000A21782FF08C087FD06C08B7F8093A217CE
-:10D0400082E080939A060E94FFBB80E1E6E7F2E06F
-:10D05000AFE7B8E001900D928A95E1F70F941711B0
-:10D06000C82E0E947F8F20E030E0A901F701608187
-:10D070007181828193810F94B1398823A1F08091CD
-:10D0800051090E940CCD81110EC080E090E0A0E714
-:10D09000B2E489839A83AB83BC83BE016F5F7F4F09
-:10D0A000C7010E944EB5C11004C0B50180E00E94C6
-:10D0B0007C2A20E030E0A901F80160817181828141
-:10D0C00093810F94B139882329F042E06D2DC80176
-:10D0D0000E9457E70E9445CD81E00F900F900F907E
-:10D0E0000F90DF91CF911F910F91FF90EF90DF9004
-:10D0F000CF90BF90AF900895CF92DF92EF92FF92C2
-:10D10000CF93DF936B017C01D42FC091500983E052
-:10D110008093500981E080934F09C114D104E10448
-:10D12000F10431F00F941E1DC60ED71EE81EF91E25
-:10D1300080914F09882389F0C114D104E104F104DE
-:10D1400021F48D2F0E94EADDF3CF0F941E1D6C1980
-:10D150007D098E099F0997FDF4CF10924F098091A8
-:10D16000FF0382FF07C062E370E080E090E00E946E
-:10D1700021CDF5CFC0935009DF91CF91FF90EF9073
-:10D18000DF90CF9008951F93CF93DF93D82FC62FB2
-:10D190000E9466DA61E08C2F0E9425CC0F941E1D40
-:10D1A000685370458F4F9F4F60931E0670931F0604
-:10D1B0008093200690932106109222060F941E1D44
-:10D1C000685370458F4F9F4F6093230670932406DA
-:10D1D00080932506909326061092270610915009F9
-:10D1E00083E08093500981E080934F0980914F093B
-:10D1F000882309F46BC060E08C2F0E9425CC8091BD
-:10D200002206811105C080912706882309F45AC09F
-:10D210004091510960E08AE00E94092E0E940FD8D7
-:10D2200087EC9AE20E94ACCE41E060E070E0CB0176
-:10D230000E947CE810921E0610921F061092200693
-:10D24000109221061092220680E00E949ACC109241
-:10D25000230610922406109225061092260610929C
-:10D26000270681E00E949ACC60E080E00E946FE592
-:10D270008D2F0E9466DA0F941E1D685370458F4FE4
-:10D280009F4F60931E0670931F0680932006909315
-:10D290002106109222060F941E1D685370458F4F71
-:10D2A0009F4F6093230670932406809325069093E6
-:10D2B00026061092270681E080934F0961E08C2FAB
-:10D2C0000E9425CC81E00E94EADD90CF10935009A6
-:10D2D000DF91CF911F910895AF92BF92CF92DF92CD
-:10D2E000EF92FF920F931F93CF93DF93CDB7DEB7EB
-:10D2F000A0970FB6F894DEBF0FBECDBF0E9413D823
-:10D30000182F87FD30C1482F61E081E00E94092E6F
-:10D31000B0905109812F012E000C990BB8161906F7
-:10D3200021F060E0812F0E947DB585E40E94D1C983
-:10D33000C12CD12CE12C90E4F92E882379F00E94A5
-:10D34000A7C96B017C0120E030E0A9010F9468407F
-:10D3500087FF04C0F7FAF094F7F8F094F7FAF09426
-:10D36000F7F8F094C98EDA8EEB8EFC8E8CE0E7E550
-:10D37000F3E0DE01119601900D928A95E1F788E5C0
-:10D380000E94D1C9882339F088E50F9484126983FB
-:10D390007A838B839C8389E50E94D1C9882339F0E5
-:10D3A00089E50F9484126D837E838F8398878AE545
-:10D3B0000E94D1C9882339F08AE50F9484126987C5
-:10D3C0007A878B879C8700915109E02EF12C8CE0A5
-:10D3D000089F800111240259194FF80120813181E1
-:10D3E0004281538169817A818B819C810F94083EAF
-:10D3F00069837A838B839C83F801248135814681FC
-:10D4000057816D817E818F8198850F94083E6D8351
-:10D410007E838F839887F8012085318542855385E7
-:10D4200069857A858B859C850F94083E69877A8704
-:10D430008B879C87F70183E0EE0FFF1F8A95E1F74A
-:10D44000E752FA4FC080D180E280F38085E50E94E8
-:10D45000D1C9882321F00E94A7C96B017C0120E07B
-:10D4600030E0A901C701B6010F94684087FF04C0EE
-:10D47000F7FAF094F7F8F094F7FAF094F7F8F094DC
-:10D48000CD8EDE8EEF8EF8A26AE070E082E40E941C
-:10D49000C4CAA82E80919A0681115DC09E01235EA8
-:10D4A0003F4F41E0BE016F5F7F4FCE0149960E9422
-:10D4B00002E8882309F44FC06A2D81E00E94C3E886
-:10D4C00070E060E082E50E94C4CA8C0180E090E0D8
-:10D4D000A8E4B2E48D8B9E8BAF8BB88FE09151099D
-:10D4E00088E0E89FF0011124E752FA4FC480D5800C
-:10D4F000E680F7808CE40E94D1C9882321F00E9445
-:10D50000A7C96B017C0120E030E0A901C701B60189
-:10D510000F94684087FF04C0F7FAF094F7F8F0948E
-:10D52000C98ADA8AEB8AFC8A80E090E0A0EAB2E459
-:10D530008D879E87AF87B88B80919A06882359F094
-:10D540002A2DAE014B5E5F4FBE016F5E7F4FCE0155
-:10D550000D960E94ECE5809151098B1521F060E059
-:10D560008B2D0E947DB5A0960FB6F894DEBF0FBE3E
-:10D57000CDBFDF91CF911F910F91FF90EF90DF9082
-:10D58000CF90BF90AF900895CF92DF92EF92FF922D
-:10D590000F931F93CF93DF93CDB7DEB76C970FB682
-:10D5A000F894DEBF0FBECDBF8CE40E94D1C98823A2
-:10D5B00009F4F1C00E94A7C96B017C0120E030E0B2
-:10D5C000A9010F94684087FF04C0F7FAF094F7F8B8
-:10D5D000F094F7FAF094F7F8F094C98EDA8EEB8EA7
-:10D5E000FC8E8CE0E7E5F3E0DE01119601900D92F0
-:10D5F0008A95E1F788E50E94D1C9882389F088E5FA
-:10D600000F94841220916D0F30916E0F40916F0F27
-:10D610005091700F0F94073E69837A838B839C83AC
-:10D6200089E50E94D1C9882389F089E50F94841285
-:10D630002091710F3091720F4091730F5091740FC0
-:10D640000F94073E6D837E838F8398878AE50E94BF
-:10D65000D1C9882339F08AE50F94841269877A87C3
-:10D660008B879C87F09051098CE0F89E80011124F3
-:10D670000259194FF801208131814281538169811A
-:10D680007A818B819C810F94083E69837A838B8396
-:10D690009C83F80124813581468157816D817E818B
-:10D6A0008F8198850F94083E6D837E838F83988742
-:10D6B000F801208531854285538569857A858B857A
-:10D6C0009C850F94083E69877A878B879C87809119
-:10D6D000A21782FB112710F982FF05C087FB1127D3
-:10D6E00010F981E018274F2D61E080E00E94092E9B
-:10D6F00060E080E50E94E1CA082F1D861E861F8615
-:10D70000188A80919A06811137C09E01235F3F4F8E
-:10D71000402FBE016F5F7F4FCE0149960E9402E805
-:10D72000882351F1112311F0002331F160E080E0F2
-:10D730000E94C3E8898D9A8DAB8DBC8DB0588D8BBE
-:10D740009E8BAF8BB88F198A1A8A1B8A1C8A1D86FA
-:10D750001E861F86188A80919A06882369F010E039
-:10D7600000E020E0AE014B5E5F4FBE016F5E7F4F79
-:10D77000CE010D960E94ECE56C960FB6F894DEBFD4
-:10D780000FBECDBFDF91CF911F910F91FF90EF9012
-:10D79000DF90CF900895C12CD12CE12C80E4F82E9D
-:10D7A00018CF2F923F924F925F926F927F928F92FB
-:10D7B0009F92AF92BF92CF92DF92EF92FF920F9320
-:10D7C0001F93CF93DF93CDB7DEB7CD58D1090FB6F6
-:10D7D000F894DEBF0FBECDBFC357DF4F8883CD584F
-:10D7E000D040C0905009E196CFAEE19721E0209360
-:10D7F00050098091C4088D3409F4E1C4843511F4D2
-:10D800000D94CA00873409F041C10091C2081091FB
-:10D81000C3080531110509F401C308F03AC1043009
-:10D82000110508F02FC1809135090230110508F467
-:10D83000EFC2833008F4F2C233243394023011056E
-:10D8400009F0312C0E94DEC982E50E94D1C98823EB
-:10D8500009F4FDC20E94A7C96B017C0120E030E001
-:10D86000A9010F94B139882309F405C140907602CB
-:10D8700050907702609078027090790220917A023D
-:10D8800030917B0240917C0250917D0228AF39AFEC
-:10D890004AAF5BAF80908A0690908B06A0908C0672
-:10D8A000B0908D0680918E0690918F06A091900683
-:10D8B000B09191068CAF9DAFAEAFBFAFA501940103
-:10D8C000C301B2010F94B13981110DC02CAD3DAD32
-:10D8D0004EAD5FAD68AD79AD8AAD9BAD0F94B139FA
-:10D8E000882309F4C8C0A3019201C501B4010F94B3
-:10D8F000073E20E030E040E05FE30F94173A6CAB66
-:10D900007DAB8EAB9FAB28AD39AD4AAD5BAD6CAD99
-:10D910007DAD8EAD9FAD0F94073E20E030E040E03E
-:10D920005FE30F94173A68AF79AF8AAF9BAF20E0FF
-:10D9300030E0A901C701B6010F94B139881F8827CB
-:10D94000881F381609F47AC220E030E040E85FEB27
-:10D950002CAF3DAF4EAF5FAF2CA93DA94EA95FA93B
-:10D96000CA01B9010F94173A4B015C0128AD39ADDA
-:10D970004AAD5BADCA01B9010F94173A9B01AC01E6
-:10D98000C501B4010F94083E0F94B6404B015C01F1
-:10D99000AC019B01C701B6010F94073E2B013C016E
-:10D9A000A5019401C701B6010F94083E9B01AC018B
-:10D9B000C301B2010F94173A6B017C0120E030E003
-:10D9C000A9010F946840412C512C320187FD06C0FB
-:10D9D000C701B6010F94B6402B013C0168AD79AD8B
-:10D9E0008AAD9BAD9058A50194010F94023F2CADD8
-:10D9F0003DAD4EAD5FAD0F94173AA30192010F9468
-:10DA0000173A2CA93DA94EA95FA90F94083E6B01B6
-:10DA10007C01A50194016CA97DA98EA99FA90F94F1
-:10DA2000023F2CAD3DAD4EAD5FAD0F94173AA30153
-:10DA300092010F94173A28AD39AD4AAD5BAD0F9402
-:10DA4000083E6CAB7DAB8EAB9FAB20E030E0A90114
-:10DA5000C701B6010F94B13981110D941F0120E067
-:10DA600030E0A9016CA97DA98EA99FA90F94B139B5
-:10DA700081110D941F010E940BD88FE99FE20E9433
-:10DA8000ACCECCC10430110509F431C30F94761229
-:10DA9000C5C10A35110509F481C308F048C10B312D
-:10DAA000110509F45EC30C31110581F70F941711AC
-:10DAB000811111C08091BC089091BD08A091BE0851
-:10DAC000B091BF08FEE0B695A79597958795FA9512
-:10DAD000D1F780FDA3C10E947F8F109238020F946E
-:10DAE0001E1D60933B0670933C0680933D06909309
-:10DAF0003E06D090510961E080E00E947DB58091A2
-:10DB0000510290915202A0915302B091540280931D
-:10DB1000910890939208A0939308B09394088091F1
-:10DB20002002909121029093900880938F0884E6C0
-:10DB300090E0909321028093200281E08093E3089B
-:10DB40000E9471B98091BC089091BD08A091BE0857
-:10DB5000B091BF08A7FBFF24F0F80B2F0170B1FBB9
-:10DB6000882780F9F01203C08F1509F412C3182F0B
-:10DB700082E50E94D1C9882311F40D94EB000E9424
-:10DB8000A7C93B014C0120E030E0A9010F94B13955
-:10DB90008823D9F1A0907E02B0907F02C0908002CD
-:10DBA000E090810295014C2D5E2DB301C4010F94CC
-:10DBB000B13987FD03C05301C82CE92C80E090E007
-:10DBC000A0E8B0E48C8F9D8FAE8FBF8F20E030E057
-:10DBD00046E153E4B5018C2D9E2D0F94B13987FD9C
-:10DBE00006C0A12CB12C56E1C52E63E4E62EC5017A
-:10DBF000AC2DBE2D89839A83AB83BC83BE01645E4A
-:10DC00007F4FCE0101960E94C4B4FF2009F45DC08D
-:10DC1000002309F457C010927602109277021092F6
-:10DC200078021092790210927A0210927B0210927E
-:10DC30007C0210927D020E947BB58EED9BE6ADE8E2
-:10DC4000B2E488A799A7AAA7BBA7EBEEF4E1659178
-:10DC500075918591949120E030E040EC5FE30F9462
-:10DC6000173A905869837A838B839C83E7EEF4E1BB
-:10DC7000659175918591949120E030E040EC5FE3EF
-:10DC80000F94173A6C8F7D8F8E8F9F8FAE01485DFA
-:10DC90005F4FBE016F5F7F4FCE014C960E94A2B4D2
-:10DCA0000E94D6BA109276021092770210927802F1
-:10DCB0001092790210927A0210927B0210927C02EA
-:10DCC00010927D0280E00E9459B7002319F081E094
-:10DCD0000E9459B7112319F082E00E9459B70E949F
-:10DCE0007BB58091E2088093E30880919108909140
-:10DCF0009208A0919308B091940880935102909358
-:10DD00005202A0935302B093540280918F089091D5
-:10DD10009008909321028093200261E08D2D0E9453
-:10DD20007DB583E0809375020E94BBB877C00B3548
-:10DD3000110509F436C20C35110509F0A7CE4CE9DE
-:10DD4000C42E42E0D42EF12CE12C00E010E0D601EC
-:10DD50008D916D010E94D1C9382E882309F448C0E5
-:10DD60000E94A7C94B015C01133059F0F701E35938
-:10DD7000F04F20813181428153810F94073E4B0146
-:10DD80005C01F701EA58FD4F2081318142815381C6
-:10DD9000C501B4010F94073E2B013C012DEB37E385
-:10DDA00046E855EB0F94684087FD0AC02DEB37E33A
-:10DDB00046E855E3C301B2010F94B1391816C4F413
-:10DDC000133009F4F2C1F701E655FA4F5F01A301E0
-:10DDD000920160817181828193810F94083ED50107
-:10DDE0006D937D938D939C931397812F0E94FAB22C
-:10DDF0001F5FB4E0EB0EF11C143009F0A8CF002334
-:10DE000021F082E892E00E9498B10E94BBB806C05F
-:10DE1000833020F00E94DEC90E94C2B3C357DF4F97
-:10DE2000C880CD58D040C11002C00E9491CFE19669
-:10DE3000DFACE197D09250090C944AF780E090E073
-:10DE4000A0E8BFE38CAF9DAFAEAFBFAF85CD89E497
-:10DE50000E94D1C9C12CD12C7601882321F00E94C7
-:10DE6000A7C96B017C018AE40E94D1C9882311F4FF
-:10DE70000D9410010E94A7C9E4CD28962CAD3DADAC
-:10DE80004EAD5FAD289768AD79AD8AAD9BAD0F946F
-:10DE9000173A6B017C012C962CAD3DAD4EAD5FADBC
-:10DEA0002C976CAD7DAD8EAD9FAD0F94173A9B0155
-:10DEB000AC01C701B6010F94083E6B017C012C96A2
-:10DEC0002CAD3DAD4EAD5FAD2C9768AD79AD8AAD53
-:10DED0009BAD0F94173A4B015C0128962CAD3DADDC
-:10DEE0004EAD5FAD28976CAD7DAD8EAD9FAD0F94FF
-:10DEF000173A9B01AC01C501B4010F94073EA7017D
-:10DF000096010F94873E6B017C0120E030E0A9016F
-:10DF10000F94B139882311F40D94B60520E030E058
-:10DF2000A901C701B6010F94B13987FF2CC082E067
-:10DF300090E083298130910549F1029791F120E029
-:10DF400030E0A901C701B6010F94684026013701EE
-:10DF500087FF04C077FA709477F870942BED3FE058
-:10DF600049EC50E4C301B2010F94023F20E030E0DD
-:10DF700040E952E40F94173A0F94E63E0F947B3F2A
-:10DF80008B010D94040290E080E0D3CF2BED3FE0B5
-:10DF900049EC50E4C701B6010F94073E6B017C01C8
-:10DFA000CECF2BED3FE049EC50E4C701B6010F9412
-:10DFB000083EF4CF08E410E0BBED4B2EBFE05B2E33
-:10DFC000B9EC6B2EB0E47B2E730162010D94040258
-:10DFD0002DEC3CEC4CEC5DE3C201B1010F94B13986
-:10DFE00087FF28C02DEC3CEC4CEC5DE321966FAD37
-:10DFF000219725967FAD259729968FAD2997659610
-:10E000009FAD65970F94023F0F94AA3F2B013C01EF
-:10E0100020E030E040E85FE30F94B13987FF06C0AD
-:10E02000412C512CA0E86A2EAFE37A2EC301B20135
-:10E030000D94D102B301C8010D94D1026796CEAC04
-:10E04000DFAC6797B60190E080E00F94B6396F9629
-:10E050002CAD3DAD4EAD5FAD6F970F94173A4B01B0
-:10E060005C010F94FD3E6B017C01C501B4010F946E
-:10E07000A8404B015C01A701960168AD79AD8AAD5E
-:10E080009BAD0F94173A2B013C01A50194016CA99B
-:10E090007DA98EA99FA90F94173A9B01AC01C301DA
-:10E0A000B2010F94083E2B013C01A501940168AD1B
-:10E0B00079AD8AAD9BAD0F94173A4B015C01A70176
-:10E0C00096016CA97DA98EA99FA90F94173A9B016F
-:10E0D000AC01C501B4010F94073E6CAF7DAF8EAFAC
-:10E0E0009FAF29E1A0962FAFA0970D94BA0480E5C9
-:10E0F0000E94D1C9C12CD12C7601882321F00E9425
-:10E1000037C76B017C0183E50E94D1C9882361F088
-:10E110000E94A7C920E030E04AE754E40F94173A80
-:10E120000F947B3F6B017C010E947F8F80911912BD
-:10E13000811105C060E085EB9FE20E941D3B0F94BA
-:10E140001E1DC60ED71EE81EF91E0F941E1D6C194B
-:10E150007D098E099F0997FF61CE80E00E94EADD6C
-:10E16000F4CF0F943211811159CE8CE0E3E6F3E045
-:10E17000DE01119601900D928A95E1F770E060E062
-:10E1800080E50E94D3CABE016F5F7F4F0E947C2A48
-:10E1900045CEFF24F39401E011E0EACC1092A108EF
-:10E1A0003DCE8FE08093A10839CE8092820290927A
-:10E1B0008302A0928402B0928502032D19CE809131
-:10E1C000C2089091C3088837910511F40C9480F926
-:10E1D00008F097C18E34910509F4B5C508F0FDC06B
-:10E1E0008931910509F4ABC408F094C084319105DC
-:10E1F00009F44DC408F05EC08131910509F4F7C3FC
-:10E2000098F5029708F042CC80E50E94D1C9C12C54
-:10E21000D12C7601882321F00E9437C76B017C0145
-:10E2200083E50E94D1C9882361F00E94A7C920E03C
-:10E2300030E04AE754E40F94173A0F947B3F6B01A8
-:10E240007C010E947F8F8091C0089091C108009747
-:10E2500009F4C7C30F94450E40E0C701B6010E9400
-:10E260007CE80F948E10DACD429709F00FCC83E54D
-:10E270000E94D1C9882309F401C70F941E1D609321
-:10E280003B0670933C0680933D0690933E060E94A9
-:10E29000A7C920E030E04AE754E40F94173A0F94FE
-:10E2A0007B3F60935A0270935B0280935C02909371
-:10E2B0005D02B4CD8631910509F41BC408F416C47F
-:10E2C0008731910509F41EC4489709F0DFCB80918E
-:10E2D0009A06882309F428C480E090E0A8E4B2E418
-:10E2E00088A799A7AAA7BBA71C8E1D8E1E8E1F8E5E
-:10E2F00019821A821B821C8210E000E020E0AE012D
-:10E30000485D5F4FBE01645E7F4FCE0101960E9463
-:10E31000ECE584CD8E31910509F490C498F48B31ED
-:10E32000910509F42AC408F40DC48C31910509F44F
-:10E330007EC44D9709F0AACB8091A2178E7F80935F
-:10E34000A2176CCD8B34910509F4F7C4D0F58F3149
-:10E35000910509F4D7C4809709F098CB8091A21752
-:10E3600082FF03C087FF0E947F8F8091A21784FFE6
-:10E3700055CD60E080E50E94E1CA182F682F80919A
-:10E38000C0089091C1080E945EBE83E50E94D1C979
-:10E39000882381F00E9447C7AB01BC0140939E17C0
-:10E3A00050939F176093A0177093A11780E594E195
-:10E3B0000E94827C0E949279111130CD0E94A6BBEE
-:10E3C0002DCD8C34910509F4BBC48D34910509F031
-:10E3D0005DCB81E00E9416BB21CD8C36910509F4FE
-:10E3E00016C608F059C08535910509F485C638F57B
-:10E3F0008235910509F432C6C8F48135910509F0DA
-:10E4000045CB0E9447B70E9497CD0E94B48581E01A
-:10E410000E9416BB68EE73E080E090E00E9421CD80
-:10E4200060E089E091E30E941D3BF8CC83359105C3
-:10E4300009F41CC68435910509F419CF27CB893618
-:10E44000910509F413C560F48C35910509F479C67A
-:10E450008836910509F01ACB80E00E9439D8DECCCD
-:10E460008A36910509F430C58B36910509F00ECB3B
-:10E470001091510980E50E94D1C9811172C5812F87
-:10E4800090E01816190614F481E090E0E82FF0E00F
-:10E49000EE52FA4F1082C2CC8137910509F4BDC506
-:10E4A000A8F48E36910509F463C508F4DAC48F36F2
-:10E4B000910509F470C58037910509F0E7CA41E07C
-:10E4C00070E060E084EF90E30E94E2DC8537910524
-:10E4D00009F4CBC658F48237910509F4BEC68337D8
-:10E4E000910509F0D3CA0E94D3CE98CC8637910506
-:10E4F00009F4CBC68737910509F0C8CA0E9456B9FE
-:10E500008DCC8D32E1E09E0711F40C94C9FC08F02B
-:10E51000F4C08B3C910511F40C94E5FA08F064C04A
-:10E520008139910509F4FCC698F48A37910511F4F4
-:10E530000C94DCFF08F4ECC68D37910509F4FFC29A
-:10E540008C38910509F0A2CA80E00E94A1E366CC54
-:10E550008E3B910509F47DC568F58639910509F46E
-:10E5600058C78B39910509F091CA83E50E94D1C93A
-:10E57000882309F453CC0E945BC7182F8C3308F012
-:10E580008CE3809399080F941E1D6B017C01212F51
-:10E5900030E0A8EEB3E00F94F83DC60ED71EE81E9B
-:10E5A000F91EC0929508D0929608E0929708F092D2
-:10E5B000980834CC883C910509F465C7893C9105DD
-:10E5C00009F064CA8091BC0884FDD4C78091BE085C
-:10E5D000887809F0CFC78091BF08837009F0CAC757
-:10E5E00081E00E943AD61ACC893D910511F40C9431
-:10E5F0000EFCA0F48D3C910511F40C946EFB10F40C
-:10E600000C9419FB8E3C910511F40C94DBFB833DBB
-:10E61000910509F03BCA0E94B5CF00CC8D3D910514
-:10E6200011F40C9471FC08F04AC08A3D910511F474
-:10E630000C9422FC8C3D910509F028CA82E40E94CA
-:10E64000D4C5882341F080912002909121029093BB
-:10E650005F0280935E0282E50E94D4C5882341F068
-:10E6600080915E0290915F0290932102809320023C
-:10E6700083E50E94D1C9882331F00E9457C7909347
-:10E680002102809320028091BC089091BD08A09146
-:10E69000BE08B091BF08892B8A2B8B2B09F0BECB0B
-:10E6A000609120027091210286E691E30E9487DA50
-:10E6B00085E20E949FCE8AE00E949FCEAFCB8A3F28
-:10E6C000910511F40C9427FD8C32914009F0DEC9BC
-:10E6D00064E071E083E50E94D3CA8C0168EE73E0C8
-:10E6E00080E50E94D3CA8938B3E19B0710F088E81F
-:10E6F00093E1B8010E948D2B91CB8C3032E09307CF
-:10E7000011F40C9448FE08F04CC08C3A51E0950787
-:10E7100011F40C947AFDB0F48F32B1E09B0711F440
-:10E720000C9472FD10F40C942CFD8039F1E09F07DD
-:10E7300011F40C9476FD8A39914009F0A7C90E9422
-:10E7400039B86CCB863F31E0930711F40C943AFE54
-:10E7500068F4843F51E0950711F40C9436FE853F30
-:10E76000914009F093C90E940FC558CB873FB1E093
-:10E770009B0711F40C943EFE883F914009F086C936
-:10E7800081E0809302060E9403C51092020688234E
-:10E7900009F444CB0E940FD88FEE91E30E94ACCED7
-:10E7A0003DCB8E3BF2E09F0711F40C9405FF08F07F
-:10E7B000F8C0883532E0930711F40C945EFE38F40B
-:10E7C0008933924009F062C90E940EDB27CB8B355A
-:10E7D000A2E09A0711F40C9462FE8D3B924009F07E
-:10E7E00055C90E9413D8082F87FD18CB8AE50E94CF
-:10E7F000D1C9882311F40C94EFFE8AE50F9484129A
-:10E80000762E872E982EC92E402F63E085E00E9439
-:10E81000092E10915109A02E002E000CBB081A15CC
-:10E820001B0421F060E0802F0E947DB520917E02C4
-:10E8300030917F02409180025091810260E070E04F
-:10E8400086E193E40F94073ED62EE72EF82E092F8B
-:10E85000272D382D492D5C2D0F94684018161CF477
-:10E86000D72C74010C2D8D2D9E2DAF2DB02F88AB84
-:10E8700099ABAAABBBAB20E030E0A9016D2D7E2D9A
-:10E880008F2D902F0F94B139882321F0CE01C0969F
-:10E890000F94862780E090E0A8E4B2E48CA79DA7BF
-:10E8A000AEA7BFA780E090E0A0EAB2E488A799A74E
-:10E8B000AAA7BBA78CE40E94D1C9882311F40C94A9
-:10E8C000F7FE0E94A7C96B017C0120E030E0A9019E
-:10E8D000C701B6010F94684087FF04C0F7FAF094AF
-:10E8E000F7F8F094CC8EDD8EEE8EFF8E87E18A9D58
-:10E8F000F0018B9DF00D1124E15CF94FE084F1846F
-:10E9000034E0E316F104BCF020E030E040E05FE3E7
-:10E9100064817581868197810F94083E0F94743FBE
-:10E920006E197F0977FF03C071956195710901E048
-:10E93000643071050CF400E053E0E52E2AE0AE01EE
-:10E94000445D5F4FBE01645E7F4FCE0188960F9499
-:10E950008D1268A979A98AA99BA96B017C01F7FA94
-:10E96000F094F7F8F094C982DA82EB82FC8220E01E
-:10E9700030E0A9010F94B139882321F0CE0101962E
-:10E980000F94862780915109181721F060E0812F9C
-:10E990000E947DB580915109809300040E945E2DF4
-:10E9A0003DCA803AE3E09E0709F49FC168F48A38C3
-:10E9B00023E0920711F40D942B008739934009F05E
-:10E9C00065C80E94AED62ACA873E43E0940711F478
-:10E9D0000D94BA00893E934009F058C80F9434064C
-:10E9E0001DCA60E08EEB9FE20E941D3B35CC0E9469
-:10E9F000C3C58823B9F185E40E94D4C5882361F09A
-:10EA000080919E0890919F08892B39F10E9457C7E9
-:10EA1000823010F40E94048A3CE9E32E32E0F32EA7
-:10EA200010E0D7012D917D0121548091BC08909177
-:10EA3000BD08A091BE08B091BF0804C0B695A795C7
-:10EA4000979587952A95D2F780FF03C0812F0E9462
-:10EA5000138A1F5F133029F7E1C980E00E94D8872D
-:10EA600081E0D8CF60E081ED9FE20E941D3B80E015
-:10EA70000E94138A81E00E94138A82E00E94138A16
-:10EA800080E00E94D88781E00E94048AC7C98091F3
-:10EA9000A21784FF24C089EE9FE20E94ACCE809131
-:10EAA000A21784FF17C084EA94E10E945F808BE183
-:10EAB000E4EAF4E1DE01119601900D928A95E1F706
-:10EAC00070E060E0CE0101960E94D6BFCE010196B3
-:10EAD0000E9464808AED9FE20E94ACCE9FC90E9492
-:10EAE0000FD88AEF9FE20E94ACCE98C90E948F7E19
-:10EAF00095C98091A21782FF02C087FF8FC90E942B
-:10EB0000777E8CC98091C0089091C108FC01219149
-:10EB1000222331F02032D9F7DF0111971C92F7CF71
-:10EB200060E00E945EBE7AC90E9473CD882321F006
-:10EB30000E9492790E94A6BB0F948E106FC90E940A
-:10EB4000C4EA6CC98091A21784FF68C983E50E945A
-:10EB5000D1C9882309F462C90E9447C7AB01BC012F
-:10EB600040939E1750939F176093A0177093A1171F
-:10EB700080E594E10E94827C51C98091BC0890910B
-:10EB8000BD08A091BE08B091BF0822E0B695A79538
-:10EB9000979587952A95D1F780FF1CC08EE090E36A
-:10EBA0000E94ACCE80915314882379F0BE016F5F30
-:10EBB0007F4F80E594E10E94F77ECE0101960F948D
-:10EBC000D6268AE00E949FCE29C984E090E30E9465
-:10EBD000ACCEF7CF8091A21782FF24C0C0909E17C1
-:10EBE000D0909F17E090A017F090A1178DE190E3CF
-:10EBF0000E94ACCEC701B6010F94C00D8FE20E94F7
-:10EC00009FCE60919A1770919B1780919C1790915D
-:10EC10009D170F94C00D8DE00E949FCE8AE00E9448
-:10EC20009FCEFCC88FE290E30E94ACCEF7C88091E3
-:10EC3000C0089091C1080E948CBFF0C88091A217B3
-:10EC400084FFECC80F945F128091A21784FFE6C87E
-:10EC50004091C0085091C108BE01645E7F4F80E0C2
-:10EC60000F94BD0C8C01009709F4D8C86C8D7D8D74
-:10EC700019821C8222E0AC01CE0101960E946A80BA
-:10EC8000811115C0F12CCE0101960E946480B8015B
-:10EC9000FF2011F18BE590E30F94E22610929E176E
-:10ECA00010929F171092A0171092A117B7C8CE010B
-:10ECB00001960F94290C882329F361E0CE01019677
-:10ECC0000E940F7E0097F1F225EEFC0120831C824A
-:10ECD0000E94287AF82ED7CF83E490E30E94E0DDEB
-:10ECE00080E490E30E94ACCE99C82091C008309196
-:10ECF000C1089091A21792609093A217C9010E9437
-:10ED00008CBF8CC80E94E4BA6C8F7D8F8E8F9F8FD2
-:10ED1000BE016F5F7F4FCE014C960E9458C6CE0158
-:10ED200001960F94450E0E940FD8BE016F5F7F4F72
-:10ED300089E690E30F94E22671C80E94A6BB6EC8D4
-:10ED40000E94FFBB6BC870E060E083E50E94C4CA0C
-:10ED50008E34910529F40E94DE8E0F948E105EC8C9
-:10ED600084ED90E30E94ACCE6091D2087091D308FC
-:10ED70008BEC90E30E947BDA6091D4087091D50807
-:10ED80008EEB90E30E947BDA6091D2087091D308F9
-:10ED90008091D4089091D508681B790B8091860FDB
-:10EDA000815021E030E0823010F030E020E0621B42
-:10EDB000730B83EB90E30E9404DB8BEA90E30E94E9
-:10EDC000ACCE8091D6089091D708A091D808B09188
-:10EDD000D9088C8F9D8FAE8FBF8FBE016F5F7F4F25
-:10EDE000CE014C960E9458C6BE016F5F7F4F8EE9E0
-:10EDF00090E30E94E0DD8091DA089091DB08A09119
-:10EE0000DC08B091DD088C8F9D8FAE8FBF8FBE0167
-:10EE10006F5F7F4FCE014C960E9458C6BE016F5F58
-:10EE20007F4F8EE890E30E94E0DD20E030E04AE78B
-:10EE300054E46091DE087091DF088091E0089091C1
-:10EE4000E1080F94023FAB01BC0186E790E30E940A
-:10EE5000A4CF8DE60E949FCE8AE00E949FCE0C94A4
-:10EE60000EEF81E00E9439D80C940EEF0E9413D867
-:10EE7000182F87FD0AC08CED90E30E94ACCE812F45
-:10EE80000E949E848AE00E949FCEE196CFACE197DB
-:10EE9000C0925009C357DF4F0FB6F894DEBF0FBEC4
-:10EEA000CDBFDF91CF911F910F91FF90EF90DF9039
-:10EEB000CF90BF90AF909F908F907F906F905F901A
-:10EEC0004F903F902F9008951091510980E50E9436
-:10EED000D1C981113EC0812F90E01816190614F493
-:10EEE00081E090E0182F8091BC08EE24EA94F12C88
-:10EEF00080FF08C0E0915109F0E0EE52FA4F6081C6
-:10EF0000E62EF12C89E40E94D1C9882311F40D94D6
-:10EF1000F9000E945BC790E01816190614F481E00E
-:10EF200090E026E0289FF001299FF00D1124EE507B
-:10EF3000FA4FE480F580E12FF0E0EE52FA4FB7018E
-:10EF40006F3F710519F010F06FEF70E060830C9463
-:10EF50000EEF0E945BC7182F823010F00C940EEF5A
-:10EF6000C2CF0E945BC7823010F00C940EEF8ECAA5
-:10EF70008EE40E94D1C9882311F40C940EEF0E94F4
-:10EF800047C760930E1070930F10809310109093EA
-:10EF900011100C940EEF83E50E94D1C9882321F053
-:10EFA0000E945BC78093D4050E940FD88DEE90E33A
-:10EFB0000E94ACCE8091D405882331F110E000E0AE
-:10EFC00020E08091D40590E0002E02C095958795B1
-:10EFD0000A94E2F780FF12C0FF24F394F20E22237A
-:10EFE00019F08CE20E949FCEF801EE0FFF1FED5149
-:10EFF000FF4C859194910E94ACCE2F2D0F5F1F4F37
-:10F0000005301105F1F6DDCD8FED90E3E0CD1092E6
-:10F010004F09109274020C940EEF83E50E94D1C93F
-:10F02000882369F00E945BC78D3320F480935902D6
-:10F030000C940EEF8CE3809359020C940EEF0E9417
-:10F040000FD86091590282E091E30E947FD60C9420
-:10F050000EEF81E00E94A1E30C940EEF8091A108D5
-:10F060008F7D80618093A1080C940EEF8091A108A0
-:10F070008F7E80628093A1080C940EEF0E94C3C51E
-:10F080008823B1F10E947F8F85E40E94D4C5882334
-:10F0900051F080919E0890919F08892B31F10E9438
-:10F0A00057C70E94E489BCE9EB2EB2E0FB2E10E0CA
-:10F0B000D7012D917D0121548091BC089091BD080C
-:10F0C000A091BE08B091BF0804C0B695A7959795CA
-:10F0D00087952A95D2F780FF03C0812F0E9400B741
-:10F0E0001F5F133029F70C940EEF0E94FE89DBCFCF
-:10F0F0000E9447B70C940EEF83E50E94D4C5882385
-:10F1000011F40C940EEF0F941E1D60933B06709348
-:10F110003C0680933D0690933E060E94A7C920E0DE
-:10F1200030E04AE754E40F94173A0F947B3F609322
-:10F130009A0870939B0880939C0890939D080C9468
-:10F140000EEF0E9413D887FF02C00C940EEF80913F
-:10F15000BC0884FD09C08091BE0887FD05C0809170
-:10F16000BF08837009F474C0FCE9CF2EF2E0DF2EF3
-:10F17000A5E5EA2EA9E0FA2E10E0F60181916F01D3
-:10F180000E94D1C9882359F0133099F00E94A7C971
-:10F19000D70154966D937D938D939C9357971F5FE2
-:10F1A000B4E0EB0EF11C143041F70E945B8F0C941D
-:10F1B0000EEF0E94A7C94B015C0120E030E040EA5D
-:10F1C00051E40F94B13987FF3AC0A50194016091D1
-:10F1D00075097091760980917709909178090F945B
-:10F1E000023F2B013C01AC019B01609185097091AC
-:10F1F000860980918709909188090F94173A609346
-:10F200008509709386098093870990938809609196
-:10F21000CA057091CB058091CC059091CD050F94D6
-:10F22000B639A30192010F94173A0F947B3F609374
-:10F23000CA057093CB058093CC059093CD05809241
-:10F24000750990927609A0927709B0927809A7CFB4
-:10F2500081E00F9432120C940EEF0F94B2108FE1F4
-:10F2600096E10E94E6870C940EEF8091C008909181
-:10F27000C108009709F460CCFC012081222309F425
-:10F280005BCC0F94450E0C940EEF0091C0081091CA
-:10F29000C10894E0F12C40E0915009F1D8018C9123
-:10F2A000282F2B7F2134A1F411962C912133B9F40E
-:10F2B000813419F1853409F441E098012E5F3F4F04
-:10F2C00089012F5F3F4FD8018C918032C9F3E4CF81
-:10F2D000803529F4F801818180538A3070F341111F
-:10F2E0000E940FD8FF2021F082E291E30E94ACCE71
-:10F2F000C8010E9425C50C940EEFFF24F394DDCFC6
-:10F300002093E3082093E2080E9471B90C940EEF59
-:10F310001092E3081092E2080E9471B90C940EEF6B
-:10F3200070E060E083E50E94C4CA823040F00E9431
-:10F330000BD885E291E30E94ACCE0C940EEF8C01C9
-:10F34000112788E40E94D1C98823C1F00E9457C7C1
-:10F350008A3A91050CF44BC00E9457C7863F91052D
-:10F360000CF048C00E9457C726E0209FF001219F63
-:10F37000F00D1124EE50FA4F9183808382E40E94B5
-:10F38000D1C98823A9F00E9457C70597B4F10E94FC
-:10F3900057C785369105A4F50E9457C726E0209FE0
-:10F3A000F001219FF00D1124EE50FA4F93838283D8
-:10F3B00086E40E94D1C9882311F40C940EEF0E94B8
-:10F3C00057C797FD20C00E9457C78F3F910509F08E
-:10F3D000ECF40E9457C726E0209FF001219FF00D1A
-:10F3E0001124EE50FA4F958384830C940EEF8AEA31
-:10F3F00090E0BACF85EF90E0B7CF85E090E0CECF38
-:10F4000084E690E0CBCF90E080E0E5CF8FEF90E016
-:10F41000E2CF82E40E94D4C510E0882351F08091AD
-:10F420009E0890919F081FEF892B19F00E945BC7DF
-:10F43000182F85E50E94D4C500E0882351F0809103
-:10F440009E0890919F080FEF892B19F00E945BC7CF
-:10F45000082F82E50E94D4C5882389F080919E08F8
-:10F4600090919F08892B69F00E945BC789830A836A
-:10F470001B83CE0101960E94F6CA0C940EEF80E029
-:10F48000F5CF8FEFF3CF8091BC0883FD09C0809149
-:10F49000BE088C7029F481E00E9415DA0C940EEFFE
-:10F4A0000E9413D8182F87FF02C00C940EEFF09023
-:10F4B000F10584E40E94D1C9082F882309F456C0BD
-:10F4C0000E94A7C96B017C0120E030E0A9010F94E4
-:10F4D000B139882309F44CC0B4E01B02F0011124B7
-:10F4E000E751FA4FC082D182E282F38220E030E01D
-:10F4F000A9016091E9057091EA058091EB05909171
-:10F50000EC050F94B13981110CC080E090E0A0EEC1
-:10F51000BFE38093E9059093EA05A093EB05B093D0
-:10F52000EC0520E030E0A9016091ED057091EE0559
-:10F530008091EF059091F0050F94B13981110CC0C5
-:10F5400080E090E0A0EEBFE38093ED059093EE05A0
-:10F55000A093EF05B093F005602F83E50E94E1CA08
-:10F560008093F1050E94E7710C940EEF0F2DF4CFFC
-:10F5700080E0F6CF0E9413D887FF02C00C940EEFF4
-:10F580000CE912E075E5E72E79E0F72EE0EACE2EE1
-:10F59000E2E0DE2EF80181918F010E94D1C988231B
-:10F5A00061F00E94A7C90F947B3FD7016D937D93B3
-:10F5B0008D939C9313970E940D8FB4E0EB0EF11C7A
-:10F5C000C016D10639F70C940EEF8091BC0884FD6B
-:10F5D0000DC08091BE08887849F48091BF0883707F
-:10F5E00029F481E00E9410D60C940EEF0E9413D8EB
-:10F5F00087FF02C00C940EEF6CE9E62E62E0F62E57
-:10F6000010E000E0F70181917F010E94D1C98823B9
-:10F6100049F00E94A7C9F801EB5AF64F64A375A3FD
-:10F6200086A397A30C5F1F4F0031110559F70C9467
-:10F630000EEF8091BD0887FD09C08091BE088E70D5
-:10F6400029F481E00E94EED50C940EEF83E50E9430
-:10F65000D1C9882391F00E94A7C96093890970934A
-:10F660008A0980938B0990938C0960939109709318
-:10F670009209809393099093940980E50E94D1C9DF
-:10F68000882351F00E94A7C96093890970938A0961
-:10F6900080938B0990938C0982E50E94D1C98823BD
-:10F6A00051F00E94A7C960938D0970938E098093D1
-:10F6B0008F099093900984E50E94D1C9882311F4A1
-:10F6C0000C940EEF0E94A7C9609391097093920960
-:10F6D00080939309909394090C940EEF8091BC0849
-:10F6E00081FD0DC08091BD0881FD09C08091BE08DB
-:10F6F0008C7029F481E00E94B6D50C940EEF82E460
-:10F700000E94D1C9882351F00E9437C760936509D0
-:10F7100070936609809367099093680983E50E9456
-:10F72000D1C9882351F00E94A7C9609395097093AD
-:10F730009609809397099093980984E50E94D1C90E
-:10F74000882351F00E94A7C96093990970939A0980
-:10F7500080939B0990939C098AE40E94D1C98823D5
-:10F7600011F40C940EEF0E94A7C96B017C012AE0F2
-:10F7700037ED43E25CE30F94684087FD14C02AE94B
-:10F7800039E949E95EE3C701B6010F94B1391816AA
-:10F7900054F0C092FE05D092FF05E0920006F09270
-:10F7A00001060C940EEF0E940BD887E491E30E94AF
-:10F7B000ACCE0C940EEF8091BC089091BD08A09146
-:10F7C000BE08B091BF084CE9C42E42E0D42E56EEDC
-:10F7D000E52E58E0F52E10E0892B8A2B8B2B29F48F
-:10F7E00081E00E9494D50C940EEFD6018D916D01AD
-:10F7F0000E94D1C9882351F00E94A7C9F7016083F4
-:10F80000718382839383812F0E94FAB21F5FF4E099
-:10F81000EF0EF11C133049F70C9405EF8AE50E94B6
-:10F82000D1C9882351F00E94A7C9609386067093BE
-:10F830008706809388069093890681E00E948ED681
-:10F840000C940EEF8091BC089091BD08A091BE0869
-:10F85000B091BF08892B8A2B8B2B29F481E00E9461
-:10F86000E4D90C940EEF0E9413D8182F87FF02C022
-:10F870000C940EEF88E50E94D1C9882361F00E94A4
-:10F88000A7C92CE01202F0011124E259F94F60835C
-:10F8900071838283938389E50E94D1C9882361F0B3
-:10F8A0000E94A7C93CE01302F0011124E259F94F6C
-:10F8B00064837583868397838AE50E94D1C98823F0
-:10F8C00011F40C940EEF0E94A7C94CE01402F00151
-:10F8D0001124E259F94F60877187828793870C94CE
-:10F8E0000EEF0E9413D8082F87FF02C00C940EEF72
-:10F8F00083E50E94D1C9002E000C110B7801EE0C9B
-:10F90000FF1C882361F10E9457C7F701EE5DFD4F90
-:10F9100091838083000F111F000F111FD801AA5D72
-:10F92000BD4F7D01BC01990F880B990B0F94B8391D
-:10F930002AE037ED43E25CE30F94173A0A541A4F7A
-:10F94000F80120813181428153810F94173AD70108
-:10F950006D937D938D939C9313970C940EEF0E945F
-:10F960000FD885E40E949FCE80E3800F0E949FCE37
-:10F97000F701EE5DFD4F608171818AE691E30E949F
-:10F9800087DA85E20E949FCE8AE00E949FCE0C9487
-:10F990000EEF85E40E94D1C9882381F00E945BC7E5
-:10F9A0009091BC0893FD0CC09091BD08917841F4F2
-:10F9B000682F81E00E9493D90C940EEF8FEFF0CF67
-:10F9C0008230ECF580E50E94D1C9882351F00E9475
-:10F9D000A7C960934A0670934B0680934C06909398
-:10F9E0004D0689E40E94D1C9882381F00E94A7C9ED
-:10F9F0002CEA35EC47E25EE30F94173A60934E062B
-:10FA000070934F06809350069093510684E40E94B1
-:10FA1000D1C9882311F40C940EEF0E94A7C92CEAD7
-:10FA200035EC47E25EE30F94023F60935206709319
-:10FA3000530680935406909355060C940EEF0E9443
-:10FA40000BD882E791E30E94ACCE0C940EEF81E0DC
-:10FA50000E9484D60C940EEF83E50E94D4C5182F23
-:10FA6000882369F00E9457C79C019093610280939C
-:10FA7000600291E0232B09F090E09093A00880E5CC
-:10FA80000E94D4C5882361F0209160023091610208
-:10FA9000232B11F00E946FC78093A0080C940EEFE7
-:10FAA00011110C940EEF0E940FD880EA91E30E948E
-:10FAB000ACCE8091A008882391F088E891E30E9461
-:10FAC000ACCE60916002709161028FE891E30E9478
-:10FAD00087DA8BE891E30E94ACCE0C940EEF84E8B9
-:10FAE00091E3EDCF0E94CFD00C940EEF0E947F8F58
-:10FAF0000C940EEF0F94321181110C940EEFB6EBB3
-:10FB0000CB2EB4E1DB2EE6E7F2E0FDABECAB9E01E1
-:10FB10002F5F3F4F19018901F12CE12CF60165910E
-:10FB2000759185919491ACA9BDA98D909D90AD9052
-:10FB3000BD90BDABACABA50194010F94073E2B016A
-:10FB40003C01F801408251826282738220E030E001
-:10FB500040EA51EC0F94684087FD0AC020E030E095
-:10FB600040EA51E4C301B2010F94B139181684F48C
-:10FB7000F701E253F44CE4911E1654F4B7FAB09432
-:10FB8000B7F8B094D8018D929D92AD92BC92139724
-:10FB9000F80180809180A280B38020E030E040EACC
-:10FBA00051ECC501B4010F94684087FD4AC020E0C4
-:10FBB00030E040EA51E4C501B4010F94B1391816A0
-:10FBC0000CF43FC0FFEFEF1AFF0A24E0C20ED11C75
-:10FBD0000C5F1F4F33E0E316F10409F09FCFA6EE50
-:10FBE000EA2EA8E0FA2E10E0F10181919191A19105
-:10FBF000B1911F01F70181939193A193B1937F017B
-:10FC0000812F0E94FAB21F5F133071F70E94BBB8B8
-:10FC100060E083EB91E30E941D3B63E972E084E6C0
-:10FC200090E00E948D2B70E060E08AE090E00E94FE
-:10FC30008D2B6AEB72E084E690E00E948D2B0C9491
-:10FC40000EEF0E940BD881ED91E30E94ACCE61E0F3
-:10FC500083EC91E30E941D3B0E945E2D68E270E000
-:10FC600080E991E00E948D2B0C940EEF0E94648B32
-:10FC70000C940EEF0E947CB90C940EEF61E083E5CA
-:10FC80000E94E1CA91E089270E942E8A0C940EEF0F
-:10FC90001091A21712FF0AC017FD08C00E9473CD71
-:10FCA00080FB17F91093A2170C940EEF14FD02C0FD
-:10FCB0000C940EEF0F945F120C940EEF0E946CE9FF
-:10FCC0000C940EEF8091BD0883FD09C08091BE08A1
-:10FCD000887129F481E00E94C7DB0C940EEF0E942A
-:10FCE00013D8082F87FF02C00C940EEF85E50E9401
-:10FCF000D1C9882359F10E94A7C94B015C01E02EAC
-:10FD0000002E000CFF0820E030E0A9010F946840AD
-:10FD100087FF04C0B7FAB094B7F8B09420E030E0A1
-:10FD200048E453E4C501B4010F9468409701F3E03F
-:10FD3000220F331FFA95E1F727523A4F1816D4F1E4
-:10FD4000D9018D929D92AD92BC9213978CE40E9442
-:10FD5000D1C9882311F40C940EEF0E94A7C96B013E
-:10FD60007C01002E000C110B20E030E0A9010F9463
-:10FD7000684087FF04C0F7FAF094F7F8F09420E0A9
-:10FD800030E048E453E4C701B6010F94684098019D
-:10FD9000E3E0220F331FEA95E1F727523A4F181696
-:10FDA0009CF0D9011496CD92DD92ED92FC921797BA
-:10FDB0000C940EEF80E090E0A8E4B3E4F9018083B6
-:10FDC0009183A283B383C2CF80E090E0A8E4B3E440
-:10FDD000F90184839583A683B7830C940EEF712C6D
-:10FDE000812C60EA962E71E4C72E0C9404F4E09105
-:10FDF000510928E0E29FF0011124E752FA4FC48034
-:10FE0000D580E680F7800C9465F40E9413D8082F03
-:10FE100087FF02C00C940EEF8AE50E94D1C9812CA5
-:10FE2000912C40EAA42E41E4B42E882329F08AE5DF
-:10FE30000F9484124B015C01402F64E083E00E9428
-:10FE4000092E10915109E02E002E000CFF081E15FE
-:10FE50001F0421F060E0802F0E947DB520E030E09B
-:10FE6000A901C501B4010F94684018167CF580E023
-:10FE700090E0A0EAB0E489839A83AB83BC832091AD
-:10FE80007E0230917F024091800250918102C50133
-:10FE9000B4010F94083E2B013C0120E030E046E124
-:10FEA00053E40F94B13987FD06C0412C512C36E143
-:10FEB000632E33E4732E4C8E5D8E6E8E7F8EBE016C
-:10FEC0006F5F7F4FCE014C960E94C4B485E50E94BF
-:10FED000D4C5882309F463C00E94A7C96B017C01C3
-:10FEE00020E030E0A901C701B6010F94684087FF08
-:10FEF00004C0F7FAF094F7F8F094F7FAF094F7F8F2
-:10FF0000F094C982DA82EB82FC8244E061E0CE01A7
-:10FF100001960E9457E720E030E0A901C501B40135
-:10FF20000F94684018165CF580E090E0A0EAB0E419
-:10FF300089839A83AB83BC83A501940160917E027F
-:10FF400070917F0280918002909181020F94073E10
-:10FF50006B017C0120E030E0A9010F946840181685
-:10FF60001CF0C12CD12C7601CC8EDD8EEE8EFF8E56
-:10FF7000BE016F5F7F4FCE014C960E94C4B480914A
-:10FF80005109181721F060E0812F0E947DB5809102
-:10FF90005109809300040E945E2D0C940EEFF7012E
-:10FFA00023E0EE0FFF1F2A95E1F7E752FA4FC080DA
-:10FFB000D180E280F38094CF19821A821B821C8246
-:10FFC0004091BC085091BD086091BE087091BF0877
-:10FFD000ECE9F2E0DE01119691E021E0819181549B
-:10FFE0006A017B0104C0F694E794D794C7948A957C
-:10FFF000D2F7C0FE02C02C9390E0119682E0E03A66
-:020000022000DC
-:10000000F80761F7992329F081E089838A838B833C
-:100010008C8360E089E40E94E1CA8823A1F08FEA22
-:1000200095E10F94843383E795E10F94843387E35C
-:1000300095E10F9484338BEF94E10F9484338FEB2D
-:1000400094E10F9484332C814B816A8189810E94D1
-:10005000FEDB0C940EEF9CE9C92E92E0D92EEE2423
-:10006000E394F12C70E060E0D6018D916D010E9467
-:10007000C4CA8C010097D9F1B2E0FB16C1F0E3E0ED
-:10008000FE16E9F0F1E0FF1651F09093E915809328
-:10009000E815BC018FEA95E10F940F2127C09093DA
-:1000A000AD158093AC15BC0183E795E1F5CF909336
-:1000B000711580937015BC0187E395E1EDCF6EEF6C
-:1000C0007FEF84E50E94C4CA823008F050C0E82E59
-:1000D00018160CF49AC01093351500933415B80116
-:1000E0008BEF94E10F940F21E11092C0E12CF39477
-:1000F00024E0F212B7CFEE2011F40C940EEF88E555
-:100100000E949FCE6091E8157091E9158AEF91E306
-:100110000E9404DB89E50E949FCE6091AC1570912E
-:10012000AD158CE092E30E9404DB8AE50E949FCE2D
-:1001300060917015709171158EE192E30E9404DB5D
-:1001400085E40E949FCE609134157091351580E34F
-:1001500092E30E9404DB0E94A6CE6091F814709195
-:10016000F91482E492E30E9404DB0C940EEF8EEF0C
-:10017000E82EB1CF83E0809335091092441260E0FD
-:1001800083E50E94E1CA81110C940EEF0F94330FA6
-:100190000C940EEF1091C2080F941E1D60933B0645
-:1001A00070933C0680933D0690933E06812F012E6E
-:1001B000000C990B209151092817190651F060E0A5
-:1001C00083E50E94E1CA682F812F0E947DB50C94BF
-:1001D0000EEF81E0F8CFF11004C0002311F40C946D
-:1001E0006AEE612C712C70EA872EE0E49E2E0C944E
-:1001F000CAED83E50E94D1C9882311F40C949BF7C2
-:100200000E9447C77B010C949BF7813009F06ECFA9
-:100210001093F9140093F814B8018FEB94E13CCFDC
-:1002200020E030E0A901C701B6010F94B13988235D
-:1002300011F40C943BED1CAA1DAA1EAA1FAAA7012B
-:100240009601505828AF39AF4AAF5BAF8CA99DA932
-:10025000AEA9BFA9B0588CAF9DAFAEAFBFAFA701DD
-:100260009601C701B6010F94173A4B015C012CA906
-:100270003DA94EA95FA9CA01B9010F94173A9B0184
-:10028000AC01C501B4010F94083E0F94B640A89686
-:100290006CAF7DAF8EAF9FAFA897809076029090A5
-:1002A0007702A0907802B0907902A7019601C5016B
-:1002B000B4010F94083EE9966CAF7DAF8EAF9FAF4F
-:1002C000E997C0907A02D0907B02E0907C02F09097
-:1002D0007D022496CCAEDDAEEEAEFFAE2497A70134
-:1002E00096016CA97DA98EA99FA90F94083EED9651
-:1002F0006CAF7DAF8EAF9FAFED9740908A06509068
-:100300008B0660908C0670908D06E9962CAD3DAD05
-:100310004EAD5FADE997C301B2010F94073E289639
-:100320006CAF7DAF8EAF9FAF2897C0908E06D090F8
-:100330008F06E0909006F0909106ED962CAD3DADC5
-:100340004EAD5FADED97C701B6010F94073E2C96F9
-:100350006CAF7DAF8EAF9FAF2C97A3019201C5010B
-:10036000B4010F94073E4B015C012DEB37E346E8E7
-:1003700055EB0F94684087FF02C00C943DEF2DEBC6
-:1003800037E346E855E3C501B4010F94B1391816B7
-:1003900014F40C943DEFA701960124966CAD7DAD4D
-:1003A0008EAD9FAD24970F94073E6B017C012DEB22
-:1003B00037E346E855EB0F94684087FF02C00C9482
-:1003C0003DEF2DEB37E346E855E3C701B6010F9447
-:1003D000B139181614F40C943DEF0230110511F0E8
-:1003E0000C94DAEF08E410E08BED482E8FE0582EE5
-:1003F00089EC682E80E4782E9BEDC92E9FE0D92EE3
-:1004000099ECE92E90ECF92E20917E0230917F023A
-:10041000409180025091810260962CAF3DAF4EAF6B
-:100420005FAF6097609192067091930680919406F9
-:10043000909195060F94073E4B015C01A301920138
-:10044000A8966CAD7DAD8EAD9FADA8970F94173A71
-:1004500021966FAF219725967FAF259729968FAF6D
-:10046000299765969FAF659727E137EB41ED58E3F4
-:100470000F94B13987FF0AC027E137EB41ED58E30C
-:10048000C501B4010F94B13987FD70C38091960600
-:1004900090919706A0919806B091990669968CAFB5
-:1004A0009DAFAEAFBFAF69972091820230918302BA
-:1004B000409184025091850264962CAF3DAF4EAFBF
-:1004C0005FAF64972AE037ED43E25CE3609151024D
-:1004D0007091520280915302909154020F94173AF6
-:1004E0002B013C016091200270912102072E000C2B
-:1004F000880B990B0F94B8399B01AC01C301B20171
-:100500000F94173A68A779A78AA79BA721966FAD82
-:10051000219725967FAD259729968FAD29976596CA
-:100520009FAD65970F94AA3F1B012C01B80190E085
-:1005300080E00F94B6393B018C019B01AC01B10105
-:10054000C2010F946840181614F43101820193011E
-:10055000A80121966FAD219725967FAD2597299605
-:100560008FAD299765969FAD65970F94023F1B014C
-:100570002C0120E030E040E85FE30F94684018165B
-:1005800014F00C94E8EF21966FAD219725967FAD7E
-:10059000259729968FAD299765969FAD65970F94FE
-:1005A000E63E0F947B3F6B967FAF6EAF6B971C8ED2
-:1005B0001D8E1E8E1F8E18A219A21AA21BA21CA28B
-:1005C0001DA21EA21FA26B964EAD5FAD6B9742306F
-:1005D000510508F4A1C2BA0190E080E00F94B63949
-:1005E000A4966CAF7DAF8EAF9FAFA4979B01AC017B
-:1005F000C701B6010F94023F6F966CAF7DAF8EAF0F
-:100600009FAF6F979B01AC010F94173A6B017C0170
-:10061000AC019B016F966CAD7DAD8EAD9FAD6F97BC
-:100620000F94173A20E030E040EC50E40F94023F82
-:100630009B01AC016F966CAD7DAD8EAD9FAD6F979C
-:100640000F94073EC358DF4F688379838A839B8367
-:10065000CD57D04020E030E040E05FE3C701B60175
-:100660000F94173A9B01AC0160E070E080E89FE3D3
-:100670000F94073ECF57DF4F688379838A839B832C
-:10068000C158D040A4962CAD3DAD4EAD5FADA49702
-:10069000C501B4010F94023FCB57DF4F68837983C4
-:1006A0008A839B83C558D04064962CAD3DAD4EAD3A
-:1006B0005FAD649769966CAD7DAD8EAD9FAD69976A
-:1006C0000F94073EA4962CAD3DAD4EAD5FADA49703
-:1006D0000F94023FC757DF4F688379838A839B83D8
-:1006E000C958D0406096CCACDDACEEACFFAC6097A6
-:1006F000C986DA86EB86FC866496CCACDDACEEACC3
-:10070000FFAC6497CD86DE86EF86F88A0F941E1DB7
-:100710009B01AC0128533F4F4F4F5F4FE5962CAFE5
-:100720003DAF4EAF5FAFE597C0905909D0905A09E1
-:10073000E0905B09F0905C09609155097091560951
-:100740008091570990915809C616D706E806F90610
-:1007500010F4C701B6010F94B639AC966CAF7DAFFB
-:100760008EAF9FAFAC97A0907909B0907A090091B5
-:100770007B0910917C09C701B6010F94B6396B0152
-:100780007C019B01AC01B501C8010F94B13987FF11
-:1007900002C06501780168A579A58AA59BA59B0182
-:1007A000AC010F94173A2D966FAF2D9761967FAFDE
-:1007B00061971C01AC962CAD3DAD4EAD5FADAC97D5
-:1007C000A8966CAD7DAD8EAD9FADA8970F94173AEE
-:1007D0005B018C019601A701B601C7010F94173A7E
-:1007E0006B017C019501A8012D966FAD2D97619647
-:1007F0007FAD6197C1010F94684018163CF42D96A7
-:10080000AFAE2D976196BFAE619718012D962FADB3
-:100810002D9761963FAD6197A101B601C7010F9475
-:10082000B13987FF07C02D96CFAE2D976196DFAE09
-:10083000619717012196CFAC2197AD96CFAEAD97BA
-:100840002596DFAC2597AE96DFAEAE972996EFAC36
-:100850002997AF96EFAEAF976596FFAC6597E09698
-:10086000FFAEE09748AC59AC6AAC7BAC29E1A096EE
-:100870002FAFA09741E050E067965FAF4EAF67970C
-:100880000E94A5910F941E1D8B019C01E596CCAC96
-:10089000DDACEEACFFACE5970C191D092E093F0944
-:1008A00037FD0FC09B01AC0128533F4F4F4F5F4FA7
-:1008B000E5962CAF3DAF4EAF5FAFE59780E00E946D
-:1008C000EADDA0963FADA0973150A0963FAFA0972C
-:1008D000332311F40C941EF0C358DF4F2881398163
-:1008E0004A815B81CD57D040B201C3010F94173AC2
-:1008F0006B017C01CF57DF4F288139814A815B81B1
-:10090000C158D0406CAD7DAD8EAD9FAD0F94173A00
-:100910009B01AC01C701B6010F94083E7B018C011D
-:10092000CF57DF4F288139814A815B81C158D04040
-:10093000B201C3010F94173A4B015C01C358DF4F5A
-:10094000288139814A815B81CD57D0406CAD7DAD26
-:100950008EAD9FAD0F94173A9B01AC01C501B40158
-:100960000F94073E2B013C01C701D8018CAF9DAF0E
-:10097000AEAFBFAF9201A301E9966CAD7DAD8EAD78
-:100980009FADE9970F94083E69837A838B839C839C
-:100990002CAD3DAD4EAD5FADED966CAD7DAD8EAD8C
-:1009A0009FADED970F94083E6D837E838F8398876C
-:1009B000CB57DF4F288139814A815B81C558D040B0
-:1009C00069857A858B859C850F94083E69877A872F
-:1009D0008B879C87C757DF4F288139814A815B818C
-:1009E000C958D0406D857E858F8598890F94083EC3
-:1009F0006D877E878F87988BCE0101960E941AB3F0
-:100A0000A4962CAD3DAD4EAD5FADA49721966FADD4
-:100A1000219725967FAD259729968FAD29976596C5
-:100A20009FAD65970F94023F9B01AC01AD966FADF2
-:100A3000AD97AE967FADAE97AF968FADAF97E09680
-:100A40009FADE0970F94073EAD966FAFAD97AE9612
-:100A50007FAFAE97AF968FAFAF97E0969FAFE0971F
-:100A6000AC962CAD3DAD4EAD5FADAC97CA01B901B2
-:100A70000F94083EAD962FADAD97AE963FADAE97B5
-:100A8000AF964FADAF97E0965FADE0970F94173AF2
-:100A90007B018C012D962FAD2D9761963FAD61970F
-:100AA000A1010F94684018163CF42D96EFAC2D97D9
-:100AB0006196FFAC61978101C701D8018CA39DA30A
-:100AC000AEA3BFA39E01245E3F4F40915109BE01DA
-:100AD000685D7F4FCE0101960E94ACA68823E1F0AD
-:100AE000A896CCACDDACEEACFFACA897C8A2D9A25E
-:100AF000EAA2FBA267962EAD3FAD67972F5F3F4FEF
-:100B000067963FAF2EAF67976B96CEACDFAC6B9717
-:100B1000C216D30609F0B4CE80E1EAE8F6E0DE01C1
-:100B2000119601900D928A95E1F7CE0101960E94EF
-:100B30001AB318A219A21AA21BA21CA21DA21EA2BD
-:100B40001FA29E01245E3F4F40915109BE01685D86
-:100B50007F4FCE0101960E94ACA680E1FE01319646
-:100B6000A6E7B2E001900D928A95E1F70F941E1D61
-:100B700060933B0670933C0680933D0690933E063F
-:100B80000C940EEF4F925F926F927F928F929F9292
-:100B9000AF92BF92CF92DF92EF92FF920F931F938B
-:100BA000CF93DF93CDB7DEB77C014DB65EB66090D4
-:100BB0005309709054098DB69EB66AE070E0C70183
-:100BC0000F94F3386C018C010E191F09892B21F445
-:100BD000C7010F94FE388C01C80101962DB73EB7AE
-:100BE000281B390B0FB6F8943EBF0FBE2DBF8DB733
-:100BF0009EB701965C01A801B7010F941F39F5015A
-:100C0000E00FF11F1082C5010E9457C881E00E94C9
-:100C1000D1EBC114D10451F076019FEFE91AF90A22
-:100C20000FB6F8949EBE0FBE8DBEC5CF0FB6F8941A
-:100C30009EBE0FBE8DBEC3010E9457C80FB6F8946A
-:100C40005EBE0FBE4DBEDF91CF911F910F91FF9001
-:100C5000EF90DF90CF90BF90AF909F908F907F905C
-:100C60006F905F904F900895CF92DF92EF92FF9236
-:100C70000E947F8F8091A217877F8B7F8093A2171E
-:100C800080919817811138C00E94E4BA6B017C01F1
-:100C90008DE3C816D104E104F10420F082E695E367
-:100CA0000F94C2058EE595E30F94C2058AE495E39F
-:100CB0000E94ACCE8DE3C816D104E104F104A0F08B
-:100CC0000E94F5CB81E08093C50840E060E477E7BF
-:100CD0008BE190E00E947CE88091C508882321F098
-:100CE0000E94F1CB1092C50886E495E3FF90EF9047
-:100CF000DF90CF900D94C2050F941327882321F223
-:100D0000FF90EF90DF90CF900895CF93DF93C09145
-:100D1000761081E6C89FE0011124C858DF4E80910B
-:100D2000D40580FF05C00E940FD8CE010E9425C5C2
-:100D3000CE010E9457C880E0DF91CF910C94D1EB97
-:100D4000FC01808108950F931F93CF93DF93582F59
-:100D5000FC0180E077E0919148E0282F30E0A92F56
-:100D6000B0E08901000F012F001F110B9170C92FF6
-:100D700090E0D92F880F0C171D0721F0C901880FAB
-:100D8000991F8727B595A7959A2F415031F79E2F28
-:100D9000951B961700F3DF91CF911F910F91089546
-:100DA00008950895AF92BF92CF92DF92EF92FF9293
-:100DB0000F931F93CF93DF936C017B018B01040F83
-:100DC000151FEB015E01AE18BF08C017D10759F01F
-:100DD0006991D601ED91FC910190F081E02DC60161
-:100DE0001995892B79F7C501DF91CF911F910F914B
-:100DF000FF90EF90DF90CF90BF90AF9008953FB7F6
-:100E0000F8948091531890915418A0915518B0916E
-:100E1000561826B5A89B05C02F3F19F00196A11DB5
-:100E2000B11D3FBFBA2FA92F982F8827BC01CD0134
-:100E3000620F711D811D911D42E0660F771F881F93
-:100E4000991F4A95D1F7089520912B18260F332723
-:100E5000331F21323105ECF420918518FC0190E01C
-:100E600080E0243069F082E00895A0912B18219150
-:100E7000AC01455F574EA40FB52FB11D2C930196C1
-:100E8000861798F380912B18680F60932B1880E0D9
-:100E9000089581E008950895E0915C1880915B18B1
-:100EA000E81730F4F0E0E651F84E808190E00895C4
-:100EB0008FEF9FEF089590915C1880915B182FEF52
-:100EC0003FEF981748F4E92FF0E0E651F84E208103
-:100ED00030E09F5F90935C18C901089580915B1882
-:100EE00090915C18891B990B0895CF92DF92EF9235
-:100EF000FF920F931F93CF93DF937C01CB018A0165
-:100F00002091AE18222389F0EB016B01C40ED51E8F
-:100F1000CC15DD0569F06991D701ED91FC91019047
-:100F2000F081E02DC7011995F3CF642F0F942407AA
-:100F3000C801DF91CF911F910F91FF90EF90DF904B
-:100F4000CF900895CF93DF931F92CDB7DEB769831B
-:100F50002091AE182223F9F02091AB18203258F0DE
-:100F600021E030E0FC013383228390E080E00F90A9
-:100F7000DF91CF9108958091AC18E82FF0E0E5570C
-:100F8000F74E998190838F5F8093AC188093AB1854
-:100F900081E090E0ECCF61E0CE0101960F94240750
-:100FA000F7CF2091E8173091E9172817390771F426
-:100FB0009091E7178091E617981741F0E091E717B5
-:100FC000F0E0EA55F84E808190E008958FEF9FEFB2
-:100FD0000895EF92FF920F931F93CF93DF93DC015D
-:100FE0005C96ED90FC905D97E114F10479F481E05A
-:100FF00090E013969C938E93129790E080E0DF919F
-:10100000CF911F910F91FF90EF9008955196ED9120
-:10101000FC91529750968C915097982F90950FB7BE
-:101020005E962C915E97122F127021FD6095F894B8
-:101030002081112319F1282B2083E7012197F1F753
-:1010400028E0462F50E0308160FF1AC0382B3083F3
-:10105000E7012197F1F7BA0175956795215089F756
-:10106000112381F08081892380830FBF5C968D914D
-:101070009C910197F1F781E090E0C1CF2923DCCF6B
-:101080003923E5CF9081892BEFCF2091E81730915C
-:10109000E9172817390771F48091E6172091E717AF
-:1010A00090E0805C9F4F821B910960E470E00F9498
-:1010B0004841089590E080E008952091E81730912C
-:1010C000E91728173907B9F49091E7178091E617C7
-:1010D000981789F0E091E717F0E0EA55F84E808123
-:1010E0002091E71730E02F5F3F4F2F733327209376
-:1010F000E71790E008958FEF9FEF0895E091E817CC
-:10110000F091E917E817F90769F4A389B4899C916C
-:101110008589809589238C931092E9171092E8179E
-:1011200081E0089580E00895CF93DF93EC018A8DEC
-:101130009B8D892B01F18091E8179091E9178C170D
-:101140009D07C9F0009711F00F947E088E8D8E7F59
-:101150008E8F1092E6171092E717D093E917C0937D
-:10116000E817EB89FC8980819D89892B808381E048
-:10117000DF91CF91089580E0FBCFFC01A4A5B5A538
-:10118000109749F0ED91FC9111970190F081E02DBD
-:10119000CD011995089582A593A5009739F0DC013A
-:1011A000ED91FC910190F081E02DF3CF80E0089566
-:1011B000FC01A4A5B5A5109741F0ED91FC91119704
-:1011C0000284F385E02DCD01199482A593A50097A3
-:1011D00039F0DC01ED91FC910284F385E02DF4CF30
-:1011E00090E080E00895FC01A4A5B5A5109741F01A
-:1011F000ED91FC9111970084F185E02DCD011994BA
-:1012000082A593A5009739F0DC01ED91FC91008453
-:10121000F185E02DF4CF90E080E00895DC01589650
-:101220004C91589760FB42F958964C935897242F4D
-:1012300059964C915997342F337050E040E0ED911E
-:10124000FC910190F081E02D60E01994DC01ED91BA
-:10125000FC910280F381E02D6FE61994262F2F7008
-:10126000DC0195966C919597607F622B95966C93B7
-:10127000959792962D913D914D915C919597ED9119
-:10128000FC910190F081E02D6CE61994DC019496BC
-:101290002C91949760FB21F994962C9394979296B5
-:1012A0002D913D914D915C919597ED91FC9101901F
-:1012B000F081E02D6CE61994DC0193968C91939764
-:1012C00060FB87F993968C93939761FB882780F94D
-:1012D00094966C9194976E7F682B94966C939497E8
-:1012E00092962D913D914D915C919597ED91FC9148
-:1012F00011970190F081E02D6CE6CD011994DC018D
-:1013000092968C91929760FB87F992968C93929724
-:101310006695677093968C919397887F682B9396C8
-:101320006C93939792962D913D914D915C919597E9
-:10133000ED91FC9111970190F081E02D6CE6CD01CB
-:1013400019946770262F2295207FDC0192966C916C
-:1013500092976F78622B92966C93929792962D91BA
-:101360003D914D915C919597ED91FC910190F081AB
-:10137000E02D6CE61994DC01ED91FC910280F38183
-:10138000E02D6CE619940F94BB09892F8F70089596
-:101390000F94BB098695817008950F94BB09771F40
-:1013A0007727771F8170880F872B08950F94BB09CB
-:1013B000862F881F8827881F7770770F872B0895BF
-:1013C0000F94BB09862F8295877008952EE93FE020
-:1013D000009729F0F9013197F1F70197F9CF0895B6
-:1013E000089580E00895FC018491882321F08230E3
-:1013F00011F083E0089586E00895EF92FF920F9335
-:101400001F93CF93DF93EC01162FEC80FD80F70143
-:101410000491C7010F94F309A82F013049F10FEF90
-:101420002C813D81F9013A9644913196549133973C
-:101430006491319684911136E8F070E0762F66273A
-:10144000860F972F911D0097A9F08E0D9F1D41E6E5
-:10145000511730F5188A1B8A1C8A198A1A8A90E05B
-:1014600080E0DF91CF911F910F91FF90EF90089551
-:101470000FE0D6CFF90136966491319684911134FC
-:1014800060F070E0762F6627860F972F911D0097EA
-:1014900021F08E0D9F1D41E4DBCFC7014196D8CFCF
-:1014A0005417C0F2B0E0FC0164916F3F29F401963B
-:1014B000451781F24F5FF7CF411333C0F9012491F3
-:1014C000AC014F5F5F4FFC01222311F0223091F4F9
-:1014D00024912B8BFA0144914C8BFC013396E491BF
-:1014E000E88BFC013496E491E98BFC013596E4919C
-:1014F000EA8BB7CF2491322F3F7032503A8B22952E
-:101500002F70298BFA014491242F2F702C8B429538
-:101510004F704B8BFC013296E491E295EF70E88BB3
-:10152000A0CF3296649160236A0F7B2F711D860FC6
-:10153000971FBECF8EBD0DB407FEFDCF8EB50895AB
-:101540000F93FC010150040F84A996A9941788F009
-:10155000081710F4041778F42150260F83A995A9D1
-:10156000961758F0281760F481E0261720F40F91A1
-:101570000895081778F780E0FACF2817A8F7FBCF6F
-:1015800081E0F5CF0F94AC41FC01DB018C9120810F
-:101590003181382798E0A901220F331F57FD05C07C
-:1015A0009150C9F7318320830895B1E22B27B0E130
-:1015B0003B27F6CF8F929F92AF92BF92CF92DF924E
-:1015C000EF92FF92CF93DF9390934F1480934E143A
-:1015D0001092821482E090E0A0E0B0E080936B145F
-:1015E00090936C14A0936D14B0936E1410924D14DC
-:1015F0001092491410924A1410924B1410924C14E9
-:101600008FEF9FEFDC018093451490934614A093D5
-:101610004714B0934814662309F470C040E060E0BA
-:1016200070E0CB010E94717A81110DC0C0E08C2F57
-:10163000DF91CF91FF90EF90DF90CF90BF90AF9070
-:101640009F908F900895809103148F7779F7809100
-:101650000F1490911014A0911114B09112148436AB
-:101660009105A105B10510F3C0900B14D0900C1496
-:10167000E0900D14F0900E14C114D104E104F104B3
-:10168000A9F240E0C701B6010E94717AC82F8823F1
-:1016900069F280915012909151128115924031F669
-:1016A000A0915512AA2311F2609153127091541215
-:1016B0006115710509F4BACF20915212222309F461
-:1016C000B5CFA0937D1420936F1490E080E030E0BC
-:1016D000E1E0F0E0D82FAF01082E02C0440F551F03
-:1016E0000A94E2F72417350769F041E0480F0196A4
-:1016F0008930910579F74093781498CFC12CD12C7B
-:101700007601BFCF8093781420915B1230915C12E8
-:1017100050E040E02115310541F4209169123091EB
-:101720006A1240916B1250916C1220937014309396
-:101730007114409372145093731446015701860E2E
-:10174000971EA11CB11C80927E1490927F14A092CF
-:101750008014B0928114E0915612F0915712F093D8
-:101760008414E0938314B0E00F94E53DDC01CB01D9
-:10177000880D991DAA1DBB1D809385149093861416
-:10178000A0938714B093881425E0EE0FFF1F2A95CD
-:10179000E1F7E150FE4FEF2FFF27E6958E0F9F1FD9
-:1017A000A11DB11D8093791490937A14A0937B149A
-:1017B000B0937C148090581290905912B12CA12CA7
-:1017C0008114910441F48090651290906612A0906B
-:1017D0006712B0906812C81AD90AEA0AFB0AC80C44
-:1017E000D91CEA1CFB1C04C0F694E794D794C79458
-:1017F000DA95D2F7C0927414D0927514E0927614F0
-:10180000F092771485EFC8168FE0D806E104F10452
-:1018100020F48CE08093821409CF80E125EFC2167A
-:101820002FEFD206E104F10488F0809171129091BB
-:101830007212A0917312B0917412809385149093D8
-:101840008614A0938714B093881480E28093821446
-:10185000EECE8F929F92AF92BF92CF92DF92EF9295
-:10186000FF920F931F93CF93DF9300D01F92CDB7BA
-:10187000DEB7FC018381813091F080E00F900F9002
-:101880000F900F90DF91CF911F910F91FF90EF90EC
-:10189000DF90CF90BF90AF909F908F9008958181FF
-:1018A00081FFEBCF81899289A389B489892B8A2B07
-:1018B0008B2B09F460C07F0140E050E0BA01CF01FA
-:1018C0000E94827C8823C9F2F701C18CD28C858862
-:1018D0009688A788B08C82E090E0A0E0B0E0F601A6
-:1018E00080839183A283B3839E012F5F3F4FB50115
-:1018F000A401C6010E94457B882309F4BECF00E005
-:1019000010E09801B501A401C6010E94B37A8823B2
-:1019100009F4B3CF89809A80AB80BC80F6018789B7
-:10192000803101F5F8EF8F16FFEF9F06A104B10497
-:10193000D8F2F701158A168A178A108E118A128A30
-:10194000138A148A818180688183C7010E94297E5D
-:10195000882309F492CF40E050E0BA01C7010E9409
-:10196000827C8CCF88EF88168FEF9806A8068FE0D0
-:10197000B806F8F6B9CF81E081CF2F923F924F920F
-:101980005F926F927F928F929F92AF92BF92CF920F
-:10199000DF92EF92FF920F931F93CF93DF9300D0CC
-:1019A0001F92CDB7DEB7382E7B012DB73EB73C83F3
-:1019B0002B838091ED18811107C01092D2181092DC
-:1019C000D51881E08093ED188091CA18811107C065
-:1019D0001092AF181092B21881E08093CA18DA0101
-:1019E0008C918F3209F08DC084EA94E1F7019183E4
-:1019F00080834F5F5F4F311010929717F70101906E
-:101A0000F081E02DFA83E9838A0122EDC22E28E1DC
-:101A1000D22E3BE1232E01151105E9F14DB65EB63C
-:101A20006FE270E0C8010F94E2414C0108171907FA
-:101A300068F53C01601A710A7724C30101962DB73D
-:101A40003EB7281B390B0FB6F8943EBF0FBE2DBF13
-:101A50008DB79EB701965C01A301B8010F940242B5
-:101A6000F501E60DF71D1082C6010E945E7ED701CA
-:101A70006D917C9121E0A501C6010E946A808111CF
-:101A800046C0C5010E9455BE10E000E00FB6F894B4
-:101A90005EBE0FBE4DBE3320A9F0D701ED91FC9183
-:101AA0008BE1A9E8B4E101900D928A95E1F791E00C
-:101AB00080919717811190E08091A21790FB86F991
-:101AC0008093A217C801EB81FC810FB6F894FEBF8A
-:101AD0000FBEEDBF0F900F900F900F90DF91CF9141
-:101AE0001F910F91FF90EF90DF90CF90BF90AF903C
-:101AF0009F908F907F906F905F904F903F902F902E
-:101B0000089589E894E1D7018D939C9377CFF701ED
-:101B10008081918129813A812817390711F00E942B
-:101B20005E7ED701CD92DC92332099F0A091971779
-:101B3000AA3078F481E08A0F809397172A9ED0010B
-:101B40001124A757B94EF601822D01900D928A9566
-:101B5000E1F7B2EDCB16B8E1DB0669F49FEAC92ED6
-:101B600098E1D92E84010F5F1F4F0FB6F8945EBE27
-:101B70000FBE4DBE50CF82EDC82E88E1D82EF2CFD9
-:101B80008F929F92AF92BF92EF92FF921F93CF934B
-:101B9000DF93CDB7DEB7A0970FB6F894DEBF0FBEC8
-:101BA000CDBF611571058105910591F120E04AE0F5
-:101BB000842E912CA12CB12C11E0120FEE24E39471
-:101BC000F12CEC0EFD1EE20EF11C27FDFA94A5018E
-:101BD00094010F94A43DF7016083B901CA01212F3C
-:101BE000611571058105910539F7115018F1E1E092
-:101BF000F0E0EC0FFD1FE10FF11D17FDFA9590814C
-:101C000087E39A3008F480E3890F0E949FCEEDCFDE
-:101C100080E3A0960FB6F894DEBF0FBECDBFDF9174
-:101C2000CF911F91FF90EF90BF90AF909F908F90BA
-:101C30000C949FCEA0960FB6F894DEBF0FBECDBF1A
-:101C4000DF91CF911F91FF90EF90BF90AF909F9049
-:101C50008F900895CF92DF92EF92FF926B017C01FB
-:101C6000F7FE0BC0F094E094D094C094C11CD11C3A
-:101C7000E11CF11C8DE20E949FCEC701B601FF90CE
-:101C8000EF90DF90CF900D94C00DCF93DF93209114
-:101C9000441221111EC0FC0101900020E9F7319788
-:101CA000EF01C81BD90BCB32D1052CF02291207C3F
-:101CB0002038E1F3F5CFBC01DD27AE0189E192E1E7
-:101CC0000F940242C75EDD4E1882109218121092D5
-:101CD0001712DF91CF910895BF92CF92DF92EF92CA
-:101CE000FF920F931F93CF93DF93EB01FC012381AE
-:101CF000223008F49DC040855185628573854F71FF
-:101D0000552766277727452B462B472B09F090C090
-:101D10008C011092FD111092FC11C12CDD24DA947B
-:101D20007E01FBE0EF0EF11C8DE0B82E40E250E0AA
-:101D3000BE01C8010E94167D8032910581F021E02C
-:101D4000892B09F420E0822F8195DF91CF911F919B
-:101D50000F91FF90EF90DF90CF90BF900895288172
-:101D6000222309F467C0253E11F02E3229F4109287
-:101D7000FD111092FC11DACF3B853F733F3009F023
-:101D800042C04A8D5B8D452B61F52F713FEF320FBD
-:101D9000323038F58D85213041F1C81229C02150EB
-:101DA000330BB29EC001B39E900D1124DC01A450F0
-:101DB000BE4EFE0120E02B30F0F0468157814F3FB0
-:101DC000510519F010F04FE550E04D932F5F32961A
-:101DD0002D3089F7288126FF04C0FC01E75FFD4E06
-:101DE00010822B8523FDA2CFB0CFC82ED12CD7CF08
-:101DF000DD24D394D4CF253018F044815581DFCF32
-:101E000041815281DCCFD1100EC0FE0120E020FBC9
-:101E1000279527F93191230FEE16FF06C1F7C21659
-:101E200001F3DD24D3941092FD111092FC11D9CF4F
-:101E30008FEF8BCF80E089CF9091771021E6929F32
-:101E4000F0011124E852FF4E80839F5F943040F4EC
-:101E500090937710809175108F5F8093751008951F
-:101E600010927710F7CFCF92DF92EF92FF92ECE8CB
-:101E7000FFE080818183C0900E10D0900F10E09021
-:101E80001010F09011108FEFC81AD80AE80AF80A5B
-:101E900082E89CE30E94ACCEC701B6010F942A0EE3
-:101EA0008AE00E949FCE8EE79CE3FF90EF90DF9048
-:101EB000CF900C94ACCECF92DF92EF92FF920F9323
-:101EC0001F93CF938C01C62F0E940BD8C0900E1089
-:101ED000D0900F10E0901010F0901110C8010E94E7
-:101EE000ACCEC701B6010F942A0E8AE00E949FCEA5
-:101EF0000E947BDD0196E1F78C2F0F94330F109237
-:101F0000131010921210CF911F910F91FF90EF902C
-:101F1000DF90CF9008952F923F924F925F926F92F1
-:101F20007F928F929F92AF92BF92CF92DF92EF9269
-:101F3000FF920F931F93CF93DF93CDB7DEB76697D2
-:101F40000FB6F894DEBF0FBECDBF4C017B011A0166
-:101F50003E8B2D8B198A1A8AFB0180819181A28187
-:101F6000B3818F3F9105A105B10521F118F11D86BF
-:101F70001E861F86188AAC01BD0137E076956795ED
-:101F8000579547953A95D1F75A87498780688B8747
-:101F90008C870091890F10918A0F8091870F909103
-:101FA000880F9C8B8B8BAA24A394B12C011511054F
-:101FB00009F050C0F7018081898BB401AE014F5EFA
-:101FC0005F4FC101ED89FE89199566960FB6F894A9
-:101FD000DEBF0FBECDBFDF91CF911F910F91FF905C
-:101FE000EF90DF90CF90BF90AF909F908F907F90B9
-:101FF0006F905F904F903F902F90089582179307B6
-:1020000020F19C818B85981708F445C09B818C85B5
-:102010008917D8F06091870F7091880F640D751D36
-:1020200048E050E0CE0109960F94DF386F8578893B
-:102030006115710509F4BECF8616970609F4BECF67
-:10204000F70180818068898BB9CF86010A151B054D
-:1020500008F4B0CF3501600E711E76946794630169
-:1020600091E0C91AD108260193E0440C551C9A95B9
-:10207000E1F76B897C89640D751D48E050E0CE0165
-:1020800001960F94DF3829813A8189859A8528172E
-:10209000390708F0B3CF5301EFEFAE1ABE0AD6CF1F
-:1020A0008F929F92AF92BF92CF92DF92EF92FF9268
-:1020B0000F931F93CF93DF9300D01F92CDB7DEB75E
-:1020C0006C017B014A015901AE014F5F5F4FB401C2
-:1020D000C7010E94C23E7C0189819A81AB81BC818B
-:1020E000892B8A2B8B2B49F09801A501BE016F5FCC
-:1020F0007F4FC6010F948B0FE7CF0F900F900F907B
-:102100000F90DF91CF911F910F91FF90EF90DF9093
-:10211000CF90BF90AF909F908F9008950E9481CDF7
-:1021200081111AC08091A21782FF0DC087FD0BC0DC
-:102130008091FC11811104C089E79FE00D94450E48
-:102140008CEF91E1FBCF8091860F813041F08AE4E2
-:102150009CE36FEF0C941D3B81E79CE3FACF85E68F
-:102160009CE3F7CF4F925F926F927F928F929F92F4
-:10217000AF92BF92CF92DF92EF92FF920F931F9395
-:10218000CF93DF93C6E7D2E04C845D846E847F8476
-:102190000DE61FE0F80124813581468157816C816D
-:1021A0007D818E819F810F94083E4B015C01F80177
-:1021B0002085318542855385688579858A859B850B
-:1021C0000F94083E6B017C01F8012081318142812E
-:1021D0005381688179818A819B810F94083EAB018C
-:1021E000BC0187E49CE30E94A4CFB501A40183E471
-:1021F0009CE30E94A4CFB701A6018FE39CE30E9459
-:10220000A4CFB301A2018BE39CE3DF91CF911F9197
-:102210000F91FF90EF90DF90CF90BF90AF909F9085
-:102220008F907F906F905F904F900C94A4CFCF933E
-:10223000DF931F92CDB7DEB787E0898360E0CE01E0
-:1022400001960E94D9B261E0CE0101960E94D9B2F6
-:1022500062E0CE0101960E94D9B289810F90DF9190
-:10226000CF9108950F931F93CF93DF93CDB7DEB730
-:102270006E970FB6F894DEBF0FBECDBF0F94171147
-:102280008823E9F142EF53E082FF02C043EF53E0BD
-:1022900022EF33E081FF02C025EF33E080FD2CC048
-:1022A00082EF93E05F934F933F932F939F938F938E
-:1022B00089E29CE39F938F938E010F5F1F4F1F93C3
-:1022C0000F930F9448390E940FD8C8010E9425C56A
-:1022D000C8010F94450E0FB6F894DEBF0FBECDBFF8
-:1022E00081E06E960FB6F894DEBF0FBECDBFDF91D2
-:1022F000CF911F910F91089587EF93E0D3CF80E0A6
-:10230000F0CFCF93DF938091091690910A16891B25
-:1023100080958F7019F40E94EADDF5CF809109163F
-:102320008F5F8F70A09109169DE5A99FD0011124A0
-:10233000FD01E356F64FEF0119929A95E9F7908166
-:1023400098609083AE54B64F90E1EFE1F6E10190D2
-:102350000D929A95E1F72091091690910A1629138A
-:1023600003C094E69093061680930916DF91CF91EF
-:102370000C944995CF93DF93CDB7DEB760970FB636
-:10238000F894DEBF0FBECDBF80E1E6E7F2E0DE01EC
-:10239000119601900D928A95E1F7CE0101960E9467
-:1023A000D0B160960FB6F894DEBF0FBECDBFDF91FF
-:1023B000CF910895DC01ED91FC910190F081E02D29
-:1023C00027E030E040E050E061E01994DC01149631
-:1023D0008C911497807F8A6014968C931497129630
-:1023E0002C91129713963C911397482F4F7050E001
-:1023F000ED91FC9111970190F081E02D60E1CD010C
-:1024000019946091EA1581E068278FEA95E10D94AF
-:102410000E096091AE1581E0682783E795E10D9480
-:102420000E096091721581E0682787E395E10D94AC
-:102430000E096091361581E068278BEF94E10D94C9
-:102440000E096091FA1481E068278FEB94E10D94F6
-:102450000E09CF93C82F41E00E946FD98C2FCF91E6
-:102460000C948ED9CF93DF936AE17CE30F94291209
-:10247000C5E5D9E04C895D896E897F8982E19CE35D
-:102480000E94A4CF488D598D6A8D7B8D8FE09CE38F
-:102490000E94A4CF4C8D5D8D6E8D7F8D8CE09CE372
-:1024A0000E94A4CF48A159A16AA17BA189E09CE325
-:1024B0000E94A4CF8AE0DF91CF910C949FCE80E55B
-:1024C00094E10E94297E80E594E10E945E7E8091E5
-:1024D000A2178D7F8E7F8093A21710929E17109265
-:1024E0009F171092A0171092A11708950E940FD85D
-:1024F000609153097091540986EF9BE30E94E0DDDF
-:1025000083EF9BE30C94ACCE0E94D1C981110C9453
-:10251000A7C960E070E0CB0108954F925F926F927F
-:102520007F928F929F92AF92BF92CF92DF92EF9263
-:10253000FF920F931F93CF93DF9300D01F92CDB7DD
-:10254000DEB74C015B016A01F22E6E2D80E00E9425
-:102550006FE5182F81111CC0409151096E2D89E043
-:102560000E94092E812F0F900F900F900F90DF91F6
-:10257000CF911F910F91FF90EF90DF90CF90BF9080
-:10258000AF909F908F907F906F905F904F90089545
-:10259000002331F1409151096E2D84E00E94092EF3
-:1025A0000E940FD881ED9BE30E94ACCE61E08F2D9D
-:1025B0000E9425CC0091500983E08093500981E06E
-:1025C00080934F0980914F09882341F060E08F2D5F
-:1025D0000E9425CC81E00E94EADDF4CF00935009EF
-:1025E000409151096E2D85E00E94092E20E030E0D7
-:1025F000A901F40160817181828193810F94B139C5
-:10260000882371F080E090E0A0ECB0E489839A83A5
-:10261000AB83BC83BE016F5F7F4FC4010E944EB588
-:1026200020E030E0A901F501608171818281938110
-:102630000F94B139882351F140908D0950908E0943
-:1026400060908F097090900980E090E0A8ECB1E470
-:1026500080938D0990938E09A0938F09B093900970
-:1026600080E090E0A0ECB0E489839A83AB83BC83E4
-:10267000BE016F5F7F4FC5010E944EB540928D092C
-:1026800050928E0960928F0970929009812C912C42
-:1026900080E4A82EBA2C03E020E030E0A901F60186
-:1026A00060817181828193810F946840181684F44F
-:1026B0004091510960E086E00E94092E89829A8249
-:1026C000AB82BC82BE016F5F7F4FC6010E944EB5D8
-:1026D000F09050090093500910924F094091510910
-:1026E00060E087E00E94092E80914E09811104C0AC
-:1026F00081E00E94EADDF8CFF0925009813061F26A
-:1027000031CF4F925F926F927F928F929F92AF9252
-:10271000BF92FF920F931F93CF93DF93CDB7DEB796
-:10272000A0970FB6F894DEBF0FBECDBFF82E4A01BA
-:102730005B012801390120E030E0A901C301B801A3
-:102740000F94B139811111C0FF2019F081E0F81206
-:1027500092C060E070E88BE395E420E030E040E771
-:1027600052E40F94023F2B013C014D8E5E8E6F8E22
-:1027700078A20F2D10E0F801E253F44CE491772495
-:1027800073941E160CF4712CFF24F39420E030E0B7
-:10279000A901C501B4010F94684018160CF0F12C82
-:1027A00080E00E9485B269837A838B839C8381E079
-:1027B0000E9485B26D837E838F83988782E00E941A
-:1027C00085B269877A878B879C8783E00E9485B270
-:1027D0006D877E878F87988B000F111F000F111F49
-:1027E000E1E0F0E0EC0FFD1F0E0F1F1FF80110825B
-:1027F000118212821382CE0101960E94D0B1F8019B
-:1028000080829182A282B382198A1A8A1B8A1C8AC8
-:102810001D8A1E8A1F8A188E198E1A8E1B8E1C8E78
-:1028200080914C0990914D09892B61F49E012F5E96
-:102830003F4F40915109BE01635E7F4FCE0101962B
-:102840000E94D6960E947F8F7F100E94D6BAA096D3
-:102850000FB6F894DEBF0FBECDBFDF91CF911F91B1
-:102860000F91FF90BF90AF909F908F907F906F904F
-:102870005F904F90089560E070E080E793E46DCF43
-:10288000CF92DF92EF92FF920F931F93CF93DF933C
-:1028900000D01F92CDB7DEB705E1041B442361F0E1
-:1028A00082E090E0A0E0B0E089839A83AB83BC83B0
-:1028B000CE0101960E946740E02FF0E086E0089F7D
-:1028C000800111248091FC1181111AC089E79FE0D9
-:1028D000B8010E94DDC7081B190B80E2C82ED12C5D
-:1028E000E12CF12C0730110588F0C982DA82EB82E5
-:1028F000FC82CE0101960E946740081B190BF2CFA3
-:10290000E450FE4E10828CEF91E1E2CF0F900F90D9
-:102910000F900F90DF91CF911F910F91FF90EF904B
-:10292000DF90CF9008954F925F926F927F92AF9217
-:10293000BF92CF92DF92EF92FF920F931F93CF93AC
-:10294000DF9300D01F92CDB7DEB77B01142F41FB80
-:10295000662760F90E94733F882309F45CC0D12C7C
-:10296000C12CE114F10439F0C7010E94B43E96E095
-:10297000899F6001112410FF20C080E890E08C192D
-:102980009D096CE070E00F9448415B0100E810E0A5
-:1029900090E2492E512C612C712C81E0A81AB108CB
-:1029A000B7FC0DC049825A826B827C82CE010196AF
-:1029B0000E946740081B190BF0CF00E810E0CD28FB
-:1029C000B9F0C80166E070E00F94344120914A09E3
-:1029D00030914B094091480950914909062F609167
-:1029E0004709C7010E94A74196E0899F80011124F1
-:1029F00080E2C82ED12CE12CF12C0730110558F0C3
-:102A0000C982DA82EB82FC82CE0101960E94674085
-:102A1000081B190BF2CF0F900F900F900F90DF91C2
-:102A2000CF911F910F91FF90EF90DF90CF90BF90CB
-:102A3000AF907F906F905F904F9008958F929F928C
-:102A4000AF92BF92EF92FF920F931F93CF93DF93BA
-:102A500000D01F92CDB7DEB7982F862F7A01122FA4
-:102A6000692F0E94733F882309F446C020914A09C8
-:102A700030914B09409148095091490904E1609116
-:102A80004709C7010E94A74196E0899F7001112460
-:102A900080E2882E912CA12CB12C87E0E816F1045D
-:102AA00058F089829A82AB82BC82CE0101960E9444
-:102AB0006740E81AF90AF1CF812F110F990BAA0B81
-:102AC000BB0B89839A83AB83BC83809146099AE7C9
-:102AD0009093801680938116CE0101960E946740E4
-:102AE00080E290E0A0E0B0E089839A83AB83BC836E
-:102AF000CE0101960E9467400F900F900F900F90AB
-:102B0000DF91CF911F910F91FF90EF90BF90AF9009
-:102B10009F908F900895EF92FF920F931F93CF9302
-:102B2000DF93FB01D081DD2341F17B018C016D2F0F
-:102B30000F94FD09F801C189C195FFEFEF1AFF0A53
-:102B4000F70181917F01F801882341F09089C90F35
-:102B5000D82F682FC8010F94FD09F2CFD03259F059
-:102B600083899189890F8C0FDF91CF911F910F91EC
-:102B7000FF90EF9008958089F6CF80E0F5CF81E057
-:102B8000809345091092410910924209109243091D
-:102B90001092440908952F923F924F925F926F9244
-:102BA0007F928F929F92AF92BF92CF92DF92EF92DD
-:102BB000FF920F931F93CF93DF9300D000D0CDB738
-:102BC000DEB71C017E836D8329013A01470158015C
-:102BD00020E030E040E05FECC301B2010F946840B8
-:102BE00018162CF0412C512C612C2FEC722EC301A5
-:102BF000B2010F94743F2B013C0120E030E040E033
-:102C00005FE4C501B4010F94B13987FD05C0812C83
-:102C1000912CA12C9FE4B92EC301B2010F94B839B5
-:102C20009B01AC01ED81FE81608171818281938184
-:102C30000F94073E0F947B3F69837A838B839C8339
-:102C4000C501B4010F94743F7B018C01E418F508B1
-:102C5000060917091F92912C812C88E0A82E88E480
-:102C6000B82EC980DA80A30192016D817E81C101F5
-:102C70000E94EB2C0F9026960FB6F894DEBF0FBE85
-:102C8000CDBFDF91CF911F910F91FF90EF90DF901B
-:102C9000CF90BF90AF909F908F907F906F905F90FC
-:102CA0004F903F902F9008952F923F924F925F92B6
-:102CB0006F927F928F929F92AF92BF92CF92DF924C
-:102CC000EF92FF920F931F93CF93DF931C01EB01C1
-:102CD000CA01B9010F94B6392AE037ED43E25DE34A
-:102CE0000F94173A2B013C0120E030E040E05FEC0C
-:102CF0000F94684018162CF0412C512C612C3FEC9D
-:102D0000732EC301B2010F94743F2B013C01688103
-:102D100079818A819B810F94B6392AE037ED43E2AD
-:102D20005DE30F94173A6B017C01C301B2010F946C
-:102D3000B8399B01AC01C701B6010F94073E0F944F
-:102D40007B3F6B0188E79FE0A0E0B0E08419950924
-:102D5000A609B7091F9248012CEFA22E27E4B22E34
-:102D60007C018D01A3019201BE01C1010E94EB2CE7
-:102D70000F90DF91CF911F910F91FF90EF90DF9017
-:102D8000CF90BF90AF909F908F907F906F905F900B
-:102D90004F903F902F9008952F923F924F925F92C5
-:102DA0006F927F928F929F92AF92BF92CF92DF925B
-:102DB000EF92FF920F931F93CF93DF9300D000D039
-:102DC0001F921F92CDB7DEB71C0178876F83790100
-:102DD0001A830983BA01550F880B990B0F94B839E0
-:102DE0004B015C0120E030E040E05FEC0F94684074
-:102DF00018162CF0812C912CA12C2FECB22EC50191
-:102E0000B4010F94743F2B013C01B701FF0C880BF8
-:102E1000990B0F94B8394B015C0120E030E040E0A1
-:102E20005FE40F94B13987FD05C0812C912CA12C52
-:102E30009FE4B92EEF81F88560817181072E000C27
-:102E4000880B990B0F94B8396B017C01C301B20157
-:102E50000F94B8399B01AC01C701B6010F94073E2E
-:102E60000F947B3F6B837C838D839E83C501B4016C
-:102E70000F94743F7B018C01E418F50806091709CB
-:102E80001F9289809A808EE0A82E88E4B82ECB808D
-:102E9000DC80A30192016F817885C1010E94EB2C37
-:102EA0000F9028960FB6F894DEBF0FBECDBFDF910E
-:102EB000CF911F910F91FF90EF90DF90CF90BF9037
-:102EC000AF909F908F907F906F905F904F903F90CA
-:102ED0002F9008956F927F928F929F92AF92BF92A0
-:102EE000CF92DF92EF92FF920F931F93CF93DF93D6
-:102EF0003C01EB01688179818A819B810F947B3F42
-:102F00001F92912C812C84E1A82E88E4B82E6B01AD
-:102F100018ECE12EF12C00E010E020E030E0A901F7
-:102F2000BE01C3010E94EB2C0F90DF91CF911F9146
-:102F30000F91FF90EF90DF90CF90BF90AF909F9058
-:102F40008F907F906F9008958F929F92AF92BF92D3
-:102F5000CF92DF92EF92FF920F931F93CF93DF9365
-:102F6000EC014B016091360970E090E080E00F9435
-:102F7000B63929EC38EC48EC5EE30F94173A20E0C0
-:102F800030E040E05FE30F94083E0F947B3F1F92D8
-:102F900084EEA82E87E4B82E6B0114E6E12EF12C06
-:102FA00000E010E020E030E0A90166E379E0CE0126
-:102FB0000E94EB2C0F90DF91CF911F910F91FF900A
-:102FC000EF90DF90CF90BF90AF909F908F9008953B
-:102FD0008F929F92AF92BF92CF92DF92EF92FF9229
-:102FE0000F931F93FB01C080D12C21E02F9328E089
-:102FF000822E2CEC922E3EEDA32E37E4B32EE12C44
-:10300000F12C8701EA9420E030E0A9010E94EB2C2A
-:103010000F901F910F91FF90EF90DF90CF90BF9096
-:10302000AF909F908F9008956F927F928F929F9212
-:10303000AF92BF92CF92DF92EF92FF920F931F93C6
-:10304000CF93DF933C01EB014A016881798190E0E5
-:1030500080E00F94B6392DEC3CEC4CEC5DE30F9422
-:10306000173A20E030E040E251E40F94073E0F941D
-:103070007B3F1F9288EDA82E87E4B82E6B0112E2E9
-:10308000E12EFF24F39400E010E02AE030E040E07D
-:1030900050E0BE01C3010E94EB2C0F90DF91CF9155
-:1030A0001F910F91FF90EF90DF90CF90BF90AF9066
-:1030B0009F908F907F906F900895282F30E0F901B6
-:1030C000E151F84C9491F901E857F44C44912E5B8E
-:1030D000344CF9012491222309F435C0992311F1CC
-:1030E00091509231F8F4E92FF0E08827E558F74E37
-:1030F0008E4F0D945C41F601A8003C01E201CA002C
-:10310000A0014C02F0012402420186025E01B401DA
-:103110000802A001660174026802809180008F7726
-:1031200080938000E22FF0E0EE0FFF1FE85DF44C8B
-:10313000A591B4918FB7F894EC91611148C0409576
-:103140004E234C938FBF0895809180008F7DE8CFF0
-:1031500080918000877FE4CF84B58F7784BDE2CFF4
-:1031600084B58F7DFBCF8091B0008F778093B000C6
-:10317000D9CF8091B0008F7DF9CF809190008F776B
-:1031800080939000CFCF809190008F7DF9CF809178
-:103190009000877FF5CF8091A0008F778093A0006B
-:1031A000C1CF8091A0008F7DF9CF8091A000877F53
-:1031B000F5CF809120018F7780932001B3CF80914C
-:1031C00020018F7DF9CF80912001877FF5CF4E2B95
-:1031D000B8CFEF92FF920F931F93CF93DF93CDB7AA
-:1031E000DEB762970FB6F894DEBF0FBECDBF611594
-:1031F000710579F460E062960FB6F894DEBF0FBEF9
-:10320000CDBFDF91CF911F910F91FF90EF900D9463
-:103210005D186F3F710511F461E0EDCF8B01F82E61
-:10322000682FCE0101960E949ECD8989882309F4DA
-:1032300077C0E981FA819F858889911134C06081C6
-:1032400090E023E030E0A901481B590B440F551FC3
-:10325000042E01C0220F0A94EAF72095262362E08B
-:1032600070E001C0660F4A95EAF7262B2083FC0127
-:103270003396EE0FFF1F21E030E02C0F3D1FE20FD1
-:10328000F31F0190F081E02D1183008362960FB649
-:10329000F894DEBF0FBECDBFDF91CF911F910F918C
-:1032A000FF90EF9008952A892111F0CFAFEFB0E0A1
-:1032B000923029F0AD85BE850D90BC91A02D608126
-:1032C00090E023E030E0A901481B590B440F551F43
-:1032D000042E01C0220F0A94EAF72095262362E00B
-:1032E00070E001C0660F4A95EAF7262B208303960B
-:1032F000880F991FE1E0F0E0EC0FFD1F8E0F9F1F7C
-:10330000FC01E080F18098010F94F83D2FEF30E050
-:1033100040E050E00F94A43DF70131832083B6CF05
-:1033200061E00F37110508F460E08F2D64CF109233
-:10333000851881E08093841810925F1861E084E121
-:103340000F945D1861E085E10F945D18E9EBF0E002
-:1033500080818E7F808380818D7F808388E48093CD
-:10336000B80085E48093BC000895CF93DF9391E08B
-:1033700090930A188823B9F0C091B800D091BA0090
-:103380008091BC008A7B8093BC0060E084E10F9454
-:103390005D1860E085E10F945D180F949719D09344
-:1033A000BA00C093B800DF91CF9108958F929F9299
-:1033B000AF92BF92CF92DF92EF92FF920F931F9343
-:1033C000CF93DF9300D000D0CDB7DEB791E19983E2
-:1033D0001A828B831C826D834E8381E08093AE18AA
-:1033E00082E68093AD181092AC181092AB1846E0AC
-:1033F00050E0BE016F5F7F4F85EF98E10F94750736
-:103400000091AB18013208F094C01091AD180F94E0
-:10341000FF066B017C0180918518811165C082E0F7
-:103420008093851881E0809384188FEF80938318B0
-:103430001092821800938118ABE8B8E1E1E6F8E158
-:1034400080E008138FC01092601880916018110FEF
-:10345000182B1093601880915F18813009F086C096
-:1034600010925F180F94FF066B017C018091601829
-:103470008093BB008091871890918818A09189183B
-:10348000B0918A18892B8A2B8B2B99F00F94FF0609
-:1034900000918718109188182091891830918A1806
-:1034A0006C197D098E099F09061717072807390728
-:1034B000E0F18091BC0083FDD9CF85EC8093BC0006
-:1034C0000F94FF066B017C0180918518823009F40E
-:1034D0004FC0809183188F3F61F1809183188032B3
-:1034E00041F18091831825C08091871890918818A8
-:1034F000A0918918B0918A18892B8A2B8B2B09F4FB
-:103500008ACF0F94FF068090871890908818A0901B
-:103510008918B0908A186C197D098E099F09861642
-:103520009706A806B90608F076CF809186180F9402
-:10353000B5191092AC181092AB181092AE182696CE
-:103540000FB6F894DEBF0FBECDBFDF91CF911F91B4
-:103550000F91FF90EF90DF90CF90BF90AF909F9032
-:103560008F9008959D9191938F5F6BCF85EEA6CF3D
-:103570008091871890918818A0918918B0918A1825
-:10358000892B8A2B8B2B09F49FCF0F94FF06009178
-:103590008718109188182091891830918A186C1911
-:1035A0007D098E099F09061717072807390708F0B4
-:1035B0008BCFBBCF85ED8093BC0080918718909115
-:1035C0008818A0918918B0918A180796A11DB11D7D
-:1035D00023E0B695A795979587952A95D1F72091E1
-:1035E000BC0024FD03C010928518089540918718EF
-:1035F000509188186091891870918A18452B462B34
-:10360000472B69F30097A105B10541F025E32A9501
-:10361000F1F700000197A109B109E1CF8091861867
-:103620000D94B519CF93DF93EC016C8161708881A3
-:103630000F945D186C81669561708A81DF91CF91DE
-:103640000D945D18860F911DFC0183A18F3F19F029
-:10365000642F0D945D180895CF93DF9390E0FC01E3
-:10366000E857F44C24918E5B944CFC0184918823A0
-:10367000C9F090E0880F991FFC01EB52F84CA5911E
-:10368000B491FC01E85DF44CC591D49161110DC079
-:103690009FB7F8948C91209582238C93888128235E
-:1036A00028839FBFDF91CF910895623051F49FB777
-:1036B000F8943C91822F809583238C93E8812E2B64
-:1036C000EFCF8FB7F894EC912E2B2C938FBFEACFCE
-:1036D000CF93DF93EC01ECA5FDA5309709F470C002
-:1036E000138E128E118E108E178A168A82E490E045
-:1036F000958F848F848596EF980F943048F02EEC48
-:10370000280F243028F022EC280F283008F051C070
-:103710002FE030E0378B268B20E430E0318F208F94
-:1037200027E230E0338F228F943050F02EEC280FB8
-:10373000243030F022EC280FB0E0A0E0283010F464
-:10374000A8E6B0E02C91943028F032EC380F3830F5
-:1037500008F443C031E0232B943048F09EEC980FDE
-:10376000943028F08E53B0E0A0E0883010F4A8E642
-:10377000B0E02C93248536EF320F343080F18EEC9C
-:10378000820F843060F182EC820F883058F190E033
-:1037900080E0948B838B343040F52650330B81E0EE
-:1037A00001C0880F2A95EAF7858B848D958D019746
-:1037B000F1F7CF010F9494088CA59DA50F947E0876
-:1037C0008EA59FA5009719F161E00F945D1861E047
-:1037D0008EA5DF91CF910D942C1B34E0BCCF8BE6EE
-:1037E00090E0D7CF8DE690E0D4CF88E02233E1F2AD
-:1037F00084E02333C9F282E02433B1F282EC820FF9
-:10380000883018F42E53330BCACF81E0CDCFDF912F
-:10381000CF910895EF92FF920F931F93CF938C0156
-:10382000C42F79016150673008F045C0E62FF0E001
-:103830008827E25EF34E8E4F0D945C41DA0022023F
-:10384000F40078019A0168016202780183E2E80ECF
-:10385000F11C005D1F4FF70181917F018F3F49F0FF
-:1038600061E00F942C1B61E0F701319780810F9488
-:103870005D18E016F10679F761E084E30F942C1BE4
-:1038800060E084E30F945D1861E083E30F942C1BE8
-:1038900060E083E30F945D1861E085E30F942C1BD7
-:1038A00061E085E30F945D181CBC80E58CBDC230DF
-:1038B00010F481E08DBD81E0CF911F910F91FF90B9
-:1038C000EF90089561E0C8010F94221BF4CF4111DD
-:1038D00003C041E062E0F7CF40E064E0C8010F942C
-:1038E000221B40E0F7CFF80183A160E08F3F19F37E
-:1038F000EACF842F0F949A0ADECFF70181917F01DE
-:103900000F949A0AC150C111F8CFD5CFF701849115
-:103910000F949A0AFFEFEF1AFF0AC150C111F6CFB8
-:10392000CACF8F929F92AF92BF92CF92DF92EF92C7
-:10393000FF926B017C010F94FF064B015C01C114E7
-:10394000D104E104F104B9F00F94FF066819790974
-:103950008A099B09683E73408105910580F321E047
-:10396000C21AD108E108F10888EE880E83E0981E9B
-:10397000A11CB11CE4CFFF90EF90DF90CF90BF90DF
-:10398000AF909F908F900895CF92DF92EF92FF9229
-:103990000F931F93CF93DF9300D000D01F921F92FD
-:1039A000CDB7DEB77C0118861F8285E08983F701D9
-:1039B00082A98A8360686B835C834D833E832F83F7
-:1039C00067E0CE0101960F94A3068887F70182A5D0
-:1039D00093A5892B31F080A991A9009711F00F943C
-:1039E000121B8E010F5F1F4F6E01F9E0CF0ED11C2D
-:1039F000F80161918F01C7010F94BD08F70121897A
-:103A00003289820F932F911D928B818B0C151D058E
-:103A100079F762E070E080E090E00F94911C2896C6
-:103A20000FB6F894DEBF0FBECDBFDF91CF911F91CF
-:103A30000F91FF90EF90DF90CF9008952FB7F894FB
-:103A400060914F18709150188091511890915218B0
-:103A50002FBF0895CF92DF92EF92FF920F941E1D19
-:103A60006B017C0128E5C20E22E0D21EE11CF11C94
-:103A70000E94C8DD8F3F71F00F941E1D6C197D09E7
-:103A80008E099F0997FDF4CF80E0FF90EF90DF90C3
-:103A9000CF90089581E0F9CF2F923F924F925F929D
-:103AA0006F927F928F929F92AF92BF92CF92DF924E
-:103AB000EF92FF920F931F93CF93DF93CDB7DEB7B3
-:103AC00061970FB6F894DEBF0FBECDBF1C011C86F8
-:103AD0001B8685E08987F10182A98A876B8763E06D
-:103AE000CE0109960F94A3068C87F2E0F98B9E0114
-:103AF000235F3F4F3E872D87F10184A595A5009751
-:103B000061F00F949408C1010F94F3081816190678
-:103B10007CF4C1010F94D808F6CF82A593A5892B18
-:103B200091F380A991A9009771F30F94121BEBCF29
-:103B3000F10186A597A5009741F061E00F945D180B
-:103B400061E0F10186A50F942C1B8E01075F1F4FCA
-:103B5000F80161918F01C1010F94BD082D853E854B
-:103B600002171307A9F7F10186A597A5009719F089
-:103B700062E00F942C1B62E070E080E090E00F9414
-:103B8000911C0F941E1D2B013C018985CB84D12CE7
-:103B9000F12CE12CDD24DA94E82A812C912C5401BB
-:103BA00005E010E00F941E1D641575058605970548
-:103BB00031F00150110909F474C02B013C01C1011D
-:103BC0000F94D80897FD0FC07A2D692D582D4427E2
-:103BD0004C019924092C000CAA08BB08842A952AB8
-:103BE000A62AB72ABB24C814D904EA04FB04D1F6D8
-:103BF00026013701812C912C54010F941E1D6B015D
-:103C00007C0125E030E0388B2F8710E00F941E1DDB
-:103C10006C157D058E059F0549F0EF85F889319774
-:103C2000F88BEF87EF2BE9F16B017C01C1010F9459
-:103C3000D808DC0197FD1CC09201A301B401C501A5
-:103C400008E00F947641BB27EB2FEE0FEE0B422ED0
-:103C50004A2A532E5B2A6E2E642A7E2E752A8E2EB9
-:103C6000862A9E2E972AAE2EA82ABE2EB92A1F5F1C
-:103C7000153061F6F10186A597A5009741F061E046
-:103C80000F945D1861E0F10186A50F942C1BC10112
-:103C90000F94F3081816190664F4C1010F94D8089C
-:103CA000F6CF412C512C612C712C812C912CA12C04
-:103CB000B12CF10184A595A5009711F00F947E0811
-:103CC00062E070E080E090E00F94911CF101178AAF
-:103CD0009201A301B401C50108E30F949141298326
-:103CE0009201A301B401C50100E30F9491412A831D
-:103CF0009201A301B401C50108E20F9491412B8305
-:103D00009201A301B401C50100E20F9491412C83FB
-:103D10009201A301B401C50108E10F9491412D83E3
-:103D20009201A301B401C50100E10F9491412E83DA
-:103D30009201A301B401C50108E00F9491412F83C2
-:103D4000488667E0CE0101960F94A306481202C090
-:103D5000411011C081E0F101878BF989F13019F030
-:103D600021E0298BC9CE412C512C612C712C812C46
-:103D7000912CA12CB12C9201A301B401C50108E042
-:103D80000F949141B901CA0161960FB6F894DEBF54
-:103D90000FBECDBFDF91CF911F910F91FF90EF909C
-:103DA000DF90CF90BF90AF909F908F907F906F905B
-:103DB0005F904F903F902F9008951F920F920FB6F3
-:103DC0000F9211242F933F938F939F93AF93BF93A1
-:103DD00080914F1890915018A0915118B09152189D
-:103DE00030914E1823E0230F2D3758F50196A11D71
-:103DF000B11D20934E1880934F1890935018A093A4
-:103E00005118B09352188091531890915418A09162
-:103E10005518B09156180196A11DB11D80935318E5
-:103E200090935418A0935518B0935618BF91AF9122
-:103E30009F918F913F912F910F900FBE0F901F90E8
-:103E4000189526E8230F0296A11DB11DD2CF1F920F
-:103E50000F920FB60F9211240BB60F922F933F9330
-:103E60004F935F936F937F938F939F93AF93BF9382
-:103E7000EF93FF938091B900887F803609F44DC09D
-:103E800008F040C0883209F4A9C028F5803109F44F
-:103E90009DC0C8F4882309F4FBC0883009F496C09B
-:103EA000FF91EF91BF91AF919F918F917F916F9112
-:103EB0005F914F913F912F910F900BBE0F900FBECE
-:103EC0000F901F901895883109F488C0803241F70F
-:103ED0008093831814C0803409F49DC040F480336B
-:103EE000B9F38833E9F68093831885ECB0C0803548
-:103EF00009F485C0883509F496C0883489F60F9492
-:103F0000DA1ACECF883909F48CC038F5883729F011
-:103F100050F4883611F0803719F683E080938518C5
-:103F200010924D1857C0883809F47BC0803919F0B9
-:103F3000803809F0B5CF80914D18803208F071C0FB
-:103F4000E0914D1881E08E0F80934D188091BB0059
-:103F5000F0E0E35DF74E80833DC0803B39F0E0F454
-:103F6000803A09F479C0883A09F09ACF84E08093C6
-:103F7000851810922C1810922B18E0915918F09176
-:103F80005A18199580912B1881110FC081E08093E8
-:103F90002B1810920B1809C0803C09F4A6CF883C5E
-:103FA00009F4A3CF883B09F07BCFE0912C1881E086
-:103FB0008E0F80932C18F0E0E55FF74E80818093A0
-:103FC000BB0090912C1880912B1829C0809160180B
-:103FD0008093BB0085EC8093BC0062CF90918218E7
-:103FE00080918118981758F5E091821881E08E0F22
-:103FF00080938218F0E0EF59F74E8081E9CFE0918D
-:10400000821881E08E0F809382188091BB00F0E0CF
-:10401000EF59F74E808390918218809181189817FC
-:10402000C8F285E8D8CFE091821881E08E0F8093A6
-:1040300082188091BB00F0E0EF59F74E80838091A9
-:10404000841881115CCF81E080935F1884EA8093AB
-:10405000BC001092851824CF85EC8093BC00109290
-:10406000851880914D18803230F4E0914D18F0E0C1
-:10407000E35DF74E108260914D1870E0E0915718A3
-:10408000F09158188DE298E1199510924D1808CFCB
-:104090001092831834CF1F920F920FB60F921124F3
-:1040A0000BB60F922F933F934F935F936F937F9332
-:1040B0008F939F93AF93BF93EF93FF93E091E81794
-:1040C000F091E917309749F0A685B7858585968DDB
-:1040D00091FF16C09C918923B1F4FF91EF91BF919C
-:1040E000AF919F918F917F916F915F914F913F9190
-:1040F0002F910F900BBE0F900FBE0F901F90189531
-:104100009C91892351F7A389B4899C9185898095D5
-:1041100089238C93868997890197F1F7608D718D3A
-:10412000A685B785558538E020E0CB010197F1F7EA
-:10413000822F90E095958795282F4C91452309F083
-:104140002068315091F7868D81FD20958091E6178A
-:1041500090E001968F7399273091E717381799F0FF
-:10416000A091E617B0E0AA55B84E2C938093E617BD
-:10417000828D938D0197F1F7A389B4898C919589EC
-:10418000892B8C93AACF868D8160868FF1CFDC013D
-:1041900015966C931597262F30E050E040E0ED9196
-:1041A000FC910190F081E02D61E11994DC01ED9129
-:1041B000FC910088F189E02D19958F5F0895615079
-:1041C000DC01ED91FC910684F785E02D1994DC016A
-:1041D000ED91FC910484F585E02D199583500895A7
-:1041E0006D5FDC01ED91FC910284F385E02D199463
-:1041F000DC01ED91FC910084F185E02D19956115AC
-:1042000071058105910539F06F3F7F4F8F4F9F4FAB
-:1042100021F080E0089582E0089581E00895CF9232
-:10422000DF92EF92FF921F93CF93DF93EC0190E028
-:1042300080E00F94B63925ED34E045E352E40F9465
-:10424000173A20E030E04AE754E40F94023F6B0154
-:104250007C012AE037ED43EA5CE369857A858B854A
-:104260009C850F94083EA70196010F94173A26E605
-:1042700036E646EA5EE30F94023F20E030E040E895
-:104280005FE30F94073E0F947B3F162FE881F9817F
-:104290000480F581E02D603108F060C061E0CE015E
-:1042A00019952AE037ED43EA5CE369857A858B85C9
-:1042B0009C850F94083EA70196010F94173A2CEEA7
-:1042C00031E548E35EE30F94023F20E030E040E850
-:1042D0005FE30F94073E0F947B3F162F103208F0D8
-:1042E0001FE1912F9F718B81807E892B8B832A8187
-:1042F000382F8C81482F4F7050E0E881F981019070
-:10430000F081E02D60E1CE011995612F70E090E021
-:1043100080E00F94B8392D853E854F8558890F94DC
-:10432000173A0F947B3F862F8F716A81607E682BCE
-:104330006A83262F3B818C81482F4F7050E0E881A3
-:10434000F9810190F081E02D60E1CE01DF91CF9104
-:104350001F91FF90EF90DF90CF90199460E0CE0115
-:104360001995BCCFDC0196964D935D936D937C932C
-:104370009997ED91FC910190F081E02D9A01AB01AC
-:1043800060E71994DC01ED91FC910280F381E02D4E
-:1043900060E0199562FB882780F908959A01AB01C6
-:1043A000DC0158962C935897632F63705996EC91C3
-:1043B0005997EC7FE62B5996EC935997ED91FC9128
-:1043C0000190F081E02D60E019940F94BB09862FD5
-:1043D0008F700895262F2F70DC0192966C91929722
-:1043E000607F622B92966C93929792962D913D915D
-:1043F0004D915C919597ED91FC910190F081E02DAC
-:104400006CE61994DC0192964D935D936D937C93C9
-:104410009597ED91FC910190F081E02D9A01AB010F
-:104420006CE61994CF93DF93DC01EB01298112969E
-:104430009C911297291718F113968C911397821754
-:10444000F0F0E88115968C911597E817C0F43C813F
-:1044500016964D915C91291B283018F0480F511D7C
-:10446000277081E090E001C0880F2A95EAF7E40FF9
-:10447000F52FF11D2081332329F0822B8083DF91DA
-:10448000CF91089580958223F9CFDB01ED91FC91C6
-:1044900019940F931F93CF93DF931F92CDB7DEB77D
-:1044A00000914B1610914C16E0917A16F0917B1604
-:1044B00082E0199530E020E04AE0B80189E496E115
-:1044C0000F944522182FE0917A16F0917B1683E025
-:1044D0001995E0917A16F0917B1680E019951123D9
-:1044E000B9F160914B1670914C169E012F5F3F4FB2
-:1044F00046E489E496E10F94452289818093491628
-:1045000060914B1670914C169E012F5F3F4F47E410
-:1045100089E496E10F944522898180934A1660913F
-:104520004B1670914C1630E020E048E489E496E1A7
-:104530000F9445228093541660914B1670914C163F
-:104540002CE736E147E189E496E10F94452211E03A
-:10455000812F0F90DF91CF911F910F910895DF92DE
-:10456000EF92FF920F931F93CF93DF93182F062F95
-:10457000C42FD42FF62EF40EEE24E394DD24DA9427
-:104580008F2D8D1BD83090F58C2F887F800F9C2F1E
-:1045900096959695969528EF929FC00D1124CC2361
-:1045A000D1F197E0C92760914B1670914C1610938A
-:1045B00065168093661681E080936816CF5FC7709A
-:1045C0008FEF90E001C0880FCA95EAF780936716D5
-:1045D00025E636E14BE389E496E1DF91CF911F9127
-:1045E0000F91FF90EF90DF900D94452260914B1654
-:1045F00070914C161093651680936616E0926816BB
-:10460000D092671625E636E14BE389E496E10F94F4
-:104610004522D850B5CFDF91CF911F910F91FF90D8
-:10462000EF90DF900895AF92BF92CF92DF92EF921A
-:10463000FF920F931F93CF93DF93EC01E62EF42E9E
-:10464000122F022FD62ED20ECC24CA945C012CE15C
-:10465000A20EB11C8D2D801B083070F5812F887F34
-:104660008E0D912F96959695969528EF929F100D09
-:104670001124112371F197E019276A817B818C8FB6
-:10468000FD8E1F8E1F5F17708FEF90E001C0880FA7
-:104690001A95EAF78E8F9E01245E3F4F4BE3CE01C1
-:1046A000DF91CF911F910F91FF90EF90DF90CF900E
-:1046B000BF90AF900D9445226A817B818C8FFD8ED7
-:1046C0001F8ECE8E95014BE3CE010F9445220850EC
-:1046D000C1CFDF91CF911F910F91FF90EF90DF90AD
-:1046E000CF90BF90AF9008950F93CF93C82F01E064
-:1046F00020E8482F60E089E496E10F94A00A88231F
-:1047000049F020E84C2F60E089E496E1CF910F91C9
-:104710000D941323CF910F910895FF920F931F9340
-:10472000CF93DF93D82F162FF42EC22F022F242FD2
-:10473000462F682F89E496E10F94A00A882309F197
-:104740002F2D412F6D2F89E496E10F9413234C2FC9
-:10475000612F8D2F0F94AF228FEF8F0D4C2F612F74
-:104760008D0F0F94AF224FEF4C0F410F2F2D6D2F58
-:1047700089E496E1DF91CF911F910F91FF900D9405
-:104780001323DF91CF911F910F91FF900895DF9236
-:10479000EF92FF920F931F93CF93DF937C01162F1D
-:1047A000C42FD22ED02F0F94A00A882351F0DC0FF3
-:1047B0002D2D4C2F612FC7010F941323CF5FDC13D6
-:1047C000F7CFDF91CF911F910F91FF90EF90DF9086
-:1047D0000895EF92FF920F931F93CF93DF93C82F0B
-:1047E0007B01142FCB010E94B43E26E0C29FE00162
-:1047F0001124112389F091E090936916829F900112
-:1048000011242E5F0CE042E36C2F615089E496E1A5
-:104810000F94C72310926916A7016CE38C2F0E9496
-:10482000C464112319F081E080936916DF91CF9160
-:104830001F910F91FF90EF9008953F924F925F92DA
-:104840006F927F928F929F92AF92BF92CF92DF92A0
-:10485000EF92FF920F931F93CF93DF931F921F92BC
-:10486000CDB7DEB75C01680181E0809340094090DC
-:104870003B0950903C0960903D0970903E094114FD
-:1048800051046104710479F091E0141415040CF0E2
-:1048900090E090933A0910923B0910923C091092D3
-:1048A0003D0910923E0910913A0930903F0910924B
-:1048B0003F09311005C080917502882309F470C04A
-:1048C00049012A013B01C9010E94B43E082F80E042
-:1048D000E114F10419F0C7010E94B43E1A82198252
-:1048E000C114D104B1F4402F50E0282F30E0CA01A8
-:1048F000820F931F46976CF485E190E0841B950B23
-:10490000821B930B97FD0196959587958A8381E08D
-:10491000898301E021EA34E2A401BE016F5F7F4F89
-:10492000CE0102960E94D840C114D10491F08A8130
-:10493000882321F01A8289818F5F898300E024EA2D
-:1049400034E2A601BE016F5F7F4FCE0102960E9446
-:10495000D840E114F10459F000E021EA34E2A70163
-:10496000BE016F5F7F4FCE0102960E94D84041E0AA
-:104970004127B30181E00F94E923C5010E94B43EB1
-:10498000412FB50194E1981B892F0F94E92333201F
-:1049900039F01123C9F041145104B1F0F201199515
-:1049A0000F900F90DF91CF911F910F91FF90EF909B
-:1049B000DF90CF90BF90AF909F908F907F906F903F
-:1049C0005F904F903F9008950E946C2EE9CFEF9238
-:1049D000FF921F93CF93DF93EC01EE85FF85309715
-:1049E00009F01995EA80FB80E9A9FAA982E01995F6
-:1049F000E9A9FAA981E0199530E020E045E1B70185
-:104A0000CE010F944522182F882341F09E012D5C82
-:104A10003F4F47E1B701CE010F944522E9A9FAA91A
-:104A200080E01995812FDF91CF911F91FF90EF903A
-:104A30000895DC0114968D919C9115978617970720
-:104A400009F43CC015967C936E931497611571051B
-:104A500079F157968C915797FB01811130C03596AB
-:104A6000E4915896EC935897645F7F4FFB016491F3
-:104A700059966C93599758968C915897082E000C1C
-:104A8000990B59962C915997821B910927FD939563
-:104A90005A962C915A97203441F0829FC0011124DC
-:104AA00026E0969587952A95E1F75B968C935B9720
-:104AB00082E192E056969C938E93559708958130AB
-:104AC00041F43F96E4915896EC935897605F7F4F7E
-:104AD000CDCF3D96E4915896EC935897625F7F4F07
-:104AE000C5CF5F926F927F928F929F92AF92BF924B
-:104AF000CF92DF92EF92FF920F931F93CF93DF93AA
-:104B0000EC01562E142F622F0F94FD096C0180E0EA
-:104B1000C114D104B1F08C819D810F94F309B82E9A
-:104B2000FB88EC888989580E1E198A89181B0E2D5E
-:104B30002F2D412F652DCE010F94A00A811111C098
-:104B40008889DF91CF911F910F91FF90EF90DF90B7
-:104B5000CF90BF90AF909F908F907F906F905F901D
-:104B60000895CB0CD11C87E0F80EF694F694F694D9
-:104B7000E10E4E01ECE18E0E911C6F2C712C1E1576
-:104B8000F9F2052D560111C0F50184916A817B81EE
-:104B90000C8F1D8F1F8E8E8F94014BE3CE010F94CF
-:104BA0004522FFEFAF1ABF0A085F8A2D8C198F15B7
-:104BB00058F3C60CD71C1F5FE2CFFF920F931F93D1
-:104BC000CF93DF93D82FF62E8A01E0915E16F091F5
-:104BD0005F1689E496E11995F80EC0E0F80124917A
-:104BE000222359F04F2D6D2F89E496E10F94712502
-:104BF000D80FC80F0F5F1F4FF1CF8C2FDF91CF91D0
-:104C00001F910F91FF900895DB011496ED91FC9197
-:104C100030E020E065E01994DB011496ED91FC9101
-:104C200030E020E062E01994DB011496ED91FC91F4
-:104C300030E020E063E01994CF92DF92EF92FF9290
-:104C40000F931F93CF93DF938C017B016A0180E068
-:104C5000F601C491811110C081E0CF3F49F04C2F83
-:104C6000B701C8010F940426882309F444C080E0EA
-:104C7000BFEFCB1ADB0AECCF4FEFCF3F89F3CE3F2C
-:104C8000D9F1C03FA0F7C03E38F04C2F4F70B701AC
-:104C9000C8010F940C26EBCFC03D38F04C2F4F705D
-:104CA000B701C8010F941426E2CFC03CF8F0D70139
-:104CB0001496ED91FC9130E020E040E064E0C80102
-:104CC0001995C295C07FCE5FD0E0CE010F94E60962
-:104CD000D7011496ED91FC9130E020E041E064E0D2
-:104CE000C8011995CE010F94E609C1CFC7FDBFCF0A
-:104CF0008C2F90E0F8CF80E0DF91CF911F910F9142
-:104D0000FF90EF90DF90CF9008954F925F926F9257
-:104D10007F928F929F92AF92BF92CF92DF92EF924B
-:104D2000FF920F931F93CF93DF93EC01562E142F16
-:104D3000622E402E220F220F220F0F94A00A8823EA
-:104D400021F1410E4E018CE1880E911CA62CB12C54
-:104D50006701762C052D12C0F60184916A817B8152
-:104D60000C8F1D8F1F8E8E8F94014BE3CE010F94FD
-:104D70004522FFEFCF1ADF0A7A94085F7110ECCF5B
-:104D8000EA0CFB1C1F5F4112E3CFDF91CF911F9113
-:104D90000F91FF90EF90DF90CF90BF90AF909F90DA
-:104DA0008F907F906F905F904F900895CF93DF9397
-:104DB000EC018991882319F00E949FCEFACFDF91F0
-:104DC000CF9108950E94E0DD8AE00C949FCE1F935E
-:104DD000CF93DF93182FEB010E940FD886EC97E357
-:104DE0000E94ACCE82EB97E3113011F488EB97E38D
-:104DF0000E94ACCEBE018EEB97E3DF91CF911F9165
-:104E00000D94E2268BE1E4EAF4E1A9E8B4E1019033
-:104E10000D928A95E1F78091A21780648093A21782
-:104E2000109297170895EF92FF920F931F93CF93CD
-:104E3000DF93CDB7DEB7A7970FB6F894DEBF0FBEEE
-:104E4000CDBF8091A21784FF0E948F7E8091A21710
-:104E500084FF58C08091981790E08F969F938F930E
-:104E60008BEC97E39F938F938E01045E1F4F1F93EC
-:104E70000F930F9448398091A2170F900F900F90C5
-:104E80000F900F900F9084FBFF24F0F884FF3AC03E
-:104E90001FA21EA2A801BE016A5D7F4F80E00F9491
-:104EA000BD0C009779F119821C826EA17FA121E0CF
-:104EB000AC01CE0101960E946A80E82E882321F081
-:104EC000CE0101960E945E7ECE0101960E94648012
-:104ED000EE20C1F00F940227C8010E949B798091B7
-:104EE00098178F5F809398178F2DA7960FB6F89419
-:104EF000DEBF0FBECDBFDF91CF911F910F91FF900D
-:104F0000EF90089510929817F12CEECF0F931F9306
-:104F1000CF93DF9300D01F92CDB7DEB79C010AE894
-:104F200016E090E1E6E7F2E0D80101900D929A9543
-:104F3000E1F7F9012081318142815381F8016085D7
-:104F40007185828593850F94083EF801608771878B
-:104F50008287938780E090E0A0EAB0E489839A8317
-:104F6000AB83BC83CE0101960E94E3B40F900F90F7
-:104F70000F900F90DF91CF911F910F910895109294
-:104F8000F8181092F71888EE93E0A0E0B0E0809354
-:104F9000F9189093FA18A093FB18B093FC1889E9BC
-:104FA00093E09093F6188093F5181092A414109241
-:104FB000A7141092891410928C14E9E8F6E187E99D
-:104FC00097E1108213827B968E179F07D1F78BEAA9
-:104FD00093E090930219809301191092031989E1CB
-:104FE000809305191092081910928214109250148F
-:104FF0001092531448E250E06FE370E08FEA95E1BD
-:105000000F9457291092E2151092E3158091E41540
-:10501000807F8093E4151092E5151092E7151092A9
-:10502000E6151092E9151092E8151092EA1589EC30
-:1050300093E09093B0158093AF154BE350E060E49C
-:1050400070E083E795E10F9457291092A61510920E
-:10505000A7158091A815807F8093A8151092A91597
-:105060001092AB151092AA151092AD151092AC15B6
-:105070001092AE1589EC93E090937415809373159C
-:105080004AE250E061E470E087E395E10F9457292C
-:1050900010926A1510926B1580916C15807F809329
-:1050A0006C1510926D1510926F1510926E1510926E
-:1050B0007115109270151092721589EC93E090930F
-:1050C0003815809337154CE250E062E470E08BEFC6
-:1050D00094E10F94572910922E1510922F1580915C
-:1050E0003015807F80933015109231151092331552
-:1050F0001092321510923515109234151092361503
-:1051000089EC93E09093FC148093FB1444E150E00D
-:105110006CE070E08FEB94E10F9457291092F21439
-:105120001092F3148091F414807F8093F414109201
-:10513000F5141092F7141092F6141092F9141092BC
-:10514000F8141092FA1489EC93E09093C0148093B1
-:10515000BF141092EB151092EC151092ED151092F1
-:10516000EE151092EF151092F4151092F51510929D
-:10517000F6151092F7151092F8151092FD15109271
-:10518000FE151092FF151092001610920116109243
-:105190002B1610922C1610922D1610922E1610927D
-:1051A0002716109228161092291610922A1610927D
-:1051B000231610922416109225161092261610927D
-:1051C0001F1610922016109221161092221610927D
-:1051D0000B1610920C1610920D1610920E161092BD
-:1051E0000A161092091610920816109207161092BD
-:1051F000061684E0809332161092301610922F1605
-:10520000109231168DEC94E69093441680934316D9
-:10521000109248161092471687EE93E09093461628
-:10522000809345168FEF8093861680938716809320
-:10523000881680938316809384168093851681E068
-:1052400099E19093A4178093A3178091A217847E6D
-:105250008B7F8093A21710929E1710929F17109227
-:10526000A0171092A11710929A1710929B171092E4
-:105270009C1710929D1710929917109298171092E0
-:105280009717E9E8F6E18EE091E0DF019C011D92BD
-:1052900021503040E1F780910A018E7F80930A010E
-:1052A00080910B0180958170809309010895CF92C0
-:1052B000DF92EF92FF920F931F93CF93DF93EC0156
-:1052C0008B016A011A821B828C81807F8C831D82F4
-:1052D0001E821F828885807F88878EEA97E4A1EEF0
-:1052E000BDE389879A87AB87BC8740E050E060E0E8
-:1052F0007FE34D875E876F87788B29EC33E03983B6
-:1053000028831A8A198A8B8B9C8BAD8BBE8B1F8A44
-:10531000188E898D8C7F898F1A8E8B8D807F8B8FD5
-:105320001D8E1C8E1E8E1F8E18A219A21AA21BA2E1
-:105330001CA21DA21EA21FA218A619A61BA61AA671
-:105340001DA61CA690E080E00C151D0511F4902F01
-:10535000812F9EA78FA719AA18AA1AAA8FE190E0F9
-:105360000F9422347C01DC0113961C921E9212973A
-:1053700088EE93E0A0E0B0E0F70184839583A683F4
-:10538000B78387E893E091838083178A168A118E0A
-:10539000108E138E128E158E148E668D6E7F6D7F1D
-:1053A000668F6695617081E068278C2D0F945D187B
-:1053B00061E08C2D0F942C1BF601E857F44CE4911E
-:1053C000D7015096EC93F601EE5BF44CE491F0E0DB
-:1053D000EE0FFF1FE85DF44C85919491F701928BDD
-:1053E000818B60E0802F0F942C1BD7015E968C91EF
-:1053F00081FD04C061E0802F0F945D18F7010487E0
-:10540000F801E857F44CE491D7011D96EC93F801AC
-:10541000EE5BF44CE491F0E0EE0FFF1FE25FF44C22
-:1054200085919491F70197878687FDA6ECA6888DD4
-:1054300081608D7F8B7F888F898D8160898F8C8142
-:10544000807F81608C8384E18D8383E590E0A0E0A0
-:10545000B0E18AA39BA3ACA3BDA384E290E0ADE03E
-:10546000B1EC8EA39FA3A8A7B9A7DF91CF911F91FD
-:105470000F91FF90EF90DF90CF900895CF93DF933F
-:10548000CDB7DEB7CF54D1090FB6F894DEBF0FBE4B
-:10549000CDBF789484B5826084BD84B5816084BDBD
-:1054A00085B5826085BD85B5816085BD80916E00C2
-:1054B000816080936E0010928100809181008260F3
-:1054C0008093810080918100816080938100809130
-:1054D00080008160809380008091B100846080931F
-:1054E000B1008091B00081608093B0008091910004
-:1054F00082608093910080919100816080939100FF
-:10550000809190008160809390008091A1008260E2
-:105510008093A1008091A10081608093A10080917F
-:10552000A00081608093A00080912101826080931F
-:1055300021018091210181608093210180912001CE
-:1055400081608093200180917A00846080937A004A
-:1055500080917A00826080937A0080917A008160E5
-:1055600080937A0080917A00806880937A0010920C
-:10557000C10040900F194BA614BE1092C00080913C
-:10558000C00082608093C0001092C50087E08093C5
-:10559000C4008091C10080618093C1008091C100EE
-:1055A00088608093C1008091C10080688093C100B1
-:1055B0000F941E1D6B017C0128EEC20E23E0D21E4B
-:1055C000E11CF11C8BE89FE00E949CCD882309F42C
-:1055D0009DC089E99AE30E94ACCE9898A09A8091E8
-:1055E0006F0390917003A0917103B091720389A32E
-:1055F0009AA3ABA3BCA3AE014F5D5F4F59AF48AFB9
-:10560000CE0185969EA38DA3C12CA4E2DA2EA4EF31
-:10561000EA2EF12CA8ADB9AD6D91B9AFA8AFCE010E
-:1056200001960E949ECD8A89811190C18989882323
-:1056300009F48CC14F844FA6242D0FEF10E02230C7
-:1056400011F00FEF1FEF49805A805BAE4AAE6B80BE
-:105650007C807EA66DA68EE0E3E7F3E0DE01539644
-:1056600001900D928A95E1F72FA5223009F057C0DD
-:1056700031E023963FAF239743E024964FAF249722
-:10568000CE01439622969FAF8EAF229791E09CA7C2
-:10569000A1E0A8AB1DAAEFEFF0E0FFABEEAB2DEF62
-:1056A00030E038A72FA32296AEADBFAD22972D9044
-:1056B0003D902296BFAFAEAF2297BFA5B230C1F1E9
-:1056C000E0E22E16310409F413C1F0E82F1631047C
-:1056D00009F40EC1E8EE4E2EE3E05E2E249C90010C
-:1056E000259C300D349C300D112450E040E0C70162
-:1056F000B6010F94C63DC9010197369527950097CD
-:10570000C9F441E050E05AAB49AB1BC00F941E1DD9
-:105710006C197D098E099F0997FDF8CF5ACF5AE081
-:1057200023965FAF23976EE024966FAF2497A8CFA0
-:105730009801C8011AAB09AB8017910710F49AAB16
-:1057400089AB2115310509F485C21CAB0BAB2017C1
-:10575000310710F43CAB2BAB4FA058A429EE4216F6
-:1057600023E0520608F47BC2C20128EE33E0821B1C
-:10577000930B2C01712C612C4CAE5DAE6EAE7FAEE6
-:1057800089A99AA90196829D9001839D300D929DD1
-:10579000300D112450E040E0C701B6010F94C63D22
-:1057A00049015A0129013A0128EE821623E09206A6
-:1057B000A104B10430F478EE472E73E0572E612C2B
-:1057C000712CD501C40139EE831633E09306A10490
-:1057D000B10420F088EE93E0A0E0B0E0A3019201D4
-:1057E000281B390B4A0B5B0B2C962CAF3DAF4EAFF1
-:1057F0005FAF2C97C101880F991F4BA85CA8849DAF
-:105800009001859D300D949D300D112450E040E0B5
-:10581000C701B6010F94C63D60962CAF3DAF4EAFA9
-:105820005FAF6097283E63E036074105510550F4AD
-:1058300088EE93E0A0E0B0E060968CAF9DAFAEAF95
-:10584000BFAF609728962CAF3DAF4EAF5FAF2897A4
-:10585000293E93E039074105510560F058EE452E89
-:1058600053E0552E612C712C28964CAE5DAE6EAE79
-:105870007FAE289760968CAD9DADAEADBFAD609705
-:1058800028964CAC5DAC6EAC7FAC2897841995091A
-:10589000A609B70928968CAF9DAFAEAFBFAF2897CA
-:1058A0004CAC5DAC6EAC7FAC2C968CAD9DADAEAD12
-:1058B000BFAD2C9784159505A605B70508F0D4C192
-:1058C00028964CAC5DAC6EAC7FAC28974816590658
-:1058D0006A067B0608F4C8C198A68FA224965FAC1E
-:1058E000249758AA6CA46DAA89A89AA89FAA8EAAE0
-:1058F0002CA52F5F2CA7283009F0D5CEAAADBBADC3
-:105900008C918C7F98A99370892B8C93EDA5FEA523
-:10591000208148A8842D90E0959587959595879549
-:1059200043E0880F991F4A95E1F7277E822B8083F9
-:105930008081887F5DA8852980832FA5223031F062
-:10594000ED85FE854EA85FA8518240826DA07EA0A5
-:1059500088AC99AC6814790409F05CCE8FEA95E1C3
-:105960000F94681B83E795E10F94681B87E395E12B
-:105970000F94681B8BEF94E10F94681B8FEB94E1FD
-:105980000F94681B9BA490FE04C080E99AE30E94D8
-:10599000ACCEABA4A1FE04C08FE79AE30E94ACCECC
-:1059A000BBA4B2FE04C08DE69AE30E94ACCECBA4A9
-:1059B000C3FE04C08CE59AE30E94ACCEDBA4D5FE06
-:1059C00004C08BE49AE30E94ACCE8BE39AE30E947E
-:1059D000ACCE0E940FD88DE09AE30E94ACCE0E941C
-:1059E0000FD885EF99E30E94ACCE0E940FD880912A
-:1059F000091990910A199E012F5F3F4F5901B90172
-:105A0000009709F44EC1681B790B86EE99E30E945A
-:105A100087DA60ED75E08FEC99E30E9404DB389A39
-:105A200040981092CB081092CC081092CD0810929A
-:105A3000CE0810925C1810925B181092AC1810925D
-:105A4000AB180F94971984E892E090935A188093BA
-:105A5000591884E991E0909358188093571840E0C2
-:105A600060E080E00F94D6190E94594080915D1843
-:105A7000811107C00E940FC5882319F081E080932F
-:105A80005D1885E496E10E94126B2AE4E22E28E379
-:105A9000F22E03E127E047E064E289E496E10F9407
-:105AA000852683E00E94AA3F42E458E36BE28BE242
-:105AB0000E94C46445E358E367E38CE10E94C46438
-:105AC00089E496E10F94E7248111DFCF0F941E1D26
-:105AD0002B013C012091E6083091E7084091E8084D
-:105AE0005091E90860917602709177028091780276
-:105AF000909179020F94083E60937602709377023A
-:105B000080937802909379022091EA083091EB0813
-:105B10004091EC085091ED0860917A0270917B02FF
-:105B200080917C0290917D020F94083E60937A02EE
-:105B300070937B0280937C0290937D022091EE080B
-:105B40003091EF084091F0085091F10860917E0289
-:105B500070917F0280918002909181020F94083EA3
-:105B600060937E0270937F02809380029093810203
-:105B70000E947BB5249A2C988091010180618093CA
-:105B800001018091020180718093000180910101E7
-:105B900080628093010180910201807280930001F4
-:105BA0009D9A8091010180648093010187ED80932B
-:105BB0007A0010927E0010927D0080917D008062BC
-:105BC00080937D0080917D00806880937D0080912E
-:105BD0007D00806480937D0080E887BD80916E00A9
-:105BE000826080936E000DEC19E3F801C590D490AB
-:105BF00035E0C316D1041CF495E0C92ED12CD09207
-:105C00006902C09268020D2C000CEE08FF0860E0EB
-:105C100080916402909165020E9451836FA378A7DE
-:105C200089A79AA7C701B6010F94B8399B01AC01A7
-:105C30006FA178A589A59AA50F94B13987FF34C0C3
-:105C400080916402909165024097909365028093E1
-:105C50006402DDCF81E090E09CAB8BAB7DCD2FA1CA
-:105C600038A588EE93E083CD4CAC5DAC6EAC7FACD8
-:105C700028968CAC9DACAEACBFAC28978414950430
-:105C8000A604B70408F034CE38A72FA323969FAC00
-:105C9000239798AAACA4ADAA4BA85CA85FAA4EAA69
-:105CA00027CE6F507941B1CE81ED882E88E3982EB2
-:105CB000F401C590D49041E0C41AD10855E0C5164E
-:105CC00051E0D50624F0B4E0CB2EDD24D394D0925D
-:105CD0006B02C0926A020D2C000CEE08FF0860E017
-:105CE00080916602909167020E9451836FA378A70A
-:105CF00089A79AA7C701B6010F94B8399B01AC01D7
-:105D00006FA178A589A59AA50F946840181654F438
-:105D1000809166029091670240969093670280930B
-:105D20006602DDCFF801C590D49065E0C616D104B7
-:105D30001CF4A5E0CA2ED12CD0927102C092700240
-:105D40000D2C000CEE08FF0861E080916C02909130
-:105D50006D020E9451836FA378A789A79AA7C701F4
-:105D6000B6010F94B8399B01AC016FA178A589A544
-:105D70009AA50F94B13987FF0AC080916C02909167
-:105D80006D02409790936D0280936C02DDCFF40119
-:105D9000C590D49081E0C81AD10895E0C91691E069
-:105DA000D90624F0F4E0CF2EDD24D394D0927302F0
-:105DB000C09272020D2C000CEE08FF0861E0809189
-:105DC0006E0290916F020E9451836FA378A789A7FA
-:105DD0009AA7C701B6010F94B8399B01AC016FA116
-:105DE00078A589A59AA50F946840181654F4809157
-:105DF0006E0290916F02409690936F0280936E02B4
-:105E0000DDCF80916202909163020E94E98520E0DB
-:105E100030E040EA50E40F94B13987FF0AC0809126
-:105E200062029091630240979093630280936202B2
-:105E3000E8CF8091CF089091D0080E94E98520E0BA
-:105E400030E04CED52E40F946840181654F4809101
-:105E5000CF089091D00840969093D0088093CF08B7
-:105E6000E8CF0E948BBB19A282E390E09C8B8B8BC6
-:105E70001A82198201E0950141E050E0BE016F5D98
-:105E80007F4FCE0143960E9461CE89A1863109F4ED
-:105E90003EC10E94DE8E81E08093D1088091040192
-:105EA0008D7F80930401809105018095827080939D
-:105EB000030153985B9A6C98749A1092E3081092BD
-:105EC000E2080E9471B9819A879A80910A018260E2
-:105ED00080930A010E9A3B9A579A5F9A829A8A9AFD
-:105EE000809107018160809307018091080180956E
-:105EF0008170809306010A9A129A3F9A479A809A73
-:105F000088985F9A8091E4088E7F8093E408869A4F
-:105F10008E988A9A8091E4088D7F8093E40880911E
-:105F20000A01886080930A0180910B018870809338
-:105F3000090180910801809581708093060180910C
-:105F4000E4088B7F8093E40880E090E0A6E1B3E46E
-:105F500080937E0290937F02A0938002B09381028F
-:105F60000E947BB50C9A1498129A399A4198479AD4
-:105F7000809180008C7F8093800080918100877E5B
-:105F8000886080938100809180008F73809380006F
-:105F900080918100887F82608093810080E090E41E
-:105FA000909389008093880010928500109284005D
-:105FB0000E944995789487E08093E5080E945A886A
-:105FC00088E198E20FB6F894A895809360000FBE20
-:105FD000909360000F941E1DDC01CB01841995097C
-:105FE000A609B709803AEFE09E07A105B10570F454
-:105FF00000EA1FE020E030E028013901481A590A80
-:106000006A0A7B0AC301B2010E9421CD21E041E06E
-:1060100061E081E00E94FEDB83E080933509212C62
-:10602000E2E03E2E71E6972E6AE0862E80E00E9426
-:10603000EADD8091A21787FF21C010929817877F11
-:106040008B7F8093A2170E94677E10927710109228
-:106050007610109275100E9439B880E00E9416BB2D
-:106060000E94B4850E9497CD1092740250EA652E6A
-:106070005AE3752E7092F3086092F2088091350908
-:10608000CDB6DEB610E000E0843009F452C0ADB603
-:10609000BEB66091F2087091F30810E000E061155F
-:1060A000710509F08DC08091F408882309F42BC193
-:1060B000E4EFF8E08F01045F1840F190FF2019F041
-:1060C0003AE0F312F7CF0115110559F0F801EC5041
-:1060D000F74F108284EF98E00E9457C880E00E943A
-:1060E000D1EB81E0F11001C080E0080F802FE82F94
-:1060F000F0E0EC50F74F9081E82FE01BF0E0EC501F
-:10610000F74F9083992309F498C08F5FF0CF83E312
-:1061100090E09C8B8B8B1A82198201E0950140E103
-:1061200050E062ED78E0CE0143960E9461CEB3CE9E
-:106130008C01F801EC55F54CE491C8010196EE2371
-:1061400011F0EA30A9F7ADB6BEB6A81AB90A0FB673
-:10615000F894BEBE0FBEADBE2DB73EB72F5F3F4F0A
-:106160007901A80164EA7AE3C9010F94DF38F701E5
-:10617000E00FF11F1082D7018C918B3331F40FB6F1
-:10618000F894DEBE0FBECDBE82CF809175108430F4
-:10619000B0F780917710899DC0011124B70188580C
-:1061A0009F4E0F94ED4181E00F941C0F0FB6F894B1
-:1061B000DEBE0FBECDBEB3E0B093350968CF860119
-:1061C000FB01E00FF11F74906801EFEFCE1ADE0AB9
-:1061D000772019F0FAE07F12F2CF4DB65EB64C1878
-:1061E0005D080FB6F8945EBE0FBE4DBE2DB73EB72C
-:1061F0002F5F3F4F7901A801C9010F94DF38F701E4
-:10620000E00FF11F1082772009F47AC08091F20824
-:106210009091F308C80ED91ED092F308C092F208EC
-:10622000012B31F0C7010E9457C880E00E94D1EBDA
-:106230000FB6F894BEBE0FBEADBE909134098091EA
-:106240005E18981709F4F2CE8091340980935E1895
-:1062500080913409882309F4E7CE0E940FD88FEF8C
-:106260009AE30E94ACCE8091340910E280FF0AC00C
-:1062700080E00E94AFB2AB01BC018BEF9AE30E94B9
-:10628000A4CF18E58091340900E281FF0AC081E0C3
-:106290000E94AFB2AB01BC0187EF9AE30E94A4CF8A
-:1062A00009E58091340982FF2CC282E00E94AFB2DE
-:1062B000AB01BC0183EF9AE30E94A4CF9AE5F92ECB
-:1062C0008AE00E949FCE1F9280E28F931F92FF92DE
-:1062D0001F920F931F921F938BED9AE39F938F93BF
-:1062E00084EE9AE39F938F931F920E94FA3AEDB740
-:1062F000FEB73D960FB6F894FEBF0FBEEDBF92CE2F
-:10630000D12CC12C89CF80917510882309F495CFA9
-:106310008091A21780FFEFC100917610099D800146
-:10632000112408581F4E67ED7AE3C8010F942E39E7
-:10633000009739F0DC0113968C9180538A3008F075
-:10634000C5C1F80101900020E9F731977F01E01AFB
-:10635000F10A109250146EE470E0C8010F94E2410B
-:106360006C01009709F085C0B1E0EB1AF108F80163
-:10637000EE0DFF1D4DE0442E418282821382F80112
-:1063800001900020E9F731976F01C01AD10A80917E
-:106390005314813009F069C08091511481FF65C0A8
-:1063A00082FF1CC04091611450916214609163148B
-:1063B000709164148091581490915914A0915A14BA
-:1063C000B0915B1484179507A607B70739F080E5ED
-:1063D00094E10E94827C882309F447C040915814BC
-:1063E0005091591460915A1470915B14C114D104E6
-:1063F00009F427C18091691490916A14DC01149604
-:106400007C902FEF270D2A013B0139E076946794A9
-:10641000579447943A95D1F742227A01B1E0FB2292
-:10642000411057C0E114F10409F053C040915414D5
-:10643000509155146091561470915714411551059F
-:106440006105710529F58091651490916614A091FC
-:106450006714B09168140097A105B10591F580E526
-:1064600094E10E94647F811134C081E080935014D4
-:106470000DC160E270E00F94E2418C010F5F1F4F8D
-:106480006AE270E0C6010F94E241FC01319772CFDD
-:106490009E012F5F3F4F0E94457B882331F3898106
-:1064A0009A81AB81BC81E0916914F0916A142789CB
-:1064B000203109F085C0883FEFEF9E07A105B105A7
-:1064C00070F68093541490935514A0935614B0937F
-:1064D00057145101AE18BF08CA14DB0408F4560162
-:1064E000E0916914F0916A148091541490915514BC
-:1064F000A0915614B09157140297A109B1092585AE
-:1065000004C0880F991FAA1FBB1F2A95D2F7468582
-:10651000578560897189840F951FA61FB71F9C013D
-:10652000AD01240D311D411D511D29013A01A11458
-:1065300032E0B30609F04DC08091451490914614A5
-:10654000A0914714B0914814481659066A067B0674
-:1065500069F410924D148FEF9FEFDC018093451486
-:1065600090934614A0934714B093481480914E140E
-:1065700090914F14DC01ED91FC910288F389E02D9C
-:106580009801B301A2011995882309F46ECF809177
-:10659000581490915914A0915A14B0915B148A0D1B
-:1065A0009B1DA11DB11D8093581490935914A09365
-:1065B0005A14B0935B140A0D1B1DCA18DB080ECFCA
-:1065C000883FFFEF9F07AF07FFE0BF0708F479CFD1
-:1065D00046CFE114F10469F54091581450915914D3
-:1065E00060915A1470915B148091611490916214BF
-:1065F000A0916314B0916414481759076A077B0788
-:10660000C0F00E94287A882309F42FCF81E080937C
-:106610004D14409245145092461460924714709263
-:106620004814A501B801C7018B5B9D4E0F94C6416C
-:10663000AECF41E0C301B2010E94717A8111F1CF66
-:1066400014CF8091611490916214A0916314B09161
-:10665000641484179507A607B70768F4809151144E
-:1066600040936114509362146093631470936414A4
-:106670008068809351148091511483FF07C080E596
-:1066800094E10E94297E882309F4EFCE8091501472
-:10669000882331F00E940BD88DEA9AE30E94ACCE99
-:1066A0008091A21781FD27C0E09176109E9EF00197
-:1066B0001124E852FF4E8081811110C08AEA9AE3CA
-:1066C0000E94ACCE8AE00E949FCE08C00F945F1259
-:1066D00084EC9AE30E94ACCE0E9491CF8091761018
-:1066E0008F5F843058F480937610809175108150BC
-:1066F00080937510A2CD0F948506F0CF109276107E
-:10670000F4CF80E2F82EDCCDCF93DF93EC012A8129
-:106710003B818C81482F4F7050E0E881F9810190D6
-:10672000F081E02D60E1CE0119956D81CE010F94CD
-:10673000C7202E813F818885482F4F7050E0E88127
-:10674000F9810190F081E02D63E1CE011995488D2A
-:10675000898D582F537070E060E0CE010F94CE21E8
-:106760002A8D8B8D382F3F7022273F702A8F932FD1
-:106770009F70807F892B8B8F50E040E0E881F9810A
-:106780000190F081E02D63E0CE0119952E8D3F8DB3
-:1067900048A159A1E881F9810190F081E02D62E2E0
-:1067A000CE0119954AA15BA16CA17DA1CE010F94E8
-:1067B00002224EA15FA168A579A5CE010F94B22156
-:1067C0002BA93CA98DA9482F4F7050E0E881F98191
-:1067D0000190F081E02D64E1CE0119952EA930E001
-:1067E00050E040E0E881F9810190F081E02D60E423
-:1067F000CE0119952FA938AD50E040E0E881F9812C
-:106800000190F081E02D62E4CE01DF91CF911994E7
-:10681000CF93DF9380E594E10E946480C7E9D7E1DC
-:106820006B97CE010E94648086E1C938D807C1F712
-:1068300089E894E10E94648084EA94E1DF91CF9139
-:106840000C9464800F931F93CF93DF938230910554
-:1068500010F482E090E0E0910B19F0910C1930E017
-:1068600020E0B0E0A0E0309799F42115310509F45B
-:106870004AC0281B390B24303105D8F58A819B8109
-:106880006115710589F1FB0193838283FE0111C0BB
-:10689000408151810281138148175907E0F0481760
-:1068A000590799F4109761F012960C93129713966A
-:1068B0001C933296CF01DF91CF911F910F910895D4
-:1068C00000930B1910930C19F4CF2115310551F0D9
-:1068D0004217530738F0A901DB019A01BD01DF011E
-:1068E000F801C1CFEF01F9CF90930C1980930B19E8
-:1068F000CDCFFE01E20FF31F819391932250310916
-:1069000039832883D7CF2091091930910A19232B75
-:1069100041F4209188023091890230930A19209322
-:10692000091920918602309187022115310541F421
-:106930002DB73EB740918A0250918B02241B350B34
-:10694000E0910919F0910A19E217F307A0F42E1B40
-:106950003F0B2817390778F0AC014E5F5F4F2417C3
-:10696000350748F04E0F5F1F50930A1940930919DD
-:10697000819391939FCFF0E0E0E09CCFCF93DF93A2
-:106980000097E9F0FC01329713821282A0910B1953
-:10699000B0910C19ED0130E020E01097A1F42081B6
-:1069A0003181820F931F2091091930910A192817FC
-:1069B000390709F061C0F0930A19E0930919DF91D2
-:1069C000CF910895EA01CE17DF07E8F54A815B8190
-:1069D0009E0141155105B1F7E901FB83EA83499115
-:1069E0005991C40FD51FEC17FD0761F48081918187
-:1069F0000296840F951FE901998388838281938190
-:106A00009B838A83F0E0E0E012968D919C9113972E
-:106A10000097B9F52D913C911197CD010296820F07
-:106A2000931F2091091930910A192817390739F64F
-:106A3000309751F510920C1910920B19B0930A1956
-:106A4000A0930919BCCFD383C28340815181840FA5
-:106A5000951FC817D90761F44E5F5F4F88819981F0
-:106A6000480F591F518340838A819B81938382837E
-:106A70002115310509F0B0CFF0930C19E0930B19F3
-:106A80009ECFFD01DC01C0CF13821282D7CF8F923F
-:106A90009F92AF92BF92CF92DF92EF92FF920F93AD
-:106AA0001F93CF93DF935C017B016115710519F092
-:106AB000DB018D939C9385010F5F1F4FF501D08102
-:106AC0008D2F90E00F94D6386C01892BB9F5DD320B
-:106AD000B9F50F5F1F4FD5011196DC91C1E0580148
-:106AE000F1E0AF1AB10843E050E064E275E0C5019F
-:106AF0000F940739892B69F5680182E0C80ED11C13
-:106B000045E050E06FE175E0C6010F940739892B2D
-:106B100021F4680197E0C90ED11CE114F10419F0C9
-:106B2000D701CD92DC9260E070E080E89FEFC11168
-:106B3000FFC060E070E080E89FE7FAC05801BBCF7B
-:106B4000DB3229F485010E5F1F4FF501D181C0E0D2
-:106B5000C6CF43E050E06CE175E0C5010F94073902
-:106B6000892BE9F0F80110E000E020E030E0A90115
-:106B70005F01B0ED8B2E8D0E89E08815C8F19C2E3B
-:106B8000689491F88C2F8870C2FF16C0811102C0E2
-:106B90000F5F1F4F3196D501DC91C92DE9CFE1146C
-:106BA000F10429F00E5F1F4FF7011183008360E0AD
-:106BB00070E080EC9FE7BCC0882311F00150110900
-:106BC000A5E0B0E00F94E53D9B01AC01220F331F1F
-:106BD000441F551F280D311D411D511D283999E9AC
-:106BE0003907490799E15907A8F2C6609C2ED2CF10
-:106BF000AEEF8A1206C0C3FD3CC09C2E689493F889
-:106C0000C9CFDF7DD534A9F580818D3239F4C061DB
-:106C1000DF011296818162E070E006C0DF018B32F5
-:106C2000C1F3119661E070E080535D01A61AB70AC6
-:106C30008A30F8F4E0E8CE16ECE0DE065CF4B6014B
-:106C4000660F771F660F771FC60ED71ECC0CDD1C94
-:106C5000C80ED11C5D01FFEFAF1ABF0A8C918053A3
-:106C60008A30A8F1C4FF03C0D194C194D1080C0D9F
-:106C70001D1DC1FF09C0E114F10431F081E0A81A23
-:106C8000B108D701AD92BC92CA01B9010F94B639CF
-:106C9000C370C33009F490584B015C0120E030E030
-:106CA000A9010F94B139882309F440C0C3E5D5E0A8
-:106CB00017FF05C0119501951109CBE3D5E06E01D1
-:106CC000B8E1CB1AD10880E2E82EF12C0FC0D50133
-:106CD000B1CFFE0125913591459154910E191F09AF
-:106CE000C501B4010F94173A4B015C01D501C401F1
-:106CF0000E151F0574F72497F594E794CC16DD065E
-:106D0000A9F78A2F880F8B2F881F8F3F49F020E02B
-:106D100030E0A901C501B4010F94B139811106C059
-:106D200082E290E090930E1980930D19C501B40191
-:106D3000DF91CF911F910F91FF90EF90DF90CF9057
-:106D4000BF90AF909F908F9008953F924F925F9227
-:106D50006F927F928F929F92AF92BF92CF92DF926B
-:106D6000EF92FF920F931F93CF93DF935C016B0120
-:106D70007A016115710519F0FB0191838083E1149B
-:106D8000F10451F0C7010297839730F040E030E002
-:106D900020E090E06BC05E01E5012196F5011081D5
-:106DA000812F90E00F94D638892BA9F71D3201F579
-:106DB0002196F501118101E0E114F10409F4E6C026
-:106DC000F0E1EF16F10409F088C0103359F488811E
-:106DD0008F7D883509F07CC0198122960260F0E130
-:106DE000EF2EF12C812C912CA12C88E0B82E92C092
-:106DF0001B3221F4E5012296F501118100E0DCCF80
-:106E0000EAE0EE16F10409F4C7C0F0E1EF16F10470
-:106E100009F073C0E7CF78E0E72EF12C812C912C9C
-:106E2000A12C60E1B62E76C021E0ADC0302F3170CC
-:106E3000C114D10431F0222371F12197F601D183DD
-:106E4000C08327FF2EC060E070E080E090E8311141
-:106E500004C06FEF7FEF8FEF9FE722E230E03093C7
-:106E60000E1920930D19462F372F282F642F732FBB
-:106E7000822FDF91CF911F910F91FF90EF90DF90C4
-:106E8000CF90BF90AF909F908F907F906F905F90CA
-:106E90004F903F90089501FF04C02297F601D183DF
-:106EA000C083332341F090958095709561957F4F15
-:106EB0008F4F9F4FD8CF97FFD6CF82E290E090932D
-:106EC0000E1980930D196FEF7FEF8FEF9FE7CBCFF8
-:106ED00010E3E114F10409F49ECF28E0E216F10476
-:106EE00009F49CCF0CF08CCF812C912CA12CE0E4E8
-:106EF000BE2E82E0E816F10469F060E070E080E008
-:106F000090E897010F2C000C440B550B0F94A43DF7
-:106F100049015A0120E060E070E0CB0127010F2C0D
-:106F2000000C66087708FE0150ED352E310E39E071
-:106F3000331570F43FEB310F49EC342E3A3138F011
-:106F40003FE9310F3A3108F071CF39EA332E310E73
-:106F50003E141F040CF06ACF27FD15C08616970655
-:106F6000A806B90678F0A30192010F94943D630D31
-:106F7000711D811D911D61307105810520E8920709
-:106F800008F452CF2FEF21961081CDCF103309F4A2
-:106F90001ECF2AE0E22EF12C9CEC892E982CA82CF6
-:106FA0009CE0B92EB7CF3F924F925F926F927F9243
-:106FB0008F929F92AF92BF92CF92DF92EF92FF9209
-:106FC0000F931F93CF93DF935C016B017A016115DF
-:106FD000710519F0FB0191838083E114F10449F0FC
-:106FE000C7010297839728F060E070E0CB019BC057
-:106FF0005E01E5012196F5011081812F90E00F944B
-:10700000D638892BA9F71D3209F05CC02196F5010D
-:10701000118101E0E114F10409F4BBC0F0E1EF16C5
-:10702000F10409F09BC0103341F488818F7D8835CD
-:1070300009F08FC0198122960260E0E1EE2EF12C5A
-:1070400088248A94982CA82CFFE0BF2E20E060E0D2
-:1070500070E0CB0127010F2C000C66087708FE01B9
-:1070600050ED352E310E39E0331568F43FEB310F1A
-:1070700049EC342E3A3130F03FE9310F3A31B0F576
-:1070800039EA332E310E3E141F0484F52F3FB9F038
-:1070900086169706A806B90638F1A30192010F9447
-:1070A000943D232D30E050E040E0620F731F841FB9
-:1070B000951F6217730784079507B0F021E02196AA
-:1070C0001081CDCF1B3221F4E5012296F50111810B
-:1070D00000E0A0CF78E0E72EF12C88248A94982C49
-:1070E000A82C6FE1B62EB2CF2FEFE9CFC114D10497
-:1070F00031F0222351F12197F601D183C08300FFA3
-:1071000007C090958095709561957F4F8F4F9F4FE9
-:107110002F3F49F482E290E090930E1980930D196D
-:107120006FEF7FEFCB01DF91CF911F910F91FF9018
-:10713000EF90DF90CF90BF90AF909F908F907F9017
-:107140006F905F904F903F90089501FFD8CF2297A6
-:10715000D3CF10E3E114F10409F4BCCF3AE0E31615
-:10716000F104E9F080E1E816F10409F466CFE8E003
-:10717000EE16F10409F4B1CF6FEF7FEFCB01970169
-:107180000F2C000C440B550B0F94A43D49015A01E0
-:107190005DCF103309F449CF9AE0E92EF12C89E94B
-:1071A000882E982CA82C89E1B82E50CF91110D94DF
-:1071B000863C803219F089508550C8F70895FB014C
-:1071C000DC0102C005900D9241505040D8F708955F
-:1071D000FB01DC010D900020E9F7119705900D925D
-:1071E0000020E1F70895FC010590061621F000202B
-:1071F000D9F7C00108953197CF010895FC0105909A
-:107200000020E9F7809590958E0F9F1F0895FB0150
-:10721000DC014150504088F08D9181341CF08B3559
-:107220000CF4805E659161341CF06B350CF4605E8B
-:10723000861B611171F3990B0895881BFCCFFB012C
-:10724000DC014150504048F005900D920020C9F7F4
-:1072500001C01D9241505040E0F70895FB01559147
-:107260005523A9F0BF01DC014D9145174111E1F70C
-:1072700059F4CD010590002049F04D914015411180
-:10728000C9F3FB014111EFCF81E090E00197089530
-:107290000F931F93CF93DF93CDB7DEB72E970FB623
-:1072A000F894DEBF0FBECDBF0E891F898EE08C83A0
-:1072B0001A8309838FEF9FE79E838D83AE01465E1D
-:1072C0005F4F688D798DCE0101960F94843A2F819E
-:1072D0003885020F131FF80110822E960FB6F8940E
-:1072E000DEBF0FBECDBFDF91CF911F910F910895EB
-:1072F0000F931F93CF93DF93CDB7DEB72E970FB6C3
-:10730000F894DEBF0FBECDBF8C01FA018EE08C83F6
-:107310001A83098377FF02C060E070E86150710949
-:107320007E836D83A901BF01CE0101960F94843A3B
-:107330004D815E8157FD0AC02F8138854217530762
-:107340000CF49A01020F131FF80110822E960FB64B
-:10735000F894DEBF0FBECDBFDF91CF911F910F918B
-:1073600008950F94F33908F481E00895E89409C072
-:1073700097FB3EF490958095709561957F4F8F4F68
-:107380009F4F9923A9F0F92F96E9BB279395F6957E
-:10739000879577956795B795F111F8CFFAF4BB0FFC
-:1073A00011F460FF1BC06F5F7F4F8F4F9F4F16C060
-:1073B000882311F096E911C0772321F09EE8872FEA
-:1073C000762F05C0662371F096E8862F70E060E0A6
-:1073D0002AF09A95660F771F881FDAF7880F96951F
-:1073E000879597F90895990F0008550FAA0BE0E8C3
-:1073F000FEEF16161706E807F907C0F01216130677
-:10740000E407F50798F0621B730B840B950B39F4B6
-:107410000A2661F0232B242B252B21F408950A261C
-:1074200009F4A140A6958FEF811D811D08950F9449
-:107430002A3A0D94443D0F94363D38F00F943D3D6B
-:1074400020F0952311F00D942D3D0D94333D112422
-:107450000D94783D0F94553D70F3959FC1F3950FB2
-:1074600050E0551F629FF001729FBB27F00DB11DC8
-:10747000639FAA27F00DB11DAA1F649F6627B00D58
-:10748000A11D661F829F2227B00DA11D621F739F41
-:10749000B00DA11D621F839FA00D611D221F749F4F
-:1074A0003327A00D611D231F849F600D211D822F96
-:1074B000762F6A2F11249F5750409AF0F1F08823BD
-:1074C0004AF0EE0FFF1FBB1F661F771F881F9150EA
-:1074D0005040A9F79E3F510580F00D942D3D0D942D
-:1074E000783D5F3FE4F3983ED4F3869577956795B2
-:1074F000B795F795E7959F5FC1F7FE2B880F911D14
-:107500009695879597F908952F923F924F925F92A3
-:107510006F927F928F929F92AF92BF92CF92DF92A3
-:10752000EF92FF920F931F93CF93DF9300D000D081
-:1075300000D01F921F92CDB7DEB77C013B018A01BC
-:10754000FC0117821682838181FFDDC1CE01019685
-:107550005C01F7019381F30193FD859193FF819184
-:107560003F01882309F453C1853239F493FD859195
-:1075700093FF81913F01853229F4B70190E00F9488
-:107580009F3CE7CF912C212C312CFFE1F31538F0F3
-:107590008B3211F190F4803209F1833229F137FCFA
-:1075A0003CC020ED280F2A3050F536FE20C08AE07E
-:1075B000989E200D1124922E06C08D3291F08033BA
-:1075C00071F7689430F8F30193FD859193FF8191F1
-:1075D0003F018111DACF21C0689431F8689432F804
-:1075E000F2CF689433F8EFCF689434F8ECCFEAE048
-:1075F0002E9E200D1124222E689435F8E4CF8E3271
-:1076000029F436FC04C1689436F8DDCF8C3619F4C1
-:10761000689437F8D8CF8836B1F2982F9F7D95546B
-:107620009330E0F08336A1F18337C1F1833509F05F
-:1076300063C02801F2E04F0E511CF801C080D180D8
-:10764000692D70E036FC02C06FEF7FEFC6010F942A
-:10765000893C4C01689437F882010AC00C5F1F4FC7
-:10766000FFE3F98388248394912C6501E89437F82B
-:1076700033FE2DC0522C8114910471F5552009F46C
-:1076800068CFB70180E290E00F949F3C5A94F6CF08
-:10769000F801808189830E5F1F4FE4CF2801F2E05B
-:1076A0004F0E511CF801C080D180692D70E036FC6E
-:1076B00002C06FEF7FEFC6010F94943C4C01820132
-:1076C000D5CFB70180E290E00F949F3C2A94281414
-:1076D000190409F0B0F7CECFF60137FC859137FEDB
-:1076E00081916F01B70190E00F949F3C51105A9423
-:1076F000F1E08F1A9108BFCF843619F0893609F06E
-:1077000077C0F80137FE6BC06081718182819381FF
-:107710000C5F1F4FF32DFF763F2E97FF09C090950A
-:107720008095709561957F4F8F4F9F4F689437F884
-:107730002AE030E0A5010F94CF3CC82ECA188C2C4B
-:10774000432C36FE0CC0E89440F8C91440F434FED3
-:1077500005C032FC03C0F32DFE7E4F2E892C44FE63
-:10776000AAC0FE01EC0DF11D8081803309F09CC0A0
-:10777000242D297E422E842D8870582E43FCAAC0C9
-:1077800040FEA4C09C2C821418F42C0C922C981847
-:1077900044FEA6C0B70180E390E00F949F3C42FEF8
-:1077A00009C088E790E041FE02C088E590E0B7019B
-:1077B0000F949F3CC91408F49FC0CA94D12C9FEF2A
-:1077C000C91AD90ACA0CDB1CF60182916F01B701F4
-:1077D00090E00F949F3CAC14BD04B1F74FCF608193
-:1077E0007181072E000C880B990B0E5F1F4F92CFF3
-:1077F000D32CE894D4F82AE030E08537E1F1232D4A
-:10780000297FD22E8F36A9F1F0F4883551F1F70196
-:10781000868197812B960FB6F894DEBF0FBECDBF41
-:10782000DF91CF911F910F91FF90EF90DF90CF905C
-:10783000BF90AF909F908F907F906F905F904F9090
-:107840003F902F900895803749F0883701F7D4FE94
-:1078500002C06894D2F820E130E00DC06894D4F8FA
-:10786000F6CF34FE03C0822F8660D82E20E132E0AE
-:1078700002C028E030E0F801D7FE0FC060817181BE
-:10788000828193810C5F1F4FA5010F94CF3CC82EBE
-:10789000CA183D2CE89437F852CF6081718190E08E
-:1078A00080E00E5F1F4FF0CF42FC02C0839463CF95
-:1078B0008394839460CF842D867809F45CCFF6CFCF
-:1078C000B70180E290E00F949F3C83948214C0F350
-:1078D000512C5ECF522C5818821408F459CFF8CF8F
-:1078E000842D867809F466CF8BE241FE80E247FC66
-:1078F0008DE2B70190E05CCFB70180E390E00F9498
-:107900009F3C9A9457CF8FEF9FEF84CF992788277A
-:107910000895FC010590615070400110D8F78095E2
-:1079200090958E0F9F1F0895FC016150704001904B
-:107930000110D8F7809590958E0F9F1F08950F9393
-:107940001F93CF93DF93182F092FEB018B8181FDBC
-:1079500009C01FEF0FEF812F902FDF91CF911F9163
-:107960000F91089582FF14C02E813F818C819D81EB
-:10797000281739073CF4E881F981CF0101969983F2
-:10798000888310838E819F8101969F838E83E3CFAE
-:10799000E885F985812F1995892BA1F3DACFFA01B2
-:1079A000AA27283051F1203181F1E8946F936E7F3E
-:1079B0006E5F7F4F8F4F9F4FAF4FB1E03ED0B4E02F
-:1079C0003CD0670F781F891F9A1FA11D680F791F70
-:1079D0008A1F911DA11D6A0F711D811D911DA11D81
-:1079E00020D009F468943F912AE0269F1124301991
-:1079F000305D3193DEF6CF010895462F4770405D2C
-:107A00004193B3E00FD0C9F7F6CF462F4F70405DDA
-:107A10004A3318F0495D31FD4052419302D0A9F735
-:107A2000EACFB4E0A6959795879577956795BA952F
-:107A3000C9F700976105710508959B01AC010A2EF5
-:107A400006945795479537952795BA95C9F7620FCC
-:107A5000731F841F951FA01D089597F99F6780E8E5
-:107A600070E060E008959FEF80EC089500240A9490
-:107A70001616170618060906089500240A94121609
-:107A80001306140605060895092E0394000C11F43C
-:107A9000882352F0BB0F40F4BF2B11F460FF04C0E9
-:107AA0006F5F7F4F8F4F9F4F089557FD9058440F42
-:107AB000551F59F05F3F71F04795880F97FB991F4D
-:107AC00061F09F3F79F0879508951216130614060A
-:107AD000551FF2CF4695F1DF08C016161706180697
-:107AE000991FF1CF86957105610508940895E89472
-:107AF000BB2766277727CB0197F90895F999FECF21
-:107B000092BD81BDF89A992780B50895262FF999DD
-:107B1000FECF1FBA92BD81BD20BD0FB6F894FA9A70
-:107B2000F99A0FBE01960895DB018F939F930F94EE
-:107B3000E53DBF91AF91A29F800D911DA39F900D38
-:107B4000B29F900D11240895A1E21A2EAA1BBB1B0F
-:107B5000FD010DC0AA1FBB1FEE1FFF1FA217B30719
-:107B6000E407F50720F0A21BB30BE40BF50B661F2F
-:107B7000771F881F991F1A9469F7609570958095F3
-:107B800090959B01AC01BD01CF010895052E97FB97
-:107B90001EF400940F94DD3D57FD07D00F94A43DD3
-:107BA00007FC03D04EF40D94DD3D50954095309583
-:107BB00021953F4F4F4F5F4F089590958095709559
-:107BC00061957F4F8F4F9F4F08950F94F83DA59F6C
-:107BD000900DB49F900DA49F800D911D11240895C8
-:107BE000B7FF0D94E53D0F94E53D821B930B08957F
-:107BF000A29FB001B39FC001A39F700D811D1124EE
-:107C0000911DB29F700D811D1124911D0895505832
-:107C1000BB27AA270F941F3E0D94443D0F94363D79
-:107C200038F00F943D3D20F039F49F3F19F426F4CD
-:107C30000D94333D0EF4E095E7FB0D942D3DE92FB7
-:107C40000F94553D58F3BA176207730784079507D9
-:107C500020F079F4A6F50D94773D0EF4E0950B2E07
-:107C6000BA2FA02D0B01B90190010C01CA01A0018E
-:107C70001124FF27591B99F0593F50F4503E68F1E9
-:107C80001A16F040A22F232F342F4427585FF3CF2A
-:107C9000469537952795A795F0405395C9F77EF4FB
-:107CA0001F16BA0B620B730B840BBAF09150A1F044
-:107CB000FF0FBB1F661F771F881FC2F70EC0BA0FCA
-:107CC000621F731F841F48F4879577956795B79552
-:107CD000F7959E3F08F0B0CF9395880F08F099274D
-:107CE000EE0F9795879508950F94363D60F080E8E4
-:107CF00091E009F49EEF0F943D3D28F040E851E0FB
-:107D000071F45EEF0CC00D94333D0D94773DE92F77
-:107D1000E0780F94553D40F3092E052AB1F326175C
-:107D200037074807590738F00E2E07F8E02569F0A5
-:107D3000E025E0640AC0EF6307F8009407FADB016E
-:107D4000B9019D01DC01CA01AD01EF930F94193F08
-:107D50000F94443D0F94B73E5F91552339F02BEDBE
-:107D60003FE049E450FD49EC0D94083E0895DF934F
-:107D7000DD27B92FBF7740E85FE3161617064807DF
-:107D80005B0718F4D92F0F946D409F938F937F93C7
-:107D90006F930F94F640E4EEF0E00F94EA3F0F94F7
-:107DA000443D2F913F914F915F910F942A3ADD23EB
-:107DB00051F09058A2EA2AED3FE049EC5FE3D07819
-:107DC0005D270F941F3EDF910D94443D0F9450406A
-:107DD00090F09F3748F4911116F40D94783D60E0CF
-:107DE00070E080E89FE3089526F01B16611D711D69
-:107DF000811D0D94C13F0D94DC3F0F941340E3951A
-:107E00000D943C400F94163F0D94443D0F943D3D1E
-:107E100058F00F94363D40F029F45F3F29F00D945F
-:107E20002D3D51110D94783D0D94333D0F94553DEA
-:107E300068F39923B1F3552391F3951B550BBB2799
-:107E4000AA2762177307840738F09F5F5F4F220FDE
-:107E5000331F441FAA1FA9F335D00E2E3AF0E0E8D5
-:107E600032D091505040E695001CCAF72BD0FE2F1F
-:107E700029D0660F771F881FBB1F261737074807B3
-:107E8000AB07B0E809F0BB0B802DBF01FF2793586B
-:107E90005F4F3AF09E3F510578F00D942D3D0D94C3
-:107EA000783D5F3FE4F3983ED4F3869577956795E8
-:107EB000B795F7959F5FC9F7880F911D96958795A0
-:107EC00097F90895E1E0660F771F881FBB1F6217BF
-:107ED00073078407BA0720F0621B730B840BBA0B7D
-:107EE000EE1F88F7E09508950F947B3F6894B111D9
-:107EF0000D94783D08950F945D3D88F09F5798F05C
-:107F0000B92F9927B751B0F0E1F0660F771F881F9E
-:107F1000991F1AF0BA95C9F714C0B13091F00F94B7
-:107F2000773DB1E008950D94773D672F782F88272E
-:107F3000B85F39F0B93FCCF3869577956795B395DF
-:107F4000D9F73EF490958095709561957F4F8F4F4E
-:107F50009F4F08950F94504090F09F3748F491112F
-:107F600016F00D94783D60E070E080E89FEB089596
-:107F700026F41B16611D711D811D0D94C13F0D94CA
-:107F8000DC3F882371F4772321F09850872B762FDC
-:107F900007C0662311F499270DC09051862B70E01D
-:107FA00060E02AF09A95660F771F881FDAF7880F2E
-:107FB0009695879597F908959F3F31F0915020F459
-:107FC000879577956795B795880F911D96958795B5
-:107FD00097F90895DF93CF931F930F93FF92EF923A
-:107FE000DF927B018C01689406C0DA2EEF010F94BA
-:107FF0002A3AFE01E894A591259135914591559134
-:10800000A6F3EF010F941F3EFE019701A801DA9439
-:1080100069F7DF90EF90FF900F911F91CF91DF9163
-:1080200008950D94333D0F945D3DD8F3E894E0E05E
-:10803000BB279F57F0F02AED3FE049EC06C0EE0F5A
-:10804000BB0F661F771F881F28F0B23A62077307BD
-:10805000840728F0B25A620B730B840BE3959A9550
-:1080600072F7803830F49A95BB0F661F771F881F10
-:10807000D2F790480D94DE3FEF93E0FF07C0A2EAED
-:108080002AED3FE049EC5FEB0F941F3E0F94443D17
-:108090000F90039401FC9058E1E1F1E00D9406414A
-:1080A0000F945D3DA0F0BEE7B91788F4BB279F3859
-:1080B00060F41616B11D672F782F8827985FF7CFC9
-:1080C000869577956795B11D93959639C8F3089570
-:1080D0000F94F33908F48FEF08959B01AC0160E031
-:1080E00070E080E89FE30D94023F0F945D3D58F1EE
-:1080F0009E5760F19851A0F0E9F0983020F5092ED4
-:108100009927660F771F881F991F0A94D1F712C00D
-:10811000062E672F782F8827985F11F4000C07C070
-:10812000993FB4F38695779567959395D9F7611D37
-:10813000711D811D3EF490958095709561957F4FDE
-:108140008F4F9F4F089568940D94783D0D94773D1F
-:108150009F930F9413400F9007FCEE5F0D943C40EB
-:1081600019F416F40D94333D0D94DC3F0F945D3DEE
-:10817000B8F39923C9F3B6F39F57550B87FF0F94B4
-:10818000FF400024A0E640EA90018058569597955C
-:1081900028F4805C660F771F881F20F026173707AA
-:1081A000480730F4621B730B840B202931294A2BBA
-:1081B000A69517940794202531254A2758F7660F6E
-:1081C000771F881F20F026173707480730F4620B07
-:1081D000730B840B200D311D411DA09581F7B90152
-:1081E000842F9158880F9695879508959B01AC012F
-:1081F0000D94173A0F94F339880B990B0895915009
-:108200005040660F771F881FD2F708959F938F9372
-:108210007F936F93FF93EF939B01AC010F94173AF9
-:10822000EF91FF910F94EA3F2F913F914F915F9112
-:108230000D94173A991B79E004C0991F961708F01E
-:10824000961B881F7A95C9F78095089587FB082E9D
-:10825000062687FD819567FD61950F941A410EF4FE
-:10826000919507FC81950895AA1BBB1B51E107C09E
-:10827000AA1FBB1FA617B70710F0A61BB70B881FB6
-:10828000991F5A95A9F780959095BC01CD01089545
-:1082900097FB072E16F4009407D077FD09D00F94B2
-:1082A000344107FC05D03EF4909581959F4F089589
-:1082B000709561957F4F0895EE0FFF1F881F8BBF4C
-:1082C0000790F691E02D1994AA27992329F4A85F25
-:1082D000982B11F480E10895903118F4AD5F9295D8
-:1082E000A395990FE8F78A2F99270895002E083053
-:1082F00090F0982F872F762F652F542F432F322FF2
-:1083000022270850F4CF220F331F441F551F661F2A
-:10831000771F881F991F0A95B2F7002D089597FDC2
-:108320001094002E083098F00850232F342F452F3A
-:10833000562F672F782F892F912DF4CF159497956D
-:1083400087957795679557954795379527950A951A
-:10835000AAF71124002D089581E090E0F8940D947F
-:108360001C429111089581548A5108F4805E855A07
-:108370000895FB01DC0104C08D910190801921F466
-:1083800041505040C8F7881B990B0895FB01DC0150
-:1083900002C001900D9241505040D8F70895FB0162
-:1083A000DC018D9181341CF08B350CF4805E619181
-:1083B00061341CF06B350CF4605E861B611189F32F
-:1083C000990B0895FC018191861721F08823D9F734
-:1083D000992708953197CF010895FB01DC010190A1
-:1083E0000D920020E1F70895FB01DC01415050405F
-:1083F00030F08D910190801919F40020B9F7881B95
-:10840000990B0895FB01DC014150504048F0019068
-:108410000D920020C9F701C01D9241505040E0F775
-:108420000895FC0181E090E00190061609F4CF0167
-:108430000020D1F7019708951EE1C7E4DEE100E0D6
-:1084400006C0802FFE010F945C412196011DC834A7
-:0C845000D10780E00807A9F7F894FFCFDF
-:10845C00104000000080020430290002AC00FFFF35
-:10846C00FF01CDCCCC3DFA00D20001010000803FD1
-:10847C006400640064000000803F0000803FFFFF48
-:10848C00FFFFFFFFFF080101000000E6C20000A88B
-:10849C00C2000000000000184300009A42000016C1
-:1084AC00430000C841010D0D0202C0D4010064005C
-:1084BC00AA00FF3FFF3F00000000FF3FFF3F00000E
-:1084CC000000FF3F0103000018430000A8C2000099
-:1084DC00164300000000000010198000003C1C46F0
-:1084EC00003C1C46003C1C46003C1C4658595A4556
-:1084FC00000100FF0100FF000202000048420000E2
-:10850C0048420000804000000040D505C705B70573
-:10851C00040104010000204100002041CDCCCC3EE0
-:10852C00000000400000C07F0000C07F0000C07F42
-:10853C00FF003C00010000404000003442000000FD
-:10854C00000000000000000000000050410000008E
-:10855C000000000041640000006400000003000003
-:10856C000064000000640000000300000003000031
-:10857C0000030000001E0000001E0000000000169A
-:10858C0043000096420000A04156383600FFFF40E1
-:10859C0040CF38CF384400000000004700480000AE
-:1085AC00000000000101010000164300009642008B
-:1085BC0000A04100001643000096420000A0410AB2
-:1085CC0005062E010008002000400080000001007C
-:1085DC0004000000000000F201DE00B5240401409C
-:1085EC000220023001000000008C02B000B524040F
-:1085FC0001DA01CE0034010000000095756E76ADF5
-:10860C00743D759274A5732D7488734F754E74C731
-:10861C006F4A704970000000007C01DC01E6019C8F
-:10862C0000E200E0018401280200011001BE008676
-:10863C00011602000000000929DE00B5244970452E
-:0A864C005252005A00590058000075
-:00000001FF
diff --git a/Marlin.ino.with_bootloader.mega.hex b/Marlin.ino.with_bootloader.mega.hex
deleted file mode 100644
index 74a3d5e..0000000
--- a/Marlin.ino.with_bootloader.mega.hex
+++ /dev/null
@@ -1,10813 +0,0 @@
-:020000040000FA
-:100000000C94481E0C94881E0C94881E0C94881E18
-:100010000C94881E0C94881E0C94881E0C94881EC8
-:100020000C94881E0D944B200D944B200D944B2066
-:100030000C94881E0C94881E0C94881E0C94881EA8
-:100040000C94881E0C941A880C94881E0C94881E9C
-:100050000C94881E0C947C850C94881E0D94DD1ED7
-:100060000C94881E0C9499DD0C948FDD0C94881EE2
-:100070000C94881E0C94881E0C94881E0C94881E68
-:100080000C94881E0C94881E0C94881E0C94881E58
-:100090000C94881E0C94881E0C94881E0D94271FA7
-:1000A0000C94881E0C94881E0C94881E0C94881E38
-:1000B0000C94881E0C94881E0C94881E0C94881E28
-:1000C0000C94881E0C94881E0C94881E0C94881E18
-:1000D0000C94881E0C94881E0C94881E0C94881E08
-:1000E0000C94881E084AD73B3BCE016E84BCBFFDF2
-:1000F000C12F3D6C74319ABD56833DDA3D00C77FF8
-:1001000011BED9E4BB4C3E916BAAAABE0000008090
-:100110003F05A84CCDB2D44EB93836A9020C50B91F
-:10012000918688083CA6AAAA2ABE000000803F004B
-:100130000C942C440C941F4E0D94C8090C94BE963C
-:100140000C945E270C941C440C942D740C9418444D
-:100150000D94B0180C9433CE0D940A1C0C9473605B
-:100160000D9475070C94DA220C94EE340C94A230A2
-:100170000C94462E0C946E260C9413CE0D94C30949
-:100180000C9439470C94DE470C946E280C94879697
-:100190000C942A250D94A8180C94AB960D945B072B
-:1001A0000C943A2E0C9496260C94FC470C946A25D9
-:1001B0000C94012E0D94251C0C94662D0D94D206E2
-:1001C0000C940C440D9426090C9485270C940E482D
-:1001D0000C94D7200C9428230C94C3960C94EFCD48
-:1001E0000C9457CE0C941A480D94671C0C94092952
-:1001F0000C94EB270C9424510C9406560C947628FE
-:100200000D94E0090C94CD640D944B070C947E265C
-:100210000C94FA480C9401320C9421240C94D32CA5
-:100220000D942E090C946E760C94A7280C944A70A9
-:100230000C943F960C943D750C94D92B0C94CC2BBC
-:100240000C94BF270C94F5CB0C94C8260C94F1CBDE
-:100250000C94432E0D94F0090C94F6470C94F32063
-:100260000D94D1070C944D2E0D944C070C94583BD3
-:100270000C94F21E0C9432280D948D180C94EF23DC
-:100280000C9428440D94C3180C9459CE0C94BE5869
-:100290000C9456260C944B2E0C94A5730C94C920E8
-:1002A0000C9466260C9436470C94372E0D94BF2779
-:1002B0000C94C76F0C9444270C94FA340D94CB180B
-:1002C0000C94B0200C9435CE0C944D700D94D9182C
-:1002D0000D94831C0C94145F0C942E270C948F2582
-:1002E0000C944F750C9402480C94C6220C94A622D0
-:1002F0000D94731C0C94A8530D94C41C0D940834D5
-:100300000C94312E0C94F4340D94D6090D945C09A0
-:100310000C94B2530C940B370C9486260C94501FFB
-:100320000C9419390C9424440D94D1060C948E3BF2
-:100330000C94FC220D94791C0C9408440C94062314
-:100340000D9492180C9422C60C94EF570C940C5CEC
-:100350000C94DD2B0C947A280C94532E0C94E126EB
-:100360000C94E4470C945E260D94D1180C947228DA
-:100370000C94EA470C94C8230C94AC270C94497055
-:100380000C9492740C943F260C94502E0C94742868
-:100390000C9433470C9493960C9492220C94D84767
-:1003A0000C94111F0C948B250C944F450C94AD5359
-:1003B0000C944D3E0D946E070D944C1D0C940CCC7A
-:1003C0000D947F090D94A4180C94CFCD0D9446097B
-:1003D0000C943A240C9408CC0C9408240C941448E3
-:1003E0000D94B9180D94E9070C947C280D94AC1861
-:1003F0000C9416350C940F350C9495750C9437CEDF
-:100400000C944C450C940FCE0C9464630C94E8222D
-:100410000D94D5180C9430290C9452450C94F36D1E
-:100420000C9420440D94F1090C94F0470D94CD09DF
-:100430000C94A1240C94AD740C9499270C94C3CD06
-:100440000D945D080D94621C0D94BD180C945150D0
-:100450000D94A1090C945BCE0C94BE1E0C94A69630
-:100460000C944B270C9428280C948A1E0C949C25E1
-:100470000C942DC50C94342E0C94B7530C9408484E
-:100480000D9445080C9411CE0C94635A0C94E771AA
-:100490000C9488730C948D2E0D94B3180C94AF2685
-:1004A0000C9476260C94B0220C94142F0C94E52016
-:1004B0000C94444B0C9410440C944E740C94A4244F
-:1004C0000C9463250D948E1C0C94402E0C94924C2D
-:1004D0000D94E3180C9471270C9478280C94013532
-:1004E0000C942F960C94B5240D94DF180C947E2850
-:1004F0000C9408350C94061F0C943D2E0C94EDCDF5
-:100500000C9414230C94DF2C0D94D0060D94C71872
-:100510000C94262E0C9414440D94A2074E414E497F
-:100520004E495459494E46CDCCCC3D0AD7233C17B1
-:10053000B7D13877CC2B329595E6241FB14F0A00FE
-:100540000020410000C84200401C4620BCBE4CCAEE
-:100550001B0E5AAEC59D741FE0201023102490106E
-:10056000A011202210241037B00840048003001F7F
-:10057000E02010211023101520112021102110310E
-:10058000300840048003001FE03FF03CF03B701F48
-:10059000601EE03DF03BF038700FC0078003001F85
-:1005A000E03FF03EF03CF01AE01EE03EF03EF03E50
-:1005B000F00FC007800300554E4C4F414420464980
-:1005C0004C414D454E54004C4F41442046494C410E
-:1005D0004D454E540046494C414D454E54204348EC
-:1005E000414E47450041425300504C410045727214
-:1005F0003A207574663820666F6E74206E6F7420B2
-:10060000696E697469616C697A65642E00FFE0FF48
-:10061000D140A0C8A6A22FF80023AC00AF10FFFE67
-:10062000FF05FFD0FFE0FFC1FFD1E240A0C8A6A2B6
-:100630002FF800238127AC00AFFFD0FF64FFD1A5C6
-:10064000FFD0FF64FF64FFD1A4FFD0FF16FFFE427E
-:10065000656400456E636C6F73757265002568751F
-:100660003A25303268750025303268753A253032C7
-:100670006875002530326875272530326875002589
-:100680006875642025303268753A25303268750007
-:1006900020202020202020002020202000657272B1
-:1006A000006F0557059F0587053FFFF03800703044
-:1006B000FC3020FC102078102030102C00D02E317F
-:1006C000D02F7BD02F7BD02E31D02C00D0203010DB
-:1006D00020781020FC1030FC303800703FFFF03FD5
-:1006E000FFF03800703186302387102787902F87DE
-:1006F000D02F03D020301020781020781020301018
-:100700002F03D02F87D0278790238710318630384A
-:1007100000703FFFF01FFFF81FFFF80410400208B1
-:1007200020020820041040082080104100104100E1
-:100730000820800410400000001FFFF81FFFF85041
-:1007400072696E742041626F72746564004D323557
-:1007500020500A4D32340050617573696E672E2E39
-:100760002E004D3234004C6F6164202A004C6F61C2
-:1007700064206D6D00556E6C6F6164202A00556EAB
-:100780006C6F6164206D6D0046696C2E2044696158
-:100790002E202A0046696C2E204469612E004520D7
-:1007A000696E206D6D5E3300200820466163740021
-:1007B0002008204D6178002008204D696E004F66AA
-:1007C00066004F6E004175746F74656D70004D6901
-:1007D0006E2054726176656C205370656564004DBF
-:1007E000696E2056656C6F63697479004D6178207D
-:1007F00040205370656564004D6178204520416359
-:1008000063656C004D6178204020416363656C0036
-:1008100054726176656C20416363656C0052657447
-:100820007261637420416363656C00416363656C4E
-:1008300000402073746570732F6D6D0041647661A4
-:100840006E6365642053657474696E6773003F005E
-:1008500043616E63656C00496E6974004D343238D3
-:1008600000496E697469616C697A6520454550522A
-:100870004F4D0046696C616D656E740054656D7016
-:100880006572617475726500544D432044726976D7
-:100890006572730053746570732F6D6D004A756EC9
-:1008A0006374696F6E2044657600416363656C65AF
-:1008B000726174696F6E004D617820537065656474
-:1008C00020286D6D2F73290053657420486F6D6566
-:1008D000204F66667365747300436F6E6669677553
-:1008E000726174696F6E005A2052616973650032DB
-:1008F0006E64204E6F7A7A6C652040004265640019
-:100900004E6F7A7A6C650046616E2053706565643F
-:1009100000436F6E66696775726174696F6E00522D
-:100920006573746F72652044656661756C747300DD
-:100930004C6F61642053657474696E6773005374FF
-:100940006F72652053657474696E677300507265C9
-:1009500068656174202420436F6E6600546F6F6C6D
-:10096000204368616E676500546F6F6C204F666648
-:100970007365747300416476616E636564205365CA
-:100980007474696E6773004D61696E004D37303263
-:1009900020542564004D36303020423020542564E8
-:1009A000004D373032203B2564004D373031205424
-:1009B0002564004368616E67652046696C616D65FA
-:1009C0006E7400556E6C6F61642046696C616D6574
-:1009D0006E74004C6F61642046696C616D656E7465
-:1009E000005072656865617420437573746F6D00A3
-:1009F000507265686561742024004261636B005524
-:100A00006E6C6F6164202A004C6F6164202A004381
-:100A100068616E67652046696C616D656E74202A39
-:100A2000004D61696E00436F6E74696E75650050AC
-:100A300075726765206D6F726500524553554D455F
-:100A4000204F5054494F4E533A005052494E542073
-:100A50005041555345440020204E6F7A7A6C653AD8
-:100A600020005061726B696E672E2E2E00000057B9
-:100A700061697420666F720066696C616D656E7481
-:100A8000206368616E676500746F207374617274AF
-:100A9000005761697420666F720066696C616D65EC
-:100AA0006E7420756E6C6F616400004E6F7A7A6CA4
-:100AB000652068656174696E6700506C6561736577
-:100AC00020776169742E2E2E00005072657373209A
-:100AD000627574746F6E00746F2068656174206E47
-:100AE0006F7A7A6C650000496E736572742066696E
-:100AF0006C616D656E7400616E64207072657373F5
-:100B000020627574746F6E00746F20636F6E746909
-:100B10006E7565005761697420666F720066696C56
-:100B2000616D656E74206C6F616400005072657356
-:100B30007320427574746F6E00746F2072657375E4
-:100B40006D65207072696E7400005761697420666B
-:100B50006F72207072696E7400746F2072657375A5
-:100B60006D652E2E2E00005761697420666F72002D
-:100B700066696C616D656E742070757267650000E2
-:100B80004D36303020423020542569004D37303109
-:100B900020542569004D37303220542569005669AC
-:100BA0006F6C657400496E6469676F00426C7565AF
-:100BB00000477265656E0059656C6C6F77004F7207
-:100BC000616E67650052656400576869746500422C
-:100BD0006C756520496E74656E736974790047722F
-:100BE00065656E20496E74656E736974790052652F
-:100BF0006420496E74656E73697479004C454420B5
-:100C0000436F6E74726F6C00437573746F6D204C1C
-:100C10006967687473004C69676874205072657303
-:100C20006574730044656661756C74004F66660098
-:100C30004F6E004C6967687473004D61696E003FC8
-:100C4000004261636B0053746F70004E6F204D65FE
-:100C5000646961005072696E742066726F6D204D18
-:100C600065646961004368616E6765204D6564690C
-:100C700061004D3231004C696768747300436861EC
-:100C80006E67652046696C616D656E7400436F6EBA
-:100C900066696775726174696F6E0054656D706521
-:100CA000726174757265004D6F74696F6E00526584
-:100CB00073756D65205072696E740054756E6500B1
-:100CC00053746F70205072696E7400506175736553
-:100CD000205072696E7400496E666F2053637265AE
-:100CE000656E003F005374617274205072696E74B7
-:100CF0000043616E63656C005072696E74004361FD
-:100D00006E6E6F7420656E746572207375626469AF
-:100D1000723A200002202E2E004D61696E004D6F48
-:100D2000766520246D6D00302E303235004D6F76A3
-:100D30006520302E316D6D004D6F766520316D6D03
-:100D4000004D6F76652031306D6D002100486F7465
-:100D5000656E6420746F6F20636F6C640042616322
-:100D60006B0050726F63656564004D6F7665202A75
-:100D7000004D6F7665204578747275646572004D1C
-:100D80006F76652040004D6F74696F6E0044697323
-:100D900061626C65205374657070657273004D38C4
-:100DA00034004732385A004732385900486F6D6571
-:100DB00020400047323858004175746F20486F6DED
-:100DC0006500473238004D6F7665204178697300C1
-:100DD0004D61696E0050726568656174202420421F
-:100DE00065640050726568656174202420416C6CF4
-:100DF0000050726568656174202420456E64207E11
-:100E000000507265686561742024207E0054656D11
-:100E1000706572617475726500E905E505436F6F71
-:100E20006C646F776E005072656865617420240091
-:100E300046616E205370656564207E0042656400E3
-:100E40004E6F7A7A6C65207E004D61696E00453286
-:100E5000004531005A005900580045320045310024
-:100E60005A0059004F6666004F6E005800544D43BB
-:100E7000204472697665727300537465616C74689E
-:100E800043686F7020456E61626C656400537465E1
-:100E90007070696E67204D6F646500447269766595
-:100EA000722043757272656E7400416476616E6380
-:100EB00065642053657474696E677300466C6F7760
-:100EC000207E00466C6F770046616E20537065652A
-:100ED00064207E00426564004E6F7A7A6C65207EE5
-:100EE000005370656564004D61696E00000C0F0071
-:100EF000FE07022503BB017FFE08FE08FE05080869
-:100F000006000040F0C88888987810050808060098
-:100F100000C0F88888888888F80505050600012043
-:100F200030F830200508080600002070F820202046
-:100F300020E00509090600FF2070A8A8B88888707D
-:100F400020070505070001D86C366CD8050909068D
-:100F500000FFF8A88888888888A8F8050A0A06008B
-:100F6000FE205050505088A8A88870030303060044
-:100F70000340A040FFFFFFFFFFFFFFFFFFFFFFFF5A
-:100F8000FFFFFFFFFFFFFFFFFFFF0000000605FF61
-:100F90000107070602008080808080008003030331
-:100FA000060105A0A0A005060606000050F8505056
-:100FB000F8500509090600FF2070A8A07028A87045
-:100FC00020050707060000C8C810204098980507AC
-:100FD0000706000040A0A040A89068010303060295
-:100FE000058080800309090601FF20404080808041
-:100FF0004040200309090601FF8040402020204096
-:10100000408005070706000020A8702070A8200572
-:1010100005050600012020F820200203030601FF39
-:10102000C04080050101060003F80202020601002B
-:10103000C0C00507070600000810102040408005CA
-:101040000707060000708898A8C88870030707067D
-:10105000010040C040404040E00507070600007026
-:101060008808102040F8050707060000F80810302F
-:1010700008887005070706000010305090F810101F
-:10108000050707060000F880F008088870050707C4
-:10109000060000304080F0888870050707060000D1
-:1010A000F808101020202005070706000070888827
-:1010B0007088887005070706000070888878081017
-:1010C00060020505060100C0C000C0C00206060699
-:1010D00001FFC0C000C0408003050506010120409B
-:1010E000804020050303060002F800F8030505060A
-:1010F000010180402040800507070600007088102D
-:10110000202000200507070600007088B8A8B880D6
-:1011100070050707060000708888F888888805072A
-:1011200007060000F04848704848F0050707060029
-:101130000070888080808870050707060000F048EE
-:1011400048484848F0050707060000F88080F0800E
-:1011500080F8050707060000F88080F08080800591
-:1011600007070600007088808098887005070706CA
-:101170000000888888F8888888030707060100E04F
-:101180004040404040E005070706000038101010BE
-:101190001090600507070600008890A0C0A0908806
-:1011A000050707060000808080808080F80507071B
-:1011B00006000088D8A888888888050707060000E8
-:1011C0008888C8A89888880507070600007088885E
-:1011D00088888870050707060000F08888F08080FE
-:1011E0008005070706000070888888A890680507B2
-:1011F00007060000F08888F0A09088050707060021
-:101200000070888070088870050707060000F820C5
-:10121000202020202005070706000088888888886D
-:1012200088700507070600008888888850502005C8
-:10123000070706000088888888A8A85005070706C1
-:10124000000088885020508888050707060000881D
-:10125000885020202020050707060000F8081020ED
-:101260004080F80309090601FFE0808080808080CB
-:1012700080E00507070600008040402010100803AA
-:1012800009090601FFE020202020202020E005039E
-:10129000030600052050880501010600FEF803033F
-:1012A000030601058040200505050600007008784A
-:1012B00088780507070600008080F0888888F00598
-:1012C000050506000070808088700507070600008D
-:1012D000080878888888780505050600007088F079
-:1012E0008070050707060000304840E04040400598
-:1012F00007070600FE7088888878087005070706CB
-:1013000000008080F0888888880307070601004075
-:1013100000C0404040E00409090601FE1000301002
-:10132000101010906005070706000080808890E08C
-:101330009088030707060100C04040404040E00598
-:101340000505060000D0A8A8A8A805050506000008
-:10135000B0C88888880505050600007088888870F0
-:101360000507070600FEF0888888F08080050707DB
-:101370000600FE78888888780808050505060000BC
-:10138000B0C880808005050506000078807008F0F0
-:101390000507070600002020F82020201805050575
-:1013A000060000888888986805050506000088887A
-:1013B0008850200505050600008888A8A850050566
-:1013C0000506000088502050880507070600FE88A3
-:1013D000888850204080050505060000F810204050
-:1013E000F80309090601FF204040408040404020AA
-:1013F0000109090602FF8080808080808080800350
-:1014000009090601FF80404040204040408005031C
-:101410000306000248A890FF486F6D696E6720467A
-:1014200061696C6564006F70656E0054524947478E
-:1014300045524544003A20007A5F6D696E00795F3D
-:101440006D696E00785F6D6178005265706F7274BF
-:10145000696E6720656E6473746F70207374617455
-:1014600075730A000000184300009A4200001643FA
-:101470000000E6C20000A8C20000000020746F6FE8
-:10148000206C6F6E6720657874727573696F6E205B
-:1014900070726576656E7465640A0020636F6C64B3
-:1014A00020657874727573696F6E207072657665E9
-:1014B0006E7465640A00000018430000A8C20000B2
-:1014C00000005761726E696E673A20486F6D696EF1
-:1014D000672042756D702044697669736F72203C95
-:1014E00020310A00020204008085430000214300ED
-:1014F0000016430000A0400000A040000000400093
-:10150000000001000000010000800055555500005A
-:1015100000400033333300AAAA2A00499224000075
-:10152000002000C7711C0099991900D1451700557A
-:101530005515003BB1130024491200111111000090
-:101540000010000F0F0F00E3380E0043790D00CCA0
-:10155000CC0C00C3300C00E8A20B0064210B00AAE5
-:10156000AA0A00703D0A009DD80900427B0900923A
-:10157000240900DCD3080088880800104208000015
-:10158000000800F0C1070087870700755007007149
-:101590001C07003EEB0600A1BC0600699006006631
-:1015A000660600703E06006118060017F405007418
-:1015B000D105005BB00500B29005006272050055D0
-:1015C00055050078390500B81E0500050505004ED3
-:1015D000EC040087D40400A1BD040090A7040049D6
-:1015E000920400C17D0400EE690400C75604004463
-:1015F0004404005C3204000821040041100400008F
-:101600000004003FF00300F8E0030026D20300C30B
-:10161000C30300CCB503003AA803000A9B030038BB
-:101620008E0300C08103009F750300D06903005042
-:101630005E03001D53030034480300913D03003353
-:1016400033030016290300381F03009715030030E9
-:101650000C0300030303000BFA020049F10200BA75
-:10166000E802005CE002002DD802002DD0020059F3
-:10167000C80200B0C0020031B90200DAB10200AA0B
-:10168000AA0200A0A30200BC9C0200FA9502005C22
-:101690008F0200DF88020082820200457C02002760
-:1016A00076020027700200436A02007C640200D0C8
-:1016B0005E02003F590200C8530200FFFDFCFAF829
-:1016C000F6F4F2F0EEECEAE9E7E5E3E1E0DEDCDA9D
-:1016D000D9D7D5D4D2D0CFCDCBCAC8C7C5C3C2C045
-:1016E000BFBDBCBAB9B7B6B4B3B2B0AFADACAAA9BE
-:1016F000A8A6A5A4A2A1A09E9D9C9A99989795940E
-:101700009392908F8E8D8B8A89888786848382813D
-:10171000807F7E7D7B7A797877767574737271704D
-:101720006F6E6D6C6B6A6968676665646362616041
-:101730005F5E5D5C5B5A5958585756555453525129
-:1017400050504F4E4D4C4B4A4A49484746464544F7
-:1017500043424241403F3E3E3D3C3B3B3A393838B4
-:1017600037363535343332323130302F2E2E2D2C62
-:101770002B2B2A2929282727262525242323222104
-:101780002120201F1E1E1D1C1C1B1B1A1919181896
-:10179000171616151514131312121111100F0F0E20
-:1017A0000E0D0D0C0C0B0A0A09090808070706069E
-:1017B0000505040403030202010000DB0FC93F45D5
-:1017C000BCDA3F8FB30240FCF0274056946140FEE4
-:1017D0004B9B4084A5D840E0231841346A5641E829
-:1017E00059974164DBD5416E271742B4B75542CEB5
-:1017F0001A9742C8AED542B5885A43D40684BFA6CC
-:101800005FA7BF7443E0BF10B11AC01C2C58C0E8DA
-:10181000F697C0B849D6C04E4E17C124D355C180E3
-:101820002497C1A0B5D5C1121A17C244AE55C278CB
-:101830001797C26CACD5C267885AC320746F6F20EB
-:101840006C6F6E6720657874727573696F6E207047
-:10185000726576656E7465640A0020636F6C64203F
-:10186000657874727573696F6E2070726576656ED7
-:101870007465640A0053657474696E6773205374E9
-:101880006F72656400290A002062797465733B20D9
-:10189000637263200053657474696E6773205374B8
-:1018A0006F726564202800454550524F4D20496EA7
-:1018B000697469616C697A65640A0048617264637D
-:1018C0006F6465642044656661756C74205365744B
-:1018D00074696E6773204C6F616465640020286DC5
-:1018E0006D290020460020420020480020204D3174
-:1018F00034352053004D6174657269616C206865F0
-:101900006174757020706172616D657465727300C9
-:1019100020204D39303600205431204500205430ED
-:101920002045005374657070657220647269766535
-:10193000722063757272656E740020204D353639E1
-:1019400020533100543120450054302045002058A8
-:1019500000447269766572207374657070696E6791
-:10196000206D6F64650020204D3134392043203BC9
-:1019700020556E69747320696E2043656C736975B8
-:10198000730A0054656D70657261747572652055D7
-:101990006E697473002020473231203B004C696E21
-:1019A00065617220556E69747300454550524F4D04
-:1019B000206461746173697A65206572726F722E3A
-:1019C0000A00290A002062797465733B2063726300
-:1019D00020002073746F7265642073657474696E7F
-:1019E00067732072657472696576656420280020CB
-:1019F0002863616C63756C6174656429210A002039
-:101A0000213D2000454550524F4D20435243206D0B
-:101A100069736D61746368202D202873746F72651B
-:101A2000642920002053697A653A2000496E646574
-:101A3000783A200000007A4300007A430000A04179
-:101A40000000C8428747BC428747BC420000C843E9
-:101A5000E78CC042E8030000E803000064000000D7
-:101A600088130000204D61726C696E3D563836292E
-:101A70000A00454550524F4D2076657273696F6E6E
-:101A8000206D69736D617463682028454550524F1D
-:101A90004D3D0024F4D43050C38E20C2A2401782A2
-:101AA0008B7011127A910D816CD90AA861E108C777
-:101AB000586607615143061E4B5D05C145A7041AD0
-:101AC000411104093D9803713931034036DB026549
-:101AD000339102D4305402802E1D02632CEE017526
-:101AE0002AC501B028A001102781018F2564012B90
-:101AF000244B01E0223401AC211F018D200D018017
-:101B00001FFC00841EED00971DDF00B81CD200E60C
-:101B10001BC600201BBC00641AB200B219A8000A40
-:101B200019A0006A189900D117910040178B00B5D1
-:101B300016840031167E00B31579003A157300C77C
-:101B4000146F0058146A00EE1366008813630025B2
-:101B5000135E00C7125B006C12570015125400C1CF
-:101B600011510070114F0021114B00D61049008D0A
-:101B70001047004610440002104200C00F40008091
-:101B80000F3E00420F3C00060F3B00CB0E38009387
-:101B90000E37005C0E3500270E3400F30D3200C105
-:101BA0000D3100900D3000600D2E00320D2D00051E
-:101BB0000D2C00D90C2B00AE0C2900850C29005CE3
-:101BC0000C2700350C27000E0C2600E80B2400C45F
-:101BD0000B2400A00B23007D0B23005A0B2100399E
-:101BE0000B2100180B2000F80A1F00D90A1E00BBA9
-:101BF0000A1E009D0A1D00800A1D00630A1C004782
-:101C00000A1B002C0A1B00110A1A00F7091A00DD32
-:101C1000091900C4091900AB091900920917007BC2
-:101C2000091800630917004C091600360916002030
-:101C30000916000A091500F5081500E0081400CC83
-:101C4000081400B8081400A4081400900813007DBC
-:101C50000812006B081300580812004608120034DE
-:101C6000081100230811001208110001081100F0EA
-:101C7000071000E0071000D0071000C0071000B0E8
-:101C8000070F00A107100091070E0083070F0074D3
-:101C9000070F0065070E0057070E0049070E003BAF
-:101CA000070D002E070E0020070D0013070D00067C
-:101CB000070D00F9060C00ED060D00E0060C00D43F
-:101CC000060C00C8060C00BC060C00B0060C00A4F4
-:101CD000060B0099060C008D060B0082060B0077A0
-:101CE000060B006C060B0061060A0057060B004C41
-:101CF000060A0042060A0038060A002E060A0024D8
-:101D0000060A001A060A001006090007060A00FD66
-:101D1000050900F4050900EB050900E2050900D9F1
-:101D2000050900D0050900C7050900BE050900B571
-:101D3000050800AD050800A50509009C05080094EC
-:101D40000508008C050800840508007C050800745F
-:101D50000508006C050700650508005D05070056CD
-:101D60000508004E05070047050700400508003834
-:101D7000050700310507002A050700230507001C99
-:101D8000050600160507000F0507000805060002F6
-:101D9000050700FB040600F5040700EE040600E852
-:101DA000040600E2040700DB040600D5040600CFA9
-:101DB000040600C9040600C3040600BD040600B7FB
-:101DC000040600B1040500AC040600A6040600A049
-:101DD0000405009B04060095040500900406008A93
-:101DE00004050085040500800406007A04050075DA
-:101DF000040500700405006B04050066040500611D
-:101E00000405005C04050057040500520405004D5C
-:101E100004050048040500430405003E0404003A9C
-:101E200004050035040500300404002C04050027D7
-:101E3000040400230405001E0404001A0404001610
-:101E4000040500110404000D040400090405000445
-:101E500004040000040400FC030400F8030400F47C
-:101E6000030400F0030400EC030400E8030400E4AE
-:101E7000030400E0030400DC030400D8030400D4DE
-:101E8000030400D0030400CC030400C8030300C50E
-:101E900003030024F404D9201BC40C5C0E9804C472
-:101EA000095F0265077101F405F900FB04B30048FE
-:101EB000048700C10369005803550003034500BEB1
-:101EC000023A008402310053022A0029022500044C
-:101ED000022000E4011C00C8011900AF011700989E
-:101EE0000114008401130071011000610110005100
-:101EF000010E0043010D0036010B002B010B0020E9
-:101F0000010B00150109000C01090003010800FB89
-:101F1000000800F3000800EB000700E4000600DE04
-:101F2000000600D8000600D2000600CC000500C75D
-:101F3000000500C2000500BD000400B9000400B5A2
-:101F4000000400B1000400AD000400A9000400A5D5
-:101F5000000300A20003009F0004009B0003009800
-:101F60000003009500020093000300900003008D21
-:101F70000002008B0003008800020086000200843B
-:101F8000000300810002007F0002007D0002007B50
-:101F90000002007900020077000100760002007460
-:101FA00000020072000100710002006F0002006D6B
-:101FB0000001006C0002006A000100690002006775
-:101FC000000100660001006500010064000200627B
-:101FD00000010061000100600001005F0002005D7F
-:101FE0000001005C0001005B0001005A0001005983
-:101FF0000001005800010057000100560001005583
-:102000000001005400010053000000530001005281
-:1020100000010051000100500001004F0001004E7E
-:102020000000004E0001004D0001004C0001004B7B
-:102030000000004B0001004A000100490001004877
-:102040000000004800010047000100460000004673
-:10205000000100450000004500010044000100436C
-:102060000000004300010042000000420001004166
-:1020700000000041000100400001003F0000003F5F
-:102080000001003E0000003E0001003D0000003D58
-:102090000001003C0000003C0000003C0001003B4F
-:1020A0000000003B0001003A0000003A0001003946
-:1020B000000000390001003800000038000000383E
-:1020C0000001003700000037000100360000003634
-:1020D000000000360001003500000035000000352A
-:1020E000000100340000003400000034000100331F
-:1020F0000000003300000033000100320000003215
-:102100000000003200010031000000310000003109
-:102110000001003000000030000000300001002FFE
-:102120000000002F0000002F0000002F0001002EF3
-:102130000000002E0000002E0001002D0000002DE8
-:102140000000002D0000002D0001002C0000002CDC
-:102150000000002C0000002C0001002B0000002BD0
-:102160000000002B0000002B0001002A0000002AC4
-:102170000000002A0000002A0001002900000029B8
-:1021800000000029000000290000002900010028AB
-:10219000000000280000002800000028000000289F
-:1021A0000001002700000027000000270000002792
-:1021B0000000002700010026000000260000002685
-:1021C0000000002600000026000100250000002578
-:1021D000000000250000002500000025000000256B
-:1021E000000100240000002400000024000000245E
-:1021F0000000002400010023000000230000002351
-:102200000000002300000023000000230000002342
-:102210000001002200000022000000220000002235
-:102220000000002200000022000100210000002127
-:10223000000000210000002100000021000000211A
-:10224000000000210001002000000020000000200C
-:1022500000000020000000200000002000000020FE
-:10226000000000200001001F0000001F0000001FF0
-:102270000000001F0000001F0000001F0000001FE2
-:102280000001001E0000001E0000001E0000001ED5
-:10229000000000393000003325000087190000B02D
-:1022A0000F0000DB080000BD040000740200003FC6
-:1022B00001000020436F756E7420583A00453200CB
-:1022C000426564004531004500626564002C20735E
-:1022D000797374656D2073746F7070656421204824
-:1022E00065617465725F49443A20004572723A2014
-:1022F0004D415854454D50004D415854454D502086
-:102300007472696767657265640048656174696EB7
-:1023100067204661696C65640048656174696E6731
-:10232000206661696C6564004572723A204D494EC1
-:1023300054454D50004D494E54454D5020747269DE
-:1023400067676572656400544845524D414C2052A0
-:10235000554E4157415900546865726D616C205269
-:10236000756E6177617900202F0020400020424087
-:102370003A0020403A00496E76616C6964206578C5
-:102380007472756465720A004163746976652045EC
-:10239000787472756465723A20000009121B242D4E
-:1023A000363F48415A536C657E7719100B023D3415
-:1023B0002F265158434A757C676E323B2029161FE1
-:1023C000040D7A7368615E574C452B2239300F0635
-:1023D0001D14636A7178474E555C646D767F404981
-:1023E000525B2C253E3708011A137D746F665950D5
-:1023F0004B42353C272E1118030A565F444D727B21
-:1024000060691E170C053A3328214F465D546B62F4
-:102410007970070E151C232A31384148535A656CD0
-:10242000777E09001B122D243F3658514A437C7594
-:102430006E671019020B343D262F737A6168575E60
-:10244000454C3B3229201F160D046A6378714E47B4
-:102450005C55222B3039060F141D252C373E010800
-:10246000131A6D647F7649405B523C352E27181154
-:102470000A03747D666F5059424B171E050C333AA0
-:1024800021285F564D447B7269600E071C152A2374
-:102490003831464F545D626B707900002110422044
-:1024A00063308440A550C660E770088129914AA135
-:1024B0006BB18CC1ADD1CEE1EFF1311210027332AC
-:1024C0005222B5529442F772D662399318837BB385
-:1024D0005AA3BDD39CC3FFF3DEE36224433420043C
-:1024E0000114E664C774A44485546AA54BB52885D5
-:1024F0000995EEE5CFF5ACC58DD55336722611168C
-:102500003006D776F6669556B4465BB77AA7199724
-:102510003887DFF7FEE79DD7BCC7C448E558866813
-:10252000A7784008611802282338CCC9EDD98EE974
-:10253000AFF9488969990AA92BB9F55AD44AB77AEB
-:10254000966A711A500A333A122AFDDBDCCBBFFBC4
-:102550009EEB799B588B3BBB1AABA66C877CE44CFB
-:10256000C55C222C033C600C411CAEED8FFDECCD14
-:10257000CDDD2AAD0BBD688D499D977EB66ED55ECB
-:10258000F44E133E322E511E700E9FFFBEEFDDDF64
-:10259000FCCF1BBF3AAF599F788F8891A981CAB1F0
-:1025A000EBA10CD12DC14EF16FE18010A100C23022
-:1025B000E3200450254046706760B9839893FBA3DD
-:1025C000DAB33DC31CD37FE35EF3B1029012F32272
-:1025D000D2323542145277625672EAB5CBA5A8952D
-:1025E00089856EF54FE52CD50DC5E234C324A014C2
-:1025F00081046674476424540544DBA7FAB79987BD
-:10260000B8975FE77EF71DC73CD7D326F236910611
-:10261000B01657667676154634564CD96DC90EF904
-:102620002FE9C899E9898AB9ABA944586548067861
-:102630002768C018E1088238A3287DCB5CDB3FEB1C
-:102640001EFBF98BD89BBBAB9ABB754A545A376AB1
-:10265000167AF10AD01AB32A923A2EFD0FED6CDDEC
-:102660004DCDAABD8BADE89DC98D267C076C645C01
-:10267000454CA23C832CE01CC10C1FEF3EFF5DCFFC
-:102680007CDF9BAFBABFD98FF89F176E367E554E51
-:10269000745E932EB23ED10EF01E7C3C3E5E2B3D0E
-:1026A0003F2F5B5D3B2C2A225C0043616E6E6F7492
-:1026B000206F70656E2073756264697220004D65CD
-:1026C00064696120496E6974204661696C005344F5
-:1026D0002063617264206F6B0A006F70656E526FC9
-:1026E0006F74206661696C65640A00766F6C756D45
-:1026F000652E696E6974206661696C65640A004EB6
-:102700006F20534420636172640A000A4D32340022
-:102710004D3233202573002E0A006F70656E2066DF
-:1027200061696C65642C2046696C653A20004669D5
-:102730006C652073656C65637465640A0020536979
-:102740007A653A200046696C65206F70656E656435
-:102750003A2000454E4420535542524F5554494E5D
-:10276000450A002220706F73002220706172656E2E
-:10277000743A2200535542524F5554494E45204316
-:10278000414C4C207461726765743A220053756243
-:1027900063616C6C204F766572666C6F770045786C
-:1027A000636565646564206D617820535542524FBE
-:1027B0005554494E452064657074683A00577269F3
-:1027C00074696E6720746F2066696C653A200043F7
-:1027D0004F4D4D554E49434154494F4E0044525977
-:1027E00052554E004552524F525300494E464F00EB
-:1027F0004543484F004572726F7220777269746961
-:102800006E6720746F20454550524F4D210A00538A
-:10281000544F505045442E20005072696E746572BA
-:102820002073746F707065642064756520746F2008
-:102830006572726F72732E20466978207468652005
-:102840006572726F7220616E6420757365204D39F8
-:10285000393920746F20726573746172742E202868
-:1028600054656D706572617475726520697320724C
-:10287000657365742E2053657420697420616674D5
-:1028800065722072657374617274696E67290A00DB
-:102890004E6F20436865636B73756D20776974684C
-:1028A000206C696E65206E756D6265722C204C61BE
-:1028B0007374204C696E653A20004E6F2043686542
-:1028C000636B73756D2077697468206C696E652021
-:1028D0006E756D6265722C204C617374204C696E4C
-:1028E000653A2000636865636B73756D206D69736D
-:1028F0006D617463682C204C617374204C696E6543
-:102900003A20004C696E65204E756D6265722069D3
-:1029100073206E6F74204C617374204C696E652057
-:102920004E756D6265722B312C204C617374204C96
-:10293000696E653A20004D3131300053657269612E
-:102940006C20737461747573206D69736D61746349
-:10295000680A0053442072656164206572726F7268
-:102960000A004B494C4C20627574746F6E2F70696D
-:102970006E0A002121204B494C4C20636175736520
-:10298000642062792000746F6F206D756368206920
-:102990006E6163746976652074696D65202D2063AE
-:1029A000757272656E7420636F6D6D616E643A202E
-:1029B000002121204B494C4C2063617573656420D4
-:1029C00062792000627573793A207061757365646D
-:1029D00020666F7220696E7075740A006275737973
-:1029E0003A2070617573656420666F722075736537
-:1029F000720A00627573793A2070726F636573733F
-:102A0000696E670A004D656469612052656D6F7675
-:102A10006564004D6564696120496E736572746513
-:102A20006400506C65617365205265736574005075
-:102A300052494E5445522048414C54454400255378
-:102A40003A202553004B494C4C45442E20005072EF
-:102A5000696E7465722068616C7465642E206B69A0
-:102A60006C6C28292063616C6C6564210A00006528
-:102A700063686F3A004572726F723A00486F74650E
-:102A80006E6420746F6F20636F6C640A005072650F
-:102A9000737320627574746F6E20746F2072657327
-:102AA000756D650A00496E736572742066696C61A4
-:102AB0006D656E7420616E64207072657373206240
-:102AC0007574746F6E0A005072657373206275744A
-:102AD000746F6E20746F2068656174206E6F7A7AEF
-:102AE0006C650A004C4F570048494748004F4B005F
-:102AF0004572726F723A20416C6C200020636F6ED9
-:102B00006E656374696F6E2E2E2E2000546573748B
-:102B1000696E6720004C4F570048494748004F4BAB
-:102B2000004572726F723A20416C6C200020636F16
-:102B30006E6E656374696F6E2E2E2E200054657361
-:102B400074696E6720004C4F570048494748004F52
-:102B50004B004572726F723A20416C6C200020630A
-:102B60006F6E6E656374696F6E2E2E2E2000546535
-:102B70007374696E6720004C4F57004849474800FE
-:102B80004F4B004572726F723A20416C6C200020EE
-:102B9000636F6E6E656374696F6E2E2E2E20005407
-:102BA000657374696E6720004C4F57004849474869
-:102BB000004F4B004572726F723A20416C6C2000DE
-:102BC00020636F6E6E656374696F6E2E2E2E20000B
-:102BD00054657374696E672000544D4320434F4E13
-:102BE0004E454354494F4E204552524F52002044C7
-:102BF0000020204D32303020540020204D32303023
-:102C0000205300202844697361626C6564293A008E
-:102C100046696C616D656E742073657474696E6766
-:102C2000730020204D3230312058004D6178204112
-:102C30006363656C65726174696F6E2028756E6977
-:102C400074732F7332290020204D32303320580006
-:102C50004D617820666565647261746573202875BE
-:102C60006E6974732F73290020520020204D32307A
-:102C700034205000416363656C65726174696F6EE6
-:102C80002028756E6974732F7332292028503C7088
-:102C900072696E742D616363656C3E20523C72658F
-:102CA00074726163742D616363656C3E20543C747F
-:102CB000726176656C2D616363656C3E2900204A04
-:102CC0000020540020530020204D32303520420097
-:102CD000416476616E6365642028423C6D696E5F75
-:102CE0007365676D656E745F74696D655F75733E5E
-:102CF00020533C6D696E5F66656564726174653E04
-:102D000020543C6D696E5F74726176656C5F6665B8
-:102D10006564726174653E204A3C6A756E635F64E7
-:102D200065763E290020204D32313700546F6F6C9C
-:102D30002D6368616E67696E670020204D323138FF
-:102D4000205400486F74656E64206F666673657406
-:102D5000730020440020490020204D3330312050A2
-:102D600000486F74656E6420504944004F46460029
-:102D70004F4E0020204D61783A2000200020204D49
-:102D8000696E3A2000203B200020204D3231312056
-:102D90005300536F667420656E6473746F707300B4
-:102DA000203B00205500204C0020204D36303320A1
-:102DB000540046696C616D656E74206C6F61642FA0
-:102DC000756E6C6F616400737072656164437963E2
-:102DD0006C6500737465616C746843686F70002083
-:102DE000647269766572206D6F64653A090073706C
-:102DF000726561644379636C6500737465616C74BA
-:102E00006843686F700020647269766572206D6F28
-:102E100064653A09007370726561644379636C6537
-:102E200000737465616C746843686F70002064722D
-:102E300069766572206D6F64653A0900737072651A
-:102E400061644379636C6500737465616C74684395
-:102E5000686F700020647269766572206D6F6465BA
-:102E60003A09007370726561644379636C6500733D
-:102E70007465616C746843686F7000206472697671
-:102E80006572206D6F64653A0900202E6873747254
-:102E9000743A2000202E68656E643A200020636832
-:102EA0006F70706572202E746F66663A2000202E57
-:102EB00068737472743A2000202E68656E643A203C
-:102EC000002063686F70706572202E746F66663ABA
-:102ED0002000202E68737472743A2000202E6865DA
-:102EE0006E643A20002063686F70706572202E74E3
-:102EF0006F66663A2000202E68737472743A200060
-:102F0000202E68656E643A20002063686F707065DB
-:102F100072202E746F66663A2000202E68737472D9
-:102F2000743A2000202E68656E643A2000206368A1
-:102F30006F70706572202E746F66663A20003F5382
-:102F4000206F7574206F662072616E67652028316E
-:102F50002E2E38290A003F50206F7574206F66208E
-:102F600072616E676520282D332E2E3132290A00BA
-:102F70003F4F206F7574206F662072616E67652009
-:102F800028312E2E3135290A003B200020496E764B
-:102F9000616C69642065787472756465722000479D
-:102FA000322F47332062616420706172616D6574F5
-:102FB0006572730A00536C6565702E2E2E00436C8B
-:102FC00069636B20746F20526573756D652E2E2EAC
-:102FD000004E6F204D6F76652E00456E6420666949
-:102FE0006C65206C6973740A00426567696E2066BF
-:102FF000696C65206C6973740A004E6F206D65649E
-:1030000069610A00286E6F2066696C652900437546
-:103010007272656E742066696C653A2000534420B4
-:103020007072696E74696E67206279746520004EF3
-:103030006F74205344207072696E74696E670A0061
-:103040002E0A0044656C6574696F6E206661696C58
-:1030500065642C2046696C653A200046696C6520E1
-:1030600064656C657465643A005072696E742074AE
-:10307000696D653A20000A53746174733A20466999
-:103080006C616D656E7420757365643A20002C2048
-:103090004C6F6E67657374206A6F623A2000546FDC
-:1030A00074616C2074696D653A20005374617473A7
-:1030B0003A20002C204661696C65643A20002C207F
-:1030C00046696E69736865643A20005072696E746F
-:1030D000733A200053746174733A20006F6B006F71
-:1030E000666600F027EB27E427DD27CF274445421B
-:1030F00055473A004D3131322053687574646F770B
-:103100006E004D3131332053004D616B6572626F3B
-:1031100074205265706C696361746F72204F46460B
-:103120002E002F2F004D31343520533C696E6465DD
-:10313000783E206F7574206F662072616E6765201F
-:1031400028302D31290A003F4A206F7574206F66A0
-:103150002072616E67652028302E303120746F2018
-:10316000302E33290A0046523A0020466C6F773AD7
-:103170002000496E76616C696420657874727564AC
-:1031800065720A0064697300656E0043290A006174
-:10319000626C656420286D696E2074656D70200016
-:1031A000436F6C6420657874727564657320617216
-:1031B0006520004F666673657473204170706C699A
-:1031C0006564004572723A20546F6F206661722107
-:1031D00000546F6F206661722066726F6D20726599
-:1031E000666572656E636520706F696E740A00456E
-:1031F0004550524F4D204F4B0A002064726976654E
-:10320000722063757272656E743A20002064726970
-:103210007665722063757272656E743A2000206460
-:1032200072697665722063757272656E743A2000F9
-:10323000206472697665722063757272656E743A85
-:103240002000206472697665722063757272656E03
-:10325000743A200020204D323036205800486F6DDF
-:1032600065206F6666736574004361703A00434F72
-:103270004E4649475F4558504F5254004D454154C2
-:103280005041434B00434F4F4C45525F54454D50C6
-:1032900045524154555245004348414D4245525FC5
-:1032A00054454D50455241545552450042414259B2
-:1032B0005354455050494E470041524353004D4FDF
-:1032C00054494F4E5F4D4F44455300544845524D6D
-:1032D000414C5F50524F54454354494F4E0045585E
-:1032E00054454E4445445F4D323000435553544F8E
-:1032F0004D5F4649524D574152455F55504C4F41E5
-:1033000044004C464E5F5752495445004C4F4E477F
-:103310005F46494C454E414D45004155544F52453D
-:10332000504F52545F53445F5354415455530053CC
-:10333000445F575249544500524550454154004D51
-:10334000554C54495F564F4C554D450053444341ED
-:1033500052440050524F4D50545F535550504F52AD
-:103360005400484F53545F414354494F4E5F434FBD
-:103370004D4D414E445300454D455247454E4359EE
-:103380005F50415253455200434153455F4C4947BA
-:1033900048545F4252494748544E45535300544F96
-:1033A00047474C455F4C494748545300534F465498
-:1033B000574152455F504F574552004255494C4482
-:1033C0005F50455243454E54004C4556454C494E7E
-:1033D000475F44415441005A5F50524F42450052AA
-:1033E000554E4F5554004155544F4C4556454C0091
-:1033F0005052494E545F4A4F420050524F47524537
-:103400005353004155544F5245504F52545F544509
-:103410004D50004155544F5245504F52545F504FFC
-:103420005300564F4C554D45545249430045455065
-:10343000524F4D0042494E4152595F46494C455FFB
-:103440005452414E534645520053455249414C5FF8
-:10345000584F4E5F584F4646004649524D574152CD
-:10346000455F4E414D453A4D61726C696E20322E7A
-:10347000302E392E352028417072203131203230E3
-:1034800032342031373A30343A31392920534F55CC
-:103490005243455F434F44455F55524C3A67697408
-:1034A0006875622E636F6D2F4D61726C696E46692F
-:1034B000726D776172652F4D61726C696E2050522A
-:1034C0004F544F434F4C5F56455253494F4E3A313C
-:1034D0002E30204D414348494E455F545950453A9E
-:1034E0004D616B6572626F74205265706C696361C7
-:1034F000746F722045585452554445525F434F559E
-:103500004E543A3220555549443A636564653261F8
-:1035100032662D343161322D343734382D396231F1
-:10352000322D6335356336326633363766660A00C8
-:1035300020204D3235302043004C434420436F6EF1
-:103540007472617374004D383400446F6E6520707E
-:1035500072696E74696E672066696C650A004D3722
-:1035600037004D3331002569730025696D202569C9
-:1035700073002569682025696D2025697300256918
-:1035800064202569682025696D20256973002569F7
-:103590007920256964202569682025696D202569C1
-:1035A0007300436F6F6C696E672E2E2E0045256386
-:1035B0002025530042656420436F6F6C696E672E4F
-:1035C0002E2E004265642048656174696E672E2E58
-:1035D0002E00206661696C65642120426164206868
-:1035E00065617465722069640A0050494420417520
-:1035F000746F74756E650023646566696E6520443A
-:10360000454641554C545F004B6420004B692000F7
-:103610004B7020002066696E6973686564212050D4
-:10362000757420746865206C617374204B702C2055
-:103630004B6920616E64204B6420636F6E7374610C
-:103640006E74732066726F6D2062656C6F7720698F
-:103650006E746F20436F6E66696775726174696F0F
-:103660006E2E680A00504944204175746F74756E5F
-:103670006500206661696C6564212074696D656F01
-:1036800075740A00504944204175746F74756E65F5
-:1036900000206661696C6564212054656D706572F7
-:1036A000617475726520746F6F20686967680A00BD
-:1036B000504944204175746F74756E6500504944DB
-:1036C000204379636C65730025532025692F256994
-:1036D00000204B643A2000204B693A2000204B70B8
-:1036E0003A200020436C6173736963205049442081
-:1036F0000A002054753A2000204B753A2000206DB6
-:1037000061783A2000206D696E3A200020643A20EA
-:103710000020626961733A200048656174696E67D0
-:103720002E2E2E002073746172740A0050494420BA
-:103730004175746F74756E6500206661696C6564AF
-:10374000212054656D706572617475726520746FA7
-:103750006F20686967680A00504944204175746F9A
-:1037600074756E6500504944204175746F74756EB0
-:1037700065004572723A207574663820666F6E7403
-:10378000206E6F7420696E697469616C697A656412
-:103790002E004572723A207574663820666F6E741A
-:1037A000206E6F7420696E697469616C697A6564F2
-:1037B0002E00667265736800646F696E670020662C
-:1037C000696C653A20004E6F7720002F6175746F29
-:1037D00025632E670000002100240027002A002D09
-:1037E000003000330001010000040107010A01005C
-:1037F000000A0B02090C0D0E08070304010000006B
-:1038000000000000000000000000000000000000B8
-:103810000000000000000000000000121110000075
-:103820000000000000000000000000000000000098
-:1038300000000000006D61726C696E66772E6F7219
-:103840006700322E302E392E35001FFFFFFFFFFF9D
-:10385000FF600000000001FF400000000000FF804A
-:1038600000000000007F83CF00000C303F87FF8006
-:10387000000C301F867980000C000F8C30C7838CC1
-:1038800030E78C30CFC7CC31F38C30DCECEC33B983
-:103890008C30D86C6C33198C30D06C0C33198C3064
-:1038A000D86C0C33198C30DC6C0E3B198C30CF7C0F
-:1038B000079F198C30C77C038F194000000000005F
-:1038C00002600000000000061FFFFFFFFFFFF8700E
-:1038D000012C0190012701B0012201C0011D01F05E
-:1038E0000118011002130130020E0160020901905B
-:1038F000020401C002FF000003FA004003F500804B
-:1039000003F000D003EB002004E6007004E100E0C7
-:1039100004DC004005D700C005D2004006CD00D031
-:1039200006C8008007C3003008BE00F008B900C018
-:1039300009B400B00AAF00B00BAA00D00CA500007B
-:103940000EA000500F9B00C0109600501291000076
-:10395000148C00C0158700B0178200B0197D00D00C
-:103960001B7800001E730040206E0090226900F05A
-:1039700024640040275F0090295A00E02B55001076
-:103980002E500020304B0010324600E033410090B2
-:10399000353C001037370070383200A0392D00B0A8
-:1039A0003A2800A03B2300603C1E00103D19009007
-:1039B0003D1400103E0F00703E0A00C03E0500009E
-:1039C0003F0000403FFBFF803FF6FFC03FF1FF207C
-:1039D00020506C616E6E65724275666665724279E2
-:1039E0007465733A20002046726565204D656D6FE1
-:1039F00072793A200020436F6D70696C65643A20DB
-:103A000041707220313120323032340A00204C6152
-:103A1000737420557064617465643A2032303232B8
-:103A20002D30372D3239207C20417574686F723A01
-:103A3000204D2E2042616B65720A004D61726C69E7
-:103A40006E20322E302E392E350A0020536F6674C8
-:103A5000776172652052657365740A00205761743E
-:103A60006368646F672052657365740A0020427250
-:103A70006F776E206F75742052657365740A00202D
-:103A800045787465726E616C2052657365740A00C6
-:103A9000506F77657255700A0073746172740A0012
-:103AA000473237004D31303031006F6B0065727234
-:103AB0006F722077726974696E6720746F2066690F
-:103AC0006C650A00446F6E6520736176696E6720CD
-:103AD00066696C652E0A004D323900456E64737458
-:103AE0006F707300255320256320256320256320F4
-:103AF000256300205A3A0020593A0020583A0065C0
-:103B00006E6473746F7073206869743A20000000EB
-:103B100020002300260029002C002F003200000185
-:103B20000000030106010901000022002500280011
-:103B30002B002E00310034000201000005010801B5
-:103B40000B01050505050705080808080202020221
-:103B50000A0A080804040404010101010101010129
-:103B60000303030303030303040707070C0C0C0CF4
-:103B70000C0C0C0C020202020606060606060606DD
-:103B80000B0B0B0B0B0B0B0B01021020200808106A
-:103B900020401020408002010201080402010102BD
-:103BA0000408102040808040201008040201800496
-:103BB00002018040201008040201080402010102F1
-:103BC000040810204080010204081020408001FFFA
-:103BD000FF496E736572742066696C616D656E7401
-:103BE00020616E6420707265737320627574746FE7
-:103BF0006E0A00220A00556E6B6E6F776E20636F3F
-:103C00006D6D616E643A202200204500205A00202C
-:103C1000590020204D3932205800537465707320AC
-:103C200070657220756E697400486F6D652025732C
-:103C3000257325732046697273740020453A00206D
-:103C40005A3A0020593A00583A004D616B65726249
-:103C50006F74205265706C696361746F7220526575
-:103C60006164792E005072696E74696E672E2E2E13
-:103C7000005072696E7420506175736564006F6BDB
-:103C80000A00526573656E643A20000056017E0199
-:103C900011241FBECFEFD1E2DEBFCDBF00E00CBFCD
-:103CA00084B780930F1914BE0FB6F894A89580912D
-:103CB0006000886180936000109260000FBE13E086
-:103CC000A0E0B2E0ECE5F4E802E00BBF02C0079030
-:103CD0000D92AA3FB107D9F729E1AAEFB3E001C0DD
-:103CE0001D92AF30B207E1F71EE1C7E4DEE100E06C
-:103CF00006C021970109802FFE010F945C41C63454
-:103D0000D10780E00807A9F70F943E2A0D941C42C2
-:103D10000C9400000F931F93CF93DF93809147097A
-:103D200090E0EC01CC0FDD1FCC0FDD1F8E010A5D92
-:103D30001D4F880F991FFC01EE5DFD4F6081718161
-:103D4000072E000C880B990B0F94B8392AE037ED39
-:103D500043E25CE30F94173ACA54DA4F2881398161
-:103D60004A815B810F94173AF801608371838283E3
-:103D70009383DF91CF911F910F9108950F931F931C
-:103D8000CF93DF938091510990E0EC01CC0FDD1FC0
-:103D9000CC0FDD1F8E010A5D1D4F880F991FFC019E
-:103DA000EE5DFD4F60817181072E000C880B990B31
-:103DB0000F94B8392AE037ED43E25CE30F94173AE9
-:103DC000CA54DA4F288139814A815B810F94173AAE
-:103DD000F8016083718382839383DF91CF911F9178
-:103DE0000F910895CF93DF93EC01CB01BA010F94AB
-:103DF000B8392DEC3CEC4CEC5DE30F94023F0F9492
-:103E00007B3F79836883DF91CF910895E0914709E3
-:103E1000E23030F4F0E0EE52FA4F809136098083C0
-:103E20000895809197178823C1F081508093971748
-:103E3000E4EAF4E1882351F08150990B2BE1289FAB
-:103E4000F001299FF00D1124E757F94E8BE1A9E805
-:103E5000B4E101900D928A95E1F720919717211115
-:103E600005C08091A21780648093A21781E090E042
-:103E7000A0E0B0E0211103C080E090E0DC0180937D
-:103E80003B0990933C09A0933D09B0933E091092E1
-:103E9000A10581E080939F0583E0809375020895DA
-:103EA000CF93DF93EC01CB01BA010F94B8390F9493
-:103EB0007B3F6883DF91CF91089581E080934E0925
-:103EC000089582E080934E0908958F929F92AF9259
-:103ED000BF92CF92DF92EF92FF92CF936B017C0162
-:103EE00020E030E0A9010F94B13987FFA3C06DEB4A
-:103EF00077E386E095EBA70196010F94083E6B01EE
-:103F00007C0120E030E040E251E40F94173A20E0D9
-:103F100030E048EC52E40F94173A4B015C0120E08A
-:103F200030E040E251ECC701B6010F94B1391816E8
-:103F300054F420E030E048EC52E4C701B6010F949D
-:103F4000684087FD8BC020E030E0A901C701B601C1
-:103F50000F94B13987FF73C060E070E080EA90ECA5
-:103F6000A50194010F94083E20E030E040E251E4C6
-:103F70000F94023F0F94743F6B017C01F7FC64C007
-:103F800020E137E240E050E00F94C63DCA01B9019C
-:103F90002AE030E040E050E00F94C63D605D609361
-:103FA000A305C701B60128EE33E040E050E00F94CE
-:103FB000C63D9AE0892E912CA12CB12CCA01B901E1
-:103FC000A50194010F94C63D605D6093A405C701EF
-:103FD000B60124E630E040E050E00F94C63DCA014F
-:103FE000B901A50194010F94C63D605D6093A505DC
-:103FF0008EE28093A605C701B601A50194010F9436
-:10400000C63DC62FCA01B901A50194010F94C63D52
-:10401000605D6093A705C05DC093A80583EA95E045
-:10402000CF91FF90EF90DF90CF90BF90AF909F9097
-:104030008F9008956DEB77E386E095E35CCF60E0C9
-:1040400070E080EA90E48CCFF094E094D094C09437
-:10405000C11CD11CE11CF11C6DE2A1CF20E030E0BD
-:10406000A901C701B6010F94B13987FF6AC060E0AA
-:1040700070E080EA90ECA50194010F94083E20E0E6
-:1040800030E040E251E40F94023F0F94743F4B0143
-:104090005C0120E030E0A901C701B6010F9468403F
-:1040A00087FD0BC020E030E040E251E4C701B601DB
-:1040B0000F94B13960E287FD13C0B7FC47C0C5015A
-:1040C000B40128EE33E040E050E00F94C63DCA0151
-:1040D000B9012AE030E040E050E00F94C63D605D59
-:1040E0006093A405C501B40124E630E040E050E04F
-:1040F0000F94C63D8AE0C82ED12CE12CF12CCA01C8
-:10410000B901A70196010F94C63D605D6093A505B6
-:104110008EE28093A605C501B401A70196010F9414
-:10412000C63DC62FCA01B901A70196010F94C63D2D
-:10413000605D6093A705C05DC093A80584EA95E023
-:104140006FCF60E070E080EA90E495CFB094A094E7
-:1041500090948094811C911CA11CB11C6DE2C0CF75
-:10416000CF93DF93EC01CB01BA010F94B83929EC5E
-:1041700038EC48EC5EE30F94023F20E030E040E092
-:104180005FE30F94083E0F947B3F6883DF91CF91EC
-:104190000895CF93DF93EC01CB01BA010F94B839A6
-:1041A000688379838A839B83DF91CF910895CF932E
-:1041B000DF93EC01CB01BA010F94B839688379839E
-:1041C0008A839B83DF91CF910895E091470986E030
-:1041D000E802F0011124EE50FA4F8091360990E088
-:1041E00095838483089580915109882369F0809193
-:1041F000E4088770873041F482EC9DE09093F308E7
-:104200008093F2081092510908958F929F92AF9275
-:10421000BF92CF92DF92EF92FF92CF936B017C011E
-:1042200020E030E0A9010F94B13987FDC3C06DEBE8
-:1042300077E386E095E3A70196010F94083E6B01B2
-:104240007C0120E030E0A9010F94B13987FFB7C0AD
-:10425000C701B601905820E030E040E251E40F94ED
-:10426000173A20E030E040E251E40F94173A20E0A2
-:1042700030E040EA50E40F94083E20E030E040E2B5
-:1042800051E40F94023F0F94743F6B017C0160E294
-:1042900080EAC81686E8D80681E0E806F1048CF0CA
-:1042A000C701B60120EA36E841E050E00F94C63D70
-:1042B000CA01B9012AE030E040E050E00F94C63D69
-:1042C000605D6093A20560E280E1C81687E2D806CF
-:1042D000E104F1048CF0C701B60120E137E240E0CF
-:1042E00050E00F94C63DCA01B9012AE030E040E039
-:1042F00050E00F94C63D605D6093A30560E288EED8
-:10430000C81683E0D806E104F1048CF0C701B601B9
-:1043100028EE33E040E050E00F94C63DCA01B901F9
-:104320002AE030E040E050E00F94C63D605D6093CD
-:10433000A40560E284E6C816D104E104F1048CF01F
-:10434000C701B60124E630E040E050E00F94C63DDE
-:10435000CA01B9012AE030E040E050E00F94C63DC8
-:10436000605D6093A5058AE0882E912CA12CB12C6C
-:10437000C701B601A50194010F94C63DC62FCA011D
-:10438000B901A50194010F94C63D605D6093A60537
-:104390008EE28093A705C05DC093A80582EA95E0F0
-:1043A000CF91FF90EF90DF90CF90BF90AF909F9014
-:1043B0008F9008956DEB77E386E095EB3CCF20E09E
-:1043C00030E040E251E4C701B60149CF8F929F929D
-:1043D000AF92BF92CF92DF92EF92FF92CF936B0199
-:1043E0007C0120E030E0A9010F94B13987FD93C032
-:1043F0006DEB77E386E095E3A70196010F94083E05
-:104400006B017C0120E030E040E251E40F94173A68
-:1044100020E030E04AE754E40F94173A4B015C0186
-:1044200020E030E0A901C701B6010F94B13920E0C6
-:1044300030E040EA50E487FF04C020E030E040EA8A
-:1044400050ECC501B4010F94083E20E030E040E29A
-:1044500051E40F94023F0F94743F6B017C01C1142F
-:10446000D104E104F10409F45BC0F7FE59C0F094F3
-:10447000E094D094C094C11CD11CE11CF11C8DE2CD
-:104480008093A305C701B60128EE33E040E050E079
-:104490000F94C63D8AE0882E912CA12CB12CCA0124
-:1044A000B901A50194010F94C63D605D6093A40518
-:1044B0008EE28093A505C701B60124E630E040E016
-:1044C00050E00F94C63DCA01B901A50194010F94B3
-:1044D000C63D605D6093A605C701B601A5019401C4
-:1044E0000F94C63DC62FCA01B901A50194010F94CE
-:1044F000C63D605D6093A705C05DC093A80583EAD3
-:1045000095E0CF91FF90EF90DF90CF90BF90AF906C
-:104510009F908F9008956DEB77E386E095EB6CCFDD
-:1045200080E2AECFCF93DF93EC01CB01BA010F94C1
-:10453000B83920E030E040E251E40F94023F688354
-:1045400079838A839B83DF91CF9108950F94B83943
-:1045500020E030E040E251E40F94023F0C9405214A
-:10456000CF93DF93EC01CB01BA010F94B8392AE065
-:1045700037ED43E25DE30F94023F0F947B3F688386
-:1045800079838A839B83DF91CF910895CF93DF93C3
-:10459000EC01CB01BA010F94B8392AE037ED43E2C0
-:1045A0005DE30F94023F688379838A839B83DF9165
-:1045B000CF910895CF93DF93EC01CB01BA010F9413
-:1045C000B839688379838A839B83DF91CF9108957B
-:1045D000CF93DF93EC01CB01BA010F94B83920E0FF
-:1045E00030E048EC52E40F94023F688379838A8379
-:1045F0009B83DF91CF9108950F94B83920E030E08C
-:1046000048EC52E40F94023F0C94651FCF93DF9364
-:10461000EC01CB01BA010F94B8390F94743F798340
-:104620006883DF91CF910895CF93DF93EC01CB01A5
-:10463000BA010F94B83920E030E04AE754E40F940F
-:10464000023F688379838A839B83DF91CF910895AA
-:104650000F94B83920E030E04AE754E40F94023F69
-:104660000C94E621282F8FEF80931B0210924509AE
-:1046700080913B0990913C09A0913D09B0913E0980
-:10468000B7FF08C010923B0910923C0910923D09F7
-:1046900010923E0980919705882331F080913B0963
-:1046A0008093A00510929F0580919E051816FCF43A
-:1046B000082E000C990B821B91092091A005022E57
-:1046C000000C330B2817390794F097FF02C090E0D5
-:1046D00080E08093A005092E000CAA0BBB0B8093F1
-:1046E0003B0990933C09A0933D09B0933E0980910A
-:1046F000A0056623A9F09091A105891714F4809371
-:10470000A1052091A105022E000C330B2C5F3F4F19
-:10471000482F082E000C550B241735071CF4845025
-:104720008093A10508950F931F93522F2091431654
-:10473000309144162817390741F1109201049093E3
-:104740004416809343168B0130E020E000933B0930
-:1047500010933C0920933D0930933E094093A105F5
-:1047600050939E058D5C944621F41092400910925E
-:104770008F0582E08093750281E080939F051092FF
-:10478000940580931B0210923A091F910F9108958E
-:1047900020E040E070E060E08FE095E30C9493232C
-:1047A000CF93C1E0C0934009FC0180819181A28137
-:1047B000B38180931C0290931D02A0931E02B093BC
-:1047C0001F0220E040E070E060E080919C05909145
-:1047D0009D050E949323C0930104CF910895CF9328
-:1047E000DF9300D01F92CDB7DEB78DEC9CECACEC24
-:1047F000BCE389839A83AB83BC83CE0101960E947C
-:10480000D0230F900F900F900F90DF91CF910895CC
-:10481000CF93DF9300D01F92CDB7DEB78DEC9CEC29
-:10482000ACECBDE389839A83AB83BC83CE01019654
-:104830000E94D0230F900F900F900F90DF91CF9197
-:104840000895CF93DF9300D01F92CDB7DEB780E0FD
-:1048500090E0A0E8BFE389839A83AB83BC83CE0159
-:1048600001960E94D0230F900F900F900F90DF9130
-:10487000CF910895CF93DF9300D01F92CDB7DEB7CD
-:1048800080E090E0A0E2B1E489839A83AB83BC83AB
-:10489000CE0101960E94D0230F900F900F900F90A1
-:1048A000DF91CF910895E0918F05E63028F581E002
-:1048B0008E0F80938F0540913B0950913C09609188
-:1048C0003D0970913E092091A10590919E0580912E
-:1048D000400939E0E39FF0011124E65BFA4FA09113
-:1048E0004316B0914416B183A083428353836483FB
-:1048F00075832683978380870895CF93DF93EC0198
-:104900000E94532420E040E070E060E0CE01DF919F
-:10491000CF910C949323FC01A081B1811C92A281C0
-:10492000B3818C918F5F8C930280F381E02D908115
-:104930008CE0989F800D1124E5E4F6E113AE84AF7E
-:104940000895FC0184910895FC01808108950097E9
-:1049500051F0FC0180E09191992331F0907C9038E6
-:10496000D1F38F5FF8CF80E0089590E080E0089564
-:10497000CF92DF92EF92FF92CF93C82F833011F442
-:1049800060932F050F941E1D6B017C0124EA30E714
-:104990004DE75FE360911C0270911D0280911E0241
-:1049A00090911F020F94B13987FD18C08AEF90E0F3
-:1049B000A0E0B0E08C0D9D1DAE1DBF1D80933005A5
-:1049C00090933105A0933205B0933305C093100244
-:1049D000CF91FF90EF90DF90CF90089580E090E02E
-:1049E000DC01E8CFCF92DF92EF92FF920F931F93FB
-:1049F0000F941E1D009106051091070520910805D2
-:104A0000309109056B017C01C01AD10AE20AF30A50
-:104A10009701860137FD11C020910505209520934F
-:104A200005056A547C4F8F4F9F4F60930605709326
-:104A30000705809308059093090581E0909105058D
-:104A4000911101C080E01F910F91FF90EF90DF90D6
-:104A5000CF900895CF92DF92EF92FF920F94B839E2
-:104A60006B017C0120E030E0A9010F94B1392DEBFE
-:104A700037E346E055E387FF04C02DEB37E346E01C
-:104A800055EBC701B6010F94083E6B017C0120E095
-:104A900030E0A9010F94B13920E030E040E05FE35D
-:104AA00087FF04C020E030E040E05FEBC701B601C3
-:104AB0000F94083E0F94743FCB01FF90EF90DF906E
-:104AC000CF900C9492BD0F94B8390F94743FCB01E2
-:104AD0000C9492BD0F94B83929EC38EC48EC5EE3A5
-:104AE0000F94023F20E030E040E05FE30F94083E87
-:104AF0000F947B3F862F0C942ABECF93DF93CDB7C4
-:104B0000DEB720E2488559856F818E810F941E158E
-:104B1000DF91CF910895809147090C949ACC0F941E
-:104B2000B8392DEC3CEC4CEC5DE30F94023F0F9454
-:104B30007B3FCB010C94C7BDAF92BF92CF92DF9267
-:104B4000EF92FF920F931F93CF93DF9361E081E089
-:104B50000E943223C091A10505E00C0FD1E086E24E
-:104B6000E82E8AE0F82E12E01C1B9FE2C92E9AE084
-:104B7000D92EBD2EBC1AAC2EA194C1112EC0DD239E
-:104B8000D9F08091A0051816BCF040913B095091D6
-:104B90003C0960913D0970913E094F5F5F4F6F4F37
-:104BA0007F4F40933B0950933C0960933D097093BC
-:104BB0003E098F5F8093A00580917502882331F0B4
-:104BC00041E06AE37AE08A2D0F949314CF5F0C13CF
-:104BD000D4CF83E080939E051FC0C13041F59091F2
-:104BE000A005913069F0809175028823C9F11F9268
-:104BF000DF92CF92BF9281E0913051F180E028C0E6
-:104C000080913F0910923F09882369F3C0934E09B0
-:104C100080919F05882339F3DF91CF911F910F91E8
-:104C2000FF90EF90DF90CF90BF90AF900895C2308B
-:104C300069F69091A0059230A9F0809175028823C1
-:104C400079F01F92FF92EF921F9381E09230B1F6BC
-:104C50008F930E947D250F900F900F900F900F90D3
-:104C6000D0E0B4CF80913F0910923F09882329F307
-:104C7000C0934E0980919F058823F9F2CDCF809192
-:104C80007502882341F0609190057091910541E093
-:104C900081E00D94931408950D9421120D9419122E
-:104CA0000D9411120D9409120D9401126091F814D3
-:104CB0007091F9148FEB94E10D940F2160913415EC
-:104CC000709135158BEF94E10D940F216091701563
-:104CD0007091711587E395E10D940F216091AC15EA
-:104CE0007091AD1583E795E10D940F216091E81562
-:104CF0007091E9158FEA95E10D940F2160914709B4
-:104D000080913609909137090C94DCCC809151093F
-:104D10000E940CCD882341F020E040E070E060E08C
-:104D200086E996E20C9493230C94C823EF92FF92A9
-:104D30000F931F938BE4E82E8DE0F82E10E000E037
-:104D40002DE43DE048EC53E26DE57DE082E69DE038
-:104D50000F941D241F910F91FF90EF900895EF92F3
-:104D6000FF920F931F938FE3E82E8CE0F82E10E054
-:104D700000E020EC3CE04DE45EE361E47CE086E4AE
-:104D80009CE00F941D241F910F91FF90EF900895C8
-:104D9000EF92FF920F931F938EE4E82E88E0F82E97
-:104DA00010E000E021E638E043E55EE260E578E00F
-:104DB00087E598E00F941D241F910F91FF90EF90CD
-:104DC0000895CF92DF92EF92FF920F931F93CF93AC
-:104DD000DF93CDB7DEB7CDB6DEB68091FC1169E7C3
-:104DE0007FE0882311F06CEF71E1FB01019000205E
-:104DF000E9F7CF01861B970B01962DB73EB7281B0D
-:104E0000390B0FB6F8943EBF0FBE2DBF0DB71EB7BE
-:104E10000F5F1F4F80E2EDB7FEB78183C801019697
-:104E20000F94ED4183EEE82E8CE0F82E25EE3CE069
-:104E300041E05EE261EF7CE088EF9CE00F941D248E
-:104E40000FB6F894DEBE0FBECDBEDF91CF911F919D
-:104E50000F91FF90EF90DF90CF9008950F948E10F8
-:104E600010924F09109274020E9473CD882351F062
-:104E70008091A21782FD06C082E697E09093F30826
-:104E80008093F2080C94A6BB0F94B8390F947B3F23
-:104E9000862F0C9408BECF93DF9300D0CDB7DEB73A
-:104EA0008FEF89838A838B83CE0101960E94F6CA95
-:104EB0000F900F900F90DF91CF910895CF93DF93D4
-:104EC00000D0CDB7DEB78FEF89831A821B82CE0167
-:104ED00001960E94F6CA0F900F900F90DF91CF912C
-:104EE0000895CF93DF9300D0CDB7DEB78FEF8983DE
-:104EF00089E18A831B82CE0101960E94F6CA0F9037
-:104F00000F900F90DF91CF910895CF93DF9300D052
-:104F1000CDB7DEB78FEF89838BE48A831B82CE0106
-:104F200001960E94F6CA0F900F900F90DF91CF91DB
-:104F30000895CF93DF9300D0CDB7DEB719821A82E0
-:104F40008FEF8B83CE0101960E94F6CA0F900F90CF
-:104F50000F90DF91CF910895CF93DF9300D0CDB71D
-:104F6000DEB719828FEF8A838B83CE0101960E9470
-:104F7000F6CA0F900F900F90DF91CF910895CF93C5
-:104F8000DF9300D0CDB7DEB78FEF89831A828B8392
-:104F9000CE0101960E94F6CA0F900F900F90DF91FC
-:104FA000CF910895CF93DF9300D01F92CDB7DEB796
-:104FB0000F947B3F0F94B63969837A838B839C83EC
-:104FC000CE0101960E9414BC0F900F900F900F908D
-:104FD000DF91CF9108950F94B8392AE037ED43E27D
-:104FE0005DE30F94023F0C94D227CF92DF92EF92B1
-:104FF000FF92CF93DF9300D01F92CDB7DEB76B0146
-:105000007C0120E030E0A9010F94B13987FD1BC07D
-:105010006DEB77E386E095E3A70196010F94083ED8
-:1050200069837A838B839C83CE0101960E9414BC92
-:105030000F900F900F900F90DF91CF91FF90EF9016
-:10504000DF90CF9008956DEB77E386E095EBE4CFAA
-:105050000F94B8392AE037ED43E25DE30F94023F45
-:105060000C94F5270F94B8390C94F527CF92DF9262
-:10507000EF92FF926B017C0120E030E0A9010F94D8
-:10508000B13987FD26C06DEB77E386E095E3A70194
-:1050900096010F94083E6B017C0120E030E0A901ED
-:1050A0000F94B13920E030E040E05FE387FF04C0B7
-:1050B00020E030E040E05FEBC701B6010F94083E0E
-:1050C0000F94743FCB01FF90EF90DF90CF900C9442
-:1050D00013BD6DEB77E386E095EBD9CF0F94B8392C
-:1050E0000C9436280C945B8F0C945B8F0C940D8F72
-:1050F0000C940D8F0C940D8F0C940D8FEF92FF92EA
-:105100000F931F93CF93DF93EC018B017A018A8574
-:105110009B858617970731F0888199810F9419250F
-:105120001B870A87B701888199810F948B152E817F
-:105130003F81820F932F911D9F838E8390E080E0AB
-:10514000DF91CF911F910F91FF90EF9008959F9263
-:10515000AF92BF92CF92DF92EF92FF920F931F9385
-:10516000CF93DF93EC018B01942EA52E8A859B852E
-:105170008617970731F0888199810F9419251B872D
-:105180000A8788859985019649F5BC800A818E81B8
-:10519000080FC880D980D6015596ED91FC91C601C3
-:1051A0001995B80EE92CFA2C10E0F70121917F0136
-:1051B000211127C08E819F81810F911D9F838E8336
-:1051C00090E080E0DF91CF911F910F91FF90EF90E1
-:1051D000DF90CF90BF90AF909F9008950E811F8178
-:1051E000692D7A2D888199810F948B15800F912FCD
-:1051F000911D288539852817390738F681E090E018
-:10520000E1CF4B2D602FC6010F947125080F180FA9
-:10521000CCCFDF92EF92FF920F931F93CF93DF9348
-:10522000EC01D62E1CAD0BAD7C0184E0E80EF11C28
-:10523000E98DFA8DC7011995412F480F2D2D602F4B
-:10524000C7010F9471259BAD890F8BAF81E090E072
-:10525000DF91CF911F910F91FF90EF90DF90089514
-:10526000AF92BF92DF92EF92FF920F931F93CF9373
-:10527000DF938C01EB01D42E79018FE0481709F4FC
-:1052800088C0A5E14A17C1F1BAE04B130EC0EC810A
-:10529000FD8130E020E042E061E0C801199542E282
-:1052A00056E0BE01C8010F941C260A80DB81C02D88
-:1052B000F2E3DF1609F4E4C0FD1508F493C085E1BC
-:1052C000D81609F4E2C0A7E1DA1609F4FCC0B4E18B
-:1052D000DB127DC0EE81FF818D8190E0880F991FE8
-:1052E0008E0F9F1F11928E179F07E1F71A828881F8
-:1052F00081508B831C826BC0AA80BB804DE056E03E
-:10530000C8010F941C26F5014481440F406BBE0177
-:10531000C8010F94042641E0BE01C8010F940C2679
-:10532000D50116962D913C911797EC81FD8115962C
-:105330004C9166E0C801199540E0BE01C8010F9488
-:1053400014264DE056E0BE01C8010F941C26F5015D
-:105350004481440F4F5F406BBE01C8010F94042687
-:1053600041E0BE01C8010F940C26D50115964C9161
-:10537000159716962D913C91240F311DEC81FD81DE
-:1053800066E0C801199540E0BE01C8010F941426DB
-:105390008CCF41E0C8010F94142640E0BE01C80143
-:1053A0000F940C2641E8BE01C8010F940426F701B2
-:1053B000408150E05595479555954795BE01C801E8
-:1053C0000F94042640E0BE01C8010F94142681E02A
-:1053D000DF91CF911F910F91FF90EF90DF90BF90E1
-:1053E000AF900895E6E4DE1609F47CC0F7E4DF161A
-:1053F00009F47CC08BE3D812EACFD70111969C91B7
-:10540000119713968C9138E0390F813031F0833049
-:1054100011F0392F02C0392F985021E04B814917E4
-:1054200008F420E041E0391708F040E091E05A81AB
-:10543000351708F490E0322F342B932311F42423F2
-:1054400031F2F701128100E0D12C843048F490E071
-:10545000FC01EC55FD4FD08080569D4FDC010C9136
-:1054600017FF04C0B701CE010F941222F70180810B
-:105470008D0D80838181800F8183110F89F7A7CFE4
-:10548000B701CE010F941222A2CF88819A81980F82
-:105490009A832981921770F59C819F5F9C839B81E1
-:1054A000890F821710F08FEF820F8B83EE81FF81BF
-:1054B0008D8190E0880F991F8E0F9F1F11928E177C
-:1054C0009F07E1F784CFD7011C928A8111968C93B4
-:1054D00011978D81815012968C9312978B81139620
-:1054E0008C9375CF8D81F701808371CF8981D7012E
-:1054F0008C936DCF80E06CCF8F929F92AF92BF92D2
-:10550000CF92DF92EF92FF920F931F93CF93DF938F
-:10551000CDB7DEB760970FB6F894DEBF0FBECDBF34
-:105520008B0140E050E068EC72E449875A876B8752
-:105530007C8740E050E060EA70E44D875E876F87CB
-:10554000788B8130B9F1823009F462C020E030E01C
-:1055500040E050E460917E0270917F028091800271
-:10556000909181020F94083E4B017C0120E030E0D5
-:1055700046E153E40F946840181634F4812C912CC2
-:1055800086E1E82E93E4F92EF801A084B184C28468
-:10559000D3849401A701B501C6010F946840181681
-:1055A00014F054016701C501D60189839A83AB8346
-:1055B000BC8351C0BE01635F7F4FC80108960E9443
-:1055C000C4B488E0F801DE01119601900D928A952D
-:1055D000E1F7AE01475F5F4FBE016B5F7F4FCE01CA
-:1055E00001960E94A2B40E94BBB860960FB6F894D0
-:1055F000DEBF0FBECDBFDF91CF911F910F91FF9006
-:10560000EF90DF90CF90BF90AF909F908F900895D4
-:10561000F801208531854285538560917E02709125
-:105620007F0280918002909181020F94083E6B016D
-:105630007C0120E030E046E153E40F94B13987FD6E
-:1056400006C0C12CD12C26E1E22E23E4F22EC98221
-:10565000DA82EB82FC82BE01635F7F4FCE0101964E
-:10566000AECF0F931F930F941E1D0091CB08109186
-:10567000CC082091CD083091CE08011511052105E7
-:105680003105D9F5209131162223A1F1E0912F1691
-:1056900021502093311621E02E0F20932F163091A8
-:1056A0003216231302C010922F1624E0E29FF0015D
-:1056B0001124ED5CF94E0081118122813381009328
-:1056C000C7081093C8082093C9083093CA08600F10
-:1056D000711F811D911D6093CB087093CC0880933E
-:1056E000CD089093CE088091C9089091CA08892B63
-:1056F00009F0409A1F910F910895601B710B820B66
-:10570000930B97FDF7CF40981092CB081092CC08DE
-:105710001092CD081092CE08EDCF0F931F93CF9328
-:10572000DF938C01EB019091311620913216921388
-:1057300005C00E94312B0E94A591F5CF80913016B3
-:1057400034E0839FF0011124ED5CF94E1183008356
-:10575000D383C2839F5F909331168F5F281739F0F0
-:1057600080933016DF91CF911F910F910895109281
-:105770003016F8CF63E972E084E690E00E948D2B4A
-:1057800070E060E08AE090E00E948D2B6AEB72E0AE
-:1057900084E690E00C948D2B0E947CB90C94BA2B7B
-:1057A00081110C94BA2B68E270E080E991E00C94CE
-:1057B0008D2B0E94648B0C94D02B0E940FC50C94EF
-:1057C000D02B4FE350E0BC0184EF98E00D940242EF
-:1057D0000F931F93CF93DF93CDB7DEB72C970FB600
-:1057E000F894DEBF0FBECDBF80914709282F082E49
-:1057F000000C330B3F938F9385E99BE09F938F932E
-:105800008E010F5F1F4F1F930F930F944839C801EC
-:105810000E94E12B0F900F900F900F900F900F9020
-:105820002C960FB6F894DEBF0FBECDBFDF91CF919F
-:105830001F910F9108950C94E82B0F931F93CF9312
-:10584000DF93CDB7DEB72C970FB6F894DEBF0FBE4F
-:10585000CDBF80914709282F082E000C330B3F93B2
-:105860008F938CE89BE09F938F938E010F5F1F4F68
-:105870001F930F930F944839C8010E94E12B0F909A
-:105880000F900F900F900F900F902C960FB6F894EA
-:10589000DEBF0FBECDBFDF91CF911F910F91089555
-:1058A0000C941D2C0F931F93CF93DF93CDB7DEB7CE
-:1058B0002F970FB6F894DEBF0FBECDBF809147097A
-:1058C000282F082E000C330B3F938F9380E89BE02A
-:1058D0009F938F938E010F5F1F4F1F930F930F9412
-:1058E0004839C8010E94E12B0F900F900F900F9044
-:1058F0000F900F902F960FB6F894DEBF0FBECDBF5E
-:10590000DF91CF911F910F9108950C94522CEF923B
-:10591000FF920F931F93CF93DF9300D000D000D05E
-:105920001F921F92CDB7DEB77C0120919205422FC6
-:10593000022E000C550B80919305833089F1843041
-:1059400041F185E999E05F932F939F938F938E01A7
-:105950000F5F1F4F1F930F930F944839609192056B
-:10596000C7010E94DCCCC8010E94E12B0F900F9070
-:105970000F900F900F900F902B960FB6F894DEBFFC
-:105980000FBECDBFDF91CF911F910F91FF90EF9090
-:10599000089581EA99E027FDD6CF8CE899E0D3CF2E
-:1059A0008AEA99E0D0CFE091470986E0E802F00169
-:1059B0001124EE50FA4F808191810C94872CE09154
-:1059C000470987E1E89FF0011124E15CF94F8085E8
-:1059D00091850C94872C2F923F924F925F926F92F9
-:1059E0007F928F929F92AF92BF92CF92DF92EF926F
-:1059F000FF920F931F93CF93DF9300D000D0CDB7CA
-:105A0000DEB71C017A8369832B833C834D835E83DD
-:105A10002701380181E080939F050E94532483E091
-:105A20008093750230928E0520928D0589819A812E
-:105A300090938C0580938B058B819C81AD81BE8179
-:105A40008093870590938805A0938905B0938A0574
-:105A50004092830550928405609285057092860578
-:105A6000F12CE12CC0923B09D0923C09E0923D0917
-:105A7000F0923E09B0924416A0924316909282058D
-:105A8000809281058C8D8093800526960FB6F894C0
-:105A9000DEBF0FBECDBFDF91CF911F910F91FF9061
-:105AA000EF90DF90CF90BF90AF909F908F907F90BE
-:105AB0006F905F904F903F902F90089520E040E0CE
-:105AC00070E060E08DEC94E60C9493230E9497CDF7
-:105AD0000E94B4850C945E2DCF93DF93782FC62F50
-:105AE000D42F67FD36C086E06802F0011124EE5025
-:105AF000FA4F408151811416150684F4E72FF0E027
-:105B0000EE0FFF1FE054FD4F808191810F974817E2
-:105B100059070CF4CA01672F0E94DCCCD7FF1BC0C9
-:105B2000E0915109E23008F0E0E0F0E0EE52FA4F87
-:105B300086E0C802D0011124AE50BA4F14968D9160
-:105B40009C918F3F910519F010F08FEF90E08083CA
-:105B50001AC047FD18C086E0D802F0011124EE50AB
-:105B6000FA4F82819381181619065CF484369105E8
-:105B700014F084E690E090933706809336060E94F6
-:105B800022C6C7FFCDCFDF91CF910C945E2D0F932E
-:105B90001F93CF93DF93C6E3D9E0E88186E0E80264
-:105BA000F0011124EE50FA4F0081118160E0C8012C
-:105BB0000E94DCCC61E0C8010E94DCCC48816FEF20
-:105BC00080E0DF91CF911F910F910C946C2D0C947C
-:105BD000C72D60913609462F809147090C946C2D92
-:105BE0000C94E92D4FEF60913609809147090C9490
-:105BF0006C2D0C94F22D409136096FEF80E00C94DF
-:105C00006C2D89E79FE00E949B790E945E2D0D9488
-:105C10008E10611160931A02409300048C3008F0DA
-:105C20003AC0E82F880FFF0B8827E65EF14D8F4FB3
-:105C30000D945C414D2E262E312E502E342E372EB3
-:105C40003A2E462E3D2E4B2E402E432E8CE094E4D1
-:105C500021E02093400920E040E070E060E00C94F7
-:105C6000932384E194E4F4CF88E194E4F1CF8CE1D0
-:105C700094E4EECF80E294E4EBCF84E294E4E8CFC6
-:105C800088E294E4E5CF8CE294E4E2CF10924E09EE
-:105C90008CE995E2DDCF0C945E2D88E094E4D8CFBA
-:105CA00080E194E4D5CFCF930E947CB90E94648BAD
-:105CB000C82F882319F080E00E942E8A8C2F0E9422
-:105CC000D02BCF910C945E2D8CE598E09093F30847
-:105CD0008093F2080C945E2DCF93DF93C0918F05D3
-:105CE000CC23B9F0C150C0938F0589E0C89FE00173
-:105CF0001124C65BDA4F6A817B812F814E818881B6
-:105D000099810E949323888580934009DF91CF91E8
-:105D10000895DF91CF910C945E2DEF92FF920F9337
-:105D20001F93CF93DF9361E081E00E943223C09103
-:105D3000A10585E0F82EFC0ED2E0DC1B11E01C1B57
-:105D4000EC2EE194C1112BC00091A0050023A1F01D
-:105D500080917502882349F081E0011180E024E000
-:105D60004AEA5EE06E2D0F941E15CF5FFC12EACF5B
-:105D700083E080939E050CC080913F0910923F09FB
-:105D8000882331F30E946C2E80919F05882301F3B4
-:105D9000DF91CF911F910F91FF90EF900895C13047
-:105DA00001F50091A005013069F08091750288230A
-:105DB000E1F281E0013009F080E023E04BE95EE0B0
-:105DC000612FD1CF80913F0910923F09882369F359
-:105DD00084E49BE40E947D2480919F05882329F31D
-:105DE000D7CFC23011F60091A005023071F080913A
-:105DF0007502882309F4B9CF81E0023009F080E010
-:105E000023E04DE85EE06D2FAECF80913F09109208
-:105E10003F09882361F382E99CE40E947D248091FC
-:105E20009F05882321F3B4CF2F923F924F925F9228
-:105E30006F927F928F929F92AF92BF92CF92DF929A
-:105E4000EF92FF920F931F93CF93DF9300D01F9297
-:105E5000CDB7DEB70091360961E081E00E943223C0
-:105E60002091A1052B8310E0000F111F075E114F39
-:105E7000422E2B5F2983842D81958A8341E0E42E75
-:105E80004EE0F42E51EFC52E5DE0D52E63EEA62E2A
-:105E90006DE0B62E85E0582E541875ED872E7DE006
-:105EA000972E2B81211114C08091A0058C8388230B
-:105EB00009F4E3C080917502882351F081E09C8150
-:105EC000911180E024E04DE05EE06A810F941E15A0
-:105ED000612C21E02C833B8034188B819C818913B9
-:105EE0002DC0E0913609F0E0EE0FFF1FE75EF14FA5
-:105EF000859194916092470990934B0980934A0948
-:105F000010924909109248097090A0052B817216D1
-:105F100009F4D8C080917502882381F01F92FF9206
-:105F2000EF923F9281E09C81791280E08F930E94F2
-:105F30007D250F900F900F900F900F907C80872DF4
-:105F40008F5F2B8182132CC0E0913609F0E0EE0FB9
-:105F5000FF1FE75EF14F85919491609247099093FE
-:105F60004B0980934A0910924909109248092090E0
-:105F7000A005221609F4B5C080917502882381F02E
-:105F80001F92DF92CF923F9281E09B81291280E0A5
-:105F90008F930E947D250F900F900F900F900F9080
-:105FA00063942C812E5F2C83253009F096CF8B8152
-:105FB000853041F5F80185919491109247099093AD
-:105FC0004B0980934A09109249091092480990910F
-:105FD000A0059C83953009F493C0809175028823B5
-:105FE00089F01F92BF92AF925F9281E02C812530A1
-:105FF00009F080E08F930E947D250F900F900F9005
-:106000000F900F9083E0870D9B8189132BC0F801BF
-:10601000859194911092470990934B0980934A0976
-:1060200010924909109248092091A0052C838B8178
-:10603000281709F474C080917502882399F01F9283
-:106040009F928F928B8184198F9381E09C812B8109
-:10605000921380E08F930E947D250F900F900F90F8
-:106060000F900F908B818F5F8B839981891319CF4C
-:1060700084E0870D80939E050EC080913F091092A9
-:106080003F09882309F416CF0E946C2E80919F054A
-:10609000882309F40FCF0F900F900F900F90DF918E
-:1060A000CF911F910F91FF90EF90DF90CF90BF9015
-:1060B000AF909F908F907F906F905F904F903F90A8
-:1060C0002F90089580913F0910923F09882309F489
-:1060D00021CF0E94E92D80919F05882309F41ACFD2
-:1060E000DACF80913F0910923F09882309F444CF09
-:1060F0000E94F22D80919F05882309F43DCFCBCFDC
-:1061000080913F0910923F09882309F466CF0E94CD
-:10611000C72D80919F05882309F45FCFBCCF809164
-:106120003F0910923F09882309F485CF4091360931
-:106130006FEF80E00E946C2D80919F05882309F409
-:106140007ACFA9CF6F927F928F929F92AF92BF9298
-:10615000CF92DF92EF92FF920F931F93CF93DF9333
-:1061600061E081E00E943223C091A1059C2E85E070
-:10617000C82ECC0E9EE9A92E9DE0B92ED6E0DC1BE0
-:10618000EE24E39422E0D22E15E01C1B04E00C1B4D
-:1061900083E0F82EFC1A8D2C8C1A7E2C7C1AC111EF
-:1061A00034C06090A0056620A9F080917502882314
-:1061B00051F0692D619581E0611080E024E040EDAF
-:1061C0005DE00F941E15CF5FCC11E9CF87E080937F
-:1061D0009E050CC080913F0910923F09882329F346
-:1061E0000E946C2E80919F058823F9F2DF91CF9158
-:1061F0001F910F91FF90EF90DF90CF90BF90AF90E5
-:106200009F908F907F906F900895C13001F56090BE
-:10621000A00581E0681661F080917502882399F2EB
-:1062200081E0681280E023E046EC5DE0672DC9CF95
-:1062300080913F0910923F09882371F381E092E336
-:106240000E947D2480919F05882331F3CFCFC230F7
-:1062500009F0B9C09091A005923071F0809175025B
-:10626000882309F4B0CF81E0923009F080E020E289
-:1062700048EB5DE0682DA5CF80913F0910923F0962
-:10628000882361F322EC3DE03093F3082093F20879
-:1062900080919F05882311F3A9CF1092470910928E
-:1062A0004B0910924A09109249091092480990919D
-:1062B000A005933071F080917502882309F483CF93
-:1062C00081E0933009F080E020E24CEA5DE06F2D40
-:1062D00078CF80913F0910923F09882361F323EB27
-:1062E0003DE03093F3082093F20880919F058823C6
-:1062F00011F37CCFE092470910924B0910924A09A2
-:1063000010924909109248099091A005943071F0BB
-:1063100080917502882309F456CF81E0943009F00A
-:1063200080E020E24CEA5DE0602F4BCF80913F0996
-:1063300010923F09882361F327EA3DE03093F30888
-:106340002093F20880919F05882311F34FCFD092BC
-:10635000470910924B0910924A091092490910926C
-:1063600048099091A005953071F0809175028823BD
-:1063700009F429CF81E0953009F080E020E24CEA71
-:106380005DE0612F1ECF80913F0910923F09882365
-:1063900061F322EA3DE03093F3082093F208809104
-:1063A0009F05882311F322CF80913F0910923F0966
-:1063B0008823C9F0B092F308A092F20880919F055B
-:1063C000882389F013CFC33009F467CFC43009F4B0
-:1063D00091CFC53009F4BBCFC63009F0F4CE90910F
-:1063E000A005963009F380917502882309F4EBCE5D
-:1063F00081E0963009F080E020E24DE85DE06D2F0D
-:10640000E0CE8F929F92AF92BF92CF92DF92EF92A7
-:10641000FF920F931F93CF93DF9361E081E00E947F
-:106420003223C091A10585E0B82EBC0ED1E016E064
-:106430001C1B05E00C1B84E0F82EFC1A92E0D92E00
-:1064400083E0E82EEC1AAD2CAC1A9D2E9C1A8C2EF3
-:106450008194C11131C0C090A005CC20A1F08091E1
-:106460007502882349F081E0C11080E024E046E80D
-:106470005DE0682D0F941E15CF5FCB11EACF87E04A
-:1064800080939E050CC080913F0910923F0988239C
-:1064900031F30E946C2E80919F05882301F3DF91D8
-:1064A000CF911F910F91FF90EF90DF90CF90BF9011
-:1064B000AF909F908F900895C13051F51092470989
-:1064C00010924B0910924A091092490910924809FA
-:1064D000C090A00581E0C81661F080917502882304
-:1064E00059F281E0C81280E023E04FE75DE0692DBA
-:1064F000C1CF80913F0910923F09882371F388E052
-:1065000095E30E947D2480919F05882331F3C7CFB6
-:10651000C23009F0B5C0D093470910924B091092D0
-:106520004A091092490910924809C090A00592E0CA
-:10653000C91671F080917502882309F49DCF81E01E
-:1065400092E0C91280E023E04FE75DE06A2D92CF30
-:1065500080913F0910923F09882361F381E095E320
-:106560000E947D2480919F05882321F398CFD092AB
-:10657000470910924B0910924A091092490910924A
-:106580004809C090A00583E0C81671F0809175029B
-:10659000882309F471CF81E093E0C91280E023E001
-:1065A0004FE75DE06E2D66CF80913F0910923F0965
-:1065B000882361F38AEF94E30E947D2480919F05F4
-:1065C000882321F36CCFC090A00584E0C81671F039
-:1065D00080917502882309F44FCF81E094E0C912BD
-:1065E00080E023E041E75DE06F2D44CF80913F09DB
-:1065F00010923F09882361F386E896E20E947D2489
-:1066000080919F05882321F34ACF10924709109269
-:106610004B0910924A091092490910924809C090FA
-:10662000A00585E0C81671F080917502882309F4F1
-:1066300023CF81E095E0C91280E023E04AE65DE0E7
-:10664000602F18CF80913F0910923F09882361F392
-:1066500084EF94E30E947D2480919F05882321F399
-:106660001ECF80913F0910923F09882321F18EEEC1
-:1066700094E30E947D2480919F058823E1F00FCF51
-:10668000C33009F474CFC43009F49DCFC53009F488
-:10669000BCCFC63009F0F0CED093470910924B0919
-:1066A00010924A091092490910924809C090A00519
-:1066B00086E0C816B1F280917502882309F4DCCE19
-:1066C00081E096E0C91280E023E04AE65DE0612FB8
-:1066D000D1CE7F928F929F92AF92BF92CF92DF9254
-:1066E000EF92FF920F931F93CF93DF93F82E842E98
-:1066F00070939D0560939C0561E081E00E943223C8
-:10670000C091A10585E0982E9C0ED1E007E21DE026
-:1067100085E0E82EEC1A84E0D82EDC1A83E0C82E3F
-:10672000CC1A82E0B82EBC1A7D2E7C1AAC2EA19415
-:1067300083E0F81609F44EC0C11196C0F0924709E3
-:1067400010924B0910924A09109249091092480977
-:10675000DD23D9F08091A0051816BCF040913B09CB
-:1067600050913C0960913D0970913E094F5F5F4F28
-:106770006F4F7F4F40933B0950933C0960933D0915
-:1067800070933E098F5F8093A005809175028823E6
-:1067900031F043E06FE77DE08A2D0F94931482E09F
-:1067A000F8125BC0C530A1F41092470910934B0951
-:1067B00000934A091092490910924809D091A00506
-:1067C000D53009F4D9C0809175028111E6C0D0E0BE
-:1067D00086E044C08091820290918302A09184025D
-:1067E000B09185028093980590939905A0939A059E
-:1067F000B0939B05C11138C08092470910924B0994
-:1068000010924A091092490910924809DD23D9F0E3
-:106810008091A0051816BCF040913B0950913C09AD
-:1068200060913D0970913E094F5F5F4F6F4F7F4F01
-:1068300040933B0950933C0960933D0970933E0996
-:106840008F5F8093A00580917502882331F043E02B
-:106850006AE67DE08A2D0F94931485E0CF5F9C1249
-:1068600067CF80939E0522C0C13071F5D091A005FD
-:10687000D13081F080917502882351F081E0D130D0
-:1068800009F080E024E046EC5DE0672D0F941E15D2
-:10689000D0E085CF80913F0910923F09882351F3C2
-:1068A0000E946C2E80919F05882321F3DF91CF9168
-:1068B0001F910F91FF90EF90DF90CF90BF90AF901E
-:1068C0009F908F907F900895C23009F071C0D09151
-:1068D000A005D23069F0809175028823C9F281E069
-:1068E000D23009F080E023E041E45DE06B2DCECFB3
-:1068F00080913F0910923F09882369F38AE394E26B
-:106900000E947D2480919F05882329F3CFCF809119
-:106910003F0910923F09882309F452C081E294E2B2
-:106920000E947D2480919F05882309F449C0BECF31
-:10693000C43009F034CFD091A005D43071F08091EB
-:106940007502882309F4A4CF81E0D43009F080E0F7
-:1069500023E04DE25DE06D2D99CF80913F091092CB
-:106960003F09882361F388E094E20E947D248091AE
-:106970009F05882321F39ACF80913F0910923F0908
-:10698000882309F420CF8FEE93E20E947D2480912A
-:106990009F05882309F417CF89CF81E0D53009F00E
-:1069A00080E023E04EE15DE06E2D0F941E150FCFC9
-:1069B000C33009F0BDCFD091A005D33009F4A7CFE3
-:1069C00080917502882309F463CF81E0D33009F008
-:1069D00080E023E048E35DE06C2D58CF41E06CE4BB
-:1069E00075E483E00C94693340E06FE475E483E080
-:1069F0000C9469334091510963E377E482E00C948D
-:106A000069334091510966E377E481E00C9469337E
-:106A10004091510969E377E480E00C946933409137
-:106A2000510962E575E483E00C9469332F923F923B
-:106A30004F925F926F927F928F929F92AF92BF928E
-:106A4000CF92DF92EF92FF920F931F93CF93DF933A
-:106A500000D000D01F92CDB7DEB70E9462CD482E85
-:106A600061E081E00E9432237090A105572C25E05F
-:106A7000270D298382E087198A8381E087198B8318
-:106A8000872D81958C8309ED1BE29EE3E92E99E029
-:106A9000F92E2CECC22E2BE2D22E3FE1A32E39E0B0
-:106AA000B32E4DED842E4BE2942E711000C19091C7
-:106AB000A0059D83992309F4D3C080917502882392
-:106AC00009F4A3C181E02D81211180E024E047E891
-:106AD00059E06C810F941E1582E041103AC183E0A9
-:106AE0008D838D81871115C09091A0059E83981785
-:106AF00009F437C180917502882359F0672D651913
-:106B000081E02E81271180E023E04CE559E00F94CD
-:106B10001E156D8063941F821E82272C2518761007
-:106B200025C0EE81FF81EE0FFF1FE75EF14F8591DB
-:106B300094912E812093470990934B0980934A09A1
-:106B400010924909109248093090A005371409F4B1
-:106B50001EC180917502882349F081E0361080E0E3
-:106B600023E04DE459E0622D0F941E15362C662467
-:106B70006394630C8E819F81019709F003C16710B4
-:106B80001EC08091A005871509F412C1809175027D
-:106B90008823A9F01F930F93FF92EF92872D8519F9
-:106BA0008F9381E09091A005971180E08F930E94D0
-:106BB0007D250F900F900F900F900F900F9082E017
-:106BC000830D411046C0871120C08091A005871514
-:106BD00009F4FDC0809175028823B9F09F928F92CD
-:106BE00080E399E09F938F93872D85198F9381E0A0
-:106BF0009091A005971180E08F930E947D250F90C2
-:106C00000F900F900F900F900F9083E0830D8711DE
-:106C10001EC08091A005871509F4E8C08091750217
-:106C20008823A9F0DF92CF92BF92AF92872D85196A
-:106C30008F9381E09091A005971180E08F930E943F
-:106C40007D250F900F900F900F900F900F9084E084
-:106C5000830D73949981971128CF80939E050EC060
-:106C600080913F0910923F09882309F426CF0E94A2
-:106C70006C2E80919F05882309F41FCF27960FB6AD
-:106C8000F894DEBF0FBECDBFDF91CF911F910F9162
-:106C9000FF90EF90DF90CF90BF90AF909F908F903C
-:106CA0007F906F905F904F903F902F90089591E06C
-:106CB000791214C02091A0052D83213001F180911B
-:106CC0007502882359F081E09D81913009F080E0C0
-:106CD00023E045E759E06B810F941E1541103BC03E
-:106CE00022E072123BC08091A0058D838230B1F00A
-:106CF00080917502811121C093E09D830ACF80911C
-:106D00003F0910923F098823D1F287EB93E50E9457
-:106D10007D2480919F05882391F2B0CF80913F0917
-:106D200010923F09882321F386E096E50E947D2496
-:106D300080919F058823E1F2A1CF81E02D8122304F
-:106D400009F080E023E048E659E06A810F941E15BF
-:106D500083E08D83DECE92E09D83C3CE23E02D833E
-:106D6000C0CE80913F0910923F09882309F4C2CE1A
-:106D70008FEE97E50E947D2480919F05882309F47A
-:106D8000B9CE7CCF81E090E09F838E83C8CE809186
-:106D90003F0910923F09882309F4DBCE8EEB98E57A
-:106DA0000E947D2480919F05882309F4D2CE66CF6E
-:106DB00080913F0910923F09882309F4E7CE0E9491
-:106DC000D92B80919F05882309F4E0CE57CF80917D
-:106DD0003F0910923F09882309F4FCCE0E94DD2B65
-:106DE00080919F05882309F4F5CE48CF80913F0913
-:106DF00010923F09882309F411CF0E94CC2B809177
-:106E00009F05882309F40ACF39CF442009F474CFB1
-:106E100022E02D837ECE2F923F924F925F926F920F
-:106E20007F928F929F92AF92BF92CF92DF92EF921A
-:106E3000FF920F931F93CF93DF9300D0CDB7DEB7B0
-:106E40000E9481CD8111EEC082E0809336090E94BC
-:106E500062CD682E61E081E00E9432232091A1057D
-:106E60002A83722E2B5F2983572C51949FE0C92EC1
-:106E70009AE0D92E28E0A22E2AE0B22E3FEF832EF0
-:106E800039E0932E8A81811114C09091A0059B83D3
-:106E9000992309F4C9C080917502882351F081E0DB
-:106EA000EB81E11180E024E041E25AE0652D0F948E
-:106EB0001E150FE316E07801F1E0FB834A804A9447
-:106EC0003A803718F701808591850E94F7CC882396
-:106ED00009F4E2C0FA812B81F2131DC040924709E8
-:106EE00010924B0910924A091092490910924809D0
-:106EF0002090A0052F1609F4BEC08091750288234A
-:106F000051F081E09A81291280E023E04FE05AE0BD
-:106F1000632D0F941E158B818F5F97E1E90EF11C95
-:106F2000EB81E23009F0A4C0611073C08B838FE362
-:106F3000E82E86E0F82E412C3A803718F70180853C
-:106F400091850E94F7CC882309F4F1C0FA812B8146
-:106F5000F2131DC04092470910924B0910924A0942
-:106F600010924909109248092090A0052F1609F4A3
-:106F7000CDC080917502882351F081E09A81291259
-:106F800080E023E048E05AE0632D0F941E158B81CA
-:106F90008F5F97E1E90EF11CEB81EF5FEB83F1E08E
-:106FA0004F12B1C08B83F12CEA80E718F80180857D
-:106FB00091850E94F7CC882309F404C1FA812B81C2
-:106FC000F2131DC0F092470910924B0910924A0922
-:106FD00010924909109248094090A0054F1609F4F3
-:106FE000E0C080917502882351F081E09A814912B6
-:106FF00080E023E04FEF59E06E2D0F941E158B813A
-:107000008F5F095E1F4F9B819F5F9B83E1E0FE12B4
-:10701000C5C0FA81FF5FFA8329812F1333CF809394
-:107020009E0510C081E011CF80913F0910923F0969
-:10703000882309F430CF0E946C2E80919F0588230D
-:1070400009F429CF0F900F900F90DF91CF911F91EE
-:107050000F91FF90EF90DF90CF90BF90AF909F90F7
-:107060008F907F906F905F904F903F902F900895FA
-:1070700022E02B8327CF80913F0910923F0988237C
-:1070800009F43BCF82EB93E50E947D2480919F051C
-:10709000882309F432CFD6CFEA81FB81EF133BCFAF
-:1070A0004092470910924B0910924A0910924909DF
-:1070B000109248098091A0058E17C1F08091750249
-:1070C000882309F428CF1F92DF92CF923F9281E06C
-:1070D0009091A0052A81921380E08F930E947D25D4
-:1070E0000F900F900F900F900F9015CF80913F0948
-:1070F00010923F09882311F30E94522C80919F0522
-:107100008823E1F29FCF4424439418CF80913F0914
-:1071100010923F09882309F42CCF8DEA93E50E9451
-:107120007D2480919F05882309F423CF8BCFEA81AA
-:10713000FB81EF132CCF4092470910924B0910921C
-:107140004A0910924909109248098091A0058E17AA
-:10715000C1F080917502882309F419CF1F92BF9264
-:10716000AF923F9281E09091A0052A81921380E036
-:107170008F930E947D250F900F900F900F900F908E
-:1071800006CF80913F0910923F09882311F30E9496
-:107190001D2C80919F058823E1F254CFFF24F394A6
-:1071A00005CF80913F0910923F09882309F419CF38
-:1071B00088EA93E50E947D2480919F05882309F445
-:1071C00010CF40CFEA81FB81EF1319CFF09247092E
-:1071D00010924B0910924A091092490910924809DD
-:1071E0008091A0058E17C1F080917502882309F463
-:1071F00006CF1F929F928F92EF9281E09091A0050F
-:107200002A81921380E08F930E947D250F900F902A
-:107210000F900F900F90F3CE80913F0910923F098D
-:10722000882311F30E94E82B80919F058823E1F2C7
-:1072300009CF8F929F92AF92BF92CF92DF92EF923F
-:10724000FF920F931F93CF93DF9361E081E00E9441
-:107250003223C091A1051C2F85E0882E8C0ED1E031
-:107260009FEBC92E97E2D92E09E00C1B88E0F82E7F
-:10727000FC1A87E0E82EEC1A86E0B82EBC1A85E0EE
-:10728000A82EAC1A84E0982E9C1AC1112FC0DD23C1
-:10729000D9F08091A0051816BCF040913B0950919F
-:1072A0003C0960913D0970913E094F5F5F4F6F4F00
-:1072B0007F4F40933B0950933C0960933D09709385
-:1072C0003E098F5F8093A00580917502882339F075
-:1072D00043E066E17CE0812F81950F949314CF5FAA
-:1072E0008C12D3CF8AE080939E0523C0C13071F504
-:1072F000D091A005D13089F080917502882359F092
-:1073000061E0611B81E0D13009F080E024E04CEFC6
-:107310005BE00F941E15D0E0E2CF80913F09109200
-:107320003F09882349F30E946C2E80919F05882392
-:1073300019F3DF91CF911F910F91FF90EF90DF90A4
-:10734000CF90BF90AF909F908F900895C23009F07A
-:1073500029C18091A0058230B9F0809175028823FF
-:10736000D1F28BE497E29F938F9389EC9BE09F93FC
-:107370008F9382E0811B8F9381E09091A0059230E2
-:1073800009F42EC180E02CC180913F0910923F0981
-:10739000882319F30E944B2780919F058823E9F2E7
-:1073A000C8CF80913F0910923F09882309F402C198
-:1073B0000E945E2780919F05882309F4FBC0B9CF06
-:1073C000C43029F58091A0058430A1F08091750228
-:1073D000882309F4A0CF81E797E29F938F938EEBE8
-:1073E0009BE09F938F939F9281E09091A0059430B2
-:1073F00049F6F6C080913F0910923F09882331F386
-:107400000E94712780919F05882301F392CFC53098
-:1074100031F58091A0058530A9F08091750288230F
-:1074200009F479CF85E897E29F938F9387EB9BE0F0
-:107430009F938F93AF9281E09091A005953009F0D2
-:10744000A1CFCEC080913F0910923F09882329F334
-:107450000E94852780919F058823F9F26ACFC63064
-:1074600051F58091A0058630A9F08091750288239E
-:1074700009F451CF85EF9BEC9F938F9381EB9BE0B9
-:107480009F938F93BF9281E09091A005963009F071
-:1074900079CFA6C080913F0910923F09882329F334
-:1074A00085EF9BEC892B11F00E94F5CB80919F0515
-:1074B0008823D9F23ECFC73031F58091A0058730BF
-:1074C000A9F080917502882309F425CF89E997E214
-:1074D0009F938F938CEA9BE09F938F93EF9281E031
-:1074E0009091A005973009F04DCF7AC080913F0967
-:1074F00010923F09882329F30E94992780919F05C4
-:107500008823F9F216CFC83031F58091A005883074
-:10751000A9F080917502882309F4FDCE8CEA97E2E8
-:107520009F938F9385EA9BE09F938F93FF9281E0D7
-:107530009091A005983009F025CF52C080913F0965
-:1075400010923F09882329F30E94AC2780919F0560
-:107550008823F9F2EECEC93009F0C1CE8091A005A2
-:10756000893099F080917502882309F4D4CEDF9296
-:10757000CF928EE99BE09F938F930F9381E0909140
-:10758000A005993009F0FECE2BC080913F091092E2
-:107590003F09882339F30E94BF2780919F058823E4
-:1075A00009F3C7CEC33009F00BCF8091A00583301B
-:1075B00009F4F7CE80917502882309F4ACCE8EE5EC
-:1075C00097E29F938F9385EC9BE09F938F9383E04B
-:1075D000811B8F9381E09091A005933009F0D2CE6A
-:1075E0008F930E947D250F900F900F900F900F901A
-:1075F0000F9091CECF93DF93CDB7DEB78E81282F3A
-:10760000082E000C330B909144129217130609F0C8
-:107610008CF4809344129E01275F3F4F4F81588521
-:107620006AE270E089E192E10F94783910921812C1
-:1076300010921712DF91CF9108950F931F93CF935C
-:10764000DF938C016F3F19F41092441260E0209197
-:107650004412862F062E000C990B2817190609F0E4
-:1076600014F560934412C8010F94FE38800F911FE7
-:10767000EC01C01BD10BCB32D1053CF00197FC01D2
-:107680002491207C2038D1F3F3CFDD27AE01B8015F
-:1076900089E192E10F941F39C75EDD4E1882109286
-:1076A000181210921712DF91CF911F910F91089528
-:1076B000CF9380914205811109C087E597E09093AF
-:1076C00091058093900581E0809342050E945324A8
-:1076D00020E040E070E060E08FE396E20E949323B8
-:1076E000C1E0C09340090E947F8F109240090E9420
-:1076F0006C2EC093400960E081E79CE30E941D3B33
-:107700004091510961E080E00E94092E8DE497E0EC
-:107710009093F3088093F208CF9108952F923F92AF
-:107720004F925F926F927F928F929F92AF92BF9291
-:10773000CF92DF92EF92FF920F931F93CF93DF933D
-:1077400000D000D01F92CDB7DEB780919A06412CB1
-:10775000811103C00E944FCD482E8091A21784FB57
-:10776000222720F92983312C84FF03C00E9473CD86
-:10777000382E61E081E00E9432238091A1058E8342
-:10778000582E8B5F8A8380E00EEA1CE091E0792E10
-:107790007518952D91959B8398E5E92E9BE3F92E1D
-:1077A0002BECC22E2CE0D22E92E095199C8393E014
-:1077B00095199D833BE4A32E3CE0B32E42E7842E33
-:1077C0004CE0942E9A812E81921709F463C22223F1
-:1077D00039F1411079C00E9481CD882309F4B2C1EA
-:1077E0008E81813009F47DC192E09F832E818F814B
-:1077F000281398C12090A005221609F4A5C18091F4
-:107800007502882309F48EC16E81651981E09E811D
-:10781000291280E023E047EA5CE00F941E1582C144
-:107820006090A005662059F180917502882389F245
-:1078300081E0611080E024E047ED5CE06B810F9413
-:107840001E15442041F224E02F838F819E818913ED
-:107850005EC02090A005281609F487C180917502AA
-:10786000882309F454C06E81651981E02E812212AB
-:1078700080E023E04BE95CE00F941E1548C0809146
-:107880003F0910923F09882379F20E946C2E809163
-:107890009F05882349F227960FB6F894DEBF0FBEE6
-:1078A000CDBFDF91CF911F910F91FF90EF90DF90AF
-:1078B000CF90BF90AF909F908F907F906F905F9090
-:1078C0004F903F902F9008958E81813009F4A8C089
-:1078D000823009F4D0C09E81933009F0B4CF8091FA
-:1078E000A0058F83833009F4EBC080917502882353
-:1078F00009F4A9CF81E09F81933009F080E023E073
-:107900004BEB5CE06D810F941E1524E02F838F817B
-:107910008F5F9E81891314C02090A005291609F459
-:1079200035C180917502882359F06E81651981E017
-:107930002E81221280E023E04DE85CE00F941E15BA
-:107940008F818E5F9E81891314C02090A005291617
-:1079500009F42DC180917502882359F06E81651953
-:1079600081E02E81221280E023E04DE75CE00F945D
-:107970001E158F818D5F9E81891314C02090A005F4
-:10798000291609F425C180917502882359F06E816A
-:10799000651981E02E81221280E023E046E75CE059
-:1079A0000F941E158F818C5F9981992309F444C12E
-:1079B000311032C02E81821314C09091A00592170D
-:1079C00009F417C180917502882359F06E816519F9
-:1079D00081E02E81921380E020E245E65CE00F9486
-:1079E0001E158F818B5F9E81891314C02090A00586
-:1079F000291609F410C180917502882359F06E810F
-:107A0000651981E02E81221280E023E044E55CE0EC
-:107A10000F941E158F818A5F9E819F5F9E83D2CEB9
-:107A20008091A0058130D1F080917502882309F4FE
-:107A30000ACFFF92EF92DF92CF927F9281E09091F6
-:107A4000A005913009F080E08F930E947D250F9072
-:107A50000F900F900F900F900F90F5CE80913F09EF
-:107A600010923F09882301F30E94583B80919F05A3
-:107A70008823D1F210CF2091A0052F83223089F0E6
-:107A800080917502882309F4DECE81E09F819230D7
-:107A900009F080E023E040EC5CE06C810F941E155F
-:107AA000D2CE80913F0910923F09882349F38FEA93
-:107AB00096E20E947D2480919F05882309F3EBCEF6
-:107AC00080913F0910923F09882309F40ECF8AEF75
-:107AD00098E40E947D2480919F05882309F405CFB6
-:107AE000DACE8091A005813001F180917502882362
-:107AF00009F47ACE8EE297E29F938F931F930F93B0
-:107B00007F9281E09091A005913009F080E08F9301
-:107B10000E947D250F900F900F900F900F900F9067
-:107B200082E08F832F812F5F8FCE80913F0910924B
-:107B30003F098823D1F20E942E2780919F05882338
-:107B4000A1F2A9CE91E051CE80913F0910923F0958
-:107B5000882309F454CE82EA90E30E947D24809128
-:107B60009F05882309F44BCE96CE80913F09109251
-:107B70003F09882309F472CE8FE19EE40E947D24A0
-:107B800080919F05882309F469CE85CE80913F09B5
-:107B900010923F09882309F4C4CE86E195E30E9440
-:107BA0007D2480919F05882309F4BBCE74CE8091FB
-:107BB0003F0910923F09882309F4CCCE8BE097E36C
-:107BC0000E947D2480919F05882309F4C3CE63CE53
-:107BD00080913F0910923F09882309F4D4CE84E2B2
-:107BE00091E50E947D2480919F05882309F4CBCEE6
-:107BF00052CE80913F0910923F09882309F4E2CECA
-:107C00009092F3088092F20880919F05882309F4EE
-:107C1000D9CE8E8101CF80913F0910923F098823F0
-:107C200009F4E9CE83EF9DE60E947D2480919F05B3
-:107C3000882309F4E0CEEDCF9E8189131DC0909179
-:107C4000A0052E819217D9F0809175028823A1F0AA
-:107C50001F921F92BF92AF928E8185198F9381E000
-:107C60002E81921380E08F930E947D250F900F90BC
-:107C70000F900F900F900F908F818B5FCDCE8091E2
-:107C80003F0910923F098823F9F280919F058823CC
-:107C9000D9F2BFCF80939E05FECD10924F0910926E
-:107CA00074020E9473CD9091A21780FB97F9909374
-:107CB000A21760E08FE397E00E941D3B0C945E2DBD
-:107CC0000F931F930F941E1D00913E0510913F05C9
-:107CD0002091400530914105601B710B820B930B85
-:107CE00097FD0BC086B18295817091E08927369B04
-:107CF0008260329B84608093FF038091FF038170D8
-:107D00009091FF0391FD826090913D05981749F095
-:107D1000813029F148F0823089F08330A1F08093DE
-:107D20003D051F910F910895913089F09230B9F778
-:107D300090913C0520911B02921B0EC0992339F0B3
-:107D40009330B1F3ECCF913099F3923041F79091A9
-:107D50003C0520911B02920F90933C05E0CF9923A4
-:107D600039F39330E1F6F3CFFC0180E0309749F02E
-:107D70009491992331F0907C903809F08F5F31967F
-:107D8000F7CF0895AF92BF92CF92DF92EF92FF921A
-:107D90000F931F93CF93DF93EC015B018A01FB01EB
-:107DA000199587FD16C0C82ED12CF12CE12C2196F7
-:107DB000F801C082D182E282F382CE01DF91CF91BD
-:107DC0001F910F91FF90EF90DF90CF90BF90AF90F9
-:107DD0000895982F907E903CA9F48F7190E0B0E0C8
-:107DE000A0E06C017D0156E0CC0CDD1CEE1CFF1CFC
-:107DF0005A95D1F7CE010196F50119958F73C82ACE
-:107E00002296D6CF982F907F903E11F58F7090E0FC
-:107E1000B0E0A0E06C017D0136E0CC0CDD1CEE1C76
-:107E2000FF1C3A95D1F7CE010196F50119958F7394
-:107E3000C82A46E0CC0CDD1CEE1CFF1C4A95D1F78D
-:107E4000CE010296F50119958F73C82A2396B0CFFB
-:107E5000982F987F903F79F5877090E0B0E0A0E090
-:107E60006C017D0186E0CC0CDD1CEE1CFF1C8A95AC
-:107E7000D1F7CE010196F50119958F73C82A96E0C6
-:107E8000CC0CDD1CEE1CFF1C9A95D1F7CE0102969E
-:107E9000F50119958F73C82A26E0CC0CDD1CEE1C69
-:107EA000FF1C2A95D1F7CE010396F50119958F7322
-:107EB000C82A24967DCF982F907C903841F4807CFE
-:107EC000803869F42196CE01F5011995F8CF8E7F9F
-:107ED0008D3F28F02196CE01F5011995F8CFC12CE0
-:107EE000D12C760165CF9CE0899F802D112491E0F3
-:107EF000980F909304052CE0280F2093460930E05A
-:107F00002E5F3F4F40917D164217130619F014F073
-:107F100080E0089520917F169217D0F7662341F0F4
-:107F20008E5F0F947423809146098E5F0F947423A3
-:107F30008091460990917D16891750F320917F1604
-:107F400090910405291720F31092801680938116D2
-:107F500081E0089520910205022E000C330B821758
-:107F6000130641F0809302056CEE7EE089E496E111
-:107F70000D94192508951F93CF93DF931F92CDB7CA
-:107F8000DEB710912E0280918216811105C081E02A
-:107F9000809382160F94492260914B1670914C1673
-:107FA00019839E012F5F3F4F4FE089E496E10F94C4
-:107FB00045220F90DF91CF911F910895CF9380912B
-:107FC000030581114FC010928016109281161092F5
-:107FD000821610924E1610924D1610925016109254
-:107FE0004F161092521681E08093511682E28093D0
-:107FF00053161092581610925716ECE6F6E12AE73F
-:1080000036E18FEF81932E173F07E1F7C1E0C09370
-:10801000691622E132E030935F1620935E16C0931A
-:108020006016109261161092621690E49093631697
-:10803000109264162AE231E030937B1620937A1670
-:1080400028E032E030934C1620934B1691E1909348
-:108050006E1690E190936D1680936C160F944922E2
-:10806000C0930305099A11988FE19EE40197F1F7F7
-:1080700000C00000119A8FE19EE40197F1F700C063
-:108080000000C1E0C09382160F9449228FEF8093C5
-:108090002E020E94BB3FC093FA038DE096E09093BE
-:1080A000880F8093870F10928A0F1092890FCF91BB
-:1080B00008950E94DE3F3C98449A3E98469A3A982A
-:1080C000429A0E94603E10923C050D948E10EF92F1
-:1080D000FF920F931F93CF93DF93CDB7DEB72C970B
-:1080E0000FB6F894DEBF0FBECDBFFC016081718179
-:1080F000828193816F3F71058105910509F0C0F47C
-:1081000085E496E10E940929E0914D16F0914E1602
-:108110003196849190E02C960FB6F894DEBF0FBE96
-:10812000CDBFDF91CF911F910F91FF90EF900895F8
-:1081300010918016009181162091FA0321110FC031
-:108140004DEE55E0602F812F0F94DD2590E080E00B
-:10815000180F10938016009381169927DCCFE090BA
-:108160004D16F0904E1629E436E13A832983212FEB
-:1081700030E03C832B83202F30E03E832D83188614
-:108180001F822FEF3FEF3A8729871C861B8627EA3D
-:1081900038E2AE014F5F5F4FBF01C7010F948B0FF5
-:1081A000B70189E496E10F9419258F819885D0CF86
-:1081B0004F925F926F927F928F929F92BF92CF92D7
-:1081C000DF92EF92FF920F931F93CF93DF9300D034
-:1081D00000D01F921F92CDB7DEB77C016A01490122
-:1081E000FB0190818CE0989F800D1124982FF7015E
-:1081F0002081822F880F820F880F809380169093A2
-:1082000081164115510579F1FA82E9827C836B83ED
-:10821000011122C0AE014B5F5F4FB401C6010E9445
-:10822000C23E6C018D819E81AF81B885892B8A2BDE
-:108230008B2BC9F0CE0105960E946740F701808123
-:108240008F5F8083853130F3CE0101960E948B24AD
-:10825000E1CFB12C860129C08A01B12C26C0452866
-:1082600046284728B1F728960FB6F894DEBF0FBE10
-:10827000CDBFDF91CF911F910F91FF90EF90DF90D5
-:10828000CF90BF909F908F907F906F905F904F9016
-:108290000895B39407C0B1102EC001151105C9F29D
-:1082A0000F5F1F4F01151105A9F2AE014B5F5F4F24
-:1082B000B401C6010E94C23E6C014D805E806F8099
-:1082C00078844114510461047104A9F0F0E24F165E
-:1082D000510461047104F9F2D301C2018D97A1091F
-:1082E000B1090297A105B10530F04BE244165104E3
-:1082F0006104710471F6F7018081482F4B0D5527F9
-:10830000551F4631510534F0853020F0CE010196DD
-:108310000E948B2481E0411451046104710409F42A
-:1083200080E0B80EF70180818B0D8083BB2009F4BB
-:1083300096CFBA94AE014B5F5F4FB401C8010E9463
-:10834000C23E8C01CE0105960E946740EFCF6F922E
-:108350007F928F929F92AF92BF92CF92DF92EF92D5
-:10836000FF920F931F93CF93DF9300D000D01F9203
-:108370001F92CDB7DEB77C01162F5A014901862F17
-:10838000660F990B9C0124563D4F690186E0682ECB
-:10839000712C10160CF046C0AE014B5F5F4F61EAC6
-:1083A00074E2C7010E94C23E7C018D819E81AF8133
-:1083B000B8850097A105B105A9F18D339105A105F7
-:1083C000B10509F480C08E379105A105B10509F406
-:1083D0007AC08A329105A105B105D1F517FF12C007
-:1083E00083E596E01E3F11F08FE496E036E003024D
-:1083F000B00111240E947FC766E070E00F944841ED
-:10840000061B9BC085E490E0A0E0B0E089839A83DE
-:10841000AB83BC83CE0101960E946740015009F0F6
-:1084200054C000E0802F28960FB6F894DEBF0FBE30
-:10843000CDBFDF91CF911F910F91FF90EF90DF9013
-:10844000CF90BF90AF909F908F907F906F90089546
-:1084500084329105A105B105D1F48114910461F034
-:10846000E6E00E02B0011124C4010E947FC7B301EF
-:108470000F944841061B8DCFA114B104F1F0F6E032
-:108480000F02B0011124C5010E94DDC7F0CF803476
-:108490009105A105B10589F40150F6018081082EEE
-:1084A000000C990BAA0BBB0B89839A83AB83BC830B
-:1084B000CE0101960E9467406CCFCE0105960E94C6
-:1084C0006740015066CF17FD8BCF81E04D815E8103
-:1084D0006F8178854D3351056105710509F480E0A0
-:1084E000810F8A30CCF001506AE00F942641D92EDA
-:1084F000082E000C990BC096092E000CAA0BBB0B82
-:1085000089839A83AB83BC83CE0101960E94674026
-:10851000002309F486CF8D2D082E000C990BC096F0
-:10852000092E000CAA0BBB0B89839A83AB83BC83F7
-:10853000CE0101960E9467400150002309F471CFDB
-:1085400086E00802B0011124C7010E947FC766E0DF
-:1085500070E00F944841061B65CF6FEF7FEF0C94DE
-:10856000DDC72F923F924F925F926F927F928F92D0
-:108570009F92AF92BF92CF92DF92EF92FF920F93B2
-:108580001F93CF93DF9300D000D01F92CDB7DEB7FB
-:108590004C010F94FE3801966401C80ED91EC60125
-:1085A0000F94FE3801961601280E391ED601EC9064
-:1085B00001E0E11001C000E0F101408077247394F4
-:1085C000411001C0712C11E0E11010E060E085E085
-:1085D0000E9432235090A105F52C9EE0A92EB12CCB
-:1085E000F52DF195FF83812F90E00196080F192F4B
-:1085F000111D9801270D311D3E832D83F1101BC0E5
-:1086000080917502882391F0E0911A02E2506AE4A9
-:108610007AE0E33038F4F0E0EE0FFF1FE654FD4F50
-:108620006081718143E08F810F94931401E0E11028
-:1086300011C002E00FC002E0E11001E00F110AC01A
-:1086400080917502882331F041E0B401802F8519B3
-:108650000F94931411E0100F7F2C7518EE2069F021
-:108660001F1109C080917502882329F041E0B601ED
-:10867000872D0F94931412E0100F442061F01F1106
-:1086800009C080917502882329F041E0B101872D4E
-:108690000F9493141F5F4D815E81433051050CF49C
-:1086A0001F5F1F1190C080917502882309F488C054
-:1086B00042E067E57AE0872D0F9493149EEF9A0DC0
-:1086C00080917D168A151B0411F00CF079C0209161
-:1086D0007F1683EF8A0D821708F072C000910004A4
-:1086E00025E430E040E050E029833A834B835C830B
-:1086F0003EE33093801690938116CE0101960E943E
-:10870000674081E3800F082E000C990BAA0BBB0B6E
-:1087100089839A83AB83BC83CE0101960E94674014
-:1087200080E290E0A0E0B0E089839A83AB83BC83D1
-:10873000CE0101960E946740602E712C97E1969DB4
-:10874000F001979DF00D1124E15CF94F20E030E03D
-:1087500040E05FE364817581868197810F94083ED4
-:108760000F94743FCB010E9492BD0E94AD422FE254
-:1087700030E040E050E029833A834B835C83CE01B4
-:1087800001960E9467400E94F22481110BC035E0DF
-:10879000369DF001379DF00D1124E25EF94F848182
-:1087A00081110EC047E1469DF001479DF00D112457
-:1087B000E15CF94F808591850E9492BD0E94AD4297
-:1087C00052E0509375028CE0A80EB11CF3949AE429
-:1087D000A916B10409F012CF1F5F10939E052796CA
-:1087E0000FB6F894DEBF0FBECDBFDF91CF911F91C2
-:1087F0000F91FF90EF90DF90CF90BF90AF909F9040
-:108800008F907F906F905F904F903F902F90089542
-:1088100082E69AE00C94B1428FE69AE00C94B14261
-:1088200081E99AE00C94B1428CE29BE00C94B14255
-:1088300087EE9AE00C94B14284E19BE00C94B14243
-:1088400087E69BE00C94B1428AE49BE00C94B14231
-:108850008AEC9AE00C94B1428BEA9AE00C94B14213
-:108860008F929F92AF92BF92CF92DF92EF92FF9240
-:108870000F931F93CF93DF9300D01F92CDB7DEB736
-:108880004C016B0181E080931B02C4010E94B43E45
-:10889000A82EC6010E94A724B12C23E130E0790163
-:1088A000E81AF10815E2EA14FB040CF41FE1812F29
-:1088B00090E09C012E5F3F4F40917D1642171306BA
-:1088C00011F00CF04AC0099720917F16281719065D
-:1088D0000CF443C020914A0930914B09409148095A
-:1088E00050914909609147091092801610938116A2
-:1088F00005E1C4010E94A74101E0C114D104E1F0E7
-:108900008AE390E0A0E0B0E089839A83AB83BC83E4
-:10891000CE0101960E946740EA14FB0404F5145F3F
-:1089200080917D16181740F020917F16412F4950F5
-:10893000550B24171506ACF40F900F900F900F9065
-:10894000DF91CF911F910F91FF90EF90DF90CF902B
-:10895000BF90AF909F908F90089500E0CECF0023FE
-:1089600059F380E290E0A0E0B0E089839A83AB8382
-:10897000BC838E2D880FE80EEE0CE09280161093CB
-:108980008116CE0101960E946740C6010E94AD4249
-:10899000D3CF1F93CF93DF9300D01F92CDB7DEB715
-:1089A000182F80913F0910923F09882361F010929F
-:1089B00040090E946C2E0F900F900F900F90DF9146
-:1089C000CF911F91089560913B0970913C0980916E
-:1089D0003D0990913E09611571058105910569F187
-:1089E0000F94B83920911C0230911D0240911E0253
-:1089F00050911F020F94173A209182023091830206
-:108A000040918402509185020F94083E6093820247
-:108A1000709383028093840290938502612F83E098
-:108A20000E94B82481E08093750210923B09109255
-:108A30003C0910923D0910923E09809175028823ED
-:108A400009F4B9CF1093470910924B0910924A09C3
-:108A50001092490910924809209198053091990582
-:108A600040919A0550919B0560918202709183021A
-:108A700080918402909185020F94073E69837A83E6
-:108A80008B839C83CE0101960E9497BCBC018AE631
-:108A90009DE00E9430448FCF81E00C94C94480E077
-:108AA0000C94C944809151090C94C9443F924F924F
-:108AB0005F926F927F928F929F92AF92BF92CF926E
-:108AC000DF92EF92FF920F931F93CF93DF9300D02B
-:108AD00000D000D01F92CDB7DEB7382E80913F096D
-:108AE00010923F098823E1F0109240090E946C2EF9
-:108AF0002A960FB6F894DEBF0FBECDBFDF91CF919F
-:108B00001F910F91FF90EF90DF90CF90BF90AF90AB
-:108B10009F908F907F906F905F904F903F900895BF
-:108B200060913B0970913C0980913D0990913E090B
-:108B3000611571058105910509F459C0209137022D
-:108B4000222309F4B9C0209138022111B5C021E0D7
-:108B5000321609F48FC0A2E03A1609F49CC0C09006
-:108B60003902D0903A02E0903B02F0903C024090F3
-:108B700045025090460260904702709048020F9460
-:108B8000B83920911C0230911D0240911E02509173
-:108B90001F020F94173A6F83788789879A87B4E00A
-:108BA0003B9E80011124F801EA58FD4FFE83ED83BE
-:108BB00020813181428153810F94083E4B015C0139
-:108BC000A3019201C701B6010F94B139811183C08D
-:108BD000F801EA58FD4F80829182A282B3826091AF
-:108BE0005109832D0E94B82481E080937502109270
-:108BF0003B0910923C0910923D0910923E09809168
-:108C00007502882309F474CF30924709F4E03F9E3F
-:108C1000C0011124FC01EA58FD4F8359904FDC013B
-:108C20002D913D914D915C91608171818281938103
-:108C30000F94083E6B017C01C982DA82EB82FC82D0
-:108C40002DEC3CEC4CEC5DE360911C0270911D023C
-:108C500080911E0290911F020F94684087FD66C0AC
-:108C6000CE0101960E9497BCBC018FE79DE00E9457
-:108C700030443ECFC0903D02D0903E02E0903F0293
-:108C8000F09040024090490250904A0260904B029E
-:108C900070904C0274CFC0904102D0904202E0909C
-:108CA0004302F090440240904D0250904E0260907A
-:108CB0004F027090500263CF412C20E5522E23ECDE
-:108CC000622E27E4722EC12C30E5D32E33ECE32E36
-:108CD00037ECF32E54CF20E030E0A9016F81788586
-:108CE00089859A850F94B13987FF10C0A701960135
-:108CF000C501B4010F94B13987FF6ACFAD81BE8140
-:108D0000CD92DD92ED92FC92139769CFA30192016F
-:108D1000C501B4010F94684018160CF059CFED81CD
-:108D2000FE81408251826282738259CF20E030E01E
-:108D300040E251E4C701B6010F94173A20E030E059
-:108D40004AE754E40F94173A4B015C0120E030E00D
-:108D5000A901C701B6010F94B13920E030E040EA23
-:108D600050E487FF04C020E030E040EA50ECC50149
-:108D7000B4010F94083E20E030E040E251E40F944B
-:108D8000023F0F94743F6B017C01F7FC62C020EA44
-:108D900036E841E050E00F94C63DCA01B9012AE02F
-:108DA00030E040E050E00F94C63D605D6093A20566
-:108DB000C701B60120E137E240E050E00F94C63D24
-:108DC0008AE0882E912CA12CB12CCA01B901A501F1
-:108DD00094010F94C63D605D6093A305C701B60181
-:108DE00028EE33E040E050E00F94C63DCA01B901DF
-:108DF000A50194010F94C63D605D6093A4058EE2C9
-:108E00008093A505C701B60124E630E040E050E0BC
-:108E10000F94C63DCA01B901A50194010F94C63D46
-:108E2000605D6093A605C701B601A50194010F948A
-:108E3000C63D162FCA01B901A50194010F94C63D84
-:108E4000605D6093A705105D1093A80582EA95E028
-:108E50000BCFF094E094D094C094C11CD11CE11CC1
-:108E6000F11C6DE2A3CF82E00C94564581E00C9496
-:108E7000564580E00C9456450F931F93CF93DF9394
-:108E8000FC01EB0180913B0990913C09A0913D09C7
-:108E9000B0913E09B7FF08C010923B0910923C09FF
-:108EA00010923D0910923E098091830590918405AE
-:108EB000A0918505B091860540913B0950913C09F0
-:108EC00060913D0970913E0984179507A607B70781
-:108ED00044F480933B0990933C09A0933D09B093DF
-:108EE0003E09809175028823E1F060913B09709101
-:108EF0003C0980913D0990913E09009187051091B0
-:108F000088052091890530918A05600F711F821FA5
-:108F1000931F1995BC0180918D0590918E050E943B
-:108F2000304480913F09811108C0809180058823D9
-:108F3000D1F1809175028823B1F180918B059091D8
-:108F40008C050097B1F040913B0950913C0960912C
-:108F50003D0970913E090091870510918805209187
-:108F6000890530918A05400F511F621F731FFE0152
-:108F70001995E0918105F0918205309741F080913B
-:108F80008005811103C080913F098111199580915D
-:108F90003F0910923F09882331F0DF91CF911F9153
-:108FA0000F910C946C2EDF91CF911F910F9108952A
-:108FB00062EF7EE18FE895E20C943C4760E57FE14B
-:108FC00084E497E20C943C4760EB70E28AE695E219
-:108FD0000C943C4767ED70E28AE295E20C943C47C2
-:108FE00068EE72E28CEF92E20C943C4762E972E226
-:108FF00086EA92E20C943C4760EB72E28BEE97E2D9
-:109000000C943C4766EC72E288E298E20C943C4790
-:109010006AED72E282E398E20C943C4766E073E208
-:1090200083E695E20C943C4769EC70E28EE698E2A8
-:109030000C943C4764E173E288E293E20C943C4771
-:109040004F925F926F927F928F929F92AF92BF9258
-:10905000CF92DF92EF92FF920F931F93CF93DF9304
-:10906000CDB7DEB72C970FB6F894DEBF0FBECDBFDD
-:10907000982F862F5A017901D02E692F0E94733FB5
-:10908000882309F49CC01091FA03C701002309F456
-:1090900041C00E94B43EC82E80904D1690904E164E
-:1090A000111155C01FEF03E10C1920914A093091AD
-:1090B0004B09409148095091490960914709C50100
-:1090C0000E94A741CC2009F47AC0B6E08B9F5001E2
-:1090D00011248AE390E0A0E0B0E089839A83AB8317
-:1090E000BC83CE0101960E94674080E2482E512C3D
-:1090F000612C712C57E0A516B10408F445C04982D3
-:109100005A826B827C82CE0101960E946740A81A27
-:10911000B90AF0CF0E94A724C82E80904D169090D7
-:109120004E16112309F4BECFFE0133968AE0DF010B
-:109130001D928A95E9F789E496E19A8389830EE77F
-:1091400018E29E012F5F3F4F44EA54E212C0FE0135
-:1091500033968AE0DF011D928A95E9F789E496E16A
-:109160009A8389830EE718E29E012F5F3F4F41EA01
-:1091700054E2B701C4010F945010B40189E496E1A0
-:109180000F9419251F818FCF40914609212F30E080
-:10919000A6E0CA9EC00111242E5F3F4F2817390751
-:1091A0000CF49C0180E8821B80938016409381160A
-:1091B000DD20E1F06FEF7FEFC7010E947FC72C96A3
-:1091C0000FB6F894DEBF0FBECDBFDF91CF911F91D8
-:1091D0000F91FF90EF90DF90CF90BF90AF909F9056
-:1091E0008F907F906F905F904F900895C7010E947D
-:1091F000AD42E5CF6F927F928F929F92AF92BF92D6
-:10920000CF92DF92EF92FF920F931F93CF93DF9352
-:1092100061E081E00E943223C091A105DC2FF5E0DE
-:10922000AF2EAC0E81E0D82EDC1A9C2E9194A7E1D3
-:10923000BA2E8824839484E0C82ECC1AC11142C16E
-:109240001091A005112309F420C180917502882393
-:1092500049F081E0111180E024E047EE5EE0692DE5
-:109260000F941E15F12CE12CE2E07E2E6C2E6D1A6F
-:10927000C7112BC0E092470910924B0910924A097E
-:1092800010924909109248098091A0058C1709F4A1
-:1092900051C1809175028823C1F011E08091A00531
-:1092A000871110E0BE9CF001BF9CF00D1124E15C21
-:1092B000F94F808591850E9492BD00E09C0148EDA8
-:1092C0005EE0662D812F0E942048872D9FEFE91ACE
-:1092D000F90A63E0762E833059F6C430E9F48091C0
-:1092E000A005843009F44DC1809175028823A1F056
-:1092F00011E08091A005843009F010E080913606DD
-:10930000909137060E9492BD00E09C0144ED5EE022
-:109310006C2D812F0E9420488091D20580933609C0
-:10932000C53031F51092470910924B0910924A0945
-:1093300010924909109248098091A005853009F4DE
-:109340003BC180917502882399F0FC2EFD1A11E033
-:109350008091A0058C1310E0809136090E942ABEEE
-:1093600000E09C0148EC5EE06F2D812F0E942048B8
-:109370008091D30580933609C63031F58092470934
-:1093800010924B0910924A0910924909109248090B
-:109390008091A005863009F424C18091750288234C
-:1093A00099F0FC2EFD1A11E08091A0058C1310E0BD
-:1093B000809136090E942ABE00E09C0148EC5EE0E4
-:1093C0006F2D812F0E942048C73019F58091A0058C
-:1093D000873009F41BC1809175028823D1F0FC2EDF
-:1093E000FD1A11E08091A0058C1310E0E091510965
-:1093F000F0E0EE0FFF1FEE5DFD4F808191810E9436
-:1094000092BD00E09C0143EC5EE06F2D812F0E9435
-:10941000204838E0732EF12CE12C6C2E6D1AC71108
-:1094200029C0E092470910924B0910924A09109204
-:109430004909109248098091A0058C1709F408C1C8
-:10944000809175028823B1F011E08091A005871109
-:1094500010E0F701EE0FFF1FEE5DFD4F808191815F
-:109460000E9492BD00E09C014CEB5EE0662D812FD6
-:109470000E9420487394EA94EF2809F0E5C0CF5F7A
-:10948000AC12DCCE70929E050EC080913F09109206
-:109490003F09882309F4D9CE0E946C2E80919F0544
-:1094A000882309F4D2CEDF91CF911F910F91FF90C5
-:1094B000EF90DF90CF90BF90AF909F908F907F9074
-:1094C0006F900895C13009F0CDCE8091A005813014
-:1094D000D1F080917502882309F4C4CE11E0809107
-:1094E000A005813009F010E08091200290912102C6
-:1094F0000E9492BD00E09C0141EE5EE06D2D812F47
-:109500000E942048AFCE80913F0910923F098823E6
-:1095100001F310E000E027EE33E04AE050E060E2C3
-:1095200072E081EE9EE00F94CC1680919F05882317
-:1095300081F2B9CF80913F0910923F09882309F445
-:10954000A8CE0F94BF15F701EE0FFF1FE054FD4F9B
-:10955000208131812F503109BE9CB001BF9C700D1C
-:109560001124695B794F0BE815E250E040E088ED8B
-:109570009EE00F94CC1680919F05882309F489CE34
-:1095800092CF80913F0910923F09882309F4ACCE15
-:109590000F94BF1502E216EC24E630E050E040E004
-:1095A00066E376E084ED9EE00F94CC1680919F05F3
-:1095B000882309F499CE77CF80913F0910923F0913
-:1095C000882309F4BECE0F94BF1566E07FE188ECD6
-:1095D0009EE00F94A41780919F05882309F4B1CED3
-:1095E00062CF80913F0910923F09882309F4D5CEBC
-:1095F0000F94BF1566E07FE188EC9EE00F94A417FE
-:1096000080919F05882309F4C8CE4DCF80913F09F2
-:1096100010923F09882309F4DECE6091510970E071
-:10962000660F771F6E5D7D4F0EEB1EE127EE33E078
-:109630004AE050E083EC9EE00F94CC1680919F05A9
-:10964000882309F4C8CE2FCFEE24E394F12CE7CE83
-:1096500080913F0910923F09882309F4F1CEB701A8
-:10966000660F771F6E5D7D4F0AE81EE127EE33E03F
-:109670004AE050E08CEB9EE00F94CC1680919F0561
-:10968000882309F4DDCE0FCFAF92BF92CF92DF9245
-:10969000EF92FF920F931F93CF93DF9361E081E0EE
-:1096A0000E943223C091A10585E0B82EBC0ED5E002
-:1096B000DC1B14E01C1B83E0F82EFC1A82E0E82E71
-:1096C000EC1A81E0D82EDC1AAC2EA194C1112FC067
-:1096D000C090A005CC20A1F080917502882349F0AC
-:1096E00081E0C11080E024E04DE65EE06A2D0F9439
-:1096F0001E15CF5FCB11EACF86E080939E050CC08C
-:1097000080913F0910923F09882331F30E946C2E0B
-:1097100080919F05882301F3DF91CF911F910F91D5
-:10972000FF90EF90DF90CF90BF90AF900895C13041
-:1097300089F58091A0058130D1F080917502882350
-:10974000C1F2CC24C3948091A005813009F0C12CD2
-:109750008091E8159091E9150E94C7BD00E09C0139
-:1097600048E55EE06D2D8C2D0E942048C2CF80918F
-:109770003F0910923F09882301F346E756E268EE5D
-:1097800075E188E59EE00F94141880919F05882369
-:10979000A1F2C2CFC23009F0A0C08091A0058230F2
-:1097A000C1F080917502882309F4A3CFCC24C3941F
-:1097B0008091A005823009F0C12C8091AC15909168
-:1097C000AD150E94C7BD00E09C0146E55EE06E2D30
-:1097D000CACF80913F0910923F09882311F34EE6CA
-:1097E00056E26CEA75E186E59EE00F9414188091CC
-:1097F0009F058823B1F290CF8091A0058330C1F0FE
-:1098000080917502882309F474CFCC24C39480918D
-:10981000A005833009F0C12C8091701590917115CD
-:109820000E94C7BD00E09C0144E55EE06F2D9BCF28
-:1098300080913F0910923F09882311F346E656E2D2
-:1098400060E775E184E59EE00F94141880919F0510
-:109850008823B1F261CF8091A0058430C1F080915E
-:109860007502882309F445CFCC24C3948091A005C8
-:10987000843009F0C12C80913415909135150E94E7
-:10988000C7BD00E09C0141E55EE0612F6CCF809197
-:109890003F0910923F09882311F34EE556E264E335
-:1098A00075E181E59EE00F94141880919F0588234F
-:1098B000B1F232CF80913F0910923F098823D1F055
-:1098C00046E556E268EF74E18EE49EE00F941418CA
-:1098D00080919F05882371F01FCFC33009F48CCF8E
-:1098E000C43009F4B8CFC53009F003CF8091A0058A
-:1098F000853001F380917502882309F4FACECC24D7
-:10990000C3948091A005853009F0C12C8091F81492
-:109910009091F9140E94C7BD00E09C014EE45EE006
-:109920006D2F21CF7F928F929F92AF92BF92CF9255
-:10993000DF92EF92FF920F931F93CF93DF9361E03B
-:1099400081E00E943223C091A1059C2E85E0A82EC3
-:10995000AC0ED1E011E093E0F92E86E0E82EEC1A8F
-:1099600085E0D82EDC1A84E0C82ECC1A8F2C8C1AF5
-:1099700082E0B82EBC1A7D2E7C1AC1112FC0DD23C7
-:10998000D9F08091A0051816BCF040913B09509188
-:109990003C0960913D0970913E094F5F5F4F6F4FE9
-:1099A0007F4F40933B0950933C0960933D0970936E
-:1099B0003E098F5F8093A00580917502882339F05E
-:1099C00041E069E77EE0892D81950F949314CF5F84
-:1099D000AC12D3CF87E080939E0522C0C13071F5D1
-:1099E000D091A005D13081F080917502882351F08B
-:1099F00081E0D13009F080E024E04DE65EE0672DA3
-:109A00000F941E15D0E0E3CF80913F0910923F09DB
-:109A1000882351F30E946C2E80919F05882321F3A7
-:109A2000DF91CF911F910F91FF90EF90DF90CF903A
-:109A3000BF90AF909F908F907F900895C23009F0B3
-:109A4000DEC08091A0058230C9F080917502882324
-:109A5000C9F281E09091A005923009F080E09091E8
-:109A6000EA1528E63EE0911102C024E63EE001E05E
-:109A70004BE65EE06B2D0E942048C4CF80913F09E9
-:109A800010923F09882309F38091EA15812780937A
-:109A9000EA15F09275020E94542680919F05882352
-:109AA000A1F2BECF80913F0910923F09882309F4AB
-:109AB000AEC08091AE1581278093AE15C09375021C
-:109AC0000E94522680919F05882309F4A0C0A8CF48
-:109AD000C43081F58091A0058430C1F08091750279
-:109AE000882309F48FCF81E09091A005943009F08C
-:109AF00080E09091721528E63EE0911102C024E6C4
-:109B00003EE001E040E65EE06C2DB5CF80913F097C
-:109B100010923F09882311F3809172158127809359
-:109B20007215F09275020E94502680919F0588233D
-:109B3000A9F276CFC53081F58091A0058530C1F0BE
-:109B400080917502882309F45DCF81E09091A00592
-:109B5000953009F080E09091361528E63EE09111AD
-:109B600002C024E63EE001E04DE55EE06D2D83CFCE
-:109B700080913F0910923F09882311F38091361597
-:109B8000812780933615F09275020E944E268091AF
-:109B90009F058823A9F244CFC63009F018CF8091E1
-:109BA000A0058630C1F080917502882309F42ACF80
-:109BB00081E09091A005963009F080E09091FA1430
-:109BC00028E63EE0911102C024E63EE001E04AE5CD
-:109BD0005EE06E2D50CF80913F0910923F0988239F
-:109BE00011F38091FA1481278093FA14F092750290
-:109BF0000E944C2680919F058823A9F211CFC33083
-:109C000009F066CF8091A005833009F44BCF809195
-:109C10007502882309F4F6CE81E09091A005933077
-:109C200009F080E09091AE1528E63EE0911102C067
-:109C300024E63EE001E042E65EE0682D1CCF2F9274
-:109C40003F924F925F926F927F928F929F92AF92CC
-:109C5000BF92CF92DF92EF92FF920F931F93CF9319
-:109C6000DF9300D0CDB7DEB78091470690914806CC
-:109C700077247394892B39F480915E0690915F0666
-:109C8000892B09F4712C61E081E00E9432238091DC
-:109C9000A1058A838B83982F9B5F9983382E3194FB
-:109CA00083E0582EEA815E1A55E0452E66E6A62E20
-:109CB0006DE2B62E7DE1872E7EE0972EFA81F111BE
-:109CC00012C01091A005112309F43DC180917502C5
-:109CD000882349F081E0111180E024E049E45EE04E
-:109CE000632D0F941E154FE3C42E46E0D42EF12CA5
-:109CF000E12C662463942A808B81281AF6018085E2
-:109D000091859093370980933609FA81F61126C020
-:109D1000E092470910924B0910924A0910924909A2
-:109D2000109248098091A0058F1709F430C18091E5
-:109D30007502882399F011E08091A005861110E04A
-:109D400080913609909137090E9492BD00E09C01F4
-:109D500040E45EE0622D812F0E942048862D9FEF17
-:109D6000E91AF90AE7E1CE0ED11C22E0622E823018
-:109D700029F6FA81F330E9F48091A005833009F4E3
-:109D800028C1809175028823A1F011E08091A0057F
-:109D9000833009F010E080913606909137060E94DA
-:109DA00092BD00E09C014CE35EE0652D812F0E9496
-:109DB00020488091D205809336098A81843041F50C
-:109DC0001092470910924B0910924A0910924909C2
-:109DD000109248098091A005843009F415C1809142
-:109DE00075028823A9F0FA809B81F91A11E080910D
-:109DF000A005EA818E1310E0809136090E942ABEE8
-:109E000000E09C0140E35EE06F2D812F0E9420481E
-:109E10008091D30580933609FA814F1229C081E0E1
-:109E20008093470910924B0910924A0910924909F0
-:109E3000109248098091A005841509F4FAC0809118
-:109E400075028823A9F0FA809B81F91A11E08091AC
-:109E5000A005EA818E1310E0809136090E942ABE87
-:109E600000E09C0140E35EE06F2D812F0E942048BE
-:109E700096E0F92E09E11EE0E12CDA80FB81DF1A81
-:109E8000E09236098A818F1120C0F8018591949162
-:109E90001092470990934B0980934A0910924909FF
-:109EA00010924809C090A0059A81C91609F4D9C03A
-:109EB00080917502882349F081E0CF1080E023E093
-:109EC00046E25EE06D2D0F941E15CF2CF3940E5FCD
-:109ED0001F4FE1E0EE12C2C0809136069091370626
-:109EE000892B11F4772031F1FA81FF121EC01091F5
-:109EF000A0051F1709F4C6C0809175028823A9F038
-:109F0000BF92AF929F928F928A819B81891B8F9380
-:109F100081E0EA811E1380E08F930E947D250F90DF
-:109F20000F900F900F900F900F9082E0F82EFC0C86
-:109F300077247394FA81FF5FFA838981F813BECE88
-:109F4000F0929E050EC080913F0910923F09882330
-:109F500009F4BCCE0E946C2E80919F05882309F4E1
-:109F6000B5CE0F900F900F90DF91CF911F910F9171
-:109F7000FF90EF90DF90CF90BF90AF909F908F9029
-:109F80007F906F905F904F903F902F9008958091B9
-:109F90003F0910923F09882309F4C9CE0F94BF15D9
-:109FA000F701EE0FFF1FE054FD4F208131812F504C
-:109FB00031090EE716E250E040E066E379E080E424
-:109FC0009EE00F94CC1680919F05882309F4AFCEB4
-:109FD000C8CF80913F0910923F09882309F4D1CE60
-:109FE0000F94BF1502E216EC24E630E050E040E0AA
-:109FF00066E376E08CE39EE00F94CC1680919F059B
-:10A00000882309F4BECEADCF80913F0910923F095D
-:10A01000882309F4E4CE0F94BF1566E07FE180E366
-:10A020009EE00F94A41780919F05882309F4D7CE52
-:10A0300098CF80913F0910923F09882309F4FFCE01
-:10A040000F94BF1566E07FE180E39EE00F94A417B4
-:10A0500080919F05882309F4F2CE83CFEE24E39408
-:10A060000FCF80913F0910923F09882309F420CF38
-:10A0700084E19FE20E947D2480919F05882309F45A
-:10A0800017CF6FCF80913F0910923F09882309F4C1
-:10A0900033CF0E94662D80919F05882309F42CCF31
-:10A0A00060CFCF92DF92EF92FF920F931F93CF93E7
-:10A0B000DF9361E081E00E943223C091A10585E039
-:10A0C000D82EDC0ED3E0DC1B12E01C1B81E0F82E46
-:10A0D000FC1ACC2EC194C1112DC0E090A005EE2039
-:10A0E000A1F080917502882349F081E0E11080E0C1
-:10A0F00024E04CEF5BE06C2D0F941E15CF5FCD116B
-:10A10000EACF84E080939E050CC080913F091092B5
-:10A110003F09882331F30E946C2E80919F0588238C
-:10A1200001F3DF91CF911F910F91FF90EF90DF909E
-:10A13000CF900895C13069F58091A0058130C1F0BC
-:10A14000809175028823D1F2EE24E3948091A005DA
-:10A15000813009F0E12C809183160E9408BE00E056
-:10A160009C014EEE5BE06F2D8E2D0E942048C6CFE5
-:10A1700080913F0910923F09882311F363E876E14B
-:10A180008EEE9BE00F94E81780919F058823C1F223
-:10A19000C8CFC230E1F58091A0058230B1F0809146
-:10A1A0007502882309F4AACFEE24E3948091A005D8
-:10A1B000823009F0E12C809184160E9408BE00E0F4
-:10A1C0009C014EED5BE0612FCFCF80913F09109253
-:10A1D0003F09882321F364E876E18EED9BE00F943C
-:10A1E000E81780919F058823D1F29BCF80913F098A
-:10A1F00010923F09882391F065E876E18FEC9BE0AF
-:10A200000F94E81780919F05882341F08ACFC330CF
-:10A2100009F074CF8091A005833041F380917502DD
-:10A22000882309F46BCFEE24E3948091A00583305A
-:10A2300009F0E12C809185160E9408BE00E09C0187
-:10A240004FEC5BE06D2F90CF5F926F927F928F9279
-:10A250009F92AF92BF92CF92DF92EF92FF920F93B5
-:10A260001F93CF93DF9361E081E00E943223C0917E
-:10A27000A1056C2E85E0782E7C0ED4E0DC1B93E0EB
-:10A28000892E582C5C1A21EFE22E2BECF22E34E2B0
-:10A29000C32E3CE0D32E12E01C1B4CE0A42E4CEC51
-:10A2A000B42E81E0982E9C1AC11113C00091A00514
-:10A2B000002329F180917502882309F4DFC0662DFF
-:10A2C000619581E0011180E024E04AE35CE00F94B5
-:10A2D0001E1580910B0680933609C13009F055C0D8
-:10A2E0009091A005913039F180917502811138C0AB
-:10A2F000CF5F7C12D9CF85E080939E050CC0809102
-:10A300003F0910923F098823A9F20E946C2E809188
-:10A310009F05882379F2DF91CF911F910F91FF90D4
-:10A32000EF90DF90CF90BF90AF909F908F907F90F5
-:10A330006F905F90089590913F0910923F09992383
-:10A3400099F28C278093360980927502A114B1048A
-:10A3500011F00E940CCC80919F05882329F2DBCF5D
-:10A3600081E09091A005913009F080E0909136094C
-:10A3700020E33CE0911102C02CE23CE001E043E329
-:10A380005CE0692D0E942048B3CFC23071F5809106
-:10A39000A0058230D1F080917502882309F4A8CFFE
-:10A3A000FF92EF92DF92CF921F9381E09091A005F0
-:10A3B000923009F080E08F930E947D250F900F90DE
-:10A3C0000F900F900F900F9093CF80913F091092B4
-:10A3D0003F09882301F3E114F10411F00E94F1CB4D
-:10A3E00080919F058823B9F296CFC33091F50091F3
-:10A3F000A005033081F080917502882309F478CF9D
-:10A4000081E0033009F080E023E046E15CE0652D67
-:10A410000F941E156DCF80913F0910923F0988233C
-:10A4200051F389E199E30E947D2480919F0588235F
-:10A4300011F371CF80913F0910923F09882381F079
-:10A4400081E590E50E947D2480919F05882341F05D
-:10A4500062CFC43009F04CCF0091A005043051F315
-:10A4600080917502882309F443CF81E0043009F01C
-:10A4700080E023E048E05CE06D2FCACF80910B06BE
-:10A480008093360935CF2F923F924F925F926F9211
-:10A490007F928F929F92AF92BF92CF92DF92EF9274
-:10A4A000FF920F931F93CF93DF9300D000D01F92A2
-:10A4B000CDB7DEB7482E662E809393056093920544
-:10A4C00020914709298361E081E00E943223709046
-:10A4D000A10527E1362D3202C0011124AC01495BF0
-:10A4E000594F6A01572C55E0570D5A833324339442
-:10A4F000832D87198D8333EDA32E3CE2B32E40EFDD
-:10A50000842E49E0942EE62CF12CEE0CFF1CF70172
-:10A51000E054FD4F7F01562D5203A0011124495BE9
-:10A52000594F5F834E8371107FC03320D9F08091E3
-:10A53000A0051816BCF040913B0950913C09609170
-:10A540003D0970913E094F5F5F4F6F4F7F4F4093C2
-:10A550003B0950933C0960933D0970933E098F5F1E
-:10A560008093A00580917502882389F083E063EDD4
-:10A5700079E0481639F094E063EC79E0491611F07F
-:10A5800063EB79E043E0852D81950F94931409E105
-:10A590001EE022E0222EFEEFF70DFB83272D25196A
-:10A5A0002C83721018C0F801859194913B813093EF
-:10A5B000470990934B0980934A09109249091092D8
-:10A5C00048098091A005871509F46BC08091750238
-:10A5D000811176C0312C822D0E5F1F4F93E0292E02
-:10A5E0008330F9F654E0751214C060924709109256
-:10A5F0004B0910924A09109249091092480980911A
-:10A60000A005843009F471C08091750281118AC05F
-:10A61000312C7394FA81F71186CF85E080939E05E3
-:10A6200029812093470919C0E1E07E12B0CF109133
-:10A63000A005113031F080917502811127C0312CB5
-:10A64000A6CF80913F0910923F098823A1F30E9471
-:10A650006C2E80919F05882371F327960FB6F8948E
-:10A66000DEBF0FBECDBFDF91CF911F910F91FF9045
-:10A67000EF90DF90CF90BF90AF909F908F907F90A2
-:10A680006F905F904F903F902F90089581E0113030
-:10A6900009F080E024E04AEF59E06D810F941E1527
-:10A6A000CECF80913F0910923F09882309F48ECFC5
-:10A6B0000E94D32C80919F05882309F487CFCDCFAA
-:10A6C000BF92AF929F928F924C814F9381E0909175
-:10A6D000A005921180E08F930E947D250F900F902E
-:10A6E0000F900F900F900F9075CF80913F091092AF
-:10A6F0003F09882309F488CF0F94BF15F701208103
-:10A7000031812F5031090FED1CE24AEA50E0B601C9
-:10A7100081EE99E00F94CC1680919F05882309F46F
-:10A7200073CF9BCF11E08091A005843009F010E039
-:10A73000EE81FF81808191810E9492BD64E0651964
-:10A7400000E09C0141EE59E0812F0E94204860CF3B
-:10A750006091470984E00C9443526091470983E07B
-:10A760000C9443526091470982E00C9443522F921B
-:10A770003F924F925F926F927F928F929F92AF9291
-:10A78000BF92CF92DF92EF92FF920F931F93CF93DE
-:10A79000DF9300D000D0CDB7DEB70E9462CD482E47
-:10A7A00061E081E00E9432232091A1052D834420A5
-:10A7B00069F185E08E837D80272D2B5F298385E0DD
-:10A7C00087198A8384E087198B8383E087198C83B8
-:10A7D00082E0682E671881E0582E5718272C2194A4
-:10A7E0002D8121113BC01091A005112391F0809182
-:10A7F0007502882309F451C081E0111180E024E042
-:10A8000049ED58E0622D0F941E1547C096E09E83D7
-:10A81000D2CF80913F0910923F09882341F30E94D3
-:10A820006C2E80919F05882311F326960FB6F8941D
-:10A83000DEBF0FBECDBFDF91CF911F910F91FF9073
-:10A84000EF90DF90CF90BF90AF909F908F907F90D0
-:10A850006F905F904F903F902F9008958D81813041
-:10A8600009F096C01091A005113009F47CC08091C8
-:10A870007502882391F01F9288EC98E09F938F9344
-:10A880005F9281E0113009F080E08F930E947D2576
-:10A890000F900F900F900F900F904110B1C02D812D
-:10A8A000253009F0ADC01091A005153009F402C1A2
-:10A8B0008091750281110FC116E081E0810F9D81A9
-:10A8C000891314C03090A005391609F42CC1809169
-:10A8D0007502882359F06D81671981E02D8132124C
-:10A8E00080E023E04CE758E00F941E1582E0810FD2
-:10A8F0009D81891314C03090A005391609F424C134
-:10A9000080917502882359F06D81671981E02D814E
-:10A91000321280E023E043E758E00F941E1583E0F5
-:10A92000810F9D81891315C09091A0052D819217EB
-:10A9300009F41BC180917502882359F06D81671954
-:10A9400081E02D81921380E023E041E658E00F94EE
-:10A950001E158D818F5F8D839981981341CF1C5F68
-:10A9600010939E0562CF80913F0910923F09882382
-:10A9700009F47DCF8CE598E09093F3088093F2087A
-:10A980000E945E2D80919F05882309F470CF4DCFE2
-:10A990008D81823009F012C11091A005123071F042
-:10A9A00080917502882309F478CF81E0123009F094
-:10A9B00080E023E047EB58E0662D25CF80913F09EA
-:10A9C00010923F09882361F383E69AE50E947D2473
-:10A9D00080919F05882321F328CF1091A005133083
-:10A9E000F1F080917502882309F457CF81E013308C
-:10A9F00009F080E023E04AEA58E06C810F941E15CC
-:10AA00008E819D81891309C01091A005181709F442
-:10AA10006DC08091750281117AC01E814ECF8091E8
-:10AA20003F0910923F098823E1F28CE09CE50E94E7
-:10AA30007D2480919F058823A1F2F7CE80913F0964
-:10AA400010923F09882309F4C6C020E030E04AE7AD
-:10AA500054E46091FE057091FF058091000690918D
-:10AA600001060F94173A20E030E040E85FE30F94CE
-:10AA7000073E0F947B3F1F92912C812C8AE1A82ED8
-:10AA800088E4B82E6B011BE2E12EFF24F39400E072
-:10AA900010E021E030E040E050E06EEF75E08DE93D
-:10AAA00098E00E94EB2C0F9080919F05882309F479
-:10AAB00092C0BBCE80913F0910923F09882309F4D0
-:10AAC000F7CE84E19FE50E947D2480919F05882335
-:10AAD00009F4EECEAACE81E0153009F080E023E043
-:10AAE00044E958E06A810F941E15E6CE80913F0933
-:10AAF00010923F09882309F48CCF8DE89EE20E94D2
-:10AB00007D2480919F05882309F483CF8ECE6D81AB
-:10AB1000671981E02D81121380E023E048E858E0B6
-:10AB20000F941E157ACF80913F0910923F09882318
-:10AB300009F4CDCE84E693E60E947D2480919F05A2
-:10AB4000882309F4C4CE71CE80913F0910923F0949
-:10AB5000882309F4D5CE83E790E60E947D24809176
-:10AB60009F05882309F4CCCE60CE80913F091092D6
-:10AB70003F09882309F4DECE0E94532420E040E000
-:10AB800070E060E088EC96E226960FB6F894DEBF9F
-:10AB90000FBECDBFDF91CF911F910F91FF90EF902E
-:10ABA000DF90CF90BF90AF909F908F907F906F90ED
-:10ABB0005F904F903F902F900C9493232D812330E2
-:10ABC00009F40BCF243009F068CE3090A00594E052
-:10ABD000391609F433CF80917502882309F45DCECC
-:10ABE0006091FE057091FF0580910006909101062D
-:10ABF0000E94E6219C0181E094E0391280E000E0AF
-:10AC00004DE958E06B810E942048FACE2F923F9286
-:10AC10004F925F926F927F928F929F92AF92BF926C
-:10AC2000CF92DF92EF92FF920F931F93CF93DF9318
-:10AC300000D0CDB7DEB761E081E00E9432232091E1
-:10AC4000A1052A832B5F298384E09A81891B8B834A
-:10AC500066246394B2E05B2E83E0782E791A452C4B
-:10AC6000491A362C391A292E21942A8121113DC0E6
-:10AC70001091A0051123B9F080917502882349F045
-:10AC800081E0111180E024E041E159E0622D0F9450
-:10AC90001E159A819F5F9A8329819213E6CF85E0E2
-:10ACA00080939E050CC080913F0910923F09882334
-:10ACB00019F30E946C2E80919F058823E9F20F9072
-:10ACC0000F900F90DF91CF911F910F91FF90EF9018
-:10ACD000DF90CF90BF90AF909F908F907F906F90BC
-:10ACE0005F904F903F902F9008958A81813009F0B6
-:10ACF0006BC01092470910924B0910924A091092AA
-:10AD00004909109248098091A0058130F1F08091A5
-:10AD10007502882309F4BDCF11E08091A005813030
-:10AD200009F010E060917A0670917B0680917C06B4
-:10AD300090917D060E94651F00E09C014FEE58E057
-:10AD4000632D812F0E942048A4CF80913F0910924B
-:10AD50003F098823E1F20F94BF1520E030E048EC72
-:10AD600052E460917A0670917B0680917C06909106
-:10AD70007D060F94173A20E030EB4AE156E40F9439
-:10AD8000083E0F947B3F1F92E3EF8E2EE0E29E2E53
-:10AD9000F0EFAF2EF7E4BF2E6B0118E5E12E1DE4B6
-:10ADA000F12E00E010E024E539ED4FEF5FEF6AE7A8
-:10ADB00076E08FEE98E00E94EB2C0F9080919F053B
-:10ADC000882309F4A4CF7BCF9A81923009F0DDC0AB
-:10ADD0006092470910924B0910924A091092490952
-:10ADE000109248098091A0058230D9F080917502B7
-:10ADF000882309F44ECF11E08091A005823009F03C
-:10AE000010E060917E0670917F068091800690919F
-:10AE100081060E94651F00E09C014FEE58E0642D02
-:10AE200090CF80913F0910923F098823F9F20F9447
-:10AE3000BF1520E030E048EC52E460917E0670914E
-:10AE40007F0680918006909181060F94173A20E04A
-:10AE500030EB4AE156E40F94083E0F947B3F1F927B
-:10AE600033EF832E30E2932E40EFA42E47E4B42E2E
-:10AE70006B0118E5E12E1DE4F12E00E010E024E561
-:10AE800039ED4FEF5FEF6EE776E08FEE98E00E94CE
-:10AE9000EB2C0F9080919F05882309F4A7CF0FCF4B
-:10AEA0005092470910924B0910924A091092490991
-:10AEB000109248098091A0058330D9F080917502E5
-:10AEC000882309F4E6CE11E08091A005833009F0D3
-:10AED00010E06091820670918306809184069091C3
-:10AEE00085060E94651F00E09C014FEE58E0672D2B
-:10AEF00028CF80913F0910923F098823F9F20F94DF
-:10AF0000BF1520E030E048EC52E460918206709179
-:10AF1000830680918406909185060F94173A20E06D
-:10AF200030E048E453E40F94083E0F947B3F1F92B7
-:10AF300083EF882E80E2982E90EFA92E97E4B92E09
-:10AF40006B0110EBE12E14E0F12E00E010E028E39D
-:10AF50003FEF4FEF5FEF62E876E08FEE98E00E9400
-:10AF6000EB2C0F9080919F05882309F4A7CFA7CEE3
-:10AF700080913F0910923F09882391F00E94D92BBC
-:10AF800080919F05882361F09ACE8A81833009F4ED
-:10AF900087CF843009F07DCE8091A005843041F3C5
-:10AFA00080917502882309F474CE89ED9BE29F930A
-:10AFB0008F938EE399E09F938F938B818F9381E0A2
-:10AFC0009091A005943009F080E08F930E947D2538
-:10AFD0000F900F900F900F900F900F905ACE5F929E
-:10AFE0006F927F928F929F92AF92BF92CF92DF9299
-:10AFF000EF92FF920F931F93CF93DF9361E081E075
-:10B000000E943223C091A10525E0722E7C0ED1E072
-:10B01000DC1B6C2E6194C11134C01091A00511236A
-:10B02000A1F080917502882349F081E0111180E040
-:10B0300024E041E159E0662D0F941E15CF5F7C128C
-:10B04000EACF82E080939E050CC080913F09109268
-:10B050003F09882331F30E946C2E80919F0588233D
-:10B0600001F3DF91CF911F910F91FF90EF90DF904F
-:10B07000CF90BF90AF909F908F907F906F905F9098
-:10B080000895C130D9F65090A00581E0581609F412
-:10B0900047C080917502882389F211E0511210E0B7
-:10B0A000C0908606D0908706E0908806F0908906CA
-:10B0B00020E030E0A901C701B6010F94B1392DEBB2
-:10B0C00037E346E055EB87FD04C02DEB37E346E060
-:10B0D00055E3C701B6010F94083E6B017C0120E0E7
-:10B0E00030E0A9010F94B13920E030E040E05FEB9F
-:10B0F00087FD04C020E030E040E05FE3C701B60117
-:10B100000F94083E0F94743FCB010E9492BD00E063
-:10B110009C0147EE58E06D2F812F0E9420488ECF72
-:10B1200080913F0910923F09882309F4B2CF6091C2
-:10B1300086067091870680918806909189060F9403
-:10B140007B3F1F92912C812C8AEEA82E87E4B82E8B
-:10B150006B011AE0E12EF12C00E010E020E030E07D
-:10B16000A90166E876E087EE98E00E94EB2C0F904C
-:10B1700080919F05882309F48CCF73CF2F923F9243
-:10B180004F925F926F927F928F929F92AF92BF92F7
-:10B19000CF92DF92EF92FF920F931F93CF93DF93A3
-:10B1A00000D000D01F921F92CDB7DEB72091470983
-:10B1B000288761E081E00E9432233091A1053F831E
-:10B1C000E8858E2F90E0880F991F9C01275E314FF4
-:10B1D0003C832B8336E0E39FC0011124FC01EC503B
-:10B1E000FA4FFA83E9839C012E503A4F79015F8030
-:10B1F00035E0432E450C11E0312E3518252C2194D5
-:10B20000FE82ED82570134E0A30EB11C49EDC42E3D
-:10B210004BE2D42E85E0782E75184701E2E08E0EC1
-:10B22000911C82E0682E6518FF81F11161C0112325
-:10B23000D9F08091A0051816BCF040913B095091BF
-:10B240003C0960913D0970913E094F5F5F4F6F4F20
-:10B250007F4F40933B0950933C0960933D097093A5
-:10B260003E098F5F8093A00580917502882341F08D
-:10B27000EB81FC816591749143E0822D0F949314CE
-:10B28000F501808180933609FF81F23009F080C09A
-:10B2900028852093470910924B0910924A09109271
-:10B2A0004909109248098091A005823009F45DC0D7
-:10B2B00080917502882391F011E08091A005823081
-:10B2C00009F010E0809136090E942ABE00E09C013E
-:10B2D00047E059E0662D812F0E94204810E02F8121
-:10B2E0002F5F2F834212A0CF86E080939E0519C066
-:10B2F0002F81213029F61091A005113031F0809175
-:10B300007502811127C010E0BBCF80913F091092D8
-:10B310003F098823A1F30E946C2E80919F0588230A
-:10B3200071F328960FB6F894DEBF0FBECDBFDF9144
-:10B33000CF911F910F91FF90EF90DF90CF90BF9032
-:10B34000AF909F908F907F906F905F904F903F90C5
-:10B350002F90089581E0113009F080E024E041E170
-:10B3600059E0632D0F941E15CECF80913F091092A6
-:10B370003F09882309F49CCF65EE70E287E099E0ED
-:10B380000F94A41780919F05882309F491CFC9CF0A
-:10B390003F81333091F58091A0058330C1F08091D9
-:10B3A0007502882309F49ACF11E08091A0058330BB
-:10B3B00009F010E0ED81FE81808191810E9492BDB3
-:10B3C00063E0651900E09C0140E059E084CF809182
-:10B3D0003F0910923F09882311F310E000E025EFA8
-:10B3E00030E045E050E0B70180E099E00F94CC16E2
-:10B3F00080919F05882399F294CFFF81F43091F5D5
-:10B400008091A0058430B9F080917502882309F4F9
-:10B4100065CF11E08091A005843009F010E0F401BF
-:10B42000808191810E9492BD64E0651900E09C01D9
-:10B430004CEF58E050CF80913F0910923F0988238C
-:10B4400019F310E000E024E630E045E050E06981C7
-:10B450007A818CEF98E00F94CC1680919F05882319
-:10B4600099F25FCFFF81F53009F039CF8091A005C7
-:10B470008530E1F080917502882309F42FCFDF92A7
-:10B48000CF928EE399E09F938F937F9281E090918A
-:10B49000A005953009F080E08F930E947D250F90E4
-:10B4A0000F900F900F900F900F9018CF80913F0941
-:10B4B00010923F098823F1F20E94D92B80919F05B9
-:10B4C0008823C1F22ECF5F926F927F928F929F92CC
-:10B4D000AF92BF92CF92DF92EF92FF920F931F93A2
-:10B4E000CF93DF93CDB7DEB760970FB6F894DEBF8A
-:10B4F0000FBECDBF80E1ECE8F2E0DE0111960190D5
-:10B500000D928A95E1F761E081E00E943223D090AC
-:10B51000A1059D2C65E0862E8D0C7D2C719473E029
-:10B52000672ED11012C01091A005112309F4CEC0CE
-:10B5300080917502882349F081E0111180E024E0B8
-:10B540004CE358E0672D0F941E15AA24A394B12C48
-:10B550005D2C5918DA102FC08FEF8A0D80934709A0
-:10B5600010924B0910924A09109249091092480909
-:10B570008091A0058D1509F4CDC0809175028823B6
-:10B58000D1F011E08091A0058D1110E0F501EE0FD2
-:10B59000FF1FEE0FFF1FEB5AF64F60A171A182A1B2
-:10B5A00093A10E94F52700E09C014CEE57E0652D29
-:10B5B000812F0E942048CA2C81E08A0D9FEFA91A92
-:10B5C000B90A94E0A916B10429F68D112CC0609235
-:10B5D000470910924B0910924A091092490910929A
-:10B5E00048098091A0058D1509F4BEC080917502AF
-:10B5F0008823C9F0BD2CB91811E08091A0058D11E8
-:10B6000010E0609185097091860980918709909179
-:10B6100088090E94F52700E09C014CEE57E06B2D55
-:10B62000812F0E94204882E08C0D8D1122C08091D4
-:10B63000A0058D1509F4B6C0809175028823C9F064
-:10B64000BD2CB91811E08091A0058D1110E060911A
-:10B6500095097091960980919709909198090E9497
-:10B66000F52700E09C014FED57E06B2D812F0E94E4
-:10B67000204883E08C0D8D1121C08091A0058D158F
-:10B6800009F4ADC0809175028823C1F011E080916A
-:10B69000A0058D1110E06091990970919A0980912F
-:10B6A0009B0990919C090E94F52700E09C014EECBB
-:10B6B00057E06D2D6919812F0E942048D3948D1079
-:10B6C00030CF84E08C0D80939E050EC080913F09A1
-:10B6D00010923F09882309F42BCF0E946C2E809191
-:10B6E0009F05882309F424CF60960FB6F894DEBF37
-:10B6F0000FBECDBFDF91CF911F910F91FF90EF90C3
-:10B70000DF90CF90BF90AF909F908F907F906F9081
-:10B710005F90089580913F0910923F09882309F4B2
-:10B720002CCF0F94BF15B501660F771F660F771FDB
-:10B73000FB01349781E090E08C0F9D1FE80FF91F0B
-:10B74000E080F180028113816B58764F20E030E079
-:10B7500040E85FE38CEE97E00F94CB1580919F0556
-:10B76000882309F40ACFC0CF80913F0910923F0986
-:10B77000882309F43BCF0F94BF15E12C1CE3F12E75
-:10B780000CE116E420E030E040E85FE365E879E0B2
-:10B790008CEE97E00F94CB1580919F05882309F4D8
-:10B7A00025CFA2CF80913F0910923F09882309F449
-:10B7B00043CF0F94BF15E12C1CE3F12E0CE116E4EE
-:10B7C00020E030E0A90165E979E08FED97E00F9482
-:10B7D000CB1580919F05882309F42ECF85CF8091CA
-:10B7E0003F0910923F09882309F44CCF0F94BF15ED
-:10B7F000E12C1CE3F12E0CE116E420E030E0A9017D
-:10B8000069E979E08EEC97E00F94CB1580919F0564
-:10B81000882309F437CF68CF2F923F924F925F92DF
-:10B820006F927F928F929F92AF92BF92CF92DF9250
-:10B83000EF92FF920F931F93CF93DF93CDB7DEB7B5
-:10B840002C970FB6F894DEBF0FBECDBFC09059093C
-:10B85000D0905A09E0905B09F0905C0980915D09F5
-:10B8600090915E09A0915F09B09160098C159D05CA
-:10B87000AE05BF0510F4D701C601C0905509D090A0
-:10B880005609E0905709F0905809BC01CD016C159C
-:10B890007D058E059F0510F4C701B6010F94B639DA
-:10B8A0002B013C0161E081E00E9432232091A1053F
-:10B8B0002C872E83822F8B5F8D8387E0821B8F8363
-:10B8C00086E0821B888785E0821B898784E0821B53
-:10B8D0008A8783E0821B8B8742E0242E221A322E35
-:10B8E00031942C85211140C01091A0051123B9F08D
-:10B8F00080917502882349F081E0111180E024E0F5
-:10B900004CE358E0632D0F941E159C859F5F9C8728
-:10B910002D812913E6CF88E080939E050CC080918D
-:10B920003F0910923F09882319F30E946C2E8091E1
-:10B930009F058823E9F22C960FB6F894DEBF0FBE60
-:10B94000CDBFDF91CF911F910F91FF90EF90DF90CE
-:10B95000CF90BF90AF909F908F907F906F905F90AF
-:10B960004F903F902F9008958C85813009F081C0D1
-:10B970008091A0058130F9F080917502882329F229
-:10B9800011E08091A005813009F010E060918909F3
-:10B9900070918A0980918B0990918C090E94F527FA
-:10B9A00061E02E81621B00E09C014BE258E0812F98
-:10B9B0000E942048AACF80913F0910923F09882316
-:10B9C000D9F20F94BF152AE037ED43E25DE3C301DE
-:10B9D000B2010F94173A4B015C0120E030E040E0E7
-:10B9E0005FE40F94B13987FD05C0812C912CA12C07
-:10B9F0003FE4B32E2AE037ED43E25DE3609189092D
-:10BA000070918A0980918B0990918C090F94173A53
-:10BA100020E030E040E85FE30F94073E0F947B3F67
-:10BA200069837A838B839C83C501B4010F94743F2F
-:10BA30007B018C0121E0E21AF108010911091F9232
-:10BA4000912C812C22E0A22E28E4B22EC980DA802B
-:10BA500021E030E040E050E069E879E08BE298E0F6
-:10BA60000E94EB2C0F9080919F05882309F484CFCE
-:10BA700062CF8C85823009F0A6C18091A00582300A
-:10BA8000D9F080917502882309F43FCF11E08091AD
-:10BA9000A005823009F010E060918D0970918E0947
-:10BAA00080918F09909190090E94F52700E09C01F8
-:10BAB0004DE158E0622D7BCF80913F0910923F0904
-:10BAC0008823F9F20F94BF156091610970916209A2
-:10BAD00080916309909164090F94B6397B018C01C0
-:10BAE00020E030E048EC52E46DE879E08DE198E048
-:10BAF0000F94CB1580919F05882319F21CCF80915C
-:10BB0000A0058330D9F080917502882309F4FDCE19
-:10BB100011E08091A005833009F010E06091910957
-:10BB20007091920980919309909194090E94F52750
-:10BB300000E09C0140E158E06B8539CF80913F09DE
-:10BB400010923F098823F9F20F94BF152AE037EDD0
-:10BB500043E25DE3C301B2010F94173A4B015C016C
-:10BB600020E030E040E05FE40F94B13987FD05C08C
-:10BB7000812C912CA12C9FE4B92E2AE037ED43E2D1
-:10BB80005DE3609191097091920980919309909180
-:10BB900094090F94173A20E030E040E85FE30F94F7
-:10BBA000073E0F947B3F69837A838B839C83C50117
-:10BBB000B4010F94743F7B018C0121E0E21AF1087B
-:10BBC000010911091F92912C812C82E0A82E88E492
-:10BBD000B82EC980DA8021E030E040E050E061E931
-:10BBE00079E080E198E00E94EB2C0F9080919F0516
-:10BBF000882309F488CF9FCE1092470910924B09F1
-:10BC000010924A0910924909109248098091A005A2
-:10BC10008430E9F080917502882309F476CE11E032
-:10BC20008091A005843009F010E060915509709171
-:10BC3000560980915709909158090F94B6390E947E
-:10BC4000D22700E09C0144E058E06A85B0CE8091A4
-:10BC50003F0910923F098823E9F20F94BF150CE7C2
-:10BC600018E224E630E040E050E065E579E084E069
-:10BC700098E00F94541680919F05882359F25BCE6B
-:10BC800081E08093470910924B0910924A09109263
-:10BC90004909109248098091A0058530E9F080910A
-:10BCA0007502882309F431CE11E08091A00585301A
-:10BCB00009F010E06091590970915A0980915B096F
-:10BCC00090915C090F94B6390E94D22700E09C0144
-:10BCD00044E058E069856BCE80913F0910923F099E
-:10BCE0008823E9F20F94BF150AE718E224E630E052
-:10BCF00040E050E069E579E084E098E00F94541664
-:10BD000080919F05882359F216CE82E080934709DF
-:10BD100010924B0910924A09109249091092480951
-:10BD20008091A0058630E9F080917502882309F49E
-:10BD3000ECCD11E08091A005863009F010E0609113
-:10BD40005D0970915E0980915F09909160090F947F
-:10BD5000B6390E94D22700E09C0144E058E0688593
-:10BD600026CE80913F0910923F098823E9F20F9473
-:10BD7000BF1508E718E22AE030E040E050E06DE54A
-:10BD800079E084E098E00F94541680919F05882311
-:10BD900059F2D1CD80913F0910923F09882339F1A2
-:10BDA0000F94BF1506E718E224E630E040E050E0CB
-:10BDB00061E679E088EF97E00F94541680919F0533
-:10BDC0008823A9F0B8CD8C85833009F498CE8430CF
-:10BDD00009F412CF853009F453CF863009F495CF9A
-:10BDE000873009F092CD8091A005873099F280913B
-:10BDF0007502882309F489CD11E08091A005873070
-:10BE000009F010E060916109709162098091630905
-:10BE1000909164090F94B6390E94D22700E09C01EA
-:10BE200048EF57E06F81C3CD2F923F924F925F92C0
-:10BE30006F927F928F929F92AF92BF92CF92DF923A
-:10BE4000EF92FF920F931F93CF93DF9300D01F9237
-:10BE50001F92CDB7DEB761E081E00E94322380916E
-:10BE6000A1058C838A83982F9B5F9983E82FE195A6
-:10BE7000EB8384E0482EFC814F1A8C81811114C021
-:10BE80009091A0059D83992309F489C08091750242
-:10BE9000882351F081E0ED81E11180E024E04CE362
-:10BEA00058E06B810F941E1565E5662E69E0762ECD
-:10BEB000F1E0FD833C803A942C808A81281A9C8191
-:10BEC000ED819E1328C03092470910924B091092C1
-:10BED0004A0910924909109248098091A0058917D2
-:10BEE00009F483C0809175028823A9F011E0809144
-:10BEF000A005FD818F1310E0F3016489758986899F
-:10BF000097890E94052100E09C0141E358E0622DE1
-:10BF1000812F0E9420485D80F4E06F0E711C81E04B
-:10BF2000850D8D83843059F69C81943069F5E3E06A
-:10BF3000E093470910924B0910924A09109249095F
-:10BF4000109248098091A005843009F48CC080913A
-:10BF500075028823C9F0F1E0FD838091A00584304B
-:10BF600009F01D82609175097091760980917709B9
-:10BF7000909178090E94052100E09C0141E358E07E
-:10BF8000642D8D810E9420488C818F5F8C839981E4
-:10BF9000981373CF5394539450929E050EC0809182
-:10BFA0003F0910923F09882309F470CF0E946C2E3C
-:10BFB00080919F05882309F469CF0F900F900F900F
-:10BFC0000F900F90DF91CF911F910F91FF90EF9005
-:10BFD000DF90CF90BF90AF909F908F907F906F90A9
-:10BFE0005F904F903F902F90089580913F0910925D
-:10BFF0003F09882309F476CF0F94BF1520E030E085
-:10C0000040E251E4F30164897589868997890F9428
-:10C01000173A20E030E048E452E40F94073E0F94D2
-:10C020007B3F1F9234E7832E38E2932E46EFA42EF7
-:10C0300047E4B42E6B0114E6E12E16E8F12E01E080
-:10C0400010E022E330E040E050E0B3016C5E7F4F4F
-:10C0500081E398E00E94EB2C0F9080919F0588234C
-:10C0600009F440CFAACF80913F0910923F0988235D
-:10C0700009F46DCF0F94BF1520E030E040E251E4A9
-:10C08000609175097091760980917709909178098E
-:10C090000F94173A20E030E048E452E40F94073E52
-:10C0A0000F947B3F1F9282E7882E88E2982E96EFAE
-:10C0B000A92E97E4B92E6B0114E6E12E16E8F12EB5
-:10C0C00001E010E022E330E040E050E065E779E095
-:10C0D00081E398E00E94EB2C0F9080919F058823CC
-:10C0E00009F435CF6ACF2F923F924F925F926F92B1
-:10C0F0007F928F929F92AF92BF92CF92DF92EF92F8
-:10C10000FF920F931F93CF93DF9300D000D0CDB752
-:10C11000DEB761E081E00E9432232091A1052D83EA
-:10C120002E83322F3B5F398381E0922F821B8A83DB
-:10C1300091959B8382E0821B8C83FD81F11185C1E7
-:10C140001091A005112309F459C18091750288232B
-:10C1500049F081E0111180E024E04CE358E06B816C
-:10C160000F941E158091F105882309F437C2FD81D3
-:10C17000F23029F58091A005823009F4A2C18091A6
-:10C1800075028823E1F011E08091A005823009F06A
-:10C1900010E0E091510924E0E29FF0011124E75101
-:10C1A000FA4F60817181828193810E94E62100E0D3
-:10C1B0009C0144E957E06C81812F0E942048712C3A
-:10C1C000612C13E0312E2D803E81231A8D81831145
-:10C1D0002EC06092470910924B0910924A091092A2
-:10C1E0004909109248098091A0059D81891709F499
-:10C1F000B1C1809175028823D1F011E08091A00532
-:10C20000831110E0F301EE0FFF1FEE0FFF1FE75148
-:10C21000FA4F60817181828193810E94E62100E062
-:10C220009C0148E857E0622D812F0E942048FFEFD3
-:10C230006F1A7F0A24E032128AC115E03D81131380
-:10C2400029C08091A005811709F4CAC180917502A7
-:10C25000882301F16D809E81691A772473948091FF
-:10C26000A005ED818E13712CE091510928E0E29F29
-:10C27000F0011124E752FA4F60817181828193812C
-:10C280000E94362800E09C014EE757E0662D872D7E
-:10C290000E94204844244394410E712C612C3D801F
-:10C2A0003E81331A8D8184112FC06092470910920C
-:10C2B0004B0910924A09109249091092480980913D
-:10C2C000A0059D81891709F4AAC180917502882370
-:10C2D000D9F011E08091A005841110E0F30133E062
-:10C2E000EE0FFF1F3A95E1F7E752FA4F6081718137
-:10C2F000828193810E94362800E09C0145E757E047
-:10C30000632D812F0E942048542C44244394450CD3
-:10C310006A94672809F07FC1FD814F1228C080917F
-:10C32000A0058F1709F496C1809175028823F9F052
-:10C330007D803E81731A11E08091A0059D81891353
-:10C3400010E0E091510928E0E29FF0011124E7524A
-:10C35000FA4F64817581868197810E94362800E0BA
-:10C360009C014DE657E0672D812F0E942048539491
-:10C370005394712C612C4D803E81431A8D8185111F
-:10C380002FC06092470910924B0910924A091092EF
-:10C390004909109248098091A0059D81891709F4E7
-:10C3A00078C1809175028823D9F011E08091A005B1
-:10C3B000851110E0F30183E0EE0FFF1F8A95E1F78E
-:10C3C000E752FA4F64817581868197810E943628F1
-:10C3D00000E09C0146E657E0642D812F0E94204832
-:10C3E00053946A94672809F050C1FD81FF5FFD8373
-:10C3F00029812F13A2CE50929E050EC080913F0935
-:10C4000010923F09882309F4A0CE0E946C2E8091DF
-:10C410009F05882309F499CE26960FB6F894DEBFBF
-:10C420000FBECDBFDF91CF911F910F91FF90EF9085
-:10C43000DF90CF90BF90AF909F908F907F906F9044
-:10C440005F904F903F902F9008952D81213009F0FB
-:10C4500089CE8091A0058130D1F08091750288232A
-:10C4600009F480CE81E09091A005913009F080E040
-:10C470009091F10522EC37E0911102C02EEB37E0EC
-:10C4800001E04EE957E06A810E9420486BCE80911E
-:10C49000F10590913F0910923F099923F1F23D81F6
-:10C4A00083278093F10583E080937502E7EEF1E73F
-:10C4B000EF2B11F00E94E77180919F05882369F2AC
-:10C4C000ABCF80913F0910923F09882309F457CEE2
-:10C4D0000F94BF156090510924E0629E3001112431
-:10C4E000C30187519A4F3C0120E030E04AE754E411
-:10C4F000FC0160817181828193810F94173A20E061
-:10C5000030E84BEB54E40F94073E0F947B3F1F92AF
-:10C5100007EE802E01E7902E8AE1A82E88E4B82E3F
-:10C520006B0116EDE12E16E0F12E00E010E02CED8F
-:10C5300035E040E050E0B30184E997E00E94EB2C45
-:10C540000F9080919F05882309F419CE65CFB4E040
-:10C550003B2E3CCE80913F0910923F09882309F47D
-:10C5600048CE0F94BF15C301880F991F880F991FDC
-:10C57000FC01E751FA4F2F0120E030E04AE754E494
-:10C5800060817181828193810F94173A20E030E8B5
-:10C590004BEB54E40F94073E0F947B3F1F92E7EE62
-:10C5A0008E2EE1E79E2EFAE1AF2EF8E4BF2E6B014E
-:10C5B00016EDE12E16E0F12E00E010E02CED35E056
-:10C5C00040E050E0B20188E897E00E94EB2C0F9029
-:10C5D00080919F05882309F40CCE1ECF12E02ECE49
-:10C5E00080913F0910923F09882309F42FCE0F94C0
-:10C5F000BF156091510988E0689FB001112467520E
-:10C600007A4F8EE797E00F946A1780919F058823F1
-:10C6100009F41CCE01CF66246394712C43CE809123
-:10C620003F0910923F09882309F44FCE0F94BF159C
-:10C63000B30143E0660F771F4A95E1F767527A4FDF
-:10C6400085E797E00F946A1780919F05882309F486
-:10C650003CCEE2CE80913F0910923F09882309F435
-:10C6600063CE0F94BF156091510928E0629FB0011D
-:10C67000112463527A4F8DE697E00F946A178091E8
-:10C680009F05882309F450CEC7CE66246394712C8D
-:10C6900075CE80913F0910923F09882309F481CE1D
-:10C6A0000F94BF15B30193E0660F771F9A95E1F7DA
-:10C6B00063527A4F86E697E00F946A1780919F0540
-:10C6C000882309F46ECEA8CE2F923F924F925F92AC
-:10C6D0006F927F928F929F92AF92BF92CF92DF9292
-:10C6E000EF92FF920F931F93CF93DF9300D0CDB7BC
-:10C6F000DEB761E081E00E9432232091A1052A8308
-:10C700002B5F298384E09A81891B8B8323E0522E3F
-:10C71000352C391A82E0782E791A81E0682E691A50
-:10C72000292E21942A8121113DC01091A0051123A9
-:10C73000B9F080917502882349F081E0111180E001
-:10C7400024E04CE358E0622D0F941E152A812F5FE0
-:10C750002A8389812813E6CF85E080939E050CC04B
-:10C7600080913F0910923F09882319F30E946C2E93
-:10C7700080919F058823E9F20F900F900F90DF9131
-:10C78000CF911F910F91FF90EF90DF90CF90BF90CE
-:10C79000AF909F908F907F906F905F904F903F9061
-:10C7A0002F9008958A81813071F59091A005913084
-:10C7B000B9F080917502882349F281E0913009F047
-:10C7C00080E090916D0622EC37E0911102C02EEBD3
-:10C7D00037E001E045EC57E0662D0E942048B6CFD7
-:10C7E00080913F0910923F09882319F380916D06CB
-:10C7F0002A81822780936D065092750280919F0551
-:10C800008823B9F2B9CF8A81823009F098C080912B
-:10C81000A0058230C1F080917502882309F496CF7B
-:10C8200011E08091A005823009F010E0809118029B
-:10C83000909119020E9492BD00E09C0147EB57E0E5
-:10C84000672D812FCACF80913F0910923F0988231D
-:10C8500011F310E000E025EF30E050E040E068E147
-:10C8600072E087EB97E00F94CC1680919F058823A8
-:10C8700091F282CF8091A0058330B9F0809175024A
-:10C88000882309F463CF11E08091A005833009F07B
-:10C8900010E080911602909117020E9492BD00E074
-:10C8A0009C0140EB57E0632DCCCF80913F09109263
-:10C8B0003F09882319F310E000E025EF30E050E055
-:10C8C00040E066E172E080EB97E00F94CC16809137
-:10C8D0009F05882399F250CF80913F0910923F091C
-:10C8E0008823C9F120E030E048EC52E46091120264
-:10C8F0007091130280911402909115020F94173ACF
-:10C900000F947B3F1F92912C812C80EFA82E87E4FF
-:10C91000B82E6B0118EEE12E13E0F12E00E010E0CE
-:10C9200020E030E0A90162E172E088EA97E00E942D
-:10C93000EB2C0F9080919F05882369F01DCF9A8181
-:10C94000933009F497CF943009F000CF4090A005C0
-:10C9500094E0491609F280917502882309F4F6CE15
-:10C96000609112027091130280911402909115024D
-:10C970000E94651F9C0181E094E0491280E000E084
-:10C9800048EA57E06B8129CFE5E4F6E183AF64AF75
-:10C990006FEF7FEFCA010C947FC72F923F924F92A7
-:10C9A0005F926F927F928F929F92AF92BF92CF923F
-:10C9B000DF92EF92FF920F931F93CF93DF9300D0FC
-:10C9C00000D01F921F92CDB7DEB710924509E091BB
-:10C9D0001712F0911812309721F0199581110F94C8
-:10C9E0008E1080913F0910923F09882319F120E0B1
-:10C9F00040E070E060E08EE89BE30E9493230E9499
-:10CA0000DE3F28960FB6F894DEBF0FBECDBFDF9194
-:10CA1000CF911F910F91FF90EF90DF90CF90BF903B
-:10CA2000AF909F908F907F906F905F904F903F90CE
-:10CA30002F90089580919705882309F434C260915E
-:10CA4000470670914806072E000C880B990B0F942F
-:10CA5000B83911E0209143063091440640914506D3
-:10CA6000509146060F94684018160CF010E0609143
-:10CA70005E0670915F06072E000C880B990B0F94D1
-:10CA8000B8399B01AC0160915A0670915B068091A8
-:10CA90005C0690915D060F94B13987FD12600E948B
-:10CAA0003BC88111146010932E0520916D0F3091B9
-:10CAB0006E0F40916F0F5091700F609176027091E0
-:10CAC000770280917802909179020F94083E4B0191
-:10CAD0005C012091710F3091720F4091730F509152
-:10CAE000740F60917A0270917B0280917C02909128
-:10CAF0007D020F94083E6D837E838F8398872091FB
-:10CB0000750F3091760F4091770F5091780F6091AB
-:10CB10007E0270917F0280918002909181020F9439
-:10CB2000083E2B013C0120E030E040E251E40F944C
-:10CB3000173A20E030E048EC52E40F94173A6B01CA
-:10CB40007C0120E030E0A901C301B2010F94B139AA
-:10CB500020E030E040EA50EC87FD04C020E030E007
-:10CB600040EA50E4C701B6010F94083E20E030E0EF
-:10CB700040E251E40F94023F0F94743F2B013C01BB
-:10CB800080E277FE09C07094609450944094411CF8
-:10CB9000511C611C711C8DE28093A20560E220E1B2
-:10CBA000421627E25206610471048CF0C301B201FF
-:10CBB00020E137E240E050E00F94C63DCA01B901E0
-:10CBC0002AE030E040E050E00F94C63D605D6093A5
-:10CBD000A30560E238EE431633E0530661047104A6
-:10CBE0008CF0C301B20128EE33E040E050E00F9436
-:10CBF000C63DCA01B9012AE030E040E050E00F94A0
-:10CC0000C63D605D6093A405C301B20124E630E037
-:10CC100040E050E00F94C63D6AE0C62ED12CE12CD6
-:10CC2000F12CCA01B901A70196010F94C63D605DC0
-:10CC30006093A505C301B201A70196010F94C63DFB
-:10CC4000162FCA01B901A70196010F94C63D112301
-:10CC500009F4F6C08EE28093A605605D6093A70597
-:10CC6000105D1093A80562EA75E086E295E00F94E6
-:10CC7000ED4120E030E0A901C501B4010F94B139C4
-:10CC800020E030E040E05FEB87FD04C020E030E0D2
-:10CC900040E05FE3C501B4010F94083E0F94743F78
-:10CCA000CB010E9413BDBC0181E295E00F94ED41E0
-:10CCB00020E030E0A9016D817E818F8198850F94FD
-:10CCC000B13920E030E040E05FEB87FD04C020E0B8
-:10CCD00030E040E05FE36D817E818F8198850F9425
-:10CCE000083E0F94743FCB010E9413BDBC018CE140
-:10CCF00095E00F94ED418091A21714E683FD29C0C1
-:10CD00000E9473CD882309F4ADC080919A17909149
-:10CD10009B17A0919C17B0919D170097A105B10595
-:10CD200009F4A0C0BC01CD016D597F4F8F4F9F4FBB
-:10CD300024E630E040E050E00F94A43D60919E175F
-:10CD400070919F178091A0179091A1170F94A43D07
-:10CD5000122F0E94E4BA4B015C01062F80910F0252
-:10CD60008117A1F010930F0288E4189FB0011124DD
-:10CD700090E080E00F94B6392AE037ED43E25CE3BF
-:10CD80000F94173A0F947B3F60931B0580910E021E
-:10CD9000081709F488C080920E02C501B40120E191
-:10CDA0003EE040E050E00F94A43DC22E732EE22EF0
-:10CDB000F32E5CE3252E312C412C512CC501B401FE
-:10CDC000A20191010F94A43D062F672ECA01B9015B
-:10CDD000A20191010F94A43D162FD72E90E8891639
-:10CDE00091E5990691E0A906B104F0F1C501B401FD
-:10CDF00020E831E541E050E00F94A43D5901DF9275
-:10CE00001F93C70168E170E00F9434419F938F93A3
-:10CE10003F932F938FE796E09F938F938BE095E05E
-:10CE20009F938F930F9448390FB6F894DEBF0FBECF
-:10CE3000CDBF89E0BAE0AB16B10470F588E02CC034
-:10CE4000662351F08EE28093A605605D6093A7058E
-:10CE500080E28093A80507CF80E28093A7058093A6
-:10CE6000A605F6CF10E075CFE114F10409F087C2F2
-:10CE70006F920F93DF921F9383E796E09F938F93B8
-:10CE80008BE095E09F938F930F9448390FB6F894F9
-:10CE9000DEBF0FBECDBF85E0982F990F990F891B7C
-:10CEA000855A80930A050E94F224D82E81E00E94C0
-:10CEB000AA3F80912E05982F947042E102E082FFF4
-:10CEC00002C048E00CE080917D16843180F48091AE
-:10CED0007F16841760F0992309F471C28BE197E003
-:10CEE0007C0123E060E589E496E10F94852680913A
-:10CEF0007D168431B8F480917F16823098F0DD2061
-:10CF000009F460C28091D205882309F45BC28FEDD9
-:10CF100096E07C0102E123E042E068E689E496E1E4
-:10CF20000F94852680917D168C3108F0EAC02FE39E
-:10CF3000222E26E0322E1FE0B12CA12C39E0432E08
-:10CF4000512C612C712C4CE1C42E3A2DD101149638
-:10CF50008D919D910D90BC91A02D8D839E83AF836B
-:10CF6000B887F1018084918480917D16843118F511
-:10CF700080917F168830F8F062E2A11001C068E06D
-:10CF8000F501E855FD4F208180912E0590E002C00B
-:10CF9000959587953A95E2F7F501EE0FFF1F80FF13
-:10CFA00014C2EB55F94FE590F4900CE048E089E4A9
-:10CFB00096E10F94852680917D168830B0F4D110CB
-:10CFC0000BC025E02A9DF0012B9DF00D1124E25E9F
-:10CFD000F94F8481811109C097FEFAC14DE956E0ED
-:10CFE00067E087EF810F0E94C46480917D168C31C9
-:10CFF000C8F480917F168431A8F020E030E040E052
-:10D000005FE36D817E818F8198850F94083E0F9438
-:10D01000743F77FF08C24DE956E06CE187EF810F5E
-:10D020000E94C4643FEFA31AB30A87E1280E311CA3
-:10D03000165E133409F089CF809032069090330643
-:10D04000A0903406B090350680917D16883090F41B
-:10D05000D11004C080912C0681110CC0809136063D
-:10D060009091370697FF09C24DE956E067E081E5E8
-:10D070000E94C46480917D168C31B0F480917F163B
-:10D08000843190F020E030E040E05FE3C501B4017E
-:10D090000F94083E0F94743F77FF1DC24DE956E090
-:10D0A0006CE181E50E94C46480917D168C3148F565
-:10D0B00080917F16843128F18091D205882309F16F
-:10D0C000E4E68E9FC001112481589F4F6FEF70E0FE
-:10D0D0000F944841CB010E9492BD27E62093801611
-:10D0E0002CE1209381160E94AD4285E290E0A0E001
-:10D0F000B0E089839A83AB83BC83CE0101960E9402
-:10D1000067400E9473CD882379F180917D16843326
-:10D1100058F580917F168A3238F107E028E04AE21C
-:10D120006AE289E496E10F94C72305E022E04CE22D
-:10D1300062E389E496E10F94C72324E04AE061E3C7
-:10D140008AE20F948D2360914B1670914C1682E306
-:10D15000809365168BE28093661625E636E142E3FE
-:10D1600089E496E10F94452280917D16853350F431
-:10D1700080917F16813330F024E04AE461E386E356
-:10D180000F948D2380917D16843368F480917F16EF
-:10D19000823348F002E020911B0542E367E389E413
-:10D1A00096E10F94C72380917D16803378F48091A7
-:10D1B0007F16883258F080910A058093801680E3AC
-:10D1C000809381168BE095E00E94AD4280917D16A0
-:10D1D000883208F06FC080917F168D3108F46AC0E4
-:10D1E0002BE040E86DE180E00F948D2380917D1667
-:10D1F000873208F05FC080917F168F3108F45AC0E3
-:10D2000088E590E0A0E0B0E089839A83AB83BC839B
-:10D2100083E08093801616E210938116CE0101966A
-:10D220000E9467408BE08093801610938116DD206A
-:10D2300009F480C181E295E00E94AD4289E590E069
-:10D24000A0E0B0E089839A83AB83BC8388E28093BB
-:10D25000801616E210938116CE0101960E94674057
-:10D2600080E38093801610938116DD2009F48AC133
-:10D270008CE195E00E94AD428AE590E0A0E0B0E04C
-:10D2800089839A83AB83BC838DE48093801616E2F6
-:10D2900010938116CE0101960E94674085E5809328
-:10D2A000801610938116DD2009F494C186E295E082
-:10D2B0000E94AD4280917D168333A8F580917F1640
-:10D2C0008B3288F183E00E94AA3F86E090E0A0E0E4
-:10D2D000B0E089839A83AB83BC8383E0809380161C
-:10D2E00013E310938116CE0101960E94674081E0FE
-:10D2F0000E94AA3F80912002909121020E9492BD3B
-:10D300002CE020938016109381160E94AD4285E296
-:10D3100090E0A0E0B0E089839A83AB83BC83CE0128
-:10D3200001960E94674080917D16813408F069CB98
-:10D3300080917F16863308F464CB109280168EE3BA
-:10D340008093811689E192E10E94A724182F60E85A
-:10D3500070E089E192E10E94DDC780E2C82ED12C05
-:10D36000E12CF12C153108F04CCBC982DA82EB822A
-:10D37000FC82CE0101960E9467401F5FF3CFF4E666
-:10D38000EF16F10438F4DF921F937F92CF9287E675
-:10D3900096E074CDDF921F937F92CF928DE596E059
-:10D3A0009F938F938BE095E09F938F930F944839D1
-:10D3B0000FB6F894DEBF0FBECDBF86E06DCD85E120
-:10D3C00097E08ECD89EA96E0A4CDEF55F94FEBCDED
-:10D3D000C4010E9492BDFC01808193E0803229F457
-:10D3E000818192E0803209F491E0892F880F880FC3
-:10D3F000392F381B832F810F8093801687E080930D
-:10D400008116A3E0B0E0A91BB109CD018E0F9F1FCB
-:10D410000E94AD4249825A826B827C82CE01019683
-:10D420000E946740E2CDCB010E9492BDFC01808149
-:10D4300093E0803229F4818192E0803209F491E016
-:10D44000892F880F880FB92FB81B8B2F810F8093DE
-:10D450008016C092811623E030E0291B3109C901F2
-:10D460008E0F9F1F0E94AD4249825A826B827C823E
-:10D47000CE0101960E946740D5CD0E9492BDFC016D
-:10D48000808193E0803229F4818192E0803209F436
-:10D4900091E0892F880F880FA92FA81B8A2F865A01
-:10D4A0008093801687E08093811623E030E0291B6B
-:10D4B0003109CF01820F931F0E94AD4289E090E0B5
-:10D4C000A0E0B0E089839A83AB83BC83CE01019650
-:10D4D0000E946740CFCDCB010E9492BDFC018081AC
-:10D4E00093E0803229F4818192E0803209F491E066
-:10D4F000892F880F880FB92FB81B8B2F865A8093DE
-:10D5000080168CE18093811623E030E0291B3109DD
-:10D51000CF01820F931F0E94AD4289E090E0A0E00E
-:10D52000B0E089839A83AB83BC83CE0101960E94CD
-:10D530006740BACD0F94171180FF19C001E215E0C2
-:10D54000D8018D918D01882309F478CE8F320CF0AB
-:10D550008FE3082E000C990BAA0BBB0B89839A83CF
-:10D56000AB83BC83CE0101960E946740E9CF8091D6
-:10D57000E40880FD5FCE6FEF7FEF88E996E00E94C0
-:10D580007FC75CCE0F94171181FF19C00CE115E025
-:10D59000F80181918F01882309F46ECE8F320CF04F
-:10D5A0008FE3082E000C990BAA0BBB0B89839A837F
-:10D5B000AB83BC83CE0101960E946740E9CF809186
-:10D5C000E40881FD55CE6FEF7FEF88E996E00E9479
-:10D5D0007FC752CE0F94171182FF19C006E215E0E3
-:10D5E000D8018D918D01882309F464CE8F320CF01F
-:10D5F0008FE3082E000C990BAA0BBB0B89839A832F
-:10D60000AB83BC83CE0101960E946740E9CF809135
-:10D61000E40882FD4BCE6FEF7FEF80E996E00E9439
-:10D620007FC748CECF93DF93FC0125AD211104C005
-:10D6300021E025AF0F944922C0914B16D0914C1692
-:10D64000E0917A16F0917B1682E01995E0917A16B6
-:10D65000F0917B1681E0199530E020E044E1BE01B5
-:10D6600089E496E10F9445222CE736E147E1BE01BB
-:10D6700089E496E10F944522E0917A16F0917B16A9
-:10D6800080E0DF91CF9119944F925F926F927F92D9
-:10D690008F929F92AF92BF92CF92DF92EF92FF92C2
-:10D6A0001F93CF93DF93CDB7DEB760970FB6F89493
-:10D6B000DEBF0FBECDBF0F941E1D6B017C0180919C
-:10D6C00010028F3F09F44DC00F941E1D809030054D
-:10D6D00090903105A0903205B09033056819790912
-:10D6E0008A099B0997FD3DC08091091690910A1601
-:10D6F0008F5F8F708917A9F18091100240E050E090
-:10D7000065E073E4843050F424E0829FF00111243A
-:10D71000E655FD4F40815181628173814D875E875F
-:10D720006F87788B19821A821B821C821D821E824F
-:10D730001F82188619861A861B861C8640912F0523
-:10D74000833011F0409151099E012F5F3F4FBE0180
-:10D75000635F7F4F86E792E00E94ACA68FEF8093D5
-:10D7600010020E94603E8091FF0382FF33C08091CF
-:10D770003B05811131C091E090933B0580914F09A9
-:10D78000892780933F0910924F0983E080937502A7
-:10D790001092FF030F941E1D6C507E4F8F4F9F4FB2
-:10D7A00060933E0570933F0580934005909341053B
-:10D7B00068E873E182E090E00E948D2B16E0115042
-:10D7C00059F00E94312B62E070E080E090E00F940D
-:10D7D000911CF5CF10923B058091FB039091FC03C7
-:10D7E000A091FD03B091FE03A7019601281B390B00
-:10D7F0004A0B5B0BDA01C901B7FF05C080919405A4
-:10D80000882309F4BDC1D701C6018C599F4FAF4F82
-:10D81000BF4F8093FB039093FC03A093FD03B09351
-:10D82000FE0360913C05062E000C770B77FF03C0CA
-:10D8300071956195710990913C0580913A05981315
-:10D8400065C0633008F062C010923C0580913C05D1
-:10D8500080933A05653008F06BC080913F098111D3
-:10D86000E9C080914316909144168D5C944641F432
-:10D8700080911102882309F4EFC081508093110236
-:10D880000E943C958090CE059090CF05A090D00549
-:10D89000B090D10581110E944995D501C4013AE0AB
-:10D8A000B695A795979587953A95D1F7009741E05A
-:10D8B000A407B10520F08FEF9FEFA0E0B0E09695B0
-:10D8C0008795209175022111D9C0309194053111AD
-:10D8D00086C180914316909144168D5C944609F45C
-:10D8E00065C180914009811161C180913605909197
-:10D8F0003705A0913805B0913905C81AD90AEA0A46
-:10D90000FB0AF7FC61C10E945E2D5EC18DEF860FA0
-:10D91000823008F09BCF80913C0591E087FD9FEF1E
-:10D92000892F880F880F890F80933C0565E08ECF83
-:10D930008091450921E030E040E050E0882309F47F
-:10D9400056C08090410990904209A0904309B09040
-:10D95000440981149104A104B104E9F170E090E05C
-:10D9600080E00F94B63920E030E040EA50E40F94B4
-:10D97000023F2B013C01C701B601681979098A09E8
-:10D980009B090F94B6399B01AC01C301B2010F94FE
-:10D99000023F20E030E04AE754E40F94173A4B018D
-:10D9A0005C0120E030E040EA52E40F94684024E655
-:10D9B00030E040E050E087FF12C020E030E040EF70
-:10D9C00051E4C501B4010F9468402AE030E040E022
-:10D9D00050E087FF04C021E030E040E050E0C0921A
-:10D9E0004109D0924209E0924309F0924409A09182
-:10D9F0003C050A2E000CBB0B0F94F03D25E030E0F7
-:10DA000040E050E00F94C63D80913B0990913C0965
-:10DA1000A0913D09B0913E09820F931FA41FB51F2D
-:10DA200080933B0990933C09A0933D09B0933E0934
-:10DA300010923C05D701C6018856954CAF4FBF4F99
-:10DA40008093360590933705A0933805B093390538
-:10DA500081E08093750205CF8CE080931102809164
-:10DA6000340590913505009729F00197909335057D
-:10DA70008093340581E08093750202CF009741F0D6
-:10DA800040913405509135054817590708F021CFCA
-:10DA900080919405811112C0223038F0243008F4AE
-:10DAA00041C0243011F41092750285E496E10E9481
-:10DAB000126B81E0809397058093940583E00E9428
-:10DAC000AA3F81E080936916E0914316F0914416D5
-:10DAD00019951092970580919405811127C0109295
-:10DAE0003F0980914316909144168D5C944609F04D
-:10DAF000F8CE0F941E1DDC01CB018C199D09AE09D7
-:10DB0000BF098090340590903505B12CA12C881662
-:10DB10009906AA06BB0608F0DCCE909335058093E3
-:10DB20003405D7CE81E080937502BFCF89E496E1BA
-:10DB30000F94E72491E0811101C090E09093940547
-:10DB4000882369F280914316909144168D5C944627
-:10DB5000B9F40F941E1DDC01CB018C199D09AE098F
-:10DB6000BF09C0903405D0903505F12CE12CC816C2
-:10DB7000D906EA06FB0620F4909335058093340518
-:10DB800060960FB6F894DEBF0FBECDBFDF91CF9188
-:10DB90001F91FF90EF90DF90CF90BF90AF909F903C
-:10DBA0008F907F906F905F904F90089548E9C40EDA
-:10DBB0004AE3D41EE11CF11CC0923605D092370511
-:10DBC000E0923805F0923905809194058111D8CF03
-:10DBD000809175028130A1F610927502D1CF009725
-:10DBE00009F46CCF4DCF3F924F925F926F927F922C
-:10DBF0008F929F92AF92BF92CF92DF92EF92FF925D
-:10DC00000F931F93CF93DF93CDB7DEB7EB970FB68C
-:10DC1000F894DEBF0FBECDBF8FEF80931B028091C3
-:10DC20009705882369F18091A21700E010E084FF36
-:10DC300023C089E894E10E945F808BE1E9E8F4E188
-:10DC4000DE01919601900D928A95E1F710E000E0D7
-:10DC5000BE016F5F7F4FCE0181960F946C0E181638
-:10DC60003CF4CE0101960E94F579080F111DF0CF0A
-:10DC7000CE0181960E9464800093950510939605CD
-:10DC800061E081E00E9432231091A105412E85E0E0
-:10DC9000582E510E312E319491E1A92E9FE1B92ECB
-:10DCA00024E1822E2DE0922E81E0682E611A11115E
-:10DCB00011C00091A005002329F1809175028823ED
-:10DCC00049F081E0011180E024E049E15DE0632D4D
-:10DCD0000F941E158091A21786FD59C084FF57C06E
-:10DCE000113009F052C00091A005013079F1809106
-:10DCF0007502811138C082E01F5F5112D8CF809326
-:10DD00009E050CC080913F0910923F098823A9F21B
-:10DD10000E946C2E80919F05882379F2EB960FB6B6
-:10DD2000F894DEBF0FBECDBFDF91CF911F910F9151
-:10DD3000FF90EF90DF90CF90BF90AF909F908F902B
-:10DD40007F906F905F904F903F90089580913F0932
-:10DD500010923F09882359F20E94111F80919F055C
-:10DD6000882329F2DBCFBF92AF929F928F926F925E
-:10DD700081E0013009F080E08F930E947D250F90B3
-:10DD80000F900F900F900F900F9082E001C081E0F4
-:10DD900090917502992309F4AFCF082FD12CC12C93
-:10DDA000712E7418802FE0909505F0909605CE1492
-:10DDB000DF0408F0A1CF0113A9C081E0E81AF1083F
-:10DDC000EC18FD0889E894E10E945F808BE1E9E8A6
-:10DDD000F4E1DE01919601900D928A95E1F7F12C24
-:10DDE000BE016F5F7F4FCE0181960F946C0E1816A7
-:10DDF0007CF4CE0101960E94F579882389F3EF1017
-:10DE00006BC0BE016F5F7F4F89E79FE00E94127A6F
-:10DE1000CE0181960E9464808091A217F090A005A7
-:10DE200085FF79C0F11263C080913F0910923F09CC
-:10DE3000882309F45CC019821C8280918C1464EAE6
-:10DE400074E1882311F069E874E121E049E75FE0BB
-:10DE5000CE0101960E946A80882309F43FC08BE1BD
-:10DE6000FE013196A9E8B4E101900D928A95E1F79F
-:10DE70008091A2178F7B8093A217A0919717AA3049
-:10DE800080F481E08A0F809397178BE18A9FD001FD
-:10DE90001124A757B94EE9E8F4E101900D928A9553
-:10DEA000E1F7CE0101960E9464801092A10582E004
-:10DEB00090E0A0E0B0E080933B0990933C09A093F0
-:10DEC0003D09B0933E0981E080939F05109294052F
-:10DED00083E08093750222CFF39482CF0E940FD803
-:10DEE00069E77FE08EEF9CE00F94E226DACF809125
-:10DEF0007502882359F0EE24E394F112E12C6E2D83
-:10DF0000872D0E94733F41E0811116C08FEFC81A20
-:10DF1000D80A0F5F47CFF116A1F0809175028823D0
-:10DF2000A9F3EE24E394F112E12C6E2D872D0E94CB
-:10DF3000733F882359F340E0672D8E2D0F944014D2
-:10DF4000E5CF80913F0910923F09882331F381EE9C
-:10DF500096E20E947D2480919F058823F1F2DECE17
-:10DF6000DC01680F791F90E080E02D91E92FFF27F9
-:10DF7000E227EE0FFF1FE656FB4D25913491982FB7
-:10DF80008827822793276A177B0779F708950F93CD
-:10DF90001F93CF93DF93CDB7DEB760970FB6F8949A
-:10DFA000DEBF0FBECDBF8C01DC01ED91FC91028084
-:10DFB000F381E02DBE016F5F7F4F1995882309F42F
-:10DFC00064C08981807CC9F56F81637070E0762FB1
-:10DFD0006627770F770F8885B4E08B9FC0011124E7
-:10DFE000682B792B89858295869586958370682B19
-:10DFF0006F5F7F4F90E080E02A852370220F3B8582
-:10E0000037FB332730F9232B3E813F70230F332713
-:10E01000331F2750310904C0660F771F881F991FCF
-:10E020002A95D2F760960FB6F894DEBF0FBECDBF2B
-:10E03000DF91CF911F910F910895803419F5688574
-:10E040006695669570E090E080E0CB0177276627C3
-:10E050002A85622B098510E0102F0027012E000C65
-:10E06000220B330B602B712B822B932B6F5F7F4F17
-:10E070008F4F9F4F4AE0660F771F881F991F4A9561
-:10E08000D1F7D0CF8BE0F801848360E070E0CB0162
-:10E09000C9CF0895FC0182810895CF93DF93E09169
-:10E0A000390687E1E89FF0011124E15CF94FC08552
-:10E0B000D18581E0CE31D105C4F020E030E040E0F0
-:10E0C0005FE364817581868197810F94083E0F9488
-:10E0D000743F6C1B7D0B77FF03C0719561957109CF
-:10E0E00081E0633071050CF080E0DF91CF910895FD
-:10E0F000FC0190E1AFEAB7E001900D929A95E1F74B
-:10E100000895BC012091A0073091A1074091A0077C
-:10E110005091A1072417350731F481E026173707FE
-:10E1200009F080E008959A01F1CFEF92FF920F93EA
-:10E130001F93E0920306F0920406009305061093E5
-:10E1400006066093070670930806809309069FEF02
-:10E15000FF27621B730B840B30F4809570956195DB
-:10E16000790B890B992790930E08A6E06A9F00927D
-:10E170000208512DEE277A9F500DE11D8A9FE00D78
-:10E1800050930308E0930408AFE06A9F00920608EA
-:10E19000512DEE277A9F500DE11D8A9FE00D50937F
-:10E1A0000708E0930808AAE06A9F00920A08512D28
-:10E1B000EE277A9F500DE11D8A9FE00D50930B08CA
-:10E1C000E0930C081F910F91FF90EF90089580E06D
-:10E1D00008959F92AF92BF92CF92DF92EF92FF92FB
-:10E1E0000F931F93CF93DF9300D01F921F92CDB751
-:10E1F000DEB7EBEBF6E10027BB27462F572FA82F02
-:10E20000AA2341F4A52F542FB85FAA2319F4A52FF0
-:10E210005527B85FA03138F45295A295452F4F701D
-:10E22000507FA42BBC5FA03428F4550FAA1F550FB4
-:10E23000AA1FBE5FA03818F4550FAA1FB395550F3B
-:10E24000AA1FEA0FF01F449151E0AA27B85081F1AC
-:10E25000C8F0B0FF02C0440F551FB1FF04C0440F07
-:10E26000551F440F551FB2FF06C052954295142FFB
-:10E270001F70407F512BB3FF1BC0A52F542F442785
-:10E280000C945871B195B0FF02C055954795B1FFF8
-:10E2900004C05595479555954795B2FF05C05295D1
-:10E2A000407F4295452B5F70B3FF02C0452F552735
-:10E2B000DD24CC24BB24B2E0649FD018C108B00A8E
-:10E2C000B00B749FC018B108B00B849FB018B1098F
-:10E2D000659FC018B108B00B759FB018B109859F34
-:10E2E000B0196A9FB018B1097A9FB0194D9DA12C41
-:10E2F00099243327992722275D9DA00C911C301F5C
-:10E30000901F201FAD9D900C311D901F201F4C9D14
-:10E31000A00C911C301F901F201F5C9D900C311D84
-:10E32000901F201FAC9D300D911D201F4B9D900C08
-:10E33000311D901F201F5B9D300D911D201FAB9D37
-:10E34000900D211D4B9F300D911D201F5B9F900D47
-:10E35000211DAB9F200DB1E0BB24CC24DD24639FA5
-:10E36000D018C108B00AB00B739FC018B108B00B29
-:10E37000839FB018B109699FC018B108B00B799F8D
-:10E38000B018B109899FB019629FB018B109729F86
-:10E39000B019D61AC70AB80A20F0B1E03B0F901F97
-:10E3A000201F1124792F632F90E0822F0F900F9060
-:10E3B0000F900F900F90DF91CF911F910F91FF90D1
-:10E3C000EF90DF90CF90BF90AF909F9008957F9295
-:10E3D0008F929F92AF92BF92CF92DF92EF92FF9275
-:10E3E0000F931F93CF93DF937090F105C6EBD5E0A9
-:10E3F00092E2C92E92E0D92E26E2E22E22E0F22EFF
-:10E4000009EE15E0772009F45EC0F8018080918064
-:10E41000A280B38020E030E0A901C501B4010F94CF
-:10E42000B139882309F44FC020E030E040E05FE3D9
-:10E43000C501B4010F94173A9B01AC010F94173A30
-:10E440002BED3FE049E450E40F94173A9B01AC01F7
-:10E4500060E070E080E89FE30F94023F4B015C01B5
-:10E4600089929992A992B992F601619171916F0185
-:10E47000072E000C880B990B0F94B8392AE037ED62
-:10E4800043E25CE30F94173AA50194010F94173A05
-:10E49000F70161937193819391937F010C5F1F4FFB
-:10E4A000F5E0CE3BDF0709F0ADCFDF91CF911F91B3
-:10E4B0000F91FF90EF90DF90CF90BF90AF909F9023
-:10E4C0008F907F900895812C912C80E8A82E8FE367
-:10E4D000B82EC6CFFC01908193FB882780F993FF6B
-:10E4E0000E94E770811102C081E0089580E00895E4
-:10E4F000CF92DF92EF92FF920F931F93CF93DF9310
-:10E50000E82FF0E0EF01CC0FDD1FCC0FDD1F461729
-:10E5100039F0823009F049C0C12CD12C760117C0E6
-:10E520008230D1F3A09151098A2F90E0DC01AA0F2B
-:10E53000BB1FA80FB91FAE0FBF1FAA0FBB1FAA0F8B
-:10E54000BB1FA259B94FCD90DD90ED90FC908F018B
-:10E55000000F111F000F111FF801E059FB4E25910C
-:10E56000359145915491C95CDD4FC701B6010F94B7
-:10E57000083E6A837B838C839D83F801EC59FB4EB4
-:10E580002591359145915491C701B6010F94083EEC
-:10E590006E877F87888B998BDF91CF911F910F9129
-:10E5A000FF90EF90DF90CF90089550E0DA01AA0F2E
-:10E5B000BB1FA40FB51FAE0FBF1FAA0FBB1FAA0F13
-:10E5C000BB1FA259B94F862F90E0BC01660F771F81
-:10E5D000680F791FE60FF71FEE0FFF1FEE0FFF1FEB
-:10E5E000E259F94F20813181428153816D917D91B2
-:10E5F0008D919C910F94073E6B017C01C95CDD4FAE
-:10E60000AC019B016A817B818C819D810F94083EC6
-:10E610006A837B838C839D83A70196016E857F85AA
-:10E6200088899989B3CFCF93DF93EC018D810E94C4
-:10E63000CFDD60E08B81DF91CF910D945D18AF92BB
-:10E64000BF92DF92EF92FF920F931F93CF93DF93CE
-:10E6500000D000D0CDB7DEB77C01D62E122F032F0D
-:10E66000B42EA52E0E9413730F942A1D1E821D82A4
-:10E670008D2D80648983AA82BB820C831D838E01C9
-:10E680000F5F1F4FCE010696D801E0E02D91F0E01C
-:10E69000EE0FFF1FE227E656FC4DE491A817B907DD
-:10E6A000A9F7EE0FE160EE83580186E0A80EB11CD9
-:10E6B000F80181918F010E94C3DD0A151B05C1F786
-:10E6C000FCE0DF1202C00E94C8DD10E00E94C8DD3D
-:10E6D000F701868387FF04C01F3F11F01F5FF6CF4D
-:10E6E00026960FB6F894DEBF0FBECDBFDF91CF9157
-:10E6F0001F910F91FF90EF90DF90BF90AF90089522
-:10E7000061E0FC0183810F945D188FEF0C94C3DDF1
-:10E710000F931F93CF938C010E9413730F942A1DA4
-:10E72000C82F882371F08DEF0E94C3DD0F942A1D3E
-:10E73000C82FC8010E9480738C2FCF911F910F9119
-:10E74000089582E1F8018483F4CF8F929F92AF9273
-:10E75000BF92CF92DF92EF92FF920F931F93CF93CE
-:10E76000DF93EC016A017B01590120E030E0A9014F
-:10E7700067E30E941F73A501980167E1CE010E9423
-:10E780001F73811127C08F81833039F089E0CC0C51
-:10E79000DD1CEE1CFF1C8A95D1F7A701960169E1EB
-:10E7A000CE010E941F7311E0882319F010E087E06A
-:10E7B0008C83CE010E948073812FDF91CF911F91B6
-:10E7C0000F91FF90EF90DF90CF90BF90AF909F9010
-:10E7D0008F90089589E08C8310E0EBCFEF92FF9249
-:10E7E0000F931F93CF93DF93EC01E62E8A0160E035
-:10E7F00072E0CA010E94B06FF82E892FEEBCF801BA
-:10E8000098013E5F0DB407FEFDCF90819EBD0DB413
-:10E8100007FEFDCF91819EBD3296E217F30791F777
-:10E820000DB407FEFDCF0E94C3DD8F2D0E94C3DD16
-:10E830000E94C8DD8E838F71853069F083E18C83FF
-:10E84000CE010E94807380E0DF91CF911F910F91E4
-:10E85000FF90EF90089581E0F7CF0F931F93CF9330
-:10E86000DF93EC018B010E9413730F942A1D811119
-:10E870000CC085E18C8310E0CE010E948073812F53
-:10E88000DF91CF911F910F910895A8016CEFCE01F8
-:10E890000E94EE73182F882361F3EECF0F931F931E
-:10E8A000CF93DF93EC0189018F81833039F089E0C8
-:10E8B000440F551F661F771F8A95D1F79A01AB0148
-:10E8C00068E1CE010E941F7381112AC0A8016EEF7A
-:10E8D000CE010E94EE73182F8823B1F00F942A1DE9
-:10E8E000182F8823D1F020E030E0A9016DE0CE019F
-:10E8F0000E941F73882321F086E18C8310E004C0FE
-:10E900000E94C8DD8111F8CFCE010E948073812F53
-:10E91000DF91CF911F910F91089587E18C83F4CF00
-:10E9200086E0EBCF1F93CF93DF93EC010E9413732C
-:10E9300020E030E0A9016CE0CE010E941F7311E0DD
-:10E94000882319F010E083E08C83CE010E9480734D
-:10E95000812FDF91CF911F9108951F93CF93DF9364
-:10E96000EC018F81833039F089E0440F551F661F19
-:10E97000771F8A95D1F79A01AB0162E1CE010E941F
-:10E980001F7311E0882319F010E085E08C83CE011D
-:10E990000E948073812FDF91CF911F9108958F92F4
-:10E9A0009F92AF92BF92CF92DF92FF920F931F93ED
-:10E9B000CF93DF93EC018B016A010F941E1D4B0175
-:10E9C0005C012CE2820E21E0921EA11CB11C0E946F
-:10E9D000C8DD8E838F3F61F40F941E1D681979097D
-:10E9E0008A099B0997FDF3CF81E18C8310E028C051
-:10E9F0008E3F09F040C0C60101972FEF2EBDF801F0
-:10EA00004FEF0DB407FEFDCF2EB521934EBD9F01F4
-:10EA1000201B310B28173907A0F30DB407FEFDCFDB
-:10EA20002EB5800F911FFC0120830E94C8DDF82EB7
-:10EA30000E94C8DDB82E80915502811111C011E0ED
-:10EA4000CE010E948073812FDF91CF911F910F9192
-:10EA5000FF90DF90CF90BF90AF909F908F900895E0
-:10EA6000B601C8010E94B06F3F2D2B2D821793076E
-:10EA700031F38BE1BACF8FE0B8CF0F931F93CF93D1
-:10EA8000DF93EC018B010E94137340E052E0B80168
-:10EA9000CE01DF91CF911F910F910C94CF74AF9263
-:10EAA000BF92CF92DF92EF92FF920F931F93CF937B
-:10EAB000DF93EC016A017B0159018F81833039F0CA
-:10EAC00089E0CC0CDD1CEE1CFF1C8A95D1F713E00D
-:10EAD00004E0A701960161E1CE010E941F73882323
-:10EAE00079F00C83CE010E9480731150E1F020E098
-:10EAF00030E0A9016CE0CE010E941F731C82E9CFB7
-:10EB000040E052E0B501CE010E94CF74882351F35A
-:10EB1000DF91CF911F910F91FF90EF90DF90CF90F9
-:10EB2000BF90AF90089580E0F3CF8F929F92AF9205
-:10EB3000BF92CF92DF92EF92FF920F931F93CF93EA
-:10EB4000DF93EC01162F1F821C824B830F941E1D36
-:10EB50006B017C0120EDC20E27E0D21EE11CF11CEE
-:10EB6000A89561E08B810F945D1861E08B810F9413
-:10EB70002C1B209A289A219A2398229A81E00E949D
-:10EB8000CFDD85E08D830E94CFDD0AE08FEF0E940C
-:10EB9000C3DD0150D9F7A89520E030E0A90160E07D
-:10EBA000CE010E941F738E83813081F00F941E1D51
-:10EBB0006C197D098E099F0997FDEECF81E08C834A
-:10EBC000CE010E9480731A8280E078C021E030E09C
-:10EBD00040E050E06BE3CE010E941F7391E0813072
-:10EBE00009F090E090935502A8952AEA31E040E0C0
-:10EBF00050E068E0CE010E941F73853041F581E04E
-:10EC00008F83A8958F81812C912C5401823029F417
-:10EC1000812C912CA12C80E4B82E20E030E0A901B9
-:10EC200067E3CE010E941F73A501940169E2CE0142
-:10EC30000E941F738E838823F1F00F941E1D6C19A0
-:10EC40007D098E099F0997FDE8CF8AE0B8CF04E0DF
-:10EC50000E94C8DD8E830150D9F78A3A11F482E010
-:10EC6000CFCF0F941E1D6C197D098E099F0997FD4A
-:10EC7000BCCF82E0A4CF8F818230C1F420E030E0AD
-:10EC8000A9016AE3CE010E941F73882311F088E076
-:10EC900096CF0E94C8DD807C803C11F483E08F8396
-:10ECA0000E94C8DD0E94C8DD0E94C8DDCE010E941E
-:10ECB000807381E08A83173070F41D83DF91CF91D8
-:10ECC0001F910F91FF90EF90DF90CF90BF90AF908A
-:10ECD0009F908F90089588E18C8376CF0F931F9338
-:10ECE000CF93DF93EC018B0120E030E0A90169E0D4
-:10ECF0000E941F7381110AC040E150E0B801CE01AB
-:10ED0000DF91CF911F910F910C94CF7480E18C8390
-:10ED1000CE010E94807380E0DF91CF911F910F910F
-:10ED200008950F930091020621E0022725E537E0C0
-:10ED30004CE050E0BC0183E597E00E9461CE0F916A
-:10ED400008950F930091020621E0022725E537E0A0
-:10ED500041E050E0BC0183E597E00E9461CE0F9155
-:10ED600008950F930091020621E0022725E537E080
-:10ED700041E050E0BC0183E597E00E9461CE0F9135
-:10ED800008950F930091020621E0022725E537E060
-:10ED900048E050E0BC0183E597E00E9461CE0F910E
-:10EDA00008950F930091020621E0022725E537E040
-:10EDB0004CE050E0BC0183E597E00E9461CE0F91EA
-:10EDC00008950F930091020621E0022725E537E020
-:10EDD00044E050E0BC0183E597E00E9461CE0F91D2
-:10EDE00008950F9301E025E537E041E050E0BC01D4
-:10EDF00083E597E00E9461CE0F9108950F93AB01D8
-:10EE00000091020621E0022725E537E0BC0183E5F9
-:10EE100097E00E9461CE0F91089525E537E04CE020
-:10EE200050E0BC0183E597E00C9494DA25E537E0E7
-:10EE300041E050E0BC0183E597E00C9494DA25E5CD
-:10EE400037E041E050E0BC0183E597E00C9494DAB0
-:10EE500025E537E04CE050E0BC0183E597E00C94F9
-:10EE600094DA25E537E044E050E0BC0183E597E023
-:10EE70000C9494DACF93C82FCB010E94ACCE85E3DB
-:10EE800094E10E94ACCE86E294E1CC2311F08BE2B7
-:10EE900094E1CF910C9409DB2F923F924F925F92B5
-:10EEA0006F927F928F929F92AF92BF92CF92DF929A
-:10EEB000EF92FF920F931F93CF93DF93CDB7DEB7FF
-:10EEC0006C970FB6F894DEBF0FBECDBF8C015B010F
-:10EED0005A834983FC01E95BFF4F208031804280E7
-:10EEE00053802D823E824F825886C201B1010F9419
-:10EEF000B6396B017C01D5012D913D914D915C910D
-:10EF00000F94173A0F94E63E2B013C01E981FA81F8
-:10EF10002081318142815381C701B6010F94173A94
-:10EF20000F94E63E4B015C01C301B2010F947B3F9D
-:10EF30006D877E878F87988B68377105810591056E
-:10EF400048F438E7232E312C412C512C2D863E8657
-:10EF50004F86588AC501B4010F947B3F698B7A8B29
-:10EF60008B8B9C8B683771058105910548F428E7E8
-:10EF7000222E312C412C512C298A3A8A4B8A5C8AC8
-:10EF8000F801ED5AFF4F80809180A280B380D801B4
-:10EF900095962D903D904D905C90989729863A8655
-:10EFA0004B865C86C501B4010F94B8396D8B7E8B9E
-:10EFB0008F8B988F89288A288B2809F49CC1A701F8
-:10EFC0009601C701B6010F94173A69837A838B8340
-:10EFD0009C836D857E858F8598890F94B6399B01BA
-:10EFE000AC010F94173A698F7A8F8B8F9C8F2D8984
-:10EFF0003E894F89588D60E070E080E09FE30F9478
-:10F00000023F4B015C01298D3A8D4B8D5C8D6981EE
-:10F010007A818B819C810F94073EA50194010F9406
-:10F02000173A6B017C010F94E63E0F947B3F1B0166
-:10F030002C0169897A898B899C890F94B6399B0147
-:10F04000AC010F94173A9B01AC0169817A818B81E5
-:10F050009C810F94073EA50194010F94173A4B0130
-:10F060005C010F94AA3F0F947B3F69837A838B8363
-:10F070009C83DC01CB01820D931DA41DB51D298548
-:10F080003A854B855C85281B390B4A0B5B0BDA01F3
-:10F09000C901B7FF61C069857A858B859C850F940E
-:10F0A000B639A70196010F94083EA50194010F946B
-:10F0B000073E20E030E040E05FE30F94173A0F9402
-:10F0C000E63E6B017C0120E030E0A9010F9468402E
-:10F0D00018161CF0C12CD12C7601C701B6010F9473
-:10F0E0007B3F1B012C0149855A856B857C85421528
-:10F0F00053056405750510F41A012B0169857A859D
-:10F100008B859C85621973098409950969837A83C3
-:10F110008B839C83C201B1010F94B6396B017C01D2
-:10F120002D893E894F89588DCA01B9010F94083E37
-:10F130009B01AC01C701B6010F94173A298D3A8D96
-:10F140004B8D5C8D0F94083E0F94B6400F947B3F1F
-:10F150006D837E838F8398876D817E818F81988573
-:10F160002D853E854F855889621B730B840B950B4B
-:10F170000F94B6392D893E894F89588D0F94023FDF
-:10F1800020E034E244EF59E40F94173A0F947B3FA8
-:10F190006B017C016D817E818F81988529893A89F7
-:10F1A0004B895C89621B730B840B950B0F94B639EA
-:10F1B0002D893E894F89588D0F94023F20E034E21B
-:10F1C00044EF59E40F94173A0F947B3F4B015C01D5
-:10F1D0003FE6C316D104E104F10408F094C0F6013F
-:10F1E000EE0FFF1FEE0FFF1FE150FB4E8591959133
-:10F1F000A591B4913C01AD8BB9874FE6841691047B
-:10F20000A104B10408F087C0F401EE0FFF1FEE0F58
-:10F21000FF1FE150FB4E4591559165917491342F3C
-:10F22000252FCB01D8019A962D923D924D925C925A
-:10F230009D9795964D915D916D917C9198972980C0
-:10F240003A804B805C8042195309640975099E9687
-:10F250004D935D936D937C93D197F801E55BFF4FE0
-:10F260002D843E844F84588820823182428253828A
-:10F27000D696CD92DD92ED92FC92D997F80182AEAE
-:10F2800093AEA4AEB5AEFE96608271822D882282C6
-:10F2900039843382349630832183828393832D8013
-:10F2A0003E804F805884D2962D923D924D925C9232
-:10F2B000D5973D9629883A884B885C882082318290
-:10F2C000428253826C960FB6F894DEBF0FBECDBF5C
-:10F2D000DF91CF911F910F91FF90EF90DF90CF9032
-:10F2E000BF90AF909F908F907F906F905F904F9066
-:10F2F0003F902F90089519821A821B821C82212C24
-:10F30000312C210129CFC701B6010E94E9703B01D0
-:10F310008D8B998772CFC501B4010E94E970362F99
-:10F32000272F80CF8091A21784FF04C08460877F3D
-:10F330008093A2170895CF92DF92EF92FF920F93DE
-:10F340001F93CF93DF93CDB7DEB7EDB6FEB6DC01EA
-:10F350000D900020E9F79D01281B390B285F3F4FD6
-:10F36000EDB7FEB7E21BF30B0FB6F894FEBF0FBE6E
-:10F37000EDBF0DB71EB70F5F1F4F9F938F9380E1B7
-:10F3800097E29F938F931F930F930F9448396801CF
-:10F39000F4E0CF0ED11C0F900F900F900F900F90B4
-:10F3A0000F90D6018D916D01882349F0082E000C35
-:10F3B000990B0F94B141F60131978083F2CF6BE046
-:10F3C00077E2C8010F94E838C8010E94E12B0FB61C
-:10F3D000F894FEBE0FBEEDBEDF91CF911F910F914D
-:10F3E000FF90EF90DF90CF900895FC01938591FFFF
-:10F3F00002C080E00895987121E0903109F020E08A
-:10F400008091A21720FB85F98093A217903141F0DB
-:10F410008085873471F781E091859E3751F3089597
-:10F4200081E0FDCFFC0120E03EE2DB014D91BD011A
-:10F43000403249F0283011F430833196DB011197C6
-:10F440004C91408331962F5F2B3079F710820895CD
-:10F45000CF9380914D14C1E08823C9F080914E1460
-:10F4600090914F1440914514509146146091471467
-:10F4700070914814DC01ED91FC910288F389E02D34
-:10F4800025E432E11995C82F811104C0C0E08C2F0A
-:10F49000CF9108954091491450914A1460914B14B2
-:10F4A00070914C144115510561057105B9F08091B9
-:10F4B0004E1490914F14DC01ED91FC910288F38978
-:10F4C000E02D25E432E11995882301F310924914C7
-:10F4D00010924A1410924B1410924C1410924D1426
-:10F4E000D6CFCF92DF92EF92FF92CF936B017C0148
-:10F4F000C42F8091451490914614A0914714B09167
-:10F5000048148C159D05AE05BF0529F10E94287A87
-:10F51000811108C0C0E08C2FCF91FF90EF90DF9059
-:10F52000CF90089580914E1490914F14DC01ED918D
-:10F53000FC910088F189E02D25E432E1B701A601B4
-:10F540001995882339F3C0924514D0924614E0925D
-:10F550004714F0924814CC2321F081E080934D149D
-:10F56000DACFC1E0D8CF4F925F926F927F928F92A5
-:10F570009F92AF92BF92CF92DF92EF92FF920F9342
-:10F580001F93CF93DF93EC01423051056105710564
-:10F5900090F480E0DF91CF911F910F91FF90EF9059
-:10F5A000DF90CF90BF90AF909F908F907F906F90A3
-:10F5B0005F904F90089589859A85AB85BC850196AB
-:10F5C000A11DB11D84179507A607B70710F38F89F2
-:10F5D0008031C9F5852E962EA72EBB248B899C8958
-:10F5E000AD89BE89880E991EAA1EBB1E280139014D
-:10F5F0006A017B0141E0C501B4010E94717A882350
-:10F6000041F29F89903181F5DD24EE24FF24F6013B
-:10F61000EE0FFF1FEB5BFD4E118300839A89923042
-:10F6200008F4B8CF4D815E816F817885840E951E78
-:10F63000A61EB71E8092491490924A14A0924B14B1
-:10F64000B0924C14A7CF803209F0A3CF8B899C894C
-:10F65000AD89BE894A015B01E7E0B694A79497940F
-:10F660008794EA95D1F7BECFE894C7F8DD24EE245D
-:10F67000FF24F601EE0FFF1FEE0FFF1FEB5BFD4EA9
-:10F680004082518262827382C9CFCF92DF92EF9221
-:10F69000FF920F931F93CF93DF93FC018185928597
-:10F6A000A385B4850196A11DB11D84179507A607F2
-:10F6B000B70750F480E0DF91CF911F910F91FF9039
-:10F6C000EF90DF90CF90089587898031A9F5BB270F
-:10F6D000A72F962F852FC388D488E588F6888C0DB0
-:10F6E0009D1DAE1DBF1DE9016A017B018F01409187
-:10F6F0004514509146146091471470914814841732
-:10F700009507A607B70749F5F8018789803169F59C
-:10F71000B701A601552766277727440F551F4B5B76
-:10F720005D4EFA0180819181B0E0A0E088839983E9
-:10F73000AA83BB8381E0BFCF803209F0BBCFC388EF
-:10F74000D488E588F688DB01CA01C7E0B695A7959D
-:10F7500097958795CA95D1F7C2CF40E0BC01CD01FE
-:10F760000E94717A8111D0CFA5CFB701A6014F7742
-:10F77000552766277727440F551F440F551F4B5BAE
-:10F780005D4EFA0180819181A281B381BF70CECF9D
-:10F790004F925F926F927F92AF92BF92CF92DF9221
-:10F7A000EF92FF920F931F93CF93DF9300D01F929E
-:10F7B000CDB7DEB78C0149835A836B837C835901B3
-:10F7C000C12CD12C7601412C82E0582E612C712C59
-:10F7D00049815A816B817C819E012F5F3F4FC80117
-:10F7E0000E94457B882319F1F8018585A3019201C8
-:10F7F00004C0220F331F441F551F8A95D2F7DA0128
-:10F80000C901C80ED91EEA1EFB1E49815A816B81AF
-:10F810007C8187898031F1F481E0483F5F4F610549
-:10F820007105B0F2F501C082D182E282F3820F90BD
-:10F830000F900F900F90DF91CF911F910F91FF903C
-:10F84000EF90DF90CF90BF90AF907F906F905F90E0
-:10F850004F90089581E0483F5F4F6F4F7F4008F41D
-:10F86000B7CFE0CF0F931F93CF93DF93FC0123819A
-:10F87000222331F080E0DF91CF911F910F91089505
-:10F880008B01EC01FB018789803139F582E08B83A4
-:10F890001D8A1E8A1F8A188E808D918DB0E0A0E08F
-:10F8A00025E0880F991FAA1FBB1F2A95D1F7898BC6
-:10F8B0009A8BAB8BBC8B1A8F098F81E0898318865A
-:10F8C00019861A861B861C821D821E821F82188A38
-:10F8D0001C861D861E861F86CECF803259F683E099
-:10F8E0008B83428D538D648D758D4D8B5E8B6F8BAD
-:10F8F000788F9E012F5E3F4FC8010E94C87B811107
-:10F90000DACFB8CF8F929F92AF92BF92CF92DF9211
-:10F91000EF92FF920F931F93CF93DF93EC018B81B4
-:10F9200081110EC080E0DF91CF911F910F91FF9068
-:10F93000EF90DF90CF90BF90AF909F908F90089501
-:10F9400009891A892B893C89041715072607370767
-:10F9500048F34A015B01823031F488869986AA8691
-:10F96000BB8681E0E0CF81149104A104B10449F485
-:10F97000188619861A861B861C821D821E821F828B
-:10F98000F0CF088519852A853B85E98DFA8D858517
-:10F9900090E00996B901A801415051096109710926
-:10F9A000082E04C076956795579547950A94D2F727
-:10F9B00075016401E1E0CE1AD108E108F10804C044
-:10F9C000F694E794D794C7948A95D2F7C416D506CF
-:10F9D000E606F70620F0012B022B032B11F58D898B
-:10F9E0009E89AF89B88D8C839D83AE83BF838E0142
-:10F9F0000C5F1F4FC114D104E104F10409F4ADCF31
-:10FA00004C815D816E817F819801898D9A8D0E94E4
-:10FA1000457B91E0C91AD108E108F1088111EACFCC
-:10FA200081CFC41AD50AE60AF70AE1CF2F923F9296
-:10FA30004F925F926F927F928F929F92AF92BF92FE
-:10FA4000CF92DF92EF92FF920F931F93CF93DF93AA
-:10FA5000EC014B017A018B81811115C08FEF9FEF73
-:10FA6000DF91CF911F910F91FF90EF90DF90CF909A
-:10FA7000BF90AF909F908F907F906F905F904F90CE
-:10FA80003F902F900895898180FFE8CF89899A89D6
-:10FA9000AB89BC89488559856A857B85841B950B14
-:10FAA000A60BB70BA70170E060E084179507A607C7
-:10FAB000B70708F47C0167011E0124E0220E311C07
-:10FAC000C114D10409F4A9C0488559856A857B858C
-:10FAD0005A0181E0B822898D9A8D2A013B0129E0E3
-:10FAE00076946794579447942A95D1F72B81FC011B
-:10FAF000223081F5628D738D848D958D640D751D19
-:10FB0000861D971D00E012E00A191B09C016D106D8
-:10FB100008F486010115E2E01E0771F440904514D7
-:10FB20005090461460904714709048146415750501
-:10FB30008605970509F04EC040E00E94717A88233F
-:10FB400009F48CCFB5016B5B7D4EA801C4010F9405
-:10FB5000C64152C0148111501421A114B10471F492
-:10FB600011110CC0452B462B472B51F58D899E89D1
-:10FB7000AF89B88D8C839D83AE83BF83E98DFA8D69
-:10FB80004C805D806E807F8022E0421A51086108BF
-:10FB90007108858504C0440C551C661C771C8A9529
-:10FBA000D2F786859785A089B189480E591E6A1EAD
-:10FBB0007B1EC301B201610F711D811D911DA2CF7A
-:10FBC0004C815D816E817F8191010E94457B811115
-:10FBD000D5CF44CFA0914E14B0914F14ED91FC912C
-:10FBE00011970088F189E02D9401AB01BC01CD0192
-:10FBF0001995882309F432CF800E911E8885998546
-:10FC0000AA85BB85800F911FA11DB11D888799878B
-:10FC1000AA87BB87C01AD10A53CFC70121CFCF9380
-:10FC2000DF93EC01462F41706C857D858E859F8525
-:10FC30000E94717A882351F0888920E2829FC00156
-:10FC400011248B5B9D4EDF91CF91089590E080E071
-:10FC5000FACFCF93DF93EC018B81882349F189811F
-:10FC600087FF22C061E0CE010E940F7EFC01892B3C
-:10FC7000F9F08081853EE1F08B81823040F4898902
-:10FC80009A89AB89BC89848F958FA68FB78F8D8910
-:10FC90009E89938F828F8D899E89AF89B88DB58B10
-:10FCA000A48B89818F778983DF91CF910C94287AF7
-:10FCB00081E0888380E0DF91CF910895CF93DF9337
-:10FCC000EC010E94297E1B82DF91CF910895109252
-:10FCD0009A068091A2178F778093A2170E9473CD06
-:10FCE000882321F080E594E10C945E7E0895CF9303
-:10FCF000C091A217C2FF10C0C7FD0EC00E9473CDF5
-:10FD000080FBC7F9C093A2178091A2178F7E8064F1
-:10FD10008093A217CF9108950E94677EF5CFCF936D
-:10FD2000DF938091A2178F7E8093A2178091A714F2
-:10FD3000882321F084EA94E10E945E7E8091A317DB
-:10FD40009091A417DC01ED91FC910190F081E02DE0
-:10FD500045E360E01995811112C00E940FD88FEF22
-:10FD600096E20E94ACCE8091A21784FF34C00F941B
-:10FD7000022783E080937502DF91CF910895C091AF
-:10FD8000A317D091A41761E0CE010F94DA0A811174
-:10FD90000BC060E0CE010F94DA0A811105C00E9409
-:10FDA0000BD88BEE96E2DDCF6BE674E184EA94E14A
-:10FDB0000E94327C811105C00E940BD88AED96E228
-:10FDC000D0CF8091A21780618093A2170E940FD894
-:10FDD0008EEC96E2C6CF80913509882351F261E01E
-:10FDE0008EEB96E20E941D3B0E945E2DC2CFCF9308
-:10FDF000DF93EB01FC012381211104C080E0DF913E
-:10FE0000CF9108952250223028F48FE288831982FE
-:10FE100081E0F5CF60E00E940F7E009779F3DC016E
-:10FE200060E080E09EE22D91203299F0883031F43C
-:10FE30009E01260F311DF90190836F5F9E01260FF1
-:10FE4000311DAD0141505109FA014081F901408352
-:10FE50006F5F8F5F8B3039F7FE01E60FF11D108267
-:10FE6000D7CFCF93DF93EC01CB01E881F98160819B
-:10FE700071810E94F77E28813981D901ED91FC9131
-:10FE8000AA81BB818C919081992359F08936C8F45D
-:10FE9000CF010196F901918380838C918F5F8C93C0
-:10FEA000EACF893670F48FE28083E881F98180811E
-:10FEB0009181019691838083EA81FB8180818F5FAC
-:10FEC0008083DF91CF9108953F924F925F926F921E
-:10FED0007F928F929F92AF92BF92CF92DF92EF92DA
-:10FEE000FF920F931F93CF93DF93CDB7DEB72C977D
-:10FEF0000FB6F894DEBF0FBECDBF5C01DC01599692
-:10FF00008D909C90F40181859285A385B4859C0198
-:10FF1000AD012F5F3F4F4F4F5F4F29873A874B8788
-:10FF20005C87D50114964D905D906D907C901797ED
-:10FF3000411451046104710409F459C0BFEF4B1A14
-:10FF40005B0A6B0A7B0A312C730162011D821E82DF
-:10FF50001F821886F40181859285A385B4852D8141
-:10FF60003E814F815885281739074A075B0708F0FB
-:10FF700056C089859A85AB85BC858C159D05AE05D7
-:10FF8000BF0550F482E0C82ED12CE12CF12C92E078
-:10FF9000492E512C612C712C9E012F5F3F4FB701D0
-:10FFA000A601C4010E94457B8823C9F189819A81F9
-:10FFB000AB81BC81892B8A2B8B2B01F12601370168
-:10FFC0009FEF491A590A690A790A2D813E814F81AA
-:10FFD00058852F5F3F4F4F4F5F4F2D833E834F8399
-:10FFE00058873FEFC31AD30AE30AF30AB3CF40801E
-:10FFF00051806280738033243394A6CFC414D50417
-:020000040001F9
-:10000000E604F70411F70FEF1FEF2FEF3FE0B70102
-:10001000A601C4010E94B37A782E81111AC0712CF6
-:10002000872D2C960FB6F894DEBF0FBECDBFDF91A3
-:10003000CF911F910F91FF90EF90DF90CF90BF90E5
-:10004000AF909F908F907F906F905F904F903F9078
-:100050000895F501448155816681778141155105E7
-:100060006105710539F097018601C4010E94B37AD8
-:100070008823A9F2D5011496CD92DD92ED92FC92DF
-:100080001797332051F0D701C6010196A11DB11D6C
-:10009000F40180839183A283B383F50185899689D6
-:1000A000A789B08D892B8A2B8B2B09F0B9CFC58AF4
-:1000B000D68AE78AF08E818180688183B1CF40E063
-:1000C00050E0BA010C94827CFC01238121110C9434
-:1000D0005E7E08952F923F924F925F926F927F9231
-:1000E0008F929F92AF92BF92CF92DF92EF92FF9248
-:1000F0000F931F93CF93DF93CDB7DEB7C454D109CD
-:100100000FB6F894DEBF0FBECDBF7C014B015A0184
-:10011000222E19821C821C8E1F8E6115710511F40E
-:1001200010E0B3C1DC0113968C918111F9CFFA0173
-:1001300080818B018F32D1F4DB0113968C91139760
-:100140008250823060F059966D917C91CE014C9630
-:100150000E94327C8E01045E1F4F882309F3C50183
-:100160005C010196F50120812F32D1F39E012F5FB2
-:100170003F4F6901290130E2332E2496CFAE2497F8
-:100180002596DFAE25973E013CE1630E711C229659
-:100190003FAE229721963FAE21973FAE3EAE3DAE99
-:1001A0003CAE3BAE3AAE39AE38AE3FAA950190E0D8
-:1001B00047E0D9018D91882361F18F3251F18E3260
-:1001C00039F44A3009F4ACCF98E04AE09D01F1CF10
-:1001D000EAE9F6E22491222321F031968213FACF44
-:1001E0009FCF491708F49CCF813208F499CF8F37FD
-:1001F00009F496CF3FE9380F3A3108F420EEE7E3EF
-:10020000F0E0EC0FFD1FE90FF11D820F80839F5F6F
-:10021000DDCF8FA9803209F483CF5901D9018C91A8
-:100220002F5F3F4F8F32C9F38823A9F008151905B6
-:1002300019F0C8010E945E7E24969FAD24972596F2
-:100240008FAD25974C145D0411F4962D872D8601F2
-:10025000C92ED82E9CCFF801818D928DD7015A9648
-:100260009C938E935997C8010E945F80C12CF8011E
-:1002700080859185A285B385418952896389748976
-:1002800084179507A607B70708F053C025E0B69571
-:10029000A795979587952A95D1F7F82FFF70DF2EB0
-:1002A000D80113968C91823008F43ACF41E050E0A7
-:1002B000BE016E5B7F4FC8010E94167D019709F059
-:1002C0002FCFF80180859185A285B3854F96A11D1A
-:1002D000B11D80879187A287B387F0E2DF9EB001CE
-:1002E00011246B5B7D4E6115710509F419CFDB019B
-:1002F0008C91882341F0853E09F04DC0CC2029F037
-:10030000CC24C394B4CFC1100EC0809145149091F9
-:100310004614A0914714B0914814F701848795873B
-:10032000A687B787D08ADB018C918111E9CFCC24D5
-:10033000C394822D8274823409F0F2CECC2009F469
-:10034000C7C0F701D08861E0C7010E940F7E009707
-:1003500009F4E6CE20E2DC011D922A95E9F72BE0B4
-:10036000FE01F796DC0101900D922A95E1F721E25A
-:1003700038E2FC01318B208B40E058E057874687FC
-:10038000338B228B318F208F578B468B0E94287A9C
-:1003900081110AC0C5CE4BE050E0CE01C7960F9444
-:1003A000B941892B09F063CF2D2D30E0F901B5E07B
-:1003B000EE0FFF1FBA95E1F7DF01AB5BBD4E1B9659
-:1003C0008C91817121F0822D827109F020C1D701B9
-:1003D00059968D919C915A9740914514509146148D
-:1003E00060914714709148141C964D935D936D93E2
-:1003F0007C931F975096DC925097EB5BFD4E848860
-:100400009588B12CA12C54019924882455968D925D
-:100410009D92AD92BC925897428D538D70E060E0F2
-:10042000482959296A297B2955964D935D936D93E7
-:100430007C935897A5E0220F331FAA95E1F7D901C5
-:10044000AB5BBD4E1B962C91287109F0D2C0848DF8
-:10045000958DA68DB78DF701818B928BA38BB48B75
-:1004600081E08383822D8F70F7018183148215824E
-:1004700016821782108611861286138611E024FEDA
-:1004800004C0C7010F94290C182FCE014C960E946E
-:100490006480CE0101960E946480812FCC5BDF4F87
-:1004A0000FB6F894DEBF0FBECDBFDF91CF911F9185
-:1004B0000F91FF90EF90DF90CF90BF90AF909F9003
-:1004C0008F907F906F905F904F903F902F90089506
-:1004D000D80113968C911397823009F421CE51964E
-:1004E0008D919D910D90BC91A02D803E9F4FAF416D
-:1004F000B10508F015CEC8010E94647F882309F475
-:100500000FCE0E94287A882309F40ACED801599682
-:10051000ED91FC915A9714968D909D90AD90BC9062
-:100520001797B2E08B1A9108A108B108858504C01D
-:10053000880C991CAA1CBB1C8A95D2F786859785C6
-:10054000A089B189880E991EAA1EBB1E81E08093E6
-:100550004D148092451490924614A0924714B09284
-:100560004814E5E4F2E180E092E0DF019C011D9295
-:1005700021503040E1F7DD24D394D8015996ED9114
-:10058000FC918481D816C0F480914E1490914F1440
-:10059000DC01ED91FC910288F389E02D25E432E144
-:1005A000B501A4014D0D511D611D711D19958823C3
-:1005B00009F4B6CDD394E1CF258580E092E0A0E0A8
-:1005C000B0E004C0880F991FAA1FBB1F2A95D2F75D
-:1005D000F8014189528963897489840F951FA61F88
-:1005E000B71F818B928BA38BB48B85E492E1D12CC6
-:1005F000B1CE203161F497012F5E3F4F0E94C87B3E
-:10060000882329F084E0D70113968C932BCFD70150
-:1006100013961C9285CD0F931F93CF93DF93CDB785
-:10062000DEB7EB970FB6F894DEBF0FBECDBF8C01DF
-:1006300089E894E10E945F808BE1E9E8F4E1DE0162
-:10064000919601900D928A95E1F7BE016F5F7F4F01
-:10065000CE0181960F946C0E1816A4F4CE0101966B
-:100660000E94F579882389F3BE016F5F7F4F89E788
-:100670009FE00E94127A69E77FE0C8010F94CF41A2
-:10068000892B19F7CE0181960E946480EB960FB6F4
-:10069000F894DEBF0FBECDBFDF91CF911F910F91B8
-:1006A00008958F929F92AF92BF92CF92DF92EF9276
-:1006B000FF920F931F93CF93DF93DC0170E0FB0158
-:1006C000EE0FFF1FEF5BFC4F20813181615C7C4F9F
-:1006D000FB019081D92E80E0E82EF12CB7016D0D41
-:1006E000711D75956795611119C0F9013296659173
-:1006F0007491072E000C880B990B0F94B839DF9179
-:10070000CF911F910F91FF90EF90DF90CF90BF900E
-:10071000AF909F908F900895D62EE0CF681711F07C
-:10072000D6120CC0492F4150550BFA01EE0FFF1F96
-:10073000EE0FFF1F3296E20FF31FD9CFAB014150EE
-:100740005109440F551F440F551FF901E40FF51FC0
-:1007500005911491FA013496E20FF31FC591D491DB
-:10076000A017B107C8F2862FCA17DB0708F4B4CF69
-:10077000FA013296E20FF31FE590F490FA013696F3
-:10078000E20FF31FC590D490A01BB10BBD0190E008
-:1007900080E00F94B6394B015C01B6016E197F09F8
-:1007A000072E000C880B990B0F94B8399B01AC01F4
-:1007B000C501B4010F94173A4B015C01C01BD10B6A
-:1007C000BE0190E080E00F94B6399B01AC01C501F9
-:1007D000B4010F94023F4B015C01B701FF0C880B81
-:1007E000990B0F94B8399B01AC01C501B4010F946A
-:1007F000083E85CF8F929F92AF92BF92CF92DF92A9
-:10080000EF92FF92CF936B017C01C42F20E030E088
-:10081000A9010F94B13987FF07C08DE20E949FCED6
-:10082000F7FAF094F7F8F0942BE037ED43EA5BE346
-:10083000C23021F02FE632E143E05AE3C701B601AE
-:100840000F94083E6B017C010F947B3F4B015C01D0
-:100850000F94B6399B01AC01C701B6010F94073E56
-:100860006B017C01C501B4010F94C00D8EE20E94A2
-:100870009FCEC150E8F020E030E040E251E4C701F3
-:10088000B6010F94173A6B017C010F947B3F4B012B
-:100890005C010F94C00DC501B4010F94B6399B01E2
-:1008A000AC01C701B6010F94073E6B017C01E1CF9B
-:1008B000CF91FF90EF90DF90CF90BF90AF909F903F
-:1008C0008F900895EF92FF920F931F93CF93DF9332
-:1008D000C82F7B018A01D2E48F3F09F0D4E580E282
-:1008E0000E949FCE8D2F0E949FCEC7FD04C080E343
-:1008F0008C0F0E949FCE8AE30E949FCEF7016081F9
-:1009000071818281938142E00E94FA8387E693E2BB
-:100910000E94ACCEF801608171818281938142E0B6
-:100920000E94FA8362E070E080E090E0DF91CF9176
-:100930001F910F91FF90EF900D94911CEF92FF92F9
-:100940000F931F93CF93DF9300D000D01F921F927D
-:10095000CDB7DEB7082F17E1189FC00111249C0105
-:10096000215C394F7901F90160857185072E000CF2
-:10097000880B990B0F94B8396D837E838F8398878A
-:10098000F70184819581A681B78189839A83AB839E
-:10099000BC83AE014B5F5F4FBE016F5F7F4F80E84E
-:1009A0000E9462846091360670913706072E000C13
-:1009B000880B990B0F94B8396D837E838F8398874A
-:1009C0008091320690913306A0913406B09135069D
-:1009D00089839A83AB83BC83AE014B5F5F4FBE01BB
-:1009E0006F5F7F4F8FEF0E94628460914706709126
-:1009F0004806072E000C880B990B0F94B8396D83AD
-:100A00007E838F8398878091430690914406A091BE
-:100A10004506B091460689839A83AB83BC83AE01B9
-:100A20004B5F5F4FBE016F5F7F4F80E00E9462842B
-:100A300060915E0670915F06072E000C880B990B83
-:100A40000F94B8396D837E838F83988780915A067F
-:100A500090915B06A0915C06B0915D0689839A83B4
-:100A6000AB83BC83AE014B5F5F4FBE016F5F7F4FB7
-:100A700081E00E946284609138060F3F31F00103EB
-:100A8000F0011124E15CF94F628570E082E793E2A6
-:100A90000E9487DA6091380670E08DE693E20E944A
-:100AA00087DA60E08AE693E20E94A2D68AE30E9497
-:100AB0009FCE6091490670E090E080E00F942A0E8E
-:100AC00061E08AE693E20E94A2D68AE30E949FCE6A
-:100AD0006091600670E090E080E00F942A0E289606
-:100AE0000FB6F894DEBF0FBECDBFDF91CF911F913F
-:100AF0000F91FF90EF9008950F930FB70F93009110
-:100B00006E000D7F00936E0078940F930BB70F93D8
-:100B10000CB70F921F922F933F934F935F936F9356
-:100B20007F938F939F93AF93BF93EF93FF93112482
-:100B30000E94CB95FF91EF91BF91AF919F918F91C3
-:100B40007F916F915F914F913F912F911F900F90E7
-:100B50000CBF0F910BBF0F910260F89400936E00D1
-:100B60000F910FBF0F911895EF92FF920F931F9364
-:100B7000CF93DF9310926D0660E090E080E00E94DA
-:100B8000DCCCCFE3D6E01A8661E090E080E00E9402
-:100B9000DCCC19A22C9802E011E0F8018081807170
-:100BA000C0E0D1E088838EE2E82E86E0F82EF701DF
-:100BB000118610860E9422C6F7011286F8018081F4
-:100BC00080728883DF91CF911F910F91FF90EF90FA
-:100BD00008958F929F92AF92BF92CF92DF92EF9241
-:100BE000FF920F931F93CF93DF93B0E4A0E06A2F9F
-:100BF00070E0AB014B0F511D55954795411119C040
-:100C0000E1EDF8E365917491072E000C880B990BC8
-:100C10000F94B839DF91CF911F910F91FF90EF9012
-:100C2000DF90CF90BF90AF909F908F900895B42F9A
-:100C3000E0CFA41711F0B41303C0EDECF9E3E2CF59
-:100C40009A0121503109220F331F220F331FF9015E
-:100C5000E153F74CE590F490F901ED52F74CC59152
-:100C6000D4918E159F0518F3A42FC817D90708F43F
-:100C7000BECFF901EF52F74C05911491F901EB52F7
-:100C8000F74CC590D4908E199F09BC0190E080E08C
-:100C90000F94B6394B015C01B601601B710B072E36
-:100CA000000C880B990B0F94B8399B01AC01C5015E
-:100CB000B4010F94173A4B015C01CE19DF09BE0154
-:100CC00090E080E00F94B6399B01AC01C501B401FE
-:100CD0000F94023F6B017C01B801110F880B990B37
-:100CE0000F94B8399B01AC01C701B6010F94083EBF
-:100CF00091CF80910B06882339F060918316709113
-:100D0000841680918516089560E070E080E0089573
-:100D10002F923F924F925F926F927F928F929F920B
-:100D2000AF92BF92CF92DF92EF92FF920F931F93F9
-:100D3000CF93DF93CDB7DEB765970FB6F894DEBFDC
-:100D40000FBECDBF8F836B8B20916D062E871092C7
-:100D50006D0637E1839FF0011124E15CF94F848136
-:100D60009581A681B7818F87988BA98BBA8B1092BA
-:100D70003A0681E080937402212C312C21011B82E0
-:100D80001C821D821E821A869CE39B87ACE1AC8785
-:100D9000B6E4BD87612C10E000E82FEB2A831982AE
-:100DA000AF01485F5F4F59874887CF0104969D8BFD
-:100DB0008C8BA885B9856D917C91072E000C880BD2
-:100DC000990B0F94B8396B017C01262D312F402FE0
-:100DD0005A810F94B1398823A9F0EC89FD892081CB
-:100DE000318142815381FB89B601C701F1117DC078
-:100DF0000F94B139881F8827881F89836C2C1D2D7B
-:100E00000E2DFA820F941E1D6B017C01DC01CB01BB
-:100E10002B813C814D815E81821B930BA40BB50B12
-:100E2000B7FD10C0D701C60188519C4FAF4FBF4FCF
-:100E30008B839C83AD83BE838F810E949E848AE0D6
-:100E40000E949FCE80E00E94EADD0F941E1D6093F9
-:100E50003B0670933C0680933D0690933E06AC891A
-:100E6000BD89AC9011969C90119712968C90129718
-:100E700013967C90B981B1116FC0662D712F802FB0
-:100E80009A810F94743F6B016A2D792D882D972DCF
-:100E90000F94743F4B016F85788989899A890F94E3
-:100EA000743FCB01A601B4010E949DCB80917402D6
-:100EB0008823F9F0A885B9856D917C91072E000CE7
-:100EC000880B990B0F94B8399B01AC01EC89FD8913
-:100ED0006081718182819381F981FF23C1F10F9437
-:100EE000684018160CF465CF04C00F94B13987FF21
-:100EF00028C0209174022983222331F010927402B9
-:100F00000F948E100E944B272E8520936D068981A9
-:100F100065960FB6F894DEBF0FBECDBFDF91CF91BF
-:100F20001F910F91FF90EF90DF90CF90BF90AF9007
-:100F30009F908F907F906F905F904F903F902F90F9
-:100F400008956C2C1D2D0E2DFA8219825BCF0F9403
-:100F5000B13987FD2ECFCDCF211431044104510486
-:100F600041F0D701C60182199309A409B509B7FD5B
-:100F70009DCF2A2D392D482D572D6A857B858C854F
-:100F80009D850F94073E20E030E040EC5FE30F9436
-:100F9000B13987FDAECF16012701E0E62E0EEAEE4D
-:100FA0003E1E411C511CAA869B868C867D867ECF68
-:100FB00012988D5F21E030E001C0220F8A95EAF798
-:100FC0008091BF07822B8093BF070895CF92DF9255
-:100FD000EF92FF92CF93DF93EC01C880D980EA8033
-:100FE000FB8083EB92E20E94ACCEC701B6010F9466
-:100FF0002A0ECC80DD80EE80FF8083E49CE30E949B
-:10100000ACCEC701B6010F942A0EC884D984EA84F5
-:10101000FB848FE39CE30E94ACCEC701B6010F9422
-:101020002A0E8AE0DF91CF91FF90EF90DF90CF9072
-:101030000C949FCE0F930FB70F9300916E000F93F8
-:101040000D7F00936E0000916F000D7F00936F0085
-:101050000F930BB70F930CB70F921F922F933F93E1
-:101060004F935F936F937F938F939F93AF93BF93B0
-:10107000EF93FF9311240E9418A8FF91EF91BF9165
-:10108000AF919F918F917F916F915F914F913F9120
-:101090002F911F900F900CBF0F910BBF0F9102600B
-:1010A000F89400936F000F9100936E000F910FBFA3
-:1010B0000F91189500008091E50880FF27C0899A5C
-:1010C0008FEF809358078091E50881FF22C08F9AA7
-:1010D0008FEF809359078091E50882FF1DC08091B2
-:1010E0000B0180958270809309018FEF80935A07DE
-:1010F00080915C079091E50893FF17C0811113C0A0
-:10110000169A8FEF80935B0700000895899881E01D
-:10111000D8CF8F9881E0DDCF80910B0182708093D2
-:10112000090181E0E3CF4398ECCF811103C0169809
-:1011300081E0E8CF439AFCCFAF92BF92CF92DF928B
-:10114000EF92FF921F93CF93DF9340EC50E070E05B
-:1011500060E08FEA95E10F94CE218FEAA82E85E119
-:10116000B82E11E0F50113AF43E051E860E070E103
-:10117000C5010F940222C0E2D3E0F501D2AFC1AFA6
-:10118000C12CD12CE12C9FE3F92EC586D686E786AB
-:10119000F08A60E273E0C5010F940F2164E0C5019D
-:1011A0000F942E09C5010F94E61160E8C5010F9454
-:1011B000C72044E25EE06DE078ECC5010F94B221F7
-:1011C000C5010F94DA1168EC70E080E090E00F94B4
-:1011D000911C40EC50E070E060E083E795E10F94F3
-:1011E000CE2123E7A22E25E1B22EF50113AF43E075
-:1011F00051E860E070E1C5010F940222F501D2AF21
-:10120000C1AFC586D686E786F08A60E273E0C50185
-:101210000F940F2164E0C5010F942E09C5010F94AE
-:10122000E61160E8C5010F94C72044E25EE06DE07E
-:1012300078ECC5010F94B221C5010F94DA1168EC66
-:1012400070E080E090E00F94911C40EC50E070E082
-:1012500060E087E395E10F94CE2137E3A32E35E1DB
-:10126000B32EF50113AF43E051E860E070E1C50132
-:101270000F940222F501D2AFC1AFC586D686E786AC
-:10128000F08A60E273E0C5010F940F2164E0C501AC
-:101290000F942E09C5010F94E61160E8C5010F9463
-:1012A000C72044E25EE06DE078ECC5010F94B22106
-:1012B000C5010F94DA1168EC70E080E090E00F94C3
-:1012C000911C40EC50E070E060E08BEF94E10F94F3
-:1012D000CE214BEFA42E44E1B42EF50113AF43E031
-:1012E00051E860E070E1C5010F940222F501D2AF30
-:1012F000C1AFC586D686E786F08A60E273E0C50195
-:101300000F940F2164E0C5010F942E09C5010F94BD
-:10131000E61160E8C5010F94C72044E25EE06DE08D
-:1013200078ECC5010F94B221C5010F94DA1168EC75
-:1013300070E080E090E00F94911C40EC50E070E091
-:1013400060E08FEB94E10F94CE215FEBA52E54E18A
-:10135000B52EF50113AF43E051E860E070E1C5013F
-:101360000F940222F501D2AFC1AFC586D686E786BB
-:10137000F08A60E273E0C5010F940F2164E0C501BB
-:101380000F942E09C5010F94E61160E8C5010F9472
-:10139000C72044E25EE06DE078ECC5010F94B22115
-:1013A000C5010F94DA1168EC70E080E090E00F94D2
-:1013B000911CDF91CF911F91FF90EF90DF90CF9024
-:1013C000BF90AF900C945A8893E0980F21E030E0E2
-:1013D00002C0220F331F9A95E2F720953095909125
-:1013E000BF0729232093BF07882321F0813021F0F4
-:1013F00081E00895129AFCCF479AFACF80E00E94CC
-:10140000E48981E00C94E489882319F0813021F08B
-:10141000089580E00C94D88747988091BF07806139
-:101420008093BF070895813089F070F0823081F099
-:1014300021E030E001C0220F8A95EAF78091BF07D2
-:10144000822B8093BF0708955F98F2CF8A98F0CFE0
-:1014500090910801917090930601EACF0F931F932A
-:10146000CF93DF93C82F41E06DE979E10E946FD9F6
-:101470008C2F0E948ED985E999E10E94ACCE8DED2A
-:1014800098E10E9409DB41E063E879E18C2F0E943A
-:101490006FD98C2F0E948ED986E699E10E94ACCE3E
-:1014A0008C2F0E9415DA8C2F0F9432128C2F0E94F1
-:1014B00010D68C2F0E943AD68C2F0E94EED58C2FFE
-:1014C0000E94B6D58C2F0E9494D58C2F0E94E4D90F
-:1014D00041E065EF78E18C2F0E946FD902EF15E0B3
-:1014E000D0E08C2F0E948ED96D2F8CEE98E10E9457
-:1014F00074D6F80160817181072E000C880B990B5E
-:101500000F94B839AB01BC0189EE98E10E94A4CFD9
-:10151000F80162817381072E000C880B990B0F94E0
-:10152000B839AB01BC0186EE98E10E94A4CFF80166
-:101530006481758183EE98E10E9404DB0A5F1F4F8E
-:10154000D13009F098C06FEF8C2F0E9493D98C2F67
-:101550000E9484D641E063E279E18C2F0E946FD92A
-:101560008C2F0E948ED980E199E10E94ACCE6091CF
-:10157000E8157091E9158EE499E10E947BDA60919B
-:10158000AC157091AD158FE09CE30E947BDA609101
-:101590007015709171158CE09CE30E947BDA8AE0F3
-:1015A0000E949FCE8C2F0E948ED980E199E10E94EB
-:1015B000ACCE60913415709135158DE199E10E94A2
-:1015C00004DB8C2F0E948ED980E199E10E94ACCE81
-:1015D0006091F8147091F91487E199E10E9404DB9D
-:1015E0008AE00E949FCE41E061E579E18C2F0E9464
-:1015F0006FD9D091EA151091AE1500917215D111E5
-:101600003CC0111141C001113FC0809136158823A3
-:1016100091F0C11102C00E940FD88AE399E10E94A3
-:10162000ACCE80E20E949FCE89E499E10E94ACCECC
-:101630008AE00E949FCE8091FA14882391F0C11114
-:1016400002C00E940FD88AE399E10E94ACCE80E2EA
-:101650000E949FCE84E499E10E94ACCE8AE00E9471
-:101660009FCE8C2F0E94C7DB8C2FDF91CF911F91D3
-:101670000F910C948ED6D1E034CFCC2349F08AE37D
-:1016800099E10E94ACCE0CC08AE399E1C1110AC075
-:101690000E940FD88AE399E10E94ACCEDD2321F0AD
-:1016A0008EE499E10E94ACCE112321F08FE09CE3FF
-:1016B0000E94ACCE002321F08CE09CE30E94ACCED3
-:1016C0008AE00E949FCEA1CF8F929F92AF92BF924D
-:1016D000DF92EF92FF920F931F93CF93DF93CDB7DB
-:1016E000DEB7C658D1090FB6F894DEBF0FBECDBF26
-:1016F000C358DF4F188219821A821B82CD57D040FF
-:101700008091EF039091F003A091F103B091F20367
-:10171000CF57DF4F88839983AA83BB83C158D040BA
-:1017200084E690E0909354078093530710925607F5
-:10173000109255071092570725E537E044E050E036
-:10174000BE016F577F4F83E597E00E9494DA809146
-:101750005307909154070296909354078093530730
-:10176000109256071092550781E0CA57DF4F8883C1
-:10177000C658D040CE018A579F4F0E941F7725E55B
-:1017800037E048E450E065E579E083E597E00E94C2
-:1017900094DA80E1E4ECF2E08E010F5F1F4FD80194
-:1017A00001900D928A95E1F725E537E040E150E0A0
-:1017B000B80183E597E00E9494DA8EEF95E00E94ED
-:1017C000317786EE98E00E9428778AE796E00E94BB
-:1017D00028777E018DE6E80EF11C8FEFD7018C9300
-:1017E000C7010E941F7719821A821B821C82C801BE
-:1017F0000E94317719821A821B821C82C8010E94C2
-:101800003177C358DF4F188219821A821B82CD5755
-:10181000D04083E0F70180838983CE0183589F4FB6
-:101820000E943177C7010E941F77C8010E941F776D
-:101830005AE0D52EDA94DD2031F0CE0183589F4F47
-:101840000E943177F7CF8CE0D8011D928A95E9F795
-:10185000C8010E942877C358DF4F188219821A8264
-:101860001B82CD57D0404AE0D42EDA94DD2031F0EF
-:10187000CE0183589F4F0E943177F7CF83E0CB573B
-:10188000DF4F8883C558D040EA968FAFEA97CE01E4
-:101890008B579F4F0E941F77CE0187589F4F0E9402
-:1018A0001F7788E0F701982F11929A95E9F7D801F0
-:1018B0001D928A95E9F725E537E048E050E0B70149
-:1018C00083E597E00E9494DA25E537E048E050E0B0
-:1018D000B80183E597E00E9494DAC358DF4F18827D
-:1018E00019821A821B82CD57D0403AE0A32EB12C28
-:1018F000B1E0AB1AB10831F0CE0183589F4F0E947E
-:101900003177F6CF19828FEFF7018083C8010E94EB
-:101910001677C7010E941F7780E1D8011D928A9532
-:10192000E9F725E537E040E150E0B80183E597E0CD
-:101930000E9494DA1982C8010E94167725E537E0E3
-:101940004CE050E062EF75E083E597E00E9494DAA6
-:1019500092E0D92E812C912C20E8A22E2FE3B22EDA
-:10196000198A1A8A1B8A1C8A8D869E86AF86B88A37
-:1019700080914A0690914B06A0914C06B0914D067D
-:1019800089839A83AB83BC832CEA35EC47E25EE320
-:1019900060914E0670914F068091500690915106CD
-:1019A0000F94023F6D837E838F8398872CEA35ECFA
-:1019B00047E25EE3609152067091530680915406AF
-:1019C000909155060F94173A69877A878B879C8781
-:1019D00025E537E044E150E0B80183E597E00E9457
-:1019E00094DAB1E0DB12C5C184E190E09A83898387
-:1019F00025E537E042E050E0B80183E597E00E943A
-:101A000094DA8CE0E4EDF2E0D80101900D928A9531
-:101A1000E1F7C8010E940D778CE0E4EDF2E0D80117
-:101A200001900D928A95E1F7C8010E940D77198205
-:101A3000C8010E941F7780912E028983C8010E94ED
-:101A40001F778FEF8983C8010E941F7785E0E0EE42
-:101A5000F2E0D80101900D928A95E1F725E537E093
-:101A600045E050E0B80183E597E00E9494DA1982DE
-:101A7000C8010E94167780E2E5EEF2E0D8010190FD
-:101A80000D928A95E1F725E537E040E250E0B80194
-:101A900083E597E00E9494DAF7011082C7010E9463
-:101AA000167781EF95E00E94167725E537E048E04C
-:101AB00050E069EE75E083E597E00E9494DAC35840
-:101AC000DF4F188219821A821B82CD57D040CE0177
-:101AD00083589F4F0E943177CE0183589F4F0E94B9
-:101AE0003177FE0137968AE0DF011D928A95E9F78A
-:101AF0008091E8159091E9159A8389838091AC15BE
-:101B00009091AD159C838B83809170159091711588
-:101B10009E838D8380913415909135159A8B898B96
-:101B20008091F8149091F9149C8B8B8B25E537E00C
-:101B300044E150E0B80183E597E00E9494DA88E23E
-:101B4000E5E0F3E0D80101900D928A95E1F725E5F3
-:101B500037E048E250E0B80183E597E00E9494DA6C
-:101B600080E1D82EF8018D2D11928A95E9F725E5AF
-:101B700037E040E150E0B80183E597E00E9494DA55
-:101B80001A8219828091EA1581709091AE1590FBAE
-:101B900081F99091721590FB82F989838A819091E5
-:101BA000361590FB80F99091FA1490FB81F98A83A5
-:101BB00025E537E042E050E0B80183E597E00E9478
-:101BC00094DAC358DF4F188219821A821B82CD57CC
-:101BD000D040CE0183589F4F0E943177CE01835869
-:101BE0009F4F0E943177D8011D92DA94E9F725E5DD
-:101BF00037E040E150E0B80183E597E00E9494DAD5
-:101C00008CE6F80111928A95E9F725E537E04CE674
-:101C100050E0B80183E597E00E9494DA87E497E00A
-:101C20000E940D7725E537E040E150E069ED75E071
-:101C300083E597E00E9494DA25E537E044E050E040
-:101C400066E876E083E597E00E9494DA8CE0D701BD
-:101C50001D928A95E9F7CB57DF4F1882C558D040BF
-:101C600080E090E0A0E4B0E4ED968CAF9DAFAEAF25
-:101C7000BFAFED97C7010E942877CE018B579F4FCA
-:101C80000E941F77CE0187589F4F0E943177D090D6
-:101C90005707D1104EC000915307109154070456B6
-:101CA00011098091550790915607F7019183808320
-:101CB00084E690E0909354078093530725E537E03E
-:101CC00044E050E069E373E083E597E00E9494DA32
-:101CD00025E537E042E050E0B70183E597E00E9458
-:101CE00094DA0E940FD8B80185E998E10E947BDA66
-:101CF000D7018D909C90B12CA12C88E898E10E948E
-:101D0000ACCEC501B4010F94C00D85E898E10E94E6
-:101D1000ACCE033B124041F00E940BD88AEA99E115
-:101D20000E94ACCEDD24D394809157078D298093F7
-:101D3000570780915707811105C060E085E798E15A
-:101D40000E941D3B9091570781E08927CA57DF4FBA
-:101D50000FB6F894DEBF0FBECDBFDF91CF911F91BC
-:101D60000F91FF90EF90DF90BF90AF909F908F907A
-:101D70000895DD24D394F4CDCF93DF9300D01F9248
-:101D8000CDB7DEB78091D108882389F083E390E056
-:101D90009C838B831A8219829E012F5F3F4F40E103
-:101DA00050E062ED78E0CE0103960E9494DA0F9045
-:101DB0000F900F900F90DF91CF910895CF93DF9305
-:101DC00000D01F921F92CDB7DEB781E08093D1087B
-:101DD00080E1E2EDF8E0DF011D928A95E9F70E94CB
-:101DE000BC8E86E18D8382E390E09C838B831A8294
-:101DF00019829E012F5F3F4F41E050E0BE016B5FB3
-:101E00007F4FCE0103960E9494DA0F900F900F90AF
-:101E10000F900F90DF91CF910895AF92BF92CF9224
-:101E2000DF92EF92FF920F931F93CF93DF93C5E55D
-:101E3000D9E00EEB15E085E6A82E89E0B82EC12C7E
-:101E4000D12C7601C39469917991899199910F94DC
-:101E5000B639288939894A895B890F94173A0F94D2
-:101E60007B3FF80161937193819391938F01C61623
-:101E7000D706E806F90610F46B017C01AC16BD0626
-:101E800011F76FEF7FEFCB01A70196010F94A43DEF
-:101E90002093250730932607409327075093280760
-:101EA000DF91CF911F910F91FF90EF90DF90CF9036
-:101EB000BF90AF9008950F931F93CF93DF9309E6E0
-:101EC00019E0CBE2D7E0F801219131914191519194
-:101ED0008F0160E070E080E89FE30F94023F699318
-:101EE000799389939993F7E0CB33DF0761F70F94E8
-:101EF000BA11DF91CF911F910F910C940D8F90919A
-:101F0000091680910A16981306C080914C09909189
-:101F10004D09892B21F080E00E94EADDF0CF089581
-:101F2000CF92DF92EF92FF920F931F93CF93DF93A5
-:101F3000CDB7DEB72C970FB6F894DEBF0FBECDBF7E
-:101F4000182F6B017A0180913509833090F00E943F
-:101F50000BD8C6010E94ACCE8DEC92E20E94ACCEB2
-:101F60001F3F51F589EC92E20E94ACCE8AE00E94BC
-:101F70009FCE0E94B485A8958091C007811152C060
-:101F800081E08093C00782E0809335090E94B48588
-:101F900005E1015019F1A895409A69E170E080E0EF
-:101FA00090E00F94911C409860E570E080E090E034
-:101FB0000F94911CA895EDCF17FDD8CF87EC92E236
-:101FC0000E94ACCE612F012E000C770B880B990B71
-:101FD0000F942A0E8AE00E949FCEC8CF409A0F9499
-:101FE0003211811111C08CE0EDE2F3E0DE011196B7
-:101FF00001900D928A95E1F7BE016F5F7F4F80E0FF
-:102000000E947C2A0E947F8F60EC72E21F3F31F0B9
-:1020100064EC72E2113011F46DEB72E240E0C70142
-:102020000E94E2DC2C960FB6F894DEBF0FBECDBF47
-:10203000DF91CF911F910F91FF90EF90DF90CF90A4
-:1020400008954F925F926F927F929F92AF92BF924C
-:10205000CF92DF92EF92FF920F931F93CF93DF9374
-:10206000EC016B015A01922E8FEFE2E02813E22F70
-:1020700085E0E802F0011124E25EF94F84818823B3
-:1020800009F456C01C821D821E821F8218868C8114
-:102090008230A1F0833009F47CC08130C9F52D81F4
-:1020A0003E814F815885F6016081718182819381E3
-:1020B0000F94B13987FD2CC082E08C830F941E1DD4
-:1020C0002B013C01B701FF0C880B990B0F94B83919
-:1020D0009B01AC016D817E818F8198850F94073EB5
-:1020E0009B01AC01F60160817181828193810F9423
-:1020F000684087FD42C09801A8EEB3E00F94F83D18
-:10210000460E571E681E791E488259826A827B825B
-:10211000DF91CF911F910F91FF90EF90DF90CF90C3
-:10212000BF90AF909F907F906F905F904F90089579
-:10213000F5014080518062807380A30192016D811E
-:102140007E818F8198850F94B139882309F49FCFC0
-:102150004D825E826F8278867724739420E030E02F
-:10216000A901F50160817181828193810F9468409A
-:1021700018160CF0712C7C828ACF88819981AA81F3
-:10218000BB81481A590A6A0A7B0A77FCC1CF83E0EF
-:102190008C8347E453E267E573E2892DDF91CF91A9
-:1021A0001F910F91FF90EF90DF90CF90BF90AF9075
-:1021B0009F907F906F905F904F900C94908F4BEE1C
-:1021C00052E268EF72E20C94908FAF92BF92CF927E
-:1021D000DF92EF92FF920F931F93CF93DF93A89517
-:1021E00060E080914106909142060E945183609385
-:1021F000430670934406809345069093460661E03B
-:1022000080915806909159060E94518360935A0616
-:1022100070935B0680935C0690935D068091300618
-:10222000909131060E94E9856093320670933306DF
-:1022300080933406909335068FE3E82E86E0F82EDF
-:102240009DE3A92E93E0B92EC4E6D2E010E0F70199
-:10225000C280D380F50101915F0107FF4DC08A81E3
-:102260009B81C816D90608F450C0F7018085918576
-:102270001816190644F407FF4CC0888199818C1503
-:102280009D0508F44FC0F7E1EF0EF11C28961130C0
-:1022900089F52091CF083091D00880913006909137
-:1022A00031068217930718F48FEF0E94DF90809118
-:1022B00036069091370618161906E4F52091620249
-:1022C00030916302809130069091310628173907CA
-:1022D00088F548E253E265E373E28FEFDF91CF9137
-:1022E0001F910F91FF90EF90DF90CF90BF90AF9034
-:1022F0000C94908F11E0ABCF002309F4B6CF8A8104
-:102300009B818C159D0508F0B0CF812F0E94DF9036
-:10231000ACCF002309F4B7CF88819981C816D906BC
-:1023200008F0B1CF48E253E265E373E2812F0E94E7
-:10233000908FA9CFDF91CF911F910F91FF90EF90D8
-:10234000DF90CF90BF90AF9008952F923F924F9221
-:102350005F926F927F928F929F92AF92BF92CF9235
-:10236000DF92EF92FF920F931F93CF93DF93CDB73E
-:10237000DEB7A0970FB6F894DEBF0FBECDBF809139
-:10238000350981111AC0A895A0960FB6F894DEBF42
-:102390000FBECDBFDF91CF911F910F91FF90EF90B6
-:1023A000DF90CF90BF90AF909F908F907F906F9075
-:1023B0005F904F903F902F9008958091FB0781117F
-:1023C000E3CF81E08093FB0780912D06811103C04C
-:1023D0001092FB07D9CF0E94E59010922D060F9422
-:1023E0001E1D6F83788789879A8723E436E03E83B2
-:1023F0002D8344E652E0598B488B82E196E09B8B1B
-:102400008A8BABEEB5E1BD8FAC8FEEE1F6E0FF87D6
-:10241000EE8745EC242E47E0342E1B86FB85F8A37F
-:10242000A889B98916966D917C91072E000C880BAE
-:10243000990B0F94B8399B01AC01ED81FE8160814D
-:102440007181828193810F94684018161CF48B85EA
-:102450000E94DF90AE85BF8514968C9114978111F0
-:102460001AC08D919D910D90BC91A02D0097A10552
-:10247000B10589F02F81388549855A85281B390B8C
-:102480004A0B5B0BDA01C901B7FD05C0E1E0AE857F
-:10249000BF851496EC93AD81BE8114966D917C91AD
-:1024A000072E000C880B990B0F94B83969837A8337
-:1024B0008B839C8334E0E32EF12C08E210E02B8523
-:1024C000AE014F5F5F4F6D817E818C8D9D8D0E942F
-:1024D0002190AD81BE812D913D914D915C912C8BD0
-:1024E0003D8B4E8B5F8BE889F98964817581072E5E
-:1024F000000C880B990B0F94B8399B01AC016C89C7
-:102500007D898E899F890F94684018160CF06EC2E1
-:10251000A889B98916966D917C91072E000C880BBD
-:10252000990B0F94B8399B01AC016C897D898E8918
-:102530009F890F94B13987FF59C28091F3078111A8
-:102540003FC0EFE3F6E0F093C607E093C507A7ECC2
-:10255000B7E0ECE01D92EA95E9F71092D3071092EC
-:10256000D4071092D5071092D6071092D707109271
-:10257000D8071092D9071092DA07F1E0F093DB0741
-:1025800026E536E03093DD072093DC07AEEDB7E0BB
-:10259000ECE01D92EA95E9F71092EA071092EB073A
-:1025A0001092EC071092ED071092EE071092EF07D1
-:1025B0001092F0071092F107F093F207F093F307EF
-:1025C000D1010D90BC91A02DBD87AC8718966D915F
-:1025D0007C9119976115710501F114962D913D912A
-:1025E0004D915C911797288F398F4A8F5B8F072EFB
-:1025F000000C880B990B0F94B839288D398D4A8DB2
-:102600005B8D0F94073E4B015C0120E030E040E71A
-:1026100051EC0F94B13987FF07C021E0F101268BFF
-:10262000C12CD12C7601DEC020E030E040E751E43F
-:10263000C501B4010F94684018165CF4E1E0D101C3
-:102640005696EC93C12CD12C2FE7E22E23E4F22EE8
-:10265000C9C0D10156968C915697882371F0569631
-:102660001C925697F10116861786108A118A1A96BF
-:102670001D921D921D921C921D97EC85FD8547842D
-:10268000508861887288D1011E962D913D914D919F
-:102690005C915197C501B4010F94083E7B018C01F8
-:1026A00020E030E0A9010F94B13987FD9AC1A30160
-:1026B000920160E070E08FE793E40F94023F6E8F29
-:1026C0007F8F6C019701A8010F94B13987FF03C078
-:1026D000EE8CFF8C8601C701D801F10186879787B0
-:1026E000A08BB18BAC85BD851B962D913D914D91F5
-:1026F0005C911E97C501B4010F94173A4B015C0120
-:10270000F10182829382A482B5829701A801C3015C
-:10271000B2010F94173A6B017C01D1011696CD924C
-:10272000DD92ED92FC9219971A964D905D906D9006
-:102730007C901D97288D398D4A8D5B8D52966D91B9
-:102740007D918D919C9155970F94073EEC85FD8569
-:1027500023893489458956890F94173AA301920138
-:102760000F94073E20ED3CEC4CE45DE30F94173AE8
-:10277000A30192010F94083E2B013C01D1011A964E
-:102780004D925D926D927C921D97288D398D4A8D68
-:102790005B8D52962D933D934D935C935597A70176
-:1027A0009601C501B4010F94083EA30192010F9454
-:1027B000083E20E030E0A9010F94083E6B017C0147
-:1027C00020E030E0A9010F94B13987FD29CF20E046
-:1027D00030E04FE753E4C701B6010F946840181684
-:1027E0000CF430CFC701B6010F94743F759567950F
-:1027F000ED81FE816683EA89FB8982819381A481D0
-:10280000B5810097A105B105E9F02F81388549858B
-:102810005A85281B390B4A0B5B0BDA01C901B7FD3E
-:1028200011C06C897D898E899F890F94743FAA8914
-:10283000BB892D913C91621773070CF4D9C08B852D
-:102840000E949ACCED81FE817796FE83ED832889E4
-:102850003989285F3F4F398B288B4A895B894A5FCA
-:102860005F4F5B8B4A8B8C8D9D8D09969D8F8C8FD6
-:10287000AE85BF851596BF87AE87B7E12B0E311C9D
-:10288000E1E0EB87F8A1F13009F0C8CD20E030E0BD
-:102890004CED52E46091320670913306809134061B
-:1028A000909135060F94684018161CF48FEF0E9423
-:1028B000DF9080910E0690910F06A0911006B091C6
-:1028C00011060097A105B10501F12F8138854985D1
-:1028D0005A85281B390B4A0B5B0BDA01C901B7FD7E
-:1028E00014C0609132067091330680913406909145
-:1028F00035060F94743F20910C0630910D06621737
-:1029000073070CF47DC00E9422C68091C10790918C
-:10291000C207A091C307B091C4072F8138854985AC
-:102920005A85281B390B4A0B5B0BDA01C901B7FD2D
-:102930004FCD8F819885A985BA8588579C4EAF4F1A
-:10294000BF4F8093C1079093C207A093C307B09372
-:10295000C40780912C0681111BC08091280690919C
-:102960002906A0912A06B0912B060097A105B10572
-:1029700079F02F81388549855A85281B390B4A0BF8
-:102980005B0BDA01C901B7FD03C081E080932C061F
-:102990006091360670913706072E000C880B990B54
-:1029A0000F94B83969837A838B839C8382E0E82E05
-:1029B000F12C04E110E02FEFAE014F5F5F4F62E3B7
-:1029C00076E08DEF95E10E94219080912C0688237E
-:1029D000F9F0109238068091020180728093000114
-:1029E000F7CCE12CF12C00E010E075CE60E000CFD8
-:1029F0004AE053E269E173E28B850E94908F22CF17
-:102A00004AE053E269E173E28FEF0E94908F7DCF3D
-:102A1000C0903206D0903306E0903406F090350630
-:102A200020E030E040EA50E4C701B6010F9468406E
-:102A300087FDCFCF20E030E04CED52E4C701B60176
-:102A40000F94B13918162CF2609136067091370642
-:102A5000072E000C880B990B0F94B8399B01AC0121
-:102A6000C701B6010F94B13987FF04C08FE7809387
-:102A70003806AECC80E0FBCF90916F0081E091FDF5
-:102A800002C080E0089590916F009D7F90936F0049
-:102A90000895EFE6F0E08081826080830895CF930F
-:102AA000C82F0E943C9594E0C99F90011124F90120
-:102AB000ED55F84F2155384FD9014D915D916D91EC
-:102AC0007C91408351836283738391E09093A2074A
-:102AD000882319F0CF910C944995CF910895CF9305
-:102AE000DF9380910807649B4DC081608093080745
-:102AF000909103018091080791FD46C08D7F8093DE
-:102B00000807809108074B9941C08B7F8093080785
-:102B1000C0919307C0FF10C08091E50880FD0CC0F4
-:102B20008091080780FF08C08091340981608093FC
-:102B3000340980E00E944F95C1FF10C08091E508E4
-:102B400081FF0CC08091080781FF08C08091340983
-:102B500082608093340981E00E944F95C2FF18C0C3
-:102B60008091E50882FF14C08091080782FF10C0A1
-:102B70008091340984608093340982E0DF91CF91A1
-:102B80000C944F958E7FB2CF8260B9CF8460BECF58
-:102B9000DF91CF910895809136028F3708F449C0B4
-:102BA0008F57909149069093FF07992309F43FC0EE
-:102BB0002C9A209160062093000890910201211127
-:102BC0009095907190930001209138062093FE0714
-:102BD00090910201211190959072909300018F5F66
-:102BE000809336028091FD0791E089278093FD074D
-:102BF00081110E94603E9091350221E0290F9730AB
-:102C00000CF020E0983008F041C0E92F092E000CAC
-:102C1000FF0B8827E15FF9468F4F0D945C413F968B
-:102C200087969396A696AB96BE96C3962F962C98AB
-:102C3000C0CF9091FF07891708F02C989091000859
-:102C4000891728F090910201907190930001909162
-:102C5000FE07891708F4C3CF90910201BDCF809180
-:102C6000FC07811103C083E08093FC078091FC077F
-:102C700081508093FC07882349F0292F07C0809159
-:102C800034028F5F8031ACF480933402209335029C
-:102C90008091E30881110E946F9580914C09909179
-:102CA0004D09009729F0019790934D0980934C09A5
-:102CB00008951092340280912D0681111BC08091DD
-:102CC0003F06909140069093420680934106809182
-:102CD0005606909157069093590680935806809116
-:102CE0002E0690912F06909331068093300681E056
-:102CF00080932D061092400610923F0610925706C0
-:102D00001092560610922F0610922E06BFCF88E022
-:102D100080937B0085E480937C0080917A008064BE
-:102D200080937A00B3CF80917A0086FDA6CF409140
-:102D300078005091790080913F0690914006840F71
-:102D4000951F9093400680933F06A0CF88E0809324
-:102D50007B0086E4E0CF80917A0086FD8ECF4091A3
-:102D600078005091790080912E0690912F06840F63
-:102D7000951F90932F0680932E0688CF88E080932E
-:102D80007B0087E4C8CF80917A0086FD76CF4091A2
-:102D90007800509179008091560690915706840FE3
-:102DA000951F909357068093560670CF2F923F92AF
-:102DB0004F925F926F927F928F929F92AF92BF924B
-:102DC000CF92DF92EF92FF920F931F93CF93DF93F7
-:102DD000CDB7DEB7C058D1090FB6F894DEBF0FBE2D
-:102DE000CDBF7C018B01242EAA963FAF2EAFAA97B0
-:102DF0002091690930916A0940916B0950916C09E1
-:102E0000DC016D917D918D919C910F94173A0F94F7
-:102E10007540E8966CAF7DAF8EAF9FAFE89720917D
-:102E20006D0930916E0940916F0950917009F70159
-:102E300064817581868197810F94173A0F9475404C
-:102E4000EC966CAF7DAF8EAF9FAFEC972091710980
-:102E5000309172094091730950917409D701189605
-:102E60006D917D918D919C911B970F94173A0F94C2
-:102E70007540C458DF4F688379838A839B83CC571E
-:102E8000D040209175093091760940917709509191
-:102E90007809F70164857585868597850F94173ABB
-:102EA0000F947540A8966CAF7DAF8EAF9FAFA8977B
-:102EB0008091D40583FF0EC0A8962CAD3DAD4EADDC
-:102EC0005FADA89720932B1630932C1640932D16A8
-:102ED00050932E16D801BC916896BFAF6897F80141
-:102EE000F1812C96FFAF2C97D8011296BC91A09639
-:102EF000BFAFA097F80133808091091690910A1610
-:102F0000891B80958F7019F40E94EADDF5CFF0914E
-:102F10000916C058DF4FF883C058D04020910916D9
-:102F20002DAF80914C0990914D09892B11F00C9493
-:102F300071A480911F1690912016A0912116B09136
-:102F40002216E8968CAC9DACAEACBFACE897881A64
-:102F5000990AAA0ABB0A8091231690912416A0917F
-:102F60002516B0912616EC962CAD3DAD4EAD5FAD5D
-:102F7000EC97281B390B4A0B5B0B29AF3AAF4BAFD1
-:102F80005CAF8091271690912816A0912916B091D8
-:102F90002A16C458DF4F288139814A815B81CC577A
-:102FA000D040281B390B4A0B5B0B2DAB3EAB4FAB14
-:102FB00058AF80912B1690912C16A0912D16B091A0
-:102FC0002E16A896CCACDDACEEACFFACA897C81A18
-:102FD000D90AEA0AFB0A09F465C0822D0E940CCDC9
-:102FE0008823B9F0A8968CAD9DADAEADBFADA897C6
-:102FF00080932B1690932C16A0932D16B0932E161B
-:103000000E940FD88AE598E10E94ACCEC12CD12C49
-:10301000760194E0299E800111240A5D1D4FC701AD
-:10302000B6010F94B839D8012D913D914D915C9125
-:103030000F94173A2B013C0120E030E0A9010F94D6
-:10304000684087FF04C077FA709477F8709420E0A6
-:1030500030E048E453E460917509709176098091FD
-:103060007709909178090F94173AA30192010F9470
-:10307000B13987FF17C0A8962CAD3DAD4EAD5FAD01
-:10308000A89720932B1630932C1640932D1650930F
-:103090002E160E940FD88BE398E10E94ACCEC12C73
-:1030A000D12C7601D501C4018827B7FD83959927D6
-:1030B000AA27BB27782E29AD3AAD4BAD5CAD57FFA3
-:1030C00002C0689471F88DA99EA9AFA9B8ADB7FFE9
-:1030D00002C0689472F8F7FE02C0689473F894E036
-:1030E000299E800111240A5D1D4FC701B6010F946E
-:1030F000B839D8012D913D914D915C910F94173ABB
-:103100006B017C0120E030E0A9010F94684087FF4B
-:10311000D2C1C701B6019058FDADEF2FF0E0FCAB76
-:10312000EBAB5DAD4DE5549F90011124D901A35641
-:10313000B64FBEAFADAF20E030E040E05FE30F94AC
-:10314000083E0F947B3F2B966CAF7DAF8EAF9FAF49
-:103150002B97EDADFEAD1082EA5BFF4F70822DA97B
-:103160003EA94FA958AD27962CAF3DAF4EAF5FAFEC
-:10317000279757FF0DC050954095309521953F4FAB
-:103180004F4F5F4F27962CAF3DAF4EAF5FAF2797A6
-:1031900049AC5AAC6BAC7CAC77FE08C070946094C0
-:1031A00050944094411C511C611C711C23968CAEA0
-:1031B0009DAEAEAEBFAE2397B7FE0DC08827992750
-:1031C000DC0188199909AA09BB0923968CAF9DAF28
-:1031D000AEAFBFAF239723962CAD3DAD4EAD5FADE7
-:1031E0002397ADADBEAD55962D933D934D935C9316
-:1031F0005897FD01418E528E638E748E27962CADAA
-:103200003DAD4EAD5FAD27975D962D933D934D93AC
-:103210005C939097C501B4010F94B83920912B07A6
-:1032200030912C0740912D0750912E070F94173A9B
-:1032300063966CAF7DAF8EAF9FAF639769A37AA3A0
-:103240008BA39CA369AD7AAD8BAD9CAD0F94B839BF
-:1032500020912F073091300740913107509132076C
-:103260000F94173A67966CAF7DAF8EAF9FAF67979D
-:103270006DA37EA38FA398A76DA97EA98FA998ADF2
-:103280000F94B839209133073091340740913507B6
-:10329000509136070F94173A6F966CAF7DAF8EAF93
-:1032A0009FAF6F9769A77AA78BA79CA72091370735
-:1032B000309138074091390750913A07C701B6015C
-:1032C0000F94173A69AF7AAF8BAF9CAF6DA77EA70B
-:1032D0008FA798AB23962CAD3DAD4EAD5FAD239738
-:1032E00026303105410551050CF0EDC036E043169E
-:1032F0005104610471040CF0E6C027968CAD9DADBD
-:10330000AEADBFAD27970697A105B1050CF0DBC0A8
-:1033100020E030E0A90169AD7AAD8BAD9CAD0F9492
-:10332000684087FFCBC089AD9AADABADBCADB0589E
-:103330002DE54BA95CA9249FF001259FF00D1124D8
-:10334000E356F64F85879687A787B08B8DE5ABA9A7
-:10335000BCA98A9FF0018B9FF00D1124E356F64F14
-:103360002B962CAD3DAD4EAD5FAD2B9721A332A377
-:1033700043A354A327968CAD9DADAEADBFAD2797AB
-:1033800084159505A605B70510F4D301C20123964F
-:103390002CAD3DAD4EAD5FAD239782179307A407CB
-:1033A000B50710F4DA01C9012B962CAD3DAD4EAD39
-:1033B0005FAD2B9782179307A407B50710F4DA01C6
-:1033C000C9012DE54BA95CA9249FF001259FF00DB3
-:1033D0001124E356F64F85A396A3A7A3B0A706979B
-:1033E000A105B10510F40C9454A4DF01A95ABF4FF4
-:1033F0008091D2058C9311968091D3058C9321A650
-:1034000089288A288B2819F080E00E94138A8DE58C
-:10341000ABA9BCA98A9FF0018B9FF00D1124E35644
-:10342000F64F818D928DA38DB48D892B8A2B8B2B9A
-:1034300019F081E00E94138A8DE52BA93CA9829F97
-:10344000F001839FF00D1124E356F64F858D968D84
-:10345000A78DB0A1892B8A2B8B2B19F082E00E94BB
-:10346000138A2B968CAD9DADAEADBFAD2B97892B3E
-:103470008A2B8B2B11F40C9473A480912907882339
-:1034800019F081508093290780912A07882319F029
-:10349000815080932A07211075C080E00E94D88750
-:1034A00080E28093290780912A0781117AC081E008
-:1034B0000E94E48976C0C701B6012ECE89AD9AADCF
-:1034C000ABADBCAD35CFAA96AEADBFADAA97CD9092
-:1034D000DD90ED90FC9020E030E0A901C701B6013D
-:1034E0000F94B139882379F08DE52BA93CA9829FEF
-:1034F000F001839FF00D1124E356F64FC586D68662
-:10350000E786F08A23CF63962CAD3DAD4EAD5FAD1F
-:103510006397CA01B9010F94173A6B017C01679652
-:103520002CAD3DAD4EAD5FAD6797CA01B9010F94AB
-:10353000173A9B01AC01C701B6010F94083E6B011D
-:103540007C016F962CAD3DAD4EAD5FAD6F97CA015E
-:10355000B9010F94173A9B01AC01C701B6010F9452
-:10356000083E0F94B6402DE54BA95CA9249FF001BD
-:10357000259FF00D1124E356F64F658776878787E0
-:10358000908BE4CE80912907811102C00E94E489CA
-:1035900091E0291288CF81E00E94048A80E2809322
-:1035A0002A07E0909509F0909609009197091091EB
-:1035B00098090C947BA42B968CAD9DADAEADBFADA0
-:1035C0002B97892B8A2B8B2B09F404C52091890911
-:1035D00030918A0940918B0950918C09A4966CAD69
-:1035E0007DAD8EAD9FADA4970F94173A0F94E63E34
-:1035F0000F947B3F6B017C018091250790912607FA
-:10360000A0912707B0912807EDADFEAD218D328D39
-:10361000438D548D2DAB3EAB4FAB58AF258D368DC2
-:10362000478D50A123962CAF3DAF4EAF5FAF239790
-:1036300021A132A143A154A12F962CAF3DAF4EAF93
-:103640005FAF2F9727962CAD3DAD4EAD5FAD279761
-:1036500082179307A407B50708F4C5C48114910421
-:10366000A104B104D1F06091BE057091BF058091B5
-:10367000C0059091C1056C157D058E059F0568F408
-:103680000F94943DA50194010F94A43D2C153D0584
-:103690004E055F0510F469017A018DA99EA9AFA9B5
-:1036A000B8AD892B8A2B8B2B11F16091C2057091DB
-:1036B000C3058091C4059091C5056C157D058E05E7
-:1036C0009F05A8F427962CAD3DAD4EAD5FAD279775
-:1036D0000F94943D2DA93EA94FA958AD0F94A43D38
-:1036E0002C153D054E055F0510F469017A012396FE
-:1036F0002CAD3DAD4EAD5FAD2397232B242B252B59
-:1037000021F16091C6057091C7058091C80590911F
-:10371000C9056C157D058E059F05B8F427962CAD5F
-:103720003DAD4EAD5FAD27970F94943D23962CADE4
-:103730003DAD4EAD5FAD23970F94A43D2C153D05D7
-:103740004E055F0510F469017A012F968CAD9DAD91
-:10375000AEADBFAD2F97892B8A2B8B2B21F16091BA
-:10376000CA057091CB058091CC059091CD056C1563
-:103770007D058E059F05B8F427962CAD3DAD4EAD69
-:103780005FAD27970F94943D2F962CAD3DAD4EAD78
-:103790005FAD2F970F94A43D2C153D054E055F0599
-:1037A00010F469017A018DE54BA95CA9849F800121
-:1037B000859F100D11240356164FF801ED5AFF4F47
-:1037C000C082D182E282F382C701B6010F94B6397A
-:1037D000A4962CAD3DAD4EAD5FADA4970F94023FC6
-:1037E000D80151966D937D938D939C9354976396D6
-:1037F0002CAD3DAD4EAD5FAD6397298B3A8B4B8BB6
-:103800005C8B67968CAD9DADAEADBFAD67978D8B74
-:103810009E8BAF8BB88F6F962CAD3DAD4EAD5FAD2F
-:103820006F97298F3A8F4B8F5C8F89AD9AADABAD77
-:10383000BCAD8D8F9E8FAF8FB8A32B962CAD3DADB9
-:103840004EAD5FAD2B97232B242B252B09F4DAC427
-:103850008E010F5E1F4F5E0131E2A30EB11CC12C21
-:10386000D12C7601D8014D905D906D907D908D01A9
-:1038700020E030E0A901C301B2010F94B1398823DF
-:1038800071F0A3019201C301B2010F94173A9B0199
-:10389000AC01C701B6010F94083E6B017C01A01674
-:1038A000B10601F7C701B6010F94B6409B01AC0108
-:1038B00060E070E080E89FE30F94023F6B017C01C1
-:1038C000AC019B0163966CAD7DAD8EAD9FAD6397F2
-:1038D0000F94173A698B7A8B8B8B9C8BA70196017F
-:1038E00067966CAD7DAD8EAD9FAD67970F94173A1F
-:1038F0006D8B7E8B8F8B988FA70196016F966CAD29
-:103900007DAD8EAD9FAD6F970F94173A698F7A8F0B
-:103910008B8F9C8FA701960169AD7AAD8BAD9CAD65
-:103920000F94173A6D8F7E8F8F8F98A3A096BFAD9F
-:10393000A097BB2309F4A2C520910B1630910C1659
-:1039400040910D1650910E1623962CAF3DAF4EAF01
-:103950005FAF23972DEB37E346E855E323966CAD35
-:103960007DAD8EAD9FAD23970F94B13987FD86C590
-:103970008090150790901607A0901707B090180731
-:10398000C988DA88EB88FC888091190790911A071A
-:10399000A0911B07B0911C078DAB9EABAFABB8AF2E
-:1039A0002D893E894F89588D2B962CAF3DAF4EAF58
-:1039B0005FAF2B9780911D0790911E07A0911F0765
-:1039C000B091200763968CAF9DAFAEAFBFAF63974A
-:1039D000298D3A8D4B8D5C8D67962CAF3DAF4EAFE8
-:1039E0005FAF67978091210790912207A0912307ED
-:1039F000B09124076F968CAF9DAFAEAFBFAF6F97FE
-:103A00002D8D3E8D4F8D58A127962CAF3DAF4EAFDB
-:103A10005FAF2797C501B4019058A70196010F9495
-:103A2000173A2B013C016DA97EA98FA998AD90583A
-:103A30002B962CAD3DAD4EAD5FAD2B970F94173A45
-:103A40009B01AC01C301B2010F94083E2B013C0164
-:103A500063966CAD7DAD8EAD9FAD639790586796C4
-:103A60002CAD3DAD4EAD5FAD67970F94173A9B01FE
-:103A7000AC01C301B2010F94083E2B013C016F96CB
-:103A80006CAD7DAD8EAD9FAD6F97905827962CADE8
-:103A90003DAD4EAD5FAD27970F94173A9B01AC013A
-:103AA000C301B2010F94083E69AF7AAF8BAF9CAFF0
-:103AB0002FEE3FEF4FE75FE30F94684018160CF4CA
-:103AC000D6C4A5019401C701B6010F94073E2B018E
-:103AD0003C0149825A826B827C822DA93EA94FA962
-:103AE00058AD2B966CAD7DAD8EAD9FAD2B970F94E1
-:103AF000073E2B966CAF7DAF8EAF9FAF2B976D833C
-:103B00007E838F83988763962CAD3DAD4EAD5FADC0
-:103B1000639767966CAD7DAD8EAD9FAD67970F9443
-:103B2000073E63966CAF7DAF8EAF9FAF639769879B
-:103B30007A878B879C876F962CAD3DAD4EAD5FAD80
-:103B40006F9727966CAD7DAD8EAD9FAD27970F9487
-:103B5000073E67966CAF7DAF8EAF9FAF67976D875F
-:103B60007E878F87988BAE014F5F5F4F5EAB4DAB0B
-:103B70008E010F5E1F4F1A01C12CD12C7601D1018D
-:103B80008D909D90AD90BD901D0120E030E0A90189
-:103B9000C501B4010F94B139882371F0A5019401D6
-:103BA000C501B4010F94173A9B01AC01C701B601DE
-:103BB0000F94083E6B017C010215130501F7C70144
-:103BC000B6010F94B6409B01AC0160E070E080E864
-:103BD0009FE30F94023F6B017C01AC019B01C30189
-:103BE000B2010F94173A69837A838B839C83A70170
-:103BF00096012B966CAD7DAD8EAD9FAD2B970F943E
-:103C0000173A6D837E838F839887A7019601639609
-:103C10006CAD7DAD8EAD9FAD63970F94173A6987FC
-:103C20007A878B879C87A701960167966CAD7DADDF
-:103C30008EAD9FAD67970F94173A6D877E878F87FC
-:103C4000988BEDADFEAD418852886388748805E598
-:103C500019E0ADA9BEA9CD90DD90ED90FD90BEAB71
-:103C6000ADAB20E030E0A901C701B6010F94B13936
-:103C7000882309F43EC020E030E0A901C701B60165
-:103C80000F94684087FFEBC2A701960150582B960E
-:103C90002CAF3DAF4EAF5FAF2B97D8016D917D91AB
-:103CA0008D919C910F94B6394B015C01A301920157
-:103CB0002B966CAD7DAD8EAD9FAD2B970F94173AC3
-:103CC000A50194010F94684018169CF4A701960171
-:103CD000C501B4010F94023F2B013C0120E030E00C
-:103CE000A9010F94684087FF04C077FA709477F8B1
-:103CF00070940C5F1F4FEDA9FEA92E163F0609F028
-:103D0000A8CFAA96AEADBFADAA971496CD90DD9080
-:103D1000ED90FC90179720E030E0A901C701B601B3
-:103D20000F94B139882309F4A1C2A3019201C701FC
-:103D3000B6010F94173A1B018C0123962CAD3DADB3
-:103D40004EAD5FAD2397CA01B9010F94173A6B01CD
-:103D50007C018DE5ABA9BCA98A9FF0018B9FF00D7A
-:103D60001124E356F64F61817281838194819B0116
-:103D7000AC010F94173A4B015C019B01AC01B601F9
-:103D8000C7010F946840181614F46401750191017D
-:103D9000A801B601C7010F946840181614F4610118
-:103DA000780180E1FE017196A5E1B7E001900D92E6
-:103DB0008A95E1F78DE5EBA9FCA98E9F80018F9F85
-:103DC000100D11240356164FC601D701F801818743
-:103DD0009287A387B487618972898389948990586F
-:103DE0009B01AC010F94083EADADBEAD1D962D916B
-:103DF0003D914D915C9150970F94173A9B01AC0106
-:103E00006BE077ED83E29BE30F94073E6B017C014F
-:103E10008BE097EDA3E2BBE3F80185839683A7834C
-:103E2000B0876181728183819481ADADBEAD2C91EB
-:103E300021602C939B01AC010F94173A9B01AC01BC
-:103E4000C701B6010F94684087FD05C0EDADFEAD1A
-:103E50008081826080838DE52BA93CA9829FF0013F
-:103E6000839FF00D1124E356F64F81819281A38147
-:103E7000B48180930B1690930C16A0930D16B093FB
-:103E80000E16E8968CAD9DADAEADBFADE8978093B4
-:103E90001F1690932016A0932116B0932216EC962D
-:103EA0002CAD3DAD4EAD5FADEC9720932316309316
-:103EB00024164093251650932616C458DF4F888148
-:103EC0009981AA81BB81CC57D040809327169093CB
-:103ED0002816A0932916B0932A16A8962CAD3DADAE
-:103EE0004EAD5FADA89720932B1630932C164093C0
-:103EF0002D1650932E169091091680910A1698133C
-:103F000003C084E680930616C058DF4F8881C058EE
-:103F1000D0408F5F8F708093091680910916909121
-:103F2000081681508F70891709F4D5C310910916AE
-:103F30002090081680910916281609F432C31150F2
-:103F40001F70D12CC12C121509F42BC3812E912C7A
-:103F50003DE5139FC0011124AC014356564F5CABA5
-:103F60004BABCA010E946A72882309F417C38BA95C
-:103F70009CA9892B09F19DE5989DF001999DF00D73
-:103F80001124E356F64FB1840285A384348445801E
-:103F9000568067807084A30192016B2D702F8A2D4B
-:103FA000932D0F94B139811171C2C114D10421F044
-:103FB000D6018C9180FD6EC211501F70822D209011
-:103FC0000816281609F45FC2181709F4EAC28F5FB1
-:103FD0008F70F5CF2091910930919209409193090A
-:103FE00050919409FBCA81149104A104B10409F40D
-:103FF0003FC06091BE057091BF058091C005909152
-:10400000C1056C157D058E059F0590F50F94B63999
-:104010006B962CAD3DAD4EAD5FAD6B970F94173ADF
-:1040200027966CAF7DAF8EAF9FAF2797C501B401C8
-:104030000F94B6399B01AC0127966CAD7DAD8EAD6A
-:104040009FAD27970F94023F4B015C01C701B6015A
-:104050000F94B6399B01AC01C501B4010F94B1397D
-:1040600087FF06C0C501B4010F947B3F6B017C0143
-:104070002DA93EA94FA958AD232B242B252BC9F1DF
-:104080006091C2057091C3058091C4059091C505EA
-:104090006C157D058E059F0560F50F94B6396B96FE
-:1040A0002CAD3DAD4EAD5FAD6B970F94173A4B0104
-:1040B0005C016DA97EA98FA998AD0F94B6399B01BB
-:1040C000AC01C501B4010F94023F4B015C01C70173
-:1040D000B6010F94B6399B01AC01C501B4010F9430
-:1040E000B13987FF06C0C501B4010F947B3F6B0156
-:1040F0007C0123968CAD9DADAEADBFAD2397892BD2
-:104100008A2B8B2BD9F16091C6057091C7058091E0
-:10411000C8059091C9056C157D058E059F0570F544
-:104120000F94B6396B962CAD3DAD4EAD5FAD6B9730
-:104130000F94173A4B015C0123966CAD7DAD8EADAB
-:104140009FAD23970F94B6399B01AC01C501B40113
-:104150000F94023F4B015C01C701B6010F94B639C1
-:104160009B01AC01C501B4010F94B13987FF06C0B2
-:10417000C501B4010F947B3F6B017C012F962CADE0
-:104180003DAD4EAD5FAD2F97232B242B252B09F48E
-:104190000ACB6091CA057091CB058091CC059091B6
-:1041A000CD056C157D058E059F0508F0FCCA0F94A2
-:1041B000B6396B962CAD3DAD4EAD5FAD6B970F94A0
-:1041C000173A4B015C012F966CAD7DAD8EAD9FAD66
-:1041D0002F970F94B6399B01AC01C501B4010F9420
-:1041E000023F4B015C01C701B6010F94B6399B0138
-:1041F000AC01C501B4010F94B13987FFD4CAC50120
-:10420000B401A4C5A301920163966CAD7DAD8EADE2
-:104210009FAD63970F94173A698B7A8B8B8B9C8B2E
-:10422000A301920167966CAD7DAD8EAD9FAD679792
-:104230000F94173A6D8B7E8B8F8B988FA301920111
-:104240006F966CAD7DAD8EAD9FAD6F970F94173AA5
-:10425000698F7A8F8B8F9C8FA30192015DCB2B96F8
-:10426000CCAEDDAEEEAEFFAE2B9717CD2FEE3FEF0F
-:104270004FE75FEB69AD7AAD8BAD9CAD0F94B13973
-:1042800087FF08C02FEE3FEF4FE75FEB29AF3AAF54
-:104290004BAF5CAF29AD3AAD4BAD5CAD60E070E0CB
-:1042A00080E89FE30F94073E20E030E040E05FE3CA
-:1042B0000F94173A0F94B6406B017C012091FE05D4
-:1042C0003091FF054091000650910106C301B201F3
-:1042D0000F94173AA70196010F94173A4B015C010E
-:1042E000A701960160E070E080E89FE30F94073E2D
-:1042F0009B01AC01C501B4010F94023F1B018C016D
-:104300008DE54BA95CA9849FF001859FF00D1124D8
-:10431000E356F64F85859685A785B0898DAB9EAB14
-:10432000AFABB8AF20E030E040E85FE3BC01CD01C7
-:104330000F94B13987FF01CD23EF34E045E35FEB04
-:1043400069AD7AAD8BAD9CAD0F94B13987FFF5CCDB
-:1043500020E030E0A90169AD7AAD8BAD9CAD0F9442
-:10436000B139C12CD12C60E8E62E6FEBF62E87FD1B
-:1043700006C0C12CD12C50E8E52E5FE3F52EA70135
-:10438000960169AD7AAD8BAD9CAD0F94173A4B0198
-:104390005C0129E539ED40E053E30F94B13987FD25
-:1043A00063C0A501940160E070E080E89FE30F9492
-:1043B000073E20E030E040E057E40F94173A0F94B6
-:1043C0007B3FCB010F9464410197880F991F880FA1
-:1043D000991FFC01E550F84E259135914591549176
-:1043E000FC01E554F84E85919591A591B49189AF62
-:1043F0009AAFABAFBCAFC501B4010F94173A29AD6A
-:104400003AAD4BAD5CAD0F94083E4B015C0120E032
-:1044100030E0A901C701B6010F946840181654F4A2
-:10442000A50194016BED7FE089E490E40F94073ED1
-:104430004B015C01A30192016DA97EA98FA998ADE2
-:104440000F94173AA50194010F94023F6B017C0170
-:104450009B01AC01B101C8010F94684018160CF023
-:104460006CCC1601870169CC90E080E0AECF2BE0E8
-:10447000222E37ED332E03E21BE35FCCC12CD12C6F
-:10448000E12CF12C8ECCCBA8DCA85DCDC114D104DD
-:1044900009F45CC0F601C580D680E780F084BDE5F4
-:1044A000B89DF001B99DF00D1124E356F64F8081BF
-:1044B00081FD28C0618972898389948990589B0104
-:1044C000AC010F94083EEBA9FCA9258536854785EC
-:1044D00050890F94173A9B01AC01C701B6010F94A4
-:1044E000073E6B018DAF99AF9B01AC016B2D702F17
-:1044F0008A2D932D0F94B13987FD04C0BC2C0D2D4E
-:10450000ADAC39AC2B2D302F4A2D532DC301B20148
-:104510000F94B139882309F44FCDFDE5F89DC00112
-:10452000F99D900D11249C012356364F6901D90144
-:104530008C9181608C938BA99CA90E9481708823A7
-:1045400019F1F60180818E7F808336CDAA96AEADBB
-:10455000BFADAA971896CD90DD90ED90FC901B977B
-:104560002BE037ED43E25BE3C701B6010F946840EF
-:1045700018160CF494CF9BE0C92E97EDD92E93E238
-:10458000E92E9BE3F92E8BCF8B2D902FAA2DB32DE7
-:10459000F60185839683A783B0870ECDDCAACBAACC
-:1045A0000BCD10910816F12CE12C0DE58091091628
-:1045B000811709F490C0812E912C109FC001112405
-:1045C0009C012356364F3CAB2BABC9010E946A724B
-:1045D000882309F47DC0E114F10409F46AC0C7011D
-:1045E0000E948170811165C0D7018C9181FD4CC002
-:1045F000089DC001099D900D1124AC014356564FF2
-:104600001A01DA0115964D905D906D907C90189787
-:10461000F701A580B680C780D084A3019201C601AE
-:10462000B5010F94B13987FF2FC0D70151966D9115
-:104630007D918D919C91549790589B01AC010F9462
-:10464000083EF70125853685478550890F94173A2E
-:104650009B01AC01C601B5010F94073E6B017C01C3
-:10466000A30192010F94B13987FF0EC0D1018C9143
-:1046700081608C938BA99CA90E9481708823F1F0A2
-:10468000F10180818E7F8083089DF001099DF00DEE
-:104690001124E356F64F2185328543855485658183
-:1046A0007681878190850F94B139811102C0109372
-:1046B00008161F5F1F70EBA8FCA878CFD1011596D4
-:1046C000CD92DD92ED92FC92189710930816DCCFF4
-:1046D000FCAAEBAAEECFF0900A16E09009160DE5C1
-:1046E000FE1409F480C01FEF1E0D1F70109FC00143
-:1046F00011248356964F0E946A72882309F471C070
-:10470000A12CB12C1BAA1DAE10E000E0FE1409F490
-:1047100071C0BDE5FB9EC0011124FC01E356F64FBC
-:104720006F01CF010E946A72882309F45EC0D6012E
-:1047300015966D917D918D919C9118970F94B6402F
-:104740003B014C010115110509F442C0F6018081BD
-:1047500080FF04C0D8018C9181608C93F801808126
-:1047600080FF36C0C8010E94817081112DC0D80120
-:1047700011962D913D914D915C91149760E070E000
-:1047800080E89FE30F94023F1B012C01AC019B01C9
-:10479000B301C4010F94173A69837A838B839C8396
-:1047A00095014BA95DADC201B1010F94173A698B18
-:1047B0007A8B8B8B9C8BAE014F5F5F4FBE016F5E20
-:1047C0007F4FC8010E944C77F80180818E7F8083E3
-:1047D000F394FF2DFF70FF2E53018BAA9DAE86012F
-:1047E00095CFE12E7DCFEF2C8BCF35018BA89DACE3
-:1047F0006801EECF0115110509F456C0AA96AEADB9
-:10480000BFADAA9718966D917D918D919C911B9744
-:104810000F94B6406B017C012DEC3CEC4CE45DE365
-:104820000F946840181644F08DECC82E8CECD82EEE
-:104830008CE4E82E8DE3F82EF8018081816080837E
-:10484000C8010E94817081112BC0D80111962D9151
-:104850003D914D915C91149760E070E080E89FE39A
-:104860000F94023F2B013C01A70196010F94173AC8
-:1048700069837A838B839C83A3019201B5018BA901
-:104880009DAD0F94173A698B7A8B8B8B9C8BAE0105
-:104890004F5F5F4FBE016F5E7F4FC8010E944C7734
-:1048A000F80180818E7F80830E94499581E0C05805
-:1048B000DF4F0FB6F894DEBF0FBECDBFDF91CF91B3
-:1048C0001F910F91FF90EF90DF90CF90BF90AF902E
-:1048D0009F908F907F906F905F904F903F902F9020
-:1048E000089580E0E4CFE0909909F0909A09009152
-:1048F0009B0910919C099701A80168966FAD689774
-:104900002C967FAD2C97A0968FADA097932D0F94EA
-:10491000B13987FD0AC06896EFAC68972C96FFAC5A
-:104920002C97A0960FADA097132D8DE5ABA9BCA930
-:104930008A9FF0018B9FF00D1124E356F64F2585D9
-:1049400036854785508960E070E080E89FE30F94EA
-:10495000023F2B013C019701A8010F94173A6B010C
-:104960007C018091091690910716891B8F70A09683
-:104970008FAFA097A701960160E074E284E799E405
-:104980000F94023F0F9475404B015C01A0968FADD0
-:10499000A09782508630B0F56091650970916609E4
-:1049A0008091670990916809681979098A099B09BA
-:1049B00016161706180619062CF5660F771F881F9E
-:1049C000991FA096BFADA0972B2F30E050E040E09C
-:1049D0000F94C63DCA01B9010F94B8390F94743FC2
-:1049E000860E971EA81EB91EC501B4010F94B839D2
-:1049F0009B01AC0160E074E284E799E40F94023F0C
-:104A00006B017C010E943C954091CE055091CF05F1
-:104A10006091D0057091D105480D591D6A1D7B1D0F
-:104A20004093CE055093CF056093D0057093D10588
-:104A30009DE52BA93CA9929FF001939FF00D1124B5
-:104A4000EA50F64F80829182A282B38281110E9445
-:104A500049958DE54BA95CA9849F8001859F100D28
-:104A600011240356164FD8011D962D913D914D915D
-:104A70005C915097C701B6010F94173AA4966CAF9A
-:104A80007DAF8EAF9FAFA497F8016183728383835C
-:104A9000948325A136A147A150A527962CAF3DAF01
-:104AA0004EAF5FAF2797CA01B9010F94B6396B9625
-:104AB0006CAF7DAF8EAF9FAF6B979B01AC01C70111
-:104AC000B6010F94173A0F94E63E0F947B3FAE96D3
-:104AD0006CAF7DAF8EAF9FAFAE97F801E95BFF4F34
-:104AE0006083718382839383FE01B1962D96FFAF1D
-:104AF000EEAF2D9729E739E0E4963FAF2EAFE4976C
-:104B0000AE01435D5F4F5AAB49AB212C312C50E8CD
-:104B10005DAB8FE38FAF2D96AEADBFAD2D972D91D1
-:104B20003D914D915D912D96BFAFAEAF2D97C701D1
-:104B3000B6010F94173A4B015C0120E030E0A90167
-:104B40000F94684087FF04C0B7FAB094B7F8B094E8
-:104B5000E496AEADBFADE4972D913D914D915D9141
-:104B6000E496BFAFAEAFE497E2962CAF3DAF4EAF49
-:104B70005FAFE297A5019401E2966CAD7DAD8EAD7D
-:104B80009FADE2970F94B13987FF16C0A50194013C
-:104B9000E2966CAD7DAD8EAD9FADE2970F94023F76
-:104BA0005B018C0191014DA95FAD0F94B13987FF75
-:104BB00003C015010DAB1FAFE9A9FAA92D962EADC3
-:104BC0003FAD2D97E217F30709F0A5CFA701960196
-:104BD00069AD7AAD8BAD9CAD0F94173A6B017C013A
-:104BE00020E030E0A9010F94684087FF04C0F7FA85
-:104BF000F094F7F8F0948090850990908609A09041
-:104C00008709B0908809A7019601C501B4010F94E6
-:104C1000B13987FF12C0A7019601C501B4010F94F5
-:104C2000023F7B018C0191014DA95FAD0F94B13919
-:104C300087FF03C017010DAB1FAF20E030E040E855
-:104C40005FE3B1018DA99FAD0F94B13987FF33C0E8
-:104C50008DE54BA95CA9849F8001859F100D1124CF
-:104C60000356164F780157E4E50EF11CAE966CAD75
-:104C70007DAD8EAD9FADAE970F94B63991014DA924
-:104C80005FAD0F94173A0F947B3FD7016D937D93DF
-:104C90008D939C93139791014DA95FADA4966CAD34
-:104CA0007DAD8EAD9FADA4970F94173AF801618347
-:104CB0007283838394836B962CAD3DAD4EAD5FAD17
-:104CC0006B97C301B2010F94173AA4966CAF7DAFF6
-:104CD0008EAF9FAFA4978DE52BA93CA9829FF001D1
-:104CE000839FF00D1124E356F64F85889688A78898
-:104CF000B08C81149104A104B10411F00C94DB9ADE
-:104D0000818D928DA38DB48D892B8A2B8B2B11F0E5
-:104D10000C94DB9A858D968DA78DB0A1892B8A2B5B
-:104D20008B2B11F00C94DB9A20918D0930918E0918
-:104D300040918F0950919009A4966CAD7DAD8EADD8
-:104D40009FADA4970F94173A0F94E63E0F947B3FC4
-:104D50006B017C010C94D39BCF93DF93CDB7DEB76F
-:104D600060970FB6F894DEBF0FBECDBFFC0190E197
-:104D7000DE01119601900D929A95E1F780914C0910
-:104D800090914D09892B69F4CE0101960E94D69627
-:104D900060960FB6F894DEBF0FBECDBFDF91CF9106
-:104DA000089580E0F5CFCF93DF93CDB7DEB72C9792
-:104DB0000FB6F894DEBF0FBECDBF19821A821B82D8
-:104DC0001C821D821E821F82188619861A861B86E7
-:104DD0001C869E012F5F3F4F40915109BC0186E721
-:104DE00092E00E94ACA62C960FB6F894DEBF0FBEE0
-:104DF000CDBFDF91CF9108954F925F926F927F92D6
-:104E00008F929F92AF92BF92CF92DF92EF92FF92DA
-:104E10000F931F93CF93DF93CDB7DEB72C970FB6C9
-:104E2000F894DEBF0FBECDBF2B013C0129873A8726
-:104E30004B875C8747015801F601E080F1800281D1
-:104E4000138120E030E0A901B701C8010F94B13906
-:104E5000882309F484C05E2D4F2D302F212F852FFC
-:104E6000942FA32FB22F89839A83AB83BC8320E036
-:104E700030E0A901B701C8010F94B139811104C014
-:104E8000E12CF12C00E810E4C701D8018D839E834A
-:104E9000AF83B887A501940160917E0270917F0273
-:104EA00080918002909181020F94B13987FF0CC0EC
-:104EB00080927E0290927F02A0928002B092810244
-:104EC000CE0105960E94D3A64092760250927702B8
-:104ED000609278027092790289859A85AB85BC854B
-:104EE00080937A0290937B02A0937C02B0937D0220
-:104EF000CE0101960E94D3A6A501940160917E0285
-:104F000070917F0280918002909181020F9468409D
-:104F1000181664F480927E0290927F02A092800222
-:104F2000B0928102CE0105960E94D3A60E947F8F87
-:104F30002C960FB6F894DEBF0FBECDBFDF91CF9198
-:104F40001F910F91FF90EF90DF90CF90BF90AF90A7
-:104F50009F908F907F906F905F904F90089550E05A
-:104F600040E035E023E47BCF0E943C951092CE05D3
-:104F70001092CF051092D0051092D10581110C949A
-:104F8000499508950F931F938091091690910A16E1
-:104F9000891B8F7009F449C090910616992361F01E
-:104FA000833040F48FEF890F29F08093061690E04C
-:104FB00080E038C01092061680910A162DE5829F77
-:104FC000C00111248356964FFC01208120FDEFCFB4
-:104FD0004091CE055091CF056091D0057091D105DB
-:104FE000E75AFF4F0081118122813381401B510B11
-:104FF000620B730B4093CE055093CF056093D005A1
-:105000007093D10520910A162F5F2F7020930716F9
-:1050100030910A1620910816321304C02091071609
-:10502000209308161F910F9108950E94B4A7BFCF37
-:105030002F923F924F925F926F927F928F929F92A8
-:10504000AF92BF92CF92DF92EF92FF920F931F9396
-:10505000CF93DF93CDB7DEB765970FB6F894DEBF79
-:105060000FBECDBF8FEF9FEF909389008093880094
-:105070000AE00983712C612C789480919C079091AF
-:105080009D07A0919E07B0919F07892B8A2B8B2BA0
-:1050900009F0EFC18091A2078823D1F08091A00789
-:1050A0009091A1071092A207892B91F01092A1076D
-:1050B0001092A007109293079091091680910A16FA
-:1050C000981731F080910A168F5F8F7080930A16BF
-:1050D0008091A0079091A107892B09F4CAC1409142
-:1050E00098075091990760919A0770919B0780915A
-:1050F000940790919507A0919607B091970700911A
-:105100008A0710E030E020E0841B950BA60BB70B5C
-:10511000081719072A073B0710F4D901C801E82F1F
-:10512000840F951FA61FB71F809398079093990728
-:10513000A0939A07B0939B07F1E0409161075091CB
-:105140006207609163077091640780917107909185
-:105150007207A0917307B0917407840F951FA61F63
-:10516000B71F8093710790937207A0937307B09352
-:1051700074071C012D0120943094409450942224F3
-:1051800057FC23943324442455242A82B7FD2FC08E
-:1051900000915807002E000C110B220B330B40918D
-:1051A000AF075091B0076091B1077091B207400FFF
-:1051B000511F621F731F4093AF075093B007609356
-:1051C000B1077093B20740915D0750915E076091FF
-:1051D0005F0770916007841B950BA60BB70B80933C
-:1051E000710790937207A0937307B093740740916F
-:1051F0006507509166076091670770916807809115
-:10520000750790917607A0917707B0917807840F82
-:10521000951FA61FB71F8093750790937607A093DD
-:105220007707B09378078C019D0100951095209524
-:105230003095002737FD03951127222733270C8B44
-:10524000B7FD2FC0C09059070C2C000CDD08EE08EC
-:10525000FF084091B3075091B4076091B507709172
-:10526000B6074C0D5D1D6E1D7F1D4093B307509317
-:10527000B4076093B5077093B60740915D075091EE
-:105280005E0760915F0770916007841B950BA60B0A
-:10529000B70B8093750790937607A0937707B09329
-:1052A00078074091690750916A0760916B07709188
-:1052B0006C078091790790917A07A0917B07B09154
-:1052C0007C07840F951FA61FB71F809379079093C3
-:1052D0007A07A0937B07B0937C07AC01BD01409592
-:1052E000509560957095442777FD4395552766271F
-:1052F00077274B8BB7FD2FC080905A07082C000CE6
-:105300009908AA08BB08C090B707D090B807E090EA
-:10531000B907F090BA07C80CD91CEA1CFB1CC09254
-:10532000B707D092B807E092B907F092BA07C090D9
-:105330005D07D0905E07E0905F07F09060078C19E2
-:105340009D09AE09BF098093790790937A07A093CE
-:105350007B07B0937C07C0906D07D0906E07E090FC
-:105360006F07F090700780917D0790917E07A09164
-:105370007F07B09180078C0D9D1DAE1DBF1D8093D2
-:105380007D0790937E07A0937F07B0938007B7FDBA
-:10539000F2C080905B07082C000C9908AA08BB0893
-:1053A000C090BB07D090BC07E090BD07F090BE074F
-:1053B000C80CD91CEA1CFB1CC092BB07D092BC07CE
-:1053C000E092BD07F092BE07C0905D07D0905E07E7
-:1053D000E0905F07F09060078C199D09AE09BF0946
-:1053E00080937D0790937E07A0937F07B0938007FB
-:1053F000A1E0F11104C080918400909185008A8120
-:105400008111889A9C8991118E9ABB89BB2331F0B6
-:1054100080910B018095887080930901AA2329F05F
-:1054200080915C078111A9C0149A809184009091A9
-:105430008500809184009091850021108898011149
-:105440008E98442329F080910B0188708093090184
-:10545000AA2329F080915C07811191C01498EE2352
-:1054600021F08091840090918500E150F0E009F0F6
-:1054700064CE80919C0790919D07A0919E07B0916A
-:105480009F07892B8A2B8B2B11F00C941EB1E09176
-:10549000A007F091A107FD8BEC8BEF2B11F40C947E
-:1054A00090B18091980790919907A0919A07B09137
-:1054B0009B074091940750919507609196077091D2
-:1054C000970784179507A607B70708F45AC01092E4
-:1054D000A1071092A007109293079091091680914E
-:1054E0000A16981711F40C9490B180910A168F5FE8
-:1054F0008F7080930A1630EDC32E37E0D32EE12C47
-:10550000F12C8091A0079091A107892B11F00C94A8
-:1055100016B10E94C2A79093A1078093A007892B80
-:1055200011F40C9416B1A091A007B091A107BD8B06
-:10553000AC8B9C9193FB882780F993FF0E94E770C6
-:10554000882309F412C58C899D8945960E9478703C
-:105550001092A1071092A00710929307909109163C
-:1055600080910A169817A9F280910A168F5F8F70A2
-:1055700080930A16CECFA0E03CCF419A56CF4198F7
-:105580006ECF40918F075091900760919107709175
-:105590009207481759076A077B0708F40FC2409122
-:1055A0008B0750918C0760918D0770918E07EC8965
-:1055B000FD8986A997A9A0ADB1AD481759076A071B
-:1055C0007B0708F0D1C1411551056105710509F04E
-:1055D00066C08090070690900806A0900906B090DB
-:1055E0000A0683E992E2A1E0FC010591159125915B
-:1055F0003491081519052A053B0558F4B694A7946B
-:1056000097948794AA0F0496EFEAF2E2E817F90755
-:1056100059F7A0938A07F0E28F169104A104B10410
-:1056200028F480E2882E912CA12CB12C00E2801A63
-:105630009108A108B108811428E09206A104B104E0
-:1056400008F49BC134E0939EC00111248D56914E05
-:10565000FC01329625913491A82DEE27A39F80015D
-:10566000A29F010D1E1F06940E1F1E1F112430E065
-:1056700020E0FC01C590D490F12CE12CC01AD10A95
-:10568000E20AF30A4C0D5D1D6E1D7F1D40938B07D2
-:1056900050938C0760938D0770938E0732CF10E084
-:1056A000942F852E862FBD81AE81FF81E8853985B7
-:1056B0002A85FB800C81E0910306E99FA12DFF273D
-:1056C00030910406399FA00DF11D10900506199E1A
-:1056D000F00DE89DA00DF11D389DF00DE89FF00D37
-:1056E0000A2FBF2F0A9FE12D332722270F9FE00D9E
-:1056F000311D211FBA9FE00D311D211FBF9F300DAD
-:10570000211D032FB22F0A9FF12C332722270F9F31
-:10571000F00C311D211FBA9FF00C311D211FBF9FBE
-:10572000300D211D032FB22FEE2790910706809098
-:1057300008068091090600900E08012A09F484C029
-:1057400030910A08309FE119910B810A810B209159
-:105750000B08209FE0199109810A810BF0900C0839
-:10576000F09E90198108810B3B9FE0199109810AF5
-:10577000810B2B9F90198108810BFB9E801881095A
-:105780000A9FF12C332722270F9FF00C311D211F78
-:10579000BA9FF00C311D211FBF9F300D211D032F1B
-:1057A000B22F30910608309FE10D911F811E811F9D
-:1057B00020910708209FE00D911D811E811FF09010
-:1057C0000808F09E900D811C811F3B9FE00D911DEC
-:1057D000811E811F2B9F900D811C811FFB9E800CC1
-:1057E000811D0A9FF12C332722270F9FF00C311DBA
-:1057F000211FBA9FF00C311D211FBF9F300D211DAD
-:10580000032FB22F30910208309FE119910B810ACA
-:10581000810B20910308209FE0199109810A810BD7
-:10582000F0900408F09E90198108810B3B9FE019CD
-:105830009109810A810B2B9F90198108810BFB9E96
-:10584000801881090C94A6AC30910A08309FE10DB4
-:10585000911F811E811F20910B08209FE00D911D3B
-:10586000811E811FF0900C08F09E900D811C811FFD
-:105870003B9FE00D911D811E811F2B9F900D811C70
-:10588000811FFB9E800C811D0A9FF12C332722274C
-:105890000F9FF00C311D211FBA9FF00C311D211FED
-:1058A000BF9F300D211D032FB22F30910608309F6E
-:1058B000E119910B810A810B20910708209FE019C3
-:1058C0009109810A810BF0900808F09E90198108D7
-:1058D000810B3B9FE0199109810A810B2B9F901945
-:1058E0008108810BFB9E801881090A9FF12C3327C8
-:1058F00022270F9FF00C311D211FBA9FF00C311D84
-:10590000211FBF9F300D211D032FB22F30910208A0
-:10591000309FE10D911F811E811F20910308209F60
-:10592000E00D911D811E811FF0900408F09E900DE6
-:10593000811C811F3B9FE00D911D811E811F2B9FAC
-:10594000900D811C811FFB9E800C811D11240C83F6
-:10595000FB82BD83AE83FF83E88739872A87982C33
-:10596000892EB12CA82E3DCEAC89BD89D2968D90C2
-:105970009D90AD90BC90D59734CED501C401B6951D
-:10598000A795979587958C7F8D56954EFC01C59070
-:10599000D490FC01329625913491B82DB770B29F06
-:1059A000C001B39F900D112403E0969587950A9549
-:1059B000E1F7C81AD90AF12CE12C64CE4091860790
-:1059C0005091870760918807709189074817590798
-:1059D0006A077B0708F031C28090810790908207A8
-:1059E000A0908307B090840780918507EC89FD899A
-:1059F00081117CC0EE5BFF4FE080F180028113815A
-:105A0000EC89FD89E15BFF4F208131814281538127
-:105A1000EC89FD8962A973A984A995A90E94957052
-:105A2000F1E0F0938507AC89BD89D2964D915D91E7
-:105A30006D917C91D59783E992E2A1E0FC010591FB
-:105A4000159125913491041715072607370758F447
-:105A50007695679557954795AA0F0496EFEAF2E277
-:105A6000E817F90759F7A0938A07403251056105F5
-:105A7000710520F440E250E060E070E040525109CE
-:105A8000610971094115F8E05F076105710508F4C6
-:105A9000B4C104E0509FC00111248D56914EFC0109
-:105AA000329625913491AA27439FF001429FE10D40
-:105AB000FA1F0694EA1FFA1F1124AF0170E060E09C
-:105AC000FC01C590D490F12CE12CC41AD50AE60A49
-:105AD000F70A8C0C9D1CAE1CBF1C80928107909213
-:105AE0008207A0928307B09284070BCD82AD93AD5D
-:105AF000A4ADB5AD88169906AA06BB0608F073C119
-:105B000081149104A104B10449F440910706509115
-:105B100008066091090670910A068DCFA0E0FB850A
-:105B2000982D492D8A2DEC857D856E85BF855889F8
-:105B300039892A8950910306599F612DBB273091DD
-:105B40000406399F600DB11D10900506199EB00D19
-:105B5000549F600DB11D349FB00D589FB00DE62FBE
-:105B60007B2FE69F512D33272227EB9F500D311DB0
-:105B70002A1F769F500D311D2A1F7B9F300D211D3E
-:105B8000E32F722FE69FF12D33272227EB9FF00D95
-:105B9000311D2A1F769FF00D311D2A1F7B9F300D6E
-:105BA000211DE32F722F552790910706409108067B
-:105BB0008091090600900E080A2A09F484C03091E9
-:105BC0000A083E9F51199A0B4A0B8A0B20910B0829
-:105BD0002E9F501991094A0B8A0BF0910C08FE9FD9
-:105BE000901941098A0B379F501991094A0B8A0B6A
-:105BF000279F901941098A0BF79F40198109E69F59
-:105C0000F12D33272227EB9FF00D311D2A1F769FA0
-:105C1000F00D311D2A1F7B9F300D211DE32F722FA8
-:105C2000309106083E9F510D9A1F4A1F8A1F2091EE
-:105C300007082E9F500D911D4A1F8A1FF0910808DA
-:105C4000FE9F900D411D8A1F379F500D911D4A1FC9
-:105C50008A1F279F900D411D8A1FF79F400D811DB0
-:105C6000E69FF12D33272227EB9FF00D311D2A1FD0
-:105C7000769FF00D311D2A1F7B9F300D211DE32FD4
-:105C8000722F309102083E9F51199A0B4A0B8A0BD2
-:105C9000209103082E9F501991094A0B8A0BF0910D
-:105CA0000408FE9F901941098A0B379F50199109EA
-:105CB0004A0B8A0B279F901941098A0BF79F4019BD
-:105CC00081090C94E5AE30910A083E9F510D9A1F50
-:105CD0004A1F8A1F20910B082E9F500D911D4A1FAD
-:105CE0008A1FF0910C08FE9F900D411D8A1F379F5F
-:105CF000500D911D4A1F8A1F279F900D411D8A1F1D
-:105D0000F79F400D811DE69FF12D33272227EB9F42
-:105D1000F00D311D2A1F769FF00D311D2A1F7B9F2C
-:105D2000300D211DE32F722F309106083E9F51192F
-:105D30009A0B4A0B8A0B209107082E9F5019910944
-:105D40004A0B8A0BF0910808FE9F901941098A0BB3
-:105D5000379F501991094A0B8A0B279F90194109C7
-:105D60008A0BF79F40198109E69FF12D33272227DF
-:105D7000EB9FF00D311D2A1F769FF00D311D2A1F5C
-:105D80007B9F300D211DE32F722F309102083E9F23
-:105D9000510D9A1F4A1F8A1F209103082E9F500DF4
-:105DA000911D4A1F8A1FF0910408FE9F900D411D0E
-:105DB0008A1F379F500D911D4A1F8A1F279F900DE4
-:105DC000411D8A1FF79F400D811D1124FB87EC8721
-:105DD0007D876E87BF87588B398B2A8B542F492F2D
-:105DE00070E0682F28CE2C893D89215B3F4FD90177
-:105DF0004D915D916D917C911ECEDB01CA01B695EE
-:105E0000A795979587958C7F8D56954EFC01C590EB
-:105E1000D490FC013296259134914770429FC00185
-:105E2000439F900D1124F3E096958795FA95E1F73D
-:105E3000C81AD90AF12CE12C4CCE809130029091F5
-:105E40003102A0913202B0913302B7FF62C02C89B7
-:105E50003D89295B3F4FD901CD90DD90ED90FC90BD
-:105E600083E992E221E0FC0145915591659174919D
-:105E70004C155D056E057F0558F4F694E794D794AC
-:105E8000C794220F0496EFEAF2E2E817F90759F7F0
-:105E900020938A07F0E2CF16D104E104F10428F43C
-:105EA00060E2C62ED12CE12CF12C00E2C01AD10800
-:105EB000E108F108C11428E0D206E104F10408F475
-:105EC00031C034E0D39EC00111248D56914EFC01A7
-:105ED0003296259134917C2D6627739FA001729F85
-:105EE000410D561F0694461F561F112470E060E0B6
-:105EF000FC0185919491B0E0A0E0841B950BA60B6A
-:105F0000B70B8093300290933102A0933202B0938A
-:105F10003302C0903002D0903102E0903202F09013
-:105F20003302EFCAD701C601B695A7959795879515
-:105F30008C7F8D56954EFC0125913491FC01329653
-:105F4000459154918C2D8770C82EC49EC001C59E6A
-:105F5000900D112453E0969587955A95E1F7281BEB
-:105F6000390BC901B0E0A0E0CCCFEC89FD89C58830
-:105F7000D688E788F08C81E0C114D104E104F104F3
-:105F800009F480E0AC89BD8959960D911D912D9140
-:105F90003C915C97011511052105310509F08260DE
-:105FA000EC89FD89458D568D678D70A14115510590
-:105FB0006105710509F08460809393071092810751
-:105FC00010928207109283071092840710928B0719
-:105FD00010928C0710928D0710928E07EC89FD8924
-:105FE00085A196A1A7A1B0A580939407909395074A
-:105FF000A0939607B0939707882499245401881A90
-:10600000990AAA0ABB0A8092710790927207A0921D
-:106010007307B09274078092750790927607A092EA
-:106020007707B09278078092790790927A07A092CA
-:106030007B07B0927C0780927D0790927E07A092AA
-:106040007F07B092800781A092A0A3A0B4A0880C83
-:10605000991CAA1CBB1CCC0CDD1CEE1CFF1CC092A6
-:106060006107D0926207E0926307F0926407000F25
-:10607000111F221F331F009365071093660720939B
-:10608000670730936807440F551F661F771F4093BB
-:10609000690750936A0760936B0770936C0780924F
-:1060A0006D0790926E07A0926F07B0927007880FED
-:1060B000991FAA1FBB1F80935D0790935E07A09353
-:1060C0005F07B0936007109298071092990710929B
-:1060D0009A0710929B0782A593A5A4A5B5A58093C6
-:1060E0008F0790939007A0939107B093920786A58E
-:1060F00097A5A0A9B1A98093860790938707A0933D
-:106100008807B093890781A580935C07EA5BFF4FFE
-:1061100090812091E508921304C020912F028217EC
-:1061200031F080932F029093E5080E945A88809165
-:10613000E30881110E946F952FEF3FEFA901209393
-:106140003002309331024093320250933302EC8993
-:10615000FD89FE96E080F18002811381AC89BD89C2
-:10616000D2962D913D914D915C91D597A55BBF4FF6
-:10617000BD8BAC8B6D917D918D919C910E949570A2
-:1061800010928507EC89FD8940815181628173817C
-:1061900083E992E2A1E0FC010591159125913491EA
-:1061A000041715072607370758F47695679557950E
-:1061B0004795AA0F04962FEA32E22817390759F7B4
-:1061C000A0938A07403251056105710520F440E231
-:1061D00050E060E070E040525109610971094115D9
-:1061E00038E053076105710508F478C0A4E05A9FB0
-:1061F000C00111248D56914EFC01329625913491A7
-:10620000AA27439FF001429FE10DFA1F0694EA1F5F
-:10621000FA1F1124AF0170E060E0FC01C590D4903A
-:10622000F12CE12CC41AD50AE60AF70AC0929C07A1
-:10623000D0929D07E0929E07F0929F0780919C0765
-:1062400090919D07A0919E07B0919F07AC01BD0161
-:106250000097E1E0AE07B10520F04FEF5FEF60E09F
-:1062600070E0841B950BA60BB70B80939C07909353
-:106270009D07A0939E07B0939F07F8948091840098
-:10628000909185004096F981F150F983FF2309F43C
-:1062900045C0640E751E6816790610F40C943CA86F
-:1062A0007092890060928800789465960FB6F89491
-:1062B000DEBF0FBECDBFDF91CF911F910F91FF9039
-:1062C000EF90DF90CF90BF90AF909F908F907F9096
-:1062D0006F905F904F903F902F900895DB01CA011F
-:1062E000B695A795979587958C7F8D56954EFC0111
-:1062F000C590D490FC013296259134914770429F0D
-:10630000C001439F900D112433E0969587953A95EF
-:10631000E1F7C81AD90AF12CE12C88CF3C01C0CF93
-:1063200080EDC82E87E0D82EE12CF12C0C9489AAA0
-:10633000FC01208131814281538160917509709106
-:10634000760980917709909178090F94173A0F9404
-:10635000754060932B1670932C1680932D16909396
-:106360002E169091091680910A1698130D9481119A
-:106370000E947F8F0E943C9540912B1650912C16C5
-:1063800060912D1670912E164093BB075093BC0759
-:106390006093BD077093BE0781110C9449950895D1
-:1063A0004F925F926F927F928F929F92AF92BF9225
-:1063B000CF92DF92EF92FF92CF93DF93EC01209187
-:1063C00075093091760940917709509178096C856B
-:1063D0007D858E859F850F94173A0F9475406B01CC
-:1063E0007C0120917109309172094091730950919B
-:1063F0007409688579858A859B850F94173A0F946F
-:1064000075404B015C0120916D0930916E094091FE
-:106410006F09509170096C817D818E819F810F94ED
-:10642000173A0F9475402B013C0120916909309176
-:106430006A0940916B0950916C09688179818A8160
-:106440009B810F94173A0F94754060931F167093B9
-:106450002016809321169093221640922316509274
-:106460002416609225167092261680922716909216
-:106470002816A0922916B0922A16C0922B16D092F6
-:106480002C16E0922D16F0922E16909109168091FE
-:106490000A16981781F0DF91CF91FF90EF90DF906F
-:1064A000CF90BF90AF909F908F907F906F905F90B4
-:1064B0004F900D9481110E947F8F0E943C95C82FB0
-:1064C0008FE196E10E947870CC2381F0DF91CF912B
-:1064D000FF90EF90DF90CF90BF90AF909F908F9004
-:1064E0007F906F905F904F900C944995DF91CF9182
-:1064F000FF90EF90DF90CF90BF90AF909F908F90E4
-:106500007F906F905F904F900895CF92DF92EF92BF
-:10651000FF92CF93DF93C82F0E943C9594E0C99FD0
-:10652000E0011124FE01E155F84FC080D180E280E6
-:10653000F38081110E944995C55DD84FC701B6010E
-:106540000F94B839288139814A815B810F94173AB9
-:10655000DF91CF91FF90EF90DF90CF900895CF9291
-:10656000DF92EF92FF92CF93DF93C82F0E943C956A
-:1065700094E0C99FE0011124FE01ED55F84FC08061
-:10658000D180E280F38081110E944995C55DD84F8A
-:10659000C701B6010F94B839288139814A815B81DE
-:1065A0000F94173ADF91CF91FF90EF90DF90CF904B
-:1065B0000895FC017081472F50E0062E02C05595CA
-:1065C00047950A94E2F740FF14C04091010850E05B
-:1065D000062E02C0559547950A94E2F740FF09C080
-:1065E00021E030E001C0220F6A95EAF720952723C9
-:1065F00020830895CF93DF9324E0829FC00111246C
-:10660000EC01C359D04FFC01EA51F74F86559A4F20
-:10661000DC012D913D914D915C9160817181828170
-:1066200093810F94083E688379838A839B83DF91EB
-:10663000CF9108958F929F92AF92BF92CF92DF92A7
-:10664000EF92FF92CF93DF9320913702222309F438
-:106650008EC0EC0180910108E82E80FF2CC0809054
-:10666000390290903A02A0903B02B0903C022881FF
-:1066700039814A815B81C501B4010F9468401816C5
-:1066800024F488829982AA82BB82809045029090ED
-:106690004602A0904702B0904802288139814A8181
-:1066A0005B81C501B4010F94B13987FF04C08882B2
-:1066B0009982AA82BB82E1FE2CC080903D0290901C
-:1066C0003E02A0903F02B09040022C813D814E815D
-:1066D0005F81C501B4010F946840181624F48C82C0
-:1066E0009D82AE82BF828090490290904A02A09023
-:1066F0004B02B0904C022C813D814E815F81C501DF
-:10670000B4010F94B13987FF04C08C829D82AE82A0
-:10671000BF82E2FE2CC0C0904102D0904202E090C5
-:106720004302F0904402288539854A855B85C7017C
-:10673000B6010F946840181624F4C886D986EA86F4
-:10674000FB86C0904D02D0904E02E0904F02F09038
-:106750005002288539854A855B85C701B6010F94AB
-:10676000B13987FF04C0C886D986EA86FB86DF91E7
-:10677000CF91FF90EF90DF90CF90BF90AF909F9020
-:106780008F900895CF92DF92EF92FF921F93CF9355
-:10679000DF93CDB7DEB760970FB6F894DEBF0FBEBC
-:1067A000CDBF8AE896E00E941AB38091D40583FD9C
-:1067B00076C02091820230918302409184025091F0
-:1067C0008502609196067091970680919806909147
-:1067D00099060F94B139882309F461C08091510959
-:1067E0000E940CCD182F882331F00E940FD88BE91E
-:1067F00094E10E94ACCE20918202309183024091BC
-:10680000840250918502609196067091970680915E
-:106810009806909199060F94073E6B017C0120E049
-:1068200030E0A9010F94684087FF04C0F7FAF094A4
-:10683000F7F8F094E091510984E0E89FF001112409
-:10684000EA5DFD4F2081318142815381C701B6014C
-:106850000F94173A20E030E048E453E40F94684086
-:106860001816DCF40E940FD88CE794E10E94ACCE9D
-:106870008091960690919706A0919806B0919906FE
-:106880008093820290938302A0938402B093850246
-:1068900086E996E00E9498B102C01111E9CF2AE082
-:1068A00037ED43E25CE360915102709152028091B6
-:1068B0005302909154020F94173A6B017C0160913E
-:1068C000200270912102072E000C880B990B0F9467
-:1068D000B8399B01AC01C701B6010F94173A6D8717
-:1068E0007E878F87988B19821A821B821C821D8259
-:1068F0001E821F82188619861A861B861C869E0198
-:106900002F5F3F4F40915109BE01635F7F4F8AE87F
-:1069100096E00E94ACA680E1EAE8F6E0A6E7B2E0E5
-:1069200001900D928A95E1F760960FB6F894DEBF5C
-:106930000FBECDBFDF91CF911F91FF90EF90DF9001
-:10694000CF900895CF92DF92EF92FF920F931F9313
-:106950006A01E0907E02F0907F0200918002109127
-:106960008102FB012081318142815381FC016081E0
-:106970007181828193810E94FCA61F910F91FF90EB
-:10698000EF90DF90CF900895CF92DF92EF92FF9239
-:106990000F931F936B01FC01E080F1800281138152
-:1069A000E6E7F2E02481358146815781608171817B
-:1069B000828193810E94FCA61F910F91FF90EF901E
-:1069C000DF90CF9008958F929F92AF92BF92CF9217
-:1069D000DF92EF92FF92CF93DF93809051029090DD
-:1069E0005202A0905302B0905402FC01C080D180AA
-:1069F000E280F38020E030E0A901C701B6010F94E6
-:106A0000B139882341F0C0925102D0925202E092F3
-:106A10005302F0925402C0912002D091210284E6E8
-:106A200090E09093210280932002E091510984E04C
-:106A3000E89FF0011124EA5DFD4FC080D180E28023
-:106A4000F38080E090E0A0E8BFE380839183A2839D
-:106A5000B3830E94C2B38092510290925202A092DC
-:106A60005302B0925402D0932102C0932002E091CD
-:106A7000510984E0E89FF0011124EA5DFD4FC082D6
-:106A8000D182E282F382DF91CF91FF90EF90DF908D
-:106A9000CF90BF90AF909F908F9008950F931F93CA
-:106AA000CF93DF938B01C6E7D2E0E091510924E058
-:106AB000E29FF0011124EA5DFD4F20813181428186
-:106AC0005381FC0160817181828193810F94023F27
-:106AD0002C853D854E855F850F94083E6C877D87AC
-:106AE0008E879F87C8010E94D3A6DF91CF911F9107
-:106AF0000F910C947F8F0D94BA114F925F926F9209
-:106B00007F928F929F92AF92BF92CF92DF92EF923D
-:106B1000FF920F931F93CF93DF93CDB7DEB72C97E0
-:106B20000FB6F894DEBF0FBECDBF182F062F0E9400
-:106B30007F8F123048F10E940FD884E50E949FCECB
-:106B4000612F70E090E080E00F94C00D80E20E9421
-:106B50009FCE86E793E20E94ACCE2C960FB6F894B7
-:106B6000DEBF0FBECDBFDF91CF911F910F91FF9080
-:106B7000EF90DF90CF90BF90AF909F908F907F90DD
-:106B80006F905F904F900895011108C080910108A7
-:106B90008770873009F032C10E94446BF090510930
-:106BA0001F1509F422C180E1E6E7F2E0AAE8B6E0A9
-:106BB00001900D928A95E1F7209151023091520295
-:106BC000409153025091540229873A874B875C8742
-:106BD00080E090E0A5E0B3E48093510290935202EC
-:106BE000A0935302B0935402412F6F2D80E00E9476
-:106BF0007872412F6F2D81E00E947872412F6F2DA6
-:106C000082E00E947872011146C020918606309180
-:106C10008706409188065091890660917E027091A6
-:106C20007F0280918002909181020F94083E6093D0
-:106C30007E0270937F028093800290938102809005
-:106C40004D0290904E02A0904F02B0905002A501CC
-:106C500094010F946840181644F480927E0290923A
-:106C60007F02A0928002B092810220E030E040E0FA
-:106C70005FE360918109709182098091830990910D
-:106C800084090F94173A69837A838B839C83CE019E
-:106C900001960E94D3A68CE0189F90011124A901AF
-:106CA0004259594F6A018F9DC0011124DC01A2593C
-:106CB000B94F7D012D913D914D915C91F60160811F
-:106CC0007181828193810F94073E2B013C01D70192
-:106CD00014962D913D914D915C911797F601648129
-:106CE0007581868197810F94073E4B015C01D70126
-:106CF00018962D913D914D915C911B97F601608501
-:106D00007185828593850F94073E6B017C011093FA
-:106D10005109A301920160917602709177028091EE
-:106D20007802909179020F94083E609376027093F6
-:106D300077028093780290937902A5019401609183
-:106D40007A0270917B0280917C0290917D020F9477
-:106D5000083E60937A0270937B0280937C0290934A
-:106D60007D02A701960160917E0270917F02809161
-:106D70008002909181020F94083E60937E0270938E
-:106D80007F0280938002909381020E947BB5011163
-:106D900020C0809135098330E0F08AE896E00E94B7
-:106DA0001AB388E0EAE8F6E0DE01119601900D9250
-:106DB0008A95E1F749E759E0BE016B5F7F4FCE014D
-:106DC00001960E94A2B461E879E082E996E00E940F
-:106DD000C4B429853A854B855C8520935102309354
-:106DE000520240935302509354020E947F8F60914D
-:106DF000510988E893E20E947FD6AFCE01E0CECE63
-:106E000021E030E0082E02C0220F331F0A94E2F77F
-:106E1000209530959091BF0729232093BF0781309B
-:106E200061F020F0823071F081E008955F9A8091E6
-:106E3000E4088E7F8093E408F7CF8A9A8091E40873
-:106E40008D7FF8CF80910801809581708093060135
-:106E50008091E4088B7F8093E40880E090E0A6E1D5
-:106E6000B3E480937E0290937F02A0938002B0935C
-:106E700081020E947BB5D8CF80E00E9400B781E0FC
-:106E80000E9400B782E00E9400B70C94FE899091A6
-:106E9000091680910A16981308C080914C099091A8
-:106EA0004D09892B11F40C943CB780E00E94EADD77
-:106EB000EECF4F925F926F927F928F929F92AF929E
-:106EC000BF92DF92EF92FF920F931F93CF93DF93C6
-:106ED000D82EC82FD0E0FE01E253F44C6491062E68
-:106EE000000C770B880B990B0F94B8392B013C01E0
-:106EF0007E01EE0CFF1CEE0CFF1CF701ED50FB4E6B
-:106F00002591359145915491C301B2010F94173ADF
-:106F10004B015C01F701E951FB4E6591759185913B
-:106F2000949120E030E040EC5FE30F94173AA30126
-:106F300092010F94173AAB01BC0100E010E09801F8
-:106F40008D2D0F94811320E030E0A901C501B4011B
-:106F50000F94B139882309F446C0B501A4017058D3
-:106F600000E010E098018D2D0F948113A50194018C
-:106F7000C501B4010F94083E4B015C01CC51DB4EBE
-:106F8000FE01C491C11107C00E940FD882EC94E1A8
-:106F90000E94ACCECAE0DD2039F0F1E060E070E0A4
-:106FA00080E793E4DF1204C060E070E88BE395E4CF
-:106FB00020E030E040E752E40F94023F2B013C0117
-:106FC0006C2F70E090E080E00F94B6399B01AC012B
-:106FD000C301B2010F94023F8B019C01B501A401D2
-:106FE0008D2D0F94811381E090E00D2C01C0880F4E
-:106FF0000A94EAF79091E408982B9093E408909112
-:107000000108892B80930108F701EA54FB4E859112
-:107010009591A591B491E701CA58DD4F8883998372
-:10702000AA83BB83F701E655FA4F108211821282C0
-:1070300013828D2D0E94FAB20E947BB5F701E657AC
-:10704000F94F88819981AA81BB8180839183A28332
-:10705000B383DF91CF911F910F91FF90EF90DF905D
-:10706000BF90AF909F908F907F906F905F904F9068
-:1070700008954F925F926F927F928F929F92AF92FC
-:10708000BF92CF92DF92EF92FF920E943C95F82E32
-:1070900080910A168093091680930816809307162C
-:1070A00084E6809306160E94B4A780ED93E0909347
-:1070B0004D0980934C09F1100E94499581E080931D
-:1070C000A2070E947F8F80E00E9485B22B013C01C5
-:1070D0004092090750920A0760920B0770920C07C2
-:1070E00081E00E9485B24B015C0180920D07909275
-:1070F0000E07A0920F07B092100782E00E9485B29F
-:107100006B017C01C0921107D0921207E092130725
-:10711000F092140783E00E9485B24092760250926A
-:107120007702609278027092790280927A0290924D
-:107130007B02A0927C02B0927D02C0927E02D0922D
-:107140007F02E0928002F09281026093820270934B
-:1071500083028093840290938502FF90EF90DF90EA
-:10716000CF90BF90AF909F908F907F906F905F90E7
-:107170004F900C947BB5CF93DF93CDB7DEB72C97B0
-:107180000FB6F894DEBF0FBECDBF0F94B2100E94B1
-:107190003C959CE0EFEAF7E0DE01119601900D923C
-:1071A0009A95E1F781110E944995CE0101960E94BE
-:1071B000E6872C960FB6F894DEBF0FBECDBFDF91E9
-:1071C000CF9108954F925F926F927F928F929F928C
-:1071D000AF92BF92CF92DF92EF92FF92CF93409007
-:1071E00076025090770260907802709079028090D9
-:1071F0007A0290907B02A0907C02B0907D02C090B9
-:107200007E02D0907F02E0908002F09081020E9486
-:107210000D8F0E94E771C0E08C2F0E94FAB240E00F
-:1072200060E08C2F0E947872CF5FC330A9F70E9474
-:107230005B8FA30192016091760270917702809139
-:107240007802909179020F94B13981111BC0A50188
-:10725000940160917A0270917B0280917C029091FE
-:107260007D020F94B13981110DC020917E023091C1
-:107270007F024091800250918102C701B6010F94B4
-:10728000B13981110E94BBB88FEF80932E02CF914C
-:10729000FF90EF90DF90CF90BF90AF909F908F9036
-:1072A0007F906F905F904F900C94BB3F8AE494E185
-:1072B0000E94ACCE8CB164E474E1829581700E942E
-:1072C0003A77809103016EE374E1869581700E94A4
-:1072D0003A7789B168E374E183FB882780F90C94DD
-:1072E0003A778091E308882331F062E070E080E033
-:1072F00090E00C9421CD0895A5E5B9E090E080E000
-:10730000FC01EC5AF54E45915591659174914D9360
-:107310005D936D937D93FC01EC5BF54E459155912A
-:107320006591749150964D935D936D937C935397B3
-:10733000FC01EC5CF54E45915591659174919096E8
-:107340004D935D936D937C93939704968031910553
-:10735000B9F680E29EE4A0E0B0E0809365099093E6
-:107360006609A0936709B093680980E090E0AAE7F6
-:10737000B3E48093890990938A09A0938B09B09311
-:107380008C0980E090E4ACE9B5E480938D0990939A
-:107390008E09A0938F09B093900980E090E0AAEF46
-:1073A000B3E48093910990939209A0939309B093C9
-:1073B00094091092950910929609109297091092CB
-:1073C00098091092990910929A0910929B091092AB
-:1073D0009C098AE097EDA3E2BFE38093FE059093BA
-:1073E000FF05A0930006B09301061092EE081092DC
-:1073F000EF081092F0081092F1081092EA0810922B
-:10740000EB081092EC081092ED081092E60810922A
-:10741000E7081092E8081092E90810926E061092A0
-:107420006F061092700610927106109272061092FA
-:1074300073061092740610927506109276061092DA
-:107440007706109278061092790610927A061092BA
-:107450007B0610927C0610927D0610927E0610929A
-:107460007F0610928006109281061092820610927A
-:10747000830610928406109285061092860610925A
-:107480008706109288061092890688EC90E0909307
-:10749000F3058093F20582E390E09093F5058093E5
-:1074A000F4051092F7051092F6058CED90E090939C
-:1074B000F9058093F80584E690E09093FB058093AE
-:1074C000FA051092FD051092FC0581E79DE3A0EA04
-:1074D000B1E480934A0690934B06A0934C06B09378
-:1074E0004D068AE99EEAACE4BEE380934E06909393
-:1074F0004F06A0935006B093510681E995E6AAEF96
-:10750000B3E48093520690935306A0935406B0932D
-:1075100055068FEF80932E021092F10580E090E0E7
-:10752000A0EEBFE38093E9059093EA05A093EB05F5
-:10753000B093EC058093ED059093EE05A093EF05D5
-:10754000B093F0051092E3081092E2080E9471B91E
-:107550000E949C8880E090E0A0EAB2E48093D90584
-:107560009093DA05A093DB05B093DC051092DD055E
-:107570001092DE051092DF051092E0058093E10580
-:107580009093E205A093E305B093E4051092E5051E
-:107590001092E6051092E7051092E8050E94E2B805
-:1075A0000E940FD88BEB98E10C9409DB8091340991
-:1075B000882319F010923409089540E070E060E0EB
-:1075C00088E194E10C94E2DC0F931F938091860F85
-:1075D000813019F50F941E1D00913B0710913C0757
-:1075E00020913D0730913E07601B710B820B930B7E
-:1075F00028EE33E040E050E00F94A43D60913F0757
-:10760000709140078091410790914207620F731F6C
-:10761000841F951F1F910F910895609143077091EA
-:1076200044078091450790914607D6CFCF92DF92CD
-:10763000EF92FF92CF93C82F8091860F81508230B6
-:1076400008F067C01092860F0F941E1D60934307C9
-:10765000709344078093450790934607C090D505E3
-:10766000D090D605E090D705F090D8050E94E4BAF6
-:10767000AB01BC014093D5055093D6056093D70567
-:107680007093D8058091D6089091D708A091D8081A
-:10769000B091D9088C199D09AE09BF09840F951FB7
-:1076A000A61FB71F8093D6089093D708A093D80839
-:1076B000B093D908C1110AC0C1E00E94BC8E8C2FC2
-:1076C000CF91FF90EF90DF90CF9008958091D408F4
-:1076D0009091D50801969093D5088093D4080E9484
-:1076E000E4BAC090DA08D090DB08E090DC08F090B3
-:1076F000DD08C616D706E806F906F0F60E94E4BAD9
-:107700006093DA087093DB088093DC089093DD08BF
-:10771000D3CFC0E0D2CF1092860F10923B071092C9
-:107720003C0710923D0710923E07109243071092BB
-:107730004407109245071092460710923F07109297
-:10774000400710924107109242070895CF93C091CD
-:10775000860F80E0C13069F1C23069F50E94E4BA59
-:1077600060933F07709340078093410790934207CF
-:1077700081E08093860F0F941E1D60933B077093EA
-:107780003C0780933D0790933E07C23089F080917B
-:10779000D2089091D30801969093D3088093D20891
-:1077A0001092D5051092D6051092D7051092D805E3
-:1077B00081E0CF9108950E948BBBDACF20914706DC
-:1077C000309148062635310574F420915E063091DB
-:1077D0005F06263531053CF4209136063091370698
-:1077E0002630310524F0882349F00C94A6BB66238B
-:1077F00029F081E00E9416BB0D948E1008958091AF
-:10780000860F813079F482E08093860F0F941E1DDD
-:10781000609343077093440780934507909346070E
-:1078200081E0089580E00895CF92DF92EF92FF9279
-:10783000FC01C080D180E280F38020E030E0A9012B
-:10784000C701B6010F94B13987FF68C0C701B601FF
-:10785000905820E030E040E251E40F94173A20E0E5
-:1078600030E040EA50E40F94083E20E030E040E28F
-:1078700051E40F94023F0F94743F9B0160E220316A
-:10788000F7E23F0730F0C90160E177E20F9434413D
-:10789000605D6093A405283E83E0380708F445C086
-:1078A000C90168EE73E00F943441CB016AE070E0E7
-:1078B0000F943441805D8093A50580E22436310524
-:1078C00058F0C90164E670E00F943441CB016AE0DE
-:1078D00070E00F943441805D8093A60580E22A30E9
-:1078E000310558F0EAE0F0E0C901BF010F943441DE
-:1078F000CB01BF010F943441805D8093A705C9017E
-:107900006AE070E00F943441805D8093A80584EABA
-:1079100095E0FF90EF90DF90CF90089520E030E069
-:1079200040E251E4C701B60198CF80E2C4CF8F9204
-:107930009F92AF92BF92CF92DF92EF92FF92FC01A3
-:10794000C080D180E280F38020E030E040E251E46A
-:10795000C701B6010F94173A20E030E040E251E44D
-:107960000F94173A4B015C0120E030E0A901C701F8
-:10797000B6010F94B13920E030E040EA50E487FFCF
-:1079800004C020E030E040EA50ECC501B4010F949F
-:10799000083E20E030E040E251E40F94023F0F94B3
-:1079A000743F9B018BE237FF05C022273327261B3C
-:1079B000370B8DE28093A305C90168EE73E00F9445
-:1079C0004841CB01EAE0F0E0BF010F944841805DFF
-:1079D0008093A405C90164E670E00F944841CB018F
-:1079E000BF010F944841805D8093A505C901BF0187
-:1079F0000F944841282FCB01BF010F944841805D6F
-:107A00008093A6058EE28093A705205D2093A805AC
-:107A100083EA95E0FF90EF90DF90CF90BF90AF901A
-:107A20009F908F9008959C0197FF26C0EE27FF2717
-:107A3000E81BF90B2D398FEF38070CF05DC08DE294
-:107A40008093A505CF0164E670E00F944841CB0117
-:107A50002AE030E0B9010F944841805D8093A6058B
-:107A6000CF01B9010F944841CB01B9010F944841AE
-:107A7000805D8093A7052AC0283E83E03807B4F1D3
-:107A8000C90168EE73E00F944841CB01EAE0F0E0F1
-:107A9000BF010F944841805D8093A505C90164E64C
-:107AA00070E00F944841CB01BF010F944841805DC5
-:107AB0008093A605C901BF010F944841CB01BF01C6
-:107AC0000F944841805D8093A705F901CF016AE0DA
-:107AD00070E00F944841805D8093A80585EA95E0A9
-:107AE00008958DE237FDC5CF80E2C3CFF90180E272
-:107AF000243631050CF0A4CF80E28093A505809355
-:107B0000A605EA30F1056CF38DE237FF80E2809341
-:107B1000A605CF016AE070E00F944841605D609374
-:107B2000A705D4CF9C0197FD2DC080E224363105F6
-:107B30005CF0C90164E670E00F944841CB016AE053
-:107B400070E00F944841805D8093A60580E22A3062
-:107B500031055CF0EAE0F0E0C901BF010F94484153
-:107B6000CB01BF010F944841805D8093A705C901F7
-:107B70006AE070E00F944841805D8093A80586EA32
-:107B800095E008953195219531098DE2DDCF9C0175
-:107B9000283E83E03807D0F1C90168EE73E00F9406
-:107BA0003441CB016AE070E00F943441805D8093F2
-:107BB000A50580E22436310558F0C90164E670E07D
-:107BC0000F943441CB016AE070E00F943441805D42
-:107BD0008093A60580E22A30310558F0EAE0F0E013
-:107BE000C901BF010F943441CB01BF010F9434414F
-:107BF000805D8093A705C9016AE070E00F9434416D
-:107C0000805D8093A80585EA95E0089580E2CFCF56
-:107C1000282F80E2243628F0822F64E60F941A4140
-:107C2000805D8093A60590E22A3040F03AE0822FF2
-:107C3000632F0F941A410F941A41905D9093A705FA
-:107C4000822F6AE00F941A41905D9093A80586EA0E
-:107C500095E0089524E6829FC001112481589F4F2A
-:107C60006FEF70E00F944841262F81E3643609F0EE
-:107C700080E28093A50590E22A3040F03AE0822F1E
-:107C8000632F0F941A410F941A41905D9093A605AB
-:107C9000822F6AE00F941A41905D9093A70585E2C8
-:107CA0008093A80585EA95E00895BC018AE197E2F2
-:107CB0000E94E0DD87E197E20C94ACCECF92DF9298
-:107CC000EF92FF920F931F93CF93DF9300D000D0DA
-:107CD0001F92CDB7DEB72091A21724FF92C0F62ED7
-:107CE0008C0181E0681709F46DC0681708F463C05F
-:107CF00082E0681709F405C18091A217877F8B7F06
-:107D00008093A2170E94677EA801BE016F5F7F4F1C
-:107D100081E00F94BD0C8C01009709F472C0698159
-:107D20007A8121E0AC0180E594E10E946A80882399
-:107D300009F4EEC08091611490916214A0916314D3
-:107D4000B091641480939A1790939B17A0939C17FB
-:107D5000B0939D1710929E1710929F171092A01724
-:107D60001092A117B80185E497E20E94E0DDC0906F
-:107D70009A17D0909B17E0909C17F0909D178DE379
-:107D800097E20E94ACCEC701B6010F94C00D8AE005
-:107D90000E949FCE8EE297E20E94ACCEC8010E9464
-:107DA0000B838091FC11882311F00CEF11E1C801C5
-:107DB0000F94450E26C0B80182E00F94E72610927A
-:107DC00099179ACF0E9473CD811105C0B80181E047
-:107DD0000F94E72691CFE0909917EE2009F10E94C9
-:107DE0000BD861E070E08EE997E20E9487DA8AE0C2
-:107DF0000E949FCE40E070E060E08DE897E20E9434
-:107E0000E2DC27960FB6F894DEBF0FBECDBFDF9140
-:107E1000CF911F910F91FF90EF90DF90CF90089539
-:107E200080EA96E09E838D838FE280939F06FF8297
-:107E3000CE0105969A83898302969C838B838BE17E
-:107E4000F82E80919717E81658F4EF9CB001112492
-:107E50006757794ECE0101960E94317FE394F1CFAE
-:107E60008F818B3558F460E574E1CE0101960E9454
-:107E7000317F8D819E8101979E838D83ED81FE816F
-:107E80001082E091991784E0E89FF0011124E556F3
-:107E9000F94F80919E1790919F17A091A017B091D4
-:107EA000A11780839183A283B3830E940FD8B80166
-:107EB00084E797E20E94E0DD6091991789E6689F68
-:107EC000B00111246156794F89E697E20E94E0DD06
-:107ED000C0909E17D0909F17E090A017F090A11728
-:107EE00083E697E20E94ACCEC701B6010F94C00DA5
-:107EF0008AE00E949FCE809199178F5F8093991797
-:107F0000FBCE0E940FD883E597E20E94ACCEF4CE60
-:107F1000C8010E9455BE75CF0F931F93CF93DF9377
-:107F20001F921F92CDB7DEB72091A21724FF33C056
-:107F30008C01BC0182E00F94E72610929917809182
-:107F4000A217877F8B7F8093A2170E94677EA8016C
-:107F5000BE016F5F7F4F80E00F94BD0C8C010097D6
-:107F6000D1F069817A8126E5AC0180E594E10E9437
-:107F70006A808823B9F08091A21781608093A2174C
-:107F8000C8010E940B83B8018DEB97E20F94E226A3
-:107F9000C8010F94450E0F900F90DF91CF911F9164
-:107FA0000F910895C8010E9455BEF5CF6F927F9240
-:107FB0008F929F92AF92BF92CF92DF92EF92FF92F9
-:107FC0000F931F93CF93DF93CDB7DEB7C655D1097B
-:107FD0000FB6F894DEBF0FBECDBF5C017B016DB65E
-:107FE0007EB6BE016F5F7F4FC5010F946C0E1816F1
-:107FF0000CF06BC08C858871803109F081C08DB622
-:108000009EB610E000E0E114F10439F0F7010190B0
-:108010000020E9F78F010E191F09C8010D962DB731
-:108020003EB7281B390B0FB6F8943EBF0FBE2DBFCD
-:108030008DB79EB701966C01080F191FE114F1046A
-:1080400039F0B7010F94ED418FE2F8013197808349
-:10805000BE016F5F7F4FC8010E94127A19A21CA255
-:1080600021E0A801B501CE0181960E946A80882393
-:10807000E1F08BE1FE01B196DE01DC9601900D92FC
-:108080008A95E1F7B601CE01CC960E94D6BFCE010B
-:10809000CC960E946480CE0181960E9464800FB6C7
-:1080A000F8949EBE0FBE8DBE9CCF0E940FD8B80123
-:1080B0008AEA96E20F94E226CE0181960E946480BD
-:1080C0000FB6F8949EBE0FBE8DBE0FB6F8947EBE5E
-:1080D0000FBE6DBECA5ADF4F0FB6F894DEBF0FBE9B
-:1080E000CDBFDF91CF911F910F91FF90EF90DF9067
-:1080F000CF90BF90AF909F908F907F906F9008959A
-:10810000CE0101960E94F579882309F46ACFE11423
-:10811000F10431F0C7010F94D6268FE20E949FCE62
-:10812000BE016F5F7F4F89E79FE00E94127A0F9434
-:10813000D62680E20E949FCE6D8D7E8D8F8D98A178
-:108140000F94C00D8AE00E949FCE4BCF2F923F929A
-:108150004F925F926F927F928F929F92AF92BF9257
-:10816000CF92DF92EF92FF920F931F93CF93DF9303
-:10817000CDB7DEB7C558D1090FB6F894DEBF0FBE34
-:10818000CDBF2DB73EB7CC57DF4F39832883C458B6
-:10819000D04001E025E537E044E050E0BE016758FB
-:1081A0007F4F83E597E00E9461CE43E050E0BE013F
-:1081B00067587F4F89E393E00F94F441892B09F4CA
-:1081C00050C0ED968FADED97882339F08FE3EA9696
-:1081D0008FAFEA97EB961FAEEB970E940FD8BE01C8
-:1081E00067587F4F82E79AE10E94E0DD84E69AE1DA
-:1081F0000E94ACCE81E080935707809102068111E6
-:1082000007C080913509833018F080E00E942E8AE3
-:108210009091570781E08927CC57DF4F288139811A
-:10822000C458D0400FB6F8943EBF0FBE2DBFCB57F9
-:10823000DF4F0FB6F894DEBF0FBECDBFDF91CF91F9
-:108240001F910F91FF90EF90DF90CF90BF90AF9074
-:108250009F908F907F906F905F904F903F902F9066
-:10826000089501E025E537E042E050E0BE016358A3
-:108270007F4F83E597E00E9461CEE9961CAE1DAE6C
-:108280001EAE1FAEE9971092560710925507CE0109
-:1082900081589F4F0E94F176ADB6BEB6C158DF4FF0
-:1082A000C880CF57D040D12C33E0C30ED11CCC0CAA
-:1082B000DD1CCC0CDD1C8DB79EB78C199D090FB64B
-:1082C000F8949EBF0FBE8DBFEDB7FEB73196CE5767
-:1082D000DF4FF983E883C258D0402DB73EB72C1941
-:1082E0003D090FB6F8943EBF0FBE2DBF8DB79EB7A8
-:1082F00001964C01EDB7FEB7EC19FD090FB6F894E5
-:10830000FEBF0FBEEDBF2DB73EB72F5F3F4F7901C8
-:10831000B601CE57DF4F88819981C258D0400E9464
-:10832000FE760091020681E0082725E537E044E06B
-:1083300050E065E679E083E597E00E9461CEB60102
-:10834000C4010E94FE76B601C7010E94FE7600912C
-:108350000206011157C0C158DF4F8881CF57D04066
-:1083600090E00296A5E5B9E050E040E030E020E082
-:1083700060E67AE1E0E5CE2EEAE1DE2E8217930791
-:108380000CF4A6C0CE57DF4FE881F981C258D04027
-:10839000E40FF51F40805180628073804D925D92A2
-:1083A0006D927D92821793070CF498C0F401E40F4C
-:1083B000F51F208031801281E3812101612E7E2E04
-:1083C00050964D925D926D927C92539782179307CF
-:1083D0000CF48DC0F701E40FF51F2080318012816D
-:1083E000E3812101612E7E2E90964D925D926D92D9
-:1083F0007C9293972F5F3F4F4C5F5F4F2430310546
-:1084000009F0BCCF89E899E00E94E1768DE899E017
-:108410000E94E17681E999E00E94E17685E999E0A0
-:108420000E94E17689E999E00E94E176CE018B58BD
-:108430009F4F0E94E176CE018B589F4F0E94E176BC
-:10844000CE018B589F4F0E94E176CE018B589F4FF3
-:108450000E94E1768EEF95E00E94E1760FB6F894E7
-:10846000BEBE0FBEADBE86EE98E00E94D1768AE712
-:1084700096E00E94D176CE0183599F4F0E94A1764B
-:10848000CE0101967C010E94E176CE018B589F4F70
-:108490000E94E176CE018B589F4F0E94E176C70182
-:1084A0000E94F176CE0183599F4F0E94F176C980D8
-:1084B000AE968FADAE97C89E6001112491E0C91AA7
-:1084C000D108F8F0CE018B589F4F0E94E176F6CF8D
-:1084D000FB01459055906590749060CFF6014590F2
-:1084E0005590659074901201162DE72D66CFE0E44B
-:1084F000FAE145905590659074901201162DE72D84
-:1085000070CFC7010E94D1761AE01150CE0129F038
-:108510008B589F4F0E94E176F8CF80589F4F0E9462
-:10852000F176CE018F579F4F0E94F176C7010E94CE
-:10853000C176CE0183599F4F0E94C176C058DF4F4C
-:10854000C880C058D040CF57DF4F8881C158D04035
-:10855000C89E60011124F1E0CF1AD10830F0CE019D
-:108560008B589F4F0E94E176F6CFC7010E94B176EB
-:10857000CE0183599F4F0E94A17611E0012725E586
-:1085800037E040E150E0B70183E597E00E9461CE1B
-:10859000C7010E94B17600910206012725E537E068
-:1085A0004CE050E062EF75E083E597E00E9461CE19
-:1085B00012E0DD24D394009102060D2525E537E075
-:1085C00044E150E0B70183E597E00E9461CE00915D
-:1085D0000206011138C089809A80AB80BC80A50159
-:1085E0009401C501B4010F94FA4081112CC080920E
-:1085F0004A0690924B06A0924C06B0924D062CEA89
-:1086000035EC47E25EE36D817E818F8198850F9422
-:10861000173A60934E0670934F06809350069093DE
-:1086200051062CEA35EC47E25EE369857A858B8555
-:108630009C850F94023F609352067093530680937B
-:10864000540690935506113009F090C1012725E595
-:1086500037E042E050E0B70183E597E00E9461CE49
-:10866000C7010E949176C7010E949176C7010E94BE
-:10867000A176C7010E94A17600910206011103C0F4
-:10868000898180932E02C7010E94A17685E0F701BF
-:1086900011928A95E9F711E0012725E537E045E0D9
-:1086A00050E0B70183E597E00E9461CEC7010E94C8
-:1086B000B17600910206012725E537E040E250E05F
-:1086C000B70183E597E00E9461CECE0183599F4FA9
-:1086D0000E94B17600910206012725E537E041E1CD
-:1086E00050E0B70183E597E00E9461CE80910206D9
-:1086F00081110EC089818093F10588E0FE013296D8
-:10870000A9EEB5E001900D928A95E1F70E949C8850
-:108710000091020681E0082725E537E044E150E0BA
-:10872000B70183E597E00E9461CE80910206811136
-:108730004BC069817A816115710511F460E273E0C3
-:108740007093E9156093E8158FEA95E10F940F2176
-:108750006B817C816115710511F460E273E07093A7
-:10876000AD156093AC1583E795E10F940F216D81F2
-:108770007E816115710511F460E273E070937115EB
-:108780006093701587E395E10F940F2169897A89C9
-:108790006115710511F460E273E070933515609313
-:1087A00034158BEF94E10F940F216B897C8961154F
-:1087B000710511F460E273E07093F9146093F8149A
-:1087C0008FEB94E10F940F210091020611E0012735
-:1087D00025E537E048E250E0B70183E597E00E94E5
-:1087E00061CE00910206012725E537E040E150E027
-:1087F000B70183E597E00E9461CE00910206012750
-:1088000025E537E042E050E0B70183E597E00E94BC
-:1088100061CE80910206811122C08981817080938E
-:10882000EA150F9401128981869581708093AE15A7
-:108830000F940912898182FB882780F98093721531
-:108840000F9411128A818170809336150F9419123A
-:108850008A81869581708093FA140F942112009179
-:10886000020611E0012725E537E048E050E0B701B6
-:1088700083E597E00E9461CE00910206012725E57D
-:1088800037E040E150E0B70183E597E00E9461CE18
-:1088900000910206012725E537E04CE650E0B701DC
-:1088A00083E597E00E9461CE19821A821B821C82A6
-:1088B0001D821E821F82188619861A861B861C86B8
-:1088C000C7010E94917600910206012725E537E055
-:1088D00040E150E069ED75E083E597E00E9461CEEC
-:1088E00000910206012725E537E044E050E066E804
-:1088F00076E083E597E00E9461CEC7010E94D176C1
-:10890000CE0180589F4F0E94A176CE0183599F4F80
-:108910000E94E176809153079091540787319340EC
-:1089200039F10E940BD88AEA99E10E94ACCE1093EB
-:1089300057070E940FD860915307709154076456EF
-:1089400071098CE29AE10E9487DA63EB72E084E2BB
-:108950009AE10E9404DB8091020681114ECC809145
-:10896000570781114ACC0E94E2B847CC11E023CED0
-:10897000109257072091550730915607EF968EAD0C
-:108980009FADEF9728173907C9F0109357070E943A
-:108990000BD8EF966EAD7FADEF9784E09AE10E9421
-:1089A0007BDA60915507709156078FEF99E10E942D
-:1089B0007BDA8FEE99E10E94ACCECDCF809102069A
-:1089C0008111C9CF0E940FD889E393E00F94D62676
-:1089D00060915307709154076456710982ED99E1D3
-:1089E0000E9487DAC0905507D0905607F12CE12CF1
-:1089F00085EC99E10E94ACCEC701B6010F94C00D81
-:108A000082EC99E1D8CF84E690E09093540780936C
-:108A1000530710925607109255070C94A6C081E098
-:108A2000809302060E9403C51092020681110C94E5
-:108A300003C50E947CB90E94648B0E940FD887EA0C
-:108A400098E10E94ACCE80E008950F94D6268DE088
-:108A50000E949FCE8AE00C949FCECF93DF93C0916B
-:108A60003606D091370681E0CE31D105E4F020E022
-:108A700030E040E05FE36091320670913306809110
-:108A80003406909135060F94083E0F94743F6C1B8A
-:108A90007D0B77FF03C071956195710981E06330AB
-:108AA00071050CF080E0DF91CF91089590E080E0B7
-:108AB0000895CF93DF93DB01F9019C919130C1F0D0
-:108AC000943080F094509C938830D1F480819181CF
-:108AD000009771F0019791838083480F591FEA0135
-:108AE000188206C08C3539F49C5F9C93943041F415
-:108AF000DF91CF9108958B3339F781E08C93F8CFD4
-:108B000020813181B9016F5F7F4F71836083420F94
-:108B1000531FEA018883808191818F3591056CF71D
-:108B2000E7CF0F931F9381E000919E1710919F173D
-:108B30002091A0173091A11740919A1750919B173F
-:108B400060919C1770919D1704171507260737072A
-:108B500008F480E01F910F9108952091A1088330BF
-:108B600021F425FD0CC024FD0CC030E0A90102C099
-:108B7000559547958A95E2F7CA018170089581E07D
-:108B8000089580E008958091BC0884FD0BC0809119
-:108B9000BE0887FD07C09091BF08937081E019F46B
-:108BA00080E0089581E008952FEB280F2A3108F026
-:108BB00047C0E22FF0E08091BC089091BD08A091E1
-:108BC000BE08B091BF0804C0B695A7959795879544
-:108BD0002A95D2F780FD02C081700895EE55F74FB7
-:108BE000E081EE2341F18091530990915409E80FFF
-:108BF000F92FF11D808190ED980F9A3030F08E3270
-:108C000051F4818180538A3098F4F0939F08E09367
-:108C10009E0881E008958D3211F08B3249F48181F4
-:108C200090ED980F9A3088F38E3211F48281EACF5A
-:108C3000F0E0E0E0EACF10929F0810929E08E9CFA2
-:108C400080E00895CF93DF93C0913606D091370628
-:108C5000209729F160913206709133068091340695
-:108C6000909135060F94743F6E5F7F4F24976C1779
-:108C70007D07ACF470930D0660930C060F941E1DD7
-:108C8000605A75418F4F9F4F60930E0670930F0689
-:108C90008093100690931106DF91CF910895109262
-:108CA0000E0610920F061092100610921106F4CFC5
-:108CB0002F923F924F925F926F927F928F929F92EC
-:108CC000AF92BF92CF92DF92EF92FF920F931F93DA
-:108CD000CF93DF93D62FC72FFC0180809180A28095
-:108CE000B380C501B40120E831E541E050E00F94C4
-:108CF000A43DC9016DE671E00F9434416B017C0124
-:108D0000C501B40120E13EE040E050E00F94A43DF5
-:108D1000CA01B90128E130E040E050E00F94A43DE1
-:108D2000362E272E062F172F8CE3482E512C612C20
-:108D3000712CC501B401A30192010F94A43DB62E7C
-:108D4000A72ECA01B901A30192010F94A43DCB0142
-:108D5000C114D10479F1AF92BF927F936F932F9298
-:108D60003F92FF92EF92DF92CF928EE895E39F932E
-:108D70008F93CF93DF930F9448398DB79EB70E969C
-:108D80000FB6F8949EBF0FBE8DBF8D2F9C2FDF9125
-:108D9000CF911F910F91FF90EF90DF90CF90BF90F8
-:108DA000AF909F908F907F906F905F904F903F908B
-:108DB0002F900895E114F104C9F0AF92BF927F9310
-:108DC0006F932F923F92FF92EF928EE795E39F93DE
-:108DD0008F93CF93DF930F944839EDB7FEB73C964E
-:108DE0000FB6F894FEBF0FBEEDBFCFCF012BB9F089
-:108DF000AF92BF927F936F932F923F9282E795E35A
-:108E00009F938F93CF93DF930F9448398DB79EB77D
-:108E10000A960FB6F8949EBF0FBE8DBFB6CF892BB2
-:108E2000A9F0AF92BF927F936F938AE695E39F93E9
-:108E30008F93CF93DF930F944839EDB7FEB73896F1
-:108E40000FB6F894FEBF0FBEEDBF9FCFAF92BF929B
-:108E500086E695E39F938F93CF93DF930F944839E2
-:108E60000F900F900F900F900F900F908ECF8091DA
-:108E70009E0890919F08009731F04AE050E070E022
-:108E800060E00D94D33760E070E0CB0108958091ED
-:108E90009E0890919F08009731F04AE050E070E002
-:108EA00060E00D94A53660E070E0CB0108950E946B
-:108EB00047C7CB0108950E9447C797FD0CC00E9489
-:108EC00047C76F3F71058105910509F034F40E9491
-:108ED00047C7862F089580E008958FEF0895809109
-:108EE0009E0890919F08892B41F00E945BC791E0FA
-:108EF000811101C090E0892F089591E0FCCFCF92BD
-:108F0000DF92EF92FF920F931F93CF93DF93CDB732
-:108F1000DEB72C970FB6F894DEBF0FBECDBFF09032
-:108F20008016E09081162091FA0321111DC042E9BC
-:108F300057E36E2D8F2D0F94DD2590E080E0F80E25
-:108F4000F0928016E092811699272C960FB6F8942D
-:108F5000DEBF0FBECDBFDF91CF911F910F91FF906C
-:108F6000EF90DF90CF900895C0904D16D0904E16A0
-:108F700029E436E13A8329832F2D30E03C832B838B
-:108F80002E2D30E03E832D8318861F827A876987D5
-:108F90001C861B8607EA18E29E012F5F3F4F41EABD
-:108FA00054E2BC01C6010F945010B60189E496E169
-:108FB0000F9419258F819885C2CFCF92DF92EF92BF
-:108FC000FF920F931F93CF93DF93CDB7DEB72C970C
-:108FD0000FB6F894DEBF0FBECDBFF0908016E090C4
-:108FE00081162091FA0321111DC042E757E36E2D2F
-:108FF0008F2D0F94DD2590E080E0F80EF092801622
-:10900000E092811699272C960FB6F894DEBF0FBE1A
-:10901000CDBFDF91CF911F910F91FF90EF90DF9027
-:10902000CF900895C0904D16D0904E1629E436E1A9
-:109030003A8329832F2D30E03C832B832E2D30E083
-:109040003E832D8318861F827A8769871C861B863C
-:1090500007EA18E29E012F5F3F4F44EA54E2BC0149
-:10906000C6010F945010B60189E496E10F941925BA
-:109070008F819885C2CFCF93609136067091370665
-:10908000072E000C880B990B0F94B839C1E0209182
-:1090900032063091330640913406509135060F94D4
-:1090A000684018160CF0C0E08C2FCF9108958F9275
-:1090B0009F92AF92BF92CF92DF92EF92FF920F9367
-:1090C0001F93CF93DF931092C1081092C0082FE333
-:1090D0002093C4081092C3081092C2081092BC08D2
-:1090E0001092BD081092BE081092BF089C01F901B1
-:1090F00090812F5F3F4F9032D1F39E34C9F481812C
-:1091000090ED980F9A3020F08D3211F08B3281F46F
-:1091100032969F012F5F3F4F808180538A3008F441
-:109120006BC09F012F5F3F4F8081803209F466C082
-:10913000F0935409E09353098F010F5F1F4FC081D3
-:109140006AE270E0C8010F94E241009731F0FC013F
-:10915000319780818032E1F31182CD3421F0C43522
-:1091600011F0C734E1F5F80180810F5F1F4F8032A5
-:10917000D1F380538A3098F5C093C40830E020E0E2
-:109180006AE0AF014F5F5F4F629FC001639F900D28
-:1091900011249C01205331098081280F311D87FD46
-:1091A0003A95FA01808180538A3058F33093C3088E
-:1091B0002093C208DF0131968C918032D9F3CD34EF
-:1091C00049F52E31310539F0D8F42731310519F040
-:1091D0002C313105F9F4B093C108A093C008DF9198
-:1091E000CF911F910F91FF90EF90DF90CF90BF90A4
-:1091F000AF909F908F900895F9018BCFF90191CF97
-:109200002537310538F02737310528F3203A83E038
-:10921000380709F3D091530940E050E0BA0110E05B
-:1092200000E0C12CD12C7601C394FD0131968C91C4
-:10923000882309F47FC08132E1F4CD34D1F42032A7
-:109240003105B9F44093BC085093BD086093BE0843
-:109250007093BF08F093C108E093C00863E270E028
-:10926000CF010F94E241009709F4B9CFFC011082BD
-:10927000B6CF81548A3108F058C0DF019D919032F9
-:1092800091F0A0EDA90FAA30E8F09E3271F491811F
-:1092900090539A30B8F00115110519F48F0101505F
-:1092A000110990E013C0FD01E8CF9D3211F09B320F
-:1092B00091F79181A0EDA90FAA3020F09E3259F7C5
-:1092C0009281E6CF9E2F9D1B309759F3A82FB0E0D7
-:1092D0004601570104C0880C991CAA1CBB1C8A9526
-:1092E000D2F7482959296A297B29AE55B74F9C9353
-:1092F00080818154DF018A3108F497CFDF018191A9
-:10930000882309F492CF90ED980F9A30B8F393ED3B
-:10931000980F923098F38B3289F3CD010196EC913E
-:10932000E03209F082CFDC01F8CF0115110501F719
-:109330008D01DECF1093C1080093C0084093BC0894
-:109340005093BD086093BE087093BF0848CF0F9339
-:109350001F93CF9380919E0890919F080097E9F00A
-:10936000FC018F01C1912C2F2F7D81F0C53411F0AC
-:10937000C536B9F7F801108270E060E00F94473508
-:10938000F801C083CF911F910F91089570E060E0C4
-:10939000CF911F910F910D94473560E070E0CB01A4
-:1093A000F1CF0E94D4C5882341F081E020919E082E
-:1093B00030919F08232B09F480E008954F925F922B
-:1093C0006F927F92AF92BF92CF92DF92EF92FF9215
-:1093D0000F931F93CF938CE9A82E82E0B82E9AE8C2
-:1093E000E92E96E0F92E06E712E02DE6C22E2FE0D8
-:1093F000D22EC0E0F50181915F010E94D1C988237E
-:1094000009F4A6C00E94A7C92B013C018C2F0E9421
-:10941000ADC5882309F492C0F801208131814281D1
-:109420005381C301B2010F94083EF7016083718339
-:1094300082839383CF5FF4E0EF0EF11C0C5F1F4F2C
-:1094400084E0C80ED11CC330A9F685E40E94D1C9BE
-:10945000882309F488C00E94A7C96B017C0183E0BE
-:109460000E94ADC5882371F0209182023091830261
-:109470004091840250918502C701B6010F94083EC5
-:109480006B017C01C0929606D0929706E0929806F6
-:10949000F092990686E40F94841220E030E0A9014E
-:1094A0000F946840181684F40E94A7C920E030E0A9
-:1094B00040E752E40F94023F6093510270935202CE
-:1094C00080935302909354028091D40583FD28C069
-:1094D0008091D108882321F120918202309183026A
-:1094E0004091840250918502609196067091970692
-:1094F00080919806909199060F94073E2091DE087E
-:109500003091DF084091E0085091E1080F94083E47
-:109510006093DE087093DF088093E0089093E10881
-:10952000CF911F910F91FF90EF90DF90CF90BF9060
-:10953000AF907F906F905F904F900895F6012081DB
-:10954000318142815381C301B2010F94073E6DCF37
-:10955000F80180819181A281B381F7018083918399
-:10956000A283B38367CF8091820290918302A091FE
-:109570008402B09185028093960690939706A093FB
-:109580009806B093990686CFCF93DF93EB010E94A4
-:10959000D1C9882321F0DF91CF910C9457C7CE0118
-:1095A000DF91CF910895CF93DF93EB010E94D1C952
-:1095B000882319F00E9447C7EB01CE01DF91CF91BC
-:1095C0000895CF93DF93C82FD62F0E94D1C9882347
-:1095D00021F0DF91CF910C946FC78C2F0E94D4C5DE
-:1095E000811101C08D2FDF91CF910895FF920F93CC
-:1095F0001F93CF93DF93EC019A81A9812881AA233D
-:1096000031F08A2F42E0AF3F21F441E001C040E059
-:1096100080E0222351F02F3F59F0882359F0622F28
-:1096200073E028130AC072E001C070E060E005C07A
-:1096300071E0FCCF60E0822F72E0992309F44FC003
-:109640009F3FE9F18823E9F1981761F16623D9F189
-:10965000961799F1B0E0092F10E0FD01E01BF10B26
-:10966000F7FF03C0F195E195F109FE2E30E0FD0111
-:10967000E21BF30BF7FF03C0F195E195F1095E2FB3
-:10968000F801E21BF30BF7FF03C0F195E195F10937
-:10969000F51650F4FE16C8F49D01200F311F3695C3
-:1096A0002795822F92E01BC05E1788F0FE1678F097
-:1096B000200F311F36952795622F93E010C091E05F
-:1096C0000EC0892FEFCF692FF8CF5E1788F72A0FCA
-:1096D0003B1F36952795822F692F93E072E024E097
-:1096E000429FA0011124472B50E1959F9001112426
-:1096F000422B0F94D61988819981482F490F5527FD
-:10970000551F8A81840F952F911D21E0833091058B
-:109710000CF420E020930B0603974CF0888199818C
-:10972000AA818093831690938416A0938516DF9167
-:10973000CF911F910F91FF9008958F929F92AF92BA
-:10974000BF92CF92DF92EF92FF92CF93DF9300D040
-:10975000CDB7DEB72FEF8417950731F16A01052EDB
-:10976000000CEE08FF084C01092E000CAA08BB08EB
-:10977000681779072CF0CB01461757070CF4CA017C
-:109780009C01990F440B550B281939094A095B09AB
-:10979000AFEFB0E00F94E53DA70196012819390914
-:1097A0004A095B090F94C63D80913A06821759F029
-:1097B00020933A068FEF89831A8220952B83CE015E
-:1097C00001960E94F6CA0F900F900F90DF91CF91F3
-:1097D000FF90EF90DF90CF90BF90AF909F908F90D1
-:1097E000089586E896E10C94F6CACF93DF9300D0F3
-:1097F000CDB7DEB719828FEF8A831B82CE01019627
-:109800000E94F6CA0F900F900F90DF91CF910895AC
-:1098100083E896E10C94F6CACF93DF9300D0CDB7DE
-:10982000DEB780910B06882369F019821A821B82A9
-:10983000CE0101960E94F6CA0F900F900F90DF9113
-:10984000CF9108950E9408CCF7CFCF92DF92EF928C
-:10985000FF920F931F93CF9390911A02913009F4C6
-:1098600061C0662351F010927E0810927A0810921F
-:109870007B0810927C0810927D08C82F0F941E1D43
-:10988000C0907A08D0907B08E0907C08F0907D082A
-:109890009B01AC012C193D094E095F0969017A0150
-:1098A000F7FC40C020917E08C7FD15C04C2F0C2E40
-:1098B000000C550B4C5F5F4FE22F022E000CFF0B8C
-:1098C0004E175F077CF144EFC42EDD24D394E12CC6
-:1098D000F12C2C1734F438EEC32E33E0D32EE12CC8
-:1098E000F12CC60ED71EE81EF91EC0927A08D0923F
-:1098F0007B08E0927C08F0927D08022F017010E056
-:1099000084E2809FB001819F700D701B112460590B
-:109910007C4F82E390E00E948D2B80917E088F5FC8
-:1099200080937E08CF911F910F91FF90EF90DF9071
-:10993000CF9008950F931F93CF93DF93082F10E0DC
-:1099400097E1899FF0011124E15CF94FC085D18531
-:10995000209729F164817581868197810F94743FE6
-:109960006E5F7F4F24976C177D07CCF486E0809F55
-:10997000E001819FD00D1124CE5ED94F7983688399
-:109980000F941E1D605E714B8F4F9F4F6A837B83C8
-:109990008C839D83DF91CF911F910F91089586E075
-:1099A000809FF001819FF00D1124EE5EF94F12822D
-:1099B000138214821582EECFE62FF0E027E1629F3A
-:1099C000D0011124A15CB94FEE0FFF1FE054FD4FF1
-:1099D000208131812F503109821793070CF49C01AB
-:1099E00019963C932E931897862F0C949ACCAC0121
-:1099F0008091A00881110EC09091010491110BC0BB
-:109A000020916002309161022150310981E04217BA
-:109A100053070CF080E0089597E1899FF00111242D
-:109A2000E15CF94F20E030E040E05FE36481758164
-:109A3000868197810F94083E0F94743FCB010C945C
-:109A4000F7CCCF92DF92EF92FF926B017C0183E320
-:109A5000C816D104E104F10470F082E3C81AD108F9
-:109A6000E108F10862E370E080E090E00F94911C5F
-:109A70000E94A591ECCFC701B6010F94911CFF90F5
-:109A8000EF90DF90CF900C94A591809151090E94A6
-:109A9000E48964E670E080E090E00C9421CD809150
-:109AA000860F813069F09091A21792FB882780F988
-:109AB00092FF07C097FB882780F991E089270895D6
-:109AC00081E008958091091690910A16891B8F7084
-:109AD00031F480919A06811104C00C944FCD81E03D
-:109AE000089580E008959091A21794FB882780F94B
-:109AF00094FF06C081E090915314911101C080E061
-:109B0000089580919A06811110C08091860F82304D
-:109B100061F00E9473CD882349F08091A21782FBE7
-:109B2000882780F991E08927089581E00895E2ED82
-:109B3000F5E010821182089581E00895CF93DF93BC
-:109B4000EC01E62F660FFF0BE151F84CE491E25077
-:109B5000E13108F0B0C0F0E08827EE54F2438F4FB7
-:109B60000D945C41C3CD5BCE5BCE5BCE5BCEEDCDC9
-:109B7000CFCD11CE0FCEEFCD35CE33CE13CE5BCEC3
-:109B800059CE57CE37CE82E1E5E4F3E0DE01019015
-:109B90000D928A95E1F7CE01DF91CF91089581E092
-:109BA00020EB30E03983288321EB30E03B832A83AC
-:109BB0001D821C8223EB30E03F832E8324EB30E0B8
-:109BC000398728871B861A861D861C8692E09E8709
-:109BD0008F8781E0888B198ADECF80E0E1CF81E03A
-:109BE0008F5F20E930E03983288321E930E03B832F
-:109BF0002A8322E930E03D832C8328E930E03F834B
-:109C00002E832AE930E0398728872CE930E03B872A
-:109C10002A8726E930E03D872C8793E0D8CF80E083
-:109C2000DFCF80E0DECF81E08F5F20EA30E0398354
-:109C3000288321EA30E03B832A8322EA30E03D8317
-:109C40002C8328EA30E03F832E832AEA30E03987EC
-:109C500028872CEA30E03B872A8726EA30E03D87D8
-:109C60002C8794E0B4CF80E0DFCF80E0DECF81E0CE
-:109C70008F5F20E231E03983288321E231E03B83AA
-:109C80002A8322E231E03D832C8328E231E03F83C6
-:109C90002E832AE231E0398728872CE231E03B87A6
-:109CA0002A8726E231E03D872C8795E090CF80E03F
-:109CB000DFCF80E0DECF82E1FE0111928A95E9F7E5
-:109CC0006ACF8F929F92AF92BF92CF92DF92EF9224
-:109CD000FF920F93CF93DF931F92CDB7DEB75C0156
-:109CE0007B0149016B01C40ED51EF5018081918174
-:109CF0000F947E3D8983002311F0F7018083BE011C
-:109D00006F5F7F4FC4010F94C40AF5018081918178
-:109D1000019691838083FFEFEF1AFF0AEC14FD0494
-:109D200021F780E00F90DF91CF910F91FF90EF909E
-:109D3000DF90CF90BF90AF909F908F9008959091BB
-:109D4000C00095FFFCCF8093C600089585E40E9473
-:109D50009FCE81E30C949FCECF93DF93EC01FE0165
-:109D600084912196882319F00E949FCEF8CFDF912D
-:109D7000CF9108950F931F93CF938C01C62F89E63F
-:109D800092E30E94ACCEC8010E94ACCE8AE30E944E
-:109D90009FCE80E38C0F0E949FCE8AE0CF911F91CF
-:109DA0000F910C949FCE89E594E30E94ACCE60E0C5
-:109DB00089E494E30E94BACE60E084E394E30E94D5
-:109DC000BACE61E08DE294E30E94BACE61E082E215
-:109DD00094E30E94BACE60E083E194E30E94BACE9D
-:109DE00061E083E094E30E94BACE60E08AEF93E3FF
-:109DF0000E94BACE61E080EF93E30E94BACE60E0A9
-:109E000086EE93E30E94BACE60E08FED93E30E946A
-:109E1000BACE60E087ED93E30E94BACE60E089ECB1
-:109E200093E30E94BACE60E08BEB93E30E94BACE3C
-:109E300060E08CEA93E30E94BACE60E08EE993E39F
-:109E40000E94BACE60E088E893E30E94BACE60E058
-:109E500087E793E30E94BACE60E082E693E30E9434
-:109E6000BACE60E083E593E30E94BACE61E08CE471
-:109E700093E30E94BACE60E08FE393E30E94BACEF0
-:109E800060E088E393E30E94BACE61E08FE293E35F
-:109E90000E94BACE60E08AE193E30E94BACE60E00D
-:109EA0008CE093E30E94BACE60E082E093E30E94EC
-:109EB000BACE60E08BEE92E30E94BACE60E08EED07
-:109EC00092E30E94BACE61E08BEC92E30E94BACE9C
-:109ED00060E08EEB92E30E94BACE61E089EB92E300
-:109EE0000E94BACE60E08CEA92E30E94BACE60E0B3
-:109EF00088E992E30E94BACE60E085E892E30E948E
-:109F0000BACE60E08BE89FE00E9456C5682F617072
-:109F10008CE792E30E94BACE60E08EE692E30C9466
-:109F2000BACEE091761081E6E89FF0011124E85264
-:109F3000FF4E8081811107C08AEA9AE30E94ACCE6D
-:109F40008AE00C949FCE0895CF92DF92EF92FF9219
-:109F50006A017B010E94ACCE42E0C701B601FF90CE
-:109F6000EF90DF90CF900C94FA834F925F926F92B4
-:109F70007F928F929F92AF92BF92CF92DF92EF9299
-:109F8000FF92CF93DF93CDB7DEB72C970FB6F8943F
-:109F9000DEBF0FBECDBF83E50E94D4C58823C9F0C4
-:109FA0000E946FC7809337022C960FB6F894DEBFDD
-:109FB0000FBECDBFDF91CF91FF90EF90DF90CF909C
-:109FC000BF90AF909F908F907F906F905F904F90D9
-:109FD000089562E97DE281E00F94291280913702B1
-:109FE000805D898389E89DE20E94ACCE89810E94D0
-:109FF0009FCE85E89DE20E94ACCE80913702811110
-:10A00000C6C08CE69DE20E94ACCE8AE00E949FCE44
-:10A0100040906D0F50906E0F60906F0F7090700FAA
-:10A020002091390230913A0240913B0250913C021A
-:10A03000C301B2010F94083E69837A838B839C83AA
-:10A040008090710F9090720FA090730FB090740F6A
-:10A0500020913D0230913E0240913F0250914002DA
-:10A06000C501B4010F94083E6D837E838F8398876A
-:10A07000C090750FD090760FE090770FF090780F2A
-:10A08000209141023091420240914302509144029A
-:10A09000C701B6010F94083E69877A878B879C8732
-:10A0A000209145023091460240914702509148026A
-:10A0B000C301B2010F94083E2B013C0120914902DB
-:10A0C00030914A0240914B0250914C02C501B401BB
-:10A0D0000F94083E4B015C0120914D0230914E02DD
-:10A0E00040914F0250915002C701B6010F94083EB3
-:10A0F0006B017C018DE79DE20E94ACCE49815A81C3
-:10A100006B817C818EE499E10E94A4CF4D815E81B8
-:10A110006F8178858FE09CE30E94A4CF49855A85A2
-:10A120006B857C858CE09CE30E94A4CF8BE79DE24D
-:10A130000E94ACCE83E79DE20E94ACCEB301A201A7
-:10A140008EE499E10E94A4CFB501A4018FE09CE3C5
-:10A150000E94A4CFB701A6018CE09CE30E94A4CF8B
-:10A160008AE02C960FB6F894DEBF0FBECDBFDF910C
-:10A17000CF91FF90EF90DF90CF90BF90AF909F90E6
-:10A180008F907F906F905F904F900C949FCE80E760
-:10A190009DE239CF0E94A4CF8AE00C949FCE2F92EB
-:10A1A0003F924F925F926F927F928F929F92AF9267
-:10A1B000BF92CF92DF92EF92FF920F931F93CF93B4
-:10A1C000DF93CDB7DEB7CE55D1090FB6F894DEBF19
-:10A1D0000FBECDBF70E060E085E40E94C4CA082FC6
-:10A1E0008EA3823008F042C083E40E94D1C981115D
-:10A1F0005FC025E02BAB83E50E94D1C9882309F419
-:10A200005BC00E9457C79A8B898B60E085E50E94EE
-:10A21000E1CA2F968FAF2F9760E085E697E30E9403
-:10A220001D3B0F941E1D6B8B7C8B8D8B9E8BE02EAC
-:10A23000002E000CFF08F701A3E0EE0FFF1FAA9508
-:10A24000E1F7EC59FD4F868197810E9789889A88AE
-:10A2500088169906B4F188E597E30E94ACCE89E3AD
-:10A2600097E30E94ACCE0F948E1008C08AEE95E35F
-:10A270000E94ACCE82ED95E30E94ACCEC25ADF4F75
-:10A280000FB6F894DEBF0FBECDBFDF91CF911F9107
-:10A290000F91FF90EF90DF90CF90BF90AF909F9085
-:10A2A0008F907F906F905F904F903F902F90089588
-:10A2B0000E9457C78BAB9FCF48EC50E05A8B498B1D
-:10A2C000A4CF2B893C894D895E89205E314B4F4F4D
-:10A2D0005F4F27962CAF3DAF4EAF5FAF27978CE215
-:10A2E00097E30E94ACCE84E297E30E94ACCE0E943A
-:10A2F000B48587E18E9D90018F9D300D1124A901B9
-:10A30000415C594F5A019FE7DA011A969C93089FC6
-:10A3100080011124F801E15CF94F4F01248135815E
-:10A320004681578163962CAF3DAF4EAF5FAF6397C9
-:10A3300010923A060E9479862B966DAF7EAF8FAF52
-:10A340002B9760E089E197E30E941D3B81E08093B9
-:10A3500074022B893C894D895E892FA338A749A7B0
-:10A360005AA72AAF3BAF4CAF5DAF1FA618AA19AAD8
-:10A370001AAA1BA61CA61DA61EA61F821886198631
-:10A380001A868FE790E0A0E0B0E08F8B988FA98FBE
-:10A39000BA8F1D8690E49C8FACE1AD8FB6E4BE8F82
-:10A3A0001F8E18A219A21AA2FFE7CF2ED12CE12CE2
-:10A3B000F12C1EAE23961CAE1DAE1EAE1FAE239713
-:10A3C0001EAA1FAA18AE19AEE1E0EB8F1C861B86F1
-:10A3D00010E000E0212C312C94012C5F3F4F3DAB6D
-:10A3E0002CABA501465F5F4F2D965FAF4EAF2D970B
-:10A3F00089899A894E964C01990FAA08BB086796DD
-:10A400008CAE9DAEAEAEBFAE679789899A894E97E6
-:10A410004C01990FAA08BB086B968CAE9DAEAEAEF0
-:10A42000BFAE6B9789899A8906974C01990FAA0844
-:10A43000BB086F968CAE9DAEAEAEBFAE6F978091EF
-:10A440007402882309F421C20F941E1D2B013C01C4
-:10A4500090902D0628969FAE2897992009F4FEC16A
-:10A460000E94E59010922D06ACA9BDA91C911196F1
-:10A470000C91119712962C90129713963C902F8D59
-:10A4800038A149A15AA1612F702FC1010F946840D2
-:10A49000181624F41F8F08A329A23AA22D853C8DFB
-:10A4A0004D8D5E8D612F702FC1010F94B13987FFE3
-:10A4B00004C01D870C8F2D8E3E8E612F702FC10121
-:10A4C0000F94743F4B0163966CAD7DAD8EAD9FAD27
-:10A4D00063970F94743FCB0149895A89B4010E9454
-:10A4E0009DCBE989FA894F01FF0FAA08BB08FB8DB4
-:10A4F000FF2309F449C0C501B4010F94B8396BA317
-:10A500007CA38DA32E969FAF2E979B01AC01612F4C
-:10A51000702FC1010F94684018160CF09FC1B30151
-:10A52000A2018FA198A5A9A5BAA5481B590B6A0B32
-:10A530007B0BDB01CA0188589341A109B109B7FD22
-:10A540008DC18F89988DA98DBA8D8C199D09AE0901
-:10A55000BF09B595A795979587952D96EEADFFAD5B
-:10A560002D9780834EAB5FAB68AF79AFFBA1FF8FB8
-:10A570002CA128A33DA139A32E964FAD2E974AA317
-:10A580004B8A5C8A6D8A7E8AC501B4010F94B83902
-:10A590006B8F7BA38CA39DA39B01AC01612F702FBC
-:10A5A000C1010F94B13987FD02C01B8E57C1D30181
-:10A5B000C2018B889C88AD88BE8888199909AA0930
-:10A5C000BB09AC01BD01485853416109710977FDD0
-:10A5D000ECCFAB84BC84AB2809F4FEC08EA89FA846
-:10A5E000A8ACB9AC880E991EAA1EBB1E2EA93FA905
-:10A5F00048AD59AD281B390B4A0B5B0BC701B6019F
-:10A600000F94943DA50194010F94C63DCF88D88C3A
-:10A61000E98CFA8CC20ED31EE41EF51E24E1C2168C
-:10A62000D104E104F1040CF445C13CEEC316D1049D
-:10A63000E104F1040CF038C140E8C416D104E1048F
-:10A64000F1040CF445C1CF8AD88EE98EFA8E8EEFD4
-:10A6500090E0A0E0B0E09C01AD012C193D094E094D
-:10A660005F0969017A0181E197E30E94ACCE6F89AD
-:10A67000788D898D9A8D0F942A0E8CE097E30E9435
-:10A68000ACCEC701B6010F942A0E4D855C8D6D8D41
-:10A690007E8D85E097E30E94A4CF4F8D58A169A1DC
-:10A6A0007AA18EEF96E30E94A4CFAB85BC85139769
-:10A6B0000CF492C0C701B6010F94B83920E030E025
-:10A6C00040E850E40F94173A6F83788789879A8718
-:10A6D0002D853C8D4D8D5E8D6F8D78A189A19AA1C0
-:10A6E0000F94073E2BED3FE049E450E40F94173AF6
-:10A6F00020E030E040E05FE30F94173A9B01AC01AB
-:10A700006F81788589859A850F94023F6D877E8752
-:10A710008F87988BC501B4010F94B8392FE632E1C9
-:10A7200043E85AE30F94173A4B015C012AE939E9EF
-:10A7300049E15FE36D857E858F8598890F94173A8F
-:10A740006F83788789879A879B01AC010F94083EB5
-:10A75000A50194010F94023F6BA77CA78DA79EA72C
-:10A760002F81388549855A85C501B4010F94173A60
-:10A7700020E030E040E05EE30F94173A6FA778AB3B
-:10A7800089AB9AAB4D855E856F85788988EF96E3B6
-:10A790000E94A4CFB501A40182EF96E30E94CAD023
-:10A7A00083EE96E30E94ACCE4F81588569857A8509
-:10A7B0008DED96E30E94A4CF4BA55CA56DA57EA56B
-:10A7C00087ED96E30E94A4CF4FA558A969A97AA95D
-:10A7D00081ED96E30E94CAD08F89988DA98DBA8D9C
-:10A7E0008C0D9D1DAE1DBF1DB595A79597958795A1
-:10A7F0002D96EEADFFAD2D9780838BA8882D082C6C
-:10A80000000C990B9F938F929C849F92AB84AF9284
-:10A810008DEB96E39F938F9388EC96E39F938F93B2
-:10A820001F920E94FA3A2B853C852F5F3F4F3C8751
-:10A830002B870FB6F894DEBF0FBECDBF8B8C8D86F5
-:10A840009BA09C8EACA0AD8EBDA0BE8E4FA258A684
-:10A8500069A67AA628968FAC28978B8E67966CADE2
-:10A860007DAD8EAD9FAD67970F94B839212F302FF6
-:10A87000A1010F94B13987FF30C080EB96E30E94AD
-:10A88000ACCE81E996E30E94ACCE109274020E9495
-:10A89000B4852B968DAC9EACAFAC2B978C829D82F1
-:10A8A000AE82CE0104963AC14BEEC42ED12CE12CDF
-:10A8B000F12CC9CE84E190E0A0E0B0E08F8B988FBE
-:10A8C000A98FBA8F34E1C32ED12CE12CF12CCBCE41
-:10A8D000CF8AD88EE98EFA8EC6CED301C2018AAC59
-:10A8E0009BACACACBDAC88199909AA09BB09B7FDF2
-:10A8F0004DC08EA10E949E848AE00E949FCEA3013B
-:10A9000092012053384F4F4F5F4F2AAF3BAF4CAFB0
-:10A910005DAF8EAC811072C023962CAD3DAD4EADB7
-:10A920005FAD2397612F702FC1010F9468401816F7
-:10A930000CF04EC020E030E040E050E4612F702F7A
-:10A94000C1010F94083E23966CAF7DAF8EAF9FAFD1
-:10A950002397A3019201205E314B4F4F5F4F279603
-:10A960002CAF3DAF4EAF5FAF27976F966CAD7DAD0F
-:10A970008EAD9FAD6F970F94B839212F302FA10165
-:10A980000F94B139881F8827881F8EAF8B899C89C7
-:10A99000AD89BE898FA098A4A9A4BAA488169906E7
-:10A9A000AA06BB0610F4D501C401481A590A6A0A5E
-:10A9B0007B0A21E842162FE4520622E16206710466
-:10A9C00098F184E896E30E94ACCE82E796E35BCFF1
-:10A9D000D301C20127968CAC9DACAEACBFAC27971F
-:10A9E00088199909AA09BB094AE053E269E173E2AF
-:10A9F000B7FDCCCF8EA10E94908FC8CF6B966CAD67
-:10AA00007DAD8EAD9FAD6B970F94B8399B01AC01B6
-:10AA1000612F702FC1010F94B13987FFB7CF47E481
-:10AA200053E267E573E2E6CF8BA8882D880C990B7B
-:10AA3000AB84BC848A159B050CF073C09501233050
-:10AA400031050CF46EC085E696E30E94ACCE84E13D
-:10AA500096E30E94ACCE87EF95E30E94ACCE4F8187
-:10AA6000588569857A8580E196E30E94CAD087EF90
-:10AA700095E30E94ACCE4BA55CA56DA57EA58CE0B0
-:10AA800096E30E94CAD087EF95E30E94ACCE4FA513
-:10AA900058A969A97AA988E096E30E94CAD02F969E
-:10AAA0008FAC2F97882081F18F809884A984BA84F5
-:10AAB00080924A0690924B06A0924C06B0924D06A8
-:10AAC0002CEA35EC47E25EE36BA57CA58DA59EA53F
-:10AAD0000F94173A60934E0670934F06809350067A
-:10AAE000909351062CEA35EC47E25EE36FA578A916
-:10AAF00089A99AA90F94023F609352067093530656
-:10AB000080935406909355062B968DAC9EACAFACBB
-:10AB10002B9789829A82AB82CE0101960E94F6CA57
-:10AB2000A2CB0E94446B8BCCCF93DF936DE572E395
-:10AB30000F942912C6EED8E0488159816A817B8141
-:10AB400084E592E30E94A4CF4C815D816E817F8178
-:10AB50008FE09CE30E94A4CF488559856A857B8558
-:10AB60008CE09CE3DF91CF910C94CAD060ED7CE245
-:10AB70000F942912609165097091660980916709A7
-:10AB8000909168090F94B639AB01BC0187EC9CE247
-:10AB90000E94A4CF40919509509196096091970920
-:10ABA0007091980984EC9CE20E94A4CF409199098D
-:10ABB00050919A0960919B0970919C0981EC9CE2EB
-:10ABC0000E94A4CF4091FE055091FF0560910006C0
-:10ABD000709101068EEB9CE20C94CAD0CF93DF9368
-:10ABE00064E77CE20F942912C5E5D9E04CA95DA980
-:10ABF0006EA97FA98BE69CE20E94A4CF48AD59AD17
-:10AC00006AAD7BAD88E69CE20E94A4CF4CAD5DAD01
-:10AC10006EAD7FAD81EC9CE2DF91CF910C94CAD0F8
-:10AC2000CF93DF9360E57CE20F942912C5E5D9E06C
-:10AC30004CA15DA16EA17FA187E49CE20E94A4CFFC
-:10AC400048A559A56AA57BA58FE09CE30E94A4CFE7
-:10AC50004CA55DA56EA57FA58CE09CE30E94A4CFCA
-:10AC600048A959A96AA97BA989E09CE3DF91CF9102
-:10AC70000C94CAD0CF93DF936BE27CE20F9429123D
-:10AC8000C5E5D9E0688179818A819B810F94B639C5
-:10AC9000AB01BC0182E29CE20E94A4CF6C817D8169
-:10ACA0008E819F810F94B639AB01BC018FE09CE38C
-:10ACB0000E94A4CF688579858A859B850F94B639D3
-:10ACC000AB01BC018CE09CE30E94A4CF6C857D8528
-:10ACD0008E859F850F94B639AB01BC0189E09CE35A
-:10ACE000DF91CF910C94CAD0CF93C62F0E94ACCEE7
-:10ACF0006C2F70E090E080E0CF910D94C00D0E9429
-:10AD000074D68AE00C949FCE69E375E30F94291200
-:10AD100060912E0280E395E30C947FD66CE27DE295
-:10AD20000F94291285E29DE20E94ACCE40918606E6
-:10AD30005091870660918806709189068CE09CE3AB
-:10AD40000C94CAD0CF93C62F0E94ACCE6C2FCC0FE0
-:10AD5000770B880B990BCF910D942A0EEF92FF92EF
-:10AD60000F931F93CF93DF9361E87FEF8FE40E94EF
-:10AD7000C4CAD82F813879F18FEF8D0F8F3058F1F9
-:10AD800080E79FE20E94ACCE11E061E87FEF80E5B2
-:10AD90000E94C4CAC82F813849F083E08C0F8031EB
-:10ADA00028F086E59FE20E94ACCE11E061E87FEFDB
-:10ADB00083E50E94C4CA813881F09FEF980F9830D4
-:10ADC00060F08EE39FE2DF91CF911F910F91FF9092
-:10ADD000EF900C94ACCE10E0D8CF111115C1D13842
-:10ADE00009F4D3E0C13809F4CFEF182F813809F402
-:10ADF00011E08CE9E82E82E0F82E00E081E0F70116
-:10AE000091917F0191544091BC085091BD0860918F
-:10AE1000BE087091BF0804C0769567955795479511
-:10AE20009A95D2F740FF19C06D2F023009F4C3C0C4
-:10AE3000033009F4CDC0013009F4B0C08FEA95E1C8
-:10AE40000F94EA216C2F8FEA95E10F94F020612F87
-:10AE50008FEA95E10F94DF2080E00F5F043079F6F0
-:10AE6000882309F4D1C088E50E949FCE8FEA95E13E
-:10AE70000F94E521682F8DE99EE20E9474D68FEA37
-:10AE800095E10F94E720682F84E99EE20E94A2D604
-:10AE90008FEA95E10F94D620682F8AE89EE20E94FF
-:10AEA0007FD689E50E949FCE83E795E10F94E52147
-:10AEB000682F81EC9EE20E9474D683E795E10F949F
-:10AEC000E720682F88EB9EE20E94A2D683E795E1F7
-:10AED0000F94D620682F8EEA9EE20E947FD68AE5E4
-:10AEE0000E949FCE87E395E10F94E521682F85EEC0
-:10AEF0009EE20E9474D687E395E10F94E720682FC5
-:10AF00008CED9EE20E94A2D687E395E10F94D620B5
-:10AF1000682F82ED9EE20E947FD685E40E949FCE3C
-:10AF20008BEF94E10F94E521682F89E09FE20E9466
-:10AF300074D68BEF94E10F94E720682F80E09FE2B6
-:10AF40000E94A2D68BEF94E10F94D620682F86EF53
-:10AF50009EE20E947FD60E94A6CE8FEB94E10F94D2
-:10AF6000E521682F8DE29FE20E9474D68FEB94E179
-:10AF70000F94E720682F84E29FE20E94A2D68FEB15
-:10AF800094E10F94D620682F8AE19FE2DF91CF9160
-:10AF90001F910F91FF90EF900C947FD683E795E17E
-:10AFA0000F94EA216C2F83E795E10F94F020612F35
-:10AFB00083E795E14FCF87E395E10F94EA216C2F6A
-:10AFC00087E395E10F94F020612F87E395E142CF6D
-:10AFD0008BEF94E10F94EA216C2F8BEF94E10F94A7
-:10AFE000F020612F8BEF94E10F94DF206D2F8FEB1A
-:10AFF00094E10F94EA216C2F8FEB94E10F94F020F1
-:10B00000612F8FEB94E126CFDF91CF911F910F91AC
-:10B01000FF90EF90089585E79AE20C94ACCE8FE60E
-:10B020009AE20C94ACCECF9384E50E94D1C9C09132
-:10B0300051098823D9F00E945BC7C82F8230B4F031
-:10B040000E940FD88DE40E949FCE6091C20870913B
-:10B05000C30890E080E00F94C00D6C2F8CE89FE255
-:10B060000E94A2D68AE00E949FCECFEF8C2FCF9174
-:10B0700008954F925F926F927F928F929F92AF92BC
-:10B08000BF92CF92DF92FF920F931F93CF93DF93E4
-:10B090009091D40593FD13C1D82F0E9413D8C82FC7
-:10B0A00087FD0DC189E40E94D1C9882309F47CC0C1
-:10B0B0000E945BC790E01816190614F481E090E036
-:10B0C00026E0289FF001299FF00D1124EE50FA4F41
-:10B0D00080819181F12C6C2F0E94DCCC61E08D2F5E
-:10B0E0000E94DEBB0C2F0C2E000C110B37E1C302AB
-:10B0F000C0011124FC01E15CF94F6F01608571858D
-:10B10000072E000C880B990B0F94B8394B015C018A
-:10B11000F6014480558066807780A30192010F94E8
-:10B120006840181614F0F11039C00F5C1F4FD11190
-:10B13000BAC0A3019201C501B4010F94684018166A
-:10B140000CF084C0DD24D39489E197E39F938F931F
-:10B150001F930F938DEA95E39F938F931F920E9405
-:10B16000FA3A2DB73EB7295F3F4F0FB6F8943EBF6E
-:10B170000FBE2DBFDD2041F0C09339068DE490E76E
-:10B18000909318128093171211E017C082E50E9465
-:10B19000D1C9882389F00E9457C79DCF1F2D0DC0AC
-:10B1A00060E070E0CB0126C083E50E94D1C9F82E93
-:10B1B0008111F1CFD111EACF10E083E50E94D1C90E
-:10B1C000882331F00E9457C7909319028093180288
-:10B1D00082E40E94D1C9882331F00E9457C790931E
-:10B1E00017028093160286E40E94D4C58823C1F218
-:10B1F0000E94A7C9609312027093130280931402F5
-:10B200009093150201E020E030E0A9010F94B139DC
-:10B21000811101C000E000936D06DD2309F44FC0E9
-:10B22000112309F44CC06F2D8C2FDF91CF911F910A
-:10B230000F91FF90DF90CF90BF90AF909F908F9035
-:10B240007F906F905F904F900C94888682EA95E390
-:10B250009F938F931F930F938DEA95E39F938F9303
-:10B260001F920E94FA3A2DB73EB7295F3F4F0FB6A3
-:10B27000F8943EBF0FBE2DBF7FCF89E197E39F9328
-:10B280008F931F930F938DEA95E39F938F931F9254
-:10B290000E94FA3A8DB79EB707960FB6F8949EBFF4
-:10B2A0000FBE8DBF71CFA3019201C501B4010F94F0
-:10B2B0006840181614F3D12C82EA95E347CFDF914A
-:10B2C000CF911F910F91FF90DF90CF90BF90AF90E3
-:10B2D0009F908F907F906F905F904F9008950F9305
-:10B2E0001F93CF93811116C0C42F8B010E940FD8DA
-:10B2F00089E89FE20E94ACCEC8010E94ACCECC236C
-:10B3000049F08AE30E949FCE8AE0CF911F910F916E
-:10B310000C949FCECF911F910F910895811102C07F
-:10B320000C940FD808951F93CF93DF93D82F162F27
-:10B3300041E061E67DE20E946FD9C0E01C1711F088
-:10B340001F3FD1F58D2F0E948ED940914A06509112
-:10B350004B0660914C0670914D0688E59DE20E9477
-:10B36000A4CF2CEA35EC47E25EE360914E06709183
-:10B370004F0680915006909151060F94023FAB0109
-:10B38000BC0185E59DE20E94A4CF2CEA35EC47E2A2
-:10B390005EE360915206709153068091540690913D
-:10B3A00055060F94173AAB01BC0182E59DE20E945D
-:10B3B000A4CF8AE00E949FCEC13021F4DF91CF91CB
-:10B3C0001F910895C1E0BACFCF93DF93C82F63E4F4
-:10B3D0007DE20F9429128C2F0E948ED961E08AE3BE
-:10B3E0009DE20E9474D6CEE6D6E04C855D856E85E2
-:10B3F0007F858EE499E10E94A4CF488959896A89A2
-:10B400007B898FE09CE30E94A4CF8CE09CE30E94A8
-:10B41000ACCE6C897D898E899F8943E00E94FA8336
-:10B420008AE0DF91CF910C949FCECF93DF93C82F0A
-:10B43000811113C040E060E17CE280E00E946FD99E
-:10B440008091F105811104C083E09CE20E94ACCEA2
-:10B450008AE00E949FCE0E940FD8D091F1058AEF1A
-:10B460009BE20E94ACCE6D2F70E090E080E00F94E4
-:10B470002A0E8AE00E949FCE8C2F0E948ED960E017
-:10B4800081EF9BE20E94A2D64091E9055091EA0526
-:10B490006091EB057091EC058EEE9BE20E94CAD0A4
-:10B4A0008C2F0E948ED961E081EF9BE20E94A2D690
-:10B4B0004091ED055091EE056091EF057091F0051A
-:10B4C0008EEE9BE2DF91CF910C94CAD0CF93C82F20
-:10B4D0004091510982E0C11184E060E00E94092E90
-:10B4E0000E940FD88DE89AE2CC2311F085EA9AE207
-:10B4F000CF910C94ACCECF93DF93EB010E94ACCEF6
-:10B50000BE0190E080E0DF91CF910D94C00DCF930C
-:10B51000DF93EB010E94ACCEBE01DD0F880B990BCF
-:10B52000DF91CF910D942A0E5F926F927F928F924E
-:10B530009F92AF92BF92CF92DF92EF92FF920F93C2
-:10B540001F93CF93DF931F92CDB7DEB77C013901F4
-:10B550008B015B01A40EB51ED12CC12CA016B10627
-:10B5600009F450C0F70180809180F80151908F015B
-:10B570005982C4010F947E3D5816B9F1652DC4015E
-:10B580000F94863DFFEFCF1ADF0AC6018F77992708
-:10B59000892B21F162E070E080E090E00F94911C33
-:10B5A000C4010F947E3D99818917F9F00E940FD84C
-:10B5B00085EF97E20E94ACCE81E00F90DF91CF91B2
-:10B5C0001F910F91FF90EF90DF90CF90BF90AF90C1
-:10B5D0009F908F907F906F905F90089562E070E0F1
-:10B5E00080E090E00E9421CDDBCFBE016F5F7F4FF6
-:10B5F000C3010F94C40AF701808191810196918360
-:10B600008083ACCF80E0D9CF0E947BDA8AE00C94B3
-:10B610009FCE0E94ACCE8AE00C949FCEEF92FF9218
-:10B620001F93CF93DF9383E50E94D4C5882309F449
-:10B6300045C06EEF7FEF84E50E94C4CA182F8230A8
-:10B6400008F01EEF0E946FC7D82F8CE9E82E82E029
-:10B65000F82EC0E0F70181917F010E94D4C58823B4
-:10B6600051F0C23089F0C330A1F0C13041F0D09325
-:10B67000EA150F940112CF5FC43061F719C0D0935F
-:10B68000AE150F940912F7CFD09372150F941112C3
-:10B69000F2CF11163CF4113059F4D093FA140F94F0
-:10B6A0002112E9CFD09336150F9419121111F5CF4D
-:10B6B000DF91CF911F91FF90EF90089588E50E9450
-:10B6C0009FCE8FED9DE20E94ACCE8FEA95E10F9464
-:10B6D000C221882309F44CC087EC9DE20E9409DB5B
-:10B6E00089E50E949FCE86E09EE20E94ACCE83E771
-:10B6F00095E10F94C2218823F1F18EEE9DE20E9424
-:10B7000009DB8AE50E949FCE8DE29EE20E94ACCECC
-:10B7100087E395E10F94C221882381F185E19EE2C0
-:10B720000E9409DB85E40E949FCE84E59EE20E9490
-:10B73000ACCE8BEF94E10F94C221882311F18CE3FE
-:10B740009EE20E9409DB0E94A6CE8BE79EE20E9449
-:10B75000ACCE8FEB94E10F94C2218823A9F083E64D
-:10B760009EE2DF91CF911F91FF90EF900C9409DB47
-:10B7700083ED9DE2B3CF8AEF9DE2C1CF81E29EE2ED
-:10B78000CFCF88E49EE2DDCF8FE69EE2EACF0F9333
-:10B790001F93CF93DF93082F41E062EB7DE20E947D
-:10B7A0006FD9C9EDD5E010E0802F0E948ED9612FAE
-:10B7B00089EA9DE20E94A2D64C815D816E817F81E3
-:10B7C00086EA9DE20E94A4CF488159816A817B81EB
-:10B7D00083EA9DE20E94A4CF80EA9DE20E94ACCE63
-:10B7E0008DED98E10E9409DB2896113029F4DF9154
-:10B7F000CF911F910F91089511E0D6CFFF920F9333
-:10B800001F93CF93DF93F62E042F122F882329F155
-:10B810008CE09BE20E94ACCE88E50E949FCE8CEF2C
-:10B820009AE20E94ACCE8FEA95E10F94F820D82FCF
-:10B83000882361F080EF9AE20E94ACCE88EE9AE213
-:10B84000D13031F084EE9AE2D23011F08DEE9AE2EE
-:10B850000E9409DBC1E0D11101C0C0E0FF2039F135
-:10B860008DE39BE20E94ACCE89E50E949FCE8DE2E3
-:10B870009BE20E94ACCE83E795E10F94F820D82F8D
-:10B88000882361F081E29BE20E94ACCE89E19BE2D9
-:10B89000D13031F085E19BE2D23011F08EE19BE2B4
-:10B8A0000E9409DB81E0D11101C080E0C80F0023B4
-:10B8B00039F18EE69BE20E94ACCE8AE50E949FCED3
-:10B8C0008EE59BE20E94ACCE87E395E10F94F820D1
-:10B8D000D82F882361F082E59BE20E94ACCE8AE4F7
-:10B8E0009BE2D13031F086E49BE2D23011F08FE45C
-:10B8F0009BE20E9409DB81E0D11101C080E0C80F0A
-:10B90000112309F44DC08FE99BE20E94ACCE85E47F
-:10B910000E949FCE8FE89BE20E94ACCE8BEF94E119
-:10B920000F94F820D82F882361F083E89BE20E94CF
-:10B93000ACCE8BE79BE2D13031F087E79BE2D2308F
-:10B9400011F080E89BE20E9409DB81E0D11101C087
-:10B9500080E0C80F80ED9BE20E94ACCE0E94A6CE94
-:10B9600080EC9BE20E94ACCE8FEB94E10F94F82028
-:10B97000D82F882361F084EB9BE20E94ACCE8CEA46
-:10B980009BE2D13031F088EA9BE2D23011F081EBBA
-:10B990009BE20E9409DB81E0D11101C080E0C80F69
-:10B9A000CC2351F060E089ED9BE2DF91CF911F91B4
-:10B9B0000F91FF900C941D3BDF91CF911F910F9140
-:10B9C000FF900895CF93DF9300D0CDB7DEB78C0101
-:10B9D0007B01D42E0E94B4850115110509F481C0A4
-:10B9E0000E940FD8C8010E9409DBE114F10421F480
-:10B9F0009EE6E92E9AE2F92E0E945940FF92EF92BC
-:10BA00001F930F938EE39AE29F938F9381E08F931E
-:10BA10000E94FA3A0E945E2D8FEF89831A821B8260
-:10BA2000CE0101960E94F6CA10914A1616951695F7
-:10BA300085E496E10E94126B012F000FF02EF10EAB
-:10BA40000FB6F894DEBF0FBECDBF83E00E94AA3FC1
-:10BA5000109280161093811689E192E10E94AD4206
-:10BA60004FE25AE2602F80E00E94C46442E25AE250
-:10BA70006F2D80E00E94C46489E496E10F94E7246E
-:10BA80008111E3CF0E940BD88EE49AE20E94ACCEE3
-:10BA900089EE93E0019739F000C00000EEE5F9E08F
-:10BAA0003197F0F7F7CFF89489EE93E0019739F0EA
-:10BAB00000C00000E6EEF3E03197F0F7F7CF0E9408
-:10BAC000B485DD2031F00E943CB7909905C0A8955F
-:10BAD000FCCF0E94FE89F9CF909B02C0A895FCCFB5
-:10BAE000FFCFE114F10421F48EE6E82E8AE2F82E6D
-:10BAF00005E41AE281CF80918C0F90918D0F2FEF8A
-:10BB00003FEF981751F0E92FF0E0E457F04F228112
-:10BB100030E09F5F9F7790938D0FC90108951F922A
-:10BB20000F920FB60F9211240F900FBE0F901F901F
-:10BB300018951F920F920FB60F9211240BB60F9209
-:10BB40002F938F939F93EF93FF939091C600209133
-:10BB50008D0FE0918C0F81E08E0F8F77281729F0E1
-:10BB6000F0E0E457F04F9283E82FE0938C0FFF91C1
-:10BB7000EF919F918F912F910F900BBE0F900FBE61
-:10BB80000F901F9018958EBD0DB407FEFDCF089540
-:10BB90008FEF8EBD0DB407FEFDCF8EB50895909149
-:10BBA00064009B7F90936400982F906A96959CBD4B
-:10BBB00080FD03C091E0863009F490E09DBD0895BA
-:10BBC000CF93DF93EB010E94ACCECE01DF91CF91FA
-:10BBD0000D94D6262F923F924F925F926F927F9252
-:10BBE0008F929F92AF92BF92CF92DF92EF92FF928D
-:10BBF0000F931F93CF93DF9300D000D01F921F921B
-:10BC0000CDB7DEB7B82E80917510843008F0E7C14B
-:10BC100061E6D62E80917510843008F025C18091A0
-:10BC20008C0F90918D0F891B8F7709F41DC10E9495
-:10BC30007BDD97FF0BC00E940BD88BE399E20E943B
-:10BC4000ACCE80918C0F80938D0FE4CF8A3019F0A9
-:10BC50008D3009F000C110927410809112109091F3
-:10BC60001310FC01E25FFF4E1682892B19F40E942B
-:10BC7000A591D0CF109213101092121004E110E190
-:10BC8000F8018191803209F446C08E3409F09DC0DC
-:10BC900066E379E2C8010F942E397C01892B41F0CB
-:10BCA0006EE470E0C80104960F94E241009709F435
-:10BCB000C8014AE050E070E060E001960F94A536BC
-:10BCC0002B013C0180910E1090910F10A09110104B
-:10BCD000B09111100196A11DB11D481659066A06B2
-:10BCE0007B0629F060E083E099E2EF2851F16AE2F7
-:10BCF00070E0C8010F9411429C01009729F1982F20
-:10BD0000901BF12C992349F09150F801E90FF11D96
-:10BD10008081F826F7CF8F01B3CF4AE050E070E082
-:10BD200060E0C90101960F94A5362F2D30E050E058
-:10BD300040E0621773078407950751F060E084EED6
-:10BD400098E20F945B0F66CF60E08AEB98E2F9CF40
-:10BD500040920E1050920F106092101070921110BD
-:10BD6000809135098130E1F467E470E0C8010F94F7
-:10BD7000E2410097A9F04AE050E070E060E00196EF
-:10BD80000F94A536643071058105910548F489E169
-:10BD900098E20E94ACCE60E08FE098E20E941D3BEA
-:10BDA000F80180818D3489F58381823309F446C09E
-:10BDB000883309F1803349F58181843331F58281FB
-:10BDC000813319F50E9439B820C08091A21780FFF5
-:10BDD000C7CF67ED7AE3C8010F942E39009739F089
-:10BDE000DC0113968C9180538A3008F0B9CF60E063
-:10BDF00080E998E2A6CF8281803339F48181813352
-:10BE000021F41092740210924F09809114108B3318
-:10BE100009F400CF80917510843008F0FBCE80913A
-:10BE200077108D9DC001112464E170E188589F4E08
-:10BE30000F94ED4180E00F941C0FECCE8281813392
-:10BE400021F78181813309F741E070E060E084EF00
-:10BE500090E30E94E2DC22E130E144E150E164E75A
-:10BE600070E10E9459C5D6CE8091A21783FDB7C05C
-:10BE700082FFB5C087FDB3C01A82198231E6F32E66
-:10BE800044E0E42E59E6D52E80917510843008F0F8
-:10BE9000A6C00E9491C58111A2C041E050E0BE0140
-:10BEA0006D5F7F4F80E594E10E94167D0B8110E06D
-:10BEB000019711F00FEF1FEF8091581490915914D2
-:10BEC000A0915A14B0915B1480939E1790939F1782
-:10BED000A093A017B093A1170E9491C50F3F100720
-:10BEE00049F4811107C00E940BD883E599E20E94B2
-:10BEF000ACCECACF40917710242F30E00A3061F0E9
-:10BF00000D3051F0882309F45CC089819A81009733
-:10BF100019F001969A8389831092620889819A8127
-:10BF2000F29EF001F39EF00D1124EB58FF4EE80F46
-:10BF3000F91F1382892BA9F50E94A5910E9491C532
-:10BF4000882309F4A1CF80E594E10E945E7E809170
-:10BF50009917882361F18150809399178D9DC001B5
-:10BF6000112462E08156994F0E945EBEE0919917BC
-:10BF700024E0E29FF0011124E556F94F4081518100
-:10BF80006281738140939E1750939F176093A0170F
-:10BF90007093A11780E594E10E94827C0E949279BF
-:10BFA00073CF1A82198281E00F941C0FC7CF0E94B1
-:10BFB000677E8091A21788608093A217E09235096E
-:10BFC00063CF4F9DA001112448585F4E9E012F5F03
-:10BFD0003F4F62E678E0802F0E9459C555CF0F94FD
-:10BFE0001E1D6B017C01B11004C080919A0688234C
-:10BFF00051F0C0923B06D0923C06E0923D06F09292
-:10C000003E06BB24B39480919A0890919B08A0911E
-:10C010009C08B0919D080097A105B10551F1409190
-:10C020003B0650913C0660913D0670913E06840FA0
-:10C03000951FA61FB71FA7019601281B390B4A0B96
-:10C040005B0BDA01C901B7FD14C00E940BD881EB6C
-:10C0500099E20E94ACCE609153097091540986E830
-:10C0600099E20F94E22640E070E060E090E080E02A
-:10C07000F0CE9091091680910A16981741F0C0925F
-:10C080003B06D0923C06E0923D06F0923E0640917F
-:10C090005A0250915B0260915C0270915D02452BE7
-:10C0A000462B472B21F0981701F110926D088091D3
-:10C0B0006B0890916C08909946C0019690936C081B
-:10C0C00080936B0880916B0890916C088E3E924033
-:10C0D0000CF43FC00E940BD883E799E20E94ACCEDB
-:10C0E00082E699E20E94ACCEBECFB110DECF0F94B3
-:10C0F0001E1D00913B0610913C0620913D0630919B
-:10C100003E0680905A0290905B02A0905C02B09034
-:10C110005D02080D191D2A1D3B1D601B710B820B52
-:10C12000930B97FDC2CF80916D088111C0CF81E044
-:10C1300080936D0880E00E9400B781E00E9400B704
-:10C140000E94FE89B4CF181619060CF0BBCF0197D8
-:10C15000B5CF8091670890916808A0916908B09167
-:10C160006A0846015701881A990AAA0ABB0AD5012A
-:10C17000C401B7FD72C19091091680910A165091C1
-:10C1800056024091570298131EC08091D20558174D
-:10C19000C1F08093560281E02091D305421779F1D6
-:10C1A000209357020F941E1D6091560270E084E0A8
-:10C1B0000F94E9186091570270E089E00F94E91834
-:10C1C00020C080E0E9CFE0910A162E2F30E08DE507
-:10C1D000E89FF0011124EC50F64F8081581769F068
-:10C1E0008093560281E09DE5929FF001939FF00DB0
-:10C1F0001124EB50F64F2081D1CF80E0F4CF811194
-:10C20000D1CF80916D06882309F41AC1809051091D
-:10C2100088868090180290901902A88427E1A29E37
-:10C22000F0011124E15CF94FC401029720853185AA
-:10C23000281739070CF404C110910A16712C00E07C
-:10C240001C82612C80910916811709F45FC0812F2F
-:10C2500090E02DE5B22EB89EF001B99EF00D1124AC
-:10C26000E356F64F458956896789708D452B462BD5
-:10C27000472B81F4418D528D638D748D452B462B58
-:10C28000472B41F4458D568D678D70A1452B462B6C
-:10C29000472BC9F14DE5489F9001499F300D11246E
-:10C2A000C9018356964F5C01DC0191966D917D9199
-:10C2B0008D919C9194970F94B6391B012C01F50137
-:10C2C00065A176A187A190A50F94B6399B01AC0119
-:10C2D000C201B1010F94023FD50111962D913D91FC
-:10C2E0004D915C9114970F94173A2B015C01272D07
-:10C2F000302F4C81562D0F946840181624F4742C5E
-:10C30000052DAC826B2C1F5F1F709CCFB401990C64
-:10C31000880B990B0F94B839562EA72EB82E192FCB
-:10C320002091120230911302409114025091150293
-:10C33000672D702F8C81962D0F94173A252D3A2D4D
-:10C340004B2D512F0F94083E362E472E782E092F55
-:10C350008090160290901702262F372F482F592FC2
-:10C36000652D7A2D8B2D912F0F9468401816D4F0DF
-:10C37000B401990C880B990B0F94B839562EA72E3F
-:10C38000B82E192F262F372F482F592F632D742D94
-:10C39000872D902F0F946840181624F0532CA42C4E
-:10C3A000B72C102F209163083091640840916508E4
-:10C3B000509166082C833D834E835F83252D3A2D53
-:10C3C0004B2D512F6C817D818E819F810F94684010
-:10C3D000181604F520E037ED43EA5CE3652D7A2D6D
-:10C3E0008B2D912F0F94173A4B015C0128E431EE0D
-:10C3F0004AE75FE36C817D818E819F810F94173ABC
-:10C400009B01AC01C501B4010F94083E562EA72E26
-:10C41000B82E192F852D9A2DAB2DB12F809363083F
-:10C4200090936408A0936508B0936608652D7A2DF3
-:10C430008B2D912F0F94743FCB0168850E94DCCC2B
-:10C4400034E6C30ED11CE11CF11CC0926708D092E7
-:10C450006808E0926908F0926A080E94A5918091AC
-:10C460003509882309F42BC190910901892F809502
-:10C470008170109158021817D1F12091A2172064F1
-:10C480002093A2178093580290FD0FC064EF71E0D3
-:10C4900080E090E00E9421CD0E948F7E8091A217C3
-:10C4A00084FD46C1112319F102C00E94777E12302B
-:10C4B00008F41EC100E00E94DE3F83E08093750215
-:10C4C0000F941E1D6C597F4F8F4F9F4F6093FB033E
-:10C4D0007093FC038093FD039093FE03002339F0D7
-:10C4E000123029F481E0809398170F9413270F944A
-:10C4F0001E1D6B017C01109159021123F1F08091F6
-:10C5000050098823D1F040917608509177086091C6
-:10C5100078087091790846015701841A950AA60A8D
-:10C52000B70AB501A40177FD1AC0833009F4FBC036
-:10C530000CF0EAC081300CF0EFC0212F30E0A8EE03
-:10C54000B3E00F94F83DC60ED71EE81EF91EC09248
-:10C550007608D0927708E0927808F0927908809176
-:10C56000860F813009F073C00F941E1D6B017C0192
-:10C570008091720890917308A0917408B091750829
-:10C58000A7019601281B390B4A0B5B0BDA01C90185
-:10C59000B7FD3AC0D701C601805F984DAF4FBF4F7E
-:10C5A0008093720890937308A0937408B0937508F1
-:10C5B0008090D5059090D605A090D705B090D8056D
-:10C5C0000E94E4BAAB01BC014093D5055093D60557
-:10C5D0006093D7057093D8058091D6089091D708BD
-:10C5E000A091D808B091D90888199909AA09BB095E
-:10C5F000840F951FA61FB71F8093D6089093D70866
-:10C60000A093D808B093D90880916E0890916F08D4
-:10C61000A0917008B091710846015701881A990AD3
-:10C62000AA0ABB0AD501C401B7FD11C020E8C20E99
-:10C630002EEED21E26E3E21EF11CC0926E08D092AE
-:10C640006F08E0927008F09271080E94BC8E0E9400
-:10C65000312B0E94446B80919908882381F10F94BB
-:10C660001E1D6B017C018091950890919608A09108
-:10C670009708B091980846015701881A990AAA0AA2
-:10C68000BB0AD501C401B7FD1AC02091990830E05A
-:10C69000A8EEB3E00F94F83DC60ED71EE81EF91EB3
-:10C6A000C0929508D0929608E0929708F092980868
-:10C6B000809151090E949E848AE00E949FCE289614
-:10C6C0000FB6F894DEBF0FBECDBFDF91CF911F91A3
-:10C6D0000F91FF90EF90DF90CF90BF90AF909F9021
-:10C6E0008F907F906F905F904F903F902F90089524
-:10C6F00060E085E09AE20E941D3B80914009811133
-:10C70000D9CE0E945E2DD6CE843009F016CF0E947D
-:10C710000FD884EC99E204C00E940FD883EF99E20D
-:10C720000E94ACCE0ACF0E940FD88CED99E2F8CFD0
-:10C73000123028F460E083E19AE20E941D3B01E0A0
-:10C74000BACE2F923F924F925F926F927F928F92CA
-:10C750009F92AF92BF92CF92DF92EF92FF920F9390
-:10C760001F93CF93DF93CDB7DEB76B970FB6F894D7
-:10C77000DEBF0FBECDBF9091D40593FD47C1182FEA
-:10C7800089E40E94D1C9882309F46DC10E945BC766
-:10C7900090E01816190614F481E090E026E0289F36
-:10C7A000F001299FF00D1124EE50FA4F8281938100
-:10C7B0001F828436910514F084E690E0909337064A
-:10C7C000809336060E9422C60E943BC860E0882300
-:10C7D00009F40DC183EC95E30E941D3B01E0612F3C
-:10C7E0006027812F0E94DEBB112309F435C1C09060
-:10C7F0003206D0903306E0903406F0903506CC8AAD
-:10C80000DD8AEE8AFF8A8FE780933A0600937402EE
-:10C81000412C512C3201188619861A861B86188ADB
-:10C820002CE3298B3CE13A8B46E44B8B212C1C8278
-:10C8300050E85D838FEB8E83312C609136067091CA
-:10C840003706072E000C880B990B0F94B8397B0123
-:10C850008C01222D3C814D815E810F94B13988235A
-:10C86000B9F0209132063091330640913406509150
-:10C870003506CF80B701C801C110BCC00F94B139D3
-:10C88000382E331C3324331C2E2CFC820D831E8344
-:10C890000F941E1D4B015C01DC01CB01C884D984BF
-:10C8A000EA84FB848C199D09AE09BF09B7FD11C04C
-:10C8B000A501940128513C4F4F4F5F4F288739877E
-:10C8C0004A875B87809151090E949E848AE00E947A
-:10C8D0009FCE80E00E94EADD0F941E1D60933B0610
-:10C8E00070933C0680933D0690933E06109132066D
-:10C8F00000913306D0903406C09035063110C3C085
-:10C90000622D7C818D819E810F94743F4B01612F3C
-:10C91000702F8D2D9C2D0F94743F6C877D878E8793
-:10C920009F870C851D856C897D898E899F890F94D1
-:10C93000743F9B018616970609F487C06401092C91
-:10C94000000CEE08FF08C88ED98EEA8EFB8E6B01B4
-:10C95000072E000CEE08FF08061717072CF09401AD
-:10C96000081519050CF49801032E000C440B550B07
-:10C970002C193D094E095F09AFEFB0E00F94E53D7A
-:10C98000288D398D4A8D5B8D2C193D094E095F0923
-:10C990000F94C63D80913A06821759F020933A06CB
-:10C9A00029831A82DD24DA94DB82CE0101960E946B
-:10C9B000F6CA80917402882309F1332009F447C034
-:10C9C0006091360670913706072E000C880B990B84
-:10C9D0000F94B839209132063091330640913406D5
-:10C9E000509135060F94B13987FD27CF07C084EBEE
-:10C9F00095E3F2CE0F94B13987FF21C08091740284
-:10CA0000882321F0109274020F948E106B960FB64B
-:10CA1000F894DEBF0FBECDBFDF91CF911F910F9174
-:10CA2000FF90EF90DF90CF90BF90AF909F908F904E
-:10CA30007F906F905F904F903F902F9008952E2C95
-:10CA4000FC820D831E83312C23CF2FEFA3CF0E94B6
-:10CA50003BC88111F2CED2CF8DE295EC90931812A3
-:10CA600080931712D3CF83E50E94D1C98F838111A0
-:10CA700007C0112359F282E50E94D1C9882331F2FF
-:10CA80000E9457C796CE411451046104710441F0CD
-:10CA9000D501C40184199509A609B709B7FD89CF45
-:10CAA000212F302F4D2D5C2D688979898A899B89AA
-:10CAB0000F94073E20E030E040E85FE30F94B13987
-:10CAC00087FD9CCF2401350120E6420E2AEE521E3E
-:10CAD000611C711C188B098BDA8ACB8A6ACF1F9371
-:10CAE000CF93DF93D82F162F8091D40583FD15C0E7
-:10CAF000C091510987E1C89FF0011124E15CF94F11
-:10CB0000808591850E94F7CC882339F06C2F809125
-:10CB10006002909161020E94DCCC40915109612F2A
-:10CB20008BE00E94092EDD2341F061E080915109E4
-:10CB3000DF91CF911F910C9488868091A00891E09D
-:10CB400089278093740217E1809174028823F9F099
-:10CB5000C09151091C9FE0011124C15CD94F20E014
-:10CB600030E040E05FE36C817D818E819F810F9496
-:10CB7000083E0F94743F28853985621B730B77FF3D
-:10CB800003C07195619571096230710544F410928A
-:10CB900074028091D40583FF06C081E019C080E053
-:10CBA0000E94EADDD1CFE091510987E1E89FF001D1
-:10CBB0001124E15CF94F808591850E94F7CC882390
-:10CBC00061F30E940FD88CE79AE20E94ACCE80E01D
-:10CBD000DF91CF911F9108956F927F928F929F92D4
-:10CBE000AF92BF92CF92DF92EF92FF920F931F937B
-:10CBF000CF93DF9300D000D01F921F92CDB7DEB746
-:10CC00005C014B013A01F22E68011091220610924C
-:10CC10001E0610921F0610922006109221061092F6
-:10CC2000220680E00E949ACC00912706012B1092E8
-:10CC300023061092240610922506109226061092C2
-:10CC4000270681E00E949ACC6091510987E1689F94
-:10CC5000F0011124E15CF94F808591858C159D05CB
-:10CC60001CF4C6010E94DCCCE12C2F2DA301B401E1
-:10CC7000C5010F948D121C141D0454F460915109C8
-:10CC8000C6010E94DCCC60E0809151090E94888638
-:10CC90004091510960E088E00E94092E60E081E047
-:10CCA0000E946FE580E090E0A0E7B2E489839A8378
-:10CCB000AB83BC8380E090E0A0E0B0EC8D839E83EA
-:10CCC000AF83B887BE016F5F7F4FCE0105960E948C
-:10CCD0004EB50F941711811168C080918202909116
-:10CCE0008302A0918402B091850240917E0250910E
-:10CCF0007F02609180027091810280908308909001
-:10CD00008408A0908508B090860800917F08109153
-:10CD10008008209181083091820800938A06109340
-:10CD20008B0620938C0630938D0680928E0690920F
-:10CD30008F06A0929006B09291064093920650936F
-:10CD4000930660939406709395068093960690934D
-:10CD50009706A0939806B093990680E090E0A8EC1F
-:10CD6000B2E489839A83AB83BC83CE0101960E948F
-:10CD7000E3B48091870890918808A0918908B091C8
-:10CD80008A088093920690939306A0939406B0939A
-:10CD9000950680E090E0A0EAB0E489839A83AB83B3
-:10CDA000BC83CE0101960E94E3B4812C912C80E7D4
-:10CDB000A82E82E4B82E89829A82AB82BC8280E05F
-:10CDC00090E0A0E0B0E48D839E83AF83B887BE017E
-:10CDD0006F5F7F4FCE0105960E944EB520E030E098
-:10CDE000A90160918B0870918C0880918D089091B9
-:10CDF0008E080F94B13987FF0BC089829A82AB826B
-:10CE0000BC82BE016F5F7F4F8BE898E00E944EB5F9
-:10CE100080918B0890918C08A0918D08B0918E081C
-:10CE20008093820290938302A0938402B093850240
-:10CE30008093960690939706A0939806B0939906D0
-:10CE400086E996E00E9498B1809151098093000490
-:10CE50000E945E2D80919A06815080939A0680915F
-:10CE6000860F823011F40E94A6BB80919A06882317
-:10CE700029F0815080939A060E9492790F948E1027
-:10CE80000E945E2D28960FB6F894DEBF0FBECDBF70
-:10CE9000DF91CF911F910F91FF90EF90DF90CF9096
-:10CEA000BF90AF909F908F907F906F9008954F921A
-:10CEB0005F926F927F92AF92BF92CF92DF92EF928A
-:10CEC000FF921F93CF93DF9300D000D01F921F9249
-:10CED000CDB7DEB75C01E62EF42E642F80E00E9411
-:10CEE0006FE5182F81111DC0EE2031F0809151099E
-:10CEF000809300040E945E2D812F28960FB6F8942F
-:10CF0000DEBF0FBECDBFDF91CF911F91FF90EF909D
-:10CF1000DF90CF90BF90AF907F906F905F904F90D9
-:10CF20000895EE2031F0409151096F2D83E00E9469
-:10CF3000092E80E090E0A0E7B2E48D839E83AF836A
-:10CF4000B88780E090E0A0E5B1EC89839A83AB8359
-:10CF5000BC83BE016B5F7F4FCE0101960E944EB530
-:10CF600068E873E180E090E00E9421CDC12CD12CD3
-:10CF700088ECE82E81E4F82ECD82DE82EF82F886FE
-:10CF800080E090E0A8EAB1E489839A83AB83BC8314
-:10CF9000BE016B5F7F4FCE0101960E944EB540905F
-:10CFA0008D0950908E0960908F0970909009C09201
-:10CFB0008D09D0928E09E0928F09F092900980E05D
-:10CFC00090E0A0E2B1E48D839E83AF83B887F50142
-:10CFD00080819181A281B38189839A83AB83BC8351
-:10CFE000BE016B5F7F4FCE0101960E944EB540920D
-:10CFF0008D0950928E0960928F09709290090E945B
-:10D0000045CD7ACFAF92BF92CF92DF92EF92FF924F
-:10D010000F931F93CF93DF9300D01F92CDB7DEB74E
-:10D020007C015B01D42E890181E080939A06809176
-:10D03000A21782FF08C087FD06C08B7F8093A217CE
-:10D0400082E080939A060E94FFBB80E1E6E7F2E06F
-:10D05000AFE7B8E001900D928A95E1F70F941711B0
-:10D06000C82E0E947F8F20E030E0A901F701608187
-:10D070007181828193810F94B1398823A1F08091CD
-:10D0800051090E940CCD81110EC080E090E0A0E714
-:10D09000B2E489839A83AB83BC83BE016F5F7F4F09
-:10D0A000C7010E944EB5C11004C0B50180E00E94C6
-:10D0B0007C2A20E030E0A901F80160817181828141
-:10D0C00093810F94B139882329F042E06D2DC80176
-:10D0D0000E9457E70E9445CD81E00F900F900F907E
-:10D0E0000F90DF91CF911F910F91FF90EF90DF9004
-:10D0F000CF90BF90AF900895CF92DF92EF92FF92C2
-:10D10000CF93DF936B017C01D42FC091500983E052
-:10D110008093500981E080934F09C114D104E10448
-:10D12000F10431F00F941E1DC60ED71EE81EF91E25
-:10D1300080914F09882389F0C114D104E104F104DE
-:10D1400021F48D2F0E94EADDF3CF0F941E1D6C1980
-:10D150007D098E099F0997FDF4CF10924F098091A8
-:10D16000FF0382FF07C062E370E080E090E00E946E
-:10D1700021CDF5CFC0935009DF91CF91FF90EF9073
-:10D18000DF90CF9008951F93CF93DF93D82FC62FB2
-:10D190000E9466DA61E08C2F0E9425CC0F941E1D40
-:10D1A000685370458F4F9F4F60931E0670931F0604
-:10D1B0008093200690932106109222060F941E1D44
-:10D1C000685370458F4F9F4F6093230670932406DA
-:10D1D00080932506909326061092270610915009F9
-:10D1E00083E08093500981E080934F0980914F093B
-:10D1F000882309F46BC060E08C2F0E9425CC8091BD
-:10D200002206811105C080912706882309F45AC09F
-:10D210004091510960E08AE00E94092E0E940FD8D7
-:10D2200087EC9AE20E94ACCE41E060E070E0CB0176
-:10D230000E947CE810921E0610921F061092200693
-:10D24000109221061092220680E00E949ACC109241
-:10D25000230610922406109225061092260610929C
-:10D26000270681E00E949ACC60E080E00E946FE592
-:10D270008D2F0E9466DA0F941E1D685370458F4FE4
-:10D280009F4F60931E0670931F0680932006909315
-:10D290002106109222060F941E1D685370458F4F71
-:10D2A0009F4F6093230670932406809325069093E6
-:10D2B00026061092270681E080934F0961E08C2FAB
-:10D2C0000E9425CC81E00E94EADD90CF10935009A6
-:10D2D000DF91CF911F910895AF92BF92CF92DF92CD
-:10D2E000EF92FF920F931F93CF93DF93CDB7DEB7EB
-:10D2F000A0970FB6F894DEBF0FBECDBF0E9413D823
-:10D30000182F87FD30C1482F61E081E00E94092E6F
-:10D31000B0905109812F012E000C990BB8161906F7
-:10D3200021F060E0812F0E947DB585E40E94D1C983
-:10D33000C12CD12CE12C90E4F92E882379F00E94A5
-:10D34000A7C96B017C0120E030E0A9010F9468407F
-:10D3500087FF04C0F7FAF094F7F8F094F7FAF09426
-:10D36000F7F8F094C98EDA8EEB8EFC8E8CE0E7E550
-:10D37000F3E0DE01119601900D928A95E1F788E5C0
-:10D380000E94D1C9882339F088E50F9484126983FB
-:10D390007A838B839C8389E50E94D1C9882339F0E5
-:10D3A00089E50F9484126D837E838F8398878AE545
-:10D3B0000E94D1C9882339F08AE50F9484126987C5
-:10D3C0007A878B879C8700915109E02EF12C8CE0A5
-:10D3D000089F800111240259194FF80120813181E1
-:10D3E0004281538169817A818B819C810F94083EAF
-:10D3F00069837A838B839C83F801248135814681FC
-:10D4000057816D817E818F8198850F94083E6D8351
-:10D410007E838F839887F8012085318542855385E7
-:10D4200069857A858B859C850F94083E69877A8704
-:10D430008B879C87F70183E0EE0FFF1F8A95E1F74A
-:10D44000E752FA4FC080D180E280F38085E50E94E8
-:10D45000D1C9882321F00E94A7C96B017C0120E07B
-:10D4600030E0A901C701B6010F94684087FF04C0EE
-:10D47000F7FAF094F7F8F094F7FAF094F7F8F094DC
-:10D48000CD8EDE8EEF8EF8A26AE070E082E40E941C
-:10D49000C4CAA82E80919A0681115DC09E01235EA8
-:10D4A0003F4F41E0BE016F5F7F4FCE0149960E9422
-:10D4B00002E8882309F44FC06A2D81E00E94C3E886
-:10D4C00070E060E082E50E94C4CA8C0180E090E0D8
-:10D4D000A8E4B2E48D8B9E8BAF8BB88FE09151099D
-:10D4E00088E0E89FF0011124E752FA4FC480D5800C
-:10D4F000E680F7808CE40E94D1C9882321F00E9445
-:10D50000A7C96B017C0120E030E0A901C701B60189
-:10D510000F94684087FF04C0F7FAF094F7F8F0948E
-:10D52000C98ADA8AEB8AFC8A80E090E0A0EAB2E459
-:10D530008D879E87AF87B88B80919A06882359F094
-:10D540002A2DAE014B5E5F4FBE016F5E7F4FCE0155
-:10D550000D960E94ECE5809151098B1521F060E059
-:10D560008B2D0E947DB5A0960FB6F894DEBF0FBE3E
-:10D57000CDBFDF91CF911F910F91FF90EF90DF9082
-:10D58000CF90BF90AF900895CF92DF92EF92FF922D
-:10D590000F931F93CF93DF93CDB7DEB76C970FB682
-:10D5A000F894DEBF0FBECDBF8CE40E94D1C98823A2
-:10D5B00009F4F1C00E94A7C96B017C0120E030E0B2
-:10D5C000A9010F94684087FF04C0F7FAF094F7F8B8
-:10D5D000F094F7FAF094F7F8F094C98EDA8EEB8EA7
-:10D5E000FC8E8CE0E7E5F3E0DE01119601900D92F0
-:10D5F0008A95E1F788E50E94D1C9882389F088E5FA
-:10D600000F94841220916D0F30916E0F40916F0F27
-:10D610005091700F0F94073E69837A838B839C83AC
-:10D6200089E50E94D1C9882389F089E50F94841285
-:10D630002091710F3091720F4091730F5091740FC0
-:10D640000F94073E6D837E838F8398878AE50E94BF
-:10D65000D1C9882339F08AE50F94841269877A87C3
-:10D660008B879C87F09051098CE0F89E80011124F3
-:10D670000259194FF801208131814281538169811A
-:10D680007A818B819C810F94083E69837A838B8396
-:10D690009C83F80124813581468157816D817E818B
-:10D6A0008F8198850F94083E6D837E838F83988742
-:10D6B000F801208531854285538569857A858B857A
-:10D6C0009C850F94083E69877A878B879C87809119
-:10D6D000A21782FB112710F982FF05C087FB1127D3
-:10D6E00010F981E018274F2D61E080E00E94092E9B
-:10D6F00060E080E50E94E1CA082F1D861E861F8615
-:10D70000188A80919A06811137C09E01235F3F4F8E
-:10D71000402FBE016F5F7F4FCE0149960E9402E805
-:10D72000882351F1112311F0002331F160E080E0F2
-:10D730000E94C3E8898D9A8DAB8DBC8DB0588D8BBE
-:10D740009E8BAF8BB88F198A1A8A1B8A1C8A1D86FA
-:10D750001E861F86188A80919A06882369F010E039
-:10D7600000E020E0AE014B5E5F4FBE016F5E7F4F79
-:10D77000CE010D960E94ECE56C960FB6F894DEBFD4
-:10D780000FBECDBFDF91CF911F910F91FF90EF9012
-:10D79000DF90CF900895C12CD12CE12C80E4F82E9D
-:10D7A00018CF2F923F924F925F926F927F928F92FB
-:10D7B0009F92AF92BF92CF92DF92EF92FF920F9320
-:10D7C0001F93CF93DF93CDB7DEB7CD58D1090FB6F6
-:10D7D000F894DEBF0FBECDBFC357DF4F8883CD584F
-:10D7E000D040C0905009E196CFAEE19721E0209360
-:10D7F00050098091C4088D3409F4E1C4843511F4D2
-:10D800000D94CA00873409F041C10091C2081091FB
-:10D81000C3080531110509F401C308F03AC1043009
-:10D82000110508F02FC1809135090230110508F467
-:10D83000EFC2833008F4F2C233243394023011056E
-:10D8400009F0312C0E94DEC982E50E94D1C98823EB
-:10D8500009F4FDC20E94A7C96B017C0120E030E001
-:10D86000A9010F94B139882309F405C140907602CB
-:10D8700050907702609078027090790220917A023D
-:10D8800030917B0240917C0250917D0228AF39AFEC
-:10D890004AAF5BAF80908A0690908B06A0908C0672
-:10D8A000B0908D0680918E0690918F06A091900683
-:10D8B000B09191068CAF9DAFAEAFBFAFA501940103
-:10D8C000C301B2010F94B13981110DC02CAD3DAD32
-:10D8D0004EAD5FAD68AD79AD8AAD9BAD0F94B139FA
-:10D8E000882309F4C8C0A3019201C501B4010F94B3
-:10D8F000073E20E030E040E05FE30F94173A6CAB66
-:10D900007DAB8EAB9FAB28AD39AD4AAD5BAD6CAD99
-:10D910007DAD8EAD9FAD0F94073E20E030E040E03E
-:10D920005FE30F94173A68AF79AF8AAF9BAF20E0FF
-:10D9300030E0A901C701B6010F94B139881F8827CB
-:10D94000881F381609F47AC220E030E040E85FEB27
-:10D950002CAF3DAF4EAF5FAF2CA93DA94EA95FA93B
-:10D96000CA01B9010F94173A4B015C0128AD39ADDA
-:10D970004AAD5BADCA01B9010F94173A9B01AC01E6
-:10D98000C501B4010F94083E0F94B6404B015C01F1
-:10D99000AC019B01C701B6010F94073E2B013C016E
-:10D9A000A5019401C701B6010F94083E9B01AC018B
-:10D9B000C301B2010F94173A6B017C0120E030E003
-:10D9C000A9010F946840412C512C320187FD06C0FB
-:10D9D000C701B6010F94B6402B013C0168AD79AD8B
-:10D9E0008AAD9BAD9058A50194010F94023F2CADD8
-:10D9F0003DAD4EAD5FAD0F94173AA30192010F9468
-:10DA0000173A2CA93DA94EA95FA90F94083E6B01B6
-:10DA10007C01A50194016CA97DA98EA99FA90F94F1
-:10DA2000023F2CAD3DAD4EAD5FAD0F94173AA30153
-:10DA300092010F94173A28AD39AD4AAD5BAD0F9402
-:10DA4000083E6CAB7DAB8EAB9FAB20E030E0A90114
-:10DA5000C701B6010F94B13981110D941F0120E067
-:10DA600030E0A9016CA97DA98EA99FA90F94B139B5
-:10DA700081110D941F010E940BD88FE99FE20E9433
-:10DA8000ACCECCC10430110509F431C30F94761229
-:10DA9000C5C10A35110509F481C308F048C10B312D
-:10DAA000110509F45EC30C31110581F70F941711AC
-:10DAB000811111C08091BC089091BD08A091BE0851
-:10DAC000B091BF08FEE0B695A79597958795FA9512
-:10DAD000D1F780FDA3C10E947F8F109238020F946E
-:10DAE0001E1D60933B0670933C0680933D06909309
-:10DAF0003E06D090510961E080E00E947DB58091A2
-:10DB0000510290915202A0915302B091540280931D
-:10DB1000910890939208A0939308B09394088091F1
-:10DB20002002909121029093900880938F0884E6C0
-:10DB300090E0909321028093200281E08093E3089B
-:10DB40000E9471B98091BC089091BD08A091BE0857
-:10DB5000B091BF08A7FBFF24F0F80B2F0170B1FBB9
-:10DB6000882780F9F01203C08F1509F412C3182F0B
-:10DB700082E50E94D1C9882311F40D94EB000E9424
-:10DB8000A7C93B014C0120E030E0A9010F94B13955
-:10DB90008823D9F1A0907E02B0907F02C0908002CD
-:10DBA000E090810295014C2D5E2DB301C4010F94CC
-:10DBB000B13987FD03C05301C82CE92C80E090E007
-:10DBC000A0E8B0E48C8F9D8FAE8FBF8F20E030E057
-:10DBD00046E153E4B5018C2D9E2D0F94B13987FD9C
-:10DBE00006C0A12CB12C56E1C52E63E4E62EC5017A
-:10DBF000AC2DBE2D89839A83AB83BC83BE01645E4A
-:10DC00007F4FCE0101960E94C4B4FF2009F45DC08D
-:10DC1000002309F457C010927602109277021092F6
-:10DC200078021092790210927A0210927B0210927E
-:10DC30007C0210927D020E947BB58EED9BE6ADE8E2
-:10DC4000B2E488A799A7AAA7BBA7EBEEF4E1659178
-:10DC500075918591949120E030E040EC5FE30F9462
-:10DC6000173A905869837A838B839C83E7EEF4E1BB
-:10DC7000659175918591949120E030E040EC5FE3EF
-:10DC80000F94173A6C8F7D8F8E8F9F8FAE01485DFA
-:10DC90005F4FBE016F5F7F4FCE014C960E94A2B4D2
-:10DCA0000E94D6BA109276021092770210927802F1
-:10DCB0001092790210927A0210927B0210927C02EA
-:10DCC00010927D0280E00E9459B7002319F081E094
-:10DCD0000E9459B7112319F082E00E9459B70E949F
-:10DCE0007BB58091E2088093E30880919108909140
-:10DCF0009208A0919308B091940880935102909358
-:10DD00005202A0935302B093540280918F089091D5
-:10DD10009008909321028093200261E08D2D0E9453
-:10DD20007DB583E0809375020E94BBB877C00B3548
-:10DD3000110509F436C20C35110509F0A7CE4CE9DE
-:10DD4000C42E42E0D42EF12CE12C00E010E0D601EC
-:10DD50008D916D010E94D1C9382E882309F448C0E5
-:10DD60000E94A7C94B015C01133059F0F701E35938
-:10DD7000F04F20813181428153810F94073E4B0146
-:10DD80005C01F701EA58FD4F2081318142815381C6
-:10DD9000C501B4010F94073E2B013C012DEB37E385
-:10DDA00046E855EB0F94684087FD0AC02DEB37E33A
-:10DDB00046E855E3C301B2010F94B1391816C4F413
-:10DDC000133009F4F2C1F701E655FA4F5F01A301E0
-:10DDD000920160817181828193810F94083ED50107
-:10DDE0006D937D938D939C931397812F0E94FAB22C
-:10DDF0001F5FB4E0EB0EF11C143009F0A8CF002334
-:10DE000021F082E892E00E9498B10E94BBB806C05F
-:10DE1000833020F00E94DEC90E94C2B3C357DF4F97
-:10DE2000C880CD58D040C11002C00E9491CFE19669
-:10DE3000DFACE197D09250090C944AF780E090E073
-:10DE4000A0E8BFE38CAF9DAFAEAFBFAF85CD89E497
-:10DE50000E94D1C9C12CD12C7601882321F00E94C7
-:10DE6000A7C96B017C018AE40E94D1C9882311F4FF
-:10DE70000D9410010E94A7C9E4CD28962CAD3DADAC
-:10DE80004EAD5FAD289768AD79AD8AAD9BAD0F946F
-:10DE9000173A6B017C012C962CAD3DAD4EAD5FADBC
-:10DEA0002C976CAD7DAD8EAD9FAD0F94173A9B0155
-:10DEB000AC01C701B6010F94083E6B017C012C96A2
-:10DEC0002CAD3DAD4EAD5FAD2C9768AD79AD8AAD53
-:10DED0009BAD0F94173A4B015C0128962CAD3DADDC
-:10DEE0004EAD5FAD28976CAD7DAD8EAD9FAD0F94FF
-:10DEF000173A9B01AC01C501B4010F94073EA7017D
-:10DF000096010F94873E6B017C0120E030E0A9016F
-:10DF10000F94B139882311F40D94B60520E030E058
-:10DF2000A901C701B6010F94B13987FF2CC082E067
-:10DF300090E083298130910549F1029791F120E029
-:10DF400030E0A901C701B6010F94684026013701EE
-:10DF500087FF04C077FA709477F870942BED3FE058
-:10DF600049EC50E4C301B2010F94023F20E030E0DD
-:10DF700040E952E40F94173A0F94E63E0F947B3F2A
-:10DF80008B010D94040290E080E0D3CF2BED3FE0B5
-:10DF900049EC50E4C701B6010F94073E6B017C01C8
-:10DFA000CECF2BED3FE049EC50E4C701B6010F9412
-:10DFB000083EF4CF08E410E0BBED4B2EBFE05B2E33
-:10DFC000B9EC6B2EB0E47B2E730162010D94040258
-:10DFD0002DEC3CEC4CEC5DE3C201B1010F94B13986
-:10DFE00087FF28C02DEC3CEC4CEC5DE321966FAD37
-:10DFF000219725967FAD259729968FAD2997659610
-:10E000009FAD65970F94023F0F94AA3F2B013C01EF
-:10E0100020E030E040E85FE30F94B13987FF06C0AD
-:10E02000412C512CA0E86A2EAFE37A2EC301B20135
-:10E030000D94D102B301C8010D94D1026796CEAC04
-:10E04000DFAC6797B60190E080E00F94B6396F9629
-:10E050002CAD3DAD4EAD5FAD6F970F94173A4B01B0
-:10E060005C010F94FD3E6B017C01C501B4010F946E
-:10E07000A8404B015C01A701960168AD79AD8AAD5E
-:10E080009BAD0F94173A2B013C01A50194016CA99B
-:10E090007DA98EA99FA90F94173A9B01AC01C301DA
-:10E0A000B2010F94083E2B013C01A501940168AD1B
-:10E0B00079AD8AAD9BAD0F94173A4B015C01A70176
-:10E0C00096016CA97DA98EA99FA90F94173A9B016F
-:10E0D000AC01C501B4010F94073E6CAF7DAF8EAFAC
-:10E0E0009FAF29E1A0962FAFA0970D94BA0480E5C9
-:10E0F0000E94D1C9C12CD12C7601882321F00E9425
-:10E1000037C76B017C0183E50E94D1C9882361F088
-:10E110000E94A7C920E030E04AE754E40F94173A80
-:10E120000F947B3F6B017C010E947F8F80911912BD
-:10E13000811105C060E085EB9FE20E941D3B0F94BA
-:10E140001E1DC60ED71EE81EF91E0F941E1D6C194B
-:10E150007D098E099F0997FF61CE80E00E94EADD6C
-:10E16000F4CF0F943211811159CE8CE0E3E6F3E045
-:10E17000DE01119601900D928A95E1F770E060E062
-:10E1800080E50E94D3CABE016F5F7F4F0E947C2A48
-:10E1900045CEFF24F39401E011E0EACC1092A108EF
-:10E1A0003DCE8FE08093A10839CE8092820290927A
-:10E1B0008302A0928402B0928502032D19CE809131
-:10E1C000C2089091C3088837910511F40C9480F926
-:10E1D00008F097C18E34910509F4B5C508F0FDC06B
-:10E1E0008931910509F4ABC408F094C084319105DC
-:10E1F00009F44DC408F05EC08131910509F4F7C3FC
-:10E2000098F5029708F042CC80E50E94D1C9C12C54
-:10E21000D12C7601882321F00E9437C76B017C0145
-:10E2200083E50E94D1C9882361F00E94A7C920E03C
-:10E2300030E04AE754E40F94173A0F947B3F6B01A8
-:10E240007C010E947F8F8091C0089091C108009747
-:10E2500009F4C7C30F94450E40E0C701B6010E9400
-:10E260007CE80F948E10DACD429709F00FCC83E54D
-:10E270000E94D1C9882309F401C70F941E1D609321
-:10E280003B0670933C0680933D0690933E060E94A9
-:10E29000A7C920E030E04AE754E40F94173A0F94FE
-:10E2A0007B3F60935A0270935B0280935C02909371
-:10E2B0005D02B4CD8631910509F41BC408F416C47F
-:10E2C0008731910509F41EC4489709F0DFCB80918E
-:10E2D0009A06882309F428C480E090E0A8E4B2E418
-:10E2E00088A799A7AAA7BBA71C8E1D8E1E8E1F8E5E
-:10E2F00019821A821B821C8210E000E020E0AE012D
-:10E30000485D5F4FBE01645E7F4FCE0101960E9463
-:10E31000ECE584CD8E31910509F490C498F48B31ED
-:10E32000910509F42AC408F40DC48C31910509F44F
-:10E330007EC44D9709F0AACB8091A2178E7F80935F
-:10E34000A2176CCD8B34910509F4F7C4D0F58F3149
-:10E35000910509F4D7C4809709F098CB8091A21752
-:10E3600082FF03C087FF0E947F8F8091A21784FFE6
-:10E3700055CD60E080E50E94E1CA182F682F80919A
-:10E38000C0089091C1080E945EBE83E50E94D1C979
-:10E39000882381F00E9447C7AB01BC0140939E17C0
-:10E3A00050939F176093A0177093A11780E594E195
-:10E3B0000E94827C0E949279111130CD0E94A6BBEE
-:10E3C0002DCD8C34910509F4BBC48D34910509F031
-:10E3D0005DCB81E00E9416BB21CD8C36910509F4FE
-:10E3E00016C608F059C08535910509F485C638F57B
-:10E3F0008235910509F432C6C8F48135910509F0DA
-:10E4000045CB0E9447B70E9497CD0E94B48581E01A
-:10E410000E9416BB68EE73E080E090E00E9421CD80
-:10E4200060E089E091E30E941D3BF8CC83359105C3
-:10E4300009F41CC68435910509F419CF27CB893618
-:10E44000910509F413C560F48C35910509F479C67A
-:10E450008836910509F01ACB80E00E9439D8DECCCD
-:10E460008A36910509F430C58B36910509F00ECB3B
-:10E470001091510980E50E94D1C9811172C5812F87
-:10E4800090E01816190614F481E090E0E82FF0E00F
-:10E49000EE52FA4F1082C2CC8137910509F4BDC506
-:10E4A000A8F48E36910509F463C508F4DAC48F36F2
-:10E4B000910509F470C58037910509F0E7CA41E07C
-:10E4C00070E060E084EF90E30E94E2DC8537910524
-:10E4D00009F4CBC658F48237910509F4BEC68337D8
-:10E4E000910509F0D3CA0E94D3CE98CC8637910506
-:10E4F00009F4CBC68737910509F0C8CA0E9456B9FE
-:10E500008DCC8D32E1E09E0711F40C94C9FC08F02B
-:10E51000F4C08B3C910511F40C94E5FA08F064C04A
-:10E520008139910509F4FCC698F48A37910511F4F4
-:10E530000C94DCFF08F4ECC68D37910509F4FFC29A
-:10E540008C38910509F0A2CA80E00E94A1E366CC54
-:10E550008E3B910509F47DC568F58639910509F46E
-:10E5600058C78B39910509F091CA83E50E94D1C93A
-:10E57000882309F453CC0E945BC7182F8C3308F012
-:10E580008CE3809399080F941E1D6B017C01212F51
-:10E5900030E0A8EEB3E00F94F83DC60ED71EE81E9B
-:10E5A000F91EC0929508D0929608E0929708F092D2
-:10E5B000980834CC883C910509F465C7893C9105DD
-:10E5C00009F064CA8091BC0884FDD4C78091BE085C
-:10E5D000887809F0CFC78091BF08837009F0CAC757
-:10E5E00081E00E943AD61ACC893D910511F40C9431
-:10E5F0000EFCA0F48D3C910511F40C946EFB10F40C
-:10E600000C9419FB8E3C910511F40C94DBFB833DBB
-:10E61000910509F03BCA0E94B5CF00CC8D3D910514
-:10E6200011F40C9471FC08F04AC08A3D910511F474
-:10E630000C9422FC8C3D910509F028CA82E40E94CA
-:10E64000D4C5882341F080912002909121029093BB
-:10E650005F0280935E0282E50E94D4C5882341F068
-:10E6600080915E0290915F0290932102809320023C
-:10E6700083E50E94D1C9882331F00E9457C7909347
-:10E680002102809320028091BC089091BD08A09146
-:10E69000BE08B091BF08892B8A2B8B2B09F0BECB0B
-:10E6A000609120027091210286E691E30E9487DA50
-:10E6B00085E20E949FCE8AE00E949FCEAFCB8A3F28
-:10E6C000910511F40C9427FD8C32914009F0DEC9BC
-:10E6D00064E071E083E50E94D3CA8C0168EE73E0C8
-:10E6E00080E50E94D3CA8938B3E19B0710F088E81F
-:10E6F00093E1B8010E948D2B91CB8C3032E09307CF
-:10E7000011F40C9448FE08F04CC08C3A51E0950787
-:10E7100011F40C947AFDB0F48F32B1E09B0711F440
-:10E720000C9472FD10F40C942CFD8039F1E09F07DD
-:10E7300011F40C9476FD8A39914009F0A7C90E9422
-:10E7400039B86CCB863F31E0930711F40C943AFE54
-:10E7500068F4843F51E0950711F40C9436FE853F30
-:10E76000914009F093C90E940FC558CB873FB1E093
-:10E770009B0711F40C943EFE883F914009F086C936
-:10E7800081E0809302060E9403C51092020688234E
-:10E7900009F444CB0E940FD88FEE91E30E94ACCED7
-:10E7A0003DCB8E3BF2E09F0711F40C9405FF08F07F
-:10E7B000F8C0883532E0930711F40C945EFE38F40B
-:10E7C0008933924009F062C90E940EDB27CB8B355A
-:10E7D000A2E09A0711F40C9462FE8D3B924009F07E
-:10E7E00055C90E9413D8082F87FD18CB8AE50E94CF
-:10E7F000D1C9882311F40C94EFFE8AE50F9484129A
-:10E80000762E872E982EC92E402F63E085E00E9439
-:10E81000092E10915109A02E002E000CBB081A15CC
-:10E820001B0421F060E0802F0E947DB520917E02C4
-:10E8300030917F02409180025091810260E070E04F
-:10E8400086E193E40F94073ED62EE72EF82E092F8B
-:10E85000272D382D492D5C2D0F94684018161CF477
-:10E86000D72C74010C2D8D2D9E2DAF2DB02F88AB84
-:10E8700099ABAAABBBAB20E030E0A9016D2D7E2D9A
-:10E880008F2D902F0F94B139882321F0CE01C0969F
-:10E890000F94862780E090E0A8E4B2E48CA79DA7BF
-:10E8A000AEA7BFA780E090E0A0EAB2E488A799A74E
-:10E8B000AAA7BBA78CE40E94D1C9882311F40C94A9
-:10E8C000F7FE0E94A7C96B017C0120E030E0A9019E
-:10E8D000C701B6010F94684087FF04C0F7FAF094AF
-:10E8E000F7F8F094CC8EDD8EEE8EFF8E87E18A9D58
-:10E8F000F0018B9DF00D1124E15CF94FE084F1846F
-:10E9000034E0E316F104BCF020E030E040E05FE3E7
-:10E9100064817581868197810F94083E0F94743FBE
-:10E920006E197F0977FF03C071956195710901E048
-:10E93000643071050CF400E053E0E52E2AE0AE01EE
-:10E94000445D5F4FBE01645E7F4FCE0188960F9499
-:10E950008D1268A979A98AA99BA96B017C01F7FA94
-:10E96000F094F7F8F094C982DA82EB82FC8220E01E
-:10E9700030E0A9010F94B139882321F0CE0101962E
-:10E980000F94862780915109181721F060E0812F9C
-:10E990000E947DB580915109809300040E945E2DF4
-:10E9A0003DCA803AE3E09E0709F49FC168F48A38C3
-:10E9B00023E0920711F40D942B008739934009F05E
-:10E9C00065C80E94AED62ACA873E43E0940711F478
-:10E9D0000D94BA00893E934009F058C80F9434064C
-:10E9E0001DCA60E08EEB9FE20E941D3B35CC0E9469
-:10E9F000C3C58823B9F185E40E94D4C5882361F09A
-:10EA000080919E0890919F08892B39F10E9457C7E9
-:10EA1000823010F40E94048A3CE9E32E32E0F32EA7
-:10EA200010E0D7012D917D0121548091BC08909177
-:10EA3000BD08A091BE08B091BF0804C0B695A795C7
-:10EA4000979587952A95D2F780FF03C0812F0E9462
-:10EA5000138A1F5F133029F7E1C980E00E94D8872D
-:10EA600081E0D8CF60E081ED9FE20E941D3B80E015
-:10EA70000E94138A81E00E94138A82E00E94138A16
-:10EA800080E00E94D88781E00E94048AC7C98091F3
-:10EA9000A21784FF24C089EE9FE20E94ACCE809131
-:10EAA000A21784FF17C084EA94E10E945F808BE183
-:10EAB000E4EAF4E1DE01119601900D928A95E1F706
-:10EAC00070E060E0CE0101960E94D6BFCE010196B3
-:10EAD0000E9464808AED9FE20E94ACCE9FC90E9492
-:10EAE0000FD88AEF9FE20E94ACCE98C90E948F7E19
-:10EAF00095C98091A21782FF02C087FF8FC90E942B
-:10EB0000777E8CC98091C0089091C108FC01219149
-:10EB1000222331F02032D9F7DF0111971C92F7CF71
-:10EB200060E00E945EBE7AC90E9473CD882321F006
-:10EB30000E9492790E94A6BB0F948E106FC90E940A
-:10EB4000C4EA6CC98091A21784FF68C983E50E945A
-:10EB5000D1C9882309F462C90E9447C7AB01BC012F
-:10EB600040939E1750939F176093A0177093A1171F
-:10EB700080E594E10E94827C51C98091BC0890910B
-:10EB8000BD08A091BE08B091BF0822E0B695A79538
-:10EB9000979587952A95D1F780FF1CC08EE090E36A
-:10EBA0000E94ACCE80915314882379F0BE016F5F30
-:10EBB0007F4F80E594E10E94F77ECE0101960F948D
-:10EBC000D6268AE00E949FCE29C984E090E30E9465
-:10EBD000ACCEF7CF8091A21782FF24C0C0909E17C1
-:10EBE000D0909F17E090A017F090A1178DE190E3CF
-:10EBF0000E94ACCEC701B6010F94C00D8FE20E94F7
-:10EC00009FCE60919A1770919B1780919C1790915D
-:10EC10009D170F94C00D8DE00E949FCE8AE00E9448
-:10EC20009FCEFCC88FE290E30E94ACCEF7C88091E3
-:10EC3000C0089091C1080E948CBFF0C88091A217B3
-:10EC400084FFECC80F945F128091A21784FFE6C87E
-:10EC50004091C0085091C108BE01645E7F4F80E0C2
-:10EC60000F94BD0C8C01009709F4D8C86C8D7D8D74
-:10EC700019821C8222E0AC01CE0101960E946A80BA
-:10EC8000811115C0F12CCE0101960E946480B8015B
-:10EC9000FF2011F18BE590E30F94E22610929E176E
-:10ECA00010929F171092A0171092A117B7C8CE010B
-:10ECB00001960F94290C882329F361E0CE01019677
-:10ECC0000E940F7E0097F1F225EEFC0120831C824A
-:10ECD0000E94287AF82ED7CF83E490E30E94E0DDEB
-:10ECE00080E490E30E94ACCE99C82091C008309196
-:10ECF000C1089091A21792609093A217C9010E9437
-:10ED00008CBF8CC80E94E4BA6C8F7D8F8E8F9F8FD2
-:10ED1000BE016F5F7F4FCE014C960E9458C6CE0158
-:10ED200001960F94450E0E940FD8BE016F5F7F4F72
-:10ED300089E690E30F94E22671C80E94A6BB6EC8D4
-:10ED40000E94FFBB6BC870E060E083E50E94C4CA0C
-:10ED50008E34910529F40E94DE8E0F948E105EC8C9
-:10ED600084ED90E30E94ACCE6091D2087091D308FC
-:10ED70008BEC90E30E947BDA6091D4087091D50807
-:10ED80008EEB90E30E947BDA6091D2087091D308F9
-:10ED90008091D4089091D508681B790B8091860FDB
-:10EDA000815021E030E0823010F030E020E0621B42
-:10EDB000730B83EB90E30E9404DB8BEA90E30E94E9
-:10EDC000ACCE8091D6089091D708A091D808B09188
-:10EDD000D9088C8F9D8FAE8FBF8FBE016F5F7F4F25
-:10EDE000CE014C960E9458C6BE016F5F7F4F8EE9E0
-:10EDF00090E30E94E0DD8091DA089091DB08A09119
-:10EE0000DC08B091DD088C8F9D8FAE8FBF8FBE0167
-:10EE10006F5F7F4FCE014C960E9458C6BE016F5F58
-:10EE20007F4F8EE890E30E94E0DD20E030E04AE78B
-:10EE300054E46091DE087091DF088091E0089091C1
-:10EE4000E1080F94023FAB01BC0186E790E30E940A
-:10EE5000A4CF8DE60E949FCE8AE00E949FCE0C94A4
-:10EE60000EEF81E00E9439D80C940EEF0E9413D867
-:10EE7000182F87FD0AC08CED90E30E94ACCE812F45
-:10EE80000E949E848AE00E949FCEE196CFACE197DB
-:10EE9000C0925009C357DF4F0FB6F894DEBF0FBEC4
-:10EEA000CDBFDF91CF911F910F91FF90EF90DF9039
-:10EEB000CF90BF90AF909F908F907F906F905F901A
-:10EEC0004F903F902F9008951091510980E50E9436
-:10EED000D1C981113EC0812F90E01816190614F493
-:10EEE00081E090E0182F8091BC08EE24EA94F12C88
-:10EEF00080FF08C0E0915109F0E0EE52FA4F6081C6
-:10EF0000E62EF12C89E40E94D1C9882311F40D94D6
-:10EF1000F9000E945BC790E01816190614F481E00E
-:10EF200090E026E0289FF001299FF00D1124EE507B
-:10EF3000FA4FE480F580E12FF0E0EE52FA4FB7018E
-:10EF40006F3F710519F010F06FEF70E060830C9463
-:10EF50000EEF0E945BC7182F823010F00C940EEF5A
-:10EF6000C2CF0E945BC7823010F00C940EEF8ECAA5
-:10EF70008EE40E94D1C9882311F40C940EEF0E94F4
-:10EF800047C760930E1070930F10809310109093EA
-:10EF900011100C940EEF83E50E94D1C9882321F053
-:10EFA0000E945BC78093D4050E940FD88DEE90E33A
-:10EFB0000E94ACCE8091D405882331F110E000E0AE
-:10EFC00020E08091D40590E0002E02C095958795B1
-:10EFD0000A94E2F780FF12C0FF24F394F20E22237A
-:10EFE00019F08CE20E949FCEF801EE0FFF1FED5149
-:10EFF000FF4C859194910E94ACCE2F2D0F5F1F4F37
-:10F0000005301105F1F6DDCD8FED90E3E0CD1092E6
-:10F010004F09109274020C940EEF83E50E94D1C93F
-:10F02000882369F00E945BC78D3320F480935902D6
-:10F030000C940EEF8CE3809359020C940EEF0E9417
-:10F040000FD86091590282E091E30E947FD60C9420
-:10F050000EEF81E00E94A1E30C940EEF8091A108D5
-:10F060008F7D80618093A1080C940EEF8091A108A0
-:10F070008F7E80628093A1080C940EEF0E94C3C51E
-:10F080008823B1F10E947F8F85E40E94D4C5882334
-:10F0900051F080919E0890919F08892B31F10E9438
-:10F0A00057C70E94E489BCE9EB2EB2E0FB2E10E0CA
-:10F0B000D7012D917D0121548091BC089091BD080C
-:10F0C000A091BE08B091BF0804C0B695A7959795CA
-:10F0D00087952A95D2F780FF03C0812F0E9400B741
-:10F0E0001F5F133029F70C940EEF0E94FE89DBCFCF
-:10F0F0000E9447B70C940EEF83E50E94D4C5882385
-:10F1000011F40C940EEF0F941E1D60933B06709348
-:10F110003C0680933D0690933E060E94A7C920E0DE
-:10F1200030E04AE754E40F94173A0F947B3F609322
-:10F130009A0870939B0880939C0890939D080C9468
-:10F140000EEF0E9413D887FF02C00C940EEF80913F
-:10F15000BC0884FD09C08091BE0887FD05C0809170
-:10F16000BF08837009F474C0FCE9CF2EF2E0DF2EF3
-:10F17000A5E5EA2EA9E0FA2E10E0F60181916F01D3
-:10F180000E94D1C9882359F0133099F00E94A7C971
-:10F19000D70154966D937D938D939C9357971F5FE2
-:10F1A000B4E0EB0EF11C143041F70E945B8F0C941D
-:10F1B0000EEF0E94A7C94B015C0120E030E040EA5D
-:10F1C00051E40F94B13987FF3AC0A50194016091D1
-:10F1D00075097091760980917709909178090F945B
-:10F1E000023F2B013C01AC019B01609185097091AC
-:10F1F000860980918709909188090F94173A609346
-:10F200008509709386098093870990938809609196
-:10F21000CA057091CB058091CC059091CD050F94D6
-:10F22000B639A30192010F94173A0F947B3F609374
-:10F23000CA057093CB058093CC059093CD05809241
-:10F24000750990927609A0927709B0927809A7CFB4
-:10F2500081E00F9432120C940EEF0F94B2108FE1F4
-:10F2600096E10E94E6870C940EEF8091C008909181
-:10F27000C108009709F460CCFC012081222309F425
-:10F280005BCC0F94450E0C940EEF0091C0081091CA
-:10F29000C10894E0F12C40E0915009F1D8018C9123
-:10F2A000282F2B7F2134A1F411962C912133B9F40E
-:10F2B000813419F1853409F441E098012E5F3F4F04
-:10F2C00089012F5F3F4FD8018C918032C9F3E4CF81
-:10F2D000803529F4F801818180538A3070F341111F
-:10F2E0000E940FD8FF2021F082E291E30E94ACCE71
-:10F2F000C8010E9425C50C940EEFFF24F394DDCFC6
-:10F300002093E3082093E2080E9471B90C940EEF59
-:10F310001092E3081092E2080E9471B90C940EEF6B
-:10F3200070E060E083E50E94C4CA823040F00E9431
-:10F330000BD885E291E30E94ACCE0C940EEF8C01C9
-:10F34000112788E40E94D1C98823C1F00E9457C7C1
-:10F350008A3A91050CF44BC00E9457C7863F91052D
-:10F360000CF048C00E9457C726E0209FF001219F63
-:10F37000F00D1124EE50FA4F9183808382E40E94B5
-:10F38000D1C98823A9F00E9457C70597B4F10E94FC
-:10F3900057C785369105A4F50E9457C726E0209FE0
-:10F3A000F001219FF00D1124EE50FA4F93838283D8
-:10F3B00086E40E94D1C9882311F40C940EEF0E94B8
-:10F3C00057C797FD20C00E9457C78F3F910509F08E
-:10F3D000ECF40E9457C726E0209FF001219FF00D1A
-:10F3E0001124EE50FA4F958384830C940EEF8AEA31
-:10F3F00090E0BACF85EF90E0B7CF85E090E0CECF38
-:10F4000084E690E0CBCF90E080E0E5CF8FEF90E016
-:10F41000E2CF82E40E94D4C510E0882351F08091AD
-:10F420009E0890919F081FEF892B19F00E945BC7DF
-:10F43000182F85E50E94D4C500E0882351F0809103
-:10F440009E0890919F080FEF892B19F00E945BC7CF
-:10F45000082F82E50E94D4C5882389F080919E08F8
-:10F4600090919F08892B69F00E945BC789830A836A
-:10F470001B83CE0101960E94F6CA0C940EEF80E029
-:10F48000F5CF8FEFF3CF8091BC0883FD09C0809149
-:10F49000BE088C7029F481E00E9415DA0C940EEFFE
-:10F4A0000E9413D8182F87FF02C00C940EEFF09023
-:10F4B000F10584E40E94D1C9082F882309F456C0BD
-:10F4C0000E94A7C96B017C0120E030E0A9010F94E4
-:10F4D000B139882309F44CC0B4E01B02F0011124B7
-:10F4E000E751FA4FC082D182E282F38220E030E01D
-:10F4F000A9016091E9057091EA058091EB05909171
-:10F50000EC050F94B13981110CC080E090E0A0EEC1
-:10F51000BFE38093E9059093EA05A093EB05B093D0
-:10F52000EC0520E030E0A9016091ED057091EE0559
-:10F530008091EF059091F0050F94B13981110CC0C5
-:10F5400080E090E0A0EEBFE38093ED059093EE05A0
-:10F55000A093EF05B093F005602F83E50E94E1CA08
-:10F560008093F1050E94E7710C940EEF0F2DF4CFFC
-:10F5700080E0F6CF0E9413D887FF02C00C940EEFF4
-:10F580000CE912E075E5E72E79E0F72EE0EACE2EE1
-:10F59000E2E0DE2EF80181918F010E94D1C988231B
-:10F5A00061F00E94A7C90F947B3FD7016D937D93B3
-:10F5B0008D939C9313970E940D8FB4E0EB0EF11C7A
-:10F5C000C016D10639F70C940EEF8091BC0884FD6B
-:10F5D0000DC08091BE08887849F48091BF0883707F
-:10F5E00029F481E00E9410D60C940EEF0E9413D8EB
-:10F5F00087FF02C00C940EEF6CE9E62E62E0F62E57
-:10F6000010E000E0F70181917F010E94D1C98823B9
-:10F6100049F00E94A7C9F801EB5AF64F64A375A3FD
-:10F6200086A397A30C5F1F4F0031110559F70C9467
-:10F630000EEF8091BD0887FD09C08091BE088E70D5
-:10F6400029F481E00E94EED50C940EEF83E50E9430
-:10F65000D1C9882391F00E94A7C96093890970934A
-:10F660008A0980938B0990938C0960939109709318
-:10F670009209809393099093940980E50E94D1C9DF
-:10F68000882351F00E94A7C96093890970938A0961
-:10F6900080938B0990938C0982E50E94D1C98823BD
-:10F6A00051F00E94A7C960938D0970938E098093D1
-:10F6B0008F099093900984E50E94D1C9882311F4A1
-:10F6C0000C940EEF0E94A7C9609391097093920960
-:10F6D00080939309909394090C940EEF8091BC0849
-:10F6E00081FD0DC08091BD0881FD09C08091BE08DB
-:10F6F0008C7029F481E00E94B6D50C940EEF82E460
-:10F700000E94D1C9882351F00E9437C760936509D0
-:10F7100070936609809367099093680983E50E9456
-:10F72000D1C9882351F00E94A7C9609395097093AD
-:10F730009609809397099093980984E50E94D1C90E
-:10F74000882351F00E94A7C96093990970939A0980
-:10F7500080939B0990939C098AE40E94D1C98823D5
-:10F7600011F40C940EEF0E94A7C96B017C012AE0F2
-:10F7700037ED43E25CE30F94684087FD14C02AE94B
-:10F7800039E949E95EE3C701B6010F94B1391816AA
-:10F7900054F0C092FE05D092FF05E0920006F09270
-:10F7A00001060C940EEF0E940BD887E491E30E94AF
-:10F7B000ACCE0C940EEF8091BC089091BD08A09146
-:10F7C000BE08B091BF084CE9C42E42E0D42E56EEDC
-:10F7D000E52E58E0F52E10E0892B8A2B8B2B29F48F
-:10F7E00081E00E9494D50C940EEFD6018D916D01AD
-:10F7F0000E94D1C9882351F00E94A7C9F7016083F4
-:10F80000718382839383812F0E94FAB21F5FF4E099
-:10F81000EF0EF11C133049F70C9405EF8AE50E94B6
-:10F82000D1C9882351F00E94A7C9609386067093BE
-:10F830008706809388069093890681E00E948ED681
-:10F840000C940EEF8091BC089091BD08A091BE0869
-:10F85000B091BF08892B8A2B8B2B29F481E00E9461
-:10F86000E4D90C940EEF0E9413D8182F87FF02C022
-:10F870000C940EEF88E50E94D1C9882361F00E94A4
-:10F88000A7C92CE01202F0011124E259F94F60835C
-:10F8900071838283938389E50E94D1C9882361F0B3
-:10F8A0000E94A7C93CE01302F0011124E259F94F6C
-:10F8B00064837583868397838AE50E94D1C98823F0
-:10F8C00011F40C940EEF0E94A7C94CE01402F00151
-:10F8D0001124E259F94F60877187828793870C94CE
-:10F8E0000EEF0E9413D8082F87FF02C00C940EEF72
-:10F8F00083E50E94D1C9002E000C110B7801EE0C9B
-:10F90000FF1C882361F10E9457C7F701EE5DFD4F90
-:10F9100091838083000F111F000F111FD801AA5D72
-:10F92000BD4F7D01BC01990F880B990B0F94B8391D
-:10F930002AE037ED43E25CE30F94173A0A541A4F7A
-:10F94000F80120813181428153810F94173AD70108
-:10F950006D937D938D939C9313970C940EEF0E945F
-:10F960000FD885E40E949FCE80E3800F0E949FCE37
-:10F97000F701EE5DFD4F608171818AE691E30E949F
-:10F9800087DA85E20E949FCE8AE00E949FCE0C9487
-:10F990000EEF85E40E94D1C9882381F00E945BC7E5
-:10F9A0009091BC0893FD0CC09091BD08917841F4F2
-:10F9B000682F81E00E9493D90C940EEF8FEFF0CF67
-:10F9C0008230ECF580E50E94D1C9882351F00E9475
-:10F9D000A7C960934A0670934B0680934C06909398
-:10F9E0004D0689E40E94D1C9882381F00E94A7C9ED
-:10F9F0002CEA35EC47E25EE30F94173A60934E062B
-:10FA000070934F06809350069093510684E40E94B1
-:10FA1000D1C9882311F40C940EEF0E94A7C92CEAD7
-:10FA200035EC47E25EE30F94023F60935206709319
-:10FA3000530680935406909355060C940EEF0E9443
-:10FA40000BD882E791E30E94ACCE0C940EEF81E0DC
-:10FA50000E9484D60C940EEF83E50E94D4C5182F23
-:10FA6000882369F00E9457C79C019093610280939C
-:10FA7000600291E0232B09F090E09093A00880E5CC
-:10FA80000E94D4C5882361F0209160023091610208
-:10FA9000232B11F00E946FC78093A0080C940EEFE7
-:10FAA00011110C940EEF0E940FD880EA91E30E948E
-:10FAB000ACCE8091A008882391F088E891E30E9461
-:10FAC000ACCE60916002709161028FE891E30E9478
-:10FAD00087DA8BE891E30E94ACCE0C940EEF84E8B9
-:10FAE00091E3EDCF0E94CFD00C940EEF0E947F8F58
-:10FAF0000C940EEF0F94321181110C940EEFB6EBB3
-:10FB0000CB2EB4E1DB2EE6E7F2E0FDABECAB9E01E1
-:10FB10002F5F3F4F19018901F12CE12CF60165910E
-:10FB2000759185919491ACA9BDA98D909D90AD9052
-:10FB3000BD90BDABACABA50194010F94073E2B016A
-:10FB40003C01F801408251826282738220E030E001
-:10FB500040EA51EC0F94684087FD0AC020E030E095
-:10FB600040EA51E4C301B2010F94B139181684F48C
-:10FB7000F701E253F44CE4911E1654F4B7FAB09432
-:10FB8000B7F8B094D8018D929D92AD92BC92139724
-:10FB9000F80180809180A280B38020E030E040EACC
-:10FBA00051ECC501B4010F94684087FD4AC020E0C4
-:10FBB00030E040EA51E4C501B4010F94B1391816A0
-:10FBC0000CF43FC0FFEFEF1AFF0A24E0C20ED11C75
-:10FBD0000C5F1F4F33E0E316F10409F09FCFA6EE50
-:10FBE000EA2EA8E0FA2E10E0F10181919191A19105
-:10FBF000B1911F01F70181939193A193B1937F017B
-:10FC0000812F0E94FAB21F5F133071F70E94BBB8B8
-:10FC100060E083EB91E30E941D3B63E972E084E6C0
-:10FC200090E00E948D2B70E060E08AE090E00E94FE
-:10FC30008D2B6AEB72E084E690E00E948D2B0C9491
-:10FC40000EEF0E940BD881ED91E30E94ACCE61E0F3
-:10FC500083EC91E30E941D3B0E945E2D68E270E000
-:10FC600080E991E00E948D2B0C940EEF0E94648B32
-:10FC70000C940EEF0E947CB90C940EEF61E083E5CA
-:10FC80000E94E1CA91E089270E942E8A0C940EEF0F
-:10FC90001091A21712FF0AC017FD08C00E9473CD71
-:10FCA00080FB17F91093A2170C940EEF14FD02C0FD
-:10FCB0000C940EEF0F945F120C940EEF0E946CE9FF
-:10FCC0000C940EEF8091BD0883FD09C08091BE08A1
-:10FCD000887129F481E00E94C7DB0C940EEF0E942A
-:10FCE00013D8082F87FF02C00C940EEF85E50E9401
-:10FCF000D1C9882359F10E94A7C94B015C01E02EAC
-:10FD0000002E000CFF0820E030E0A9010F946840AD
-:10FD100087FF04C0B7FAB094B7F8B09420E030E0A1
-:10FD200048E453E4C501B4010F9468409701F3E03F
-:10FD3000220F331FFA95E1F727523A4F1816D4F1E4
-:10FD4000D9018D929D92AD92BC9213978CE40E9442
-:10FD5000D1C9882311F40C940EEF0E94A7C96B013E
-:10FD60007C01002E000C110B20E030E0A9010F9463
-:10FD7000684087FF04C0F7FAF094F7F8F09420E0A9
-:10FD800030E048E453E4C701B6010F94684098019D
-:10FD9000E3E0220F331FEA95E1F727523A4F181696
-:10FDA0009CF0D9011496CD92DD92ED92FC921797BA
-:10FDB0000C940EEF80E090E0A8E4B3E4F9018083B6
-:10FDC0009183A283B383C2CF80E090E0A8E4B3E440
-:10FDD000F90184839583A683B7830C940EEF712C6D
-:10FDE000812C60EA962E71E4C72E0C9404F4E09105
-:10FDF000510928E0E29FF0011124E752FA4FC48034
-:10FE0000D580E680F7800C9465F40E9413D8082F03
-:10FE100087FF02C00C940EEF8AE50E94D1C9812CA5
-:10FE2000912C40EAA42E41E4B42E882329F08AE5DF
-:10FE30000F9484124B015C01402F64E083E00E9428
-:10FE4000092E10915109E02E002E000CFF081E15FE
-:10FE50001F0421F060E0802F0E947DB520E030E09B
-:10FE6000A901C501B4010F94684018167CF580E023
-:10FE700090E0A0EAB0E489839A83AB83BC832091AD
-:10FE80007E0230917F024091800250918102C50133
-:10FE9000B4010F94083E2B013C0120E030E046E124
-:10FEA00053E40F94B13987FD06C0412C512C36E143
-:10FEB000632E33E4732E4C8E5D8E6E8E7F8EBE016C
-:10FEC0006F5F7F4FCE014C960E94C4B485E50E94BF
-:10FED000D4C5882309F463C00E94A7C96B017C01C3
-:10FEE00020E030E0A901C701B6010F94684087FF08
-:10FEF00004C0F7FAF094F7F8F094F7FAF094F7F8F2
-:10FF0000F094C982DA82EB82FC8244E061E0CE01A7
-:10FF100001960E9457E720E030E0A901C501B40135
-:10FF20000F94684018165CF580E090E0A0EAB0E419
-:10FF300089839A83AB83BC83A501940160917E027F
-:10FF400070917F0280918002909181020F94073E10
-:10FF50006B017C0120E030E0A9010F946840181685
-:10FF60001CF0C12CD12C7601CC8EDD8EEE8EFF8E56
-:10FF7000BE016F5F7F4FCE014C960E94C4B480914A
-:10FF80005109181721F060E0812F0E947DB5809102
-:10FF90005109809300040E945E2D0C940EEFF7012E
-:10FFA00023E0EE0FFF1F2A95E1F7E752FA4FC080DA
-:10FFB000D180E280F38094CF19821A821B821C8246
-:10FFC0004091BC085091BD086091BE087091BF0877
-:10FFD000ECE9F2E0DE01119691E021E0819181549B
-:10FFE0006A017B0104C0F694E794D794C7948A957C
-:10FFF000D2F7C0FE02C02C9390E0119682E0E03A66
-:020000040002F8
-:10000000F80761F7992329F081E089838A838B833C
-:100010008C8360E089E40E94E1CA8823A1F08FEA22
-:1000200095E10F94843383E795E10F94843387E35C
-:1000300095E10F9484338BEF94E10F9484338FEB2D
-:1000400094E10F9484332C814B816A8189810E94D1
-:10005000FEDB0C940EEF9CE9C92E92E0D92EEE2423
-:10006000E394F12C70E060E0D6018D916D010E9467
-:10007000C4CA8C010097D9F1B2E0FB16C1F0E3E0ED
-:10008000FE16E9F0F1E0FF1651F09093E915809328
-:10009000E815BC018FEA95E10F940F2127C09093DA
-:1000A000AD158093AC15BC0183E795E1F5CF909336
-:1000B000711580937015BC0187E395E1EDCF6EEF6C
-:1000C0007FEF84E50E94C4CA823008F050C0E82E59
-:1000D00018160CF49AC01093351500933415B80116
-:1000E0008BEF94E10F940F21E11092C0E12CF39477
-:1000F00024E0F212B7CFEE2011F40C940EEF88E555
-:100100000E949FCE6091E8157091E9158AEF91E306
-:100110000E9404DB89E50E949FCE6091AC1570912E
-:10012000AD158CE092E30E9404DB8AE50E949FCE2D
-:1001300060917015709171158EE192E30E9404DB5D
-:1001400085E40E949FCE609134157091351580E34F
-:1001500092E30E9404DB0E94A6CE6091F814709195
-:10016000F91482E492E30E9404DB0C940EEF8EEF0C
-:10017000E82EB1CF83E0809335091092441260E0FD
-:1001800083E50E94E1CA81110C940EEF0F94330FA6
-:100190000C940EEF1091C2080F941E1D60933B0645
-:1001A00070933C0680933D0690933E06812F012E6E
-:1001B000000C990B209151092817190651F060E0A5
-:1001C00083E50E94E1CA682F812F0E947DB50C94BF
-:1001D0000EEF81E0F8CFF11004C0002311F40C946D
-:1001E0006AEE612C712C70EA872EE0E49E2E0C944E
-:1001F000CAED83E50E94D1C9882311F40C949BF7C2
-:100200000E9447C77B010C949BF7813009F06ECFA9
-:100210001093F9140093F814B8018FEB94E13CCFDC
-:1002200020E030E0A901C701B6010F94B13988235D
-:1002300011F40C943BED1CAA1DAA1EAA1FAAA7012B
-:100240009601505828AF39AF4AAF5BAF8CA99DA932
-:10025000AEA9BFA9B0588CAF9DAFAEAFBFAFA701DD
-:100260009601C701B6010F94173A4B015C012CA906
-:100270003DA94EA95FA9CA01B9010F94173A9B0184
-:10028000AC01C501B4010F94083E0F94B640A89686
-:100290006CAF7DAF8EAF9FAFA897809076029090A5
-:1002A0007702A0907802B0907902A7019601C5016B
-:1002B000B4010F94083EE9966CAF7DAF8EAF9FAF4F
-:1002C000E997C0907A02D0907B02E0907C02F09097
-:1002D0007D022496CCAEDDAEEEAEFFAE2497A70134
-:1002E00096016CA97DA98EA99FA90F94083EED9651
-:1002F0006CAF7DAF8EAF9FAFED9740908A06509068
-:100300008B0660908C0670908D06E9962CAD3DAD05
-:100310004EAD5FADE997C301B2010F94073E289639
-:100320006CAF7DAF8EAF9FAF2897C0908E06D090F8
-:100330008F06E0909006F0909106ED962CAD3DADC5
-:100340004EAD5FADED97C701B6010F94073E2C96F9
-:100350006CAF7DAF8EAF9FAF2C97A3019201C5010B
-:10036000B4010F94073E4B015C012DEB37E346E8E7
-:1003700055EB0F94684087FF02C00C943DEF2DEBC6
-:1003800037E346E855E3C501B4010F94B1391816B7
-:1003900014F40C943DEFA701960124966CAD7DAD4D
-:1003A0008EAD9FAD24970F94073E6B017C012DEB22
-:1003B00037E346E855EB0F94684087FF02C00C9482
-:1003C0003DEF2DEB37E346E855E3C701B6010F9447
-:1003D000B139181614F40C943DEF0230110511F0E8
-:1003E0000C94DAEF08E410E08BED482E8FE0582EE5
-:1003F00089EC682E80E4782E9BEDC92E9FE0D92EE3
-:1004000099ECE92E90ECF92E20917E0230917F023A
-:10041000409180025091810260962CAF3DAF4EAF6B
-:100420005FAF6097609192067091930680919406F9
-:10043000909195060F94073E4B015C01A301920138
-:10044000A8966CAD7DAD8EAD9FADA8970F94173A71
-:1004500021966FAF219725967FAF259729968FAF6D
-:10046000299765969FAF659727E137EB41ED58E3F4
-:100470000F94B13987FF0AC027E137EB41ED58E30C
-:10048000C501B4010F94B13987FD70C38091960600
-:1004900090919706A0919806B091990669968CAFB5
-:1004A0009DAFAEAFBFAF69972091820230918302BA
-:1004B000409184025091850264962CAF3DAF4EAFBF
-:1004C0005FAF64972AE037ED43E25CE3609151024D
-:1004D0007091520280915302909154020F94173AF6
-:1004E0002B013C016091200270912102072E000C2B
-:1004F000880B990B0F94B8399B01AC01C301B20171
-:100500000F94173A68A779A78AA79BA721966FAD82
-:10051000219725967FAD259729968FAD29976596CA
-:100520009FAD65970F94AA3F1B012C01B80190E085
-:1005300080E00F94B6393B018C019B01AC01B10105
-:10054000C2010F946840181614F43101820193011E
-:10055000A80121966FAD219725967FAD2597299605
-:100560008FAD299765969FAD65970F94023F1B014C
-:100570002C0120E030E040E85FE30F94684018165B
-:1005800014F00C94E8EF21966FAD219725967FAD7E
-:10059000259729968FAD299765969FAD65970F94FE
-:1005A000E63E0F947B3F6B967FAF6EAF6B971C8ED2
-:1005B0001D8E1E8E1F8E18A219A21AA21BA21CA28B
-:1005C0001DA21EA21FA26B964EAD5FAD6B9742306F
-:1005D000510508F4A1C2BA0190E080E00F94B63949
-:1005E000A4966CAF7DAF8EAF9FAFA4979B01AC017B
-:1005F000C701B6010F94023F6F966CAF7DAF8EAF0F
-:100600009FAF6F979B01AC010F94173A6B017C0170
-:10061000AC019B016F966CAD7DAD8EAD9FAD6F97BC
-:100620000F94173A20E030E040EC50E40F94023F82
-:100630009B01AC016F966CAD7DAD8EAD9FAD6F979C
-:100640000F94073EC358DF4F688379838A839B8367
-:10065000CD57D04020E030E040E05FE3C701B60175
-:100660000F94173A9B01AC0160E070E080E89FE3D3
-:100670000F94073ECF57DF4F688379838A839B832C
-:10068000C158D040A4962CAD3DAD4EAD5FADA49702
-:10069000C501B4010F94023FCB57DF4F68837983C4
-:1006A0008A839B83C558D04064962CAD3DAD4EAD3A
-:1006B0005FAD649769966CAD7DAD8EAD9FAD69976A
-:1006C0000F94073EA4962CAD3DAD4EAD5FADA49703
-:1006D0000F94023FC757DF4F688379838A839B83D8
-:1006E000C958D0406096CCACDDACEEACFFAC6097A6
-:1006F000C986DA86EB86FC866496CCACDDACEEACC3
-:10070000FFAC6497CD86DE86EF86F88A0F941E1DB7
-:100710009B01AC0128533F4F4F4F5F4FE5962CAFE5
-:100720003DAF4EAF5FAFE597C0905909D0905A09E1
-:10073000E0905B09F0905C09609155097091560951
-:100740008091570990915809C616D706E806F90610
-:1007500010F4C701B6010F94B639AC966CAF7DAFFB
-:100760008EAF9FAFAC97A0907909B0907A090091B5
-:100770007B0910917C09C701B6010F94B6396B0152
-:100780007C019B01AC01B501C8010F94B13987FF11
-:1007900002C06501780168A579A58AA59BA59B0182
-:1007A000AC010F94173A2D966FAF2D9761967FAFDE
-:1007B00061971C01AC962CAD3DAD4EAD5FADAC97D5
-:1007C000A8966CAD7DAD8EAD9FADA8970F94173AEE
-:1007D0005B018C019601A701B601C7010F94173A7E
-:1007E0006B017C019501A8012D966FAD2D97619647
-:1007F0007FAD6197C1010F94684018163CF42D96A7
-:10080000AFAE2D976196BFAE619718012D962FADB3
-:100810002D9761963FAD6197A101B601C7010F9475
-:10082000B13987FF07C02D96CFAE2D976196DFAE09
-:10083000619717012196CFAC2197AD96CFAEAD97BA
-:100840002596DFAC2597AE96DFAEAE972996EFAC36
-:100850002997AF96EFAEAF976596FFAC6597E09698
-:10086000FFAEE09748AC59AC6AAC7BAC29E1A096EE
-:100870002FAFA09741E050E067965FAF4EAF67970C
-:100880000E94A5910F941E1D8B019C01E596CCAC96
-:10089000DDACEEACFFACE5970C191D092E093F0944
-:1008A00037FD0FC09B01AC0128533F4F4F4F5F4FA7
-:1008B000E5962CAF3DAF4EAF5FAFE59780E00E946D
-:1008C000EADDA0963FADA0973150A0963FAFA0972C
-:1008D000332311F40C941EF0C358DF4F2881398163
-:1008E0004A815B81CD57D040B201C3010F94173AC2
-:1008F0006B017C01CF57DF4F288139814A815B81B1
-:10090000C158D0406CAD7DAD8EAD9FAD0F94173A00
-:100910009B01AC01C701B6010F94083E7B018C011D
-:10092000CF57DF4F288139814A815B81C158D04040
-:10093000B201C3010F94173A4B015C01C358DF4F5A
-:10094000288139814A815B81CD57D0406CAD7DAD26
-:100950008EAD9FAD0F94173A9B01AC01C501B40158
-:100960000F94073E2B013C01C701D8018CAF9DAF0E
-:10097000AEAFBFAF9201A301E9966CAD7DAD8EAD78
-:100980009FADE9970F94083E69837A838B839C839C
-:100990002CAD3DAD4EAD5FADED966CAD7DAD8EAD8C
-:1009A0009FADED970F94083E6D837E838F8398876C
-:1009B000CB57DF4F288139814A815B81C558D040B0
-:1009C00069857A858B859C850F94083E69877A872F
-:1009D0008B879C87C757DF4F288139814A815B818C
-:1009E000C958D0406D857E858F8598890F94083EC3
-:1009F0006D877E878F87988BCE0101960E941AB3F0
-:100A0000A4962CAD3DAD4EAD5FADA49721966FADD4
-:100A1000219725967FAD259729968FAD29976596C5
-:100A20009FAD65970F94023F9B01AC01AD966FADF2
-:100A3000AD97AE967FADAE97AF968FADAF97E09680
-:100A40009FADE0970F94073EAD966FAFAD97AE9612
-:100A50007FAFAE97AF968FAFAF97E0969FAFE0971F
-:100A6000AC962CAD3DAD4EAD5FADAC97CA01B901B2
-:100A70000F94083EAD962FADAD97AE963FADAE97B5
-:100A8000AF964FADAF97E0965FADE0970F94173AF2
-:100A90007B018C012D962FAD2D9761963FAD61970F
-:100AA000A1010F94684018163CF42D96EFAC2D97D9
-:100AB0006196FFAC61978101C701D8018CA39DA30A
-:100AC000AEA3BFA39E01245E3F4F40915109BE01DA
-:100AD000685D7F4FCE0101960E94ACA68823E1F0AD
-:100AE000A896CCACDDACEEACFFACA897C8A2D9A25E
-:100AF000EAA2FBA267962EAD3FAD67972F5F3F4FEF
-:100B000067963FAF2EAF67976B96CEACDFAC6B9717
-:100B1000C216D30609F0B4CE80E1EAE8F6E0DE01C1
-:100B2000119601900D928A95E1F7CE0101960E94EF
-:100B30001AB318A219A21AA21BA21CA21DA21EA2BD
-:100B40001FA29E01245E3F4F40915109BE01685D86
-:100B50007F4FCE0101960E94ACA680E1FE01319646
-:100B6000A6E7B2E001900D928A95E1F70F941E1D61
-:100B700060933B0670933C0680933D0690933E063F
-:100B80000C940EEF4F925F926F927F928F929F9292
-:100B9000AF92BF92CF92DF92EF92FF920F931F938B
-:100BA000CF93DF93CDB7DEB77C014DB65EB66090D4
-:100BB0005309709054098DB69EB66AE070E0C70183
-:100BC0000F94F3386C018C010E191F09892B21F445
-:100BD000C7010F94FE388C01C80101962DB73EB7AE
-:100BE000281B390B0FB6F8943EBF0FBE2DBF8DB733
-:100BF0009EB701965C01A801B7010F941F39F5015A
-:100C0000E00FF11F1082C5010E9457C881E00E94C9
-:100C1000D1EBC114D10451F076019FEFE91AF90A22
-:100C20000FB6F8949EBE0FBE8DBEC5CF0FB6F8941A
-:100C30009EBE0FBE8DBEC3010E9457C80FB6F8946A
-:100C40005EBE0FBE4DBEDF91CF911F910F91FF9001
-:100C5000EF90DF90CF90BF90AF909F908F907F905C
-:100C60006F905F904F900895CF92DF92EF92FF9236
-:100C70000E947F8F8091A217877F8B7F8093A2171E
-:100C800080919817811138C00E94E4BA6B017C01F1
-:100C90008DE3C816D104E104F10420F082E695E367
-:100CA0000F94C2058EE595E30F94C2058AE495E39F
-:100CB0000E94ACCE8DE3C816D104E104F104A0F08B
-:100CC0000E94F5CB81E08093C50840E060E477E7BF
-:100CD0008BE190E00E947CE88091C508882321F098
-:100CE0000E94F1CB1092C50886E495E3FF90EF9047
-:100CF000DF90CF900D94C2050F941327882321F223
-:100D0000FF90EF90DF90CF900895CF93DF93C09145
-:100D1000761081E6C89FE0011124C858DF4E80910B
-:100D2000D40580FF05C00E940FD8CE010E9425C5C2
-:100D3000CE010E9457C880E0DF91CF910C94D1EB97
-:100D4000FC01808108950F931F93CF93DF93582F59
-:100D5000FC0180E077E0919148E0282F30E0A92F56
-:100D6000B0E08901000F012F001F110B9170C92FF6
-:100D700090E0D92F880F0C171D0721F0C901880FAB
-:100D8000991F8727B595A7959A2F415031F79E2F28
-:100D9000951B961700F3DF91CF911F910F91089546
-:100DA00008950895AF92BF92CF92DF92EF92FF9293
-:100DB0000F931F93CF93DF936C017B018B01040F83
-:100DC000151FEB015E01AE18BF08C017D10759F01F
-:100DD0006991D601ED91FC910190F081E02DC60161
-:100DE0001995892B79F7C501DF91CF911F910F914B
-:100DF000FF90EF90DF90CF90BF90AF9008953FB7F6
-:100E0000F8948091531890915418A0915518B0916E
-:100E1000561826B5A89B05C02F3F19F00196A11DB5
-:100E2000B11D3FBFBA2FA92F982F8827BC01CD0134
-:100E3000620F711D811D911D42E0660F771F881F93
-:100E4000991F4A95D1F7089520912B18260F332723
-:100E5000331F21323105ECF420918518FC0190E01C
-:100E600080E0243069F082E00895A0912B18219150
-:100E7000AC01455F574EA40FB52FB11D2C930196C1
-:100E8000861798F380912B18680F60932B1880E0D9
-:100E9000089581E008950895E0915C1880915B18B1
-:100EA000E81730F4F0E0E651F84E808190E00895C4
-:100EB0008FEF9FEF089590915C1880915B182FEF52
-:100EC0003FEF981748F4E92FF0E0E651F84E208103
-:100ED00030E09F5F90935C18C901089580915B1882
-:100EE00090915C18891B990B0895CF92DF92EF9235
-:100EF000FF920F931F93CF93DF937C01CB018A0165
-:100F00002091AE18222389F0EB016B01C40ED51E8F
-:100F1000CC15DD0569F06991D701ED91FC91019047
-:100F2000F081E02DC7011995F3CF642F0F942407AA
-:100F3000C801DF91CF911F910F91FF90EF90DF904B
-:100F4000CF900895CF93DF931F92CDB7DEB769831B
-:100F50002091AE182223F9F02091AB18203258F0DE
-:100F600021E030E0FC013383228390E080E00F90A9
-:100F7000DF91CF9108958091AC18E82FF0E0E5570C
-:100F8000F74E998190838F5F8093AC188093AB1854
-:100F900081E090E0ECCF61E0CE0101960F94240750
-:100FA000F7CF2091E8173091E9172817390771F426
-:100FB0009091E7178091E617981741F0E091E717B5
-:100FC000F0E0EA55F84E808190E008958FEF9FEFB2
-:100FD0000895EF92FF920F931F93CF93DF93DC015D
-:100FE0005C96ED90FC905D97E114F10479F481E05A
-:100FF00090E013969C938E93129790E080E0DF919F
-:10100000CF911F910F91FF90EF9008955196ED9120
-:10101000FC91529750968C915097982F90950FB7BE
-:101020005E962C915E97122F127021FD6095F894B8
-:101030002081112319F1282B2083E7012197F1F753
-:1010400028E0462F50E0308160FF1AC0382B3083F3
-:10105000E7012197F1F7BA0175956795215089F756
-:10106000112381F08081892380830FBF5C968D914D
-:101070009C910197F1F781E090E0C1CF2923DCCF6B
-:101080003923E5CF9081892BEFCF2091E81730915C
-:10109000E9172817390771F48091E6172091E717AF
-:1010A00090E0805C9F4F821B910960E470E00F9498
-:1010B0004841089590E080E008952091E81730912C
-:1010C000E91728173907B9F49091E7178091E617C7
-:1010D000981789F0E091E717F0E0EA55F84E808123
-:1010E0002091E71730E02F5F3F4F2F733327209376
-:1010F000E71790E008958FEF9FEF0895E091E817CC
-:10110000F091E917E817F90769F4A389B4899C916C
-:101110008589809589238C931092E9171092E8179E
-:1011200081E0089580E00895CF93DF93EC018A8DEC
-:101130009B8D892B01F18091E8179091E9178C170D
-:101140009D07C9F0009711F00F947E088E8D8E7F59
-:101150008E8F1092E6171092E717D093E917C0937D
-:10116000E817EB89FC8980819D89892B808381E048
-:10117000DF91CF91089580E0FBCFFC01A4A5B5A538
-:10118000109749F0ED91FC9111970190F081E02DBD
-:10119000CD011995089582A593A5009739F0DC013A
-:1011A000ED91FC910190F081E02DF3CF80E0089566
-:1011B000FC01A4A5B5A5109741F0ED91FC91119704
-:1011C0000284F385E02DCD01199482A593A50097A3
-:1011D00039F0DC01ED91FC910284F385E02DF4CF30
-:1011E00090E080E00895FC01A4A5B5A5109741F01A
-:1011F000ED91FC9111970084F185E02DCD011994BA
-:1012000082A593A5009739F0DC01ED91FC91008453
-:10121000F185E02DF4CF90E080E00895DC01589650
-:101220004C91589760FB42F958964C935897242F4D
-:1012300059964C915997342F337050E040E0ED911E
-:10124000FC910190F081E02D60E01994DC01ED91BA
-:10125000FC910280F381E02D6FE61994262F2F7008
-:10126000DC0195966C919597607F622B95966C93B7
-:10127000959792962D913D914D915C919597ED9119
-:10128000FC910190F081E02D6CE61994DC019496BC
-:101290002C91949760FB21F994962C9394979296B5
-:1012A0002D913D914D915C919597ED91FC9101901F
-:1012B000F081E02D6CE61994DC0193968C91939764
-:1012C00060FB87F993968C93939761FB882780F94D
-:1012D00094966C9194976E7F682B94966C939497E8
-:1012E00092962D913D914D915C919597ED91FC9148
-:1012F00011970190F081E02D6CE6CD011994DC018D
-:1013000092968C91929760FB87F992968C93929724
-:101310006695677093968C919397887F682B9396C8
-:101320006C93939792962D913D914D915C919597E9
-:10133000ED91FC9111970190F081E02D6CE6CD01CB
-:1013400019946770262F2295207FDC0192966C916C
-:1013500092976F78622B92966C93929792962D91BA
-:101360003D914D915C919597ED91FC910190F081AB
-:10137000E02D6CE61994DC01ED91FC910280F38183
-:10138000E02D6CE619940F94BB09892F8F70089596
-:101390000F94BB098695817008950F94BB09771F40
-:1013A0007727771F8170880F872B08950F94BB09CB
-:1013B000862F881F8827881F7770770F872B0895BF
-:1013C0000F94BB09862F8295877008952EE93FE020
-:1013D000009729F0F9013197F1F70197F9CF0895B6
-:1013E000089580E00895FC018491882321F08230E3
-:1013F00011F083E0089586E00895EF92FF920F9335
-:101400001F93CF93DF93EC01162FEC80FD80F70143
-:101410000491C7010F94F309A82F013049F10FEF90
-:101420002C813D81F9013A9644913196549133973C
-:101430006491319684911136E8F070E0762F66273A
-:10144000860F972F911D0097A9F08E0D9F1D41E6E5
-:10145000511730F5188A1B8A1C8A198A1A8A90E05B
-:1014600080E0DF91CF911F910F91FF90EF90089551
-:101470000FE0D6CFF90136966491319684911134FC
-:1014800060F070E0762F6627860F972F911D0097EA
-:1014900021F08E0D9F1D41E4DBCFC7014196D8CFCF
-:1014A0005417C0F2B0E0FC0164916F3F29F401963B
-:1014B000451781F24F5FF7CF411333C0F9012491F3
-:1014C000AC014F5F5F4FFC01222311F0223091F4F9
-:1014D00024912B8BFA0144914C8BFC013396E491BF
-:1014E000E88BFC013496E491E98BFC013596E4919C
-:1014F000EA8BB7CF2491322F3F7032503A8B22952E
-:101500002F70298BFA014491242F2F702C8B429538
-:101510004F704B8BFC013296E491E295EF70E88BB3
-:10152000A0CF3296649160236A0F7B2F711D860FC6
-:10153000971FBECF8EBD0DB407FEFDCF8EB50895AB
-:101540000F93FC010150040F84A996A9941788F009
-:10155000081710F4041778F42150260F83A995A9D1
-:10156000961758F0281760F481E0261720F40F91A1
-:101570000895081778F780E0FACF2817A8F7FBCF6F
-:1015800081E0F5CF0F94AC41FC01DB018C9120810F
-:101590003181382798E0A901220F331F57FD05C07C
-:1015A0009150C9F7318320830895B1E22B27B0E130
-:1015B0003B27F6CF8F929F92AF92BF92CF92DF924E
-:1015C000EF92FF92CF93DF9390934F1480934E143A
-:1015D0001092821482E090E0A0E0B0E080936B145F
-:1015E00090936C14A0936D14B0936E1410924D14DC
-:1015F0001092491410924A1410924B1410924C14E9
-:101600008FEF9FEFDC018093451490934614A093D5
-:101610004714B0934814662309F470C040E060E0BA
-:1016200070E0CB010E94717A81110DC0C0E08C2F57
-:10163000DF91CF91FF90EF90DF90CF90BF90AF9070
-:101640009F908F900895809103148F7779F7809100
-:101650000F1490911014A0911114B09112148436AB
-:101660009105A105B10510F3C0900B14D0900C1496
-:10167000E0900D14F0900E14C114D104E104F104B3
-:10168000A9F240E0C701B6010E94717AC82F8823F1
-:1016900069F280915012909151128115924031F669
-:1016A000A0915512AA2311F2609153127091541215
-:1016B0006115710509F4BACF20915212222309F461
-:1016C000B5CFA0937D1420936F1490E080E030E0BC
-:1016D000E1E0F0E0D82FAF01082E02C0440F551F03
-:1016E0000A94E2F72417350769F041E0480F0196A4
-:1016F0008930910579F74093781498CFC12CD12C7B
-:101700007601BFCF8093781420915B1230915C12E8
-:1017100050E040E02115310541F4209169123091EB
-:101720006A1240916B1250916C1220937014309396
-:101730007114409372145093731446015701860E2E
-:10174000971EA11CB11C80927E1490927F14A092CF
-:101750008014B0928114E0915612F0915712F093D8
-:101760008414E0938314B0E00F94E53DDC01CB01D9
-:10177000880D991DAA1DBB1D809385149093861416
-:10178000A0938714B093881425E0EE0FFF1F2A95CD
-:10179000E1F7E150FE4FEF2FFF27E6958E0F9F1FD9
-:1017A000A11DB11D8093791490937A14A0937B149A
-:1017B000B0937C148090581290905912B12CA12CA7
-:1017C0008114910441F48090651290906612A0906B
-:1017D0006712B0906812C81AD90AEA0AFB0AC80C44
-:1017E000D91CEA1CFB1C04C0F694E794D794C79458
-:1017F000DA95D2F7C0927414D0927514E0927614F0
-:10180000F092771485EFC8168FE0D806E104F10452
-:1018100020F48CE08093821409CF80E125EFC2167A
-:101820002FEFD206E104F10488F0809171129091BB
-:101830007212A0917312B0917412809385149093D8
-:101840008614A0938714B093881480E28093821446
-:10185000EECE8F929F92AF92BF92CF92DF92EF9295
-:10186000FF920F931F93CF93DF9300D01F92CDB7BA
-:10187000DEB7FC018381813091F080E00F900F9002
-:101880000F900F90DF91CF911F910F91FF90EF90EC
-:10189000DF90CF90BF90AF909F908F9008958181FF
-:1018A00081FFEBCF81899289A389B489892B8A2B07
-:1018B0008B2B09F460C07F0140E050E0BA01CF01FA
-:1018C0000E94827C8823C9F2F701C18CD28C858862
-:1018D0009688A788B08C82E090E0A0E0B0E0F601A6
-:1018E00080839183A283B3839E012F5F3F4FB50115
-:1018F000A401C6010E94457B882309F4BECF00E005
-:1019000010E09801B501A401C6010E94B37A8823B2
-:1019100009F4B3CF89809A80AB80BC80F6018789B7
-:10192000803101F5F8EF8F16FFEF9F06A104B10497
-:10193000D8F2F701158A168A178A108E118A128A30
-:10194000138A148A818180688183C7010E94297E5D
-:10195000882309F492CF40E050E0BA01C7010E9409
-:10196000827C8CCF88EF88168FEF9806A8068FE0D0
-:10197000B806F8F6B9CF81E081CF2F923F924F920F
-:101980005F926F927F928F929F92AF92BF92CF920F
-:10199000DF92EF92FF920F931F93CF93DF9300D0CC
-:1019A0001F92CDB7DEB7382E7B012DB73EB73C83F3
-:1019B0002B838091ED18811107C01092D2181092DC
-:1019C000D51881E08093ED188091CA18811107C065
-:1019D0001092AF181092B21881E08093CA18DA0101
-:1019E0008C918F3209F08DC084EA94E1F7019183E4
-:1019F00080834F5F5F4F311010929717F70101906E
-:101A0000F081E02DFA83E9838A0122EDC22E28E1DC
-:101A1000D22E3BE1232E01151105E9F14DB65EB63C
-:101A20006FE270E0C8010F94E2414C0108171907FA
-:101A300068F53C01601A710A7724C30101962DB73D
-:101A40003EB7281B390B0FB6F8943EBF0FBE2DBF13
-:101A50008DB79EB701965C01A301B8010F940242B5
-:101A6000F501E60DF71D1082C6010E945E7ED701CA
-:101A70006D917C9121E0A501C6010E946A808111CF
-:101A800046C0C5010E9455BE10E000E00FB6F894B4
-:101A90005EBE0FBE4DBE3320A9F0D701ED91FC9183
-:101AA0008BE1A9E8B4E101900D928A95E1F791E00C
-:101AB00080919717811190E08091A21790FB86F991
-:101AC0008093A217C801EB81FC810FB6F894FEBF8A
-:101AD0000FBEEDBF0F900F900F900F90DF91CF9141
-:101AE0001F910F91FF90EF90DF90CF90BF90AF903C
-:101AF0009F908F907F906F905F904F903F902F902E
-:101B0000089589E894E1D7018D939C9377CFF701ED
-:101B10008081918129813A812817390711F00E942B
-:101B20005E7ED701CD92DC92332099F0A091971779
-:101B3000AA3078F481E08A0F809397172A9ED0010B
-:101B40001124A757B94EF601822D01900D928A9566
-:101B5000E1F7B2EDCB16B8E1DB0669F49FEAC92ED6
-:101B600098E1D92E84010F5F1F4F0FB6F8945EBE27
-:101B70000FBE4DBE50CF82EDC82E88E1D82EF2CFD9
-:101B80008F929F92AF92BF92EF92FF921F93CF934B
-:101B9000DF93CDB7DEB7A0970FB6F894DEBF0FBEC8
-:101BA000CDBF611571058105910591F120E04AE0F5
-:101BB000842E912CA12CB12C11E0120FEE24E39471
-:101BC000F12CEC0EFD1EE20EF11C27FDFA94A5018E
-:101BD00094010F94A43DF7016083B901CA01212F3C
-:101BE000611571058105910539F7115018F1E1E092
-:101BF000F0E0EC0FFD1FE10FF11D17FDFA9590814C
-:101C000087E39A3008F480E3890F0E949FCEEDCFDE
-:101C100080E3A0960FB6F894DEBF0FBECDBFDF9174
-:101C2000CF911F91FF90EF90BF90AF909F908F90BA
-:101C30000C949FCEA0960FB6F894DEBF0FBECDBF1A
-:101C4000DF91CF911F91FF90EF90BF90AF909F9049
-:101C50008F900895CF92DF92EF92FF926B017C01FB
-:101C6000F7FE0BC0F094E094D094C094C11CD11C3A
-:101C7000E11CF11C8DE20E949FCEC701B601FF90CE
-:101C8000EF90DF90CF900D94C00DCF93DF93209114
-:101C9000441221111EC0FC0101900020E9F7319788
-:101CA000EF01C81BD90BCB32D1052CF02291207C3F
-:101CB0002038E1F3F5CFBC01DD27AE0189E192E1E7
-:101CC0000F940242C75EDD4E1882109218121092D5
-:101CD0001712DF91CF910895BF92CF92DF92EF92CA
-:101CE000FF920F931F93CF93DF93EB01FC012381AE
-:101CF000223008F49DC040855185628573854F71FF
-:101D0000552766277727452B462B472B09F090C090
-:101D10008C011092FD111092FC11C12CDD24DA947B
-:101D20007E01FBE0EF0EF11C8DE0B82E40E250E0AA
-:101D3000BE01C8010E94167D8032910581F021E02C
-:101D4000892B09F420E0822F8195DF91CF911F919B
-:101D50000F91FF90EF90DF90CF90BF900895288172
-:101D6000222309F467C0253E11F02E3229F4109287
-:101D7000FD111092FC11DACF3B853F733F3009F023
-:101D800042C04A8D5B8D452B61F52F713FEF320FBD
-:101D9000323038F58D85213041F1C81229C02150EB
-:101DA000330BB29EC001B39E900D1124DC01A450F0
-:101DB000BE4EFE0120E02B30F0F0468157814F3FB0
-:101DC000510519F010F04FE550E04D932F5F32961A
-:101DD0002D3089F7288126FF04C0FC01E75FFD4E06
-:101DE00010822B8523FDA2CFB0CFC82ED12CD7CF08
-:101DF000DD24D394D4CF253018F044815581DFCF32
-:101E000041815281DCCFD1100EC0FE0120E020FBC9
-:101E1000279527F93191230FEE16FF06C1F7C21659
-:101E200001F3DD24D3941092FD111092FC11D9CF4F
-:101E30008FEF8BCF80E089CF9091771021E6929F32
-:101E4000F0011124E852FF4E80839F5F943040F4EC
-:101E500090937710809175108F5F8093751008951F
-:101E600010927710F7CFCF92DF92EF92FF92ECE8CB
-:101E7000FFE080818183C0900E10D0900F10E09021
-:101E80001010F09011108FEFC81AD80AE80AF80A5B
-:101E900082E89CE30E94ACCEC701B6010F942A0EE3
-:101EA0008AE00E949FCE8EE79CE3FF90EF90DF9048
-:101EB000CF900C94ACCECF92DF92EF92FF920F9323
-:101EC0001F93CF938C01C62F0E940BD8C0900E1089
-:101ED000D0900F10E0901010F0901110C8010E94E7
-:101EE000ACCEC701B6010F942A0E8AE00E949FCEA5
-:101EF0000E947BDD0196E1F78C2F0F94330F109237
-:101F0000131010921210CF911F910F91FF90EF902C
-:101F1000DF90CF9008952F923F924F925F926F92F1
-:101F20007F928F929F92AF92BF92CF92DF92EF9269
-:101F3000FF920F931F93CF93DF93CDB7DEB76697D2
-:101F40000FB6F894DEBF0FBECDBF4C017B011A0166
-:101F50003E8B2D8B198A1A8AFB0180819181A28187
-:101F6000B3818F3F9105A105B10521F118F11D86BF
-:101F70001E861F86188AAC01BD0137E076956795ED
-:101F8000579547953A95D1F75A87498780688B8747
-:101F90008C870091890F10918A0F8091870F909103
-:101FA000880F9C8B8B8BAA24A394B12C011511054F
-:101FB00009F050C0F7018081898BB401AE014F5EFA
-:101FC0005F4FC101ED89FE89199566960FB6F894A9
-:101FD000DEBF0FBECDBFDF91CF911F910F91FF905C
-:101FE000EF90DF90CF90BF90AF909F908F907F90B9
-:101FF0006F905F904F903F902F90089582179307B6
-:1020000020F19C818B85981708F445C09B818C85B5
-:102010008917D8F06091870F7091880F640D751D36
-:1020200048E050E0CE0109960F94DF386F8578893B
-:102030006115710509F4BECF8616970609F4BECF67
-:10204000F70180818068898BB9CF86010A151B054D
-:1020500008F4B0CF3501600E711E76946794630169
-:1020600091E0C91AD108260193E0440C551C9A95B9
-:10207000E1F76B897C89640D751D48E050E0CE0165
-:1020800001960F94DF3829813A8189859A8528172E
-:10209000390708F0B3CF5301EFEFAE1ABE0AD6CF1F
-:1020A0008F929F92AF92BF92CF92DF92EF92FF9268
-:1020B0000F931F93CF93DF9300D01F92CDB7DEB75E
-:1020C0006C017B014A015901AE014F5F5F4FB401C2
-:1020D000C7010E94C23E7C0189819A81AB81BC818B
-:1020E000892B8A2B8B2B49F09801A501BE016F5FCC
-:1020F0007F4FC6010F948B0FE7CF0F900F900F907B
-:102100000F90DF91CF911F910F91FF90EF90DF9093
-:10211000CF90BF90AF909F908F9008950E9481CDF7
-:1021200081111AC08091A21782FF0DC087FD0BC0DC
-:102130008091FC11811104C089E79FE00D94450E48
-:102140008CEF91E1FBCF8091860F813041F08AE4E2
-:102150009CE36FEF0C941D3B81E79CE3FACF85E68F
-:102160009CE3F7CF4F925F926F927F928F929F92F4
-:10217000AF92BF92CF92DF92EF92FF920F931F9395
-:10218000CF93DF93C6E7D2E04C845D846E847F8476
-:102190000DE61FE0F80124813581468157816C816D
-:1021A0007D818E819F810F94083E4B015C01F80177
-:1021B0002085318542855385688579858A859B850B
-:1021C0000F94083E6B017C01F8012081318142812E
-:1021D0005381688179818A819B810F94083EAB018C
-:1021E000BC0187E49CE30E94A4CFB501A40183E471
-:1021F0009CE30E94A4CFB701A6018FE39CE30E9459
-:10220000A4CFB301A2018BE39CE3DF91CF911F9197
-:102210000F91FF90EF90DF90CF90BF90AF909F9085
-:102220008F907F906F905F904F900C94A4CFCF933E
-:10223000DF931F92CDB7DEB787E0898360E0CE01E0
-:1022400001960E94D9B261E0CE0101960E94D9B2F6
-:1022500062E0CE0101960E94D9B289810F90DF9190
-:10226000CF9108950F931F93CF93DF93CDB7DEB730
-:102270006E970FB6F894DEBF0FBECDBF0F94171147
-:102280008823E9F142EF53E082FF02C043EF53E0BD
-:1022900022EF33E081FF02C025EF33E080FD2CC048
-:1022A00082EF93E05F934F933F932F939F938F938E
-:1022B00089E29CE39F938F938E010F5F1F4F1F93C3
-:1022C0000F930F9448390E940FD8C8010E9425C56A
-:1022D000C8010F94450E0FB6F894DEBF0FBECDBFF8
-:1022E00081E06E960FB6F894DEBF0FBECDBFDF91D2
-:1022F000CF911F910F91089587EF93E0D3CF80E0A6
-:10230000F0CFCF93DF938091091690910A16891B25
-:1023100080958F7019F40E94EADDF5CF809109163F
-:102320008F5F8F70A09109169DE5A99FD0011124A0
-:10233000FD01E356F64FEF0119929A95E9F7908166
-:1023400098609083AE54B64F90E1EFE1F6E10190D2
-:102350000D929A95E1F72091091690910A1629138A
-:1023600003C094E69093061680930916DF91CF91EF
-:102370000C944995CF93DF93CDB7DEB760970FB636
-:10238000F894DEBF0FBECDBF80E1E6E7F2E0DE01EC
-:10239000119601900D928A95E1F7CE0101960E9467
-:1023A000D0B160960FB6F894DEBF0FBECDBFDF91FF
-:1023B000CF910895DC01ED91FC910190F081E02D29
-:1023C00027E030E040E050E061E01994DC01149631
-:1023D0008C911497807F8A6014968C931497129630
-:1023E0002C91129713963C911397482F4F7050E001
-:1023F000ED91FC9111970190F081E02D60E1CD010C
-:1024000019946091EA1581E068278FEA95E10D94AF
-:102410000E096091AE1581E0682783E795E10D9480
-:102420000E096091721581E0682787E395E10D94AC
-:102430000E096091361581E068278BEF94E10D94C9
-:102440000E096091FA1481E068278FEB94E10D94F6
-:102450000E09CF93C82F41E00E946FD98C2FCF91E6
-:102460000C948ED9CF93DF936AE17CE30F94291209
-:10247000C5E5D9E04C895D896E897F8982E19CE35D
-:102480000E94A4CF488D598D6A8D7B8D8FE09CE38F
-:102490000E94A4CF4C8D5D8D6E8D7F8D8CE09CE372
-:1024A0000E94A4CF48A159A16AA17BA189E09CE325
-:1024B0000E94A4CF8AE0DF91CF910C949FCE80E55B
-:1024C00094E10E94297E80E594E10E945E7E8091E5
-:1024D000A2178D7F8E7F8093A21710929E17109265
-:1024E0009F171092A0171092A11708950E940FD85D
-:1024F000609153097091540986EF9BE30E94E0DDDF
-:1025000083EF9BE30C94ACCE0E94D1C981110C9453
-:10251000A7C960E070E0CB0108954F925F926F927F
-:102520007F928F929F92AF92BF92CF92DF92EF9263
-:10253000FF920F931F93CF93DF9300D01F92CDB7DD
-:10254000DEB74C015B016A01F22E6E2D80E00E9425
-:102550006FE5182F81111CC0409151096E2D89E043
-:102560000E94092E812F0F900F900F900F90DF91F6
-:10257000CF911F910F91FF90EF90DF90CF90BF9080
-:10258000AF909F908F907F906F905F904F90089545
-:10259000002331F1409151096E2D84E00E94092EF3
-:1025A0000E940FD881ED9BE30E94ACCE61E08F2D9D
-:1025B0000E9425CC0091500983E08093500981E06E
-:1025C00080934F0980914F09882341F060E08F2D5F
-:1025D0000E9425CC81E00E94EADDF4CF00935009EF
-:1025E000409151096E2D85E00E94092E20E030E0D7
-:1025F000A901F40160817181828193810F94B139C5
-:10260000882371F080E090E0A0ECB0E489839A83A5
-:10261000AB83BC83BE016F5F7F4FC4010E944EB588
-:1026200020E030E0A901F501608171818281938110
-:102630000F94B139882351F140908D0950908E0943
-:1026400060908F097090900980E090E0A8ECB1E470
-:1026500080938D0990938E09A0938F09B093900970
-:1026600080E090E0A0ECB0E489839A83AB83BC83E4
-:10267000BE016F5F7F4FC5010E944EB540928D092C
-:1026800050928E0960928F0970929009812C912C42
-:1026900080E4A82EBA2C03E020E030E0A901F60186
-:1026A00060817181828193810F946840181684F44F
-:1026B0004091510960E086E00E94092E89829A8249
-:1026C000AB82BC82BE016F5F7F4FC6010E944EB5D8
-:1026D000F09050090093500910924F094091510910
-:1026E00060E087E00E94092E80914E09811104C0AC
-:1026F00081E00E94EADDF8CFF0925009813061F26A
-:1027000031CF4F925F926F927F928F929F92AF9252
-:10271000BF92FF920F931F93CF93DF93CDB7DEB796
-:10272000A0970FB6F894DEBF0FBECDBFF82E4A01BA
-:102730005B012801390120E030E0A901C301B801A3
-:102740000F94B139811111C0FF2019F081E0F81206
-:1027500092C060E070E88BE395E420E030E040E771
-:1027600052E40F94023F2B013C014D8E5E8E6F8E22
-:1027700078A20F2D10E0F801E253F44CE491772495
-:1027800073941E160CF4712CFF24F39420E030E0B7
-:10279000A901C501B4010F94684018160CF0F12C82
-:1027A00080E00E9485B269837A838B839C8381E079
-:1027B0000E9485B26D837E838F83988782E00E941A
-:1027C00085B269877A878B879C8783E00E9485B270
-:1027D0006D877E878F87988B000F111F000F111F49
-:1027E000E1E0F0E0EC0FFD1F0E0F1F1FF80110825B
-:1027F000118212821382CE0101960E94D0B1F8019B
-:1028000080829182A282B382198A1A8A1B8A1C8AC8
-:102810001D8A1E8A1F8A188E198E1A8E1B8E1C8E78
-:1028200080914C0990914D09892B61F49E012F5E96
-:102830003F4F40915109BE01635E7F4FCE0101962B
-:102840000E94D6960E947F8F7F100E94D6BAA096D3
-:102850000FB6F894DEBF0FBECDBFDF91CF911F91B1
-:102860000F91FF90BF90AF909F908F907F906F904F
-:102870005F904F90089560E070E080E793E46DCF43
-:10288000CF92DF92EF92FF920F931F93CF93DF933C
-:1028900000D01F92CDB7DEB705E1041B442361F0E1
-:1028A00082E090E0A0E0B0E089839A83AB83BC83B0
-:1028B000CE0101960E946740E02FF0E086E0089F7D
-:1028C000800111248091FC1181111AC089E79FE0D9
-:1028D000B8010E94DDC7081B190B80E2C82ED12C5D
-:1028E000E12CF12C0730110588F0C982DA82EB82E5
-:1028F000FC82CE0101960E946740081B190BF2CFA3
-:10290000E450FE4E10828CEF91E1E2CF0F900F90D9
-:102910000F900F90DF91CF911F910F91FF90EF904B
-:10292000DF90CF9008954F925F926F927F92AF9217
-:10293000BF92CF92DF92EF92FF920F931F93CF93AC
-:10294000DF9300D01F92CDB7DEB77B01142F41FB80
-:10295000662760F90E94733F882309F45CC0D12C7C
-:10296000C12CE114F10439F0C7010E94B43E96E095
-:10297000899F6001112410FF20C080E890E08C192D
-:102980009D096CE070E00F9448415B0100E810E0A5
-:1029900090E2492E512C612C712C81E0A81AB108CB
-:1029A000B7FC0DC049825A826B827C82CE010196AF
-:1029B0000E946740081B190BF0CF00E810E0CD28FB
-:1029C000B9F0C80166E070E00F94344120914A09E3
-:1029D00030914B094091480950914909062F609167
-:1029E0004709C7010E94A74196E0899F80011124F1
-:1029F00080E2C82ED12CE12CF12C0730110558F0C3
-:102A0000C982DA82EB82FC82CE0101960E94674085
-:102A1000081B190BF2CF0F900F900F900F90DF91C2
-:102A2000CF911F910F91FF90EF90DF90CF90BF90CB
-:102A3000AF907F906F905F904F9008958F929F928C
-:102A4000AF92BF92EF92FF920F931F93CF93DF93BA
-:102A500000D01F92CDB7DEB7982F862F7A01122FA4
-:102A6000692F0E94733F882309F446C020914A09C8
-:102A700030914B09409148095091490904E1609116
-:102A80004709C7010E94A74196E0899F7001112460
-:102A900080E2882E912CA12CB12C87E0E816F1045D
-:102AA00058F089829A82AB82BC82CE0101960E9444
-:102AB0006740E81AF90AF1CF812F110F990BAA0B81
-:102AC000BB0B89839A83AB83BC83809146099AE7C9
-:102AD0009093801680938116CE0101960E946740E4
-:102AE00080E290E0A0E0B0E089839A83AB83BC836E
-:102AF000CE0101960E9467400F900F900F900F90AB
-:102B0000DF91CF911F910F91FF90EF90BF90AF9009
-:102B10009F908F900895EF92FF920F931F93CF9302
-:102B2000DF93FB01D081DD2341F17B018C016D2F0F
-:102B30000F94FD09F801C189C195FFEFEF1AFF0A53
-:102B4000F70181917F01F801882341F09089C90F35
-:102B5000D82F682FC8010F94FD09F2CFD03259F059
-:102B600083899189890F8C0FDF91CF911F910F91EC
-:102B7000FF90EF9008958089F6CF80E0F5CF81E057
-:102B8000809345091092410910924209109243091D
-:102B90001092440908952F923F924F925F926F9244
-:102BA0007F928F929F92AF92BF92CF92DF92EF92DD
-:102BB000FF920F931F93CF93DF9300D000D0CDB738
-:102BC000DEB71C017E836D8329013A01470158015C
-:102BD00020E030E040E05FECC301B2010F946840B8
-:102BE00018162CF0412C512C612C2FEC722EC301A5
-:102BF000B2010F94743F2B013C0120E030E040E033
-:102C00005FE4C501B4010F94B13987FD05C0812C83
-:102C1000912CA12C9FE4B92EC301B2010F94B839B5
-:102C20009B01AC01ED81FE81608171818281938184
-:102C30000F94073E0F947B3F69837A838B839C8339
-:102C4000C501B4010F94743F7B018C01E418F508B1
-:102C5000060917091F92912C812C88E0A82E88E480
-:102C6000B82EC980DA80A30192016D817E81C101F5
-:102C70000E94EB2C0F9026960FB6F894DEBF0FBE85
-:102C8000CDBFDF91CF911F910F91FF90EF90DF901B
-:102C9000CF90BF90AF909F908F907F906F905F90FC
-:102CA0004F903F902F9008952F923F924F925F92B6
-:102CB0006F927F928F929F92AF92BF92CF92DF924C
-:102CC000EF92FF920F931F93CF93DF931C01EB01C1
-:102CD000CA01B9010F94B6392AE037ED43E25DE34A
-:102CE0000F94173A2B013C0120E030E040E05FEC0C
-:102CF0000F94684018162CF0412C512C612C3FEC9D
-:102D0000732EC301B2010F94743F2B013C01688103
-:102D100079818A819B810F94B6392AE037ED43E2AD
-:102D20005DE30F94173A6B017C01C301B2010F946C
-:102D3000B8399B01AC01C701B6010F94073E0F944F
-:102D40007B3F6B0188E79FE0A0E0B0E08419950924
-:102D5000A609B7091F9248012CEFA22E27E4B22E34
-:102D60007C018D01A3019201BE01C1010E94EB2CE7
-:102D70000F90DF91CF911F910F91FF90EF90DF9017
-:102D8000CF90BF90AF909F908F907F906F905F900B
-:102D90004F903F902F9008952F923F924F925F92C5
-:102DA0006F927F928F929F92AF92BF92CF92DF925B
-:102DB000EF92FF920F931F93CF93DF9300D000D039
-:102DC0001F921F92CDB7DEB71C0178876F83790100
-:102DD0001A830983BA01550F880B990B0F94B839E0
-:102DE0004B015C0120E030E040E05FEC0F94684074
-:102DF00018162CF0812C912CA12C2FECB22EC50191
-:102E0000B4010F94743F2B013C01B701FF0C880BF8
-:102E1000990B0F94B8394B015C0120E030E040E0A1
-:102E20005FE40F94B13987FD05C0812C912CA12C52
-:102E30009FE4B92EEF81F88560817181072E000C27
-:102E4000880B990B0F94B8396B017C01C301B20157
-:102E50000F94B8399B01AC01C701B6010F94073E2E
-:102E60000F947B3F6B837C838D839E83C501B4016C
-:102E70000F94743F7B018C01E418F50806091709CB
-:102E80001F9289809A808EE0A82E88E4B82ECB808D
-:102E9000DC80A30192016F817885C1010E94EB2C37
-:102EA0000F9028960FB6F894DEBF0FBECDBFDF910E
-:102EB000CF911F910F91FF90EF90DF90CF90BF9037
-:102EC000AF909F908F907F906F905F904F903F90CA
-:102ED0002F9008956F927F928F929F92AF92BF92A0
-:102EE000CF92DF92EF92FF920F931F93CF93DF93D6
-:102EF0003C01EB01688179818A819B810F947B3F42
-:102F00001F92912C812C84E1A82E88E4B82E6B01AD
-:102F100018ECE12EF12C00E010E020E030E0A901F7
-:102F2000BE01C3010E94EB2C0F90DF91CF911F9146
-:102F30000F91FF90EF90DF90CF90BF90AF909F9058
-:102F40008F907F906F9008958F929F92AF92BF92D3
-:102F5000CF92DF92EF92FF920F931F93CF93DF9365
-:102F6000EC014B016091360970E090E080E00F9435
-:102F7000B63929EC38EC48EC5EE30F94173A20E0C0
-:102F800030E040E05FE30F94083E0F947B3F1F92D8
-:102F900084EEA82E87E4B82E6B0114E6E12EF12C06
-:102FA00000E010E020E030E0A90166E379E0CE0126
-:102FB0000E94EB2C0F90DF91CF911F910F91FF900A
-:102FC000EF90DF90CF90BF90AF909F908F9008953B
-:102FD0008F929F92AF92BF92CF92DF92EF92FF9229
-:102FE0000F931F93FB01C080D12C21E02F9328E089
-:102FF000822E2CEC922E3EEDA32E37E4B32EE12C44
-:10300000F12C8701EA9420E030E0A9010E94EB2C2A
-:103010000F901F910F91FF90EF90DF90CF90BF9096
-:10302000AF909F908F9008956F927F928F929F9212
-:10303000AF92BF92CF92DF92EF92FF920F931F93C6
-:10304000CF93DF933C01EB014A016881798190E0E5
-:1030500080E00F94B6392DEC3CEC4CEC5DE30F9422
-:10306000173A20E030E040E251E40F94073E0F941D
-:103070007B3F1F9288EDA82E87E4B82E6B0112E2E9
-:10308000E12EFF24F39400E010E02AE030E040E07D
-:1030900050E0BE01C3010E94EB2C0F90DF91CF9155
-:1030A0001F910F91FF90EF90DF90CF90BF90AF9066
-:1030B0009F908F907F906F900895282F30E0F901B6
-:1030C000E151F84C9491F901E857F44C44912E5B8E
-:1030D000344CF9012491222309F435C0992311F1CC
-:1030E00091509231F8F4E92FF0E08827E558F74E37
-:1030F0008E4F0D945C41F601A8003C01E201CA002C
-:10310000A0014C02F0012402420186025E01B401DA
-:103110000802A001660174026802809180008F7726
-:1031200080938000E22FF0E0EE0FFF1FE85DF44C8B
-:10313000A591B4918FB7F894EC91611148C0409576
-:103140004E234C938FBF0895809180008F7DE8CFF0
-:1031500080918000877FE4CF84B58F7784BDE2CFF4
-:1031600084B58F7DFBCF8091B0008F778093B000C6
-:10317000D9CF8091B0008F7DF9CF809190008F776B
-:1031800080939000CFCF809190008F7DF9CF809178
-:103190009000877FF5CF8091A0008F778093A0006B
-:1031A000C1CF8091A0008F7DF9CF8091A000877F53
-:1031B000F5CF809120018F7780932001B3CF80914C
-:1031C00020018F7DF9CF80912001877FF5CF4E2B95
-:1031D000B8CFEF92FF920F931F93CF93DF93CDB7AA
-:1031E000DEB762970FB6F894DEBF0FBECDBF611594
-:1031F000710579F460E062960FB6F894DEBF0FBEF9
-:10320000CDBFDF91CF911F910F91FF90EF900D9463
-:103210005D186F3F710511F461E0EDCF8B01F82E61
-:10322000682FCE0101960E949ECD8989882309F4DA
-:1032300077C0E981FA819F858889911134C06081C6
-:1032400090E023E030E0A901481B590B440F551FC3
-:10325000042E01C0220F0A94EAF72095262362E08B
-:1032600070E001C0660F4A95EAF7262B2083FC0127
-:103270003396EE0FFF1F21E030E02C0F3D1FE20FD1
-:10328000F31F0190F081E02D1183008362960FB649
-:10329000F894DEBF0FBECDBFDF91CF911F910F918C
-:1032A000FF90EF9008952A892111F0CFAFEFB0E0A1
-:1032B000923029F0AD85BE850D90BC91A02D608126
-:1032C00090E023E030E0A901481B590B440F551F43
-:1032D000042E01C0220F0A94EAF72095262362E00B
-:1032E00070E001C0660F4A95EAF7262B208303960B
-:1032F000880F991FE1E0F0E0EC0FFD1F8E0F9F1F7C
-:10330000FC01E080F18098010F94F83D2FEF30E050
-:1033100040E050E00F94A43DF70131832083B6CF05
-:1033200061E00F37110508F460E08F2D64CF109233
-:10333000851881E08093841810925F1861E084E121
-:103340000F945D1861E085E10F945D18E9EBF0E002
-:1033500080818E7F808380818D7F808388E48093CD
-:10336000B80085E48093BC000895CF93DF9391E08B
-:1033700090930A188823B9F0C091B800D091BA0090
-:103380008091BC008A7B8093BC0060E084E10F9454
-:103390005D1860E085E10F945D180F949719D09344
-:1033A000BA00C093B800DF91CF9108958F929F9299
-:1033B000AF92BF92CF92DF92EF92FF920F931F9343
-:1033C000CF93DF9300D000D0CDB7DEB791E19983E2
-:1033D0001A828B831C826D834E8381E08093AE18AA
-:1033E00082E68093AD181092AC181092AB1846E0AC
-:1033F00050E0BE016F5F7F4F85EF98E10F94750736
-:103400000091AB18013208F094C01091AD180F94E0
-:10341000FF066B017C0180918518811165C082E0F7
-:103420008093851881E0809384188FEF80938318B0
-:103430001092821800938118ABE8B8E1E1E6F8E158
-:1034400080E008138FC01092601880916018110FEF
-:10345000182B1093601880915F18813009F086C096
-:1034600010925F180F94FF066B017C018091601829
-:103470008093BB008091871890918818A09189183B
-:10348000B0918A18892B8A2B8B2B99F00F94FF0609
-:1034900000918718109188182091891830918A1806
-:1034A0006C197D098E099F09061717072807390728
-:1034B000E0F18091BC0083FDD9CF85EC8093BC0006
-:1034C0000F94FF066B017C0180918518823009F40E
-:1034D0004FC0809183188F3F61F1809183188032B3
-:1034E00041F18091831825C08091871890918818A8
-:1034F000A0918918B0918A18892B8A2B8B2B09F4FB
-:103500008ACF0F94FF068090871890908818A0901B
-:103510008918B0908A186C197D098E099F09861642
-:103520009706A806B90608F076CF809186180F9402
-:10353000B5191092AC181092AB181092AE182696CE
-:103540000FB6F894DEBF0FBECDBFDF91CF911F91B4
-:103550000F91FF90EF90DF90CF90BF90AF909F9032
-:103560008F9008959D9191938F5F6BCF85EEA6CF3D
-:103570008091871890918818A0918918B0918A1825
-:10358000892B8A2B8B2B09F49FCF0F94FF06009178
-:103590008718109188182091891830918A186C1911
-:1035A0007D098E099F09061717072807390708F0B4
-:1035B0008BCFBBCF85ED8093BC0080918718909115
-:1035C0008818A0918918B0918A180796A11DB11D7D
-:1035D00023E0B695A795979587952A95D1F72091E1
-:1035E000BC0024FD03C010928518089540918718EF
-:1035F000509188186091891870918A18452B462B34
-:10360000472B69F30097A105B10541F025E32A9501
-:10361000F1F700000197A109B109E1CF8091861867
-:103620000D94B519CF93DF93EC016C8161708881A3
-:103630000F945D186C81669561708A81DF91CF91DE
-:103640000D945D18860F911DFC0183A18F3F19F029
-:10365000642F0D945D180895CF93DF9390E0FC01E3
-:10366000E857F44C24918E5B944CFC0184918823A0
-:10367000C9F090E0880F991FFC01EB52F84CA5911E
-:10368000B491FC01E85DF44CC591D49161110DC079
-:103690009FB7F8948C91209582238C93888128235E
-:1036A00028839FBFDF91CF910895623051F49FB777
-:1036B000F8943C91822F809583238C93E8812E2B64
-:1036C000EFCF8FB7F894EC912E2B2C938FBFEACFCE
-:1036D000CF93DF93EC01ECA5FDA5309709F470C002
-:1036E000138E128E118E108E178A168A82E490E045
-:1036F000958F848F848596EF980F943048F02EEC48
-:10370000280F243028F022EC280F283008F051C070
-:103710002FE030E0378B268B20E430E0318F208F94
-:1037200027E230E0338F228F943050F02EEC280FB8
-:10373000243030F022EC280FB0E0A0E0283010F464
-:10374000A8E6B0E02C91943028F032EC380F3830F5
-:1037500008F443C031E0232B943048F09EEC980FDE
-:10376000943028F08E53B0E0A0E0883010F4A8E642
-:10377000B0E02C93248536EF320F343080F18EEC9C
-:10378000820F843060F182EC820F883058F190E033
-:1037900080E0948B838B343040F52650330B81E0EE
-:1037A00001C0880F2A95EAF7858B848D958D019746
-:1037B000F1F7CF010F9494088CA59DA50F947E0876
-:1037C0008EA59FA5009719F161E00F945D1861E047
-:1037D0008EA5DF91CF910D942C1B34E0BCCF8BE6EE
-:1037E00090E0D7CF8DE690E0D4CF88E02233E1F2AD
-:1037F00084E02333C9F282E02433B1F282EC820FF9
-:10380000883018F42E53330BCACF81E0CDCFDF912F
-:10381000CF910895EF92FF920F931F93CF938C0156
-:10382000C42F79016150673008F045C0E62FF0E001
-:103830008827E25EF34E8E4F0D945C41DA0022023F
-:10384000F40078019A0168016202780183E2E80ECF
-:10385000F11C005D1F4FF70181917F018F3F49F0FF
-:1038600061E00F942C1B61E0F701319780810F9488
-:103870005D18E016F10679F761E084E30F942C1BE4
-:1038800060E084E30F945D1861E083E30F942C1BE8
-:1038900060E083E30F945D1861E085E30F942C1BD7
-:1038A00061E085E30F945D181CBC80E58CBDC230DF
-:1038B00010F481E08DBD81E0CF911F910F91FF90B9
-:1038C000EF90089561E0C8010F94221BF4CF4111DD
-:1038D00003C041E062E0F7CF40E064E0C8010F942C
-:1038E000221B40E0F7CFF80183A160E08F3F19F37E
-:1038F000EACF842F0F949A0ADECFF70181917F01DE
-:103900000F949A0AC150C111F8CFD5CFF701849115
-:103910000F949A0AFFEFEF1AFF0AC150C111F6CFB8
-:10392000CACF8F929F92AF92BF92CF92DF92EF92C7
-:10393000FF926B017C010F94FF064B015C01C114E7
-:10394000D104E104F104B9F00F94FF066819790974
-:103950008A099B09683E73408105910580F321E047
-:10396000C21AD108E108F10888EE880E83E0981E9B
-:10397000A11CB11CE4CFFF90EF90DF90CF90BF90DF
-:10398000AF909F908F900895CF92DF92EF92FF9229
-:103990000F931F93CF93DF9300D000D01F921F92FD
-:1039A000CDB7DEB77C0118861F8285E08983F701D9
-:1039B00082A98A8360686B835C834D833E832F83F7
-:1039C00067E0CE0101960F94A3068887F70182A5D0
-:1039D00093A5892B31F080A991A9009711F00F943C
-:1039E000121B8E010F5F1F4F6E01F9E0CF0ED11C2D
-:1039F000F80161918F01C7010F94BD08F70121897A
-:103A00003289820F932F911D928B818B0C151D058E
-:103A100079F762E070E080E090E00F94911C2896C6
-:103A20000FB6F894DEBF0FBECDBFDF91CF911F91CF
-:103A30000F91FF90EF90DF90CF9008952FB7F894FB
-:103A400060914F18709150188091511890915218B0
-:103A50002FBF0895CF92DF92EF92FF920F941E1D19
-:103A60006B017C0128E5C20E22E0D21EE11CF11C94
-:103A70000E94C8DD8F3F71F00F941E1D6C197D09E7
-:103A80008E099F0997FDF4CF80E0FF90EF90DF90C3
-:103A9000CF90089581E0F9CF2F923F924F925F929D
-:103AA0006F927F928F929F92AF92BF92CF92DF924E
-:103AB000EF92FF920F931F93CF93DF93CDB7DEB7B3
-:103AC00061970FB6F894DEBF0FBECDBF1C011C86F8
-:103AD0001B8685E08987F10182A98A876B8763E06D
-:103AE000CE0109960F94A3068C87F2E0F98B9E0114
-:103AF000235F3F4F3E872D87F10184A595A5009751
-:103B000061F00F949408C1010F94F3081816190678
-:103B10007CF4C1010F94D808F6CF82A593A5892B18
-:103B200091F380A991A9009771F30F94121BEBCF29
-:103B3000F10186A597A5009741F061E00F945D180B
-:103B400061E0F10186A50F942C1B8E01075F1F4FCA
-:103B5000F80161918F01C1010F94BD082D853E854B
-:103B600002171307A9F7F10186A597A5009719F089
-:103B700062E00F942C1B62E070E080E090E00F9414
-:103B8000911C0F941E1D2B013C018985CB84D12CE7
-:103B9000F12CE12CDD24DA94E82A812C912C5401BB
-:103BA00005E010E00F941E1D641575058605970548
-:103BB00031F00150110909F474C02B013C01C1011D
-:103BC0000F94D80897FD0FC07A2D692D582D4427E2
-:103BD0004C019924092C000CAA08BB08842A952AB8
-:103BE000A62AB72ABB24C814D904EA04FB04D1F6D8
-:103BF00026013701812C912C54010F941E1D6B015D
-:103C00007C0125E030E0388B2F8710E00F941E1DDB
-:103C10006C157D058E059F0549F0EF85F889319774
-:103C2000F88BEF87EF2BE9F16B017C01C1010F9459
-:103C3000D808DC0197FD1CC09201A301B401C501A5
-:103C400008E00F947641BB27EB2FEE0FEE0B422ED0
-:103C50004A2A532E5B2A6E2E642A7E2E752A8E2EB9
-:103C6000862A9E2E972AAE2EA82ABE2EB92A1F5F1C
-:103C7000153061F6F10186A597A5009741F061E046
-:103C80000F945D1861E0F10186A50F942C1BC10112
-:103C90000F94F3081816190664F4C1010F94D8089C
-:103CA000F6CF412C512C612C712C812C912CA12C04
-:103CB000B12CF10184A595A5009711F00F947E0811
-:103CC00062E070E080E090E00F94911CF101178AAF
-:103CD0009201A301B401C50108E30F949141298326
-:103CE0009201A301B401C50100E30F9491412A831D
-:103CF0009201A301B401C50108E20F9491412B8305
-:103D00009201A301B401C50100E20F9491412C83FB
-:103D10009201A301B401C50108E10F9491412D83E3
-:103D20009201A301B401C50100E10F9491412E83DA
-:103D30009201A301B401C50108E00F9491412F83C2
-:103D4000488667E0CE0101960F94A306481202C090
-:103D5000411011C081E0F101878BF989F13019F030
-:103D600021E0298BC9CE412C512C612C712C812C46
-:103D7000912CA12CB12C9201A301B401C50108E042
-:103D80000F949141B901CA0161960FB6F894DEBF54
-:103D90000FBECDBFDF91CF911F910F91FF90EF909C
-:103DA000DF90CF90BF90AF909F908F907F906F905B
-:103DB0005F904F903F902F9008951F920F920FB6F3
-:103DC0000F9211242F933F938F939F93AF93BF93A1
-:103DD00080914F1890915018A0915118B09152189D
-:103DE00030914E1823E0230F2D3758F50196A11D71
-:103DF000B11D20934E1880934F1890935018A093A4
-:103E00005118B09352188091531890915418A09162
-:103E10005518B09156180196A11DB11D80935318E5
-:103E200090935418A0935518B0935618BF91AF9122
-:103E30009F918F913F912F910F900FBE0F901F90E8
-:103E4000189526E8230F0296A11DB11DD2CF1F920F
-:103E50000F920FB60F9211240BB60F922F933F9330
-:103E60004F935F936F937F938F939F93AF93BF9382
-:103E7000EF93FF938091B900887F803609F44DC09D
-:103E800008F040C0883209F4A9C028F5803109F44F
-:103E90009DC0C8F4882309F4FBC0883009F496C09B
-:103EA000FF91EF91BF91AF919F918F917F916F9112
-:103EB0005F914F913F912F910F900BBE0F900FBECE
-:103EC0000F901F901895883109F488C0803241F70F
-:103ED0008093831814C0803409F49DC040F480336B
-:103EE000B9F38833E9F68093831885ECB0C0803548
-:103EF00009F485C0883509F496C0883489F60F9492
-:103F0000DA1ACECF883909F48CC038F5883729F011
-:103F100050F4883611F0803719F683E080938518C5
-:103F200010924D1857C0883809F47BC0803919F0B9
-:103F3000803809F0B5CF80914D18803208F071C0FB
-:103F4000E0914D1881E08E0F80934D188091BB0059
-:103F5000F0E0E35DF74E80833DC0803B39F0E0F454
-:103F6000803A09F479C0883A09F09ACF84E08093C6
-:103F7000851810922C1810922B18E0915918F09176
-:103F80005A18199580912B1881110FC081E08093E8
-:103F90002B1810920B1809C0803C09F4A6CF883C5E
-:103FA00009F4A3CF883B09F07BCFE0912C1881E086
-:103FB0008E0F80932C18F0E0E55FF74E80818093A0
-:103FC000BB0090912C1880912B1829C0809160180B
-:103FD0008093BB0085EC8093BC0062CF90918218E7
-:103FE00080918118981758F5E091821881E08E0F22
-:103FF00080938218F0E0EF59F74E8081E9CFE0918D
-:10400000821881E08E0F809382188091BB00F0E0CF
-:10401000EF59F74E808390918218809181189817FC
-:10402000C8F285E8D8CFE091821881E08E0F8093A6
-:1040300082188091BB00F0E0EF59F74E80838091A9
-:10404000841881115CCF81E080935F1884EA8093AB
-:10405000BC001092851824CF85EC8093BC00109290
-:10406000851880914D18803230F4E0914D18F0E0C1
-:10407000E35DF74E108260914D1870E0E0915718A3
-:10408000F09158188DE298E1199510924D1808CFCB
-:104090001092831834CF1F920F920FB60F921124F3
-:1040A0000BB60F922F933F934F935F936F937F9332
-:1040B0008F939F93AF93BF93EF93FF93E091E81794
-:1040C000F091E917309749F0A685B7858585968DDB
-:1040D00091FF16C09C918923B1F4FF91EF91BF919C
-:1040E000AF919F918F917F916F915F914F913F9190
-:1040F0002F910F900BBE0F900FBE0F901F90189531
-:104100009C91892351F7A389B4899C9185898095D5
-:1041100089238C93868997890197F1F7608D718D3A
-:10412000A685B785558538E020E0CB010197F1F7EA
-:10413000822F90E095958795282F4C91452309F083
-:104140002068315091F7868D81FD20958091E6178A
-:1041500090E001968F7399273091E717381799F0FF
-:10416000A091E617B0E0AA55B84E2C938093E617BD
-:10417000828D938D0197F1F7A389B4898C919589EC
-:10418000892B8C93AACF868D8160868FF1CFDC013D
-:1041900015966C931597262F30E050E040E0ED9196
-:1041A000FC910190F081E02D61E11994DC01ED9129
-:1041B000FC910088F189E02D19958F5F0895615079
-:1041C000DC01ED91FC910684F785E02D1994DC016A
-:1041D000ED91FC910484F585E02D199583500895A7
-:1041E0006D5FDC01ED91FC910284F385E02D199463
-:1041F000DC01ED91FC910084F185E02D19956115AC
-:1042000071058105910539F06F3F7F4F8F4F9F4FAB
-:1042100021F080E0089582E0089581E00895CF9232
-:10422000DF92EF92FF921F93CF93DF93EC0190E028
-:1042300080E00F94B63925ED34E045E352E40F9465
-:10424000173A20E030E04AE754E40F94023F6B0154
-:104250007C012AE037ED43EA5CE369857A858B854A
-:104260009C850F94083EA70196010F94173A26E605
-:1042700036E646EA5EE30F94023F20E030E040E895
-:104280005FE30F94073E0F947B3F162FE881F9817F
-:104290000480F581E02D603108F060C061E0CE015E
-:1042A00019952AE037ED43EA5CE369857A858B85C9
-:1042B0009C850F94083EA70196010F94173A2CEEA7
-:1042C00031E548E35EE30F94023F20E030E040E850
-:1042D0005FE30F94073E0F947B3F162F103208F0D8
-:1042E0001FE1912F9F718B81807E892B8B832A8187
-:1042F000382F8C81482F4F7050E0E881F981019070
-:10430000F081E02D60E1CE011995612F70E090E021
-:1043100080E00F94B8392D853E854F8558890F94DC
-:10432000173A0F947B3F862F8F716A81607E682BCE
-:104330006A83262F3B818C81482F4F7050E0E881A3
-:10434000F9810190F081E02D60E1CE01DF91CF9104
-:104350001F91FF90EF90DF90CF90199460E0CE0115
-:104360001995BCCFDC0196964D935D936D937C932C
-:104370009997ED91FC910190F081E02D9A01AB01AC
-:1043800060E71994DC01ED91FC910280F381E02D4E
-:1043900060E0199562FB882780F908959A01AB01C6
-:1043A000DC0158962C935897632F63705996EC91C3
-:1043B0005997EC7FE62B5996EC935997ED91FC9128
-:1043C0000190F081E02D60E019940F94BB09862FD5
-:1043D0008F700895262F2F70DC0192966C91929722
-:1043E000607F622B92966C93929792962D913D915D
-:1043F0004D915C919597ED91FC910190F081E02DAC
-:104400006CE61994DC0192964D935D936D937C93C9
-:104410009597ED91FC910190F081E02D9A01AB010F
-:104420006CE61994CF93DF93DC01EB01298112969E
-:104430009C911297291718F113968C911397821754
-:10444000F0F0E88115968C911597E817C0F43C813F
-:1044500016964D915C91291B283018F0480F511D7C
-:10446000277081E090E001C0880F2A95EAF7E40FF9
-:10447000F52FF11D2081332329F0822B8083DF91DA
-:10448000CF91089580958223F9CFDB01ED91FC91C6
-:1044900019940F931F93CF93DF931F92CDB7DEB77D
-:1044A00000914B1610914C16E0917A16F0917B1604
-:1044B00082E0199530E020E04AE0B80189E496E115
-:1044C0000F944522182FE0917A16F0917B1683E025
-:1044D0001995E0917A16F0917B1680E019951123D9
-:1044E000B9F160914B1670914C169E012F5F3F4FB2
-:1044F00046E489E496E10F94452289818093491628
-:1045000060914B1670914C169E012F5F3F4F47E410
-:1045100089E496E10F944522898180934A1660913F
-:104520004B1670914C1630E020E048E489E496E1A7
-:104530000F9445228093541660914B1670914C163F
-:104540002CE736E147E189E496E10F94452211E03A
-:10455000812F0F90DF91CF911F910F910895DF92DE
-:10456000EF92FF920F931F93CF93DF93182F062F95
-:10457000C42FD42FF62EF40EEE24E394DD24DA9427
-:104580008F2D8D1BD83090F58C2F887F800F9C2F1E
-:1045900096959695969528EF929FC00D1124CC2361
-:1045A000D1F197E0C92760914B1670914C1610938A
-:1045B00065168093661681E080936816CF5FC7709A
-:1045C0008FEF90E001C0880FCA95EAF780936716D5
-:1045D00025E636E14BE389E496E1DF91CF911F9127
-:1045E0000F91FF90EF90DF900D94452260914B1654
-:1045F00070914C161093651680936616E0926816BB
-:10460000D092671625E636E14BE389E496E10F94F4
-:104610004522D850B5CFDF91CF911F910F91FF90D8
-:10462000EF90DF900895AF92BF92CF92DF92EF921A
-:10463000FF920F931F93CF93DF93EC01E62EF42E9E
-:10464000122F022FD62ED20ECC24CA945C012CE15C
-:10465000A20EB11C8D2D801B083070F5812F887F34
-:104660008E0D912F96959695969528EF929F100D09
-:104670001124112371F197E019276A817B818C8FB6
-:10468000FD8E1F8E1F5F17708FEF90E001C0880FA7
-:104690001A95EAF78E8F9E01245E3F4F4BE3CE01C1
-:1046A000DF91CF911F910F91FF90EF90DF90CF900E
-:1046B000BF90AF900D9445226A817B818C8FFD8ED7
-:1046C0001F8ECE8E95014BE3CE010F9445220850EC
-:1046D000C1CFDF91CF911F910F91FF90EF90DF90AD
-:1046E000CF90BF90AF9008950F93CF93C82F01E064
-:1046F00020E8482F60E089E496E10F94A00A88231F
-:1047000049F020E84C2F60E089E496E1CF910F91C9
-:104710000D941323CF910F910895FF920F931F9340
-:10472000CF93DF93D82F162FF42EC22F022F242FD2
-:10473000462F682F89E496E10F94A00A882309F197
-:104740002F2D412F6D2F89E496E10F9413234C2FC9
-:10475000612F8D2F0F94AF228FEF8F0D4C2F612F74
-:104760008D0F0F94AF224FEF4C0F410F2F2D6D2F58
-:1047700089E496E1DF91CF911F910F91FF900D9405
-:104780001323DF91CF911F910F91FF900895DF9236
-:10479000EF92FF920F931F93CF93DF937C01162F1D
-:1047A000C42FD22ED02F0F94A00A882351F0DC0FF3
-:1047B0002D2D4C2F612FC7010F941323CF5FDC13D6
-:1047C000F7CFDF91CF911F910F91FF90EF90DF9086
-:1047D0000895EF92FF920F931F93CF93DF93C82F0B
-:1047E0007B01142FCB010E94B43E26E0C29FE00162
-:1047F0001124112389F091E090936916829F900112
-:1048000011242E5F0CE042E36C2F615089E496E1A5
-:104810000F94C72310926916A7016CE38C2F0E9496
-:10482000C464112319F081E080936916DF91CF9160
-:104830001F910F91FF90EF9008953F924F925F92DA
-:104840006F927F928F929F92AF92BF92CF92DF92A0
-:10485000EF92FF920F931F93CF93DF931F921F92BC
-:10486000CDB7DEB75C01680181E0809340094090DC
-:104870003B0950903C0960903D0970903E094114FD
-:1048800051046104710479F091E0141415040CF0E2
-:1048900090E090933A0910923B0910923C091092D3
-:1048A0003D0910923E0910913A0930903F0910924B
-:1048B0003F09311005C080917502882309F470C04A
-:1048C00049012A013B01C9010E94B43E082F80E042
-:1048D000E114F10419F0C7010E94B43E1A82198252
-:1048E000C114D104B1F4402F50E0282F30E0CA01A8
-:1048F000820F931F46976CF485E190E0841B950B23
-:10490000821B930B97FD0196959587958A8381E08D
-:10491000898301E021EA34E2A401BE016F5F7F4F89
-:10492000CE0102960E94D840C114D10491F08A8130
-:10493000882321F01A8289818F5F898300E024EA2D
-:1049400034E2A601BE016F5F7F4FCE0102960E9446
-:10495000D840E114F10459F000E021EA34E2A70163
-:10496000BE016F5F7F4FCE0102960E94D84041E0AA
-:104970004127B30181E00F94E923C5010E94B43EB1
-:10498000412FB50194E1981B892F0F94E92333201F
-:1049900039F01123C9F041145104B1F0F201199515
-:1049A0000F900F90DF91CF911F910F91FF90EF909B
-:1049B000DF90CF90BF90AF909F908F907F906F903F
-:1049C0005F904F903F9008950E946C2EE9CFEF9238
-:1049D000FF921F93CF93DF93EC01EE85FF85309715
-:1049E00009F01995EA80FB80E9A9FAA982E01995F6
-:1049F000E9A9FAA981E0199530E020E045E1B70185
-:104A0000CE010F944522182F882341F09E012D5C82
-:104A10003F4F47E1B701CE010F944522E9A9FAA91A
-:104A200080E01995812FDF91CF911F91FF90EF903A
-:104A30000895DC0114968D919C9115978617970720
-:104A400009F43CC015967C936E931497611571051B
-:104A500079F157968C915797FB01811130C03596AB
-:104A6000E4915896EC935897645F7F4FFB016491F3
-:104A700059966C93599758968C915897082E000C1C
-:104A8000990B59962C915997821B910927FD939563
-:104A90005A962C915A97203441F0829FC0011124DC
-:104AA00026E0969587952A95E1F75B968C935B9720
-:104AB00082E192E056969C938E93559708958130AB
-:104AC00041F43F96E4915896EC935897605F7F4F7E
-:104AD000CDCF3D96E4915896EC935897625F7F4F07
-:104AE000C5CF5F926F927F928F929F92AF92BF924B
-:104AF000CF92DF92EF92FF920F931F93CF93DF93AA
-:104B0000EC01562E142F622F0F94FD096C0180E0EA
-:104B1000C114D104B1F08C819D810F94F309B82E9A
-:104B2000FB88EC888989580E1E198A89181B0E2D5E
-:104B30002F2D412F652DCE010F94A00A811111C098
-:104B40008889DF91CF911F910F91FF90EF90DF90B7
-:104B5000CF90BF90AF909F908F907F906F905F901D
-:104B60000895CB0CD11C87E0F80EF694F694F694D9
-:104B7000E10E4E01ECE18E0E911C6F2C712C1E1576
-:104B8000F9F2052D560111C0F50184916A817B81EE
-:104B90000C8F1D8F1F8E8E8F94014BE3CE010F94CF
-:104BA0004522FFEFAF1ABF0A085F8A2D8C198F15B7
-:104BB00058F3C60CD71C1F5FE2CFFF920F931F93D1
-:104BC000CF93DF93D82FF62E8A01E0915E16F091F5
-:104BD0005F1689E496E11995F80EC0E0F80124917A
-:104BE000222359F04F2D6D2F89E496E10F94712502
-:104BF000D80FC80F0F5F1F4FF1CF8C2FDF91CF91D0
-:104C00001F910F91FF900895DB011496ED91FC9197
-:104C100030E020E065E01994DB011496ED91FC9101
-:104C200030E020E062E01994DB011496ED91FC91F4
-:104C300030E020E063E01994CF92DF92EF92FF9290
-:104C40000F931F93CF93DF938C017B016A0180E068
-:104C5000F601C491811110C081E0CF3F49F04C2F83
-:104C6000B701C8010F940426882309F444C080E0EA
-:104C7000BFEFCB1ADB0AECCF4FEFCF3F89F3CE3F2C
-:104C8000D9F1C03FA0F7C03E38F04C2F4F70B701AC
-:104C9000C8010F940C26EBCFC03D38F04C2F4F705D
-:104CA000B701C8010F941426E2CFC03CF8F0D70139
-:104CB0001496ED91FC9130E020E040E064E0C80102
-:104CC0001995C295C07FCE5FD0E0CE010F94E60962
-:104CD000D7011496ED91FC9130E020E041E064E0D2
-:104CE000C8011995CE010F94E609C1CFC7FDBFCF0A
-:104CF0008C2F90E0F8CF80E0DF91CF911F910F9142
-:104D0000FF90EF90DF90CF9008954F925F926F9257
-:104D10007F928F929F92AF92BF92CF92DF92EF924B
-:104D2000FF920F931F93CF93DF93EC01562E142F16
-:104D3000622E402E220F220F220F0F94A00A8823EA
-:104D400021F1410E4E018CE1880E911CA62CB12C54
-:104D50006701762C052D12C0F60184916A817B8152
-:104D60000C8F1D8F1F8E8E8F94014BE3CE010F94FD
-:104D70004522FFEFCF1ADF0A7A94085F7110ECCF5B
-:104D8000EA0CFB1C1F5F4112E3CFDF91CF911F9113
-:104D90000F91FF90EF90DF90CF90BF90AF909F90DA
-:104DA0008F907F906F905F904F900895CF93DF9397
-:104DB000EC018991882319F00E949FCEFACFDF91F0
-:104DC000CF9108950E94E0DD8AE00C949FCE1F935E
-:104DD000CF93DF93182FEB010E940FD886EC97E357
-:104DE0000E94ACCE82EB97E3113011F488EB97E38D
-:104DF0000E94ACCEBE018EEB97E3DF91CF911F9165
-:104E00000D94E2268BE1E4EAF4E1A9E8B4E1019033
-:104E10000D928A95E1F78091A21780648093A21782
-:104E2000109297170895EF92FF920F931F93CF93CD
-:104E3000DF93CDB7DEB7A7970FB6F894DEBF0FBEEE
-:104E4000CDBF8091A21784FF0E948F7E8091A21710
-:104E500084FF58C08091981790E08F969F938F930E
-:104E60008BEC97E39F938F938E01045E1F4F1F93EC
-:104E70000F930F9448398091A2170F900F900F90C5
-:104E80000F900F900F9084FBFF24F0F884FF3AC03E
-:104E90001FA21EA2A801BE016A5D7F4F80E00F9491
-:104EA000BD0C009779F119821C826EA17FA121E0CF
-:104EB000AC01CE0101960E946A80E82E882321F081
-:104EC000CE0101960E945E7ECE0101960E94648012
-:104ED000EE20C1F00F940227C8010E949B798091B7
-:104EE00098178F5F809398178F2DA7960FB6F89419
-:104EF000DEBF0FBECDBFDF91CF911F910F91FF900D
-:104F0000EF90089510929817F12CEECF0F931F9306
-:104F1000CF93DF9300D01F92CDB7DEB79C010AE894
-:104F200016E090E1E6E7F2E0D80101900D929A9543
-:104F3000E1F7F9012081318142815381F8016085D7
-:104F40007185828593850F94083EF801608771878B
-:104F50008287938780E090E0A0EAB0E489839A8317
-:104F6000AB83BC83CE0101960E94E3B40F900F90F7
-:104F70000F900F90DF91CF911F910F910895109294
-:104F8000F8181092F71888EE93E0A0E0B0E0809354
-:104F9000F9189093FA18A093FB18B093FC1889E9BC
-:104FA00093E09093F6188093F5181092A414109241
-:104FB000A7141092891410928C14E9E8F6E187E99D
-:104FC00097E1108213827B968E179F07D1F78BEAA9
-:104FD00093E090930219809301191092031989E1CB
-:104FE000809305191092081910928214109250148F
-:104FF0001092531448E250E06FE370E08FEA95E1BD
-:105000000F9457291092E2151092E3158091E41540
-:10501000807F8093E4151092E5151092E7151092A9
-:10502000E6151092E9151092E8151092EA1589EC30
-:1050300093E09093B0158093AF154BE350E060E49C
-:1050400070E083E795E10F9457291092A61510920E
-:10505000A7158091A815807F8093A8151092A91597
-:105060001092AB151092AA151092AD151092AC15B6
-:105070001092AE1589EC93E090937415809373159C
-:105080004AE250E061E470E087E395E10F9457292C
-:1050900010926A1510926B1580916C15807F809329
-:1050A0006C1510926D1510926F1510926E1510926E
-:1050B0007115109270151092721589EC93E090930F
-:1050C0003815809337154CE250E062E470E08BEFC6
-:1050D00094E10F94572910922E1510922F1580915C
-:1050E0003015807F80933015109231151092331552
-:1050F0001092321510923515109234151092361503
-:1051000089EC93E09093FC148093FB1444E150E00D
-:105110006CE070E08FEB94E10F9457291092F21439
-:105120001092F3148091F414807F8093F414109201
-:10513000F5141092F7141092F6141092F9141092BC
-:10514000F8141092FA1489EC93E09093C0148093B1
-:10515000BF141092EB151092EC151092ED151092F1
-:10516000EE151092EF151092F4151092F51510929D
-:10517000F6151092F7151092F8151092FD15109271
-:10518000FE151092FF151092001610920116109243
-:105190002B1610922C1610922D1610922E1610927D
-:1051A0002716109228161092291610922A1610927D
-:1051B000231610922416109225161092261610927D
-:1051C0001F1610922016109221161092221610927D
-:1051D0000B1610920C1610920D1610920E161092BD
-:1051E0000A161092091610920816109207161092BD
-:1051F000061684E0809332161092301610922F1605
-:10520000109231168DEC94E69093441680934316D9
-:10521000109248161092471687EE93E09093461628
-:10522000809345168FEF8093861680938716809320
-:10523000881680938316809384168093851681E068
-:1052400099E19093A4178093A3178091A217847E6D
-:105250008B7F8093A21710929E1710929F17109227
-:10526000A0171092A11710929A1710929B171092E4
-:105270009C1710929D1710929917109298171092E0
-:105280009717E9E8F6E18EE091E0DF019C011D92BD
-:1052900021503040E1F780910A018E7F80930A010E
-:1052A00080910B0180958170809309010895CF92C0
-:1052B000DF92EF92FF920F931F93CF93DF93EC0156
-:1052C0008B016A011A821B828C81807F8C831D82F4
-:1052D0001E821F828885807F88878EEA97E4A1EEF0
-:1052E000BDE389879A87AB87BC8740E050E060E0E8
-:1052F0007FE34D875E876F87788B29EC33E03983B6
-:1053000028831A8A198A8B8B9C8BAD8BBE8B1F8A44
-:10531000188E898D8C7F898F1A8E8B8D807F8B8FD5
-:105320001D8E1C8E1E8E1F8E18A219A21AA21BA2E1
-:105330001CA21DA21EA21FA218A619A61BA61AA671
-:105340001DA61CA690E080E00C151D0511F4902F01
-:10535000812F9EA78FA719AA18AA1AAA8FE190E0F9
-:105360000F9422347C01DC0113961C921E9212973A
-:1053700088EE93E0A0E0B0E0F70184839583A683F4
-:10538000B78387E893E091838083178A168A118E0A
-:10539000108E138E128E158E148E668D6E7F6D7F1D
-:1053A000668F6695617081E068278C2D0F945D187B
-:1053B00061E08C2D0F942C1BF601E857F44CE4911E
-:1053C000D7015096EC93F601EE5BF44CE491F0E0DB
-:1053D000EE0FFF1FE85DF44C85919491F701928BDD
-:1053E000818B60E0802F0F942C1BD7015E968C91EF
-:1053F00081FD04C061E0802F0F945D18F7010487E0
-:10540000F801E857F44CE491D7011D96EC93F801AC
-:10541000EE5BF44CE491F0E0EE0FFF1FE25FF44C22
-:1054200085919491F70197878687FDA6ECA6888DD4
-:1054300081608D7F8B7F888F898D8160898F8C8142
-:10544000807F81608C8384E18D8383E590E0A0E0A0
-:10545000B0E18AA39BA3ACA3BDA384E290E0ADE03E
-:10546000B1EC8EA39FA3A8A7B9A7DF91CF911F91FD
-:105470000F91FF90EF90DF90CF900895CF93DF933F
-:10548000CDB7DEB7CF54D1090FB6F894DEBF0FBE4B
-:10549000CDBF789484B5826084BD84B5816084BDBD
-:1054A00085B5826085BD85B5816085BD80916E00C2
-:1054B000816080936E0010928100809181008260F3
-:1054C0008093810080918100816080938100809130
-:1054D00080008160809380008091B100846080931F
-:1054E000B1008091B00081608093B0008091910004
-:1054F00082608093910080919100816080939100FF
-:10550000809190008160809390008091A1008260E2
-:105510008093A1008091A10081608093A10080917F
-:10552000A00081608093A00080912101826080931F
-:1055300021018091210181608093210180912001CE
-:1055400081608093200180917A00846080937A004A
-:1055500080917A00826080937A0080917A008160E5
-:1055600080937A0080917A00806880937A0010920C
-:10557000C10040900F194BA614BE1092C00080913C
-:10558000C00082608093C0001092C50087E08093C5
-:10559000C4008091C10080618093C1008091C100EE
-:1055A00088608093C1008091C10080688093C100B1
-:1055B0000F941E1D6B017C0128EEC20E23E0D21E4B
-:1055C000E11CF11C8BE89FE00E949CCD882309F42C
-:1055D0009DC089E99AE30E94ACCE9898A09A8091E8
-:1055E0006F0390917003A0917103B091720389A32E
-:1055F0009AA3ABA3BCA3AE014F5D5F4F59AF48AFB9
-:10560000CE0185969EA38DA3C12CA4E2DA2EA4EF31
-:10561000EA2EF12CA8ADB9AD6D91B9AFA8AFCE010E
-:1056200001960E949ECD8A89811190C18989882323
-:1056300009F48CC14F844FA6242D0FEF10E02230C7
-:1056400011F00FEF1FEF49805A805BAE4AAE6B80BE
-:105650007C807EA66DA68EE0E3E7F3E0DE01539644
-:1056600001900D928A95E1F72FA5223009F057C0DD
-:1056700031E023963FAF239743E024964FAF249722
-:10568000CE01439622969FAF8EAF229791E09CA7C2
-:10569000A1E0A8AB1DAAEFEFF0E0FFABEEAB2DEF62
-:1056A00030E038A72FA32296AEADBFAD22972D9044
-:1056B0003D902296BFAFAEAF2297BFA5B230C1F1E9
-:1056C000E0E22E16310409F413C1F0E82F1631047C
-:1056D00009F40EC1E8EE4E2EE3E05E2E249C90010C
-:1056E000259C300D349C300D112450E040E0C70162
-:1056F000B6010F94C63DC9010197369527950097CD
-:10570000C9F441E050E05AAB49AB1BC00F941E1DD9
-:105710006C197D098E099F0997FDF8CF5ACF5AE081
-:1057200023965FAF23976EE024966FAF2497A8CFA0
-:105730009801C8011AAB09AB8017910710F49AAB16
-:1057400089AB2115310509F485C21CAB0BAB2017C1
-:10575000310710F43CAB2BAB4FA058A429EE4216F6
-:1057600023E0520608F47BC2C20128EE33E0821B1C
-:10577000930B2C01712C612C4CAE5DAE6EAE7FAEE6
-:1057800089A99AA90196829D9001839D300D929DD1
-:10579000300D112450E040E0C701B6010F94C63D22
-:1057A00049015A0129013A0128EE821623E09206A6
-:1057B000A104B10430F478EE472E73E0572E612C2B
-:1057C000712CD501C40139EE831633E09306A10490
-:1057D000B10420F088EE93E0A0E0B0E0A3019201D4
-:1057E000281B390B4A0B5B0B2C962CAF3DAF4EAFF1
-:1057F0005FAF2C97C101880F991F4BA85CA8849DAF
-:105800009001859D300D949D300D112450E040E0B5
-:10581000C701B6010F94C63D60962CAF3DAF4EAFA9
-:105820005FAF6097283E63E036074105510550F4AD
-:1058300088EE93E0A0E0B0E060968CAF9DAFAEAF95
-:10584000BFAF609728962CAF3DAF4EAF5FAF2897A4
-:10585000293E93E039074105510560F058EE452E89
-:1058600053E0552E612C712C28964CAE5DAE6EAE79
-:105870007FAE289760968CAD9DADAEADBFAD609705
-:1058800028964CAC5DAC6EAC7FAC2897841995091A
-:10589000A609B70928968CAF9DAFAEAFBFAF2897CA
-:1058A0004CAC5DAC6EAC7FAC2C968CAD9DADAEAD12
-:1058B000BFAD2C9784159505A605B70508F0D4C192
-:1058C00028964CAC5DAC6EAC7FAC28974816590658
-:1058D0006A067B0608F4C8C198A68FA224965FAC1E
-:1058E000249758AA6CA46DAA89A89AA89FAA8EAAE0
-:1058F0002CA52F5F2CA7283009F0D5CEAAADBBADC3
-:105900008C918C7F98A99370892B8C93EDA5FEA523
-:10591000208148A8842D90E0959587959595879549
-:1059200043E0880F991F4A95E1F7277E822B8083F9
-:105930008081887F5DA8852980832FA5223031F062
-:10594000ED85FE854EA85FA8518240826DA07EA0A5
-:1059500088AC99AC6814790409F05CCE8FEA95E1C3
-:105960000F94681B83E795E10F94681B87E395E12B
-:105970000F94681B8BEF94E10F94681B8FEB94E1FD
-:105980000F94681B9BA490FE04C080E99AE30E94D8
-:10599000ACCEABA4A1FE04C08FE79AE30E94ACCECC
-:1059A000BBA4B2FE04C08DE69AE30E94ACCECBA4A9
-:1059B000C3FE04C08CE59AE30E94ACCEDBA4D5FE06
-:1059C00004C08BE49AE30E94ACCE8BE39AE30E947E
-:1059D000ACCE0E940FD88DE09AE30E94ACCE0E941C
-:1059E0000FD885EF99E30E94ACCE0E940FD880912A
-:1059F000091990910A199E012F5F3F4F5901B90172
-:105A0000009709F44EC1681B790B86EE99E30E945A
-:105A100087DA60ED75E08FEC99E30E9404DB389A39
-:105A200040981092CB081092CC081092CD0810929A
-:105A3000CE0810925C1810925B181092AC1810925D
-:105A4000AB180F94971984E892E090935A188093BA
-:105A5000591884E991E0909358188093571840E0C2
-:105A600060E080E00F94D6190E94594080915D1843
-:105A7000811107C00E940FC5882319F081E080932F
-:105A80005D1885E496E10E94126B2AE4E22E28E379
-:105A9000F22E03E127E047E064E289E496E10F9407
-:105AA000852683E00E94AA3F42E458E36BE28BE242
-:105AB0000E94C46445E358E367E38CE10E94C46438
-:105AC00089E496E10F94E7248111DFCF0F941E1D26
-:105AD0002B013C012091E6083091E7084091E8084D
-:105AE0005091E90860917602709177028091780276
-:105AF000909179020F94083E60937602709377023A
-:105B000080937802909379022091EA083091EB0813
-:105B10004091EC085091ED0860917A0270917B02FF
-:105B200080917C0290917D020F94083E60937A02EE
-:105B300070937B0280937C0290937D022091EE080B
-:105B40003091EF084091F0085091F10860917E0289
-:105B500070917F0280918002909181020F94083EA3
-:105B600060937E0270937F02809380029093810203
-:105B70000E947BB5249A2C988091010180618093CA
-:105B800001018091020180718093000180910101E7
-:105B900080628093010180910201807280930001F4
-:105BA0009D9A8091010180648093010187ED80932B
-:105BB0007A0010927E0010927D0080917D008062BC
-:105BC00080937D0080917D00806880937D0080912E
-:105BD0007D00806480937D0080E887BD80916E00A9
-:105BE000826080936E000DEC19E3F801C590D490AB
-:105BF00035E0C316D1041CF495E0C92ED12CD09207
-:105C00006902C09268020D2C000CEE08FF0860E0EB
-:105C100080916402909165020E9451836FA378A7DE
-:105C200089A79AA7C701B6010F94B8399B01AC01A7
-:105C30006FA178A589A59AA50F94B13987FF34C0C3
-:105C400080916402909165024097909365028093E1
-:105C50006402DDCF81E090E09CAB8BAB7DCD2FA1CA
-:105C600038A588EE93E083CD4CAC5DAC6EAC7FACD8
-:105C700028968CAC9DACAEACBFAC28978414950430
-:105C8000A604B70408F034CE38A72FA323969FAC00
-:105C9000239798AAACA4ADAA4BA85CA85FAA4EAA69
-:105CA00027CE6F507941B1CE81ED882E88E3982EB2
-:105CB000F401C590D49041E0C41AD10855E0C5164E
-:105CC00051E0D50624F0B4E0CB2EDD24D394D0925D
-:105CD0006B02C0926A020D2C000CEE08FF0860E017
-:105CE00080916602909167020E9451836FA378A70A
-:105CF00089A79AA7C701B6010F94B8399B01AC01D7
-:105D00006FA178A589A59AA50F946840181654F438
-:105D1000809166029091670240969093670280930B
-:105D20006602DDCFF801C590D49065E0C616D104B7
-:105D30001CF4A5E0CA2ED12CD0927102C092700240
-:105D40000D2C000CEE08FF0861E080916C02909130
-:105D50006D020E9451836FA378A789A79AA7C701F4
-:105D6000B6010F94B8399B01AC016FA178A589A544
-:105D70009AA50F94B13987FF0AC080916C02909167
-:105D80006D02409790936D0280936C02DDCFF40119
-:105D9000C590D49081E0C81AD10895E0C91691E069
-:105DA000D90624F0F4E0CF2EDD24D394D0927302F0
-:105DB000C09272020D2C000CEE08FF0861E0809189
-:105DC0006E0290916F020E9451836FA378A789A7FA
-:105DD0009AA7C701B6010F94B8399B01AC016FA116
-:105DE00078A589A59AA50F946840181654F4809157
-:105DF0006E0290916F02409690936F0280936E02B4
-:105E0000DDCF80916202909163020E94E98520E0DB
-:105E100030E040EA50E40F94B13987FF0AC0809126
-:105E200062029091630240979093630280936202B2
-:105E3000E8CF8091CF089091D0080E94E98520E0BA
-:105E400030E04CED52E40F946840181654F4809101
-:105E5000CF089091D00840969093D0088093CF08B7
-:105E6000E8CF0E948BBB19A282E390E09C8B8B8BC6
-:105E70001A82198201E0950141E050E0BE016F5D98
-:105E80007F4FCE0143960E9461CE89A1863109F4ED
-:105E90003EC10E94DE8E81E08093D1088091040192
-:105EA0008D7F80930401809105018095827080939D
-:105EB000030153985B9A6C98749A1092E3081092BD
-:105EC000E2080E9471B9819A879A80910A018260E2
-:105ED00080930A010E9A3B9A579A5F9A829A8A9AFD
-:105EE000809107018160809307018091080180956E
-:105EF0008170809306010A9A129A3F9A479A809A73
-:105F000088985F9A8091E4088E7F8093E408869A4F
-:105F10008E988A9A8091E4088D7F8093E40880911E
-:105F20000A01886080930A0180910B018870809338
-:105F3000090180910801809581708093060180910C
-:105F4000E4088B7F8093E40880E090E0A6E1B3E46E
-:105F500080937E0290937F02A0938002B09381028F
-:105F60000E947BB50C9A1498129A399A4198479AD4
-:105F7000809180008C7F8093800080918100877E5B
-:105F8000886080938100809180008F73809380006F
-:105F900080918100887F82608093810080E090E41E
-:105FA000909389008093880010928500109284005D
-:105FB0000E944995789487E08093E5080E945A886A
-:105FC00088E198E20FB6F894A895809360000FBE20
-:105FD000909360000F941E1DDC01CB01841995097C
-:105FE000A609B709803AEFE09E07A105B10570F454
-:105FF00000EA1FE020E030E028013901481A590A80
-:106000006A0A7B0AC301B2010E9421CD21E041E06E
-:1060100061E081E00E94FEDB83E080933509212C62
-:10602000E2E03E2E71E6972E6AE0862E80E00E9426
-:10603000EADD8091A21787FF21C010929817877F11
-:106040008B7F8093A2170E94677E10927710109228
-:106050007610109275100E9439B880E00E9416BB2D
-:106060000E94B4850E9497CD1092740250EA652E6A
-:106070005AE3752E7092F3086092F2088091350908
-:10608000CDB6DEB610E000E0843009F452C0ADB603
-:10609000BEB66091F2087091F30810E000E061155F
-:1060A000710509F08DC08091F408882309F42BC193
-:1060B000E4EFF8E08F01045F1840F190FF2019F041
-:1060C0003AE0F312F7CF0115110559F0F801EC5041
-:1060D000F74F108284EF98E00E9457C880E00E943A
-:1060E000D1EB81E0F11001C080E0080F802FE82F94
-:1060F000F0E0EC50F74F9081E82FE01BF0E0EC501F
-:10610000F74F9083992309F498C08F5FF0CF83E312
-:1061100090E09C8B8B8B1A82198201E0950140E103
-:1061200050E062ED78E0CE0143960E9461CEB3CE9E
-:106130008C01F801EC55F54CE491C8010196EE2371
-:1061400011F0EA30A9F7ADB6BEB6A81AB90A0FB673
-:10615000F894BEBE0FBEADBE2DB73EB72F5F3F4F0A
-:106160007901A80164EA7AE3C9010F94DF38F701E5
-:10617000E00FF11F1082D7018C918B3331F40FB6F1
-:10618000F894DEBE0FBECDBE82CF809175108430F4
-:10619000B0F780917710899DC0011124B70188580C
-:1061A0009F4E0F94ED4181E00F941C0F0FB6F894B1
-:1061B000DEBE0FBECDBEB3E0B093350968CF860119
-:1061C000FB01E00FF11F74906801EFEFCE1ADE0AB9
-:1061D000772019F0FAE07F12F2CF4DB65EB64C1878
-:1061E0005D080FB6F8945EBE0FBE4DBE2DB73EB72C
-:1061F0002F5F3F4F7901A801C9010F94DF38F701E4
-:10620000E00FF11F1082772009F47AC08091F20824
-:106210009091F308C80ED91ED092F308C092F208EC
-:10622000012B31F0C7010E9457C880E00E94D1EBDA
-:106230000FB6F894BEBE0FBEADBE909134098091EA
-:106240005E18981709F4F2CE8091340980935E1895
-:1062500080913409882309F4E7CE0E940FD88FEF8C
-:106260009AE30E94ACCE8091340910E280FF0AC00C
-:1062700080E00E94AFB2AB01BC018BEF9AE30E94B9
-:10628000A4CF18E58091340900E281FF0AC081E0C3
-:106290000E94AFB2AB01BC0187EF9AE30E94A4CF8A
-:1062A00009E58091340982FF2CC282E00E94AFB2DE
-:1062B000AB01BC0183EF9AE30E94A4CF9AE5F92ECB
-:1062C0008AE00E949FCE1F9280E28F931F92FF92DE
-:1062D0001F920F931F921F938BED9AE39F938F93BF
-:1062E00084EE9AE39F938F931F920E94FA3AEDB740
-:1062F000FEB73D960FB6F894FEBF0FBEEDBF92CE2F
-:10630000D12CC12C89CF80917510882309F495CFA9
-:106310008091A21780FFEFC100917610099D800146
-:10632000112408581F4E67ED7AE3C8010F942E39E7
-:10633000009739F0DC0113968C9180538A3008F075
-:10634000C5C1F80101900020E9F731977F01E01AFB
-:10635000F10A109250146EE470E0C8010F94E2410B
-:106360006C01009709F085C0B1E0EB1AF108F80163
-:10637000EE0DFF1D4DE0442E418282821382F80112
-:1063800001900020E9F731976F01C01AD10A80917E
-:106390005314813009F069C08091511481FF65C0A8
-:1063A00082FF1CC04091611450916214609163148B
-:1063B000709164148091581490915914A0915A14BA
-:1063C000B0915B1484179507A607B70739F080E5ED
-:1063D00094E10E94827C882309F447C040915814BC
-:1063E0005091591460915A1470915B14C114D104E6
-:1063F00009F427C18091691490916A14DC01149604
-:106400007C902FEF270D2A013B0139E076946794A9
-:10641000579447943A95D1F742227A01B1E0FB2292
-:10642000411057C0E114F10409F053C040915414D5
-:10643000509155146091561470915714411551059F
-:106440006105710529F58091651490916614A091FC
-:106450006714B09168140097A105B10591F580E526
-:1064600094E10E94647F811134C081E080935014D4
-:106470000DC160E270E00F94E2418C010F5F1F4F8D
-:106480006AE270E0C6010F94E241FC01319772CFDD
-:106490009E012F5F3F4F0E94457B882331F3898106
-:1064A0009A81AB81BC81E0916914F0916A142789CB
-:1064B000203109F085C0883FEFEF9E07A105B105A7
-:1064C00070F68093541490935514A0935614B0937F
-:1064D00057145101AE18BF08CA14DB0408F4560162
-:1064E000E0916914F0916A148091541490915514BC
-:1064F000A0915614B09157140297A109B1092585AE
-:1065000004C0880F991FAA1FBB1F2A95D2F7468582
-:10651000578560897189840F951FA61FB71F9C013D
-:10652000AD01240D311D411D511D29013A01A11458
-:1065300032E0B30609F04DC08091451490914614A5
-:10654000A0914714B0914814481659066A067B0674
-:1065500069F410924D148FEF9FEFDC018093451486
-:1065600090934614A0934714B093481480914E140E
-:1065700090914F14DC01ED91FC910288F389E02D9C
-:106580009801B301A2011995882309F46ECF809177
-:10659000581490915914A0915A14B0915B148A0D1B
-:1065A0009B1DA11DB11D8093581490935914A09365
-:1065B0005A14B0935B140A0D1B1DCA18DB080ECFCA
-:1065C000883FFFEF9F07AF07FFE0BF0708F479CFD1
-:1065D00046CFE114F10469F54091581450915914D3
-:1065E00060915A1470915B148091611490916214BF
-:1065F000A0916314B0916414481759076A077B0788
-:10660000C0F00E94287A882309F42FCF81E080937C
-:106610004D14409245145092461460924714709263
-:106620004814A501B801C7018B5B9D4E0F94C6416C
-:10663000AECF41E0C301B2010E94717A8111F1CF66
-:1066400014CF8091611490916214A0916314B09161
-:10665000641484179507A607B70768F4809151144E
-:1066600040936114509362146093631470936414A4
-:106670008068809351148091511483FF07C080E596
-:1066800094E10E94297E882309F4EFCE8091501472
-:10669000882331F00E940BD88DEA9AE30E94ACCE99
-:1066A0008091A21781FD27C0E09176109E9EF00197
-:1066B0001124E852FF4E8081811110C08AEA9AE3CA
-:1066C0000E94ACCE8AE00E949FCE08C00F945F1259
-:1066D00084EC9AE30E94ACCE0E9491CF8091761018
-:1066E0008F5F843058F480937610809175108150BC
-:1066F00080937510A2CD0F948506F0CF109276107E
-:10670000F4CF80E2F82EDCCDCF93DF93EC012A8129
-:106710003B818C81482F4F7050E0E881F9810190D6
-:10672000F081E02D60E1CE0119956D81CE010F94CD
-:10673000C7202E813F818885482F4F7050E0E88127
-:10674000F9810190F081E02D63E1CE011995488D2A
-:10675000898D582F537070E060E0CE010F94CE21E8
-:106760002A8D8B8D382F3F7022273F702A8F932FD1
-:106770009F70807F892B8B8F50E040E0E881F9810A
-:106780000190F081E02D63E0CE0119952E8D3F8DB3
-:1067900048A159A1E881F9810190F081E02D62E2E0
-:1067A000CE0119954AA15BA16CA17DA1CE010F94E8
-:1067B00002224EA15FA168A579A5CE010F94B22156
-:1067C0002BA93CA98DA9482F4F7050E0E881F98191
-:1067D0000190F081E02D64E1CE0119952EA930E001
-:1067E00050E040E0E881F9810190F081E02D60E423
-:1067F000CE0119952FA938AD50E040E0E881F9812C
-:106800000190F081E02D62E4CE01DF91CF911994E7
-:10681000CF93DF9380E594E10E946480C7E9D7E1DC
-:106820006B97CE010E94648086E1C938D807C1F712
-:1068300089E894E10E94648084EA94E1DF91CF9139
-:106840000C9464800F931F93CF93DF938230910554
-:1068500010F482E090E0E0910B19F0910C1930E017
-:1068600020E0B0E0A0E0309799F42115310509F45B
-:106870004AC0281B390B24303105D8F58A819B8109
-:106880006115710589F1FB0193838283FE0111C0BB
-:10689000408151810281138148175907E0F0481760
-:1068A000590799F4109761F012960C93129713966A
-:1068B0001C933296CF01DF91CF911F910F910895D4
-:1068C00000930B1910930C19F4CF2115310551F0D9
-:1068D0004217530738F0A901DB019A01BD01DF011E
-:1068E000F801C1CFEF01F9CF90930C1980930B19E8
-:1068F000CDCFFE01E20FF31F819391932250310916
-:1069000039832883D7CF2091091930910A19232B75
-:1069100041F4209188023091890230930A19209322
-:10692000091920918602309187022115310541F421
-:106930002DB73EB740918A0250918B02241B350B34
-:10694000E0910919F0910A19E217F307A0F42E1B40
-:106950003F0B2817390778F0AC014E5F5F4F2417C3
-:10696000350748F04E0F5F1F50930A1940930919DD
-:10697000819391939FCFF0E0E0E09CCFCF93DF93A2
-:106980000097E9F0FC01329713821282A0910B1953
-:10699000B0910C19ED0130E020E01097A1F42081B6
-:1069A0003181820F931F2091091930910A192817FC
-:1069B000390709F061C0F0930A19E0930919DF91D2
-:1069C000CF910895EA01CE17DF07E8F54A815B8190
-:1069D0009E0141155105B1F7E901FB83EA83499115
-:1069E0005991C40FD51FEC17FD0761F48081918187
-:1069F0000296840F951FE901998388838281938190
-:106A00009B838A83F0E0E0E012968D919C9113972E
-:106A10000097B9F52D913C911197CD010296820F07
-:106A2000931F2091091930910A192817390739F64F
-:106A3000309751F510920C1910920B19B0930A1956
-:106A4000A0930919BCCFD383C28340815181840FA5
-:106A5000951FC817D90761F44E5F5F4F88819981F0
-:106A6000480F591F518340838A819B81938382837E
-:106A70002115310509F0B0CFF0930C19E0930B19F3
-:106A80009ECFFD01DC01C0CF13821282D7CF8F923F
-:106A90009F92AF92BF92CF92DF92EF92FF920F93AD
-:106AA0001F93CF93DF935C017B016115710519F092
-:106AB000DB018D939C9385010F5F1F4FF501D08102
-:106AC0008D2F90E00F94D6386C01892BB9F5DD320B
-:106AD000B9F50F5F1F4FD5011196DC91C1E0580148
-:106AE000F1E0AF1AB10843E050E064E275E0C5019F
-:106AF0000F940739892B69F5680182E0C80ED11C13
-:106B000045E050E06FE175E0C6010F940739892B2D
-:106B100021F4680197E0C90ED11CE114F10419F0C9
-:106B2000D701CD92DC9260E070E080E89FEFC11168
-:106B3000FFC060E070E080E89FE7FAC05801BBCF7B
-:106B4000DB3229F485010E5F1F4FF501D181C0E0D2
-:106B5000C6CF43E050E06CE175E0C5010F94073902
-:106B6000892BE9F0F80110E000E020E030E0A90115
-:106B70005F01B0ED8B2E8D0E89E08815C8F19C2E3B
-:106B8000689491F88C2F8870C2FF16C0811102C0E2
-:106B90000F5F1F4F3196D501DC91C92DE9CFE1146C
-:106BA000F10429F00E5F1F4FF7011183008360E0AD
-:106BB00070E080EC9FE7BCC0882311F00150110900
-:106BC000A5E0B0E00F94E53D9B01AC01220F331F1F
-:106BD000441F551F280D311D411D511D283999E9AC
-:106BE0003907490799E15907A8F2C6609C2ED2CF10
-:106BF000AEEF8A1206C0C3FD3CC09C2E689493F889
-:106C0000C9CFDF7DD534A9F580818D3239F4C061DB
-:106C1000DF011296818162E070E006C0DF018B32F5
-:106C2000C1F3119661E070E080535D01A61AB70AC6
-:106C30008A30F8F4E0E8CE16ECE0DE065CF4B6014B
-:106C4000660F771F660F771FC60ED71ECC0CDD1C94
-:106C5000C80ED11C5D01FFEFAF1ABF0A8C918053A3
-:106C60008A30A8F1C4FF03C0D194C194D1080C0D9F
-:106C70001D1DC1FF09C0E114F10431F081E0A81A23
-:106C8000B108D701AD92BC92CA01B9010F94B639CF
-:106C9000C370C33009F490584B015C0120E030E030
-:106CA000A9010F94B139882309F440C0C3E5D5E0A8
-:106CB00017FF05C0119501951109CBE3D5E06E01D1
-:106CC000B8E1CB1AD10880E2E82EF12C0FC0D50133
-:106CD000B1CFFE0125913591459154910E191F09AF
-:106CE000C501B4010F94173A4B015C01D501C401F1
-:106CF0000E151F0574F72497F594E794CC16DD065E
-:106D0000A9F78A2F880F8B2F881F8F3F49F020E02B
-:106D100030E0A901C501B4010F94B139811106C059
-:106D200082E290E090930E1980930D19C501B40191
-:106D3000DF91CF911F910F91FF90EF90DF90CF9057
-:106D4000BF90AF909F908F9008953F924F925F9227
-:106D50006F927F928F929F92AF92BF92CF92DF926B
-:106D6000EF92FF920F931F93CF93DF935C016B0120
-:106D70007A016115710519F0FB0191838083E1149B
-:106D8000F10451F0C7010297839730F040E030E002
-:106D900020E090E06BC05E01E5012196F5011081D5
-:106DA000812F90E00F94D638892BA9F71D3201F579
-:106DB0002196F501118101E0E114F10409F4E6C026
-:106DC000F0E1EF16F10409F088C0103359F488811E
-:106DD0008F7D883509F07CC0198122960260F0E130
-:106DE000EF2EF12C812C912CA12C88E0B82E92C092
-:106DF0001B3221F4E5012296F501118100E0DCCF80
-:106E0000EAE0EE16F10409F4C7C0F0E1EF16F10470
-:106E100009F073C0E7CF78E0E72EF12C812C912C9C
-:106E2000A12C60E1B62E76C021E0ADC0302F3170CC
-:106E3000C114D10431F0222371F12197F601D183DD
-:106E4000C08327FF2EC060E070E080E090E8311141
-:106E500004C06FEF7FEF8FEF9FE722E230E03093C7
-:106E60000E1920930D19462F372F282F642F732FBB
-:106E7000822FDF91CF911F910F91FF90EF90DF90C4
-:106E8000CF90BF90AF909F908F907F906F905F90CA
-:106E90004F903F90089501FF04C02297F601D183DF
-:106EA000C083332341F090958095709561957F4F15
-:106EB0008F4F9F4FD8CF97FFD6CF82E290E090932D
-:106EC0000E1980930D196FEF7FEF8FEF9FE7CBCFF8
-:106ED00010E3E114F10409F49ECF28E0E216F10476
-:106EE00009F49CCF0CF08CCF812C912CA12CE0E4E8
-:106EF000BE2E82E0E816F10469F060E070E080E008
-:106F000090E897010F2C000C440B550B0F94A43DF7
-:106F100049015A0120E060E070E0CB0127010F2C0D
-:106F2000000C66087708FE0150ED352E310E39E071
-:106F3000331570F43FEB310F49EC342E3A3138F011
-:106F40003FE9310F3A3108F071CF39EA332E310E73
-:106F50003E141F040CF06ACF27FD15C08616970655
-:106F6000A806B90678F0A30192010F94943D630D31
-:106F7000711D811D911D61307105810520E8920709
-:106F800008F452CF2FEF21961081CDCF103309F4A2
-:106F90001ECF2AE0E22EF12C9CEC892E982CA82CF6
-:106FA0009CE0B92EB7CF3F924F925F926F927F9243
-:106FB0008F929F92AF92BF92CF92DF92EF92FF9209
-:106FC0000F931F93CF93DF935C016B017A016115DF
-:106FD000710519F0FB0191838083E114F10449F0FC
-:106FE000C7010297839728F060E070E0CB019BC057
-:106FF0005E01E5012196F5011081812F90E00F944B
-:10700000D638892BA9F71D3209F05CC02196F5010D
-:10701000118101E0E114F10409F4BBC0F0E1EF16C5
-:10702000F10409F09BC0103341F488818F7D8835CD
-:1070300009F08FC0198122960260E0E1EE2EF12C5A
-:1070400088248A94982CA82CFFE0BF2E20E060E0D2
-:1070500070E0CB0127010F2C000C66087708FE01B9
-:1070600050ED352E310E39E0331568F43FEB310F1A
-:1070700049EC342E3A3130F03FE9310F3A31B0F576
-:1070800039EA332E310E3E141F0484F52F3FB9F038
-:1070900086169706A806B90638F1A30192010F9447
-:1070A000943D232D30E050E040E0620F731F841FB9
-:1070B000951F6217730784079507B0F021E02196AA
-:1070C0001081CDCF1B3221F4E5012296F50111810B
-:1070D00000E0A0CF78E0E72EF12C88248A94982C49
-:1070E000A82C6FE1B62EB2CF2FEFE9CFC114D10497
-:1070F00031F0222351F12197F601D183C08300FFA3
-:1071000007C090958095709561957F4F8F4F9F4FE9
-:107110002F3F49F482E290E090930E1980930D196D
-:107120006FEF7FEFCB01DF91CF911F910F91FF9018
-:10713000EF90DF90CF90BF90AF909F908F907F9017
-:107140006F905F904F903F90089501FFD8CF2297A6
-:10715000D3CF10E3E114F10409F4BCCF3AE0E31615
-:10716000F104E9F080E1E816F10409F466CFE8E003
-:10717000EE16F10409F4B1CF6FEF7FEFCB01970169
-:107180000F2C000C440B550B0F94A43D49015A01E0
-:107190005DCF103309F449CF9AE0E92EF12C89E94B
-:1071A000882E982CA82C89E1B82E50CF91110D94DF
-:1071B000863C803219F089508550C8F70895FB014C
-:1071C000DC0102C005900D9241505040D8F708955F
-:1071D000FB01DC010D900020E9F7119705900D925D
-:1071E0000020E1F70895FC010590061621F000202B
-:1071F000D9F7C00108953197CF010895FC0105909A
-:107200000020E9F7809590958E0F9F1F0895FB0150
-:10721000DC014150504088F08D9181341CF08B3559
-:107220000CF4805E659161341CF06B350CF4605E8B
-:10723000861B611171F3990B0895881BFCCFFB012C
-:10724000DC014150504048F005900D920020C9F7F4
-:1072500001C01D9241505040E0F70895FB01559147
-:107260005523A9F0BF01DC014D9145174111E1F70C
-:1072700059F4CD010590002049F04D914015411180
-:10728000C9F3FB014111EFCF81E090E00197089530
-:107290000F931F93CF93DF93CDB7DEB72E970FB623
-:1072A000F894DEBF0FBECDBF0E891F898EE08C83A0
-:1072B0001A8309838FEF9FE79E838D83AE01465E1D
-:1072C0005F4F688D798DCE0101960F94843A2F819E
-:1072D0003885020F131FF80110822E960FB6F8940E
-:1072E000DEBF0FBECDBFDF91CF911F910F910895EB
-:1072F0000F931F93CF93DF93CDB7DEB72E970FB6C3
-:10730000F894DEBF0FBECDBF8C01FA018EE08C83F6
-:107310001A83098377FF02C060E070E86150710949
-:107320007E836D83A901BF01CE0101960F94843A3B
-:107330004D815E8157FD0AC02F8138854217530762
-:107340000CF49A01020F131FF80110822E960FB64B
-:10735000F894DEBF0FBECDBFDF91CF911F910F918B
-:1073600008950F94F33908F481E00895E89409C072
-:1073700097FB3EF490958095709561957F4F8F4F68
-:107380009F4F9923A9F0F92F96E9BB279395F6957E
-:10739000879577956795B795F111F8CFFAF4BB0FFC
-:1073A00011F460FF1BC06F5F7F4F8F4F9F4F16C060
-:1073B000882311F096E911C0772321F09EE8872FEA
-:1073C000762F05C0662371F096E8862F70E060E0A6
-:1073D0002AF09A95660F771F881FDAF7880F96951F
-:1073E000879597F90895990F0008550FAA0BE0E8C3
-:1073F000FEEF16161706E807F907C0F01216130677
-:10740000E407F50798F0621B730B840B950B39F4B6
-:107410000A2661F0232B242B252B21F408950A261C
-:1074200009F4A140A6958FEF811D811D08950F9449
-:107430002A3A0D94443D0F94363D38F00F943D3D6B
-:1074400020F0952311F00D942D3D0D94333D112422
-:107450000D94783D0F94553D70F3959FC1F3950FB2
-:1074600050E0551F629FF001729FBB27F00DB11DC8
-:10747000639FAA27F00DB11DAA1F649F6627B00D58
-:10748000A11D661F829F2227B00DA11D621F739F41
-:10749000B00DA11D621F839FA00D611D221F749F4F
-:1074A0003327A00D611D231F849F600D211D822F96
-:1074B000762F6A2F11249F5750409AF0F1F08823BD
-:1074C0004AF0EE0FFF1FBB1F661F771F881F9150EA
-:1074D0005040A9F79E3F510580F00D942D3D0D942D
-:1074E000783D5F3FE4F3983ED4F3869577956795B2
-:1074F000B795F795E7959F5FC1F7FE2B880F911D14
-:107500009695879597F908952F923F924F925F92A3
-:107510006F927F928F929F92AF92BF92CF92DF92A3
-:10752000EF92FF920F931F93CF93DF9300D000D081
-:1075300000D01F921F92CDB7DEB77C013B018A01BC
-:10754000FC0117821682838181FFDDC1CE01019685
-:107550005C01F7019381F30193FD859193FF819184
-:107560003F01882309F453C1853239F493FD859195
-:1075700093FF81913F01853229F4B70190E00F9488
-:107580009F3CE7CF912C212C312CFFE1F31538F0F3
-:107590008B3211F190F4803209F1833229F137FCFA
-:1075A0003CC020ED280F2A3050F536FE20C08AE07E
-:1075B000989E200D1124922E06C08D3291F08033BA
-:1075C00071F7689430F8F30193FD859193FF8191F1
-:1075D0003F018111DACF21C0689431F8689432F804
-:1075E000F2CF689433F8EFCF689434F8ECCFEAE048
-:1075F0002E9E200D1124222E689435F8E4CF8E3271
-:1076000029F436FC04C1689436F8DDCF8C3619F4C1
-:10761000689437F8D8CF8836B1F2982F9F7D95546B
-:107620009330E0F08336A1F18337C1F1833509F05F
-:1076300063C02801F2E04F0E511CF801C080D180D8
-:10764000692D70E036FC02C06FEF7FEFC6010F942A
-:10765000893C4C01689437F882010AC00C5F1F4FC7
-:10766000FFE3F98388248394912C6501E89437F82B
-:1076700033FE2DC0522C8114910471F5552009F46C
-:1076800068CFB70180E290E00F949F3C5A94F6CF08
-:10769000F801808189830E5F1F4FE4CF2801F2E05B
-:1076A0004F0E511CF801C080D180692D70E036FC6E
-:1076B00002C06FEF7FEFC6010F94943C4C01820132
-:1076C000D5CFB70180E290E00F949F3C2A94281414
-:1076D000190409F0B0F7CECFF60137FC859137FEDB
-:1076E00081916F01B70190E00F949F3C51105A9423
-:1076F000F1E08F1A9108BFCF843619F0893609F06E
-:1077000077C0F80137FE6BC06081718182819381FF
-:107710000C5F1F4FF32DFF763F2E97FF09C090950A
-:107720008095709561957F4F8F4F9F4F689437F884
-:107730002AE030E0A5010F94CF3CC82ECA188C2C4B
-:10774000432C36FE0CC0E89440F8C91440F434FED3
-:1077500005C032FC03C0F32DFE7E4F2E892C44FE63
-:10776000AAC0FE01EC0DF11D8081803309F09CC0A0
-:10777000242D297E422E842D8870582E43FCAAC0C9
-:1077800040FEA4C09C2C821418F42C0C922C981847
-:1077900044FEA6C0B70180E390E00F949F3C42FEF8
-:1077A00009C088E790E041FE02C088E590E0B7019B
-:1077B0000F949F3CC91408F49FC0CA94D12C9FEF2A
-:1077C000C91AD90ACA0CDB1CF60182916F01B701F4
-:1077D00090E00F949F3CAC14BD04B1F74FCF608193
-:1077E0007181072E000C880B990B0E5F1F4F92CFF3
-:1077F000D32CE894D4F82AE030E08537E1F1232D4A
-:10780000297FD22E8F36A9F1F0F4883551F1F70196
-:10781000868197812B960FB6F894DEBF0FBECDBF41
-:10782000DF91CF911F910F91FF90EF90DF90CF905C
-:10783000BF90AF909F908F907F906F905F904F9090
-:107840003F902F900895803749F0883701F7D4FE94
-:1078500002C06894D2F820E130E00DC06894D4F8FA
-:10786000F6CF34FE03C0822F8660D82E20E132E0AE
-:1078700002C028E030E0F801D7FE0FC060817181BE
-:10788000828193810C5F1F4FA5010F94CF3CC82EBE
-:10789000CA183D2CE89437F852CF6081718190E08E
-:1078A00080E00E5F1F4FF0CF42FC02C0839463CF95
-:1078B0008394839460CF842D867809F45CCFF6CFCF
-:1078C000B70180E290E00F949F3C83948214C0F350
-:1078D000512C5ECF522C5818821408F459CFF8CF8F
-:1078E000842D867809F466CF8BE241FE80E247FC66
-:1078F0008DE2B70190E05CCFB70180E390E00F9498
-:107900009F3C9A9457CF8FEF9FEF84CF992788277A
-:107910000895FC010590615070400110D8F78095E2
-:1079200090958E0F9F1F0895FC016150704001904B
-:107930000110D8F7809590958E0F9F1F08950F9393
-:107940001F93CF93DF93182F092FEB018B8181FDBC
-:1079500009C01FEF0FEF812F902FDF91CF911F9163
-:107960000F91089582FF14C02E813F818C819D81EB
-:10797000281739073CF4E881F981CF0101969983F2
-:10798000888310838E819F8101969F838E83E3CFAE
-:10799000E885F985812F1995892BA1F3DACFFA01B2
-:1079A000AA27283051F1203181F1E8946F936E7F3E
-:1079B0006E5F7F4F8F4F9F4FAF4FB1E03ED0B4E02F
-:1079C0003CD0670F781F891F9A1FA11D680F791F70
-:1079D0008A1F911DA11D6A0F711D811D911DA11D81
-:1079E00020D009F468943F912AE0269F1124301991
-:1079F000305D3193DEF6CF010895462F4770405D2C
-:107A00004193B3E00FD0C9F7F6CF462F4F70405DDA
-:107A10004A3318F0495D31FD4052419302D0A9F735
-:107A2000EACFB4E0A6959795879577956795BA952F
-:107A3000C9F700976105710508959B01AC010A2EF5
-:107A400006945795479537952795BA95C9F7620FCC
-:107A5000731F841F951FA01D089597F99F6780E8E5
-:107A600070E060E008959FEF80EC089500240A9490
-:107A70001616170618060906089500240A94121609
-:107A80001306140605060895092E0394000C11F43C
-:107A9000882352F0BB0F40F4BF2B11F460FF04C0E9
-:107AA0006F5F7F4F8F4F9F4F089557FD9058440F42
-:107AB000551F59F05F3F71F04795880F97FB991F4D
-:107AC00061F09F3F79F0879508951216130614060A
-:107AD000551FF2CF4695F1DF08C016161706180697
-:107AE000991FF1CF86957105610508940895E89472
-:107AF000BB2766277727CB0197F90895F999FECF21
-:107B000092BD81BDF89A992780B50895262FF999DD
-:107B1000FECF1FBA92BD81BD20BD0FB6F894FA9A70
-:107B2000F99A0FBE01960895DB018F939F930F94EE
-:107B3000E53DBF91AF91A29F800D911DA39F900D38
-:107B4000B29F900D11240895A1E21A2EAA1BBB1B0F
-:107B5000FD010DC0AA1FBB1FEE1FFF1FA217B30719
-:107B6000E407F50720F0A21BB30BE40BF50B661F2F
-:107B7000771F881F991F1A9469F7609570958095F3
-:107B800090959B01AC01BD01CF010895052E97FB97
-:107B90001EF400940F94DD3D57FD07D00F94A43DD3
-:107BA00007FC03D04EF40D94DD3D50954095309583
-:107BB00021953F4F4F4F5F4F089590958095709559
-:107BC00061957F4F8F4F9F4F08950F94F83DA59F6C
-:107BD000900DB49F900DA49F800D911D11240895C8
-:107BE000B7FF0D94E53D0F94E53D821B930B08957F
-:107BF000A29FB001B39FC001A39F700D811D1124EE
-:107C0000911DB29F700D811D1124911D0895505832
-:107C1000BB27AA270F941F3E0D94443D0F94363D79
-:107C200038F00F943D3D20F039F49F3F19F426F4CD
-:107C30000D94333D0EF4E095E7FB0D942D3DE92FB7
-:107C40000F94553D58F3BA176207730784079507D9
-:107C500020F079F4A6F50D94773D0EF4E0950B2E07
-:107C6000BA2FA02D0B01B90190010C01CA01A0018E
-:107C70001124FF27591B99F0593F50F4503E68F1E9
-:107C80001A16F040A22F232F342F4427585FF3CF2A
-:107C9000469537952795A795F0405395C9F77EF4FB
-:107CA0001F16BA0B620B730B840BBAF09150A1F044
-:107CB000FF0FBB1F661F771F881FC2F70EC0BA0FCA
-:107CC000621F731F841F48F4879577956795B79552
-:107CD000F7959E3F08F0B0CF9395880F08F099274D
-:107CE000EE0F9795879508950F94363D60F080E8E4
-:107CF00091E009F49EEF0F943D3D28F040E851E0FB
-:107D000071F45EEF0CC00D94333D0D94773DE92F77
-:107D1000E0780F94553D40F3092E052AB1F326175C
-:107D200037074807590738F00E2E07F8E02569F0A5
-:107D3000E025E0640AC0EF6307F8009407FADB016E
-:107D4000B9019D01DC01CA01AD01EF930F94193F08
-:107D50000F94443D0F94B73E5F91552339F02BEDBE
-:107D60003FE049E450FD49EC0D94083E0895DF934F
-:107D7000DD27B92FBF7740E85FE3161617064807DF
-:107D80005B0718F4D92F0F946D409F938F937F93C7
-:107D90006F930F94F640E4EEF0E00F94EA3F0F94F7
-:107DA000443D2F913F914F915F910F942A3ADD23EB
-:107DB00051F09058A2EA2AED3FE049EC5FE3D07819
-:107DC0005D270F941F3EDF910D94443D0F9450406A
-:107DD00090F09F3748F4911116F40D94783D60E0CF
-:107DE00070E080E89FE3089526F01B16611D711D69
-:107DF000811D0D94C13F0D94DC3F0F941340E3951A
-:107E00000D943C400F94163F0D94443D0F943D3D1E
-:107E100058F00F94363D40F029F45F3F29F00D945F
-:107E20002D3D51110D94783D0D94333D0F94553DEA
-:107E300068F39923B1F3552391F3951B550BBB2799
-:107E4000AA2762177307840738F09F5F5F4F220FDE
-:107E5000331F441FAA1FA9F335D00E2E3AF0E0E8D5
-:107E600032D091505040E695001CCAF72BD0FE2F1F
-:107E700029D0660F771F881FBB1F261737074807B3
-:107E8000AB07B0E809F0BB0B802DBF01FF2793586B
-:107E90005F4F3AF09E3F510578F00D942D3D0D94C3
-:107EA000783D5F3FE4F3983ED4F3869577956795E8
-:107EB000B795F7959F5FC9F7880F911D96958795A0
-:107EC00097F90895E1E0660F771F881FBB1F6217BF
-:107ED00073078407BA0720F0621B730B840BBA0B7D
-:107EE000EE1F88F7E09508950F947B3F6894B111D9
-:107EF0000D94783D08950F945D3D88F09F5798F05C
-:107F0000B92F9927B751B0F0E1F0660F771F881F9E
-:107F1000991F1AF0BA95C9F714C0B13091F00F94B7
-:107F2000773DB1E008950D94773D672F782F88272E
-:107F3000B85F39F0B93FCCF3869577956795B395DF
-:107F4000D9F73EF490958095709561957F4F8F4F4E
-:107F50009F4F08950F94504090F09F3748F491112F
-:107F600016F00D94783D60E070E080E89FEB089596
-:107F700026F41B16611D711D811D0D94C13F0D94CA
-:107F8000DC3F882371F4772321F09850872B762FDC
-:107F900007C0662311F499270DC09051862B70E01D
-:107FA00060E02AF09A95660F771F881FDAF7880F2E
-:107FB0009695879597F908959F3F31F0915020F459
-:107FC000879577956795B795880F911D96958795B5
-:107FD00097F90895DF93CF931F930F93FF92EF923A
-:107FE000DF927B018C01689406C0DA2EEF010F94BA
-:107FF0002A3AFE01E894A591259135914591559134
-:10800000A6F3EF010F941F3EFE019701A801DA9439
-:1080100069F7DF90EF90FF900F911F91CF91DF9163
-:1080200008950D94333D0F945D3DD8F3E894E0E05E
-:10803000BB279F57F0F02AED3FE049EC06C0EE0F5A
-:10804000BB0F661F771F881F28F0B23A62077307BD
-:10805000840728F0B25A620B730B840BE3959A9550
-:1080600072F7803830F49A95BB0F661F771F881F10
-:10807000D2F790480D94DE3FEF93E0FF07C0A2EAED
-:108080002AED3FE049EC5FEB0F941F3E0F94443D17
-:108090000F90039401FC9058E1E1F1E00D9406414A
-:1080A0000F945D3DA0F0BEE7B91788F4BB279F3859
-:1080B00060F41616B11D672F782F8827985FF7CFC9
-:1080C000869577956795B11D93959639C8F3089570
-:1080D0000F94F33908F48FEF08959B01AC0160E031
-:1080E00070E080E89FE30D94023F0F945D3D58F1EE
-:1080F0009E5760F19851A0F0E9F0983020F5092ED4
-:108100009927660F771F881F991F0A94D1F712C00D
-:10811000062E672F782F8827985F11F4000C07C070
-:10812000993FB4F38695779567959395D9F7611D37
-:10813000711D811D3EF490958095709561957F4FDE
-:108140008F4F9F4F089568940D94783D0D94773D1F
-:108150009F930F9413400F9007FCEE5F0D943C40EB
-:1081600019F416F40D94333D0D94DC3F0F945D3DEE
-:10817000B8F39923C9F3B6F39F57550B87FF0F94B4
-:10818000FF400024A0E640EA90018058569597955C
-:1081900028F4805C660F771F881F20F026173707AA
-:1081A000480730F4621B730B840B202931294A2BBA
-:1081B000A69517940794202531254A2758F7660F6E
-:1081C000771F881F20F026173707480730F4620B07
-:1081D000730B840B200D311D411DA09581F7B90152
-:1081E000842F9158880F9695879508959B01AC012F
-:1081F0000D94173A0F94F339880B990B0895915009
-:108200005040660F771F881FD2F708959F938F9372
-:108210007F936F93FF93EF939B01AC010F94173AF9
-:10822000EF91FF910F94EA3F2F913F914F915F9112
-:108230000D94173A991B79E004C0991F961708F01E
-:10824000961B881F7A95C9F78095089587FB082E9D
-:10825000062687FD819567FD61950F941A410EF4FE
-:10826000919507FC81950895AA1BBB1B51E107C09E
-:10827000AA1FBB1FA617B70710F0A61BB70B881FB6
-:10828000991F5A95A9F780959095BC01CD01089545
-:1082900097FB072E16F4009407D077FD09D00F94B2
-:1082A000344107FC05D03EF4909581959F4F089589
-:1082B000709561957F4F0895EE0FFF1F881F8BBF4C
-:1082C0000790F691E02D1994AA27992329F4A85F25
-:1082D000982B11F480E10895903118F4AD5F9295D8
-:1082E000A395990FE8F78A2F99270895002E083053
-:1082F00090F0982F872F762F652F542F432F322FF2
-:1083000022270850F4CF220F331F441F551F661F2A
-:10831000771F881F991F0A95B2F7002D089597FDC2
-:108320001094002E083098F00850232F342F452F3A
-:10833000562F672F782F892F912DF4CF159497956D
-:1083400087957795679557954795379527950A951A
-:10835000AAF71124002D089581E090E0F8940D947F
-:108360001C429111089581548A5108F4805E855A07
-:108370000895FB01DC0104C08D910190801921F466
-:1083800041505040C8F7881B990B0895FB01DC0150
-:1083900002C001900D9241505040D8F70895FB0162
-:1083A000DC018D9181341CF08B350CF4805E619181
-:1083B00061341CF06B350CF4605E861B611189F32F
-:1083C000990B0895FC018191861721F08823D9F734
-:1083D000992708953197CF010895FB01DC010190A1
-:1083E0000D920020E1F70895FB01DC01415050405F
-:1083F00030F08D910190801919F40020B9F7881B95
-:10840000990B0895FB01DC014150504048F0019068
-:108410000D920020C9F701C01D9241505040E0F775
-:108420000895FC0181E090E00190061609F4CF0167
-:108430000020D1F7019708951EE1C7E4DEE100E0D6
-:1084400006C0802FFE010F945C412196011DC834A7
-:10845000D10780E00807A9F7F894FFCF104000008B
-:108460000080020430290002AC00FFFFFF01CDCCE8
-:10847000CC3DFA00D20001010000803F640064009E
-:1084800064000000803F0000803FFFFFFFFFFFFF10
-:10849000FF080101000000E6C20000A8C2000000C1
-:1084A000000000184300009A42000016430000C874
-:1084B00041010D0D0202C0D401006400AA00FF3F7B
-:1084C000FF3F00000000FF3FFF3F00000000FF3FB4
-:1084D0000103000018430000A8C20000164300007A
-:1084E0000000000010198000003C1C46003C1C46A7
-:1084F000003C1C46003C1C4658595A45000100FFF0
-:108500000100FF0002020000484200004842000053
-:10851000804000000040D505C705B70504010401EF
-:108520000000204100002041CDCCCC3E00000040A6
-:108530000000C07F0000C07F0000C07FFF003C0043
-:108540000100004040000034420000000000000034
-:10855000000000000000005041000000000000008A
-:10856000416400000064000000030000006400009B
-:10857000006400000003000000030000000300008E
-:10858000001E0000001E00000000001643000096C0
-:10859000420000A04156383600FFFF4040CF38CFA0
-:1085A00038440000000000470048000000000000C0
-:1085B00001010100001643000096420000A04100A6
-:1085C000001643000096420000A0410A05062E0155
-:1085D00000080020004000800000010004000000AE
-:1085E000000000F201DE00B5240401400220023048
-:1085F00001000000008C02B000B5240401DA01CEB5
-:108600000034010000000095756E76AD743D7592E2
-:1086100074A5732D7488734F754E74C76F4A704973
-:1086200070000000007C01DC01E6019C00E200E03B
-:10863000018401280200011001BE0086011602001B
-:108640000000000929DE00B5244970455252005A45
-:0686500000590058000073
-:020000040003F7
-:10E000000D9489F10D94B2F10D94B2F10D94B2F129
-:10E010000D94B2F10D94B2F10D94B2F10D94B2F1F0
-:10E020000D94B2F10D94B2F10D94B2F10D94B2F1E0
-:10E030000D94B2F10D94B2F10D94B2F10D94B2F1D0
-:10E040000D94B2F10D94B2F10D94B2F10D94B2F1C0
-:10E050000D94B2F10D94B2F10D94B2F10D94B2F1B0
-:10E060000D94B2F10D94B2F10D94B2F10D94B2F1A0
-:10E070000D94B2F10D94B2F10D94B2F10D94B2F190
-:10E080000D94B2F10D94B2F10D94B2F10D94B2F180
-:10E090000D94B2F10D94B2F10D94B2F10D94B2F170
-:10E0A0000D94B2F10D94B2F10D94B2F10D94B2F160
-:10E0B0000D94B2F10D94B2F10D94B2F10D94B2F150
-:10E0C0000D94B2F10D94B2F10D94B2F10D94B2F140
-:10E0D0000D94B2F10D94B2F10D94B2F10D94B2F130
-:10E0E0000D94B2F141546D656761323536300041AF
-:10E0F000726475696E6F206578706C6F72657220DE
-:10E1000073746B3530305632206279204D4C530099
-:10E11000426F6F746C6F616465723E004875683F52
-:10E1200000436F6D70696C6564206F6E203D200048
-:10E130004350552054797065202020203D20005FF9
-:10E140005F4156525F415243485F5F3D2000415658
-:10E1500052204C696243205665723D20004743437C
-:10E160002056657273696F6E203D20004350552024
-:10E1700049442020202020203D20004C6F7720663D
-:10E18000757365202020203D20004869676820665F
-:10E190007573652020203D200045787420667573D6
-:10E1A00065202020203D20004C6F636B2066757336
-:10E1B000652020203D20004D617220203720323024
-:10E1C000313300312E362E3800342E332E350056A2
-:10E1D00023202020414444522020206F7020636F70
-:10E1E00064652020202020696E73747275637469E1
-:10E1F0006F6E2061646472202020496E74657272B3
-:10E20000757074006E6F20766563746F7200726A49
-:10E210006D702020006A6D70200057686174207056
-:10E220006F72743A00506F7274206E6F7420737541
-:10E2300070706F72746564004D7573742062652030
-:10E2400061206C6574746572002000577269747483
-:10E25000696E672045450052656164696E672045B7
-:10E26000450045452065727220636E743D00504F35
-:10E27000525400303D5A65726F2061646472003FF1
-:10E280003D43505520737461747300403D454550C3
-:10E29000524F4D207465737400423D426C696E6B41
-:10E2A000204C454400453D44756D70204545505215
-:10E2B0004F4D00463D44756D7020464C415348001B
-:10E2C000483D48656C70004C3D4C69737420492F83
-:10E2D0004F20506F72747300513D51756974005234
-:10E2E0003D44756D702052414D00563D73686F7707
-:10E2F00020696E7465727275707420566563746FF0
-:10E30000727300593D506F727420626C696E6B00BD
-:10E310002A0011241FBECFEFD1E2DEBFCDBF01E046
-:10E320000CBF12E0A0E0B2E0EEE1FDEF03E00BBFB6
-:10E3300002C007900D92A030B107D9F712E0A0E01B
-:10E34000B2E001C01D92AE30B107E1F70F9460F367
-:10E350000D948DFE01E20EBF0FEF0DBF11241FBE05
-:10E360000D9460F30D9400F020E030E040ED57E0B4
-:10E3700005C0FA013197F1F72F5F3F4F2817390792
-:10E38000C0F308959C01260F311DC901A0E0B0E043
-:10E390002F5F3F4FABBFFC018791882361F08093D3
-:10E3A000C6008091C00086FFFCCF8091C0008064D1
-:10E3B0008093C000EACF08958DE08093C6008091DD
-:10E3C000C00086FFFCCF8091C00080648093C000B5
-:10E3D0008AE08093C6008091C00086FFFCCF8091C8
-:10E3E000C00080648093C00008950F94C2F10F9420
-:10E3F000DCF10895FC019081992359F09093C600B7
-:10E400008091C00086FFFCCF8091C0008064809323
-:10E41000C0003196992379F70895282F982F929567
-:10E420009F70892F805D8A3308F0895F8093C600D2
-:10E430008091C00086FFFCCF8091C00080648093F3
-:10E44000C000822F8F70982F905D9A3308F0995FEB
-:10E450009093C6008091C00086FFFCCF8091C000E1
-:10E4600080648093C00008959C01FB01853691056E
-:10E470001CF46330710594F0C90164E670E00F94F8
-:10E480002EFE605D7F4F6093C6008091C00086FFC6
-:10E49000FCCF8091C00080648093C0002B30310598
-:10E4A00014F43297B4F0C90164E670E00F942EFEC4
-:10E4B0006AE070E00F942EFE605D7F4F6093C600AF
-:10E4C0008091C00086FFFCCF8091C0008064809363
-:10E4D000C000C9016AE070E00F942EFEC0968093E0
-:10E4E000C6008091C00086FFFCCF8091C000806490
-:10E4F0008093C00008951F93182F8EE692EE60E07F
-:10E500000F94C2F11093C6008091C00086FFFCCF2B
-:10E510008091C00080648093C0000F94DCF11F9153
-:10E5200008952F923F924F925F926F927F928F92B7
-:10E530009F92AF92BF92CF92DF92EF92FF920F9392
-:10E540001F93DF93CF93CDB7DEB762970FB6F894E2
-:10E55000DEBF0FBECDBF382E622ECA01DB015C01CB
-:10E560006D01772420E2222E2E010894411C511CBB
-:10E570008BC081E0A81680E0B80681E0C80680E084
-:10E58000D80628F0C601AA27BB270F940DF2BB2797
-:10E59000AD2D9C2D8B2D0F940DF28A2D0F940DF225
-:10E5A0002092C6008091C00086FFFCCF8091C00001
-:10E5B00080648093C0009DE29093C6008091C0006B
-:10E5C00086FFFCCF8091C00080648093C0002092C1
-:10E5D000C6008091C00086FFFCCF8091C00080649F
-:10E5E0008093C00019828601750188249924A1E0D6
-:10E5F0003A1651F03A1620F0B2E03B1661F409C029
-:10E600000BBFF701779007C0C7010F9477FE782EF4
-:10E6100002C0F7017080872D0F940DF22092C60082
-:10E620008091C00086FFFCCF8091C0008064809301
-:10E63000C000872D8052F401EF70F0708F3520F408
-:10E64000E40DF51D708204C0E40DF51D8EE280839B
-:10E650000894E11CF11C011D111D0894811C911CE2
-:10E6600090E18916910409F0C2CF80E190E0A0E02A
-:10E67000B0E0A80EB91ECA1EDB1E198AC2010F9493
-:10E68000FAF10F94DCF16A94662009F072CF629679
-:10E690000FB6F894DEBF0FBECDBFCF91DF911F91B3
-:10E6A0000F91FF90EF90DF90CF90BF90AF909F9031
-:10E6B0008F907F906F905F904F903F902F90089534
-:10E6C0002F923F924F925F926F927F928F929F9282
-:10E6D000AF92BF92CF92DF92EF92FF920F931F9370
-:10E6E000DF93CF93CDB7DEB7CD53D1400FB6F894BB
-:10E6F000DEBF0FBECDBF01E20EBF0FEF0DBF94B75F
-:10E70000F894A89514BE80916000886180936000A1
-:10E7100010926000789493FF05C0E0910002F091A0
-:10E7200001021995279A2F9A8091C00082608093E8
-:10E73000C00080E18093C40088E18093C1000000A4
-:10E74000EE24FF24870144E0A42EB12CCC24DD2448
-:10E7500024C0C5010197F1F70894E11CF11C011DCB
-:10E76000111D21E2E2162EE4F20620E0020720E06D
-:10E77000120718F031E0C32ED12CC801B70127ECE5
-:10E780003BE140E050E00F9441FE611571058105C9
-:10E79000910519F485B1805885B98091C00087FD35
-:10E7A00003C0C114D104A9F2A6014F5F5F4FC25E3E
-:10E7B000DE4F59834883CE51D140C25EDE4F8881FF
-:10E7C0009981CE51D140019711F00D9410FEC05D9A
-:10E7D000DE4F19821882C053D14060E0C15DDE4F28
-:10E7E0001882CF52D14088249924C35DDE4F19820C
-:10E7F0001882CD52D140C05EDE4F188219821A8233
-:10E800001B82C052D140CE5CDE4F188219821A8220
-:10E810001B82C253D140EE24FF2487010BBFF701B6
-:10E8200007911691C45CDE4F19830883CC53D14005
-:10E830000D940BFEC25EDE4F28813981CE51D1404E
-:10E840002130310509F52091C600C25EDE4F1982E4
-:10E850001882CE51D14022C02F5F3F4F4F4F5F4FA4
-:10E86000213082E138078AE7480780E0580780F0C6
-:10E87000C45CDE4FE881F981CC53D140EF5FFF4F9C
-:10E8800019F0EE27FF27099420E030E040E050E047
-:10E890008091C00087FFE0CF2091C600C35DDE4FAE
-:10E8A00048815981CD52D1404F5F5F4FC35DDE4FEC
-:10E8B00059834883CD52D140213209F063C64A3092
-:10E8C000510508F05FC60894811C911C53E0851621
-:10E8D000910409F059C600E010E018C081E280936D
-:10E8E000C6008091C00086FFFCCF8091C00080648C
-:10E8F0008093C0002F5F3F4F2931310579F70F9486
-:10E90000DCF10F5F1F4F0530110519F020E030E0FA
-:10E91000E5CF10920A0210920B0210920C02109294
-:10E920000D02109206021092070210920802109235
-:10E930000902109202021092030210920402109235
-:10E9400005028FEE90EE60E00F94F5F180E191EE1C
-:10E9500060E00F94C2F18091C00087FFFCCF9091DE
-:10E96000C600903608F09F759032B8F09093C600BC
-:10E970008091C00086FFFCCF8091C00080648093AE
-:10E98000C000A0E2A093C6008091C00086FFFCCF2B
-:10E990008091C00080648093C000983409F4D7C18E
-:10E9A0009934B8F4923409F459C1933458F490333B
-:10E9B00019F1903308F4E3C59F33A1F1903409F0C5
-:10E9C000DEC5BDC0953409F470C1963409F0D7C5D1
-:10E9D00098C1923509F42BC2933538F49C3409F46C
-:10E9E000F5C1913509F0CBC518C2963509F445C279
-:10E9F000993509F0C4C567C483E792EE62E00F94CD
-:10EA0000F5F110920602109207021092080210927D
-:10EA1000090210920A0210920B0210920C0210923C
-:10EA20000D0213C18FE792EE62E00F94F5F18FEEC5
-:10EA300090EE60E00F94F5F181E291EE60E00F94CA
-:10EA4000C2F187EB91EE60E00F94F5F180E391EE77
-:10EA500060E00F94C2F184EE90EE60E00F94F5F167
-:10EA60008FE391EE60E00F94C2F186E090E061E008
-:10EA700070E00F9434F20F94DCF18DE591EE60E0DC
-:10EA80000F94C2F189EC91EE60E00F94F5F18EE401
-:10EA900091EE60E00F94C2F183EC91EE60E00F9490
-:10EAA000F5F18CE691EE60E00F94C2F18EE10F94E7
-:10EAB0000DF288E90F940DF281E00F940DF20F949E
-:10EAC000DCF18BE791EE60E00F94C2F119E0E0E039
-:10EAD000F0E010935700E4918E2F0F940DF20F94F5
-:10EAE000DCF18AE891EE60E00F94C2F1E3E0F0E03F
-:10EAF00010935700E4918E2F0F940DF20F94DCF1D8
-:10EB000089E991EE60E00F94C2F1E2E0F0E0109349
-:10EB10005700E4918E2F0F940DF20F94DCF188EAE8
-:10EB200091EE60E00F94C2F1E1E0F0E01093570045
-:10EB30001491812F0F940DF20F94DCF107CF8BE825
-:10EB400092EE62E00F94F5F18BE492EE60E00F94A8
-:10EB5000F5F10F94DCF100E010E019C0C8016F2D51
-:10EB60000F947FFEFF2031F489E492EE60E00F9471
-:10EB7000C2F10BC0F092C6008091C00086FFFCCFAE
-:10EB80008091C00080648093C0000F5F1F4FC80158
-:10EB900081519F41A0E0B0E0ABBFFC01F790BAE229
-:10EBA000FB1621F0E2E000301E07C1F60F94DCF105
-:10EBB0000F94DCF187E592EE60E00F94F5F10F948D
-:10EBC000DCF1CC24DD2400E010E01EC0C8010F946D
-:10EBD00077FEF82E882331F489E492EE60E00F94FA
-:10EBE000C2F10BC08093C6008091C00086FFFCCFAD
-:10EBF0008091C00080648093C000FE1419F00894D6
-:10EC0000C11CD11C0F5F1F4FC80181519F41A0E063
-:10EC1000B0E0ABBFFC01E790FAE2EF1621F022E092
-:10EC20000030120799F60F94DCF10F94DCF182E6C4
-:10EC300092EE60E00F94C2F1C60161E070E00F94C3
-:10EC400034F20F94DCF10F94DCF110920202109276
-:10EC50000302109204021092050278CE89E992EE26
-:10EC600062E00F94F5F1279A2F9A16C02F9880E052
-:10EC700090E0E0EDF7E03197F1F7019684369105E9
-:10EC8000C1F72F9A80E090E0E0EDF7E03197F1F7DF
-:10EC9000019684369105C1F78091C00087FFE6CFC9
-:10ECA0008091C00087FFFCCF64C485EA92EE62E0E9
-:10ECB0000F94F5F140910202509103026091040219
-:10ECC0007091050281E020E10F9491F2809102029F
-:10ECD00090910302A0910402B091050280509F4FD1
-:10ECE000AF4FBF4F8093020290930302A0930402A0
-:10ECF000B093050280509041A040B04008F426CE69
-:10ED0000A4CF83EB92EE62E00F94F5F140910602FE
-:10ED100050910702609108027091090280E020E1A1
-:10ED20000F9491F28091060290910702A09108023F
-:10ED3000B091090280509F4FAF4FBF4F80930602A2
-:10ED400090930702A0930802B0930902FFCD80ECD4
-:10ED500092EE62E00F94F5F183E792EE60E00F949B
-:10ED6000F5F18FE792EE60E00F94F5F18BE892EE0B
-:10ED700060E00F94F5F189E992EE60E00F94F5F10F
-:10ED800085EA92EE60E00F94F5F183EB92EE60E09D
-:10ED90000F94F5F180EC92EE60E00F94F5F187ECC2
-:10EDA00092EE60E00F94F5F188ED92EE60E00F9442
-:10EDB000F5F18FED92EE60E00F94F5F18AEE92EEB0
-:10EDC00060E00F94F5F183E093EEBDCD87EC92EE19
-:10EDD00062E00F94F5F181E40F947BF282E40F94EA
-:10EDE0007BF283E40F947BF284E40F947BF285E45E
-:10EDF0000F947BF286E40F947BF287E40F947BF20E
-:10EE000088E40F947BF28AE40F947BF28BE40F94F6
-:10EE10007BF28CE40F947BF299CD88ED92EE62E068
-:10EE20000F94F5F1772473948824992409C48FED05
-:10EE300092EE62E00F94F5F140910A0250910B02BC
-:10EE400060910C0270910D0282E020E10F9491F22A
-:10EE500080910A0290910B02A0910C02B0910D02D8
-:10EE600080509F4FAF4FBF4F80930A0290930B0289
-:10EE7000A0930C02B0930D0269CD8AEE92EE62E08F
-:10EE80000F94F5F184EE90EE60E00F94F5F18FECC5
-:10EE900091EE60E00F94F5F1662477244301CC5D98
-:10EEA000DE4F19821882C452D140D401C301B695F5
-:10EEB000A79597958795CA5DDE4F88839983AA8326
-:10EEC000BB83C652D140CC5DDE4FA881B981C4520C
-:10EED000D1401196CC5DDE4FB983A883C452D14096
-:10EEE000CD0162E070E00F9434F2B0E2B093C6005E
-:10EEF0008091C00086FFFCCF8091C0008064809329
-:10EF0000C000EDE2E093C6008091C00086FFFCCF18
-:10EF10008091C00080648093C000F0E2F093C6004E
-:10EF20008091C00086FFFCCF8091C00080648093F8
-:10EF3000C000CA5DDE4FE880F9800A811B81C6529D
-:10EF4000D140BB27A12F902F8F2D0F940DF2CA5DBA
-:10EF5000DE4F8881C652D1400F940DF2B0E2FB2EF5
-:10EF6000F092C6008091C00086FFFCCF8091C00067
-:10EF700080648093C0000DE30093C6008091C000C0
-:10EF800086FFFCCF8091C00080648093C00010E2B7
-:10EF90001093C6008091C00086FFFCCF8091C00016
-:10EFA00080648093C0008BBEF3012791C65DDE4F65
-:10EFB0002883CA52D140A22EBB24CC24DD2408943D
-:10EFC000611C711C811C911C8BBEF3018791282E42
-:10EFD0003324442455240894611C711C811C911C09
-:10EFE0008BBEF3013791C55DDE4F3883CB52D140E4
-:10EFF0000894611C711C811C911C8BBEF30147910C
-:10F00000C45DDE4F4883CC52D140ADEFEA2EAFEF66
-:10F01000FA2EAFEF0A2FAFEF1A2F6E0C7F1C801E57
-:10F02000911E142D032DF22CEE24EA0CFB1C0C1D5A
-:10F030001D1D0F940DF220E22093C6008091C000A8
-:10F0400086FFFCCF8091C00080648093C000C65DC5
-:10F05000DE4F8881CA52D1400F940DF230E23093D6
-:10F06000C6008091C00086FFFCCF8091C000806404
-:10F070008093C000C45DDE4F8881CC52D1400F9494
-:10F080000DF240E24093C6008091C00086FFFCCFA5
-:10F090008091C00080648093C000C55DDE4F888190
-:10F0A000CB52D1400F940DF250E25093C6008091A4
-:10F0B000C00086FFFCCF8091C00080648093C000B8
-:10F0C0008FEFE8168FEFF80680E0080780E018075A
-:10F0D00031F484E092EE60E00F94C2F1DFC0D80119
-:10F0E000C7018070907CA070B0708050904CA040A0
-:10F0F000B040D1F52FEF3FE340E050E0E222F322B1
-:10F1000004231523CA5DDE4FA880B980CA80DB8046
-:10F11000C652D140AE0CBF1CC01ED11EAA0CBB1CD7
-:10F12000CC1CDD1C8EE092EE60E00F94C2F1BB2798
-:10F13000A12F902F8F2D0F940DF28E2D0F940DF285
-:10F1400030E23093C6008091C00086FFFCCF8091F2
-:10F15000C00080648093C0004EE34093C60080915D
-:10F16000C00086FFFCCF87C08EE09EEFA0E0B0E03D
-:10F17000E822F9220A231B239CE0E91694E9F90608
-:10F1800090E0090790E0190709F088C0C45DDE4FE0
-:10F19000A881CC52D140EA2EFF2400E010E0102FCD
-:10F1A0000F2DFE2CEE24C55DDE4FB881CB52D14031
-:10F1B000EB0EF11C011D111DD601C501817090706F
-:10F1C000A070B070DC0199278827E80EF91E0A1F8D
-:10F1D0001B1F20EF30E040E050E0A222B322C42207
-:10F1E000D52241E1AA0CBB1CCC1CDD1C4A95D1F7F1
-:10F1F000EA0CFB1C0C1D1D1D81E090E0A0E0B0E0BE
-:10F20000282239224A225B2235E1220C331C441C7D
-:10F21000551C3A95D1F7E20CF31C041D151D57013E
-:10F220006801AA0CBB1CCC1CDD1C85E192EE60E0E1
-:10F230000F94C2F1C801AA27BB270F940DF2BB2778
-:10F24000A12F902F8F2D0F940DF28E2D0F940DF274
-:10F2500090E29093C6008091C00086FFFCCF809121
-:10F26000C00080648093C000AEE3A093C60080918C
-:10F27000C00086FFFCCF8091C00080648093C000F6
-:10F28000C601AA27BB270F940DF2BB27AD2D9C2DDD
-:10F290008B2D0F940DF28A2D0F940DF20F94DCF14B
-:10F2A000CC5DDE4FE881F981C452D140F99709F471
-:10F2B0004DCBF4E0EF2EF12C012D112D6E0C7F1CA7
-:10F2C000801E911EF2CD83E093EE62E00F94F5F183
-:10F2D0008AE192EE60E00F94C2F18091C00087FF56
-:10F2E000FCCF1091C6001F751093C6008091C0001E
-:10F2F00086FFFCCF8091C00080648093C0000F9493
-:10F30000DCF1812F81548A3108F036C1163409F4BA
-:10F3100095C0173490F4133409F44EC0143430F40B
-:10F320001134F1F0123409F01DC130C0143409F465
-:10F3300059C0153409F016C16BC01A3409F4C4C0A1
-:10F340001B3438F4173409F48FC0183409F00AC19B
-:10F35000A1C01B3409F4D2C01C3409F003C1E8C0B9
-:10F360008FEF81B90DC082B1809582B980E090E0C5
-:10F37000E0EDF7E03197F1F70196883C9105C1F790
-:10F380008091C00087FFEFCF12B8EFC08FEF84B934
-:10F390000DC085B1809585B980E090E0E0EDF7E0A3
-:10F3A0003197F1F70196883C9105C1F78091C00033
-:10F3B00087FFEFCF15B8D9C08FEF87B90DC088B1DF
-:10F3C000809588B980E090E0E0EDF7E03197F1F7C3
-:10F3D0000196883C9105C1F78091C00087FFEFCF6F
-:10F3E00018B8C3C08FEF8AB90DC08BB180958BB9A7
-:10F3F00080E090E0E0EDF7E03197F1F70196883C8E
-:10F400009105C1F78091C00087FFEFCF1BB8ADC059
-:10F410008FEF8DB90DC08EB180958EB980E090E0F0
-:10F42000E0EDF7E03197F1F70196883C9105C1F7DF
-:10F430008091C00087FFEFCF1EB897C08FEF80BBD1
-:10F440000DC081B3809581BB80E090E0E0EDF7E0F6
-:10F450003197F1F70196883C9105C1F78091C00082
-:10F4600087FFEFCF11BA81C08FEF83BB0DC084B38C
-:10F47000809584BB80E090E0E0EDF7E03197F1F714
-:10F480000196883C9105C1F78091C00087FFEFCFBE
-:10F4900014BA6BC08FEF809301010FC080910201FD
-:10F4A00080958093020180E090E0E0EDF7E03197F5
-:10F4B000F1F70196883C9105C1F78091C00087FF64
-:10F4C000EDCF1092020151C08FEF809304010FC065
-:10F4D0008091050180958093050180E090E0E0ED4A
-:10F4E000F7E03197F1F70196883C9105C1F78091DB
-:10F4F000C00087FFEDCF1092050137C08FEF8093DA
-:10F5000007010FC08091080180958093080180E079
-:10F5100090E0E0EDF7E03197F1F70196883C910536
-:10F52000C1F78091C00087FFEDCF109208011DC088
-:10F530008FEF80930A010FC080910B01809580931B
-:10F540000B0180E090E0E0EDF7E03197F1F70196F4
-:10F55000883C9105C1F78091C00087FFEDCF1092E4
-:10F560000B0103C085E292EEEEC98091C00087FFD7
-:10F57000FCCF8091C600EAC988E392EEE4C98CE131
-:10F5800091EEE1C988249924933011F1943028F444
-:10F59000913089F09230B8F408C0953061F195301F
-:10F5A000F0F0963009F048C043C02B3109F042C951
-:10F5B00091E06BE13FC96227C15DDE4F2883CF52E6
-:10F5C000D14092E037C9B22FA0E0622793E032C960
-:10F5D000822F90E0A82BB92B622794E02BC92E3004
-:10F5E00009F039C3622795E0C05DDE4F19821882A9
-:10F5F000C053D1401FC9E1E0F0E0EC0FFD1FC05D3A
-:10F60000DE4F08811981C053D140E00FF11F2083E4
-:10F610000F5F1F4FC05DDE4F19830883C053D14079
-:10F6200062270A171B0709F005C9D80196E002C92D
-:10F63000261709F010C303C0973009F0FBC87724E0
-:10F640009981933109F412C19431C8F4963009F4C8
-:10F65000D8C0973050F4923009F406C1933009F4C1
-:10F660006DC0913009F059C253C0913109F477C08F
-:10F67000923108F0BBC0903109F04FC2F5C098310B
-:10F6800009F487C0993150F4953109F4EFC09531F0
-:10F6900008F4C6C1963109F040C2C2C19A3109F4DA
-:10F6A0006CC09A3108F491C09B3109F45BC09D3164
-:10F6B00009F033C29D81903359F48F81882311F46E
-:10F6C0009EE11CC0813011F091E018C098E916C08D
-:10F6D000892F807591F0903539F4E0E0F0E089E011
-:10F6E0008093570094910AC0983539F4E3E0F0E034
-:10F6F00089E080935700949101C090E01A821B82A8
-:10F700008D818C831D829E831F8227E030E009C299
-:10F710001A8288E08B8381E48C8386E58D8382E581
-:10F720008E8389E48F8383E5888780E589878FE5E9
-:10F730008A8782E38B872BE030E0F3C18A818139AD
-:10F7400041F0823941F0803911F48FE005C080E04A
-:10F7500003C082E001C08AE01A828B8344C0772410
-:10F76000739482C08D81882311F48EE12CC0813086
-:10F7700011F081E028C088E926C01A82E1E0F0E0BB
-:10F7800089E08093570084918B831C8224E030E0D1
-:10F79000C8C18B81803589F48C81883039F4E2E0EE
-:10F7A000F0E089E08093570084910DC0E0E0F0E044
-:10F7B00089E080935700849106C0E3E0F0E089E09F
-:10F7C0008093570084911A82DFCF8D81836C99E0FA
-:10F7D000E1E0F0E0082E90935700E89507B600FCB2
-:10F7E000FDCF1A821B8223E030E09BC180EC8A832C
-:10F7F000CE5CDE4F188219821A821B82C253D1401E
-:10F800008EC18A8190E0A0E0B0E0582F44273327D2
-:10F8100022278B8190E0A0E0B0E0DC0199278827C7
-:10F82000282B392B4A2B5B2B8D8190E0A0E0B0E098
-:10F83000282B392B4A2B5B2B8C8190E0A0E0B0E089
-:10F84000BA2FA92F982F8827282B392B4A2B5B2BCF
-:10F85000220F331F441F551FC05EDE4F288339839C
-:10F860004A835B83C052D1401A8259C13A81C95C34
-:10F87000DE4F3883C753D140CA5CDE4F1882C6536F
-:10F88000D1408B81C82EDD24CA5CDE4F488159816E
-:10F89000C653D140C42AD52A933109F082C0CE5C28
-:10F8A000DE4F88819981AA81BB81C253D1408050AB
-:10F8B000904CA340B04030F583E0CE5CDE4FE88052
-:10F8C000F9800A811B81C253D140F70100935B008C
-:10F8D00080935700E89507B600FCFDCFCE5CDE4F65
-:10F8E000088119812A813B81C253D14000501F4FAA
-:10F8F0002F4F3F4FCE5CDE4F088319832A833B8313
-:10F90000C253D140C05EDE4F488159816A817B81FC
-:10F91000C052D140DE011B9631E08C9111962C91A2
-:10F9200011971296C75CDE4F2883C953D140C85C3B
-:10F93000DE4F1882C853D14090E0C85CDE4FE881AA
-:10F94000F981C853D1408E2B9F2B0C01FA01609393
-:10F950005B0030935700E89511244E5F5F4F6F4F67
-:10F960007F4F0EEFE02E0FEFF02ECE0CDF1CC114F8
-:10F97000D10499F685E0C05EDE4F088119812A81A5
-:10F980003B81C052D140F80120935B008093570027
-:10F99000E89507B600FCFDCF81E180935700E8951C
-:10F9A00035C0C05EDE4F88819981AA81BB81C0527B
-:10F9B000D140B695A795979587957C018601ABE0D8
-:10F9C000AA2EB12CAC0EBD1E0BC0D5016D915D01F0
-:10F9D000C7010F947FFE0894E11CF11C01501040F8
-:10F9E0000115110591F7A60160E070E0440F551F65
-:10F9F000661F771FC05EDE4FE880F9800A811B8199
-:10FA0000C052D1404E0D5F1D601F711F1A82C05E33
-:10FA1000DE4F488359836A837B83C052D1407FC0C5
-:10FA2000FA80C55CDE4FF882CB53D140C65CDE4F16
-:10FA30001882CA53D1408B81C82EDD24C65CDE4FAC
-:10FA400008811981CA53D140C02AD12A1A828981DA
-:10FA5000BE016D5F7F4F843121F59601C05EDE4FA0
-:10FA6000E880F9800A811B81C052D1400BBFF701A9
-:10FA700087919691DB018C9311969C936E5F7F4FDB
-:10FA8000D801C7010296A11DB11DC05EDE4F88835B
-:10FA90009983AA83BB83C052D14022503040F1F6F3
-:10FAA00036C0C05EDE4F288139814A815B81C052F9
-:10FAB000D1400894C108D108760100E010E0089414
-:10FAC000C11CD11C0894E11CF11C011D111DE20E8A
-:10FAD000F31E041F151F21BDBB27A52F942F832FB5
-:10FAE00082BD2F5F3F4F4F4F5F4FF89A80B5DB01CC
-:10FAF0008D93BD012E153F054007510761F7C05E8C
-:10FB0000DE4F288339834A835B83C052D1409601FC
-:10FB10002D5F3F4FFB01108204C080EC8A8322E0FE
-:10FB200030E08BE18093C6008091C00086FFFCCF5F
-:10FB30008091C00080648093C000C15DDE4FF88179
-:10FB4000CF52D140F093C6008091C00086FFFCCF19
-:10FB50008091C00080648093C000432F3093C60022
-:10FB60008091C00086FFFCCF8091C00080648093AC
-:10FB7000C000922F2093C6008091C00086FFFCCF6A
-:10FB80008091C00080648093C0008EE08093C600A6
-:10FB90008091C00086FFFCCF8091C000806480937C
-:10FBA000C00065E1C15DDE4FE880CF52D1406E25D7
-:10FBB00069276427FE01319610C090819093C6009A
-:10FBC0008091C00086FFFCCF31968091C000806498
-:10FBD0008093C0006927215030402115310569F715
-:10FBE0006093C6008091C00086FFFCCF8091C0006A
-:10FBF00080648093C00085B1805885B9772081F4F6
-:10FC0000C15DDE4F0881CF52D1400F5FC15DDE4F35
-:10FC10000883CF52D14090E0A0E0B0E00D941AF4F8
-:10FC200027982F9880E090E020ED37E0F901319798
-:10FC3000F1F7019684369105C9F700008091C00064
-:10FC40008D7F8093C00081E180935700E895EE2777
-:10FC5000FF270994FFCF90E00D941AF497FB092E2B
-:10FC600007260AD077FD04D02ED006D000201AF443
-:10FC7000709561957F4F0895F6F7909581959F4F08
-:10FC80000895A1E21A2EAA1BBB1BFD010DC0AA1FDD
-:10FC9000BB1FEE1FFF1FA217B307E407F50720F0F5
-:10FCA000A21BB30BE40BF50B661F771F881F991F70
-:10FCB0001A9469F760957095809590959B01AC01B9
-:10FCC000BD01CF010895AA1BBB1B51E107C0AA1FAC
-:10FCD000BB1FA617B70710F0A61BB70B881F991FED
-:10FCE0005A95A9F780959095BC01CD010895F99991
-:10FCF000FECF92BD81BDF89A992780B50895262F31
-:10FD0000F999FECF1FBA92BD81BD20BD0FB6F89400
-:0EFD1000FA9AF99A0FBE01960895F894FFCF63
-:00000001FF
diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
deleted file mode 100644
index a239ee4..0000000
--- a/Marlin/Configuration.h
+++ /dev/null
@@ -1,3166 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#define CONFIG_EXAMPLES_DIR "FlashForge/CreatorPro"
-
-/**
- * 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
- */
-#define CONFIGURATION_H_VERSION 02000905
-
-//===========================================================================
-//============================= Getting Started =============================
-//===========================================================================
-
-/**
- * Here are some useful links to help get your machine configured and calibrated:
- *
- * Example Configs: https://github.com/MarlinFirmware/Configurations/branches/all
- *
- * Průša Calculator: https://blog.prusaprinters.org/calculator_3416/
- *
- * Calibration Guides: https://reprap.org/wiki/Calibration
- * https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
- * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
- * https://youtu.be/wAL9d7FgInk
- *
- * Calibration Objects: https://www.thingiverse.com/thing:5573
- * https://www.thingiverse.com/thing:1278865
- */
-
-// @section info
-
-// Author info of this build printed to the host during boot and M115
-#define STRING_CONFIG_H_AUTHOR "M. Baker" // Who made the changes.
-//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
-
-/**
- * *** VENDORS PLEASE READ ***
- *
- * Marlin allows you to add a custom boot image for Graphical LCDs.
- * With this option Marlin will first show your custom screen followed
- * by the standard Marlin logo with version number and web URL.
- *
- * We encourage you to take advantage of this new feature and we also
- * respectfully request that you retain the unmodified Marlin boot screen.
- */
-
-// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION **
-#define SHOW_BOOTSCREEN
-
-// Show the bitmap in Marlin/_Bootscreen.h on startup.
-//#define SHOW_CUSTOM_BOOTSCREEN
-
-// Show the bitmap in Marlin/_Statusscreen.h on the status screen.
-//#define CUSTOM_STATUS_SCREEN_IMAGE
-
-// @section machine
-
-// Choose the name from boards.h that matches your setup
-#ifndef MOTHERBOARD
- #define MOTHERBOARD BOARD_MKS_GEN_L_V21
-#endif
-
-/**
- * Select the serial port on the board to use for communication with the host.
- * This allows the connection of wireless adapters (for instance) to non-default port pins.
- * Serial port -1 is the USB emulated serial port, if available.
- * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
- *
- * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
- */
-#define SERIAL_PORT 0
-
-/**
- * Serial Port Baud Rate
- * This is the default communication speed for all serial ports.
- * Set the baud rate defaults for additional serial ports below.
- *
- * 250000 works in most cases, but you might try a lower speed if
- * you commonly experience drop-outs during host printing.
- * You may try up to 1000000 to speed up SD file transfer.
- *
- * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
- */
-#define BAUDRATE 9600
-//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
-
-/**
- * Select a secondary serial port on the board to use for communication with the host.
- * Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
- * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
- */
-//#define SERIAL_PORT_2 -1
-//#define BAUDRATE_2 250000 // Enable to override BAUDRATE
-
-/**
- * Select a third serial port on the board to use for communication with the host.
- * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1
- * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
- */
-//#define SERIAL_PORT_3 1
-//#define BAUDRATE_3 250000 // Enable to override BAUDRATE
-
-// Enable the Bluetooth serial interface on AT90USB devices
-//#define BLUETOOTH
-
-// Name displayed in the LCD "Ready" message and Info menu
-#define CUSTOM_MACHINE_NAME "Makerbot Replicator"
-
-// Printer's unique ID, used by some programs to differentiate between machines.
-// Choose your own or use a service like https://www.uuidgenerator.net/version4
-//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
-
-/**
- * Stepper Drivers
- *
- * These settings allow Marlin to tune stepper driver timing and enable advanced options for
- * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
- *
- * Use TMC2208/TMC2208_STANDALONE for TMC2225 drivers and TMC2209/TMC2209_STANDALONE for TMC2226 drivers.
- *
- * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,
- * TB6560, TB6600, TMC2100,
- * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
- * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
- * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
- * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
- */
-#define X_DRIVER_TYPE TMC2209_STANDALONE
-#define Y_DRIVER_TYPE TMC2209_STANDALONE
-#define Z_DRIVER_TYPE TMC2209_STANDALONE
-//#define X2_DRIVER_TYPE A4988
-//#define Y2_DRIVER_TYPE A4988
-//#define Z2_DRIVER_TYPE A4988
-//#define Z3_DRIVER_TYPE A4988
-//#define Z4_DRIVER_TYPE A4988
-//#define I_DRIVER_TYPE A4988
-//#define J_DRIVER_TYPE A4988
-//#define K_DRIVER_TYPE A4988
-#define E0_DRIVER_TYPE TMC2209_STANDALONE
-#define E1_DRIVER_TYPE TMC2209_STANDALONE
-//#define E2_DRIVER_TYPE A4988
-//#define E3_DRIVER_TYPE A4988
-//#define E4_DRIVER_TYPE A4988
-//#define E5_DRIVER_TYPE A4988
-//#define E6_DRIVER_TYPE A4988
-//#define E7_DRIVER_TYPE A4988
-
-/**
- * Additional Axis Settings
- *
- * AXISn_NAME defines the letter used to refer to the axis in (most) G-code commands.
- * By convention the names and roles are typically:
- * 'A' : Rotational axis parallel to X
- * 'B' : Rotational axis parallel to Y
- * 'C' : Rotational axis parallel to Z
- * 'U' : Secondary linear axis parallel to X
- * 'V' : Secondary linear axis parallel to Y
- * 'W' : Secondary linear axis parallel to Z
- *
- * Regardless of these settings the axes are internally named I, J, K.
- */
-#ifdef I_DRIVER_TYPE
- #define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W']
-#endif
-#ifdef J_DRIVER_TYPE
- #define AXIS5_NAME 'B' // :['B', 'C', 'U', 'V', 'W']
-#endif
-#ifdef K_DRIVER_TYPE
- #define AXIS6_NAME 'C' // :['C', 'U', 'V', 'W']
-#endif
-
-// @section extruder
-
-// This defines the number of extruders
-// :[0, 1, 2, 3, 4, 5, 6, 7, 8]
-#define EXTRUDERS 2
-
-// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
-#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
-
-// For Cyclops or any "multi-extruder" that shares a single nozzle.
-//#define SINGLENOZZLE
-
-// Save and restore temperature and fan speed on tool-change.
-// Set standby for the unselected tool with M104/106/109 T...
-#if ENABLED(SINGLENOZZLE)
- //#define SINGLENOZZLE_STANDBY_TEMP
- //#define SINGLENOZZLE_STANDBY_FAN
-#endif
-
-/**
- * Multi-Material Unit
- * Set to one of these predefined models:
- *
- * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version)
- * PRUSA_MMU2 : Průša MMU2
- * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5)
- * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
- * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
- *
- * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
- * See additional options in Configuration_adv.h.
- */
-//#define MMU_MODEL PRUSA_MMU2
-
-// A dual extruder that uses a single stepper motor
-//#define SWITCHING_EXTRUDER
-#if ENABLED(SWITCHING_EXTRUDER)
- #define SWITCHING_EXTRUDER_SERVO_NR 0
- #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
- #if EXTRUDERS > 3
- #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
- #endif
-#endif
-
-// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
-//#define SWITCHING_NOZZLE
-#if ENABLED(SWITCHING_NOZZLE)
- #define SWITCHING_NOZZLE_SERVO_NR 0
- //#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second
- #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
-#endif
-
-/**
- * Two separate X-carriages with extruders that connect to a moving part
- * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN.
- */
-//#define PARKING_EXTRUDER
-
-/**
- * Two separate X-carriages with extruders that connect to a moving part
- * via a magnetic docking mechanism using movements and no solenoid
- *
- * project : https://www.thingiverse.com/thing:3080893
- * movements : https://youtu.be/0xCEiG9VS3k
- * https://youtu.be/Bqbcs0CU2FE
- */
-//#define MAGNETIC_PARKING_EXTRUDER
-
-#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER)
-
- #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders
- #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // (mm) Distance to move beyond the parking point to grab the extruder
-
- #if ENABLED(PARKING_EXTRUDER)
-
- #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage
- #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil
- #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // (ms) Delay for magnetic field. No delay if 0 or not defined.
- //#define MANUAL_SOLENOID_CONTROL // Manual control of docking solenoids with M380 S / M381
-
- #elif ENABLED(MAGNETIC_PARKING_EXTRUDER)
-
- #define MPE_FAST_SPEED 9000 // (mm/min) Speed for travel before last distance point
- #define MPE_SLOW_SPEED 4500 // (mm/min) Speed for last distance travel to park and couple
- #define MPE_TRAVEL_DISTANCE 10 // (mm) Last distance point
- #define MPE_COMPENSATION 0 // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling
-
- #endif
-
-#endif
-
-/**
- * Switching Toolhead
- *
- * Support for swappable and dockable toolheads, such as
- * the E3D Tool Changer. Toolheads are locked with a servo.
- */
-//#define SWITCHING_TOOLHEAD
-
-/**
- * Magnetic Switching Toolhead
- *
- * Support swappable and dockable toolheads with a magnetic
- * docking mechanism using movement and no servo.
- */
-//#define MAGNETIC_SWITCHING_TOOLHEAD
-
-/**
- * Electromagnetic Switching Toolhead
- *
- * Parking for CoreXY / HBot kinematics.
- * Toolheads are parked at one edge and held with an electromagnet.
- * Supports more than 2 Toolheads. See https://youtu.be/JolbsAKTKf4
- */
-//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD
-
-#if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_Y_POS 235 // (mm) Y position of the toolhead dock
- #define SWITCHING_TOOLHEAD_Y_SECURITY 10 // (mm) Security distance Y axis
- #define SWITCHING_TOOLHEAD_Y_CLEAR 60 // (mm) Minimum distance from dock for unobstructed X axis
- #define SWITCHING_TOOLHEAD_X_POS { 215, 0 } // (mm) X positions for parking the extruders
- #if ENABLED(SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_SERVO_NR 2 // Index of the servo connector
- #define SWITCHING_TOOLHEAD_SERVO_ANGLES { 0, 180 } // (degrees) Angles for Lock, Unlock
- #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_Y_RELEASE 5 // (mm) Security distance Y axis
- #define SWITCHING_TOOLHEAD_X_SECURITY { 90, 150 } // (mm) Security distance X axis (T0,T1)
- //#define PRIME_BEFORE_REMOVE // Prime the nozzle before release from the dock
- #if ENABLED(PRIME_BEFORE_REMOVE)
- #define SWITCHING_TOOLHEAD_PRIME_MM 20 // (mm) Extruder prime length
- #define SWITCHING_TOOLHEAD_RETRACT_MM 10 // (mm) Retract after priming length
- #define SWITCHING_TOOLHEAD_PRIME_FEEDRATE 300 // (mm/min) Extruder prime feedrate
- #define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE 2400 // (mm/min) Extruder retract feedrate
- #endif
- #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
- #define SWITCHING_TOOLHEAD_Z_HOP 2 // (mm) Z raise for switching
- #endif
-#endif
-
-/**
- * "Mixing Extruder"
- * - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
- * - Extends the stepping routines to move multiple steppers in proportion to the mix.
- * - Optional support for Repetier Firmware's 'M164 S' supporting virtual tools.
- * - This implementation supports up to two mixing extruders.
- * - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from 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
- //#define GRADIENT_MIX // Support for gradient mixing with M166 and LCD
- //#define MIXING_PRESETS // Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS
- #if ENABLED(GRADIENT_MIX)
- //#define GRADIENT_VTOOL // Add M166 T to use a V-tool index as a Gradient alias
- #endif
-#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, -34.00 } // (mm) relative X-offset for each nozzle
-//#define HOTEND_OFFSET_Y { 0.0, 0.00 } // (mm) relative Y-offset for each nozzle
-//#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle
-
-// @section machine
-
-/**
- * Power Supply Control
- *
- * Enable and connect the power supply to the PS_ON_PIN.
- * Specify whether the power supply is active HIGH or active LOW.
- */
-//#define PSU_CONTROL
-//#define PSU_NAME "Power Supply"
-
-#if ENABLED(PSU_CONTROL)
- //#define MKS_PWC // Using the MKS PWC add-on
- //#define PS_OFF_CONFIRM // Confirm dialog when power off
- //#define PS_OFF_SOUND // Beep 1s when power off
- #define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box
-
- //#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
- //#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power
- //#define LED_POWEROFF_TIMEOUT 10000 // (ms) Turn off LEDs after power-off, with this amount of delay
-
- //#define POWER_OFF_TIMER // Enable M81 D to power off after a delay
- //#define POWER_OFF_WAIT_FOR_COOLDOWN // Enable M81 S to power off only after cooldown
-
- //#define PSU_POWERUP_GCODE "M355 S1" // G-code to run after power-on (e.g., case light on)
- //#define PSU_POWEROFF_GCODE "M355 S0" // G-code to run before power-off (e.g., case light off)
-
- //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin
- #if ENABLED(AUTO_POWER_CONTROL)
- #define AUTO_POWER_FANS // Turn on PSU if fans need power
- #define AUTO_POWER_E_FANS
- #define AUTO_POWER_CONTROLLERFAN
- #define AUTO_POWER_CHAMBER_FAN
- #define AUTO_POWER_COOLER_FAN
- #define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration
- //#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time.
- #endif
- #if EITHER(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN)
- //#define AUTO_POWER_E_TEMP 50 // (°C) PSU on if any extruder is over this temperature
- //#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) PSU on if the chamber is over this temperature
- //#define AUTO_POWER_COOLER_TEMP 26 // (°C) PSU on if the cooler is over this temperature
- #endif
-#endif
-
-//===========================================================================
-//============================= Thermal Settings ============================
-//===========================================================================
-// @section temperature
-
-/**
- * --NORMAL IS 4.7kΩ PULLUP!-- 1kΩ pullup can be used on hotend sensor, using correct resistor and table
- *
- * Temperature sensors available:
- *
- * SPI RTD/Thermocouple Boards - IMPORTANT: Read the NOTE below!
- * -------
- * -5 : MAX31865 with Pt100/Pt1000, 2, 3, or 4-wire (only for sensors 0-1)
- * NOTE: You must uncomment/set the MAX31865_*_OHMS_n defines below.
- * -3 : MAX31855 with Thermocouple, -200°C to +700°C (only for sensors 0-1)
- * -2 : MAX6675 with Thermocouple, 0°C to +700°C (only for sensors 0-1)
- *
- * NOTE: Ensure TEMP_n_CS_PIN is set in your pins file for each TEMP_SENSOR_n using an SPI Thermocouple. By default,
- * Hardware SPI on the default serial bus is used. If you have also set TEMP_n_SCK_PIN and TEMP_n_MISO_PIN,
- * Software SPI will be used on those ports instead. You can force Hardware SPI on the default bus in the
- * Configuration_adv.h file. At this time, separate Hardware SPI buses for sensors are not supported.
- *
- * Analog Themocouple Boards
- * -------
- * -4 : AD8495 with Thermocouple
- * -1 : AD595 with Thermocouple
- *
- * Analog Thermistors - 4.7kΩ pullup - Normal
- * -------
- * 1 : 100kΩ EPCOS - Best choice for EPCOS thermistors
- * 331 : 100kΩ Same as #1, but 3.3V scaled for MEGA
- * 332 : 100kΩ Same as #1, but 3.3V scaled for DUE
- * 2 : 200kΩ ATC Semitec 204GT-2
- * 202 : 200kΩ Copymaster 3D
- * 3 : ???Ω Mendel-parts thermistor
- * 4 : 10kΩ Generic Thermistor !! DO NOT use for a hotend - it gives bad resolution at high temp. !!
- * 5 : 100kΩ ATC Semitec 104GT-2/104NT-4-R025H42G - Used in ParCan, J-Head, and E3D, SliceEngineering 300°C
- * 501 : 100kΩ Zonestar - Tronxy X3A
- * 502 : 100kΩ Zonestar - used by hot bed in Zonestar Průša P802M
- * 503 : 100kΩ Zonestar (Z8XM2) Heated Bed thermistor
- * 504 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-B3950) Hotend Thermistor
- * 505 : 100kΩ Zonestar P802QR2 (Part# QWG-104F-3950) Bed Thermistor
- * 512 : 100kΩ RPW-Ultra hotend
- * 6 : 100kΩ EPCOS - Not as accurate as table #1 (created using a fluke thermocouple)
- * 7 : 100kΩ Honeywell 135-104LAG-J01
- * 71 : 100kΩ Honeywell 135-104LAF-J01
- * 8 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT
- * 9 : 100kΩ GE Sensing AL03006-58.2K-97-G1
- * 10 : 100kΩ RS PRO 198-961
- * 11 : 100kΩ Keenovo AC silicone mats, most Wanhao i3 machines - beta 3950, 1%
- * 12 : 100kΩ Vishay 0603 SMD NTCS0603E3104FXT (#8) - calibrated for Makibox hot bed
- * 13 : 100kΩ Hisens up to 300°C - for "Simple ONE" & "All In ONE" hotend - beta 3950, 1%
- * 15 : 100kΩ Calibrated for JGAurora A5 hotend
- * 18 : 200kΩ ATC Semitec 204GT-2 Dagoma.Fr - MKS_Base_DKU001327
- * 22 : 100kΩ GTM32 Pro vB - hotend - 4.7kΩ pullup to 3.3V and 220Ω to analog input
- * 23 : 100kΩ GTM32 Pro vB - bed - 4.7kΩ pullup to 3.3v and 220Ω to analog input
- * 30 : 100kΩ Kis3d Silicone heating mat 200W/300W with 6mm precision cast plate (EN AW 5083) NTC100K - beta 3950
- * 60 : 100kΩ Maker's Tool Works Kapton Bed Thermistor - beta 3950
- * 61 : 100kΩ Formbot/Vivedino 350°C Thermistor - beta 3950
- * 66 : 4.7MΩ Dyze Design High Temperature Thermistor
- * 67 : 500kΩ SliceEngineering 450°C Thermistor
- * 68 : PT100 amplifier board from Dyze Design
- * 70 : 100kΩ bq Hephestos 2
- * 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32
- * 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor
- *
- * Analog Thermistors - 1kΩ pullup - Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ.
- * ------- (but gives greater accuracy and more stable PID)
- * 51 : 100kΩ EPCOS (1kΩ pullup)
- * 52 : 200kΩ ATC Semitec 204GT-2 (1kΩ pullup)
- * 55 : 100kΩ ATC Semitec 104GT-2 - Used in ParCan & J-Head (1kΩ pullup)
- *
- * Analog Thermistors - 10kΩ pullup - Atypical
- * -------
- * 99 : 100kΩ Found on some Wanhao i3 machines with a 10kΩ pull-up resistor
- *
- * Analog RTDs (Pt100/Pt1000)
- * -------
- * 110 : Pt100 with 1kΩ pullup (atypical)
- * 147 : Pt100 with 4.7kΩ pullup
- * 1010 : Pt1000 with 1kΩ pullup (atypical)
- * 1047 : Pt1000 with 4.7kΩ pullup (E3D)
- * 20 : Pt100 with circuit in the Ultimainboard V2.x with mainboard ADC reference voltage = INA826 amplifier-board supply voltage.
- * NOTE: (1) Must use an ADC input with no pullup. (2) Some INA826 amplifiers are unreliable at 3.3V so consider using sensor 147, 110, or 21.
- * 21 : Pt100 with circuit in the Ultimainboard V2.x with 3.3v ADC reference voltage (STM32, LPC176x....) and 5V INA826 amplifier board supply.
- * NOTE: ADC pins are not 5V tolerant. Not recommended because it's possible to damage the CPU by going over 500°C.
- * 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x
- *
- * Custom/Dummy/Other Thermal Sensors
- * ------
- * 0 : not used
- * 1000 : Custom - Specify parameters in Configuration_adv.h
- *
- * !!! Use these for Testing or Development purposes. NEVER for production machine. !!!
- * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
- * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
- *
- */
-#define TEMP_SENSOR_0 1
-#define TEMP_SENSOR_1 1
-#define TEMP_SENSOR_2 0
-#define TEMP_SENSOR_3 0
-#define TEMP_SENSOR_4 0
-#define TEMP_SENSOR_5 0
-#define TEMP_SENSOR_6 0
-#define TEMP_SENSOR_7 0
-#define TEMP_SENSOR_BED 1
-#define TEMP_SENSOR_PROBE 0
-#define TEMP_SENSOR_CHAMBER 0
-#define TEMP_SENSOR_COOLER 0
-#define TEMP_SENSOR_BOARD 0
-#define TEMP_SENSOR_REDUNDANT 0
-
-// Dummy thermistor constant temperature readings, for use with 998 and 999
-#define DUMMY_THERMISTOR_998_VALUE 25
-#define DUMMY_THERMISTOR_999_VALUE 100
-
-// Resistor values when using MAX31865 sensors (-5) on TEMP_SENSOR_0 / 1
-//#define MAX31865_SENSOR_OHMS_0 100 // (Ω) Typically 100 or 1000 (PT100 or PT1000)
-//#define MAX31865_CALIBRATION_OHMS_0 430 // (Ω) Typically 430 for Adafruit PT100; 4300 for Adafruit PT1000
-//#define MAX31865_SENSOR_OHMS_1 100
-//#define MAX31865_CALIBRATION_OHMS_1 430
-
-#define TEMP_RESIDENCY_TIME 0 // (seconds) Time to wait for hotend to "settle" in M109
-#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
-#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
-
-#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) Time to wait for bed to "settle" in M190
-#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
-#define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
-
-#define TEMP_CHAMBER_RESIDENCY_TIME 10 // (seconds) Time to wait for chamber to "settle" in M191
-#define TEMP_CHAMBER_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
-#define TEMP_CHAMBER_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
-
-/**
- * Redundant Temperature Sensor (TEMP_SENSOR_REDUNDANT)
- *
- * Use a temp sensor as a redundant sensor for another reading. Select an unused temperature sensor, and another
- * sensor you'd like it to be redundant for. If the two thermistors differ by TEMP_SENSOR_REDUNDANT_MAX_DIFF (°C),
- * the print will be aborted. Whichever sensor is selected will have its normal functions disabled; i.e. selecting
- * the Bed sensor (-1) will disable bed heating/monitoring.
- *
- * For selecting source/target use: COOLER, PROBE, BOARD, CHAMBER, BED, E0, E1, E2, E3, E4, E5, E6, E7
- */
-#if TEMP_SENSOR_REDUNDANT
- #define TEMP_SENSOR_REDUNDANT_SOURCE E1 // The sensor that will provide the redundant reading.
- #define TEMP_SENSOR_REDUNDANT_TARGET E0 // The sensor that we are providing a redundant reading for.
- #define TEMP_SENSOR_REDUNDANT_MAX_DIFF 10 // (°C) Temperature difference that will trigger a print abort.
-#endif
-
-// Below this temperature the heater will be switched off
-// because it probably indicates a broken thermistor wire.
-#define HEATER_0_MINTEMP 5
-#define HEATER_1_MINTEMP 5
-#define HEATER_2_MINTEMP 5
-#define HEATER_3_MINTEMP 5
-#define HEATER_4_MINTEMP 5
-#define HEATER_5_MINTEMP 5
-#define HEATER_6_MINTEMP 5
-#define HEATER_7_MINTEMP 5
-#define BED_MINTEMP 5
-#define CHAMBER_MINTEMP 5
-
-// Above this temperature the heater will be switched off.
-// This can protect components from overheating, but NOT from shorts and failures.
-// (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 HEATER_4_MAXTEMP 260
-#define HEATER_5_MAXTEMP 260
-#define HEATER_6_MAXTEMP 260
-#define HEATER_7_MAXTEMP 260
-#define BED_MAXTEMP 110
-#define CHAMBER_MAXTEMP 60
-
-/**
- * Thermal Overshoot
- * During heatup (and printing) the temperature can often "overshoot" the target by many degrees
- * (especially before PID tuning). Setting the target temperature too close to MAXTEMP guarantees
- * a MAXTEMP shutdown! Use these values to forbid temperatures being set too close to MAXTEMP.
- */
-#define HOTEND_OVERSHOOT 15 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT
-#define BED_OVERSHOOT 10 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT
-#define COOLER_OVERSHOOT 2 // (°C) Forbid temperatures closer than OVERSHOOT
-
-//===========================================================================
-//============================= PID Settings ================================
-//===========================================================================
-
-// Enable PIDTEMP for PID control or MPCTEMP for Predictive Model.
-// temperature control. Disable both for bang-bang heating.
-#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
-//#define MPCTEMP // ** EXPERIMENTAL **
-
-#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
-#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
-#define PID_K1 0.95 // Smoothing factor within any PID loop
-
-#if ENABLED(PIDTEMP)
- //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
- // Set/get with G-code: M301 E[extruder number, 0-2]
-
- #if ENABLED(PID_PARAMS_PER_HOTEND)
- // Specify up to one value per hotend here, according to your setup.
- // If there are fewer values, the last one applies to the remaining hotends.
- #define DEFAULT_Kp_LIST { 20.03, 20.03 }
- #define DEFAULT_Ki_LIST { 1.22, 1.22 }
- #define DEFAULT_Kd_LIST { 82.05, 82.05 }
- #else
- #define DEFAULT_Kp 20.03
- #define DEFAULT_Ki 1.22
- #define DEFAULT_Kd 82.05
- #endif
-#endif
-
-/**
- * Model Predictive Control for hotend
- *
- * Use a physical model of the hotend to control temperature. When configured correctly
- * this gives better responsiveness and stability than PID and it also removes the need
- * for PID_EXTRUSION_SCALING and PID_FAN_SCALING. Use M306 T to autotune the model.
- */
-#if ENABLED(MPCTEMP)
- //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1300 bytes of flash)
- //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash)
-
- #define MPC_MAX BANG_MAX // (0..255) Current to nozzle while MPC is active.
- #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers.
-
- #define MPC_INCLUDE_FAN // Model the fan speed?
-
- // Measured physical constants from M306
- #define MPC_BLOCK_HEAT_CAPACITY { 16.7f } // (J/K) Heat block heat capacities.
- #define MPC_SENSOR_RESPONSIVENESS { 0.22f } // (K/s per ∆K) Rate of change of sensor temperature from heat block.
- #define MPC_AMBIENT_XFER_COEFF { 0.068f } // (W/K) Heat transfer coefficients from heat block to room air with fan off.
- #if ENABLED(MPC_INCLUDE_FAN)
- #define MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full.
- #endif
-
- // For one fan and multiple hotends MPC needs to know how to apply the fan cooling effect.
- #if ENABLED(MPC_INCLUDE_FAN)
- //#define MPC_FAN_0_ALL_HOTENDS
- //#define MPC_FAN_0_ACTIVE_HOTEND
- #endif
-
- #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA).
- //#define FILAMENT_HEAT_CAPACITY_PERMM { 3.6e-3f } // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG).
-
- // Advanced options
- #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization.
- #define MPC_MIN_AMBIENT_CHANGE 1.0f // (K/s) Modeled ambient temperature rate of change, when correcting model inaccuracies.
- #define MPC_STEADYSTATE 0.5f // (K/s) Temperature change rate for steady state logic to be enforced.
-
- #define MPC_TUNING_POS { X_CENTER, Y_CENTER, 1.0f } // (mm) M306 Autotuning position, ideally bed center at first layer height.
- #define MPC_TUNING_END_Z 10.0f // (mm) M306 Autotuning final Z position.
-#endif
-
-//===========================================================================
-//====================== PID > Bed Temperature Control ======================
-//===========================================================================
-
-/**
- * PID Bed Heating
- *
- * If this option is enabled set PID constants below.
- * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis.
- *
- * The PID frequency will be the same as the extruder PWM.
- * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
- * which is fine for driving a square wave into a resistive load and does not significantly
- * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W
- * heater. If your configuration is significantly different than this and you don't understand
- * the issues involved, don't use bed PID until someone else verifies that your hardware works.
- */
-//#define PIDTEMPBED
-
-//#define BED_LIMIT_SWITCHING
-
-/**
- * Max Bed Power
- * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis).
- * When set to any value below 255, enables a form of PWM to the bed that acts like a divider
- * so don'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 MIN_BED_POWER 0
- //#define PID_BED_DEBUG // Sends debug data to the serial port.
-
- // 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
-
- // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
-#endif // PIDTEMPBED
-
-//===========================================================================
-//==================== PID > Chamber Temperature Control ====================
-//===========================================================================
-
-/**
- * PID Chamber Heating
- *
- * If this option is enabled set PID constants below.
- * If this option is disabled, bang-bang will be used and CHAMBER_LIMIT_SWITCHING will enable
- * hysteresis.
- *
- * The PID frequency will be the same as the extruder PWM.
- * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
- * which is fine for driving a square wave into a resistive load and does not significantly
- * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 200W
- * heater. If your configuration is significantly different than this and you don't understand
- * the issues involved, don't use chamber PID until someone else verifies that your hardware works.
- */
-//#define PIDTEMPCHAMBER
-//#define CHAMBER_LIMIT_SWITCHING
-
-/**
- * Max Chamber Power
- * Applies to all forms of chamber control (PID, bang-bang, and bang-bang with hysteresis).
- * When set to any value below 255, enables a form of PWM to the chamber heater that acts like a divider
- * so don't use it unless you are OK with PWM on your heater. (See the comment on enabling PIDTEMPCHAMBER)
- */
-#define MAX_CHAMBER_POWER 255 // limits duty cycle to chamber heater; 255=full current
-
-#if ENABLED(PIDTEMPCHAMBER)
- #define MIN_CHAMBER_POWER 0
- //#define PID_CHAMBER_DEBUG // Sends debug data to the serial port.
-
- // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element
- // and placed inside the small Creality printer enclosure tent.
- //
- #define DEFAULT_chamberKp 37.04
- #define DEFAULT_chamberKi 1.40
- #define DEFAULT_chamberKd 655.17
- // M309 P37.04 I1.04 D655.17
-
- // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles.
-#endif // PIDTEMPCHAMBER
-
-#if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER)
- //#define PID_DEBUG // Sends debug data to the serial port. Use 'M303 D' to toggle activation.
- //#define PID_OPENLOOP // 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_FUNCTIONAL_RANGE 15 // 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_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash)
- //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash)
-#endif
-
-// @section extruder
-
-/**
- * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP.
- * Add M302 to set the minimum extrusion temperature and/or turn
- * cold extrusion prevention on and off.
- *
- * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
- */
-#define PREVENT_COLD_EXTRUSION
-#define EXTRUDE_MINTEMP 170
-
-/**
- * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH.
- * Note: For Bowden Extruders make this large enough to allow load/unload.
- */
-#define PREVENT_LENGTHY_EXTRUDE
-#define EXTRUDE_MAXLENGTH 200
-
-//===========================================================================
-//======================== Thermal Runaway Protection =======================
-//===========================================================================
-
-/**
- * Thermal Protection provides additional protection to your printer from damage
- * and fire. Marlin always includes safe min and max temperature ranges which
- * protect against a broken or disconnected thermistor wire.
- *
- * The issue: If a thermistor falls out, it will report the much lower
- * temperature of the air in the room, and the 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
-#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber
-#define THERMAL_PROTECTION_COOLER // Enable thermal protection for the laser cooling
-
-//===========================================================================
-//============================= Mechanical Settings =========================
-//===========================================================================
-
-// @section machine
-
-// Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics,
-// either in the usual order or reversed
-//#define COREXY
-//#define COREXZ
-//#define COREYZ
-//#define COREYX
-//#define COREZX
-//#define COREZY
-//#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042
-//#define MARKFORGED_YX
-
-// Enable for a belt style printer with endless "Z" motion
-//#define BELTPRINTER
-
-// Enable for Polargraph Kinematics
-//#define POLARGRAPH
-#if ENABLED(POLARGRAPH)
- #define POLARGRAPH_MAX_BELT_LEN 1035.0
- #define POLAR_SEGMENTS_PER_SECOND 5
-#endif
-
-// Enable for DELTA kinematics and configure below
-//#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
-
- // After homing move down to a height where XY movement is unconstrained
- //#define DELTA_HOME_TO_SAFE_ZONE
-
- // Delta calibration menu
- // uncomment to add three points calibration menu option.
- // See http://minow.blogspot.com/index.html#4918805519571907051
- //#define DELTA_CALIBRATION_MENU
-
- // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
- //#define DELTA_AUTO_CALIBRATION
-
- // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
-
- #if ENABLED(DELTA_AUTO_CALIBRATION)
- // set the default number of probe points : n*n (1 -> 7)
- #define DELTA_CALIBRATION_DEFAULT_POINTS 4
- #endif
-
- #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU)
- // Set the steprate for papertest probing
- #define PROBE_MANUALLY_STEP 0.05 // (mm)
- #endif
-
- // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
- #define DELTA_PRINTABLE_RADIUS 140.0 // (mm)
-
- // Maximum reachable area
- #define DELTA_MAX_RADIUS 140.0 // (mm)
-
- // Center-to-center distance of the holes in the diagonal push rods.
- #define DELTA_DIAGONAL_ROD 250.0 // (mm)
-
- // Distance between bed and nozzle Z home position
- #define DELTA_HEIGHT 250.00 // (mm) Get this value from G33 auto calibrate
-
- #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate
-
- // Horizontal distance bridged by diagonal push rods when effector is centered.
- #define DELTA_RADIUS 124.0 // (mm) Get this value from G33 auto calibrate
-
- // Trim adjustments for individual towers
- // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
- // measured in degrees anticlockwise looking from above the printer
- #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate
-
- // Delta radius and diagonal rod adjustments (mm)
- //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
- //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
-#endif
-
-/**
- * MORGAN_SCARA was developed by QHARLEY in South Africa in 2012-2013.
- * Implemented and slightly reworked by JCERNY in June, 2014.
- *
- * Mostly Printed SCARA is an open source design by Tyler Williams. See:
- * https://www.thingiverse.com/thing:2487048
- * https://www.thingiverse.com/thing:1241491
- */
-//#define MORGAN_SCARA
-//#define MP_SCARA
-#if EITHER(MORGAN_SCARA, MP_SCARA)
- // If movement is choppy try lowering this value
- #define SCARA_SEGMENTS_PER_SECOND 200
-
- // Length of inner and outer support arms. Measure arm lengths precisely.
- #define SCARA_LINKAGE_1 150 // (mm)
- #define SCARA_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)
-
- #if ENABLED(MORGAN_SCARA)
-
- //#define DEBUG_SCARA_KINEMATICS
- #define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly
-
- // Radius around the center where the arm cannot reach
- #define MIDDLE_DEAD_ZONE_R 0 // (mm)
-
- #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073
- #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See http://reprap.harleystudio.co.za/?page_id=1073
-
- #elif ENABLED(MP_SCARA)
-
- #define SCARA_OFFSET_THETA1 12 // degrees
- #define SCARA_OFFSET_THETA2 131 // degrees
-
- #endif
-
-#endif
-
-// Enable for TPARA kinematics and configure below
-//#define AXEL_TPARA
-#if ENABLED(AXEL_TPARA)
- #define DEBUG_ROBOT_KINEMATICS
- #define ROBOT_SEGMENTS_PER_SECOND 200
-
- // Length of inner and outer support arms. Measure arm lengths precisely.
- #define ROBOT_LINKAGE_1 120 // (mm)
- #define ROBOT_LINKAGE_2 120 // (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 ROBOT_OFFSET_X 0 // (mm)
- #define ROBOT_OFFSET_Y 0 // (mm)
- #define ROBOT_OFFSET_Z 0 // (mm)
-
- #define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly
-
- // Radius around the center where the arm cannot reach
- #define MIDDLE_DEAD_ZONE_R 0 // (mm)
-
- // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073
- #define THETA_HOMING_OFFSET 0
- #define PSI_HOMING_OFFSET 0
-#endif
-
-//===========================================================================
-//============================== 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_IMIN_PLUG
-//#define USE_JMIN_PLUG
-//#define USE_KMIN_PLUG
-#define USE_XMAX_PLUG
-#define USE_YMAX_PLUG
-//#define USE_ZMAX_PLUG
-//#define USE_IMAX_PLUG
-//#define USE_JMAX_PLUG
-//#define USE_KMAX_PLUG
-
-// Enable pullup for all endstops to prevent a floating state
-#define ENDSTOPPULLUPS
-#if DISABLED(ENDSTOPPULLUPS)
- // Disable ENDSTOPPULLUPS to set pullups individually
- //#define ENDSTOPPULLUP_XMIN
- //#define ENDSTOPPULLUP_YMIN
- //#define ENDSTOPPULLUP_ZMIN
- //#define ENDSTOPPULLUP_IMIN
- //#define ENDSTOPPULLUP_JMIN
- //#define ENDSTOPPULLUP_KMIN
- //#define ENDSTOPPULLUP_XMAX
- //#define ENDSTOPPULLUP_YMAX
- //#define ENDSTOPPULLUP_ZMAX
- //#define ENDSTOPPULLUP_IMAX
- //#define ENDSTOPPULLUP_JMAX
- //#define ENDSTOPPULLUP_KMAX
- //#define ENDSTOPPULLUP_ZMIN_PROBE
-#endif
-
-// Enable pulldown for all endstops to prevent a floating state
-//#define ENDSTOPPULLDOWNS
-#if DISABLED(ENDSTOPPULLDOWNS)
- // Disable ENDSTOPPULLDOWNS to set pulldowns individually
- //#define ENDSTOPPULLDOWN_XMIN
- //#define ENDSTOPPULLDOWN_YMIN
- //#define ENDSTOPPULLDOWN_ZMIN
- //#define ENDSTOPPULLDOWN_IMIN
- //#define ENDSTOPPULLDOWN_JMIN
- //#define ENDSTOPPULLDOWN_KMIN
- //#define ENDSTOPPULLDOWN_XMAX
- //#define ENDSTOPPULLDOWN_YMAX
- //#define ENDSTOPPULLDOWN_ZMAX
- //#define ENDSTOPPULLDOWN_IMAX
- //#define ENDSTOPPULLDOWN_JMAX
- //#define ENDSTOPPULLDOWN_KMAX
- //#define ENDSTOPPULLDOWN_ZMIN_PROBE
-#endif
-
-// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
-#define X_MIN_ENDSTOP_INVERTING 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 I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
-#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
-#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
-
-// Enable this feature if all enabled endstop pins are interrupt-capable.
-// This will remove the need to poll the interrupt pins, saving many CPU cycles.
-//#define ENDSTOP_INTERRUPTS_FEATURE
-
-/**
- * Endstop Noise Threshold
- *
- * Enable if your probe or endstops falsely trigger due to noise.
- *
- * - Higher values may affect repeatability or accuracy of some bed probes.
- * - To fix noise install a 100nF ceramic capacitor in parallel with the switch.
- * - This feature is not required for common micro-switches mounted on PCBs
- * based on the Makerbot design, which already have the 100nF capacitor.
- *
- * :[2,3,4,5,6,7]
- */
-//#define ENDSTOP_NOISE_THRESHOLD 2
-
-// Check for stuck or disconnected endstops during homing moves.
-//#define DETECT_BROKEN_ENDSTOP
-
-//=============================================================================
-//============================== Movement Settings ============================
-//=============================================================================
-// @section motion
-
-/**
- * Default Settings
- *
- * These settings can be reset by M502
- *
- * Note that if EEPROM is enabled, saved values will override these.
- */
-
-/**
- * With this option each E stepper can have its own factors for the
- * following movement settings. If fewer factors are given than the
- * total number of extruders, the last value applies to the rest.
- */
-//#define DISTINCT_E_FACTORS
-
-/**
- * Default Axis Steps Per Unit (steps/mm)
- * Override with M92
- * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
- */
-#define DEFAULT_AXIS_STEPS_PER_UNIT { 94.139704, 94.139704, 400, 96.275201870 }
-
-/**
- * Default Max Feed Rate (mm/s)
- * Override with M203
- * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
- */
-#define DEFAULT_MAX_FEEDRATE { 250, 250, 20, 100 }
-
-//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
-#if ENABLED(LIMITED_MAX_FR_EDITING)
- #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits
-#endif
-
-/**
- * Default Max Acceleration (change/s) change = mm/s
- * (Maximum start speed for accelerated moves)
- * Override with M201
- * X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
- */
-#define DEFAULT_MAX_ACCELERATION { 1000, 1000, 100, 5000 }
-
-//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
-#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
- #define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // ...or, set your own edit limits
-#endif
-
-/**
- * Default Acceleration (change/s) change = mm/s
- * Override with M204
- *
- * M204 P Acceleration
- * M204 R Retract Acceleration
- * M204 T Travel Acceleration
- */
-#define DEFAULT_ACCELERATION 250 // X, Y, Z ... and E acceleration for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 5000 // E acceleration for retracts
-#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z ... acceleration for travel (non printing) moves
-
-/**
- * Default Jerk limits (mm/s)
- * Override with M205 X Y Z E
- *
- * "Jerk" specifies the minimum speed change that requires acceleration.
- * When changing speed and direction, if the difference is less than the
- * value set here, it may happen instantaneously.
- */
-//#define CLASSIC_JERK
-#if ENABLED(CLASSIC_JERK)
-#define DEFAULT_XJERK 20.0
-#define DEFAULT_YJERK 20.0
-#define DEFAULT_ZJERK 0.4
- //#define DEFAULT_IJERK 0.3
- //#define DEFAULT_JJERK 0.3
- //#define DEFAULT_KJERK 0.3
-
- //#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves
-
- //#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2
- #if ENABLED(LIMITED_JERK_EDITING)
- #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits
- #endif
-#endif
-
-#define DEFAULT_EJERK 2.0 // May be used by Linear Advance
-
-/**
- * Junction Deviation Factor
- *
- * See:
- * https://reprap.org/forum/read.php?1,739819
- * https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
- */
-#if DISABLED(CLASSIC_JERK)
- #define JUNCTION_DEVIATION_MM 0.64 // (mm) Distance from real junction edge
- #define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle
- // for small segments (< 1mm) with large junction angles (> 135°).
-#endif
-
-/**
- * S-Curve Acceleration
- *
- * This option eliminates vibration during printing by fitting a Bézier
- * curve to move acceleration, producing much smoother direction changes.
- *
- * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
- */
-#define S_CURVE_ACCELERATION
-
-//===========================================================================
-//============================= Z Probe Options =============================
-//===========================================================================
-// @section probes
-
-//
-// See https://marlinfw.org/docs/configuration/probes.html
-//
-
-/**
- * Enable this option for a probe connected to the Z-MIN pin.
- * The probe replaces the Z-MIN endstop and is used for Z homing.
- * (Automatically enables USE_PROBE_FOR_Z_HOMING.)
- */
-#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
-
-// Force the use of the probe for Z-axis homing
-//#define USE_PROBE_FOR_Z_HOMING
-
-/**
- * Z_MIN_PROBE_PIN
- *
- * Define this pin if the probe is not connected to Z_MIN_PIN.
- * If not defined the default pin for the selected MOTHERBOARD
- * will be used. Most of the time the default is what you want.
- *
- * - The simplest option is to use a free endstop connector.
- * - Use 5V for powered (usually inductive) sensors.
- *
- * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
- * - For simple switches connect...
- * - normally-closed switches to GND and D32.
- * - normally-open switches to 5V and D32.
- */
-//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default
-
-/**
- * Probe Type
- *
- * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
- * Activate one of these to use Auto Bed Leveling below.
- */
-
-/**
- * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
- * Use G29 repeatedly, adjusting the Z height at each point with movement commands
- * or (with LCD_BED_LEVELING) the LCD controller.
- */
-//#define PROBE_MANUALLY
-
-/**
- * A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
- * (e.g., an inductive probe or a nozzle-based probe-switch.)
- */
-//#define FIX_MOUNTED_PROBE
-
-/**
- * Use the nozzle as the probe, as with a conductive
- * nozzle system or a piezo-electric smart effector.
- */
-//#define NOZZLE_AS_PROBE
-
-/**
- * Z Servo Probe, such as an endstop switch on a rotating arm.
- */
-//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector.
-//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles
-
-/**
- * The BLTouch probe uses a Hall effect sensor and emulates a servo.
- */
-//#define BLTOUCH
-
-/**
- * MagLev V4 probe by MDD
- *
- * This probe is deployed and activated by powering a built-in electromagnet.
- */
-//#define MAGLEV4
-#if ENABLED(MAGLEV4)
- //#define MAGLEV_TRIGGER_PIN 11 // Set to the connected digital output
- #define MAGLEV_TRIGGER_DELAY 15 // Changing this risks overheating the coil
-#endif
-
-/**
- * Touch-MI Probe by hotends.fr
- *
- * This probe is deployed and activated by moving the X-axis to a magnet at the edge of the bed.
- * By default, the magnet is assumed to be on the left and activated by a home. If the magnet is
- * on the right, enable and set TOUCH_MI_DEPLOY_XPOS to the deploy position.
- *
- * Also requires: BABYSTEPPING, BABYSTEP_ZPROBE_OFFSET, Z_SAFE_HOMING,
- * and a minimum Z_HOMING_HEIGHT of 10.
- */
-//#define TOUCH_MI_PROBE
-#if ENABLED(TOUCH_MI_PROBE)
- #define TOUCH_MI_RETRACT_Z 0.5 // Height at which the probe retracts
- //#define TOUCH_MI_DEPLOY_XPOS (X_MAX_BED + 2) // For a magnet on the right side of the bed
- //#define TOUCH_MI_MANUAL_DEPLOY // For manual deploy (LCD menu)
-#endif
-
-// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
-//#define SOLENOID_PROBE
-
-// A sled-mounted probe 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.
-
-// A probe deployed by moving the x-axis, such as the Wilson II's rack-and-pinion probe designed by Marty Rice.
-//#define RACK_AND_PINION_PROBE
-#if ENABLED(RACK_AND_PINION_PROBE)
- #define Z_PROBE_DEPLOY_X X_MIN_POS
- #define Z_PROBE_RETRACT_X X_MAX_POS
-#endif
-
-// Duet Smart Effector (for delta printers) - https://bit.ly/2ul5U7J
-// When the pin is defined you can use M672 to set/reset the probe sensitivity.
-//#define DUET_SMART_EFFECTOR
-#if ENABLED(DUET_SMART_EFFECTOR)
- #define SMART_EFFECTOR_MOD_PIN -1 // Connect a GPIO pin to the Smart Effector MOD pin
-#endif
-
-/**
- * Use StallGuard2 to probe the bed with the nozzle.
- * Requires stallGuard-capable Trinamic stepper drivers.
- * CAUTION: This can damage machines with Z lead screws.
- * Take extreme care when setting up this feature.
- */
-//#define SENSORLESS_PROBING
-
-/**
- * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
- * Deploys by touching z-axis belt. Retracts by pushing the probe down.
- */
-//#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 { 30.0, DELTA_PRINTABLE_RADIUS, 100.0 }
- #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_DEPLOY_2 { 0.0, DELTA_PRINTABLE_RADIUS, 100.0 }
- #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_FEEDRATE)/10
-
- #define Z_PROBE_ALLEN_KEY_DEPLOY_3 { 0.0, (DELTA_PRINTABLE_RADIUS) * 0.75, 100.0 }
- #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_STOW_1 { -64.0, 56.0, 23.0 } // Move the probe into position
- #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_STOW_2 { -64.0, 56.0, 3.0 } // Push it down
- #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_FEEDRATE)/10
-
- #define Z_PROBE_ALLEN_KEY_STOW_3 { -64.0, 56.0, 50.0 } // Move it up to clear
- #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_FEEDRATE
-
- #define Z_PROBE_ALLEN_KEY_STOW_4 { 0.0, 0.0, 50.0 }
- #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_FEEDRATE
-
-#endif // Z_PROBE_ALLEN_KEY
-
-/**
- * Nozzle-to-Probe offsets { X, Y, Z }
- *
- * X and Y offset
- * Use a caliper or ruler to measure the distance from the tip of
- * the Nozzle to the center-point of the Probe in the X and Y axes.
- *
- * Z offset
- * - For the Z offset use your best known value and adjust at runtime.
- * - Common probes trigger below the nozzle and have negative values for Z offset.
- * - Probes triggering above the nozzle height are uncommon but do exist. When using
- * probes such as this, carefully set Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES
- * to avoid collisions during probing.
- *
- * Tune and Adjust
- * - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc.
- * - PROBE_OFFSET_WIZARD (configuration_adv.h) can be used for setting the Z offset.
- *
- * Assuming the typical work area orientation:
- * - Probe to RIGHT of the Nozzle has a Positive X offset
- * - Probe to LEFT of the Nozzle has a Negative X offset
- * - Probe in BACK of the Nozzle has a Positive Y offset
- * - Probe in FRONT of the Nozzle has a Negative Y offset
- *
- * Some examples:
- * #define NOZZLE_TO_PROBE_OFFSET { 10, 10, -1 } // Example "1"
- * #define NOZZLE_TO_PROBE_OFFSET {-10, 5, -1 } // Example "2"
- * #define NOZZLE_TO_PROBE_OFFSET { 5, -5, -1 } // Example "3"
- * #define NOZZLE_TO_PROBE_OFFSET {-15,-10, -1 } // Example "4"
- *
- * +-- BACK ---+
- * | [+] |
- * L | 1 | R <-- Example "1" (right+, back+)
- * E | 2 | I <-- Example "2" ( left-, back+)
- * F |[-] N [+]| G <-- Nozzle
- * T | 3 | H <-- Example "3" (right+, front-)
- * | 4 | T <-- Example "4" ( left-, front-)
- * | [-] |
- * O-- FRONT --+
- */
-#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
-
-// Most probes should stay away from the edges of the bed, but
-// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
-#define PROBING_MARGIN 10
-
-// X and Y axis travel speed (mm/min) between probes
-#define XY_PROBE_FEEDRATE (133*60)
-
-// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2)
-#define Z_PROBE_FEEDRATE_FAST (4*60)
-
-// Feedrate (mm/min) for the "accurate" probe of each point
-#define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2)
-
-/**
- * Probe Activation Switch
- * A switch indicating proper deployment, or an optical
- * switch triggered when the carriage is near the bed.
- */
-//#define PROBE_ACTIVATION_SWITCH
-#if ENABLED(PROBE_ACTIVATION_SWITCH)
- #define PROBE_ACTIVATION_SWITCH_STATE LOW // State indicating probe is active
- //#define PROBE_ACTIVATION_SWITCH_PIN PC6 // Override default pin
-#endif
-
-/**
- * Tare Probe (determine zero-point) prior to each probe.
- * Useful for a strain gauge or piezo sensor that needs to factor out
- * elements such as cables pulling on the carriage.
- */
-//#define PROBE_TARE
-#if ENABLED(PROBE_TARE)
- #define PROBE_TARE_TIME 200 // (ms) Time to hold tare pin
- #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before
- #define PROBE_TARE_STATE HIGH // State to write pin for tare
- //#define PROBE_TARE_PIN PA5 // Override default pin
- #if ENABLED(PROBE_ACTIVATION_SWITCH)
- //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active
- #endif
-#endif
-
-/**
- * Probe Enable / Disable
- * The probe only provides a triggered signal when enabled.
- */
-//#define PROBE_ENABLE_DISABLE
-#if ENABLED(PROBE_ENABLE_DISABLE)
- //#define PROBE_ENABLE_PIN -1 // Override the default pin here
-#endif
-
-/**
- * Multiple Probing
- *
- * You may get improved results by probing 2 or more times.
- * With EXTRA_PROBING the more atypical reading(s) will be disregarded.
- *
- * A total of 2 does fast/slow probes with a weighted average.
- * A total of 3 or more adds more slow probes, taking the average.
- */
-//#define MULTIPLE_PROBING 2
-//#define EXTRA_PROBING 1
-
-/**
- * Z probes require clearance when deploying, stowing, and moving between
- * probe points to avoid hitting the bed and other hardware.
- * Servo-mounted probes require extra space for the arm to rotate.
- * Inductive probes need space to keep from triggering early.
- *
- * Use these settings to specify the distance (mm) to raise the probe (or
- * lower the bed). The values set here apply over and above any (negative)
- * probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD.
- * Only integer values >= 1 are valid here.
- *
- * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
- * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
- */
-#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
-#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
-#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
-//#define Z_AFTER_PROBING 5 // Z position after probing is done
-
-#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping
-
-// 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
-
-// Enable the M48 repeatability test to test probe accuracy
-//#define Z_MIN_PROBE_REPEATABILITY_TEST
-
-// Before deploy/stow pause for user confirmation
-//#define PAUSE_BEFORE_DEPLOY_STOW
-#if ENABLED(PAUSE_BEFORE_DEPLOY_STOW)
- //#define PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED // For Manual Deploy Allenkey Probe
-#endif
-
-/**
- * Enable one or more of the following if probing seems unreliable.
- * Heaters and/or fans can be disabled during probing to minimize electrical
- * noise. A delay can also be added to allow noise and vibration to settle.
- * These options are most useful for the BLTouch probe, but may also improve
- * readings with inductive probes and piezo sensors.
- */
-//#define PROBING_HEATERS_OFF // Turn heaters off when probing
-#if ENABLED(PROBING_HEATERS_OFF)
- //#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy)
- //#define WAIT_FOR_HOTEND // Wait for hotend to heat back up between probes (to improve accuracy & prevent cold extrude)
-#endif
-//#define PROBING_FANS_OFF // Turn fans off when probing
-//#define PROBING_ESTEPPERS_OFF // Turn all extruder steppers off when probing
-//#define PROBING_STEPPERS_OFF // Turn all steppers off (unless needed to hold position) when probing (including extruders)
-//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
-
-// Require minimum nozzle and/or bed temperature for probing
-//#define PREHEAT_BEFORE_PROBING
-#if ENABLED(PREHEAT_BEFORE_PROBING)
- #define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
- #define PROBING_BED_TEMP 50
-#endif
-
-// 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
-//#define I_ENABLE_ON 0
-//#define J_ENABLE_ON 0
-//#define K_ENABLE_ON 0
-
-// Disable axis steppers immediately when they're not being stepped.
-// WARNING: When motors turn off there is a chance of losing position accuracy!
-#define DISABLE_X false
-#define DISABLE_Y false
-#define DISABLE_Z false
-//#define DISABLE_I false
-//#define DISABLE_J false
-//#define DISABLE_K false
-
-// Turn off the display blinking that warns about possible accuracy reduction
-//#define DISABLE_REDUCED_ACCURACY_WARNING
-
-// @section extruder
-
-#define DISABLE_E false // Disable the extruder when not stepping
-#define DISABLE_INACTIVE_EXTRUDER // Keep only the 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
-//#define INVERT_I_DIR false
-//#define INVERT_J_DIR false
-//#define INVERT_K_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
-#define INVERT_E4_DIR false
-#define INVERT_E5_DIR false
-#define INVERT_E6_DIR false
-#define INVERT_E7_DIR false
-
-// @section homing
-
-//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed. Also enable HOME_AFTER_DEACTIVATE for extra safety.
-//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated. Also enable NO_MOTION_BEFORE_HOMING for extra safety.
-
-/**
- * Set Z_IDLE_HEIGHT if the Z-Axis moves on its own when steppers are disabled.
- * - Use a low value (i.e., Z_MIN_POS) if the nozzle falls down to the bed.
- * - Use a large value (i.e., Z_MAX_POS) if the bed falls down, away from the nozzle.
- */
-#define Z_IDLE_HEIGHT Z_MAX_POS
-
-//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ...
- // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding.
-
-//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z
-
-// 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 I_HOME_DIR -1
-//#define J_HOME_DIR -1
-//#define K_HOME_DIR -1
-
-// @section machine
-
-// these values are used in your slicer
-#define X_BED_SIZE 227
-#define Y_BED_SIZE 148
-
-// Travel limits (mm) after homing, corresponding to endstop positions.
-#define X_MIN_POS -115
-#define Y_MIN_POS -84
-#define Z_MIN_POS 0
-#define X_MAX_POS 152
-#define Y_MAX_POS 77
-#define Z_MAX_POS 150
-//#define I_MIN_POS 0
-//#define I_MAX_POS 50
-//#define J_MIN_POS 0
-//#define J_MAX_POS 50
-//#define K_MIN_POS 0
-//#define K_MAX_POS 50
-
-/**
- * Software Endstops
- *
- * - Prevent moves outside the set machine bounds.
- * - Individual axes can be disabled, if desired.
- * - X and Y only apply to Cartesian robots.
- * - Use 'M211' to set software endstops on/off or report current state
- */
-
-// Min software endstops constrain movement within minimum coordinate bounds
-#define MIN_SOFTWARE_ENDSTOPS
-#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
- #define MIN_SOFTWARE_ENDSTOP_X
- #define MIN_SOFTWARE_ENDSTOP_Y
- #define MIN_SOFTWARE_ENDSTOP_Z
- #define MIN_SOFTWARE_ENDSTOP_I
- #define MIN_SOFTWARE_ENDSTOP_J
- #define MIN_SOFTWARE_ENDSTOP_K
-#endif
-
-// Max software endstops constrain movement within maximum coordinate bounds
-#define MAX_SOFTWARE_ENDSTOPS
-#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
- #define MAX_SOFTWARE_ENDSTOP_X
- #define MAX_SOFTWARE_ENDSTOP_Y
- #define MAX_SOFTWARE_ENDSTOP_Z
- #define MAX_SOFTWARE_ENDSTOP_I
- #define MAX_SOFTWARE_ENDSTOP_J
- #define MAX_SOFTWARE_ENDSTOP_K
-#endif
-
-#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
- //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD
-#endif
-
-/**
- * Filament Runout Sensors
- * Mechanical or opto endstops are used to check for the presence of filament.
- *
- * IMPORTANT: Runout will only trigger if Marlin is aware that a print job is running.
- * Marlin knows a print job is running when:
- * 1. Running a print job from media started with M24.
- * 2. The Print Job Timer has been started with M75.
- * 3. The heaters were turned on and PRINTJOB_TIMER_AUTOSTART is enabled.
- *
- * RAMPS-based boards use SERVO3_PIN for the first runout sensor.
- * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
- */
-//#define FILAMENT_RUNOUT_SENSOR
-#if ENABLED(FILAMENT_RUNOUT_SENSOR)
- #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.
- #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
-
- #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
- #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
- //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
- //#define WATCH_ALL_RUNOUT_SENSORS // Execute runout script on any triggering sensor, not only for the active extruder.
- // This is automatically enabled for MIXING_EXTRUDERs.
-
- // Override individually if the runout sensors vary
- //#define FIL_RUNOUT1_STATE LOW
- //#define FIL_RUNOUT1_PULLUP
- //#define FIL_RUNOUT1_PULLDOWN
-
- //#define FIL_RUNOUT2_STATE LOW
- //#define FIL_RUNOUT2_PULLUP
- //#define FIL_RUNOUT2_PULLDOWN
-
- //#define FIL_RUNOUT3_STATE LOW
- //#define FIL_RUNOUT3_PULLUP
- //#define FIL_RUNOUT3_PULLDOWN
-
- //#define FIL_RUNOUT4_STATE LOW
- //#define FIL_RUNOUT4_PULLUP
- //#define FIL_RUNOUT4_PULLDOWN
-
- //#define FIL_RUNOUT5_STATE LOW
- //#define FIL_RUNOUT5_PULLUP
- //#define FIL_RUNOUT5_PULLDOWN
-
- //#define FIL_RUNOUT6_STATE LOW
- //#define FIL_RUNOUT6_PULLUP
- //#define FIL_RUNOUT6_PULLDOWN
-
- //#define FIL_RUNOUT7_STATE LOW
- //#define FIL_RUNOUT7_PULLUP
- //#define FIL_RUNOUT7_PULLDOWN
-
- //#define FIL_RUNOUT8_STATE LOW
- //#define FIL_RUNOUT8_PULLUP
- //#define FIL_RUNOUT8_PULLDOWN
-
- // Commands to execute on filament runout.
- // With multiple runout sensors use the %c placeholder for the current tool in commands (e.g., "M600 T%c")
- // NOTE: After 'M412 H1' the host handles filament runout and this script does not apply.
- #define FILAMENT_RUNOUT_SCRIPT "M600"
-
- // After a runout is detected, continue printing this length of filament
- // before executing the runout script. Useful for a sensor at the end of
- // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
- //#define FILAMENT_RUNOUT_DISTANCE_MM 25
-
- #ifdef FILAMENT_RUNOUT_DISTANCE_MM
- // Enable this option to use an encoder disc that toggles the runout pin
- // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
- // large enough to avoid false positives.)
- //#define FILAMENT_MOTION_SENSOR
- #endif
-#endif
-
-//===========================================================================
-//=============================== Bed Leveling ==============================
-//===========================================================================
-// @section calibrate
-
-/**
- * Choose one of the options below to enable G29 Bed Leveling. The parameters
- * and behavior of G29 will change depending on your selection.
- *
- * If using a Probe for Z Homing, enable Z_SAFE_HOMING also!
- *
- * - AUTO_BED_LEVELING_3POINT
- * Probe 3 arbitrary points on the bed (that aren't collinear)
- * You specify the XY coordinates of all 3 points.
- * The result is a single tilted plane. Best for a flat bed.
- *
- * - AUTO_BED_LEVELING_LINEAR
- * Probe several points in a grid.
- * You specify the rectangle and the density of sample points.
- * The result is a single tilted plane. Best for a flat bed.
- *
- * - AUTO_BED_LEVELING_BILINEAR
- * Probe several points in a grid.
- * You specify the rectangle and the density of sample points.
- * The result is a mesh, best for large or uneven beds.
- *
- * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
- * A comprehensive bed leveling system combining the features and benefits
- * of other systems. UBL also includes integrated Mesh Generation, Mesh
- * Validation and Mesh Editing systems.
- *
- * - MESH_BED_LEVELING
- * Probe a grid manually
- * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.)
- * For machines without a probe, Mesh Bed Leveling provides a method to perform
- * leveling in steps so you can manually adjust the Z height at each grid-point.
- * With an LCD controller the process is guided step-by-step.
- */
-//#define AUTO_BED_LEVELING_3POINT
-//#define AUTO_BED_LEVELING_LINEAR
-//#define AUTO_BED_LEVELING_BILINEAR
-//#define AUTO_BED_LEVELING_UBL
-//#define MESH_BED_LEVELING
-
-/**
- * Normally G28 leaves leveling disabled on completion. Enable one of
- * these options to restore the prior leveling state or to always enable
- * leveling immediately after G28.
- */
-//#define RESTORE_LEVELING_AFTER_G28
-//#define ENABLE_LEVELING_AFTER_G28
-
-/**
- * Auto-leveling needs preheating
- */
-//#define PREHEAT_BEFORE_LEVELING
-#if ENABLED(PREHEAT_BEFORE_LEVELING)
- #define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
- #define LEVELING_BED_TEMP 50
-#endif
-
-/**
- * Enable detailed logging of G28, G29, M48, etc.
- * Turn on with the command 'M111 S32'.
- * NOTE: Requires a lot of PROGMEM!
- */
-//#define DEBUG_LEVELING_FEATURE
-
-#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL, PROBE_MANUALLY)
- // Set a height for the start of manual adjustment
- #define MANUAL_PROBE_START_Z 0.2 // (mm) Comment out to use the last-measured height
-#endif
-
-#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL)
- // Gradually reduce leveling correction until a set height is reached,
- // at which point movement will be level to the machine's XY plane.
- // The height can be set with M420 Z
- #define ENABLE_LEVELING_FADE_HEIGHT
- #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
- #define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height.
- #endif
-
- // For Cartesian machines, instead of dividing moves on mesh boundaries,
- // split up moves into short segments like a Delta. This follows the
- // contours of the bed more closely than edge-to-edge straight moves.
- #define SEGMENT_LEVELED_MOVES
- #define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one)
-
- /**
- * Enable the G26 Mesh Validation Pattern tool.
- */
- //#define G26_MESH_VALIDATION
- #if ENABLED(G26_MESH_VALIDATION)
- #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
- #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
- #define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26.
- #define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26.
- #define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves.
- #define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves.
- #define G26_RETRACT_MULTIPLIER 1.0 // G26 Q (retraction) used by default between mesh test elements.
- #endif
-
-#endif
-
-#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
-
- // Set the number of grid points per dimension.
- #define GRID_MAX_POINTS_X 3
- #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
-
- // Probe along the Y axis, advancing X after each column
- //#define PROBE_Y_FIRST
-
- #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
-
- // Beyond the probed grid, continue the implied tilt?
- // Default is to maintain the height of the nearest edge.
- //#define EXTRAPOLATE_BEYOND_GRID
-
- //
- // Experimental Subdivision of the grid by Catmull-Rom method.
- // Synthesizes intermediate points to produce a more detailed mesh.
- //
- //#define ABL_BILINEAR_SUBDIVISION
- #if ENABLED(ABL_BILINEAR_SUBDIVISION)
- // Number of subdivisions between probe points
- #define BILINEAR_SUBDIVISIONS 3
- #endif
-
- #endif
-
-#elif ENABLED(AUTO_BED_LEVELING_UBL)
-
- //===========================================================================
- //========================= Unified Bed Leveling ============================
- //===========================================================================
-
- //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
-
- #define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed
- #define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited.
- #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
-
- //#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points
-
- #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
- #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
-
- //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used
- // as the Z-Height correction value.
-
- //#define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh
-
-#elif ENABLED(MESH_BED_LEVELING)
-
- //===========================================================================
- //=================================== Mesh ==================================
- //===========================================================================
-
- #define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed
- #define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited.
- #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
-
- //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS
-
-#endif // BED_LEVELING
-
-/**
- * Add a bed leveling sub-menu for ABL or MBL.
- * Include a guided procedure if manual probing is enabled.
- */
-//#define LCD_BED_LEVELING
-
-#if ENABLED(LCD_BED_LEVELING)
- #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
- #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
- //#define MESH_EDIT_MENU // Add a menu to edit mesh points
-#endif
-
-// Add a menu item to move between bed corners for manual bed adjustment
-//#define LCD_BED_TRAMMING
-
-#if ENABLED(LCD_BED_TRAMMING)
- #define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets
- #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at leveling points
- #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between leveling points
- //#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner
- //#define BED_TRAMMING_USE_PROBE
- #if ENABLED(BED_TRAMMING_USE_PROBE)
- #define BED_TRAMMING_PROBE_TOLERANCE 0.1 // (mm)
- #define BED_TRAMMING_VERIFY_RAISED // After adjustment triggers the probe, re-probe to verify
- //#define BED_TRAMMING_AUDIO_FEEDBACK
- #endif
-
- /**
- * Corner Leveling Order
- *
- * Set 2 or 4 points. When 2 points are given, the 3rd is the center of the opposite edge.
- *
- * LF Left-Front RF Right-Front
- * LB Left-Back RB Right-Back
- *
- * Examples:
- *
- * Default {LF,RB,LB,RF} {LF,RF} {LB,LF}
- * LB --------- RB LB --------- RB LB --------- RB LB --------- RB
- * | 4 3 | | 3 2 | | <3> | | 1 |
- * | | | | | | | <3>|
- * | 1 2 | | 1 4 | | 1 2 | | 2 |
- * LF --------- RF LF --------- RF LF --------- RF LF --------- RF
- */
- #define BED_TRAMMING_LEVELING_ORDER { LF, RF, RB, LB }
-#endif
-
-/**
- * Commands to execute at the end of G29 probing.
- * Useful to retract or move the Z probe out of the way.
- */
-//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
-
-// @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
-//#define MANUAL_I_HOME_POS 0
-//#define MANUAL_J_HOME_POS 0
-//#define MANUAL_K_HOME_POS 0
-
-/**
- * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
- *
- * - Moves the Z probe (or nozzle) to a defined XY point before Z homing.
- * - Allows Z homing only when XY positions are known and trusted.
- * - If stepper drivers sleep, XY homing may be required again before Z homing.
- */
-//#define Z_SAFE_HOMING
-
-#if ENABLED(Z_SAFE_HOMING)
- #define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing
- #define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing
-#endif
-
-// Homing speeds (mm/min)
-#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
-
-// Validate that endstops are triggered on homing moves
-#define VALIDATE_HOMING_ENDSTOPS
-
-// @section calibrate
-
-/**
- * Bed Skew Compensation
- *
- * This feature corrects for misalignment in the XYZ axes.
- *
- * Take the following steps to get the bed skew in the XY plane:
- * 1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185)
- * 2. For XY_DIAG_AC measure the diagonal A to C
- * 3. For XY_DIAG_BD measure the diagonal B to D
- * 4. For XY_SIDE_AD measure the edge A to D
- *
- * Marlin automatically computes skew factors from these measurements.
- * Skew factors may also be computed and set manually:
- *
- * - Compute AB : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
- * - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
- *
- * If desired, follow the same procedure for XZ and YZ.
- * Use these diagrams for reference:
- *
- * Y Z Z
- * ^ B-------C ^ B-------C ^ B-------C
- * | / / | / / | / /
- * | / / | / / | / /
- * | A-------D | A-------D | A-------D
- * +-------------->X +-------------->X +-------------->Y
- * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
- */
-//#define SKEW_CORRECTION
-
-#if ENABLED(SKEW_CORRECTION)
- // Input all length measurements here:
- #define XY_DIAG_AC 282.8427124746
- #define XY_DIAG_BD 282.8427124746
- #define XY_SIDE_AD 200
-
- // Or, set the default skew factors directly here
- // to override the above measurements:
- #define XY_SKEW_FACTOR 0.0
-
- //#define SKEW_CORRECTION_FOR_Z
- #if ENABLED(SKEW_CORRECTION_FOR_Z)
- #define XZ_DIAG_AC 282.8427124746
- #define XZ_DIAG_BD 282.8427124746
- #define YZ_DIAG_AC 282.8427124746
- #define YZ_DIAG_BD 282.8427124746
- #define YZ_SIDE_AD 200
- #define XZ_SKEW_FACTOR 0.0
- #define YZ_SKEW_FACTOR 0.0
- #endif
-
- // Enable this option for M852 to set skew at runtime
- //#define SKEW_CORRECTION_GCODE
-#endif
-
-//=============================================================================
-//============================= Additional Features ===========================
-//=============================================================================
-
-// @section extras
-
-/**
- * EEPROM
- *
- * Persistent storage to preserve configurable settings across reboots.
- *
- * M500 - Store settings to EEPROM.
- * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
- * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
- */
-#define EEPROM_SETTINGS // Persistent storage with M500 and M501
-//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
-#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
-#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
-#if ENABLED(EEPROM_SETTINGS)
- #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
- //#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build.
-#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.
-#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating
-
-//
-// G20/G21 Inch mode support
-//
-//#define INCH_MODE_SUPPORT
-
-//
-// M149 Set temperature units support
-//
-//#define TEMPERATURE_UNITS_SUPPORT
-
-// @section temperature
-
-//
-// Preheat Constants - Up to 6 are supported without changes
-//
-#define PREHEAT_1_LABEL "PLA"
-#define PREHEAT_1_TEMP_HOTEND 200
-#define PREHEAT_1_TEMP_BED 50
-#define PREHEAT_1_TEMP_CHAMBER 35
-#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
-
-#define PREHEAT_2_LABEL "ABS"
-#define PREHEAT_2_TEMP_HOTEND 220
-#define PREHEAT_2_TEMP_BED 100
-#define PREHEAT_2_TEMP_CHAMBER 35
-#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
-
-/**
- * Nozzle Park
- *
- * Park the nozzle at the given XYZ position on idle or G27.
- *
- * The "P" parameter controls the action applied to the Z axis:
- *
- * P0 (Default) If Z is below park Z raise the nozzle.
- * P1 Raise the nozzle always to Z-park height.
- * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS.
- */
-#define NOZZLE_PARK_FEATURE
-
-#if ENABLED(NOZZLE_PARK_FEATURE)
- // Specify a park position as { X, Y, Z_raise }
- #define NOZZLE_PARK_POINT { (X_MAX_POS - 2), (Y_MAX_POS - 2), 20 }
- #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X
- #define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance
- #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis)
- #define NOZZLE_PARK_Z_FEEDRATE 5 // (mm/s) Z axis feedrate (not used for delta printers)
-#endif
-
-/**
- * Clean Nozzle Feature -- EXPERIMENTAL
- *
- * Adds the G12 command to perform a nozzle cleaning process.
- *
- * Parameters:
- * P Pattern
- * S Strokes / Repetitions
- * T Triangles (P1 only)
- *
- * Patterns:
- * P0 Straight line (default). This process requires a sponge type material
- * at a fixed bed location. "S" specifies strokes (i.e. back-forth motions)
- * between the start / end points.
- *
- * P1 Zig-zag pattern between (X0, Y0) and (X1, Y1), "T" specifies the
- * number of zig-zag triangles to do. "S" defines the number of strokes.
- * Zig-zags are done in whichever is the narrower dimension.
- * For example, "G12 P1 S1 T3" will execute:
- *
- * --
- * | (X0, Y1) | /\ /\ /\ | (X1, Y1)
- * | | / \ / \ / \ |
- * A | | / \ / \ / \ |
- * | | / \ / \ / \ |
- * | (X0, Y0) | / \/ \/ \ | (X1, Y0)
- * -- +--------------------------------+
- * |________|_________|_________|
- * T1 T2 T3
- *
- * P2 Circular pattern with middle at NOZZLE_CLEAN_CIRCLE_MIDDLE.
- * "R" specifies the radius. "S" specifies the stroke count.
- * Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT.
- *
- * Caveats: The ending Z should be the same as starting Z.
- * Attention: EXPERIMENTAL. G-code arguments may change.
- */
-//#define NOZZLE_CLEAN_FEATURE
-
-#if ENABLED(NOZZLE_CLEAN_FEATURE)
- // Default number of pattern repetitions
- #define NOZZLE_CLEAN_STROKES 12
-
- // Default number of triangles
- #define NOZZLE_CLEAN_TRIANGLES 3
-
- // Specify positions for each tool as { { X, Y, Z }, { X, Y, Z } }
- // Dual hotend system may use { { -20, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }, { 420, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }}
- #define NOZZLE_CLEAN_START_POINT { { 30, 30, (Z_MIN_POS + 1) } }
- #define NOZZLE_CLEAN_END_POINT { { 100, 60, (Z_MIN_POS + 1) } }
-
- // Circular pattern radius
- #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
- // Circular pattern circle fragments number
- #define NOZZLE_CLEAN_CIRCLE_FN 10
- // Middle point of circle
- #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
-
- // Move the nozzle to the initial position after cleaning
- #define NOZZLE_CLEAN_GOBACK
-
- // For a purge/clean station that's always at the gantry height (thus no Z move)
- //#define NOZZLE_CLEAN_NO_Z
-
- // For a purge/clean station mounted on the X axis
- //#define NOZZLE_CLEAN_NO_Y
-
- // Require a minimum hotend temperature for cleaning
- #define NOZZLE_CLEAN_MIN_TEMP 170
- //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe
-
- // Explicit wipe G-code script applies to a G12 with no arguments.
- //#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0"
-
-#endif
-
-/**
- * Print Job Timer
- *
- * Automatically start and stop the print job timer on M104/M109/M140/M190/M141/M191.
- * The print job timer will only be stopped if the bed/chamber target temp is
- * below BED_MINTEMP/CHAMBER_MINTEMP.
- *
- * M104 (hotend, no wait) - high temp = none, low temp = stop timer
- * M109 (hotend, wait) - high temp = start timer, low temp = stop timer
- * M140 (bed, no wait) - high temp = none, low temp = stop timer
- * M190 (bed, wait) - high temp = start timer, low temp = none
- * M141 (chamber, no wait) - high temp = none, low temp = stop timer
- * M191 (chamber, wait) - high temp = start timer, low temp = none
- *
- * For M104/M109, high temp is anything over EXTRUDE_MINTEMP / 2.
- * For M140/M190, high temp is anything over BED_MINTEMP.
- * For M141/M191, high temp is anything over CHAMBER_MINTEMP.
- *
- * The timer can also be controlled with 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
- *
- * Track statistical data such as:
- *
- * - Total print jobs
- * - Total successful print jobs
- * - Total failed print jobs
- * - Total time printing
- *
- * View the current statistics with M78.
- */
-#define PRINTCOUNTER
-#if ENABLED(PRINTCOUNTER)
- #define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print
-#endif
-
-/**
- * Password
- *
- * Set a numerical password for the printer which can be requested:
- *
- * - When the printer boots up
- * - Upon opening the 'Print from Media' Menu
- * - When SD printing is completed or aborted
- *
- * The following G-codes can be used:
- *
- * M510 - Lock Printer. Blocks all commands except M511.
- * M511 - Unlock Printer.
- * M512 - Set, Change and Remove Password.
- *
- * If you forget the password and get locked out you'll need to re-flash
- * the firmware with the feature disabled, reset EEPROM, and (optionally)
- * re-flash the firmware again with this feature enabled.
- */
-//#define PASSWORD_FEATURE
-#if ENABLED(PASSWORD_FEATURE)
- #define PASSWORD_LENGTH 4 // (#) Number of digits (1-9). 3 or 4 is recommended
- #define PASSWORD_ON_STARTUP
- #define PASSWORD_UNLOCK_GCODE // Unlock with the M511 P command. Disable to prevent brute-force attack.
- #define PASSWORD_CHANGE_GCODE // Change the password with M512 P S.
- //#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent gcodes from running
- //#define PASSWORD_AFTER_SD_PRINT_END
- //#define PASSWORD_AFTER_SD_PRINT_ABORT
- //#include "Configuration_Secure.h" // External file with PASSWORD_DEFAULT_VALUE
-#endif
-
-//=============================================================================
-//============================= LCD and SD support ============================
-//=============================================================================
-
-// @section lcd
-
-/**
- * LCD LANGUAGE
- *
- * Select the language to display on the LCD. These languages are available:
- *
- * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hr, hu, it,
- * jp_kana, ko_KR, nl, pl, pt, pt_br, ro, ru, sk, sv, tr, uk, vi, zh_CN, zh_TW
- *
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' }
- */
-#define LCD_LANGUAGE en
-
-/**
- * LCD Character Set
- *
- * Note: This option is NOT applicable to Graphical Displays.
- *
- * All character-based LCDs 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://marlinfw.org/docs/development/lcd_language.html
- *
- * :['JAPANESE', 'WESTERN', 'CYRILLIC']
- */
-#define DISPLAY_CHARSET_HD44780 JAPANESE
-
-/**
- * Info Screen Style (0:Classic, 1:Průša)
- *
- * :[0:'Classic', 1:'Průša']
- */
-#define LCD_INFO_SCREEN_STYLE 0
-
-/**
- * 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: ENABLE CRC
- *
- * Use CRC checks and retries on the SD communication.
- */
-#define SD_CHECK_AND_RETRY
-
-/**
- * LCD Menu Items
- *
- * Disable all menus and only display the Status Screen, or
- * just remove some extraneous menu items to recover space.
- */
-//#define NO_LCD_MENUS
-//#define SLIM_LCD_MENUS
-
-//
-// 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
-
-//
-// This option reverses the encoder direction for Select Screen.
-//
-// If CLOCKWISE normally moves LEFT this makes it go RIGHT.
-// If CLOCKWISE normally moves RIGHT this makes it go LEFT.
-//
-//#define REVERSE_SELECT_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
-//#define INDIVIDUAL_AXIS_HOMING_SUBMENU
-
-//
-// 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 2
-//#define LCD_FEEDBACK_FREQUENCY_HZ 5000
-
-//=============================================================================
-//======================== LCD / Controller Selection =========================
-//======================== (Character-based LCDs) =========================
-//=============================================================================
-
-//
-// RepRapDiscount Smart Controller.
-// https://reprap.org/wiki/RepRapDiscount_Smart_Controller
-//
-// Note: Usually sold with a white PCB.
-//
-//#define REPRAP_DISCOUNT_SMART_CONTROLLER
-
-//
-// GT2560 (YHCB2004) LCD Display
-//
-// Requires Testato, Koepel softwarewire library and
-// Andriy Golovnya's LiquidCrystal_AIP31068 library.
-//
-//#define YHCB2004
-
-//
-// Original RADDS LCD Display+Encoder+SDCardReader
-// http://doku.radds.org/dokumentation/lcd-display/
-//
-//#define RADDS_DISPLAY
-
-//
-// ULTIMAKER Controller.
-//
-//#define ULTIMAKERCONTROLLER
-
-//
-// ULTIPANEL as seen on Thingiverse.
-//
-//#define ULTIPANEL
-
-//
-// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
-// https://reprap.org/wiki/PanelOne
-//
-//#define PANEL_ONE
-
-//
-// GADGETS3D G3D LCD/SD Controller
-// https://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
-//
-// Note: Usually sold with a blue PCB.
-//
-//#define G3D_PANEL
-
-//
-// RigidBot Panel V1.0
-// http://www.inventapart.com/
-//
-//#define RIGIDBOT_PANEL
-
-//
-// Makeboard 3D Printer Parts 3D Printer Mini Display 1602 Mini Controller
-// https://www.aliexpress.com/item/32765887917.html
-//
-//#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
-
-//
-// ANET and Tronxy 20x4 Controller
-//
-//#define ZONESTAR_LCD // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
- // This LCD is known to be susceptible to electrical interference
- // which scrambles the display. Pressing any button clears it up.
- // This is a LCD2004 display with 5 analog buttons.
-
-//
-// Generic 16x2, 16x4, 20x2, or 20x4 character-based LCD.
-//
-//#define ULTRA_LCD
-
-//=============================================================================
-//======================== LCD / Controller Selection =========================
-//===================== (I2C and Shift-Register LCDs) =====================
-//=============================================================================
-
-//
-// 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 (YwRobot) LCD Displays
-//
-// These require F.Malpartida's LiquidCrystal_I2C library
-// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
-//
-//#define LCD_SAINSMART_I2C_1602
-//#define LCD_SAINSMART_I2C_2004
-
-//
-// 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
-
-//
-// CONTROLLER TYPE: Shift register panels
-//
-
-//
-// 2-wire Non-latching LCD SR from https://goo.gl/aJJ4sH
-// LCD configuration: https://reprap.org/wiki/SAV_3D_LCD
-//
-//#define SAV_3DLCD
-
-//
-// 3-wire SR LCD with strobe using 74HC4094
-// https://github.com/mikeshub/SailfishLCD
-// Uses the code directly from Sailfish
-//
-//#define FF_INTERFACEBOARD
-
-//
-// TFT GLCD Panel with Marlin UI
-// Panel connected to main board by SPI or I2C interface.
-// See https://github.com/Serhiy-K/TFTGLCDAdapter
-//
-//#define TFTGLCD_PANEL_SPI
-//#define TFTGLCD_PANEL_I2C
-
-//=============================================================================
-//======================= LCD / Controller Selection =======================
-//========================= (Graphical LCDs) ========================
-//=============================================================================
-
-//
-// CONTROLLER TYPE: Graphical 128x64 (DOGM)
-//
-// IMPORTANT: The U8glib library is required for Graphical Display!
-// https://github.com/olikraus/U8glib_Arduino
-//
-// NOTE: If the LCD is unresponsive you may need to reverse the plugs.
-//
-
-//
-// RepRapDiscount FULL GRAPHIC Smart Controller
-// https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
-//
-//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
-
-//
-// K.3D Full Graphic Smart Controller
-//
-//#define K3D_FULL_GRAPHIC_SMART_CONTROLLER
-
-//
-// 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
-// https://www.panucatt.com
-//
-//#define VIKI2
-//#define miniVIKI
-
-//
-// Alfawise Ex8 printer LCD marked as WYH L12864 COG
-//
-//#define WYH_L12864
-
-//
-// MakerLab Mini Panel with graphic
-// controller and SD support - https://reprap.org/wiki/Mini_panel
-//
-//#define MINIPANEL
-
-//
-// MaKr3d Makr-Panel with graphic controller and SD support.
-// https://reprap.org/wiki/MaKr3d_MaKrPanel
-//
-//#define MAKRPANEL
-
-//
-// Adafruit ST7565 Full Graphic Controller.
-// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/
-//
-//#define ELB_FULL_GRAPHIC_CONTROLLER
-
-//
-// BQ LCD Smart Controller shipped by
-// default with the BQ Hephestos 2 and Witbox 2.
-//
-//#define BQ_LCD_SMART_CONTROLLER
-
-//
-// Cartesio UI
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
-//
-//#define CARTESIO_UI
-
-//
-// LCD for Melzi Card with Graphical LCD
-//
-//#define LCD_FOR_MELZI
-
-//
-// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
-// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
-//
-//#define ULTI_CONTROLLER
-
-//
-// MKS MINI12864 with graphic controller and SD support
-// https://reprap.org/wiki/MKS_MINI_12864
-//
-//#define MKS_MINI_12864
-
-//
-// MKS MINI12864 V3 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight.
-//
-#define MKS_MINI_12864_V3
-
-//
-// MKS LCD12864A/B with graphic controller and SD support. Follows MKS_MINI_12864 pinout.
-// https://www.aliexpress.com/item/33018110072.html
-//
-//#define MKS_LCD12864A
-//#define MKS_LCD12864B
-
-//
-// FYSETC variant of the MINI12864 graphic controller with SD support
-// https://wiki.fysetc.com/Mini12864_Panel/
-//
-//#define FYSETC_MINI_12864_X_X // Type C/D/E/F. No tunable RGB Backlight by default
-//#define FYSETC_MINI_12864_1_2 // Type C/D/E/F. Simple RGB Backlight (always on)
-//#define FYSETC_MINI_12864_2_0 // Type A/B. Discreet RGB Backlight
-//#define FYSETC_MINI_12864_2_1 // Type A/B. NeoPixel RGB Backlight
-//#define FYSETC_GENERIC_12864_1_1 // Larger display with basic ON/OFF backlight.
-
-//
-// BigTreeTech Mini 12864 V1.0 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight.
-//
-//#define BTT_MINI_12864_V1
-
-//
-// Factory display for Creality CR-10
-// https://www.aliexpress.com/item/32833148327.html
-//
-// This is RAMPS-compatible using a single 10-pin connector.
-// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
-//
-//#define CR10_STOCKDISPLAY
-
-//
-// Ender-2 OEM display, a variant of the MKS_MINI_12864
-//
-//#define ENDER2_STOCKDISPLAY
-
-//
-// ANET and Tronxy Graphical Controller
-//
-// Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
-// A clone of the RepRapDiscount full graphics display but with
-// different pins/wiring (see pins_ANET_10.h). Enable one of these.
-//
-//#define ANET_FULL_GRAPHICS_LCD
-//#define ANET_FULL_GRAPHICS_LCD_ALT_WIRING
-
-//
-// AZSMZ 12864 LCD with SD
-// https://www.aliexpress.com/item/32837222770.html
-//
-//#define AZSMZ_12864
-
-//
-// Silvergate GLCD controller
-// https://github.com/android444/Silvergate
-//
-//#define SILVER_GATE_GLCD_CONTROLLER
-
-//=============================================================================
-//============================== OLED Displays ==============================
-//=============================================================================
-
-//
-// 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
-
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
-//
-// MKS OLED 1.3" 128×64 Full Graphics Controller
-// https://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
-//
-// Zonestar OLED 128×64 Full Graphics Controller
-//
-//#define ZONESTAR_12864LCD // Graphical (DOGM) with ST7920 controller
-//#define ZONESTAR_12864OLED // 1.3" OLED with SH1106 controller (default)
-//#define ZONESTAR_12864OLED_SSD1306 // 0.96" OLED with SSD1306 controller
-
-//
-// Einstart S OLED SSD1306
-//
-//#define U8GLIB_SH1106_EINSTART
-
-//
-// Overlord OLED display/controller with i2c buzzer and LEDs
-//
-//#define OVERLORD_OLED
-
-//
-// FYSETC OLED 2.42" 128×64 Full Graphics Controller with WS2812 RGB
-// Where to find : https://www.aliexpress.com/item/4000345255731.html
-//#define FYSETC_242_OLED_12864 // Uses the SSD1309 controller
-
-//
-// K.3D SSD1309 OLED 2.42" 128×64 Full Graphics Controller
-//
-//#define K3D_242_OLED_CONTROLLER // Software SPI
-
-//=============================================================================
-//========================== Extensible UI Displays ===========================
-//=============================================================================
-
-/**
- * DGUS Touch Display with DWIN OS. (Choose one.)
- * ORIGIN : https://www.aliexpress.com/item/32993409517.html
- * FYSETC : https://www.aliexpress.com/item/32961471929.html
- * MKS : https://www.aliexpress.com/item/1005002008179262.html
- *
- * Flash display with DGUS Displays for Marlin:
- * - Format the SD card to FAT32 with an allocation size of 4kb.
- * - Download files as specified for your type of display.
- * - Plug the microSD card into the back of the display.
- * - Boot the display and wait for the update to complete.
- *
- * ORIGIN (Marlin DWIN_SET)
- * - Download https://github.com/coldtobi/Marlin_DGUS_Resources
- * - Copy the downloaded DWIN_SET folder to the SD card.
- *
- * FYSETC (Supplier default)
- * - Download https://github.com/FYSETC/FYSTLCD-2.0
- * - Copy the downloaded SCREEN folder to the SD card.
- *
- * HIPRECY (Supplier default)
- * - Download https://github.com/HiPrecy/Touch-Lcd-LEO
- * - Copy the downloaded DWIN_SET folder to the SD card.
- *
- * MKS (MKS-H43) (Supplier default)
- * - Download https://github.com/makerbase-mks/MKS-H43
- * - Copy the downloaded DWIN_SET folder to the SD card.
- *
- * RELOADED (T5UID1)
- * - Download https://github.com/Desuuuu/DGUS-reloaded/releases
- * - Copy the downloaded DWIN_SET folder to the SD card.
- */
-//#define DGUS_LCD_UI_ORIGIN
-//#define DGUS_LCD_UI_FYSETC
-//#define DGUS_LCD_UI_HIPRECY
-//#define DGUS_LCD_UI_MKS
-//#define DGUS_LCD_UI_RELOADED
-#if ENABLED(DGUS_LCD_UI_MKS)
- #define USE_MKS_GREEN_UI
-#endif
-
-//
-// Touch-screen LCD for Malyan M200/M300 printers
-//
-//#define MALYAN_LCD
-
-//
-// Touch UI for FTDI EVE (FT800/FT810) displays
-// See Configuration_adv.h for all configuration options.
-//
-//#define TOUCH_UI_FTDI_EVE
-
-//
-// Touch-screen LCD for Anycubic printers
-//
-//#define ANYCUBIC_LCD_I3MEGA
-//#define ANYCUBIC_LCD_CHIRON
-#if EITHER(ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON)
- //#define ANYCUBIC_LCD_DEBUG
-#endif
-
-//
-// 320x240 Nextion 2.8" serial TFT Resistive Touch Screen NX3224T028
-//
-//#define NEXTION_TFT
-
-//
-// Third-party or vendor-customized controller interfaces.
-// Sources should be installed in 'src/lcd/extui'.
-//
-//#define EXTENSIBLE_UI
-
-#if ENABLED(EXTENSIBLE_UI)
- //#define EXTUI_LOCAL_BEEPER // Enables use of local Beeper pin with external display
-#endif
-
-//=============================================================================
-//=============================== Graphical TFTs ==============================
-//=============================================================================
-
-/**
- * Specific TFT Model Presets. Enable one of the following options
- * or enable TFT_GENERIC and set sub-options.
- */
-
-//
-// 480x320, 3.5", SPI Display with Rotary Encoder from MKS
-// Usually paired with MKS Robin Nano V2 & V3
-//
-//#define MKS_TS35_V2_0
-
-//
-// 320x240, 2.4", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT24
-
-//
-// 320x240, 2.8", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT28
-
-//
-// 320x240, 3.2", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT32
-
-//
-// 480x320, 3.5", FSMC Display From MKS
-// Usually paired with MKS Robin Nano V1.2
-//
-//#define MKS_ROBIN_TFT35
-
-//
-// 480x272, 4.3", FSMC Display From MKS
-//
-//#define MKS_ROBIN_TFT43
-
-//
-// 320x240, 3.2", FSMC Display From MKS
-// Usually paired with MKS Robin
-//
-//#define MKS_ROBIN_TFT_V1_1R
-
-//
-// 480x320, 3.5", FSMC Stock Display from TronxXY
-//
-//#define TFT_TRONXY_X5SA
-
-//
-// 480x320, 3.5", FSMC Stock Display from AnyCubic
-//
-//#define ANYCUBIC_TFT35
-
-//
-// 320x240, 2.8", FSMC Stock Display from Longer/Alfawise
-//
-//#define LONGER_LK_TFT28
-
-//
-// 320x240, 2.8", FSMC Stock Display from ET4
-//
-//#define ANET_ET4_TFT28
-
-//
-// 480x320, 3.5", FSMC Stock Display from ET5
-//
-//#define ANET_ET5_TFT35
-
-//
-// 1024x600, 7", RGB Stock Display with Rotary Encoder from BIQU-BX
-//
-//#define BIQU_BX_TFT70
-
-//
-// 480x320, 3.5", SPI Stock Display with Rotary Encoder from BIQU B1 SE Series
-//
-//#define BTT_TFT35_SPI_V1_0
-
-//
-// Generic TFT with detailed options
-//
-//#define TFT_GENERIC
-#if ENABLED(TFT_GENERIC)
- // :[ 'AUTO', 'ST7735', 'ST7789', 'ST7796', 'R61505', 'ILI9328', 'ILI9341', 'ILI9488' ]
- #define TFT_DRIVER AUTO
-
- // Interface. Enable one of the following options:
- //#define TFT_INTERFACE_FSMC
- //#define TFT_INTERFACE_SPI
-
- // TFT Resolution. Enable one of the following options:
- //#define TFT_RES_320x240
- //#define TFT_RES_480x272
- //#define TFT_RES_480x320
- //#define TFT_RES_1024x600
-#endif
-
-/**
- * TFT UI - User Interface Selection. Enable one of the following options:
- *
- * TFT_CLASSIC_UI - Emulated DOGM - 128x64 Upscaled
- * TFT_COLOR_UI - Marlin Default Menus, Touch Friendly, using full TFT capabilities
- * TFT_LVGL_UI - A Modern UI using LVGL
- *
- * For LVGL_UI also copy the 'assets' folder from the build directory to the
- * root of your SD card, together with the compiled firmware.
- */
-//#define TFT_CLASSIC_UI
-//#define TFT_COLOR_UI
-//#define TFT_LVGL_UI
-
-#if ENABLED(TFT_LVGL_UI)
- //#define MKS_WIFI_MODULE // MKS WiFi module
-#endif
-
-/**
- * TFT Rotation. Set to one of the following values:
- *
- * TFT_ROTATE_90, TFT_ROTATE_90_MIRROR_X, TFT_ROTATE_90_MIRROR_Y,
- * TFT_ROTATE_180, TFT_ROTATE_180_MIRROR_X, TFT_ROTATE_180_MIRROR_Y,
- * TFT_ROTATE_270, TFT_ROTATE_270_MIRROR_X, TFT_ROTATE_270_MIRROR_Y,
- * TFT_MIRROR_X, TFT_MIRROR_Y, TFT_NO_ROTATION
- */
-//#define TFT_ROTATION TFT_NO_ROTATION
-
-//=============================================================================
-//============================ Other Controllers ============================
-//=============================================================================
-
-//
-// Ender-3 v2 OEM display. A DWIN display with Rotary Encoder.
-//
-//#define DWIN_CREALITY_LCD // Creality UI
-//#define DWIN_LCD_PROUI // Pro UI by MRiscoC
-//#define DWIN_CREALITY_LCD_JYERSUI // Jyers UI by Jacob Myers
-//#define DWIN_MARLINUI_PORTRAIT // MarlinUI (portrait orientation)
-//#define DWIN_MARLINUI_LANDSCAPE // MarlinUI (landscape orientation)
-
-//
-// Touch Screen Settings
-//
-//#define TOUCH_SCREEN
-#if ENABLED(TOUCH_SCREEN)
- #define BUTTON_DELAY_EDIT 50 // (ms) Button repeat delay for edit screens
- #define BUTTON_DELAY_MENU 250 // (ms) Button repeat delay for menus
-
- //#define TOUCH_IDLE_SLEEP 300 // (s) Turn off the TFT backlight if set (5mn)
-
- #define TOUCH_SCREEN_CALIBRATION
-
- //#define TOUCH_CALIBRATION_X 12316
- //#define TOUCH_CALIBRATION_Y -8981
- //#define TOUCH_OFFSET_X -43
- //#define TOUCH_OFFSET_Y 257
- //#define TOUCH_ORIENTATION TOUCH_LANDSCAPE
-
- #if BOTH(TOUCH_SCREEN_CALIBRATION, EEPROM_SETTINGS)
- #define TOUCH_CALIBRATION_AUTO_SAVE // Auto save successful calibration values to EEPROM
- #endif
-
- #if ENABLED(TFT_COLOR_UI)
- //#define SINGLE_TOUCH_NAVIGATION
- #endif
-#endif
-
-//
-// RepRapWorld REPRAPWORLD_KEYPAD v1.1
-// https://reprapworld.com/products/electronics/ramps/keypad_v1_0_fully_assembled/
-//
-//#define REPRAPWORLD_KEYPAD
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // (mm) Distance to move per key-press
-
-//
-// EasyThreeD ET-4000+ with button input and status LED
-//
-//#define EASYTHREED_UI
-
-//=============================================================================
-//=============================== Extra Features ==============================
-//=============================================================================
-
-// @section extras
-
-// Set number of user-controlled fans. Disable to use all board-defined fans.
-// :[1,2,3,4,5,6,7,8]
-//#define NUM_M106_FANS 1
-
-// 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.
-// :[0,1,2,3,4,5,6,7]
-#define SOFT_PWM_SCALE 0
-
-// If SOFT_PWM_SCALE is set to a value higher than 0, dithering can
-// be used to mitigate the associated resolution loss. If enabled,
-// some of the PWM cycles are stretched so on average the desired
-// duty cycle is attained.
-//#define SOFT_PWM_DITHER
-
-// Temperature status LEDs that display the hotend and bed temperature.
-// If all hotends, bed temperature, and target temperature are under 54C
-// then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis)
-//#define TEMP_STAT_LEDS
-
-// Support for the BariCUDA Paste Extruder
-//#define BARICUDA
-
-// Support for BlinkM/CyzRgb
-//#define BLINKM
-
-// Support for PCA9632 PWM LED driver
-//#define PCA9632
-
-// Support for PCA9533 PWM LED driver
-#define PCA9533
-
-/**
- * RGB LED / LED Strip Control
- *
- * Enable support for an RGB LED connected to 5V digital pins, or
- * an RGB Strip connected to MOSFETs controlled by digital pins.
- *
- * Adds the M150 command to set the LED (or LED strip) color.
- * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of
- * luminance values can be set from 0 to 255.
- * For NeoPixel LED an overall brightness parameter is also available.
- *
- * *** CAUTION ***
- * LED Strips require a MOSFET Chip between PWM lines and LEDs,
- * as the Arduino cannot handle the current the LEDs will require.
- * Failure to follow this precaution can destroy your Arduino!
- * NOTE: A separate 5V power supply is required! The NeoPixel LED needs
- * more current than the Arduino 5V linear regulator can produce.
- * *** CAUTION ***
- *
- * LED Type. Enable only one of the following two options.
- */
-//#define RGB_LED
-//#define RGBW_LED
-
-#if EITHER(RGB_LED, RGBW_LED)
- //#define RGB_LED_R_PIN 34
- //#define RGB_LED_G_PIN 43
- //#define RGB_LED_B_PIN 35
- //#define RGB_LED_W_PIN -1
-#endif
-
-// Support for Adafruit NeoPixel LED driver
-//#define NEOPIXEL_LED
-#if ENABLED(NEOPIXEL_LED)
- #define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc.
- // See https://github.com/adafruit/Adafruit_NeoPixel/blob/master/Adafruit_NeoPixel.h
- //#define NEOPIXEL_PIN 4 // LED driving pin
- //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
- //#define NEOPIXEL2_PIN 5
- #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.)
- #define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
- #define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
- //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
-
- // Support for second Adafruit NeoPixel LED driver controlled with M150 S1 ...
- //#define NEOPIXEL2_SEPARATE
- #if ENABLED(NEOPIXEL2_SEPARATE)
- #define NEOPIXEL2_PIXELS 15 // Number of LEDs in the second strip
- #define NEOPIXEL2_BRIGHTNESS 127 // Initial brightness (0-255)
- #define NEOPIXEL2_STARTUP_TEST // Cycle through colors at startup
- #else
- //#define NEOPIXEL2_INSERIES // Default behavior is NeoPixel 2 in parallel
- #endif
-
- // Use some of the NeoPixel LEDs for static (background) lighting
- //#define NEOPIXEL_BKGD_INDEX_FIRST 0 // Index of the first background LED
- //#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last background LED
- //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
- //#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
-#endif
-
-/**
- * Printer Event LEDs
- *
- * During printing, the LEDs will reflect the printer status:
- *
- * - Gradually change from blue to violet as the heated bed gets to target temp
- * - Gradually change from violet to red as the hotend gets to temperature
- * - Change to white to illuminate work surface
- * - Change to green once print has finished
- * - Turn off after the print has finished and the user has pushed a button
- */
-#if ANY(BLINKM, RGB_LED, RGBW_LED, PCA9632, PCA9533, NEOPIXEL_LED)
- #define PRINTER_EVENT_LEDS
-#endif
-
-/**
- * Number of servos
- *
- * For some servo-related options NUM_SERVOS will be set automatically.
- * Set this manually if there are extra servos needing manual control.
- * Set to 0 to turn off servo support.
- */
-//#define NUM_SERVOS 3 // Note: Servo index starts with 0 for M280-M282 commands
-
-// (ms) Delay 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 }
-
-// Only power servos during movement, otherwise leave off to prevent jitter
-//#define DEACTIVATE_SERVOS_AFTER_MOVE
-
-// Edit servo angles with M281 and save to EEPROM with M500
-//#define EDITABLE_SERVO_ANGLES
-
-// Disable servo with M282 to reduce power consumption, noise, and heat when not in use
-//#define SERVO_DETACH_GCODE
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
deleted file mode 100644
index fde19f5..0000000
--- a/Marlin/Configuration_adv.h
+++ /dev/null
@@ -1,4354 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#define CONFIG_EXAMPLES_DIR "FlashForge/CreatorPro"
-
-/**
- * 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
- */
-#define CONFIGURATION_ADV_H_VERSION 02000905
-
-//===========================================================================
-//============================= Thermal Settings ============================
-//===========================================================================
-// @section temperature
-
-/**
- * Thermocouple sensors are quite sensitive to noise. Any noise induced in
- * the sensor wires, such as by stepper motor wires run in parallel to them,
- * may result in the thermocouple sensor reporting spurious errors. This
- * value is the number of errors which can occur in a row before the error
- * is reported. This allows us to ignore intermittent error conditions while
- * still detecting an actual failure, which should result in a continuous
- * stream of errors from the sensor.
- *
- * Set this value to 0 to fail on the first error to occur.
- */
-#define THERMOCOUPLE_MAX_ERRORS 15
-
-//
-// Custom Thermistor 1000 parameters
-//
-#if TEMP_SENSOR_0 == 1000
- #define HOTEND0_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND0_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND0_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_1 == 1000
- #define HOTEND1_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND1_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND1_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_2 == 1000
- #define HOTEND2_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND2_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND2_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_3 == 1000
- #define HOTEND3_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND3_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND3_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_4 == 1000
- #define HOTEND4_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND4_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND4_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_5 == 1000
- #define HOTEND5_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND5_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND5_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_6 == 1000
- #define HOTEND6_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND6_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND6_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_7 == 1000
- #define HOTEND7_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define HOTEND7_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define HOTEND7_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_BED == 1000
- #define BED_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define BED_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define BED_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_CHAMBER == 1000
- #define CHAMBER_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define CHAMBER_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define CHAMBER_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_COOLER == 1000
- #define COOLER_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define COOLER_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define COOLER_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_PROBE == 1000
- #define PROBE_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define PROBE_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define PROBE_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_BOARD == 1000
- #define BOARD_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define BOARD_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define BOARD_BETA 3950 // Beta value
-#endif
-
-#if TEMP_SENSOR_REDUNDANT == 1000
- #define REDUNDANT_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
- #define REDUNDANT_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
- #define REDUNDANT_BETA 3950 // Beta value
-#endif
-
-/**
- * Thermocouple Options — for MAX6675 (-2), MAX31855 (-3), and MAX31865 (-5).
- */
-//#define TEMP_SENSOR_FORCE_HW_SPI // Ignore SCK/MOSI/MISO pins; use CS and the default SPI bus.
-//#define MAX31865_SENSOR_WIRES_0 2 // (2-4) Number of wires for the probe connected to a MAX31865 board.
-//#define MAX31865_SENSOR_WIRES_1 2
-
-//#define MAX31865_50HZ_FILTER // Use a 50Hz filter instead of the default 60Hz.
-//#define MAX31865_USE_READ_ERROR_DETECTION // Treat value spikes (20°C delta in under 1s) as read errors.
-
-//#define MAX31865_USE_AUTO_MODE // Read faster and more often than 1-shot; bias voltage always on; slight effect on RTD temperature.
-//#define MAX31865_MIN_SAMPLING_TIME_MSEC 100 // (ms) 1-shot: minimum read interval. Reduces bias voltage effects by leaving sensor unpowered for longer intervals.
-//#define MAX31865_IGNORE_INITIAL_FAULTY_READS 10 // Ignore some read faults (keeping the temperature reading) to work around a possible issue (#23439).
-
-//#define MAX31865_WIRE_OHMS_0 0.95f // For 2-wire, set the wire resistances for more accurate readings.
-//#define MAX31865_WIRE_OHMS_1 0.0f
-
-/**
- * Hephestos 2 24V heated bed upgrade kit.
- * https://store.bq.com/en/heated-bed-kit-hephestos2
- */
-//#define HEPHESTOS2_HEATED_BED_KIT
-#if ENABLED(HEPHESTOS2_HEATED_BED_KIT)
- #undef TEMP_SENSOR_BED
- #define TEMP_SENSOR_BED 70
- #define HEATER_BED_INVERTING true
-#endif
-
-//
-// Heated Bed Bang-Bang options
-//
-#if DISABLED(PIDTEMPBED)
- #define BED_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control
- #if ENABLED(BED_LIMIT_SWITCHING)
- #define BED_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > BED_HYSTERESIS
- #endif
-#endif
-
-//
-// Heated Chamber options
-//
-#if DISABLED(PIDTEMPCHAMBER)
- #define CHAMBER_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control
- #if ENABLED(CHAMBER_LIMIT_SWITCHING)
- #define CHAMBER_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > CHAMBER_HYSTERESIS
- #endif
-#endif
-
-#if TEMP_SENSOR_CHAMBER
- //#define HEATER_CHAMBER_PIN P2_04 // Required heater on/off pin (example: SKR 1.4 Turbo HE1 plug)
- //#define HEATER_CHAMBER_INVERTING false
- //#define FAN1_PIN -1 // Remove the fan signal on pin P2_04 (example: SKR 1.4 Turbo HE1 plug)
-
- //#define CHAMBER_FAN // Enable a fan on the chamber
- #if ENABLED(CHAMBER_FAN)
- //#define CHAMBER_FAN_INDEX 2 // Index of a fan to repurpose as the chamber fan. (Default: first unused fan)
- #define CHAMBER_FAN_MODE 2 // Fan control mode: 0=Static; 1=Linear increase when temp is higher than target; 2=V-shaped curve; 3=similar to 1 but fan is always on.
- #if CHAMBER_FAN_MODE == 0
- #define CHAMBER_FAN_BASE 255 // Chamber fan PWM (0-255)
- #elif CHAMBER_FAN_MODE == 1
- #define CHAMBER_FAN_BASE 128 // Base chamber fan PWM (0-255); turns on when chamber temperature is above the target
- #define CHAMBER_FAN_FACTOR 25 // PWM increase per °C above target
- #elif CHAMBER_FAN_MODE == 2
- #define CHAMBER_FAN_BASE 128 // Minimum chamber fan PWM (0-255)
- #define CHAMBER_FAN_FACTOR 25 // PWM increase per °C difference from target
- #elif CHAMBER_FAN_MODE == 3
- #define CHAMBER_FAN_BASE 128 // Base chamber fan PWM (0-255)
- #define CHAMBER_FAN_FACTOR 25 // PWM increase per °C above target
- #endif
- #endif
-
- //#define CHAMBER_VENT // Enable a servo-controlled vent on the chamber
- #if ENABLED(CHAMBER_VENT)
- #define CHAMBER_VENT_SERVO_NR 1 // Index of the vent servo
- #define HIGH_EXCESS_HEAT_LIMIT 5 // How much above target temp to consider there is excess heat in the chamber
- #define LOW_EXCESS_HEAT_LIMIT 3
- #define MIN_COOLING_SLOPE_TIME_CHAMBER_VENT 20
- #define MIN_COOLING_SLOPE_DEG_CHAMBER_VENT 1.5
- #endif
-#endif
-
-//
-// Laser Cooler options
-//
-#if TEMP_SENSOR_COOLER
- #define COOLER_MINTEMP 8 // (°C)
- #define COOLER_MAXTEMP 26 // (°C)
- #define COOLER_DEFAULT_TEMP 16 // (°C)
- #define TEMP_COOLER_HYSTERESIS 1 // (°C) Temperature proximity considered "close enough" to the target
- #define COOLER_PIN 8 // Laser cooler on/off pin used to control power to the cooling element (e.g., TEC, External chiller via relay)
- #define COOLER_INVERTING false
- #define TEMP_COOLER_PIN 15 // Laser/Cooler temperature sensor pin. ADC is required.
- #define COOLER_FAN // Enable a fan on the cooler, Fan# 0,1,2,3 etc.
- #define COOLER_FAN_INDEX 0 // FAN number 0, 1, 2 etc. e.g.
- #if ENABLED(COOLER_FAN)
- #define COOLER_FAN_BASE 100 // Base Cooler fan PWM (0-255); turns on when Cooler temperature is above the target
- #define COOLER_FAN_FACTOR 25 // PWM increase per °C above target
- #endif
-#endif
-
-//
-// Motherboard Sensor options
-//
-#if TEMP_SENSOR_BOARD
- #define THERMAL_PROTECTION_BOARD // Halt the printer if the board sensor leaves the temp range below.
- #define BOARD_MINTEMP 8 // (°C)
- #define BOARD_MAXTEMP 70 // (°C)
- #ifndef TEMP_BOARD_PIN
- //#define TEMP_BOARD_PIN -1 // Board temp sensor pin, if not set in pins file.
- #endif
-#endif
-
-/**
- * Thermal Protection provides additional protection to your printer from damage
- * and fire. Marlin always includes safe min and max temperature ranges which
- * protect against a broken or disconnected thermistor wire.
- *
- * The issue: If a thermistor falls out, it will report the much lower
- * temperature of the air in the room, and the 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
-
- //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
- #if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
- //#define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303
- #endif
-
- /**
- * Whenever an M104, M109, or M303 increases the target temperature, the
- * firmware will wait for the WATCH_TEMP_PERIOD to expire. If the temperature
- * hasn't increased by WATCH_TEMP_INCREASE degrees, the machine is halted and
- * requires a hard reset. This test restarts with any M104/M109/M303, 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 set
- * below 2.
- */
- #define WATCH_TEMP_PERIOD 30 // 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
-
- /**
- * As described above, except for the bed (M140/M190/M303).
- */
- #define WATCH_BED_TEMP_PERIOD 60 // Seconds
- #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
-#endif
-
-/**
- * Thermal Protection parameters for the heated chamber.
- */
-#if ENABLED(THERMAL_PROTECTION_CHAMBER)
- #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // Seconds
- #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // Degrees Celsius
-
- /**
- * Heated chamber watch settings (M141/M191).
- */
- #define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds
- #define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius
-#endif
-
-/**
- * Thermal Protection parameters for the laser cooler.
- */
-#if ENABLED(THERMAL_PROTECTION_COOLER)
- #define THERMAL_PROTECTION_COOLER_PERIOD 10 // Seconds
- #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // Degrees Celsius
-
- /**
- * Laser cooling watch settings (M143/M193).
- */
- #define WATCH_COOLER_TEMP_PERIOD 60 // Seconds
- #define WATCH_COOLER_TEMP_INCREASE 3 // Degrees Celsius
-#endif
-
-#if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER)
- /**
- * Thermal Protection Variance Monitor - EXPERIMENTAL.
- * Kill the machine on a stuck temperature sensor. Disable if you get false positives.
- */
- //#define THERMAL_PROTECTION_VARIANCE_MONITOR // Detect a sensor malfunction preventing temperature updates
-#endif
-
-#if ENABLED(PIDTEMP)
- // Add an experimental additional term to the heater power, proportional to the extrusion speed.
- // A well-chosen Kc value should add just enough power to melt the increased material volume.
- //#define PID_EXTRUSION_SCALING
- #if ENABLED(PID_EXTRUSION_SCALING)
- #define DEFAULT_Kc (100) // heating power = Kc * e_speed
- #define LPQ_MAX_LEN 50
- #endif
-
- /**
- * Add an experimental additional term to the heater power, proportional to the fan speed.
- * A well-chosen Kf value should add just enough power to compensate for power-loss from the cooling fan.
- * You can either just add a constant compensation with the DEFAULT_Kf value
- * or follow the instruction below to get speed-dependent compensation.
- *
- * Constant compensation (use only with fanspeeds of 0% and 100%)
- * ---------------------------------------------------------------------
- * A good starting point for the Kf-value comes from the calculation:
- * kf = (power_fan * eff_fan) / power_heater * 255
- * where eff_fan is between 0.0 and 1.0, based on fan-efficiency and airflow to the nozzle / heater.
- *
- * Example:
- * Heater: 40W, Fan: 0.1A * 24V = 2.4W, eff_fan = 0.8
- * Kf = (2.4W * 0.8) / 40W * 255 = 12.24
- *
- * Fan-speed dependent compensation
- * --------------------------------
- * 1. To find a good Kf value, set the hotend temperature, wait for it to settle, and enable the fan (100%).
- * Make sure PID_FAN_SCALING_LIN_FACTOR is 0 and PID_FAN_SCALING_ALTERNATIVE_DEFINITION is not enabled.
- * If you see the temperature drop repeat the test, increasing the Kf value slowly, until the temperature
- * drop goes away. If the temperature overshoots after enabling the fan, the Kf value is too big.
- * 2. Note the Kf-value for fan-speed at 100%
- * 3. Determine a good value for PID_FAN_SCALING_MIN_SPEED, which is around the speed, where the fan starts moving.
- * 4. Repeat step 1. and 2. for this fan speed.
- * 5. Enable PID_FAN_SCALING_ALTERNATIVE_DEFINITION and enter the two identified Kf-values in
- * PID_FAN_SCALING_AT_FULL_SPEED and PID_FAN_SCALING_AT_MIN_SPEED. Enter the minimum speed in PID_FAN_SCALING_MIN_SPEED
- */
- //#define PID_FAN_SCALING
- #if ENABLED(PID_FAN_SCALING)
- //#define PID_FAN_SCALING_ALTERNATIVE_DEFINITION
- #if ENABLED(PID_FAN_SCALING_ALTERNATIVE_DEFINITION)
- // The alternative definition is used for an easier configuration.
- // Just figure out Kf at fullspeed (255) and PID_FAN_SCALING_MIN_SPEED.
- // DEFAULT_Kf and PID_FAN_SCALING_LIN_FACTOR are calculated accordingly.
-
- #define PID_FAN_SCALING_AT_FULL_SPEED 13.0 //=PID_FAN_SCALING_LIN_FACTOR*255+DEFAULT_Kf
- #define PID_FAN_SCALING_AT_MIN_SPEED 6.0 //=PID_FAN_SCALING_LIN_FACTOR*PID_FAN_SCALING_MIN_SPEED+DEFAULT_Kf
- #define PID_FAN_SCALING_MIN_SPEED 10.0 // Minimum fan speed at which to enable PID_FAN_SCALING
-
- #define DEFAULT_Kf (255.0*PID_FAN_SCALING_AT_MIN_SPEED-PID_FAN_SCALING_AT_FULL_SPEED*PID_FAN_SCALING_MIN_SPEED)/(255.0-PID_FAN_SCALING_MIN_SPEED)
- #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0
-
- #else
- #define PID_FAN_SCALING_LIN_FACTOR (0) // Power loss due to cooling = Kf * (fan_speed)
- #define DEFAULT_Kf 10 // A constant value added to the PID-tuner
- #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING
- #endif
- #endif
-#endif
-
-/**
- * Automatic Temperature Mode
- *
- * Dynamically adjust the hotend target temperature based on planned E moves.
- *
- * (Contrast with PID_EXTRUSION_SCALING, which tracks E movement and adjusts PID
- * behavior using an additional kC value.)
- *
- * Autotemp is calculated by (mintemp + factor * mm_per_sec), capped to maxtemp.
- *
- * Enable Autotemp Mode with M104/M109 F S B.
- * Disable by sending M104/M109 with no F parameter (or F0 with AUTOTEMP_PROPORTIONAL).
- */
-#define AUTOTEMP
-#if ENABLED(AUTOTEMP)
- #define AUTOTEMP_OLDWEIGHT 0.98 // Factor used to weight previous readings (0.0 < value < 1.0)
- // Turn on AUTOTEMP on M104/M109 by default using proportions set here
- //#define AUTOTEMP_PROPORTIONAL
- #if ENABLED(AUTOTEMP_PROPORTIONAL)
- #define AUTOTEMP_MIN_P 0 // (°C) Added to the target temperature
- #define AUTOTEMP_MAX_P 5 // (°C) Added to the target temperature
- #define AUTOTEMP_FACTOR_P 1 // Apply this F parameter by default (overridden by M104/M109 F)
- #endif
-#endif
-
-// Show Temperature ADC value
-// Enable for M105 to include ADC values 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 TEMP_SENSOR_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 runout prevention.
-// If the machine is idle and the temperature over MINTEMP
-// then extrude some filament every couple of SECONDS.
-//#define EXTRUDER_RUNOUT_PREVENT
-#if ENABLED(EXTRUDER_RUNOUT_PREVENT)
- #define EXTRUDER_RUNOUT_MINTEMP 190
- #define EXTRUDER_RUNOUT_SECONDS 30
- #define EXTRUDER_RUNOUT_SPEED 1500 // (mm/min)
- #define EXTRUDER_RUNOUT_EXTRUDE 5 // (mm)
-#endif
-
-/**
- * Hotend Idle Timeout
- * Prevent filament in the nozzle from charring and causing a critical jam.
- */
-//#define HOTEND_IDLE_TIMEOUT
-#if ENABLED(HOTEND_IDLE_TIMEOUT)
- #define HOTEND_IDLE_TIMEOUT_SEC (5*60) // (seconds) Time without extruder movement to trigger protection
- #define HOTEND_IDLE_MIN_TRIGGER 180 // (°C) Minimum temperature to enable hotend protection
- #define HOTEND_IDLE_NOZZLE_TARGET 0 // (°C) Safe temperature for the nozzle after timeout
- #define HOTEND_IDLE_BED_TARGET 0 // (°C) Safe temperature for the bed after timeout
-#endif
-
-// @section temperature
-
-// Calibration for AD595 / AD8495 sensor to adjust temperature measurements.
-// The final temperature is calculated as (measuredTemp * GAIN) + OFFSET.
-#define TEMP_SENSOR_AD595_OFFSET 0.0
-#define TEMP_SENSOR_AD595_GAIN 1.0
-#define TEMP_SENSOR_AD8495_OFFSET 0.0
-#define TEMP_SENSOR_AD8495_GAIN 1.0
-
-/**
- * Controller Fan
- * To cool down the stepper drivers and MOSFETs.
- *
- * The fan turns on automatically whenever any driver is enabled and turns
- * off (or reduces to idle speed) shortly after drivers are turned off.
- */
-//#define USE_CONTROLLER_FAN
-#if ENABLED(USE_CONTROLLER_FAN)
- //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
- //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered
- //#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled.
- #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.)
- #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled
- #define CONTROLLERFAN_SPEED_IDLE 0 // (0-255) Idle speed, used when motors are disabled
- #define CONTROLLERFAN_IDLE_TIME 60 // (seconds) Extra time to keep the fan running after disabling motors
-
- // Use TEMP_SENSOR_BOARD as a trigger for enabling the controller fan
- //#define CONTROLLER_FAN_MIN_BOARD_TEMP 40 // (°C) Turn on the fan if the board reaches this temperature
-
- //#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
- #if ENABLED(CONTROLLER_FAN_EDITABLE)
- #define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu
- #endif
-#endif
-
-// 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
-
-// Some coolers may require a non-zero "off" state.
-//#define FAN_OFF_PWM 1
-
-/**
- * PWM Fan Scaling
- *
- * Define the min/max speeds for PWM fans (as set with M106).
- *
- * With these options the M106 0-255 value range is scaled to a subset
- * to ensure that the fan has enough power to spin, or to run lower
- * current fans with higher current. (e.g., 5V/12V fans with 12V/24V)
- * Value 0 always turns off the fan.
- *
- * Define one or both of these to override the default 0-255 range.
- */
-//#define FAN_MIN_PWM 50
-//#define FAN_MAX_PWM 128
-
-/**
- * Fan Fast PWM
- *
- * Combinations of PWM Modes, prescale values and TOP resolutions are used internally
- * to produce a frequency as close as possible to the desired frequency.
- *
- * FAST_PWM_FAN_FREQUENCY
- * Set this to your desired frequency.
- * For AVR, if left undefined this defaults to F = F_CPU/(2*255*1)
- * i.e., F = 31.4kHz on 16MHz microcontrollers or F = 39.2kHz on 20MHz microcontrollers.
- * For non AVR, if left undefined this defaults to F = 1Khz.
- * This F value is only to protect the hardware from an absence of configuration
- * and not to complete it when users are not aware that the frequency must be specifically set to support the target board.
- *
- * NOTE: Setting very low frequencies (< 10 Hz) may result in unexpected timer behavior.
- * Setting very high frequencies can damage your hardware.
- *
- * USE_OCR2A_AS_TOP [undefined by default]
- * Boards that use TIMER2 for PWM have limitations resulting in only a few possible frequencies on TIMER2:
- * 16MHz MCUs: [62.5kHz, 31.4kHz (default), 7.8kHz, 3.92kHz, 1.95kHz, 977Hz, 488Hz, 244Hz, 60Hz, 122Hz, 30Hz]
- * 20MHz MCUs: [78.1kHz, 39.2kHz (default), 9.77kHz, 4.9kHz, 2.44kHz, 1.22kHz, 610Hz, 305Hz, 153Hz, 76Hz, 38Hz]
- * A greater range can be achieved by enabling USE_OCR2A_AS_TOP. But note that this option blocks the use of
- * PWM on pin OC2A. Only use this option if you don't need PWM on 0C2A. (Check your schematic.)
- * USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies.
- */
-//#define FAST_PWM_FAN // Increase the fan PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
-#if ENABLED(FAST_PWM_FAN)
- //#define FAST_PWM_FAN_FREQUENCY 31400 // Define here to override the defaults below
- //#define USE_OCR2A_AS_TOP
- #ifndef FAST_PWM_FAN_FREQUENCY
- #ifdef __AVR__
- #define FAST_PWM_FAN_FREQUENCY ((F_CPU) / (2 * 255 * 1))
- #else
- #define FAST_PWM_FAN_FREQUENCY 1000U
- #endif
- #endif
-#endif
-
-/**
- * Use one of the PWM fans as a redundant part-cooling fan
- */
-//#define REDUNDANT_PART_COOLING_FAN 2 // Index of the fan to sync with FAN 0.
-
-// @section extruder
-
-/**
- * Extruder cooling fans
- *
- * Extruder auto fans automatically turn on when their extruders'
- * temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
- *
- * Your board's pins file specifies the recommended pins. Override those here
- * or set to -1 to disable completely.
- *
- * 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 E0_AUTO_FAN_PIN -1
-//#define E1_AUTO_FAN_PIN -1
-#define E2_AUTO_FAN_PIN -1
-#define E3_AUTO_FAN_PIN -1
-#define E4_AUTO_FAN_PIN -1
-#define E5_AUTO_FAN_PIN -1
-#define E6_AUTO_FAN_PIN -1
-#define E7_AUTO_FAN_PIN -1
-#define CHAMBER_AUTO_FAN_PIN -1
-#define COOLER_AUTO_FAN_PIN -1
-
-#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
-#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
-#define CHAMBER_AUTO_FAN_TEMPERATURE 30
-#define CHAMBER_AUTO_FAN_SPEED 255
-#define COOLER_AUTO_FAN_TEMPERATURE 18
-#define COOLER_AUTO_FAN_SPEED 255
-
-/**
- * Hotend Cooling Fans tachometers
- *
- * Define one or more tachometer pins to enable fan speed
- * monitoring, and reporting of fan speeds with M123.
- *
- * NOTE: Only works with fans up to 7000 RPM.
- */
-//#define FOURWIRES_FANS // Needed with AUTO_FAN when 4-wire PWM fans are installed
-//#define E0_FAN_TACHO_PIN -1
-//#define E0_FAN_TACHO_PULLUP
-//#define E0_FAN_TACHO_PULLDOWN
-//#define E1_FAN_TACHO_PIN -1
-//#define E1_FAN_TACHO_PULLUP
-//#define E1_FAN_TACHO_PULLDOWN
-//#define E2_FAN_TACHO_PIN -1
-//#define E2_FAN_TACHO_PULLUP
-//#define E2_FAN_TACHO_PULLDOWN
-//#define E3_FAN_TACHO_PIN -1
-//#define E3_FAN_TACHO_PULLUP
-//#define E3_FAN_TACHO_PULLDOWN
-//#define E4_FAN_TACHO_PIN -1
-//#define E4_FAN_TACHO_PULLUP
-//#define E4_FAN_TACHO_PULLDOWN
-//#define E5_FAN_TACHO_PIN -1
-//#define E5_FAN_TACHO_PULLUP
-//#define E5_FAN_TACHO_PULLDOWN
-//#define E6_FAN_TACHO_PIN -1
-//#define E6_FAN_TACHO_PULLUP
-//#define E6_FAN_TACHO_PULLDOWN
-//#define E7_FAN_TACHO_PIN -1
-//#define E7_FAN_TACHO_PULLUP
-//#define E7_FAN_TACHO_PULLDOWN
-
-/**
- * Part-Cooling Fan Multiplexer
- *
- * This feature allows you to digitally multiplex the fan output.
- * The multiplexer is automatically switched at tool-change.
- * Set FANMUX[012]_PINs below for up to 2, 4, or 8 multiplexed fans.
- */
-#define FANMUX0_PIN -1
-#define FANMUX1_PIN -1
-#define FANMUX2_PIN -1
-
-/**
- * M355 Case Light on-off / brightness
- */
-//#define CASE_LIGHT_ENABLE
-#if ENABLED(CASE_LIGHT_ENABLE)
- //#define CASE_LIGHT_PIN 4 // Override the default pin if needed
- #define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW
- #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on
- #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin)
- //#define CASE_LIGHT_NO_BRIGHTNESS // Disable brightness control. Enable for non-PWM lighting.
- //#define CASE_LIGHT_MAX_PWM 128 // Limit PWM duty cycle (0-255)
- //#define CASE_LIGHT_MENU // Add Case Light options to the LCD menu
- #if ENABLED(NEOPIXEL_LED)
- //#define CASE_LIGHT_USE_NEOPIXEL // Use NeoPixel LED as case light
- #endif
- #if EITHER(RGB_LED, RGBW_LED)
- //#define CASE_LIGHT_USE_RGB_LED // Use RGB / RGBW LED as case light
- #endif
- #if EITHER(CASE_LIGHT_USE_NEOPIXEL, CASE_LIGHT_USE_RGB_LED)
- #define CASE_LIGHT_DEFAULT_COLOR { 255, 255, 255, 255 } // { Red, Green, Blue, White }
- #endif
-#endif
-
-// @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.
-
-// Employ an external closed loop controller. Override pins here if needed.
-//#define EXTERNAL_CLOSED_LOOP_CONTROLLER
-#if ENABLED(EXTERNAL_CLOSED_LOOP_CONTROLLER)
- //#define CLOSED_LOOP_ENABLE_PIN -1
- //#define CLOSED_LOOP_MOVE_COMPLETE_PIN -1
-#endif
-
-/**
- * Dual X Carriage
- *
- * This setup has two X carriages that can move independently, each with its own hotend.
- * The carriages can be used to print an object with two colors or materials, or in
- * "duplication mode" it can print two identical or X-mirrored objects simultaneously.
- * The inactive carriage is parked automatically to prevent oozing.
- * X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
- * By default the X2 stepper is assigned to the first unused E plug on the board.
- *
- * The following Dual X Carriage modes can be selected with M605 S:
- *
- * 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)
- *
- * 1 : (AUTO_PARK) The firmware automatically parks and unparks the X-carriages on tool-change so
- * that additional slicer support is not required. (M605 S1)
- *
- * 2 : (DUPLICATION) The firmware moves the second X-carriage and extruder in synchronization with
- * the first X-carriage and extruder, to print 2 copies of the same object at the same time.
- * Set the constant X-offset and temperature differential with M605 S2 X[offs] R[deg] and
- * follow with M605 S2 to initiate duplicated movement.
- *
- * 3 : (MIRRORED) Formbot/Vivedino-inspired mirrored mode in which the second extruder duplicates
- * the movement of the first except the second extruder is reversed in the X axis.
- * Set the initial X offset and temperature differential with M605 S2 X[offs] R[deg] and
- * follow with M605 S3 to initiate mirrored movement.
- */
-//#define DUAL_X_CARRIAGE
-#if ENABLED(DUAL_X_CARRIAGE)
- #define X1_MIN_POS X_MIN_POS // Set to X_MIN_POS
- #define X1_MAX_POS X_BED_SIZE // A max coordinate so the X1 carriage can't hit the parked X2 carriage
- #define X2_MIN_POS 80 // A min coordinate so the X2 carriage can't hit the parked X1 carriage
- #define X2_MAX_POS 353 // The max position of the X2 carriage, typically also the home position
- #define X2_HOME_DIR 1 // Set to 1. The X2 carriage always homes to the max endstop position
- #define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS.
- // NOTE: For Dual X Carriage use M218 T1 Xn to override the X2_HOME_POS.
- // This allows recalibration of endstops distance without a rebuild.
- // Remember to set the second extruder's X-offset to 0 in your slicer.
-
- // This is the default power-up mode which can be changed later using M605 S.
- #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_AUTO_PARK_MODE
-
- // Default x offset in duplication mode (typically set to half print bed width)
- #define DEFAULT_DUPLICATION_X_OFFSET 100
-
- // Default action to execute following M605 mode change commands. Typically G28X to apply new mode.
- //#define EVENT_GCODE_IDEX_AFTER_MODECHANGE "G28X"
-#endif
-
-/**
- * Multi-Stepper / Multi-Endstop
- *
- * When X2_DRIVER_TYPE is defined, this indicates that the X and X2 motors work in tandem.
- * The following explanations for X also apply to Y and Z multi-stepper setups.
- * Endstop offsets may be changed by 'M666 X Y Z' and stored to EEPROM.
- *
- * - Enable INVERT_X2_VS_X_DIR if the X2 motor requires an opposite DIR signal from X.
- *
- * - Enable X_DUAL_ENDSTOPS if the second motor has its own endstop, with adjustable offset.
- *
- * - Extra endstops are included in the output of 'M119'.
- *
- * - Set X_DUAL_ENDSTOP_ADJUSTMENT to the known error in the X2 endstop.
- * Applied to the X2 motor on 'G28' / 'G28 X'.
- * Get the offset by homing X and measuring the error.
- * Also set with 'M666 X' and stored to EEPROM with 'M500'.
- *
- * - Use X2_USE_ENDSTOP to set the endstop plug by name. (_XMIN_, _XMAX_, _YMIN_, _YMAX_, _ZMIN_, _ZMAX_)
- */
-#if HAS_X2_STEPPER && DISABLED(DUAL_X_CARRIAGE)
- //#define INVERT_X2_VS_X_DIR // X2 direction signal is the opposite of X
- //#define X_DUAL_ENDSTOPS // X2 has its own endstop
- #if ENABLED(X_DUAL_ENDSTOPS)
- #define X2_USE_ENDSTOP _XMAX_ // X2 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define X2_ENDSTOP_ADJUSTMENT 0 // X2 offset relative to X endstop
- #endif
-#endif
-
-#if HAS_DUAL_Y_STEPPERS
- //#define INVERT_Y2_VS_Y_DIR // Y2 direction signal is the opposite of Y
- //#define Y_DUAL_ENDSTOPS // Y2 has its own endstop
- #if ENABLED(Y_DUAL_ENDSTOPS)
- #define Y2_USE_ENDSTOP _YMAX_ // Y2 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Y2_ENDSTOP_ADJUSTMENT 0 // Y2 offset relative to Y endstop
- #endif
-#endif
-
-//
-// Multi-Z steppers
-//
-#ifdef Z2_DRIVER_TYPE
- //#define INVERT_Z2_VS_Z_DIR // Z2 direction signal is the opposite of Z
-
- //#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops
- #if ENABLED(Z_MULTI_ENDSTOPS)
- #define Z2_USE_ENDSTOP _XMAX_ // Z2 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Y endstop
- #endif
- #ifdef Z3_DRIVER_TYPE
- //#define INVERT_Z3_VS_Z_DIR // Z3 direction signal is the opposite of Z
- #if ENABLED(Z_MULTI_ENDSTOPS)
- #define Z3_USE_ENDSTOP _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Y endstop
- #endif
- #endif
- #ifdef Z4_DRIVER_TYPE
- //#define INVERT_Z4_VS_Z_DIR // Z4 direction signal is the opposite of Z
- #if ENABLED(Z_MULTI_ENDSTOPS)
- #define Z4_USE_ENDSTOP _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG.
- #define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Y endstop
- #endif
- #endif
-#endif
-
-// Drive the E axis with two synchronized steppers
-//#define E_DUAL_STEPPER_DRIVERS
-#if ENABLED(E_DUAL_STEPPER_DRIVERS)
- //#define INVERT_E1_VS_E0_DIR // E direction signals are opposites
-#endif
-
-// Activate a solenoid on the active extruder with M380. Disable all with M381.
-// Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid.
-//#define EXT_SOLENOID
-
-// @section homing
-
-/**
- * Homing Procedure
- * Homing (G28) does an indefinite move towards the endstops to establish
- * the position of the toolhead relative to the workspace.
- */
-
-//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (mm) Backoff from endstops before sensorless homing
-
-#define HOMING_BUMP_MM { 5, 5, 2 } // (mm) Backoff from endstops after first bump
-#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
-
-//#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (mm) Backoff from endstops after homing
-
-#define QUICK_HOME // If G28 contains XY do a diagonal move first
-//#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X
-//#define HOME_Z_FIRST // Home Z first. Requires a Z-MIN endstop (not a probe).
-//#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first
-
-// @section bltouch
-
-#if ENABLED(BLTOUCH)
- /**
- * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
- * Do not activate settings that the probe might not understand. Clones might misunderstand
- * advanced commands.
- *
- * Note: If the probe is not deploying, do a "Reset" and "Self-Test" and then check the
- * wiring of the BROWN, RED and ORANGE wires.
- *
- * Note: If the trigger signal of your probe is not being recognized, it has been very often
- * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
- * like they would be with a real switch. So please check the wiring first.
- *
- * Settings for all BLTouch and clone probes:
- */
-
- // Safety: The probe needs time to recognize the command.
- // Minimum command delay (ms). Enable and increase if needed.
- //#define BLTOUCH_DELAY 500
-
- /**
- * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
- */
-
- // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
- // in special cases, like noisy or filtered input configurations.
- //#define BLTOUCH_FORCE_SW_MODE
-
- /**
- * Settings for BLTouch Smart 3.0 and 3.1
- * Summary:
- * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
- * - High-Speed mode
- * - Disable LCD voltage options
- */
-
- /**
- * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
- * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
- * If disabled, OD mode is the hard-coded default on 3.0
- * On startup, Marlin will compare its eeprom to this value. If the selected mode
- * differs, a mode set eeprom write will be completed at initialization.
- * Use the option below to force an eeprom write to a V3.1 probe regardless.
- */
- //#define BLTOUCH_SET_5V_MODE
-
- /**
- * Safety: Activate if connecting a probe with an unknown voltage mode.
- * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
- * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
- * To preserve the life of the probe, use this once then turn it off and re-flash.
- */
- //#define BLTOUCH_FORCE_MODE_SET
-
- /**
- * Enable "HIGH SPEED" option for probing.
- * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
- * This feature was designed for Deltabots with very fast Z moves; however, higher speed Cartesians
- * might be able to use it. If the machine can't raise Z fast enough the BLTouch may go into ALARM.
- *
- * Set the default state here, change with 'M401 S' or UI, use M500 to save, M502 to reset.
- */
- //#define BLTOUCH_HS_MODE true
-
- // Safety: Enable voltage mode settings in the LCD menu.
- //#define BLTOUCH_LCD_VOLTAGE_MENU
-
-#endif // BLTOUCH
-
-// @section extras
-
-/**
- * Z Steppers Auto-Alignment
- * Add the G34 command to align multiple Z steppers using a bed probe.
- */
-//#define Z_STEPPER_AUTO_ALIGN
-#if ENABLED(Z_STEPPER_AUTO_ALIGN)
- /**
- * Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]]
- * These positions are machine-relative and do not shift with the M206 home offset!
- * If not defined, probe limits will be used.
- * Override with 'M422 S X Y'.
- */
- //#define Z_STEPPER_ALIGN_XY { { 10, 190 }, { 100, 10 }, { 190, 190 } }
-
- /**
- * Orientation for the automatically-calculated probe positions.
- * Override Z stepper align points with 'M422 S X Y'
- *
- * 2 Steppers: (0) (1)
- * | | 2 |
- * | 1 2 | |
- * | | 1 |
- *
- * 3 Steppers: (0) (1) (2) (3)
- * | 3 | 1 | 2 1 | 2 |
- * | | 3 | | 3 |
- * | 1 2 | 2 | 3 | 1 |
- *
- * 4 Steppers: (0) (1) (2) (3)
- * | 4 3 | 1 4 | 2 1 | 3 2 |
- * | | | | |
- * | 1 2 | 2 3 | 3 4 | 4 1 |
- */
- #ifndef Z_STEPPER_ALIGN_XY
- //#define Z_STEPPERS_ORIENTATION 0
- #endif
-
- /**
- * Z Stepper positions for more rapid convergence in bed alignment.
- * Requires 3 or 4 Z steppers.
- *
- * Define Stepper XY positions for Z1, Z2, Z3... corresponding to the screw
- * positions in the bed carriage, with one position per Z stepper in stepper
- * driver order.
- */
- //#define Z_STEPPER_ALIGN_STEPPER_XY { { 210.7, 102.5 }, { 152.6, 220.0 }, { 94.5, 102.5 } }
-
- #ifndef Z_STEPPER_ALIGN_STEPPER_XY
- // Amplification factor. Used to scale the correction step up or down in case
- // the stepper (spindle) position is farther out than the test point.
- #define Z_STEPPER_ALIGN_AMP 1.0 // Use a value > 1.0 NOTE: This may cause instability!
- #endif
-
- // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm
- #define G34_MAX_GRADE 5 // (%) Maximum incline that G34 will handle
- #define Z_STEPPER_ALIGN_ITERATIONS 3 // Number of iterations to apply during alignment
- #define Z_STEPPER_ALIGN_ACC 0.02 // Stop iterating early if the accuracy is better than this
- #define RESTORE_LEVELING_AFTER_G34 // Restore leveling after G34 is done?
- // After G34, re-home Z (G28 Z) or just calculate it from the last probe heights?
- // Re-homing might be more precise in reproducing the actual 'G28 Z' homing height, especially on an uneven bed.
- #define HOME_AFTER_G34
-#endif
-
-//
-// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe.
-//
-//#define ASSISTED_TRAMMING
-#if ENABLED(ASSISTED_TRAMMING)
-
- // Define positions for probe points.
- #define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } }
-
- // Define position names for probe points.
- #define TRAMMING_POINT_NAME_1 "Front-Left"
- #define TRAMMING_POINT_NAME_2 "Front-Right"
- #define TRAMMING_POINT_NAME_3 "Back-Right"
- #define TRAMMING_POINT_NAME_4 "Back-Left"
-
- #define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation
- //#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first
-
- //#define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu
-
- //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment
-
- /**
- * Screw thread:
- * M3: 30 = Clockwise, 31 = Counter-Clockwise
- * M4: 40 = Clockwise, 41 = Counter-Clockwise
- * M5: 50 = Clockwise, 51 = Counter-Clockwise
- */
- #define TRAMMING_SCREW_THREAD 30
-
-#endif
-
-// @section motion
-
-#define AXIS_RELATIVE_MODES { false, false, false, false }
-
-// Add a Duplicate option for well-separated conjoined nozzles
-//#define MULTI_NOZZLE_DUPLICATION
-
-// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
-#define INVERT_X_STEP_PIN false
-#define INVERT_Y_STEP_PIN false
-#define INVERT_Z_STEP_PIN false
-#define INVERT_I_STEP_PIN false
-#define INVERT_J_STEP_PIN false
-#define INVERT_K_STEP_PIN false
-#define INVERT_E_STEP_PIN false
-
-/**
- * Idle Stepper Shutdown
- * Set DISABLE_INACTIVE_? 'true' to shut down axis steppers after an idle period.
- * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout.
- */
-#define DEFAULT_STEPPER_DEACTIVE_TIME 120
-#define DISABLE_INACTIVE_X true
-#define DISABLE_INACTIVE_Y true
-#define DISABLE_INACTIVE_Z false // Set 'false' if the nozzle could fall onto your printed part!
-#define DISABLE_INACTIVE_I true
-#define DISABLE_INACTIVE_J true
-#define DISABLE_INACTIVE_K true
-#define DISABLE_INACTIVE_E true
-
-// Default Minimum Feedrates for printing and travel moves
-#define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s) Minimum feedrate. Set with M205 S.
-#define DEFAULT_MINTRAVELFEEDRATE 0.0 // (mm/s) Minimum travel feedrate. Set with M205 T.
-
-// Minimum time that a segment needs to take as the buffer gets emptied
-#define DEFAULT_MINSEGMENTTIME 20000 // (µs) Set with M205 B.
-
-// Slow down the machine if the lookahead buffer is (by default) half full.
-// Increase the slowdown divisor for larger buffer sizes.
-#define SLOWDOWN
-#if ENABLED(SLOWDOWN)
- #define SLOWDOWN_DIVISOR 2
-#endif
-
-/**
- * XY Frequency limit
- * Reduce resonance by limiting the frequency of small zigzag infill moves.
- * See https://hydraraptor.blogspot.com/2010/12/frequency-limit.html
- * Use M201 F G to change limits at runtime.
- */
-//#define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F.
-#ifdef XY_FREQUENCY_LIMIT
- #define XY_FREQUENCY_MIN_PERCENT 5 // (percent) Minimum FR percentage to apply. Set with M201 G.
-#endif
-
-// 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/s)
-
-//
-// Backlash Compensation
-// Adds extra movement to axes on direction-changes to account for backlash.
-//
-//#define BACKLASH_COMPENSATION
-#if ENABLED(BACKLASH_COMPENSATION)
- // Define values for backlash distance and correction.
- // If BACKLASH_GCODE is enabled these values are the defaults.
- #define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm) One value for each linear axis
- #define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction
-
- // Add steps for motor direction changes on CORE kinematics
- //#define CORE_BACKLASH
-
- // Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments
- // to reduce print artifacts. (Enabling this is costly in memory and computation!)
- //#define BACKLASH_SMOOTHING_MM 3 // (mm)
-
- // Add runtime configuration and tuning of backlash values (M425)
- //#define BACKLASH_GCODE
-
- #if ENABLED(BACKLASH_GCODE)
- // Measure the Z backlash when probing (G29) and set with "M425 Z"
- #define MEASURE_BACKLASH_WHEN_PROBING
-
- #if ENABLED(MEASURE_BACKLASH_WHEN_PROBING)
- // When measuring, the probe will move up to BACKLASH_MEASUREMENT_LIMIT
- // mm away from point of contact in BACKLASH_MEASUREMENT_RESOLUTION
- // increments while checking for the contact to be broken.
- #define BACKLASH_MEASUREMENT_LIMIT 0.5 // (mm)
- #define BACKLASH_MEASUREMENT_RESOLUTION 0.005 // (mm)
- #define BACKLASH_MEASUREMENT_FEEDRATE Z_PROBE_FEEDRATE_SLOW // (mm/min)
- #endif
- #endif
-#endif
-
-/**
- * Automatic backlash, position and hotend offset calibration
- *
- * Enable G425 to run automatic calibration using an electrically-
- * conductive cube, bolt, or washer mounted on the bed.
- *
- * G425 uses the probe to touch the top and sides of the calibration object
- * on the bed and measures and/or correct positional offsets, axis backlash
- * and hotend offsets.
- *
- * Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within
- * ±5mm of true values for G425 to succeed.
- */
-//#define CALIBRATION_GCODE
-#if ENABLED(CALIBRATION_GCODE)
-
- //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..."
- //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved"
-
- #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm
-
- #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min
- #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min
- #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min
-
- // The following parameters refer to the conical section of the nozzle tip.
- #define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm
- #define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm
-
- // Uncomment to enable reporting (required for "G425 V", but consumes PROGMEM).
- //#define CALIBRATION_REPORTING
-
- // The true location and dimension the cube/bolt/washer on the bed.
- #define CALIBRATION_OBJECT_CENTER { 264.0, -22.0, -2.0 } // mm
- #define CALIBRATION_OBJECT_DIMENSIONS { 10.0, 10.0, 10.0 } // mm
-
- // Comment out any sides which are unreachable by the probe. For best
- // auto-calibration results, all sides must be reachable.
- #define CALIBRATION_MEASURE_RIGHT
- #define CALIBRATION_MEASURE_FRONT
- #define CALIBRATION_MEASURE_LEFT
- #define CALIBRATION_MEASURE_BACK
-
- //#define CALIBRATION_MEASURE_IMIN
- //#define CALIBRATION_MEASURE_IMAX
- //#define CALIBRATION_MEASURE_JMIN
- //#define CALIBRATION_MEASURE_JMAX
- //#define CALIBRATION_MEASURE_KMIN
- //#define CALIBRATION_MEASURE_KMAX
-
- // Probing at the exact top center only works if the center is flat. If
- // probing on a screwhead or hollow washer, probe near the edges.
- //#define CALIBRATION_MEASURE_AT_TOP_EDGES
-
- // Define the pin to read during calibration
- #ifndef CALIBRATION_PIN
- //#define CALIBRATION_PIN -1 // Define here to override the default pin
- #define CALIBRATION_PIN_INVERTING false // Set to true to invert the custom pin
- //#define CALIBRATION_PIN_PULLDOWN
- #define CALIBRATION_PIN_PULLUP
- #endif
-#endif
-
-/**
- * Adaptive Step Smoothing increases the resolution of multi-axis moves, particularly at step frequencies
- * below 1kHz (for AVR) or 10kHz (for ARM), where aliasing between axes in multi-axis moves causes audible
- * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the
- * lowest stepping frequencies.
- */
-//#define ADAPTIVE_STEP_SMOOTHING
-
-/**
- * Custom Microstepping
- * Override as-needed for your setup. Up to 3 MS pins are supported.
- */
-//#define MICROSTEP1 LOW,LOW,LOW
-//#define MICROSTEP2 HIGH,LOW,LOW
-//#define MICROSTEP4 LOW,HIGH,LOW
-//#define MICROSTEP8 HIGH,HIGH,LOW
-//#define MICROSTEP16 LOW,LOW,HIGH
-//#define MICROSTEP32 HIGH,LOW,HIGH
-
-// Microstep settings (Requires a board with pins named X_MS1, X_MS2, etc.)
-#define MICROSTEP_MODES { 16, 16, 16, 16, 16, 16 } // [1,2,4,8,16]
-
-/**
- * @section stepper motor current
- *
- * Some boards have a means of setting the stepper motor current via firmware.
- *
- * The power on motor currents are set by:
- * PWM_MOTOR_CURRENT - used by MINIRAMBO & ULTIMAIN_2
- * known compatible chips: A4982
- * DIGIPOT_MOTOR_CURRENT - used by BQ_ZUM_MEGA_3D, RAMBO & SCOOVO_X9H
- * known compatible chips: AD5206
- * DAC_MOTOR_CURRENT_DEFAULT - used by PRINTRBOARD_REVF & RIGIDBOARD_V2
- * known compatible chips: MCP4728
- * DIGIPOT_I2C_MOTOR_CURRENTS - used by 5DPRINT, AZTEEG_X3_PRO, AZTEEG_X5_MINI_WIFI, MIGHTYBOARD_REVE
- * known compatible chips: MCP4451, MCP4018
- *
- * Motor currents can also be set by M907 - M910 and by the LCD.
- * M907 - applies to all.
- * M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
- * M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
- */
-//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps
-//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
-
-/**
- * I2C-based DIGIPOTs (e.g., Azteeg X3 Pro)
- */
-//#define DIGIPOT_MCP4018 // Requires https://github.com/felias-fogg/SlowSoftI2CMaster
-//#define DIGIPOT_MCP4451
-#if EITHER(DIGIPOT_MCP4018, DIGIPOT_MCP4451)
- #define DIGIPOT_I2C_NUM_CHANNELS 5 // 5DPRINT:4 AZTEEG_X3_PRO:8 MKS_SBASE:5 MIGHTYBOARD_REVE:5
-
- // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
- #define DIGIPOT_I2C_MOTOR_CURRENTS { 0.84, 0.84, 0.4, 1.0, 1.0 } // AZTEEG_X3_PRO
-
- //#define DIGIPOT_USE_RAW_VALUES // Use DIGIPOT_MOTOR_CURRENT raw wiper values (instead of A4988 motor currents)
-
- /**
- * Common slave addresses:
- *
- * A (A shifted) B (B shifted) IC
- * Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
- * AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
- * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
- * AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
- * MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
- */
- //#define DIGIPOT_I2C_ADDRESS_A 0x2C // Unshifted slave address for first DIGIPOT
- //#define DIGIPOT_I2C_ADDRESS_B 0x2D // Unshifted slave address for second DIGIPOT
-#endif
-
-//===========================================================================
-//=============================Additional Features===========================
-//===========================================================================
-
-// @section lcd
-
-#if HAS_MANUAL_MOVE_MENU
- #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel
- #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines
- #if IS_ULTIPANEL
- #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position"
- //#define ULTIPANEL_FEEDMULTIPLY // Encoder sets the feedrate multiplier on the Status Screen
- #endif
-#endif
-
-// Change values more rapidly when the encoder is rotated faster
-#define ENCODER_RATE_MULTIPLIER
-#if ENABLED(ENCODER_RATE_MULTIPLIER)
- #define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed
- #define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed
-#endif
-
-// Play a beep when the feedrate is changed from the Status Screen
-//#define BEEP_ON_FEEDRATE_CHANGE
-#if ENABLED(BEEP_ON_FEEDRATE_CHANGE)
- #define FEEDRATE_CHANGE_BEEP_DURATION 10
- #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440
-#endif
-
-//
-// LCD Backlight Timeout
-//
-//#define LCD_BACKLIGHT_TIMEOUT 30 // (s) Timeout before turning off the backlight
-
-#if HAS_BED_PROBE && EITHER(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI)
- //#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu
- #if ENABLED(PROBE_OFFSET_WIZARD)
- /**
- * Enable to init the Probe Z-Offset when starting the Wizard.
- * Use a height slightly above the estimated nozzle-to-probe Z offset.
- * For example, with an offset of -5, consider a starting height of -4.
- */
- //#define PROBE_OFFSET_WIZARD_START_Z -4.0
-
- // Set a convenient position to do the calibration (probing point and nozzle/bed-distance)
- //#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER }
- #endif
-#endif
-
-#if HAS_MARLINUI_MENU
-
- #if HAS_BED_PROBE
- // Add calibration in the Probe Offsets menu to compensate for X-axis twist.
- //#define X_AXIS_TWIST_COMPENSATION
- #if ENABLED(X_AXIS_TWIST_COMPENSATION)
- /**
- * Enable to init the Probe Z-Offset when starting the Wizard.
- * Use a height slightly above the estimated nozzle-to-probe Z offset.
- * For example, with an offset of -5, consider a starting height of -4.
- */
- #define XATC_START_Z 0.0
- #define XATC_MAX_POINTS 3 // Number of points to probe in the wizard
- #define XATC_Y_POSITION Y_CENTER // (mm) Y position to probe
- #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points
- #endif
- #endif
-
- // Include a page of printer information in the LCD Main Menu
- //#define LCD_INFO_MENU
- #if ENABLED(LCD_INFO_MENU)
- //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages
- #endif
-
- // BACK menu items keep the highlight at the top
- //#define TURBO_BACK_MENU_ITEM
-
- // Insert a menu for preheating at the top level to allow for quick access
- //#define PREHEAT_SHORTCUT_MENU_ITEM
-
-#endif // HAS_MARLINUI_MENU
-
-#if ANY(HAS_DISPLAY, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI)
- //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu
- #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state
-#endif
-
-#if EITHER(HAS_DISPLAY, DWIN_LCD_PROUI)
- // The timeout to return to the status screen from sub-menus
- //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms)
-
- #if ENABLED(SHOW_BOOTSCREEN)
- #define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s)
- #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI)
- #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash)
- #endif
- #endif
-
- // Scroll a longer status message into view
- //#define STATUS_MESSAGE_SCROLLING
-
- // Apply a timeout to low-priority status messages
- //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds)
-
- // On the Info Screen, display XY with one decimal place when possible
- //#define LCD_DECIMAL_SMALL_XY
-
- // Add an 'M73' G-code to set the current percentage
- //#define LCD_SET_PROGRESS_MANUALLY
-
- // Show the E position (filament used) during printing
- //#define LCD_SHOW_E_TOTAL
-
- /**
- * LED Control Menu
- * Add LED Control to the LCD menu
- */
- #define LED_CONTROL_MENU
- #if ENABLED(LED_CONTROL_MENU)
- #define LED_COLOR_PRESETS // Enable the Preset Color menu option
- //#define NEO2_COLOR_PRESETS // Enable a second NeoPixel Preset Color menu option
- #if ENABLED(LED_COLOR_PRESETS)
- #define LED_USER_PRESET_RED 255 // User defined RED value
- #define LED_USER_PRESET_GREEN 255 // User defined GREEN value
- #define LED_USER_PRESET_BLUE 255 // User defined BLUE value
- #define LED_USER_PRESET_WHITE 255 // User defined WHITE value
- #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity
- #define LED_USER_PRESET_STARTUP RED // Have the printer display the user preset color on startup
- #endif
- #if ENABLED(NEO2_COLOR_PRESETS)
- #define NEO2_USER_PRESET_RED 255 // User defined RED value
- #define NEO2_USER_PRESET_GREEN 128 // User defined GREEN value
- #define NEO2_USER_PRESET_BLUE 0 // User defined BLUE value
- #define NEO2_USER_PRESET_WHITE 255 // User defined WHITE value
- #define NEO2_USER_PRESET_BRIGHTNESS 255 // User defined intensity
- //#define NEO2_USER_PRESET_STARTUP // Have the printer display the user preset color on startup for the second strip
- #endif
- #endif
-
-#endif
-
-// LCD Print Progress options
-#if EITHER(SDSUPPORT, LCD_SET_PROGRESS_MANUALLY)
- #if CAN_SHOW_REMAINING_TIME
- //#define SHOW_REMAINING_TIME // Display estimated time to completion
- #if ENABLED(SHOW_REMAINING_TIME)
- //#define USE_M73_REMAINING_TIME // Use remaining time from M73 command instead of estimation
- //#define ROTATE_PROGRESS_DISPLAY // Display (P)rogress, (E)lapsed, and (R)emaining time
- #endif
- #endif
-
- #if EITHER(HAS_MARLINUI_U8GLIB, EXTENSIBLE_UI)
- //#define PRINT_PROGRESS_SHOW_DECIMALS // Show progress with decimal digits
- #endif
-
- #if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL)
- //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
- #if ENABLED(LCD_PROGRESS_BAR)
- #define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar
- #define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message
- #define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever)
- //#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it
- //#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar
- #endif
- #endif
-#endif
-
-#if ENABLED(SDSUPPORT)
- /**
- * SD Card SPI Speed
- * May be required to resolve "volume init" errors.
- *
- * Enable and set to SPI_HALF_SPEED, SPI_QUARTER_SPEED, or SPI_EIGHTH_SPEED
- * otherwise full speed will be applied.
- *
- * :['SPI_HALF_SPEED', 'SPI_QUARTER_SPEED', 'SPI_EIGHTH_SPEED']
- */
- //#define SD_SPI_SPEED SPI_HALF_SPEED
-
- // The standard SD detect circuit reads LOW when media is inserted and HIGH when empty.
- // Enable this option and set to HIGH if your SD cards are incorrectly detected.
- //#define SD_DETECT_STATE HIGH
-
- //#define SD_IGNORE_AT_STARTUP // Don't mount the SD card when starting up
- //#define SDCARD_READONLY // Read-only SD card (to save over 2K of flash)
-
- //#define GCODE_REPEAT_MARKERS // Enable G-code M808 to set repeat markers and do looping
-
- #define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls
-
- #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished
- #define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place
-
- // Reverse SD sort to show "more recent" files first, according to the card's FAT.
- // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended.
- #define SDCARD_RATHERRECENTFIRST
-
- #define SD_MENU_CONFIRM_START // Confirm the selected SD file before printing
-
- //#define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM
- //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files
-
- //#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted
-
- //#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu
-
- #define EVENT_GCODE_SD_ABORT "G27" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27")
-
- #if ENABLED(PRINTER_EVENT_LEDS)
- #define PE_LEDS_COMPLETED_TIME (30*60) // (seconds) Time to keep the LED "done" color before restoring normal illumination
- #endif
-
- /**
- * Continue after Power-Loss (Creality3D)
- *
- * Store the current state to the SD Card at the start of each layer
- * during SD printing. If the recovery file is found at boot time, present
- * an option on the LCD screen to continue the print from the last-known
- * point in the file.
- */
- //#define POWER_LOSS_RECOVERY
- #if ENABLED(POWER_LOSS_RECOVERY)
- #define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500)
- //#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss
- //#define POWER_LOSS_ZRAISE 2 // (mm) Z axis raise on resume (on power loss with UPS)
- //#define POWER_LOSS_PIN 44 // Pin to detect power loss. Set to -1 to disable default pin on boards without module.
- //#define POWER_LOSS_STATE HIGH // State of pin indicating power loss
- //#define POWER_LOSS_PULLUP // Set pullup / pulldown as appropriate for your sensor
- //#define POWER_LOSS_PULLDOWN
- //#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume
- //#define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power.
-
- // Without a POWER_LOSS_PIN the following option helps reduce wear on the SD card,
- // especially with "vase mode" printing. Set too high and vases cannot be continued.
- #define POWER_LOSS_MIN_Z_CHANGE 0.05 // (mm) Minimum Z change before saving power-loss data
-
- // Enable if Z homing is needed for proper recovery. 99.9% of the time this should be disabled!
- //#define POWER_LOSS_RECOVER_ZHOME
- #if ENABLED(POWER_LOSS_RECOVER_ZHOME)
- //#define POWER_LOSS_ZHOME_POS { 0, 0 } // Safe XY position to home Z while avoiding objects on the bed
- #endif
- #endif
-
- /**
- * Sort SD file listings in alphabetical order.
- *
- * With this option enabled, items on SD cards will be sorted
- * by name for easier navigation.
- *
- * By default...
- *
- * - Use the slowest -but safest- method for sorting.
- * - Folders are sorted to the top.
- * - The sort key is statically allocated.
- * - No added G-code (M34) support.
- * - 40 item sorting limit. (Items after the first 40 are unsorted.)
- *
- * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the
- * compiler to calculate the worst-case usage and throw an error if the SRAM
- * limit is exceeded.
- *
- * - SDSORT_USES_RAM provides faster sorting via a static directory buffer.
- * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer.
- * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!)
- * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!)
- */
- //#define SDCARD_SORT_ALPHA
-
- // SD Card Sorting options
- #if ENABLED(SDCARD_SORT_ALPHA)
- #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each.
- #define FOLDER_SORTING -1 // -1=above 0=none 1=below
- #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 G-code.
- #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting.
- #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.)
- #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option.
- #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use!
- #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting.
- // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM.
- #endif
-
- // Allow international symbols in long filenames. To display correctly, the
- // LCD's font must contain the characters. Check your selected LCD language.
- //#define UTF_FILENAME_SUPPORT
-
- //#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L'
- //#define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol
-
- //#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu
-
- //#define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!)
-
- /**
- * Abort SD printing when any endstop is triggered.
- * This feature is enabled with 'M540 S1' or from the LCD menu.
- * Endstops must be activated for this option to work.
- */
- //#define SD_ABORT_ON_ENDSTOP_HIT
-
- //#define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file
-
- //#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S'
-
- /**
- * Support for USB thumb drives using an Arduino USB Host Shield or
- * equivalent MAX3421E breakout board. The USB thumb drive will appear
- * to Marlin as an SD card.
- *
- * The MAX3421E can be assigned the same pins as the SD card reader, with
- * the following pin mapping:
- *
- * SCLK, MOSI, MISO --> SCLK, MOSI, MISO
- * INT --> SD_DETECT_PIN [1]
- * SS --> SDSS
- *
- * [1] On AVR an interrupt-capable pin is best for UHS3 compatibility.
- */
- //#define USB_FLASH_DRIVE_SUPPORT
- #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
- /**
- * USB Host Shield Library
- *
- * - UHS2 uses no interrupts and has been production-tested
- * on a LulzBot TAZ Pro with a 32-bit Archim board.
- *
- * - UHS3 is newer code with better USB compatibility. But it
- * is less tested and is known to interfere with Servos.
- * [1] This requires USB_INTR_PIN to be interrupt-capable.
- */
- //#define USE_UHS2_USB
- //#define USE_UHS3_USB
-
- /**
- * Native USB Host supported by some boards (USB OTG)
- */
- //#define USE_OTG_USB_HOST
-
- #if DISABLED(USE_OTG_USB_HOST)
- #define USB_CS_PIN SDSS
- #define USB_INTR_PIN SD_DETECT_PIN
- #endif
- #endif
-
- /**
- * When using a bootloader that supports SD-Firmware-Flashing,
- * add a menu item to activate SD-FW-Update on the next reboot.
- *
- * Requires ATMEGA2560 (Arduino Mega)
- *
- * Tested with this bootloader:
- * https://github.com/FleetProbe/MicroBridge-Arduino-ATMega2560
- */
- //#define SD_FIRMWARE_UPDATE
- #if ENABLED(SD_FIRMWARE_UPDATE)
- #define SD_FIRMWARE_UPDATE_EEPROM_ADDR 0x1FF
- #define SD_FIRMWARE_UPDATE_ACTIVE_VALUE 0xF0
- #define SD_FIRMWARE_UPDATE_INACTIVE_VALUE 0xFF
- #endif
-
- /**
- * Enable this option if you have more than ~3K of unused flash space.
- * Marlin will embed all settings in the firmware binary as compressed data.
- * Use 'M503 C' to write the settings out to the SD Card as 'mc.zip'.
- * See docs/ConfigEmbedding.md for details on how to use 'mc-apply.py'.
- */
- //#define CONFIGURATION_EMBEDDING
-
- // Add an optimized binary file transfer mode, initiated with 'M28 B1'
- //#define BINARY_FILE_TRANSFER
-
- #if ENABLED(BINARY_FILE_TRANSFER)
- // Include extra facilities (e.g., 'M20 F') supporting firmware upload via BINARY_FILE_TRANSFER
- //#define CUSTOM_FIRMWARE_UPLOAD
- #endif
-
- /**
- * Set this option to one of the following (or the board's defaults apply):
- *
- * LCD - Use the SD drive in the external LCD controller.
- * ONBOARD - Use the SD drive on the control board.
- * CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
- *
- * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
- */
- //#define SDCARD_CONNECTION LCD
-
- // Enable if SD detect is rendered useless (e.g., by using an SD extender)
- //#define NO_SD_DETECT
-
- /**
- * Multiple volume support - EXPERIMENTAL.
- * Adds 'M21 Pm' / 'M21 S' / 'M21 U' to mount SD Card / USB Drive.
- */
- //#define MULTI_VOLUME
- #if ENABLED(MULTI_VOLUME)
- #define VOLUME_SD_ONBOARD
- #define VOLUME_USB_FLASH_DRIVE
- #define DEFAULT_VOLUME SV_SD_ONBOARD
- #define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE
- #endif
-
-#endif // SDSUPPORT
-
-/**
- * By default an onboard SD card reader may be shared as a USB mass-
- * storage device. This option hides the SD card from the host PC.
- */
-//#define NO_SD_HOST_DRIVE // Disable SD Card access over USB (for security).
-
-/**
- * Additional options for Graphical Displays
- *
- * Use the optimizations here to improve printing performance,
- * which can be adversely affected by graphical display drawing,
- * especially when doing several short moves, and when printing
- * on DELTA and SCARA machines.
- *
- * Some of these options may result in the display lagging behind
- * controller events, as there is a trade-off between reliable
- * printing performance versus fast display updates.
- */
-#if HAS_MARLINUI_U8GLIB
- // Save many cycles by drawing a hollow frame or no frame on the Info Screen
- //#define XYZ_NO_FRAME
- #define XYZ_HOLLOW_FRAME
-
- // A bigger font is available for edit items. Costs 3120 bytes of flash.
- // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
- //#define USE_BIG_EDIT_FONT
-
- // A smaller font may be used on the Info Screen. Costs 2434 bytes of flash.
- // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
- //#define USE_SMALL_INFOFONT
-
- /**
- * Graphical Display Sleep
- *
- * The U8G library provides sleep / wake functions for SH1106, SSD1306,
- * SSD1309, and some other DOGM displays.
- * Enable this option to save energy and prevent OLED pixel burn-in.
- * Adds the menu item Configuration > LCD Timeout (m) to set a wait period
- * from 0 (disabled) to 99 minutes.
- */
- //#define DISPLAY_SLEEP_MINUTES 2 // (minutes) Timeout before turning off the screen
-
- /**
- * ST7920-based LCDs can emulate a 16 x 4 character display using
- * the ST7920 character-generator for very fast screen updates.
- * Enable LIGHTWEIGHT_UI to use this special display mode.
- *
- * Since LIGHTWEIGHT_UI has limited space, the position and status
- * message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
- * length of time to display the status message before clearing.
- *
- * Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
- * This will prevent position updates from being displayed.
- */
- #if IS_U8GLIB_ST7920
- // Enable this option and reduce the value to optimize screen updates.
- // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
- //#define DOGM_SPI_DELAY_US 5
-
- //#define LIGHTWEIGHT_UI
- #if ENABLED(LIGHTWEIGHT_UI)
- #define STATUS_EXPIRE_SECONDS 20
- #endif
- #endif
-
- /**
- * Status (Info) Screen customizations
- * These options may affect code size and screen render time.
- * Custom status screens can forcibly override these settings.
- */
- //#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones
- //#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends)
- #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM for numbered hotends)
- #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
- #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
- #define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating
- //#define STATUS_CUTTER_ANIM // Use a second bitmap to indicate spindle / laser active
- //#define STATUS_COOLER_ANIM // Use a second bitmap to indicate laser cooling
- //#define STATUS_FLOWMETER_ANIM // Use multiple bitmaps to indicate coolant flow
- //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
- //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
- //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
- //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
- //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash.
-
- // Frivolous Game Options
- //#define MARLIN_BRICKOUT
- //#define MARLIN_INVADERS
- //#define MARLIN_SNAKE
- //#define GAMES_EASTER_EGG // Add extra blank lines above the "Games" sub-menu
-
-#endif // HAS_MARLINUI_U8GLIB
-
-#if HAS_MARLINUI_U8GLIB || IS_DWIN_MARLINUI
- // Show SD percentage next to the progress bar
- //#define SHOW_SD_PERCENT
-
- // Enable to save many cycles by drawing a hollow frame on Menu Screens
- #define MENU_HOLLOW_FRAME
-
- // Swap the CW/CCW indicators in the graphics overlay
- //#define OVERLAY_GFX_REVERSE
-#endif
-
-//
-// Additional options for DGUS / DWIN displays
-//
-#if HAS_DGUS_LCD
- #define LCD_BAUDRATE 115200
-
- #define DGUS_RX_BUFFER_SIZE 128
- #define DGUS_TX_BUFFER_SIZE 48
- //#define SERIAL_STATS_RX_BUFFER_OVERRUNS // Fix Rx overrun situation (Currently only for AVR)
-
- #define DGUS_UPDATE_INTERVAL_MS 500 // (ms) Interval between automatic screen updates
-
- #if ANY(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS, DGUS_LCD_UI_HIPRECY)
- #define DGUS_PRINT_FILENAME // Display the filename during printing
- #define DGUS_PREHEAT_UI // Display a preheat screen during heatup
-
- #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS)
- //#define DGUS_UI_MOVE_DIS_OPTION // Disabled by default for FYSETC and MKS
- #else
- #define DGUS_UI_MOVE_DIS_OPTION // Enabled by default for UI_HIPRECY
- #endif
-
- #define DGUS_FILAMENT_LOADUNLOAD
- #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
- #define DGUS_FILAMENT_PURGE_LENGTH 10
- #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
- #endif
-
- #define DGUS_UI_WAITING // Show a "waiting" screen between some screens
- #if ENABLED(DGUS_UI_WAITING)
- #define DGUS_UI_WAITING_STATUS 10
- #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
- #endif
- #endif
-#endif // HAS_DGUS_LCD
-
-//
-// Additional options for AnyCubic Chiron TFT displays
-//
-#if ENABLED(ANYCUBIC_LCD_CHIRON)
- // By default the type of panel is automatically detected.
- // Enable one of these options if you know the panel type.
- //#define CHIRON_TFT_STANDARD
- //#define CHIRON_TFT_NEW
-
- // Enable the longer Anycubic powerup startup tune
- //#define AC_DEFAULT_STARTUP_TUNE
-
- /**
- * Display Folders
- * By default the file browser lists all G-code files (including those in subfolders) in a flat list.
- * Enable this option to display a hierarchical file browser.
- *
- * NOTES:
- * - Without this option it helps to enable SDCARD_SORT_ALPHA so files are sorted before/after folders.
- * - When used with the "new" panel, folder names will also have '.gcode' appended to their names.
- * This hack is currently required to force the panel to show folders.
- */
- #define AC_SD_FOLDER_VIEW
-#endif
-
-//
-// Specify additional languages for the UI. Default specified by LCD_LANGUAGE.
-//
-#if ANY(DOGLCD, TFT_COLOR_UI, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI)
- //#define LCD_LANGUAGE_2 fr
- //#define LCD_LANGUAGE_3 de
- //#define LCD_LANGUAGE_4 es
- //#define LCD_LANGUAGE_5 it
- #ifdef LCD_LANGUAGE_2
- //#define LCD_LANGUAGE_AUTO_SAVE // Automatically save language to EEPROM on change
- #endif
-#endif
-
-//
-// Touch UI for the FTDI Embedded Video Engine (EVE)
-//
-#if ENABLED(TOUCH_UI_FTDI_EVE)
- // Display board used
- //#define LCD_FTDI_VM800B35A // FTDI 3.5" with FT800 (320x240)
- //#define LCD_4DSYSTEMS_4DLCD_FT843 // 4D Systems 4.3" (480x272)
- //#define LCD_HAOYU_FT800CB // Haoyu with 4.3" or 5" (480x272)
- //#define LCD_HAOYU_FT810CB // Haoyu with 5" (800x480)
- //#define LCD_LULZBOT_CLCD_UI // LulzBot Color LCD UI
- //#define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480)
- //#define LCD_EVE3_50G // Matrix Orbital 5.0", 800x480, BT815
- //#define LCD_EVE2_50G // Matrix Orbital 5.0", 800x480, FT813
-
- // Correct the resolution if not using the stock TFT panel.
- //#define TOUCH_UI_320x240
- //#define TOUCH_UI_480x272
- //#define TOUCH_UI_800x480
-
- // Mappings for boards with a standard RepRapDiscount Display connector
- //#define AO_EXP1_PINMAP // LulzBot CLCD UI EXP1 mapping
- //#define AO_EXP2_PINMAP // LulzBot CLCD UI EXP2 mapping
- //#define CR10_TFT_PINMAP // Rudolph Riedel's CR10 pin mapping
- //#define S6_TFT_PINMAP // FYSETC S6 pin mapping
- //#define F6_TFT_PINMAP // FYSETC F6 pin mapping
-
- //#define OTHER_PIN_LAYOUT // Define pins manually below
- #if ENABLED(OTHER_PIN_LAYOUT)
- // Pins for CS and MOD_RESET (PD) must be chosen
- #define CLCD_MOD_RESET 9
- #define CLCD_SPI_CS 10
-
- // If using software SPI, specify pins for SCLK, MOSI, MISO
- //#define CLCD_USE_SOFT_SPI
- #if ENABLED(CLCD_USE_SOFT_SPI)
- #define CLCD_SOFT_SPI_MOSI 11
- #define CLCD_SOFT_SPI_MISO 12
- #define CLCD_SOFT_SPI_SCLK 13
- #endif
- #endif
-
- // Display Orientation. An inverted (i.e. upside-down) display
- // is supported on the FT800. The FT810 and beyond also support
- // portrait and mirrored orientations.
- //#define TOUCH_UI_INVERTED
- //#define TOUCH_UI_PORTRAIT
- //#define TOUCH_UI_MIRRORED
-
- // UTF8 processing and rendering.
- // Unsupported characters are shown as '?'.
- //#define TOUCH_UI_USE_UTF8
- #if ENABLED(TOUCH_UI_USE_UTF8)
- // Western accents support. These accented characters use
- // combined bitmaps and require relatively little storage.
- #define TOUCH_UI_UTF8_WESTERN_CHARSET
- #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET)
- // Additional character groups. These characters require
- // full bitmaps and take up considerable storage:
- //#define TOUCH_UI_UTF8_SUPERSCRIPTS // ¹ ² ³
- //#define TOUCH_UI_UTF8_COPYRIGHT // © ®
- //#define TOUCH_UI_UTF8_GERMANIC // ß
- //#define TOUCH_UI_UTF8_SCANDINAVIAN // Æ Ð Ø Þ æ ð ø þ
- //#define TOUCH_UI_UTF8_PUNCTUATION // « » ¿ ¡
- //#define TOUCH_UI_UTF8_CURRENCY // ¢ £ ¤ ¥
- //#define TOUCH_UI_UTF8_ORDINALS // º ª
- //#define TOUCH_UI_UTF8_MATHEMATICS // ± × ÷
- //#define TOUCH_UI_UTF8_FRACTIONS // ¼ ½ ¾
- //#define TOUCH_UI_UTF8_SYMBOLS // µ ¶ ¦ § ¬
- #endif
-
- // Cyrillic character set, costs about 27KiB of flash
- //#define TOUCH_UI_UTF8_CYRILLIC_CHARSET
- #endif
-
- // Use a smaller font when labels don't fit buttons
- #define TOUCH_UI_FIT_TEXT
-
- // Use a numeric passcode for "Screen lock" keypad.
- // (recommended for smaller displays)
- //#define TOUCH_UI_PASSCODE
-
- // Output extra debug info for Touch UI events
- //#define TOUCH_UI_DEBUG
-
- // Developer menu (accessed by touching "About Printer" copyright text)
- //#define TOUCH_UI_DEVELOPER_MENU
-#endif
-
-//
-// Classic UI Options
-//
-#if TFT_SCALED_DOGLCD
- //#define TFT_MARLINUI_COLOR 0xFFFF // White
- //#define TFT_MARLINBG_COLOR 0x0000 // Black
- //#define TFT_DISABLED_COLOR 0x0003 // Almost black
- //#define TFT_BTCANCEL_COLOR 0xF800 // Red
- //#define TFT_BTARROWS_COLOR 0xDEE6 // 11011 110111 00110 Yellow
- //#define TFT_BTOKMENU_COLOR 0x145F // 00010 100010 11111 Cyan
-#endif
-
-//
-// ADC Button Debounce
-//
-#if HAS_ADC_BUTTONS
- #define ADC_BUTTON_DEBOUNCE_DELAY 16 // Increase if buttons bounce or repeat too fast
-#endif
-
-// @section safety
-
-/**
- * The watchdog hardware timer will do a reset and disable all outputs
- * if the firmware gets too overloaded to read the temperature sensors.
- *
- * If you find that watchdog reboot causes your AVR board to hang forever,
- * enable WATCHDOG_RESET_MANUAL to use a custom timer instead of WDTO.
- * NOTE: This method is less reliable as it can only catch hangups while
- * interrupts are enabled.
- */
-#define USE_WATCHDOG
-#if ENABLED(USE_WATCHDOG)
- //#define WATCHDOG_RESET_MANUAL
-#endif
-
-// @section lcd
-
-/**
- * Babystepping enables movement of the axes by tiny increments without changing
- * the current position values. This feature is used primarily to adjust the Z
- * axis in the first layer of a print in real-time.
- *
- * Warning: Does not respect endstops!
- */
-//#define BABYSTEPPING
-#if ENABLED(BABYSTEPPING)
- //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
- //#define BABYSTEP_WITHOUT_HOMING
- //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
- //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
- #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
- //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
- #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep
- #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep
-
- //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
- #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
- #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
- // Note: Extra time may be added to mitigate controller latency.
- //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle.
- #if ENABLED(MOVE_Z_WHEN_IDLE)
- #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size.
- #endif
- #endif
-
- //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
-
- //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
- #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
- //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
- //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
- #endif
-#endif
-
-// @section extruder
-
-/**
- * Linear Pressure Control v1.5
- *
- * Assumption: advance [steps] = k * (delta velocity [steps/s])
- * K=0 means advance disabled.
- *
- * NOTE: K values for LIN_ADVANCE 1.5 differ from earlier versions!
- *
- * Set K around 0.22 for 3mm PLA Direct Drive with ~6.5cm between the drive gear and heatbreak.
- * Larger K values will be needed for flexible filament and greater distances.
- * If this algorithm produces a higher speed offset than the extruder can handle (compared to E jerk)
- * print acceleration will be reduced during the affected moves to keep within the limit.
- *
- * See https://marlinfw.org/docs/features/lin_advance.html for full instructions.
- */
-//#define LIN_ADVANCE
-#if ENABLED(LIN_ADVANCE)
- //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
- #define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed
- //#define LA_DEBUG // If enabled, this will generate debug information output over USB.
- //#define EXPERIMENTAL_SCURVE // Enable this option to permit S-Curve Acceleration
- //#define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends.
-#endif
-
-// @section leveling
-
-/**
- * Points to probe for all 3-point Leveling procedures.
- * Override if the automatically selected points are inadequate.
- */
-#if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL)
- //#define PROBE_PT_1_X 15
- //#define PROBE_PT_1_Y 180
- //#define PROBE_PT_2_X 15
- //#define PROBE_PT_2_Y 20
- //#define PROBE_PT_3_X 170
- //#define PROBE_PT_3_Y 20
-#endif
-
-/**
- * Probing Margins
- *
- * Override PROBING_MARGIN for each side of the build plate
- * Useful to get probe points to exact positions on targets or
- * to allow leveling to avoid plate clamps on only specific
- * sides of the bed. With NOZZLE_AS_PROBE negative values are
- * allowed, to permit probing outside the bed.
- *
- * If you are replacing the prior *_PROBE_BED_POSITION options,
- * LEFT and FRONT values in most cases will map directly over
- * RIGHT and REAR would be the inverse such as
- * (X/Y_BED_SIZE - RIGHT/BACK_PROBE_BED_POSITION)
- *
- * This will allow all positions to match at compilation, however
- * should the probe position be modified with M851XY then the
- * probe points will follow. This prevents any change from causing
- * the probe to be unable to reach any points.
- */
-#if PROBE_SELECTED && !IS_KINEMATIC
- //#define PROBING_MARGIN_LEFT PROBING_MARGIN
- //#define PROBING_MARGIN_RIGHT PROBING_MARGIN
- //#define PROBING_MARGIN_FRONT PROBING_MARGIN
- //#define PROBING_MARGIN_BACK PROBING_MARGIN
-#endif
-
-#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
- // Override the mesh area if the automatic (max) area is too large
- //#define MESH_MIN_X MESH_INSET
- //#define MESH_MIN_Y MESH_INSET
- //#define MESH_MAX_X X_BED_SIZE - (MESH_INSET)
- //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
-#endif
-
-#if BOTH(AUTO_BED_LEVELING_UBL, EEPROM_SETTINGS)
- //#define OPTIMIZED_MESH_STORAGE // Store mesh with less precision to save EEPROM space
-#endif
-
-/**
- * Repeatedly attempt G29 leveling until it succeeds.
- * Stop after G29_MAX_RETRIES attempts.
- */
-//#define G29_RETRY_AND_RECOVER
-#if ENABLED(G29_RETRY_AND_RECOVER)
- #define G29_MAX_RETRIES 3
- #define G29_HALT_ON_FAILURE
- /**
- * Specify the GCODE commands that will be executed when leveling succeeds,
- * between attempts, and after the maximum number of retries have been tried.
- */
- #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
- #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
- #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
-
-#endif
-
-/**
- * Thermal Probe Compensation
- *
- * Adjust probe measurements to compensate for distortion associated with the temperature
- * of the probe, bed, and/or hotend.
- * Use G76 to automatically calibrate this feature for probe and bed temperatures.
- * (Extruder temperature/offset values must be calibrated manually.)
- * Use M871 to set temperature/offset values manually.
- * For more details see https://marlinfw.org/docs/features/probe_temp_compensation.html
- */
-//#define PTC_PROBE // Compensate based on probe temperature
-//#define PTC_BED // Compensate based on bed temperature
-//#define PTC_HOTEND // Compensate based on hotend temperature
-
-#if ANY(PTC_PROBE, PTC_BED, PTC_HOTEND)
- /**
- * If the probe is outside the defined range, use linear extrapolation with the closest
- * point and the point with index PTC_LINEAR_EXTRAPOLATION. e.g., If set to 4 it will use the
- * linear extrapolation between data[0] and data[4] for values below PTC_PROBE_START.
- */
- //#define PTC_LINEAR_EXTRAPOLATION 4
-
- #if ENABLED(PTC_PROBE)
- // Probe temperature calibration generates a table of values starting at PTC_PROBE_START
- // (e.g., 30), in steps of PTC_PROBE_RES (e.g., 5) with PTC_PROBE_COUNT (e.g., 10) samples.
- #define PTC_PROBE_START 30 // (°C)
- #define PTC_PROBE_RES 5 // (°C)
- #define PTC_PROBE_COUNT 10
- #define PTC_PROBE_ZOFFS { 0 } // (µm) Z adjustments per sample
- #endif
-
- #if ENABLED(PTC_BED)
- // Bed temperature calibration builds a similar table.
- #define PTC_BED_START 60 // (°C)
- #define PTC_BED_RES 5 // (°C)
- #define PTC_BED_COUNT 10
- #define PTC_BED_ZOFFS { 0 } // (µm) Z adjustments per sample
- #endif
-
- #if ENABLED(PTC_HOTEND)
- // Note: There is no automatic calibration for the hotend. Use M871.
- #define PTC_HOTEND_START 180 // (°C)
- #define PTC_HOTEND_RES 5 // (°C)
- #define PTC_HOTEND_COUNT 20
- #define PTC_HOTEND_ZOFFS { 0 } // (µm) Z adjustments per sample
- #endif
-
- // G76 options
- #if BOTH(PTC_PROBE, PTC_BED)
- // Park position to wait for probe cooldown
- #define PTC_PARK_POS { 0, 0, 100 }
-
- // Probe position to probe and wait for probe to reach target temperature
- //#define PTC_PROBE_POS { 12.0f, 7.3f } // Example: MK52 magnetic heatbed
- #define PTC_PROBE_POS { 90, 100 }
-
- // The temperature the probe should be at while taking measurements during
- // bed temperature calibration.
- #define PTC_PROBE_TEMP 30 // (°C)
-
- // Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster.
- // Note: The Z=0.0 offset is determined by the probe Z offset (e.g., as set with M851 Z).
- #define PTC_PROBE_HEATING_OFFSET 0.5
- #endif
-#endif // PTC_PROBE || PTC_BED || PTC_HOTEND
-
-// @section extras
-
-//
-// G60/G61 Position Save and Return
-//
-//#define SAVED_POSITIONS 1 // Each saved position slot costs 12 bytes
-
-//
-// G2/G3 Arc Support
-//
-#define ARC_SUPPORT // Requires ~3226 bytes
-#if ENABLED(ARC_SUPPORT)
- #define MIN_ARC_SEGMENT_MM 0.1 // (mm) Minimum length of each arc segment
- #define MAX_ARC_SEGMENT_MM 1.0 // (mm) Maximum length of each arc segment
- #define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle
- //#define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length
- #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
- //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
- //#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure
-#endif
-
-// G5 Bézier Curve Support with XYZE destination and IJPQ offsets
-//#define BEZIER_CURVE_SUPPORT // Requires ~2666 bytes
-
-#if EITHER(ARC_SUPPORT, BEZIER_CURVE_SUPPORT)
- //#define CNC_WORKSPACE_PLANES // Allow G2/G3/G5 to operate in XY, ZX, or YZ planes
-#endif
-
-/**
- * Direct Stepping
- *
- * Comparable to the method used by Klipper, G6 direct stepping significantly
- * reduces motion calculations, increases top printing speeds, and results in
- * less step aliasing by calculating all motions in advance.
- * Preparing your G-code: https://github.com/colinrgodsey/step-daemon
- */
-//#define DIRECT_STEPPING
-
-/**
- * G38 Probe Target
- *
- * This option adds G38.2 and G38.3 (probe towards target)
- * and optionally G38.4 and G38.5 (probe away from target).
- * Set MULTIPLE_PROBING for G38 to probe more than once.
- */
-//#define G38_PROBE_TARGET
-#if ENABLED(G38_PROBE_TARGET)
- //#define G38_PROBE_AWAY // Include G38.4 and G38.5 to probe away from target
- #define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move.
-#endif
-
-// Moves (or segments) with fewer steps than this will be joined with the next move
-#define MIN_STEPS_PER_SEGMENT 6
-
-/**
- * Minimum delay before and after setting the stepper DIR (in ns)
- * 0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
- * 20 : Minimum for TMC2xxx drivers
- * 200 : Minimum for A4988 drivers
- * 400 : Minimum for A5984 drivers
- * 500 : Minimum for LV8729 drivers (guess, no info in datasheet)
- * 650 : Minimum for DRV8825 drivers
- * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
- * 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
- *
- * Override the default value based on the driver type set in Configuration.h.
- */
-//#define MINIMUM_STEPPER_POST_DIR_DELAY 650
-//#define MINIMUM_STEPPER_PRE_DIR_DELAY 650
-
-/**
- * Minimum stepper driver pulse width (in µs)
- * 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
- * 0 : Minimum 500ns for LV8729, adjusted in stepper.h
- * 1 : Minimum for A4988 and A5984 stepper drivers
- * 2 : Minimum for DRV8825 stepper drivers
- * 3 : Minimum for TB6600 stepper drivers
- * 30 : Minimum for TB6560 stepper drivers
- *
- * Override the default value based on the driver type set in Configuration.h.
- */
-//#define MINIMUM_STEPPER_PULSE 2
-
-/**
- * Maximum stepping rate (in Hz) the stepper driver allows
- * If undefined, defaults to 1MHz / (2 * MINIMUM_STEPPER_PULSE)
- * 5000000 : Maximum for TMC2xxx stepper drivers
- * 1000000 : Maximum for LV8729 stepper driver
- * 500000 : Maximum for A4988 stepper driver
- * 250000 : Maximum for DRV8825 stepper driver
- * 150000 : Maximum for TB6600 stepper driver
- * 15000 : Maximum for TB6560 stepper driver
- *
- * Override the default value based on the driver type set in Configuration.h.
- */
-//#define MAXIMUM_STEPPER_RATE 250000
-
-// @section temperature
-
-// Control heater 0 and heater 1 in parallel.
-//#define HEATERS_PARALLEL
-
-//===========================================================================
-//================================= Buffers =================================
-//===========================================================================
-
-// @section motion
-
-// The number of linear moves that can be in the planner at once.
-// The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32)
-#if BOTH(SDSUPPORT, DIRECT_STEPPING)
- #define BLOCK_BUFFER_SIZE 8
-#elif ENABLED(SDSUPPORT)
- #define BLOCK_BUFFER_SIZE 16
-#else
- #define BLOCK_BUFFER_SIZE 16
-#endif
-
-// @section serial
-
-// The ASCII buffer for serial input
-#define MAX_CMD_SIZE 96
-#define BUFSIZE 4
-
-// Transmission to Host Buffer Size
-// To save 386 bytes of flash (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
-
-// Host Receive Buffer Size
-// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
-// To use flow control, set this buffer size to at least 1024 bytes.
-// :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
-//#define RX_BUFFER_SIZE 1024
-
-#if RX_BUFFER_SIZE >= 1024
- // Enable to have the controller send XON/XOFF control characters to
- // the host to signal the RX buffer is becoming full.
- //#define SERIAL_XON_XOFF
-#endif
-
-#if ENABLED(SDSUPPORT)
- // Enable this option to collect and display the maximum
- // RX queue usage after transferring a file to SD.
- //#define SERIAL_STATS_MAX_RX_QUEUED
-
- // Enable this option to collect and display the number
- // of dropped bytes after a file transfer to SD.
- //#define SERIAL_STATS_DROPPED_RX
-#endif
-
-// Monitor RX buffer usage
-// Dump an error to the serial port if the serial receive buffer overflows.
-// If you see these errors, increase the RX_BUFFER_SIZE value.
-// Not supported on all platforms.
-//#define RX_BUFFER_MONITOR
-
-/**
- * Emergency Command Parser
- *
- * Add a low-level parser to intercept certain commands as they
- * enter the serial receive buffer, so they cannot be blocked.
- * Currently handles M108, M112, M410, M876
- * NOTE: Not yet implemented for all platforms.
- */
-//#define EMERGENCY_PARSER
-
-/**
- * Realtime Reporting (requires EMERGENCY_PARSER)
- *
- * - Report position and state of the machine (like Grbl).
- * - Auto-report position during long moves.
- * - Useful for CNC/LASER.
- *
- * Adds support for commands:
- * S000 : Report State and Position while moving.
- * P000 : Instant Pause / Hold while moving.
- * R000 : Resume from Pause / Hold.
- *
- * - During Hold all Emergency Parser commands are available, as usual.
- * - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
- */
-//#define REALTIME_REPORTING_COMMANDS
-#if ENABLED(REALTIME_REPORTING_COMMANDS)
- //#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
-#endif
-
-// 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
-
-// Printrun may have trouble receiving long strings all at once.
-// This option inserts short delays between lines of serial output.
-#define SERIAL_OVERRUN_PROTECTION
-
-// For serial echo, the number of digits after the decimal point
-//#define SERIAL_FLOAT_PRECISION 4
-
-/**
- * Set the number of proportional font spaces required to fill up a typical character space.
- * This can help to better align the output of commands like `G29 O` Mesh Output.
- *
- * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
- * Otherwise, adjust according to your client and font.
- */
-#define PROPORTIONAL_FONT_RATIO 1.0
-
-// @section extras
-
-/**
- * Extra Fan Speed
- * Adds a secondary fan speed for each print-cooling fan.
- * 'M106 P T3-255' : Set a secondary speed for
- * 'M106 P T2' : Use the set secondary speed
- * 'M106 P T1' : Restore the previous fan speed
- */
-//#define EXTRA_FAN_SPEED
-
-/**
- * Firmware-based and LCD-controlled retract
- *
- * Add G10 / G11 commands for automatic firmware-based retract / recover.
- * Use M207 and M208 to define parameters for retract / recover.
- *
- * Use M209 to enable or disable auto-retract.
- * With auto-retract enabled, all G1 E moves within the set range
- * will be converted to firmware-based retract/recover moves.
- *
- * Be sure to turn off auto-retract during filament change.
- *
- * Note that M207 / M208 / M209 settings are saved to EEPROM.
- */
-//#define FWRETRACT
-#if ENABLED(FWRETRACT)
- #define FWRETRACT_AUTORETRACT // Override slicer retractions
- #if ENABLED(FWRETRACT_AUTORETRACT)
- #define MIN_AUTORETRACT 0.1 // (mm) Don't convert E moves under this length
- #define MAX_AUTORETRACT 10.0 // (mm) Don't convert E moves over this length
- #endif
- #define RETRACT_LENGTH 3 // (mm) Default retract length (positive value)
- #define RETRACT_LENGTH_SWAP 13 // (mm) Default swap retract length (positive value)
- #define RETRACT_FEEDRATE 45 // (mm/s) Default feedrate for retracting
- #define RETRACT_ZRAISE 0 // (mm) Default retract Z-raise
- #define RETRACT_RECOVER_LENGTH 0 // (mm) Default additional recover length (added to retract length on recover)
- #define RETRACT_RECOVER_LENGTH_SWAP 0 // (mm) Default additional swap recover length (added to retract length on recover from toolchange)
- #define RETRACT_RECOVER_FEEDRATE 8 // (mm/s) Default feedrate for recovering from retraction
- #define RETRACT_RECOVER_FEEDRATE_SWAP 8 // (mm/s) Default feedrate for recovering from swap retraction
- #if ENABLED(MIXING_EXTRUDER)
- //#define RETRACT_SYNC_MIXING // Retract and restore all mixing steppers simultaneously
- #endif
-#endif
-
-/**
- * Universal tool change settings.
- * Applies to all types of extruders except where explicitly noted.
- */
-#if HAS_MULTI_EXTRUDER
- // Z raise distance for tool-change, as needed for some extruders
- #define TOOLCHANGE_ZRAISE 0 // (mm)
- //#define TOOLCHANGE_ZRAISE_BEFORE_RETRACT // Apply raise before swap retraction (if enabled)
- //#define TOOLCHANGE_NO_RETURN // Never return to previous position on tool-change
- #if ENABLED(TOOLCHANGE_NO_RETURN)
- //#define EVENT_GCODE_AFTER_TOOLCHANGE "G12X" // Extra G-code to run after tool-change
- #endif
-
- /**
- * Extra G-code to run while executing tool-change commands. Can be used to use an additional
- * stepper motor (I axis, see option LINEAR_AXES in Configuration.h) to drive the tool-changer.
- */
- //#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0
- //#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1
- //#define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution!
-
- /**
- * Tool Sensors detect when tools have been picked up or dropped.
- * Requires the pins TOOL_SENSOR1_PIN, TOOL_SENSOR2_PIN, etc.
- */
- //#define TOOL_SENSOR
-
- /**
- * Retract and prime filament on tool-change to reduce
- * ooze and stringing and to get cleaner transitions.
- */
- //#define TOOLCHANGE_FILAMENT_SWAP
- #if ENABLED(TOOLCHANGE_FILAMENT_SWAP)
- // Load / Unload
- #define TOOLCHANGE_FS_LENGTH 12 // (mm) Load / Unload length
- #define TOOLCHANGE_FS_EXTRA_RESUME_LENGTH 0 // (mm) Extra length for better restart. Adjust with LCD or M217 B.
- #define TOOLCHANGE_FS_RETRACT_SPEED (50*60) // (mm/min) (Unloading)
- #define TOOLCHANGE_FS_UNRETRACT_SPEED (25*60) // (mm/min) (On SINGLENOZZLE or Bowden loading must be slowed down)
-
- // Longer prime to clean out a SINGLENOZZLE
- #define TOOLCHANGE_FS_EXTRA_PRIME 0 // (mm) Extra priming length
- #define TOOLCHANGE_FS_PRIME_SPEED (4.6*60) // (mm/min) Extra priming feedrate
- #define TOOLCHANGE_FS_WIPE_RETRACT 0 // (mm) Retract before cooling for less stringing, better wipe, etc.
-
- // Cool after prime to reduce stringing
- #define TOOLCHANGE_FS_FAN -1 // Fan index or -1 to skip
- #define TOOLCHANGE_FS_FAN_SPEED 255 // 0-255
- #define TOOLCHANGE_FS_FAN_TIME 10 // (seconds)
-
- // Use TOOLCHANGE_FS_PRIME_SPEED feedrate the first time each extruder is primed
- //#define TOOLCHANGE_FS_SLOW_FIRST_PRIME
-
- /**
- * Prime T0 the first time T0 is sent to the printer:
- * [ Power-On -> T0 { Activate & Prime T0 } -> T1 { Retract T0, Activate & Prime T1 } ]
- * If disabled, no priming on T0 until switching back to T0 from another extruder:
- * [ Power-On -> T0 { T0 Activated } -> T1 { Activate & Prime T1 } -> T0 { Retract T1, Activate & Prime T0 } ]
- * Enable with M217 V1 before printing to avoid unwanted priming on host connect.
- */
- //#define TOOLCHANGE_FS_PRIME_FIRST_USED
-
- /**
- * Tool Change Migration
- * This feature provides G-code and LCD options to switch tools mid-print.
- * All applicable tool properties are migrated so the print can continue.
- * Tools must be closely matching and other restrictions may apply.
- * Useful to:
- * - Change filament color without interruption
- * - Switch spools automatically on filament runout
- * - Switch to a different nozzle on an extruder jam
- */
- #define TOOLCHANGE_MIGRATION_FEATURE
-
- #endif
-
- /**
- * Position to park head during tool change.
- * Doesn't apply to SWITCHING_TOOLHEAD, DUAL_X_CARRIAGE, or PARKING_EXTRUDER
- */
- //#define TOOLCHANGE_PARK
- #if ENABLED(TOOLCHANGE_PARK)
- #define TOOLCHANGE_PARK_XY { X_MIN_POS + 10, Y_MIN_POS + 10 }
- #define TOOLCHANGE_PARK_XY_FEEDRATE 6000 // (mm/min)
- //#define TOOLCHANGE_PARK_X_ONLY // X axis only move
- //#define TOOLCHANGE_PARK_Y_ONLY // Y axis only move
- #endif
-#endif // HAS_MULTI_EXTRUDER
-
-/**
- * Advanced Pause for Filament Change
- * - Adds the G-code M600 Filament Change to initiate a filament change.
- * - This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
- *
- * Requirements:
- * - For Filament Change parking enable and configure NOZZLE_PARK_FEATURE.
- * - For user interaction enable an LCD display, HOST_PROMPT_SUPPORT, or EMERGENCY_PARSER.
- *
- * Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park.
- */
-#define ADVANCED_PAUSE_FEATURE
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
- #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
- // This short retract is done immediately, before parking the nozzle.
- #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
- #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
- #define FILAMENT_CHANGE_UNLOAD_LENGTH 80 // (mm) The length of filament for a complete unload.
- // For Bowden, the full length of the tube and nozzle.
- // For direct drive, the full length of the nozzle.
- // Set to 0 for manual unloading.
- #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
- #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 80 // (mm) Slow length, to allow time to insert material.
- // 0 to disable start loading and skip to fast load only
- #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
- #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
- #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
- // For Bowden, the full length of the tube and nozzle.
- // For direct drive, the full length of the nozzle.
- //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
- #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
- #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
- // Set to 0 for manual extrusion.
- // Filament can be extruded repeatedly from the Filament Change menu
- // until extrusion is consistent, and to purge old filament.
- #define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
- //#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
-
- // Filament Unload does a Retract, Delay, and Purge first:
- #define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length.
- #define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract.
- #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
- #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
-
- #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
- #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
- //#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again.
- //#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing.
-
- #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
- //#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
-
- #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
- //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
-#endif
-
-// @section tmc
-
-/**
- * TMC26X Stepper Driver options
- *
- * The TMC26XStepper library is required for this stepper driver.
- * https://github.com/trinamic/TMC26XStepper
- */
-#if HAS_DRIVER(TMC26X)
-
- #if AXIS_DRIVER_TYPE_X(TMC26X)
- #define X_MAX_CURRENT 1000 // (mA)
- #define X_SENSE_RESISTOR 91 // (mOhms)
- #define X_MICROSTEPS 16 // Number of microsteps
- #endif
-
- #if AXIS_DRIVER_TYPE_X2(TMC26X)
- #define X2_MAX_CURRENT 1000
- #define X2_SENSE_RESISTOR 91
- #define X2_MICROSTEPS X_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Y(TMC26X)
- #define Y_MAX_CURRENT 1000
- #define Y_SENSE_RESISTOR 91
- #define Y_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_Y2(TMC26X)
- #define Y2_MAX_CURRENT 1000
- #define Y2_SENSE_RESISTOR 91
- #define Y2_MICROSTEPS Y_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Z(TMC26X)
- #define Z_MAX_CURRENT 1000
- #define Z_SENSE_RESISTOR 91
- #define Z_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_Z2(TMC26X)
- #define Z2_MAX_CURRENT 1000
- #define Z2_SENSE_RESISTOR 91
- #define Z2_MICROSTEPS Z_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Z3(TMC26X)
- #define Z3_MAX_CURRENT 1000
- #define Z3_SENSE_RESISTOR 91
- #define Z3_MICROSTEPS Z_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_Z4(TMC26X)
- #define Z4_MAX_CURRENT 1000
- #define Z4_SENSE_RESISTOR 91
- #define Z4_MICROSTEPS Z_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_I(TMC26X)
- #define I_MAX_CURRENT 1000
- #define I_SENSE_RESISTOR 91
- #define I_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_J(TMC26X)
- #define J_MAX_CURRENT 1000
- #define J_SENSE_RESISTOR 91
- #define J_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_K(TMC26X)
- #define K_MAX_CURRENT 1000
- #define K_SENSE_RESISTOR 91
- #define K_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_E0(TMC26X)
- #define E0_MAX_CURRENT 1000
- #define E0_SENSE_RESISTOR 91
- #define E0_MICROSTEPS 16
- #endif
-
- #if AXIS_DRIVER_TYPE_E1(TMC26X)
- #define E1_MAX_CURRENT 1000
- #define E1_SENSE_RESISTOR 91
- #define E1_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E2(TMC26X)
- #define E2_MAX_CURRENT 1000
- #define E2_SENSE_RESISTOR 91
- #define E2_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E3(TMC26X)
- #define E3_MAX_CURRENT 1000
- #define E3_SENSE_RESISTOR 91
- #define E3_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E4(TMC26X)
- #define E4_MAX_CURRENT 1000
- #define E4_SENSE_RESISTOR 91
- #define E4_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E5(TMC26X)
- #define E5_MAX_CURRENT 1000
- #define E5_SENSE_RESISTOR 91
- #define E5_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E6(TMC26X)
- #define E6_MAX_CURRENT 1000
- #define E6_SENSE_RESISTOR 91
- #define E6_MICROSTEPS E0_MICROSTEPS
- #endif
-
- #if AXIS_DRIVER_TYPE_E7(TMC26X)
- #define E7_MAX_CURRENT 1000
- #define E7_SENSE_RESISTOR 91
- #define E7_MICROSTEPS E0_MICROSTEPS
- #endif
-
-#endif // TMC26X
-
-// @section tmc_smart
-
-/**
- * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 stepper drivers in SPI mode
- * connect your SPI pins to the hardware SPI interface on your board and define
- * the required CS pins in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3
- * pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
- * You may also use software SPI if you wish to use general purpose IO pins.
- *
- * To use TMC2208 stepper UART-configurable stepper drivers connect #_SERIAL_TX_PIN
- * to the driver side PDN_UART pin with a 1K resistor.
- * To use the reading capabilities, also connect #_SERIAL_RX_PIN to PDN_UART without
- * a resistor.
- * The drivers can also be used with hardware serial.
- *
- * TMCStepper library is required to use TMC stepper drivers.
- * https://github.com/teemuatlut/TMCStepper
- */
-#if HAS_TRINAMIC_CONFIG
-
- #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current
-
- /**
- * Interpolate microsteps to 256
- * Override for each driver with _INTERPOLATE settings below
- */
- #define INTERPOLATE true
-
- #if AXIS_IS_TMC(X)
- #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
- #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
- #define X_MICROSTEPS 16 // 0..256
- #define X_RSENSE 0.11
- #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ...
- //#define X_INTERPOLATE true // Enable to override 'INTERPOLATE' for the X axis
- //#define X_HOLD_MULTIPLIER 0.5 // Enable to override 'HOLD_MULTIPLIER' for the X axis
- #endif
-
- #if AXIS_IS_TMC(X2)
- #define X2_CURRENT 800
- #define X2_CURRENT_HOME X2_CURRENT
- #define X2_MICROSTEPS X_MICROSTEPS
- #define X2_RSENSE 0.11
- #define X2_CHAIN_POS -1
- //#define X2_INTERPOLATE true
- //#define X2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Y)
- #define Y_CURRENT 800
- #define Y_CURRENT_HOME Y_CURRENT
- #define Y_MICROSTEPS 16
- #define Y_RSENSE 0.11
- #define Y_CHAIN_POS -1
- //#define Y_INTERPOLATE true
- //#define Y_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Y2)
- #define Y2_CURRENT 800
- #define Y2_CURRENT_HOME Y2_CURRENT
- #define Y2_MICROSTEPS Y_MICROSTEPS
- #define Y2_RSENSE 0.11
- #define Y2_CHAIN_POS -1
- //#define Y2_INTERPOLATE true
- //#define Y2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z)
- #define Z_CURRENT 800
- #define Z_CURRENT_HOME Z_CURRENT
- #define Z_MICROSTEPS 16
- #define Z_RSENSE 0.11
- #define Z_CHAIN_POS -1
- //#define Z_INTERPOLATE true
- //#define Z_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z2)
- #define Z2_CURRENT 800
- #define Z2_CURRENT_HOME Z2_CURRENT
- #define Z2_MICROSTEPS Z_MICROSTEPS
- #define Z2_RSENSE 0.11
- #define Z2_CHAIN_POS -1
- //#define Z2_INTERPOLATE true
- //#define Z2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z3)
- #define Z3_CURRENT 800
- #define Z3_CURRENT_HOME Z3_CURRENT
- #define Z3_MICROSTEPS Z_MICROSTEPS
- #define Z3_RSENSE 0.11
- #define Z3_CHAIN_POS -1
- //#define Z3_INTERPOLATE true
- //#define Z3_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(Z4)
- #define Z4_CURRENT 800
- #define Z4_CURRENT_HOME Z4_CURRENT
- #define Z4_MICROSTEPS Z_MICROSTEPS
- #define Z4_RSENSE 0.11
- #define Z4_CHAIN_POS -1
- //#define Z4_INTERPOLATE true
- //#define Z4_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(I)
- #define I_CURRENT 800
- #define I_CURRENT_HOME I_CURRENT
- #define I_MICROSTEPS 16
- #define I_RSENSE 0.11
- #define I_CHAIN_POS -1
- //#define I_INTERPOLATE true
- //#define I_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(J)
- #define J_CURRENT 800
- #define J_CURRENT_HOME J_CURRENT
- #define J_MICROSTEPS 16
- #define J_RSENSE 0.11
- #define J_CHAIN_POS -1
- //#define J_INTERPOLATE true
- //#define J_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(K)
- #define K_CURRENT 800
- #define K_CURRENT_HOME K_CURRENT
- #define K_MICROSTEPS 16
- #define K_RSENSE 0.11
- #define K_CHAIN_POS -1
- //#define K_INTERPOLATE true
- //#define K_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E0)
- #define E0_CURRENT 800
- #define E0_MICROSTEPS 16
- #define E0_RSENSE 0.11
- #define E0_CHAIN_POS -1
- //#define E0_INTERPOLATE true
- //#define E0_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E1)
- #define E1_CURRENT 800
- #define E1_MICROSTEPS E0_MICROSTEPS
- #define E1_RSENSE 0.11
- #define E1_CHAIN_POS -1
- //#define E1_INTERPOLATE true
- //#define E1_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E2)
- #define E2_CURRENT 800
- #define E2_MICROSTEPS E0_MICROSTEPS
- #define E2_RSENSE 0.11
- #define E2_CHAIN_POS -1
- //#define E2_INTERPOLATE true
- //#define E2_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E3)
- #define E3_CURRENT 800
- #define E3_MICROSTEPS E0_MICROSTEPS
- #define E3_RSENSE 0.11
- #define E3_CHAIN_POS -1
- //#define E3_INTERPOLATE true
- //#define E3_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E4)
- #define E4_CURRENT 800
- #define E4_MICROSTEPS E0_MICROSTEPS
- #define E4_RSENSE 0.11
- #define E4_CHAIN_POS -1
- //#define E4_INTERPOLATE true
- //#define E4_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E5)
- #define E5_CURRENT 800
- #define E5_MICROSTEPS E0_MICROSTEPS
- #define E5_RSENSE 0.11
- #define E5_CHAIN_POS -1
- //#define E5_INTERPOLATE true
- //#define E5_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E6)
- #define E6_CURRENT 800
- #define E6_MICROSTEPS E0_MICROSTEPS
- #define E6_RSENSE 0.11
- #define E6_CHAIN_POS -1
- //#define E6_INTERPOLATE true
- //#define E6_HOLD_MULTIPLIER 0.5
- #endif
-
- #if AXIS_IS_TMC(E7)
- #define E7_CURRENT 800
- #define E7_MICROSTEPS E0_MICROSTEPS
- #define E7_RSENSE 0.11
- #define E7_CHAIN_POS -1
- //#define E7_INTERPOLATE true
- //#define E7_HOLD_MULTIPLIER 0.5
- #endif
-
- /**
- * Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here.
- * The default pins can be found in your board's pins file.
- */
- //#define X_CS_PIN -1
- //#define Y_CS_PIN -1
- //#define Z_CS_PIN -1
- //#define X2_CS_PIN -1
- //#define Y2_CS_PIN -1
- //#define Z2_CS_PIN -1
- //#define Z3_CS_PIN -1
- //#define Z4_CS_PIN -1
- //#define I_CS_PIN -1
- //#define J_CS_PIN -1
- //#define K_CS_PIN -1
- //#define E0_CS_PIN -1
- //#define E1_CS_PIN -1
- //#define E2_CS_PIN -1
- //#define E3_CS_PIN -1
- //#define E4_CS_PIN -1
- //#define E5_CS_PIN -1
- //#define E6_CS_PIN -1
- //#define E7_CS_PIN -1
-
- /**
- * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
- * The default SW SPI pins are defined the respective pins files,
- * but you can override or define them here.
- */
- //#define TMC_USE_SW_SPI
- //#define TMC_SW_MOSI -1
- //#define TMC_SW_MISO -1
- //#define TMC_SW_SCK -1
-
- /**
- * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
- * Set the address using jumpers on pins MS1 and MS2.
- * Address | MS1 | MS2
- * 0 | LOW | LOW
- * 1 | HIGH | LOW
- * 2 | LOW | HIGH
- * 3 | HIGH | HIGH
- *
- * Set *_SERIAL_TX_PIN and *_SERIAL_RX_PIN to match for all drivers
- * on the same serial port, either here or in your board's pins file.
- */
- //#define X_SLAVE_ADDRESS 0
- //#define Y_SLAVE_ADDRESS 0
- //#define Z_SLAVE_ADDRESS 0
- //#define X2_SLAVE_ADDRESS 0
- //#define Y2_SLAVE_ADDRESS 0
- //#define Z2_SLAVE_ADDRESS 0
- //#define Z3_SLAVE_ADDRESS 0
- //#define Z4_SLAVE_ADDRESS 0
- //#define I_SLAVE_ADDRESS 0
- //#define J_SLAVE_ADDRESS 0
- //#define K_SLAVE_ADDRESS 0
- //#define E0_SLAVE_ADDRESS 0
- //#define E1_SLAVE_ADDRESS 0
- //#define E2_SLAVE_ADDRESS 0
- //#define E3_SLAVE_ADDRESS 0
- //#define E4_SLAVE_ADDRESS 0
- //#define E5_SLAVE_ADDRESS 0
- //#define E6_SLAVE_ADDRESS 0
- //#define E7_SLAVE_ADDRESS 0
-
- /**
- * Software enable
- *
- * Use for drivers that do not use a dedicated enable pin, but rather handle the same
- * function through a communication line such as SPI or UART.
- */
- //#define SOFTWARE_DRIVER_ENABLE
-
- /**
- * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
- * Use Trinamic's ultra quiet stepping mode.
- * When disabled, Marlin will use spreadCycle stepping mode.
- */
- #define STEALTHCHOP_XY
- #define STEALTHCHOP_Z
- #define STEALTHCHOP_I
- #define STEALTHCHOP_J
- #define STEALTHCHOP_K
- #define STEALTHCHOP_E
-
- /**
- * Optimize spreadCycle chopper parameters by using predefined parameter sets
- * or with the help of an example included in the library.
- * Provided parameter sets are
- * CHOPPER_DEFAULT_12V
- * CHOPPER_DEFAULT_19V
- * CHOPPER_DEFAULT_24V
- * CHOPPER_DEFAULT_36V
- * CHOPPER_09STEP_24V // 0.9 degree steppers (24V)
- * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Průša firmware for MK3 (24V)
- * CHOPPER_MARLIN_119 // Old defaults from Marlin v1.1.9
- *
- * Define your own with:
- * { , , hysteresis_start[1..8] }
- */
- #define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below)
- //#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below)
- //#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X
- //#define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below)
- //#define CHOPPER_TIMING_Y2 CHOPPER_TIMING_Y
- //#define CHOPPER_TIMING_Z CHOPPER_TIMING // For Z Axes (override below)
- //#define CHOPPER_TIMING_Z2 CHOPPER_TIMING_Z
- //#define CHOPPER_TIMING_Z3 CHOPPER_TIMING_Z
- //#define CHOPPER_TIMING_Z4 CHOPPER_TIMING_Z
- //#define CHOPPER_TIMING_I CHOPPER_TIMING
- //#define CHOPPER_TIMING_J CHOPPER_TIMING
- //#define CHOPPER_TIMING_K CHOPPER_TIMING
- //#define CHOPPER_TIMING_E CHOPPER_TIMING // For Extruders (override below)
- //#define CHOPPER_TIMING_E1 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E2 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E3 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E4 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E5 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E6 CHOPPER_TIMING_E
- //#define CHOPPER_TIMING_E7 CHOPPER_TIMING_E
-
- /**
- * Monitor Trinamic drivers
- * for error conditions like overtemperature and short to ground.
- * To manage over-temp Marlin can decrease the driver current until the error condition clears.
- * Other detected conditions can be used to stop the current print.
- * Relevant G-codes:
- * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
- * M911 - Report stepper driver overtemperature pre-warn condition.
- * M912 - Clear stepper driver overtemperature pre-warn condition flag.
- * M122 - Report driver parameters (Requires TMC_DEBUG)
- */
- //#define MONITOR_DRIVER_STATUS
-
- #if ENABLED(MONITOR_DRIVER_STATUS)
- #define CURRENT_STEP_DOWN 50 // [mA]
- #define REPORT_CURRENT_CHANGE
- #define STOP_ON_ERROR
- #endif
-
- /**
- * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
- * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
- * This mode allows for faster movements at the expense of higher noise levels.
- * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
- * M913 X/Y/Z/E to live tune the setting
- */
- //#define HYBRID_THRESHOLD
-
- #define X_HYBRID_THRESHOLD 100 // [mm/s]
- #define X2_HYBRID_THRESHOLD 100
- #define Y_HYBRID_THRESHOLD 100
- #define Y2_HYBRID_THRESHOLD 100
- #define Z_HYBRID_THRESHOLD 3
- #define Z2_HYBRID_THRESHOLD 3
- #define Z3_HYBRID_THRESHOLD 3
- #define Z4_HYBRID_THRESHOLD 3
- #define I_HYBRID_THRESHOLD 3
- #define J_HYBRID_THRESHOLD 3
- #define K_HYBRID_THRESHOLD 3
- #define E0_HYBRID_THRESHOLD 30
- #define E1_HYBRID_THRESHOLD 30
- #define E2_HYBRID_THRESHOLD 30
- #define E3_HYBRID_THRESHOLD 30
- #define E4_HYBRID_THRESHOLD 30
- #define E5_HYBRID_THRESHOLD 30
- #define E6_HYBRID_THRESHOLD 30
- #define E7_HYBRID_THRESHOLD 30
-
- /**
- * Use StallGuard to home / probe X, Y, Z.
- *
- * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
- * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
- * X, Y, and Z homing will always be done in spreadCycle mode.
- *
- * X/Y/Z_STALL_SENSITIVITY is the default stall threshold.
- * Use M914 X Y Z to set the stall threshold at runtime:
- *
- * Sensitivity TMC2209 Others
- * HIGHEST 255 -64 (Too sensitive => False positive)
- * LOWEST 0 63 (Too insensitive => No trigger)
- *
- * It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }.
- *
- * SPI_ENDSTOPS *** Beta feature! *** TMC2130/TMC5160 Only ***
- * Poll the driver through SPI to determine load when homing.
- * Removes the need for a wire from DIAG1 to an endstop pin.
- *
- * IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when
- * homing and adds a guard period for endstop triggering.
- *
- * Comment *_STALL_SENSITIVITY to disable sensorless homing for that axis.
- */
- //#define SENSORLESS_HOMING // StallGuard capable drivers only
-
- #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
- // TMC2209: 0...255. TMC2130: -64...63
- #define X_STALL_SENSITIVITY 8
- #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
- #define Y_STALL_SENSITIVITY 8
- #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY
- //#define Z_STALL_SENSITIVITY 8
- //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY
- //#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY
- //#define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY
- //#define I_STALL_SENSITIVITY 8
- //#define J_STALL_SENSITIVITY 8
- //#define K_STALL_SENSITIVITY 8
- //#define SPI_ENDSTOPS // TMC2130 only
- //#define IMPROVE_HOMING_RELIABILITY
- #endif
-
- /**
- * TMC Homing stepper phase.
- *
- * Improve homing repeatability by homing to stepper coil's nearest absolute
- * phase position. Trinamic drivers use a stepper phase table with 1024 values
- * spanning 4 full steps with 256 positions each (ergo, 1024 positions).
- * Full step positions (128, 384, 640, 896) have the highest holding torque.
- *
- * Values from 0..1023, -1 to disable homing phase for that axis.
- */
- //#define TMC_HOME_PHASE { 896, 896, 896 }
-
- /**
- * Beta feature!
- * Create a 50/50 square wave step pulse optimal for stepper drivers.
- */
- //#define SQUARE_WAVE_STEPPING
-
- /**
- * Enable M122 debugging command for TMC stepper drivers.
- * M122 S0/1 will enable continuous reporting.
- */
- //#define TMC_DEBUG
-
- /**
- * You can set your own advanced settings by filling in predefined functions.
- * A list of available functions can be found on the library github page
- * https://github.com/teemuatlut/TMCStepper
- *
- * Example:
- * #define TMC_ADV() { \
- * stepperX.diag0_otpw(1); \
- * stepperY.intpol(0); \
- * }
- */
- #define TMC_ADV() { }
-
-#endif // HAS_TRINAMIC_CONFIG
-
-// @section L64XX
-
-/**
- * L64XX Stepper Driver options
- *
- * Arduino-L6470 library (0.8.0 or higher) is required.
- * https://github.com/ameyer/Arduino-L6470
- *
- * Requires the following to be defined in your pins_YOUR_BOARD file
- * L6470_CHAIN_SCK_PIN
- * L6470_CHAIN_MISO_PIN
- * L6470_CHAIN_MOSI_PIN
- * L6470_CHAIN_SS_PIN
- * ENABLE_RESET_L64XX_CHIPS(Q) where Q is 1 to enable and 0 to reset
- */
-
-#if HAS_L64XX
-
- //#define L6470_CHITCHAT // Display additional status info
-
- #if AXIS_IS_L64XX(X)
- #define X_MICROSTEPS 128 // Number of microsteps (VALID: 1, 2, 4, 8, 16, 32, 128) - L6474 max is 16
- #define X_OVERCURRENT 2000 // (mA) Current where the driver detects an over current
- // L6470 & L6474 - VALID: 375 x (1 - 16) - 6A max - rounds down
- // POWERSTEP01: VALID: 1000 x (1 - 32) - 32A max - rounds down
- #define X_STALLCURRENT 1500 // (mA) Current where the driver detects a stall (VALID: 31.25 * (1-128) - 4A max - rounds down)
- // L6470 & L6474 - VALID: 31.25 * (1-128) - 4A max - rounds down
- // POWERSTEP01: VALID: 200 x (1 - 32) - 6.4A max - rounds down
- // L6474 - STALLCURRENT setting is used to set the nominal (TVAL) current
- #define X_MAX_VOLTAGE 127 // 0-255, Maximum effective voltage seen by stepper - not used by L6474
- #define X_CHAIN_POS -1 // Position in SPI chain, 0=Not in chain, 1=Nearest MOSI
- #define X_SLEW_RATE 1 // 0-3, Slew 0 is slowest, 3 is fastest
- #endif
-
- #if AXIS_IS_L64XX(X2)
- #define X2_MICROSTEPS X_MICROSTEPS
- #define X2_OVERCURRENT 2000
- #define X2_STALLCURRENT 1500
- #define X2_MAX_VOLTAGE 127
- #define X2_CHAIN_POS -1
- #define X2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Y)
- #define Y_MICROSTEPS 128
- #define Y_OVERCURRENT 2000
- #define Y_STALLCURRENT 1500
- #define Y_MAX_VOLTAGE 127
- #define Y_CHAIN_POS -1
- #define Y_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Y2)
- #define Y2_MICROSTEPS Y_MICROSTEPS
- #define Y2_OVERCURRENT 2000
- #define Y2_STALLCURRENT 1500
- #define Y2_MAX_VOLTAGE 127
- #define Y2_CHAIN_POS -1
- #define Y2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z)
- #define Z_MICROSTEPS 128
- #define Z_OVERCURRENT 2000
- #define Z_STALLCURRENT 1500
- #define Z_MAX_VOLTAGE 127
- #define Z_CHAIN_POS -1
- #define Z_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z2)
- #define Z2_MICROSTEPS Z_MICROSTEPS
- #define Z2_OVERCURRENT 2000
- #define Z2_STALLCURRENT 1500
- #define Z2_MAX_VOLTAGE 127
- #define Z2_CHAIN_POS -1
- #define Z2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z3)
- #define Z3_MICROSTEPS Z_MICROSTEPS
- #define Z3_OVERCURRENT 2000
- #define Z3_STALLCURRENT 1500
- #define Z3_MAX_VOLTAGE 127
- #define Z3_CHAIN_POS -1
- #define Z3_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(Z4)
- #define Z4_MICROSTEPS Z_MICROSTEPS
- #define Z4_OVERCURRENT 2000
- #define Z4_STALLCURRENT 1500
- #define Z4_MAX_VOLTAGE 127
- #define Z4_CHAIN_POS -1
- #define Z4_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(I)
- #define I_MICROSTEPS 128
- #define I_OVERCURRENT 2000
- #define I_STALLCURRENT 1500
- #define I_MAX_VOLTAGE 127
- #define I_CHAIN_POS -1
- #define I_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(J)
- #define J_MICROSTEPS 128
- #define J_OVERCURRENT 2000
- #define J_STALLCURRENT 1500
- #define J_MAX_VOLTAGE 127
- #define J_CHAIN_POS -1
- #define J_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(K)
- #define K_MICROSTEPS 128
- #define K_OVERCURRENT 2000
- #define K_STALLCURRENT 1500
- #define K_MAX_VOLTAGE 127
- #define K_CHAIN_POS -1
- #define K_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E0)
- #define E0_MICROSTEPS 128
- #define E0_OVERCURRENT 2000
- #define E0_STALLCURRENT 1500
- #define E0_MAX_VOLTAGE 127
- #define E0_CHAIN_POS -1
- #define E0_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E1)
- #define E1_MICROSTEPS E0_MICROSTEPS
- #define E1_OVERCURRENT 2000
- #define E1_STALLCURRENT 1500
- #define E1_MAX_VOLTAGE 127
- #define E1_CHAIN_POS -1
- #define E1_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E2)
- #define E2_MICROSTEPS E0_MICROSTEPS
- #define E2_OVERCURRENT 2000
- #define E2_STALLCURRENT 1500
- #define E2_MAX_VOLTAGE 127
- #define E2_CHAIN_POS -1
- #define E2_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E3)
- #define E3_MICROSTEPS E0_MICROSTEPS
- #define E3_OVERCURRENT 2000
- #define E3_STALLCURRENT 1500
- #define E3_MAX_VOLTAGE 127
- #define E3_CHAIN_POS -1
- #define E3_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E4)
- #define E4_MICROSTEPS E0_MICROSTEPS
- #define E4_OVERCURRENT 2000
- #define E4_STALLCURRENT 1500
- #define E4_MAX_VOLTAGE 127
- #define E4_CHAIN_POS -1
- #define E4_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E5)
- #define E5_MICROSTEPS E0_MICROSTEPS
- #define E5_OVERCURRENT 2000
- #define E5_STALLCURRENT 1500
- #define E5_MAX_VOLTAGE 127
- #define E5_CHAIN_POS -1
- #define E5_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E6)
- #define E6_MICROSTEPS E0_MICROSTEPS
- #define E6_OVERCURRENT 2000
- #define E6_STALLCURRENT 1500
- #define E6_MAX_VOLTAGE 127
- #define E6_CHAIN_POS -1
- #define E6_SLEW_RATE 1
- #endif
-
- #if AXIS_IS_L64XX(E7)
- #define E7_MICROSTEPS E0_MICROSTEPS
- #define E7_OVERCURRENT 2000
- #define E7_STALLCURRENT 1500
- #define E7_MAX_VOLTAGE 127
- #define E7_CHAIN_POS -1
- #define E7_SLEW_RATE 1
- #endif
-
- /**
- * Monitor L6470 drivers for error conditions like over temperature and over current.
- * In the case of over temperature Marlin can decrease the drive until the error condition clears.
- * Other detected conditions can be used to stop the current print.
- * Relevant G-codes:
- * M906 - I1/2/3/4/5 Set or get motor drive level using axis codes X, Y, Z, E. Report values if no axis codes given.
- * I not present or I0 or I1 - X, Y, Z or E0
- * I2 - X2, Y2, Z2 or E1
- * I3 - Z3 or E3
- * I4 - Z4 or E4
- * I5 - E5
- * M916 - Increase drive level until get thermal warning
- * M917 - Find minimum current thresholds
- * M918 - Increase speed until max or error
- * M122 S0/1 - Report driver parameters
- */
- //#define MONITOR_L6470_DRIVER_STATUS
-
- #if ENABLED(MONITOR_L6470_DRIVER_STATUS)
- #define KVAL_HOLD_STEP_DOWN 1
- //#define L6470_STOP_ON_ERROR
- #endif
-
-#endif // HAS_L64XX
-
-// @section i2cbus
-
-//
-// I2C Master ID for LPC176x LCD and Digital Current control
-// Does not apply to other peripherals based on the Wire library.
-//
-//#define I2C_MASTER_ID 1 // Set a value from 0 to 2
-
-/**
- * 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 M260 commands with one B arg
- * M260 A99 ; Target slave address
- * M260 B77 ; M
- * M260 B97 ; a
- * M260 B114 ; r
- * M260 B108 ; l
- * M260 B105 ; i
- * M260 B110 ; n
- * M260 S1 ; Send the current buffer
- *
- * ; Example #2
- * ; Request 6 bytes from slave device with address 0x63 (99)
- * M261 A99 B5
- *
- * ; Example #3
- * ; Example serial output of a M261 request
- * echo:i2c-reply: from:99 bytes:5 data:hello
- */
-
-//#define EXPERIMENTAL_I2CBUS
-#if ENABLED(EXPERIMENTAL_I2CBUS)
- #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
-#endif
-
-// @section extras
-
-/**
- * Photo G-code
- * Add the M240 G-code to take a photo.
- * The photo can be triggered by a digital pin or a physical movement.
- */
-//#define PHOTO_GCODE
-#if ENABLED(PHOTO_GCODE)
- // A position to move to (and raise Z) before taking the photo
- //#define PHOTO_POSITION { X_MAX_POS - 5, Y_MAX_POS, 0 } // { xpos, ypos, zraise } (M240 X Y Z)
- //#define PHOTO_DELAY_MS 100 // (ms) Duration to pause before moving back (M240 P)
- //#define PHOTO_RETRACT_MM 6.5 // (mm) E retract/recover for the photo move (M240 R S)
-
- // Canon RC-1 or homebrew digital camera trigger
- // Data from: https://www.doc-diy.net/photo/rc-1_hacked/
- //#define PHOTOGRAPH_PIN 23
-
- // Canon Hack Development Kit
- // https://captain-slow.dk/2014/03/09/3d-printing-timelapses/
- //#define CHDK_PIN 4
-
- // Optional second move with delay to trigger the camera shutter
- //#define PHOTO_SWITCH_POSITION { X_MAX_POS, Y_MAX_POS } // { xpos, ypos } (M240 I J)
-
- // Duration to hold the switch or keep CHDK_PIN high
- //#define PHOTO_SWITCH_MS 50 // (ms) (M240 D)
-
- /**
- * PHOTO_PULSES_US may need adjustment depending on board and camera model.
- * Pin must be running at 48.4kHz.
- * Be sure to use a PHOTOGRAPH_PIN which can rise and fall quick enough.
- * (e.g., MKS SBase temp sensor pin was too slow, so used P1.23 on J8.)
- *
- * Example pulse data for Nikon: https://bit.ly/2FKD0Aq
- * IR Wiring: https://git.io/JvJf7
- */
- //#define PHOTO_PULSES_US { 2000, 27850, 400, 1580, 400, 3580, 400 } // (µs) Durations for each 48.4kHz oscillation
- #ifdef PHOTO_PULSES_US
- #define PHOTO_PULSE_DELAY_US 13 // (µs) Approximate duration of each HIGH and LOW pulse in the oscillation
- #endif
-#endif
-
-/**
- * Spindle & Laser control
- *
- * Add the M3, M4, and M5 commands to turn the spindle/laser on and off, and
- * to set spindle speed, spindle direction, and laser power.
- *
- * SuperPid is a router/spindle speed controller used in the CNC milling community.
- * Marlin can be used to turn the spindle on and off. It can also be used to set
- * the spindle speed from 5,000 to 30,000 RPM.
- *
- * You'll need to select a pin for the ON/OFF function and optionally choose a 0-5V
- * hardware PWM pin for the speed control and a pin for the rotation direction.
- *
- * See https://marlinfw.org/docs/configuration/2.0.9/laser_spindle.html for more config details.
- */
-//#define SPINDLE_FEATURE
-//#define LASER_FEATURE
-#if EITHER(SPINDLE_FEATURE, LASER_FEATURE)
- #define SPINDLE_LASER_ACTIVE_STATE LOW // Set to "HIGH" if SPINDLE_LASER_ENA_PIN is active HIGH
-
- #define SPINDLE_LASER_USE_PWM // Enable if your controller supports setting the speed/power
- #if ENABLED(SPINDLE_LASER_USE_PWM)
- #define SPINDLE_LASER_PWM_INVERT false // Set to "true" if the speed/power goes up when you want it to go slower
- #define SPINDLE_LASER_FREQUENCY 2500 // (Hz) Spindle/laser frequency (only on supported HALs: AVR, ESP32, and LPC)
- // ESP32: If SPINDLE_LASER_PWM_PIN is onboard then <=78125Hz. For I2S expander
- // the frequency determines the PWM resolution. 2500Hz = 0-100, 977Hz = 0-255, ...
- // (250000 / SPINDLE_LASER_FREQUENCY) = max value.
- #endif
-
- //#define AIR_EVACUATION // Cutter Vacuum / Laser Blower motor control with G-codes M10-M11
- #if ENABLED(AIR_EVACUATION)
- #define AIR_EVACUATION_ACTIVE LOW // Set to "HIGH" if the on/off function is active HIGH
- //#define AIR_EVACUATION_PIN 42 // Override the default Cutter Vacuum or Laser Blower pin
- #endif
-
- //#define AIR_ASSIST // Air Assist control with G-codes M8-M9
- #if ENABLED(AIR_ASSIST)
- #define AIR_ASSIST_ACTIVE LOW // Active state on air assist pin
- //#define AIR_ASSIST_PIN 44 // Override the default Air Assist pin
- #endif
-
- //#define SPINDLE_SERVO // A servo converting an angle to spindle power
- #ifdef SPINDLE_SERVO
- #define SPINDLE_SERVO_NR 0 // Index of servo used for spindle control
- #define SPINDLE_SERVO_MIN 10 // Minimum angle for servo spindle
- #endif
-
- /**
- * Speed / Power can be set ('M3 S') and displayed in terms of:
- * - PWM255 (S0 - S255)
- * - PERCENT (S0 - S100)
- * - RPM (S0 - S50000) Best for use with a spindle
- * - SERVO (S0 - S180)
- */
- #define CUTTER_POWER_UNIT PWM255
-
- /**
- * Relative Cutter Power
- * Normally, 'M3 O' sets
- * OCR power is relative to the range SPEED_POWER_MIN...SPEED_POWER_MAX.
- * so input powers of 0...255 correspond to SPEED_POWER_MIN...SPEED_POWER_MAX
- * instead of normal range (0 to SPEED_POWER_MAX).
- * Best used with (e.g.) SuperPID router controller: S0 = 5,000 RPM and S255 = 30,000 RPM
- */
- //#define CUTTER_POWER_RELATIVE // Set speed proportional to [SPEED_POWER_MIN...SPEED_POWER_MAX]
-
- #if ENABLED(SPINDLE_FEATURE)
- //#define SPINDLE_CHANGE_DIR // Enable if your spindle controller can change spindle direction
- #define SPINDLE_CHANGE_DIR_STOP // Enable if the spindle should stop before changing spin direction
- #define SPINDLE_INVERT_DIR false // Set to "true" if the spin direction is reversed
-
- #define SPINDLE_LASER_POWERUP_DELAY 5000 // (ms) Delay to allow the spindle/laser to come up to speed/power
- #define SPINDLE_LASER_POWERDOWN_DELAY 5000 // (ms) Delay to allow the spindle to stop
-
- /**
- * M3/M4 Power Equation
- *
- * Each tool uses different value ranges for speed / power control.
- * These parameters are used to convert between tool power units and PWM.
- *
- * Speed/Power = (PWMDC / 255 * 100 - SPEED_POWER_INTERCEPT) / SPEED_POWER_SLOPE
- * PWMDC = (spdpwr - SPEED_POWER_MIN) / (SPEED_POWER_MAX - SPEED_POWER_MIN) / SPEED_POWER_SLOPE
- */
- #if ENABLED(SPINDLE_LASER_USE_PWM)
- #define SPEED_POWER_INTERCEPT 0 // (%) 0-100 i.e., Minimum power percentage
- #define SPEED_POWER_MIN 5000 // (RPM)
- #define SPEED_POWER_MAX 30000 // (RPM) SuperPID router controller 0 - 30,000 RPM
- #define SPEED_POWER_STARTUP 25000 // (RPM) M3/M4 speed/power default (with no arguments)
- #endif
-
- #else
-
- #if ENABLED(SPINDLE_LASER_USE_PWM)
- #define SPEED_POWER_INTERCEPT 0 // (%) 0-100 i.e., Minimum power percentage
- #define SPEED_POWER_MIN 0 // (%) 0-100
- #define SPEED_POWER_MAX 100 // (%) 0-100
- #define SPEED_POWER_STARTUP 80 // (%) M3/M4 speed/power default (with no arguments)
- #endif
-
- // Define the minimum and maximum test pulse time values for a laser test fire function
- #define LASER_TEST_PULSE_MIN 1 // (ms) Used with Laser Control Menu
- #define LASER_TEST_PULSE_MAX 999 // (ms) Caution: Menu may not show more than 3 characters
-
- #define SPINDLE_LASER_POWERUP_DELAY 50 // (ms) Delay to allow the spindle/laser to come up to speed/power
- #define SPINDLE_LASER_POWERDOWN_DELAY 50 // (ms) Delay to allow the spindle to stop
-
- /**
- * Laser Safety Timeout
- *
- * The laser should be turned off when there is no movement for a period of time.
- * Consider material flammability, cut rate, and G-code order when setting this
- * value. Too low and it could turn off during a very slow move; too high and
- * the material could ignite.
- */
- #define LASER_SAFETY_TIMEOUT_MS 1000 // (ms)
-
- /**
- * Any M3 or G1/2/3/5 command with the 'I' parameter enables continuous inline power mode.
- *
- * e.g., 'M3 I' enables continuous inline power which is processed by the planner.
- * Power is stored in move blocks and applied when blocks are processed by the Stepper ISR.
- *
- * 'M4 I' sets dynamic mode which uses the current feedrate to calculate a laser power OCR value.
- *
- * Any move in dynamic mode will use the current feedrate to calculate the laser power.
- * Feed rates are set by the F parameter of a move command e.g. G1 X0 Y10 F6000
- * Laser power would be calculated by bit shifting off 8 LSB's. In binary this is div 256.
- * The calculation gives us ocr values from 0 to 255, values over F65535 will be set as 255 .
- * More refined power control such as compesation for accell/decell will be addressed in future releases.
- *
- * M5 I clears inline mode and set power to 0, M5 sets the power output to 0 but leaves inline mode on.
- */
-
- /**
- * Enable M3 commands for laser mode inline power planner syncing.
- * This feature enables any M3 S-value to be injected into the block buffers while in
- * CUTTER_MODE_CONTINUOUS. The option allows M3 laser power to be commited without waiting
- * for a planner syncronization
- */
- //#define LASER_POWER_SYNC
-
- /**
- * Scale the laser's power in proportion to the movement rate.
- *
- * - Sets the entry power proportional to the entry speed over the nominal speed.
- * - Ramps the power up every N steps to approximate the speed trapezoid.
- * - Due to the limited power resolution this is only approximate.
- */
- //#define LASER_POWER_TRAP
-
- //
- // Laser I2C Ammeter (High precision INA226 low/high side module)
- //
- //#define I2C_AMMETER
- #if ENABLED(I2C_AMMETER)
- #define I2C_AMMETER_IMAX 0.1 // (Amps) Calibration value for the expected current range
- #define I2C_AMMETER_SHUNT_RESISTOR 0.1 // (Ohms) Calibration shunt resistor value
- #endif
-
- //
- // Laser Coolant Flow Meter
- //
- //#define LASER_COOLANT_FLOW_METER
- #if ENABLED(LASER_COOLANT_FLOW_METER)
- #define FLOWMETER_PIN 20 // Requires an external interrupt-enabled pin (e.g., RAMPS 2,3,18,19,20,21)
- #define FLOWMETER_PPL 5880 // (pulses/liter) Flow meter pulses-per-liter on the input pin
- #define FLOWMETER_INTERVAL 1000 // (ms) Flow rate calculation interval in milliseconds
- #define FLOWMETER_SAFETY // Prevent running the laser without the minimum flow rate set below
- #if ENABLED(FLOWMETER_SAFETY)
- #define FLOWMETER_MIN_LITERS_PER_MINUTE 1.5 // (liters/min) Minimum flow required when enabled
- #endif
- #endif
-
- #endif
-#endif // SPINDLE_FEATURE || LASER_FEATURE
-
-/**
- * Synchronous Laser Control with M106/M107
- *
- * Marlin normally applies M106/M107 fan speeds at a time "soon after" processing
- * a planner block. This is too inaccurate for a PWM/TTL laser attached to the fan
- * header (as with some add-on laser kits). Enable this option to set fan/laser
- * speeds with much more exact timing for improved print fidelity.
- *
- * NOTE: This option sacrifices some cooling fan speed options.
- */
-//#define LASER_SYNCHRONOUS_M106_M107
-
-/**
- * Coolant Control
- *
- * Add the M7, M8, and M9 commands to turn mist or flood coolant on and off.
- *
- * Note: COOLANT_MIST_PIN and/or COOLANT_FLOOD_PIN must also be defined.
- */
-//#define COOLANT_CONTROL
-#if ENABLED(COOLANT_CONTROL)
- #define COOLANT_MIST // Enable if mist coolant is present
- #define COOLANT_FLOOD // Enable if flood coolant is present
- #define COOLANT_MIST_INVERT false // Set "true" if the on/off function is reversed
- #define COOLANT_FLOOD_INVERT false // Set "true" if the on/off function is reversed
-#endif
-
-/**
- * Filament Width Sensor
- *
- * Measures the filament width in real-time and adjusts
- * flow rate to compensate for any irregularities.
- *
- * Also allows the measured filament diameter to set the
- * extrusion rate, so the slicer only has to specify the
- * volume.
- *
- * Only a single extruder is supported at this time.
- *
- * 34 RAMPS_14 : Analog input 5 on the AUX2 connector
- * 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E)
- * 301 RAMBO : Analog input 3
- *
- * Note: May require analog pins to be defined for other boards.
- */
-//#define FILAMENT_WIDTH_SENSOR
-
-#if ENABLED(FILAMENT_WIDTH_SENSOR)
- #define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor. :[0,1,2,3,4]
- #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber
-
- #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it
- #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM.
-
- #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially
-
- // Display filament width on the LCD status line. Status messages will expire after 5 seconds.
- //#define FILAMENT_LCD_DISPLAY
-#endif
-
-/**
- * Power Monitor
- * Monitor voltage (V) and/or current (A), and -when possible- power (W)
- *
- * Read and configure with M430
- *
- * The current sensor feeds DC voltage (relative to the measured current) to an analog pin
- * The voltage sensor feeds DC voltage (relative to the measured voltage) to an analog pin
- */
-//#define POWER_MONITOR_CURRENT // Monitor the system current
-//#define POWER_MONITOR_VOLTAGE // Monitor the system voltage
-
-#if ENABLED(POWER_MONITOR_CURRENT)
- #define POWER_MONITOR_VOLTS_PER_AMP 0.05000 // Input voltage to the MCU analog pin per amp - DO NOT apply more than ADC_VREF!
- #define POWER_MONITOR_CURRENT_OFFSET 0 // Offset (in amps) applied to the calculated current
- #define POWER_MONITOR_FIXED_VOLTAGE 13.6 // Voltage for a current sensor with no voltage sensor (for power display)
-#endif
-
-#if ENABLED(POWER_MONITOR_VOLTAGE)
- #define POWER_MONITOR_VOLTS_PER_VOLT 0.077933 // Input voltage to the MCU analog pin per volt - DO NOT apply more than ADC_VREF!
- #define POWER_MONITOR_VOLTAGE_OFFSET 0 // Offset (in volts) applied to the calculated voltage
-#endif
-
-/**
- * Stepper Driver Anti-SNAFU Protection
- *
- * If the SAFE_POWER_PIN is defined for your board, Marlin will check
- * that stepper drivers are properly plugged in before applying power.
- * Disable protection if your stepper drivers don't support the feature.
- */
-//#define DISABLE_DRIVER_SAFE_POWER_PROTECT
-
-/**
- * CNC Coordinate Systems
- *
- * Enables G53 and G54-G59.3 commands to select coordinate systems
- * and G92.1 to reset the workspace to native machine space.
- */
-//#define CNC_COORDINATE_SYSTEMS
-
-/**
- * Auto-report fan speed with M123 S
- * Requires fans with tachometer pins
- */
-//#define AUTO_REPORT_FANS
-
-/**
- * Auto-report temperatures with M155 S
- */
-#define AUTO_REPORT_TEMPERATURES
-#if ENABLED(AUTO_REPORT_TEMPERATURES) && TEMP_SENSOR_REDUNDANT
- //#define AUTO_REPORT_REDUNDANT // Include the "R" sensor in the auto-report
-#endif
-
-/**
- * Auto-report position with M154 S
- */
-//#define AUTO_REPORT_POSITION
-
-/**
- * Include capabilities in M115 output
- */
-#define EXTENDED_CAPABILITIES_REPORT
-#if ENABLED(EXTENDED_CAPABILITIES_REPORT)
- //#define M115_GEOMETRY_REPORT
-#endif
-
-/**
- * Expected Printer Check
- * Add the M16 G-code to compare a string to the MACHINE_NAME.
- * M16 with a non-matching string causes the printer to halt.
- */
-//#define EXPECTED_PRINTER_CHECK
-
-/**
- * Disable all Volumetric extrusion options
- */
-//#define NO_VOLUMETRICS
-
-#if DISABLED(NO_VOLUMETRICS)
- /**
- * Volumetric extrusion default state
- * Activate to make volumetric extrusion the default method,
- * with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter.
- *
- * M200 D0 to disable, M200 Dn to set a new diameter (and enable volumetric).
- * M200 S0/S1 to disable/enable volumetric extrusion.
- */
- //#define VOLUMETRIC_DEFAULT_ON
-
- //#define VOLUMETRIC_EXTRUDER_LIMIT
- #if ENABLED(VOLUMETRIC_EXTRUDER_LIMIT)
- /**
- * Default volumetric extrusion limit in cubic mm per second (mm^3/sec).
- * This factory setting applies to all extruders.
- * Use 'M200 [T] L' to override and 'M502' to reset.
- * A non-zero value activates Volume-based Extrusion Limiting.
- */
- #define DEFAULT_VOLUMETRIC_EXTRUDER_LIMIT 0.00 // (mm^3/sec)
- #endif
-#endif
-
-/**
- * Enable this option for a leaner build of Marlin that removes all
- * workspace offsets, simplifying coordinate transformations, leveling, etc.
- *
- * - M206 and M428 are disabled.
- * - G92 will revert to its behavior from Marlin 1.0.
- */
-//#define NO_WORKSPACE_OFFSETS
-
-// Extra options for the M114 "Current Position" report
-//#define M114_DETAIL // Use 'M114` for details to check planner calculations
-//#define M114_REALTIME // Real current position based on forward kinematics
-//#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed.
-
-//#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others)
-
-/**
- * Spend 28 bytes of SRAM to optimize the G-code parser
- */
-#define FASTER_GCODE_PARSER
-
-#if ENABLED(FASTER_GCODE_PARSER)
- //#define GCODE_QUOTED_STRINGS // Support for quoted string parameters
-#endif
-
-// Support for MeatPack G-code compression (https://github.com/scottmudge/OctoPrint-MeatPack)
-//#define MEATPACK_ON_SERIAL_PORT_1
-//#define MEATPACK_ON_SERIAL_PORT_2
-
-//#define GCODE_CASE_INSENSITIVE // Accept G-code sent to the firmware in lowercase
-
-//#define REPETIER_GCODE_M360 // Add commands originally from Repetier FW
-
-/**
- * CNC G-code options
- * Support CNC-style G-code dialects used by laser cutters, drawing machine cams, etc.
- * Note that G0 feedrates should be used with care for 3D printing (if used at all).
- * High feedrates may cause ringing and harm print quality.
- */
-//#define PAREN_COMMENTS // Support for parentheses-delimited comments
-//#define GCODE_MOTION_MODES // Remember the motion mode (G0 G1 G2 G3 G5 G38.X) and apply for X Y Z E F, etc.
-
-// Enable and set a (default) feedrate for all G0 moves
-//#define G0_FEEDRATE 3000 // (mm/min)
-#ifdef G0_FEEDRATE
- //#define VARIABLE_G0_FEEDRATE // The G0 feedrate is set by F in G0 motion mode
-#endif
-
-/**
- * Startup commands
- *
- * Execute certain G-code commands immediately after power-on.
- */
-//#define STARTUP_COMMANDS "M17 Z"
-
-/**
- * G-code Macros
- *
- * Add G-codes M810-M819 to define and run G-code macros.
- * Macros are not saved to EEPROM.
- */
-//#define GCODE_MACROS
-#if ENABLED(GCODE_MACROS)
- #define GCODE_MACROS_SLOTS 5 // Up to 10 may be used
- #define GCODE_MACROS_SLOT_SIZE 50 // Maximum length of a single macro
-#endif
-
-/**
- * User-defined menu items to run custom G-code.
- * Up to 25 may be defined, but the actual number is LCD-dependent.
- */
-
-// Custom Menu: Main Menu
-//#define CUSTOM_MENU_MAIN
-#if ENABLED(CUSTOM_MENU_MAIN)
- //#define CUSTOM_MENU_MAIN_TITLE "Custom Commands"
- #define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done"
- #define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK
- //#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script
- #define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle
-
- #define MAIN_MENU_ITEM_1_DESC "Home & UBL Info"
- #define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W"
- //#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
-
- #define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL
- #define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
- //#define MAIN_MENU_ITEM_2_CONFIRM
-
- //#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL
- //#define MAIN_MENU_ITEM_3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
- //#define MAIN_MENU_ITEM_3_CONFIRM
-
- //#define MAIN_MENU_ITEM_4_DESC "Heat Bed/Home/Level"
- //#define MAIN_MENU_ITEM_4_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
- //#define MAIN_MENU_ITEM_4_CONFIRM
-
- //#define MAIN_MENU_ITEM_5_DESC "Home & Info"
- //#define MAIN_MENU_ITEM_5_GCODE "G28\nM503"
- //#define MAIN_MENU_ITEM_5_CONFIRM
-#endif
-
-// Custom Menu: Configuration Menu
-//#define CUSTOM_MENU_CONFIG
-#if ENABLED(CUSTOM_MENU_CONFIG)
- //#define CUSTOM_MENU_CONFIG_TITLE "Custom Commands"
- #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M117 Wireless Script Done"
- #define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK
- //#define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script
- #define CUSTOM_MENU_CONFIG_ONLY_IDLE // Only show custom menu when the machine is idle
-
- #define CONFIG_MENU_ITEM_1_DESC "Wifi ON"
- #define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678"
- //#define CONFIG_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
-
- #define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON"
- #define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678"
- //#define CONFIG_MENU_ITEM_2_CONFIRM
-
- //#define CONFIG_MENU_ITEM_3_DESC "Radio OFF"
- //#define CONFIG_MENU_ITEM_3_GCODE "M118 [ESP110] OFF pwd=12345678"
- //#define CONFIG_MENU_ITEM_3_CONFIRM
-
- //#define CONFIG_MENU_ITEM_4_DESC "Wifi ????"
- //#define CONFIG_MENU_ITEM_4_GCODE "M118 ????"
- //#define CONFIG_MENU_ITEM_4_CONFIRM
-
- //#define CONFIG_MENU_ITEM_5_DESC "Wifi ????"
- //#define CONFIG_MENU_ITEM_5_GCODE "M118 ????"
- //#define CONFIG_MENU_ITEM_5_CONFIRM
-#endif
-
-/**
- * User-defined buttons to run custom G-code.
- * Up to 25 may be defined.
- */
-//#define CUSTOM_USER_BUTTONS
-#if ENABLED(CUSTOM_USER_BUTTONS)
- //#define BUTTON1_PIN -1
- #if PIN_EXISTS(BUTTON1)
- #define BUTTON1_HIT_STATE LOW // State of the triggered button. NC=LOW. NO=HIGH.
- #define BUTTON1_WHEN_PRINTING false // Button allowed to trigger during printing?
- #define BUTTON1_GCODE "G28"
- #define BUTTON1_DESC "Homing" // Optional string to set the LCD status
- #endif
-
- //#define BUTTON2_PIN -1
- #if PIN_EXISTS(BUTTON2)
- #define BUTTON2_HIT_STATE LOW
- #define BUTTON2_WHEN_PRINTING false
- #define BUTTON2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
- #define BUTTON2_DESC "Preheat for " PREHEAT_1_LABEL
- #endif
-
- //#define BUTTON3_PIN -1
- #if PIN_EXISTS(BUTTON3)
- #define BUTTON3_HIT_STATE LOW
- #define BUTTON3_WHEN_PRINTING false
- #define BUTTON3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
- #define BUTTON3_DESC "Preheat for " PREHEAT_2_LABEL
- #endif
-#endif
-
-/**
- * Host Action Commands
- *
- * Define host streamer action commands in compliance with the standard.
- *
- * See https://reprap.org/wiki/G-code#Action_commands
- * Common commands ........ poweroff, pause, paused, resume, resumed, cancel
- * G29_RETRY_AND_RECOVER .. probe_rewipe, probe_failed
- *
- * Some features add reason codes to extend these commands.
- *
- * Host Prompt Support enables Marlin to use the host for user prompts so
- * filament runout and other processes can be managed from the host side.
- */
-//#define HOST_ACTION_COMMANDS
-#if ENABLED(HOST_ACTION_COMMANDS)
- //#define HOST_PAUSE_M76 // Tell the host to pause in response to M76
- //#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback
- #if ENABLED(HOST_PROMPT_SUPPORT)
- //#define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications
- #endif
- //#define HOST_START_MENU_ITEM // Add a menu item that tells the host to start
- //#define HOST_SHUTDOWN_MENU_ITEM // Add a menu item that tells the host to shut down
-#endif
-
-/**
- * Cancel Objects
- *
- * Implement M486 to allow Marlin to skip objects
- */
-//#define CANCEL_OBJECTS
-#if ENABLED(CANCEL_OBJECTS)
- #define CANCEL_OBJECTS_REPORTING // Emit the current object as a status message
-#endif
-
-/**
- * I2C position encoders for closed loop control.
- * Developed by Chris Barr at Aus3D.
- *
- * Wiki: https://wiki.aus3d.com.au/Magnetic_Encoder
- * Github: https://github.com/Aus3D/MagneticEncoder
- *
- * Supplier: https://aus3d.com.au/magnetic-encoder-module
- * Alternative Supplier: https://reliabuild3d.com/
- *
- * Reliabuild encoders have been modified to improve reliability.
- */
-
-//#define I2C_POSITION_ENCODERS
-#if ENABLED(I2C_POSITION_ENCODERS)
-
- #define I2CPE_ENCODER_CNT 1 // The number of encoders installed; max of 5
- // encoders supported currently.
-
- #define I2CPE_ENC_1_ADDR I2CPE_PRESET_ADDR_X // I2C address of the encoder. 30-200.
- #define I2CPE_ENC_1_AXIS X_AXIS // Axis the encoder module is installed on. _AXIS.
- #define I2CPE_ENC_1_TYPE I2CPE_ENC_TYPE_LINEAR // Type of encoder: I2CPE_ENC_TYPE_LINEAR -or-
- // I2CPE_ENC_TYPE_ROTARY.
- #define I2CPE_ENC_1_TICKS_UNIT 2048 // 1024 for magnetic strips with 2mm poles; 2048 for
- // 1mm poles. For linear encoders this is ticks / mm,
- // for rotary encoders this is ticks / revolution.
- //#define I2CPE_ENC_1_TICKS_REV (16 * 200) // Only needed for rotary encoders; number of stepper
- // steps per full revolution (motor steps/rev * microstepping)
- //#define I2CPE_ENC_1_INVERT // Invert the direction of axis travel.
- #define I2CPE_ENC_1_EC_METHOD I2CPE_ECM_MICROSTEP // Type of error error correction.
- #define I2CPE_ENC_1_EC_THRESH 0.10 // Threshold size for error (in mm) above which the
- // printer will attempt to correct the error; errors
- // smaller than this are ignored to minimize effects of
- // measurement noise / latency (filter).
-
- #define I2CPE_ENC_2_ADDR I2CPE_PRESET_ADDR_Y // Same as above, but for encoder 2.
- #define I2CPE_ENC_2_AXIS Y_AXIS
- #define I2CPE_ENC_2_TYPE I2CPE_ENC_TYPE_LINEAR
- #define I2CPE_ENC_2_TICKS_UNIT 2048
- //#define I2CPE_ENC_2_TICKS_REV (16 * 200)
- //#define I2CPE_ENC_2_INVERT
- #define I2CPE_ENC_2_EC_METHOD I2CPE_ECM_MICROSTEP
- #define I2CPE_ENC_2_EC_THRESH 0.10
-
- #define I2CPE_ENC_3_ADDR I2CPE_PRESET_ADDR_Z // Encoder 3. Add additional configuration options
- #define I2CPE_ENC_3_AXIS Z_AXIS // as above, or use defaults below.
-
- #define I2CPE_ENC_4_ADDR I2CPE_PRESET_ADDR_E // Encoder 4.
- #define I2CPE_ENC_4_AXIS E_AXIS
-
- #define I2CPE_ENC_5_ADDR 34 // Encoder 5.
- #define I2CPE_ENC_5_AXIS E_AXIS
-
- // Default settings for encoders which are enabled, but without settings configured above.
- #define I2CPE_DEF_TYPE I2CPE_ENC_TYPE_LINEAR
- #define I2CPE_DEF_ENC_TICKS_UNIT 2048
- #define I2CPE_DEF_TICKS_REV (16 * 200)
- #define I2CPE_DEF_EC_METHOD I2CPE_ECM_NONE
- #define I2CPE_DEF_EC_THRESH 0.1
-
- //#define I2CPE_ERR_THRESH_ABORT 100.0 // Threshold size for error (in mm) error on any given
- // axis after which the printer will abort. Comment out to
- // disable abort behavior.
-
- #define I2CPE_TIME_TRUSTED 10000 // After an encoder fault, there must be no further fault
- // for this amount of time (in ms) before the encoder
- // is trusted again.
-
- /**
- * Position is checked every time a new command is executed from the buffer but during long moves,
- * this setting determines the minimum update time between checks. A value of 100 works well with
- * error rolling average when attempting to correct only for skips and not for vibration.
- */
- #define I2CPE_MIN_UPD_TIME_MS 4 // (ms) Minimum time between encoder checks.
-
- // Use a rolling average to identify persistent errors that indicate skips, as opposed to vibration and noise.
- #define I2CPE_ERR_ROLLING_AVERAGE
-
-#endif // I2C_POSITION_ENCODERS
-
-/**
- * Analog Joystick(s)
- */
-//#define JOYSTICK
-#if ENABLED(JOYSTICK)
- #define JOY_X_PIN 5 // RAMPS: Suggested pin A5 on AUX2
- #define JOY_Y_PIN 10 // RAMPS: Suggested pin A10 on AUX2
- #define JOY_Z_PIN 12 // RAMPS: Suggested pin A12 on AUX2
- #define JOY_EN_PIN 44 // RAMPS: Suggested pin D44 on AUX2
-
- //#define INVERT_JOY_X // Enable if X direction is reversed
- //#define INVERT_JOY_Y // Enable if Y direction is reversed
- //#define INVERT_JOY_Z // Enable if Z direction is reversed
-
- // Use M119 with JOYSTICK_DEBUG to find reasonable values after connecting:
- #define JOY_X_LIMITS { 5600, 8190-100, 8190+100, 10800 } // min, deadzone start, deadzone end, max
- #define JOY_Y_LIMITS { 5600, 8250-100, 8250+100, 11000 }
- #define JOY_Z_LIMITS { 4800, 8080-100, 8080+100, 11550 }
- //#define JOYSTICK_DEBUG
-#endif
-
-/**
- * Mechanical Gantry Calibration
- * Modern replacement for the Prusa TMC_Z_CALIBRATION.
- * Adds capability to work with any adjustable current drivers.
- * Implemented as G34 because M915 is deprecated.
- */
-//#define MECHANICAL_GANTRY_CALIBRATION
-#if ENABLED(MECHANICAL_GANTRY_CALIBRATION)
- #define GANTRY_CALIBRATION_CURRENT 600 // Default calibration current in ma
- #define GANTRY_CALIBRATION_EXTRA_HEIGHT 15 // Extra distance in mm past Z_###_POS to move
- #define GANTRY_CALIBRATION_FEEDRATE 500 // Feedrate for correction move
- //#define GANTRY_CALIBRATION_TO_MIN // Enable to calibrate Z in the MIN direction
-
- //#define GANTRY_CALIBRATION_SAFE_POSITION XY_CENTER // Safe position for nozzle
- //#define GANTRY_CALIBRATION_XY_PARK_FEEDRATE 3000 // XY Park Feedrate - MMM
- //#define GANTRY_CALIBRATION_COMMANDS_PRE ""
- #define GANTRY_CALIBRATION_COMMANDS_POST "G28" // G28 highly recommended to ensure an accurate position
-#endif
-
-/**
- * Instant freeze / unfreeze functionality
- * Potentially useful for emergency stop that allows being resumed.
- */
-//#define FREEZE_FEATURE
-#if ENABLED(FREEZE_FEATURE)
- //#define FREEZE_PIN 41 // Override the default (KILL) pin here
- #define FREEZE_STATE LOW // State of pin indicating freeze
-#endif
-
-/**
- * MAX7219 Debug Matrix
- *
- * Add support for a low-cost 8x8 LED Matrix based on the Max7219 chip as a realtime status display.
- * Requires 3 signal wires. Some useful debug options are included to demonstrate its usage.
- */
-//#define MAX7219_DEBUG
-#if ENABLED(MAX7219_DEBUG)
- #define MAX7219_CLK_PIN 64
- #define MAX7219_DIN_PIN 57
- #define MAX7219_LOAD_PIN 44
-
- //#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
- #define MAX7219_INIT_TEST 2 // Test pattern at startup: 0=none, 1=sweep, 2=spiral
- #define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
- #define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
- // connector at: right=0 bottom=-90 top=90 left=180
- //#define MAX7219_REVERSE_ORDER // The individual LED matrix units may be in reversed order
- //#define MAX7219_SIDE_BY_SIDE // Big chip+matrix boards can be chained side-by-side
-
- /**
- * Sample debug features
- * If you add more debug displays, be careful to avoid conflicts!
- */
- #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning
- #define MAX7219_DEBUG_PLANNER_HEAD 3 // Show the planner queue head position on this and the next LED matrix row
- #define MAX7219_DEBUG_PLANNER_TAIL 5 // Show the planner queue tail position on this and the next LED matrix row
-
- #define MAX7219_DEBUG_PLANNER_QUEUE 0 // Show the current planner queue depth on this and the next LED matrix row
- // If you experience stuttering, reboots, etc. this option can reveal how
- // tweaks made to the configuration are affecting the printer in real-time.
-#endif
-
-/**
- * NanoDLP Sync support
- *
- * Support for Synchronized Z moves when used with NanoDLP. G0/G1 axis moves will
- * output a "Z_move_comp" string to enable synchronization with DLP projector exposure.
- * This feature allows you to use [[WaitForDoneMessage]] instead of M400 commands.
- */
-//#define NANODLP_Z_SYNC
-#if ENABLED(NANODLP_Z_SYNC)
- //#define NANODLP_ALL_AXIS // Send a "Z_move_comp" report for any axis move (not just Z).
-#endif
-
-/**
- * Ethernet. Use M552 to enable and set the IP address.
- */
-#if HAS_ETHERNET
- #define MAC_ADDRESS { 0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0x0D } // A MAC address unique to your network
-#endif
-
-/**
- * WiFi Support (Espressif ESP32 WiFi)
- */
-//#define WIFISUPPORT // Marlin embedded WiFi managenent
-//#define ESP3D_WIFISUPPORT // ESP3D Library WiFi management (https://github.com/luc-github/ESP3DLib)
-
-#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
- //#define WEBSUPPORT // Start a webserver (which may include auto-discovery)
- //#define OTASUPPORT // Support over-the-air firmware updates
- //#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host
-
- /**
- * To set a default WiFi SSID / Password, create a file called Configuration_Secure.h with
- * the following defines, customized for your network. This specific file is excluded via
- * .gitignore to prevent it from accidentally leaking to the public.
- *
- * #define WIFI_SSID "WiFi SSID"
- * #define WIFI_PWD "WiFi Password"
- */
- //#include "Configuration_Secure.h" // External file with WiFi SSID / Password
-#endif
-
-/**
- * Průša Multi-Material Unit (MMU)
- * Enable in Configuration.h
- *
- * These devices allow a single stepper driver on the board to drive
- * multi-material feeders with any number of stepper motors.
- */
-#if HAS_PRUSA_MMU1
- /**
- * This option only allows the multiplexer to switch on tool-change.
- * Additional options to configure custom E moves are pending.
- *
- * Override the default DIO selector pins here, if needed.
- * Some pins files may provide defaults for these pins.
- */
- //#define E_MUX0_PIN 40 // Always Required
- //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs
- //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs
-#elif HAS_PRUSA_MMU2
- // Serial port used for communication with MMU2.
- #define MMU2_SERIAL_PORT 2
-
- // Use hardware reset for MMU if a pin is defined for it
- //#define MMU2_RST_PIN 23
-
- // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
- //#define MMU2_MODE_12V
-
- // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
- #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
-
- // Add an LCD menu for MMU2
- //#define MMU2_MENUS
- #if EITHER(MMU2_MENUS, HAS_PRUSA_MMU2S)
- // Settings for filament load / unload from the LCD menu.
- // This is for Průša MK3-style extruders. Customize for your hardware.
- #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
- #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
- { 7.2, 1145 }, \
- { 14.4, 871 }, \
- { 36.0, 1393 }, \
- { 14.4, 871 }, \
- { 50.0, 198 }
-
- #define MMU2_RAMMING_SEQUENCE \
- { 1.0, 1000 }, \
- { 1.0, 1500 }, \
- { 2.0, 2000 }, \
- { 1.5, 3000 }, \
- { 2.5, 4000 }, \
- { -15.0, 5000 }, \
- { -14.0, 1200 }, \
- { -6.0, 600 }, \
- { 10.0, 700 }, \
- { -10.0, 400 }, \
- { -50.0, 2000 }
- #endif
-
- /**
- * Using a sensor like the MMU2S
- * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S.
- * See https://help.prusa3d.com/en/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560, step 11
- */
- #if HAS_PRUSA_MMU2S
- #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries)
-
- #define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min)
- #define MMU2_CAN_LOAD_SEQUENCE \
- { 0.1, MMU2_CAN_LOAD_FEEDRATE }, \
- { 60.0, MMU2_CAN_LOAD_FEEDRATE }, \
- { -52.0, MMU2_CAN_LOAD_FEEDRATE }
-
- #define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values
- #define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation
-
- #define MMU2_CAN_LOAD_INCREMENT 0.2 // (mm) To reuse within MMU2 module
- #define MMU2_CAN_LOAD_INCREMENT_SEQUENCE \
- { -MMU2_CAN_LOAD_INCREMENT, MMU2_CAN_LOAD_FEEDRATE }
-
- #else
-
- /**
- * MMU1 Extruder Sensor
- *
- * Support for a Průša (or other) IR Sensor to detect filament near the extruder
- * and make loading more reliable. Suitable for an extruder equipped with a filament
- * sensor less than 38mm from the gears.
- *
- * During loading the extruder will stop when the sensor is triggered, then do a last
- * move up to the gears. If no filament is detected, the MMU2 can make some more attempts.
- * If all attempts fail, a filament runout will be triggered.
- */
- //#define MMU_EXTRUDER_SENSOR
- #if ENABLED(MMU_EXTRUDER_SENSOR)
- #define MMU_LOADING_ATTEMPTS_NR 5 // max. number of attempts to load filament if first load fail
- #endif
-
- #endif
-
- //#define MMU2_DEBUG // Write debug info to serial output
-
-#endif // HAS_PRUSA_MMU2
-
-/**
- * Advanced Print Counter settings
- */
-#if ENABLED(PRINTCOUNTER)
- #define SERVICE_WARNING_BUZZES 3
- // Activate up to 3 service interval watchdogs
- //#define SERVICE_NAME_1 "Service S"
- //#define SERVICE_INTERVAL_1 100 // print hours
- //#define SERVICE_NAME_2 "Service L"
- //#define SERVICE_INTERVAL_2 200 // print hours
- //#define SERVICE_NAME_3 "Service 3"
- //#define SERVICE_INTERVAL_3 1 // print hours
-#endif
-
-// @section develop
-
-//
-// M100 Free Memory Watcher to debug memory usage
-//
-//#define M100_FREE_MEMORY_WATCHER
-
-//
-// M42 - Set pin states
-//
-//#define DIRECT_PIN_CONTROL
-
-//
-// M43 - display pin status, toggle pins, watch pins, watch endstops & toggle LED, test servo probe
-//
-//#define PINS_DEBUGGING
-
-// Enable Marlin dev mode which adds some special commands
-//#define MARLIN_DEV_MODE
-
-#if ENABLED(MARLIN_DEV_MODE)
- /**
- * D576 - Buffer Monitoring
- * To help diagnose print quality issues stemming from empty command buffers.
- */
- //#define BUFFER_MONITORING
-#endif
-
-/**
- * Postmortem Debugging captures misbehavior and outputs the CPU status and backtrace to serial.
- * When running in the debugger it will break for debugging. This is useful to help understand
- * a crash from a remote location. Requires ~400 bytes of SRAM and 5Kb of flash.
- */
-//#define POSTMORTEM_DEBUGGING
-
-/**
- * Software Reset options
- */
-//#define SOFT_RESET_VIA_SERIAL // 'KILL' and '^X' commands will soft-reset the controller
-//#define SOFT_RESET_ON_KILL // Use a digital button to soft-reset the controller after KILL
-
-// Report uncleaned reset reason from register r2 instead of MCUSR. Supported by Optiboot on AVR.
-//#define OPTIBOOT_RESET_REASON
diff --git a/Marlin/Marlin.ino b/Marlin/Marlin.ino
deleted file mode 100644
index 57c8254..0000000
--- a/Marlin/Marlin.ino
+++ /dev/null
@@ -1,57 +0,0 @@
-/*==============================================================================
-
- Marlin Firmware
-
- (c) 2011-2020 MarlinFirmware
- Portions of Marlin are (c) by their respective authors.
- All code complies with GPLv2 and/or GPLv3
-
-================================================================================
-
-Greetings! Thank you for choosing Marlin 2 as your 3D printer firmware.
-
-To configure Marlin you must edit Configuration.h and Configuration_adv.h
-located in the root 'Marlin' folder. Check our Configurations repository to
-see if there's a more suitable starting-point for your specific hardware.
-
-Before diving in, we recommend the following essential links:
-
-Marlin Firmware Official Website
-
- - https://marlinfw.org/
- The official Marlin Firmware website contains the most up-to-date
- documentation. Contributions are always welcome!
-
-Configuration
-
- - https://github.com/MarlinFirmware/Configurations
- Example configurations for several printer models.
-
- - https://www.youtube.com/watch?v=3gwWVFtdg-4
- A good 20-minute overview of Marlin configuration by Tom Sanladerer.
- (Applies to Marlin 1.0.x, so Jerk and Acceleration should be halved.)
- Also... https://www.google.com/search?tbs=vid%3A1&q=configure+marlin
-
- - https://marlinfw.org/docs/configuration/configuration.html
- Marlin's configuration options are explained in more detail here.
-
-Getting Help
-
- - https://reprap.org/forum/list.php?415
- The Marlin Discussion Forum is a great place to get help from other Marlin
- users who may have experienced similar issues to your own.
-
- - https://github.com/MarlinFirmware/Marlin/issues
- With a free GitHub account you can provide us with feedback, bug reports,
- and feature requests via the Marlin Issue Queue.
-
-Contributing
-
- - https://marlinfw.org/docs/development/contributing.html
- If you'd like to contribute to Marlin, read this first!
-
- - https://marlinfw.org/docs/development/coding_standards.html
- Before submitting code get to know the Coding Standards.
-
-
-------------------------------------------------------------------------------*/
diff --git a/Marlin/Version.h b/Marlin/Version.h
deleted file mode 100644
index d9634a6..0000000
--- a/Marlin/Version.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-////////////////////////////
-// VENDOR VERSION EXAMPLE //
-////////////////////////////
-
-/**
- * Marlin release version identifier
- */
-//#define SHORT_BUILD_VERSION "2.0.9.5"
-
-/**
- * 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
-
-/**
- * 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 "2022-07-29"
-
-/**
- * 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 "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 "marlinfw.org"
-
-/**
- * Set the vendor info the serial USB interface, if changable
- * Currently only supported by DUE platform
- */
-//#define USB_DEVICE_VENDOR_ID 0x0000
-//#define USB_DEVICE_PRODUCT_ID 0x0000
-//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
diff --git a/Version.h b/Version.h
deleted file mode 100644
index d9634a6..0000000
--- a/Version.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-////////////////////////////
-// VENDOR VERSION EXAMPLE //
-////////////////////////////
-
-/**
- * Marlin release version identifier
- */
-//#define SHORT_BUILD_VERSION "2.0.9.5"
-
-/**
- * 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
-
-/**
- * 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 "2022-07-29"
-
-/**
- * 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 "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 "marlinfw.org"
-
-/**
- * Set the vendor info the serial USB interface, if changable
- * Currently only supported by DUE platform
- */
-//#define USB_DEVICE_VENDOR_ID 0x0000
-//#define USB_DEVICE_PRODUCT_ID 0x0000
-//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
diff --git a/lib/readme.txt b/lib/readme.txt
deleted file mode 100644
index 52c2ac8..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
-- https://docs.platformio.org/page/librarymanager/ldf.html
diff --git a/src/HAL/AVR/HAL.cpp b/src/HAL/AVR/HAL.cpp
deleted file mode 100644
index 5382eb3..0000000
--- a/src/HAL/AVR/HAL.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#ifdef __AVR__
-
-#include "../../inc/MarlinConfig.h"
-#include "HAL.h"
-#include
-
-#ifdef USBCON
- DefaultSerial1 MSerial0(false, Serial);
- #ifdef BLUETOOTH
- BTSerial btSerial(false, bluetoothSerial);
- #endif
-#endif
-
-// ------------------------
-// Public Variables
-// ------------------------
-
-// Don't initialize/override variable (which would happen in .init4)
-uint8_t MarlinHAL::reset_reason __attribute__((section(".noinit")));
-
-// ------------------------
-// Public functions
-// ------------------------
-
-__attribute__((naked)) // Don't output function pro- and epilogue
-__attribute__((used)) // Output the function, even if "not used"
-__attribute__((section(".init3"))) // Put in an early user definable section
-void save_reset_reason() {
- #if ENABLED(OPTIBOOT_RESET_REASON)
- __asm__ __volatile__(
- A("STS %0, r2")
- : "=m"(hal.reset_reason)
- );
- #else
- hal.reset_reason = MCUSR;
- #endif
-
- // Clear within 16ms since WDRF bit enables a 16ms watchdog timer -> Boot loop
- hal.clear_reset_source();
- wdt_disable();
-}
-
-void MarlinHAL::init() {
- // Init Servo Pins
- #define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW)
- #if HAS_SERVO_0
- INIT_SERVO(0);
- #endif
- #if HAS_SERVO_1
- INIT_SERVO(1);
- #endif
- #if HAS_SERVO_2
- INIT_SERVO(2);
- #endif
- #if HAS_SERVO_3
- INIT_SERVO(3);
- #endif
-
- init_pwm_timers(); // Init user timers to default frequency - 1000HZ
-}
-
-void MarlinHAL::reboot() {
- #if ENABLED(USE_WATCHDOG)
- while (1) { /* run out the watchdog */ }
- #else
- void (*resetFunc)() = 0; // Declare resetFunc() at address 0
- resetFunc(); // Jump to address 0
- #endif
-}
-
-// ------------------------
-// Watchdog Timer
-// ------------------------
-
-#if ENABLED(USE_WATCHDOG)
-
- #include
- #include "../../MarlinCore.h"
-
- // Initialize watchdog with 8s timeout, if possible. Otherwise, make it 4s.
- void MarlinHAL::watchdog_init() {
- #if ENABLED(WATCHDOG_DURATION_8S) && defined(WDTO_8S)
- #define WDTO_NS WDTO_8S
- #else
- #define WDTO_NS WDTO_4S
- #endif
- #if ENABLED(WATCHDOG_RESET_MANUAL)
- // 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();
- cli();
- _WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE);
- _WD_CONTROL_REG = _BV(WDIE) | (WDTO_NS & 0x07) | ((WDTO_NS & 0x08) << 2); // WDTO_NS directly does not work. bit 0-2 are consecutive in the register but the highest value bit is at bit 5
- // So worked for up to WDTO_2S
- sei();
- wdt_reset();
- #else
- wdt_enable(WDTO_NS); // The function handles the upper bit correct.
- #endif
- //delay(10000); // test it!
- }
-
- //===========================================================================
- //=================================== ISR ===================================
- //===========================================================================
-
- // Watchdog timer interrupt, called if main program blocks >4sec and manual reset is enabled.
- #if ENABLED(WATCHDOG_RESET_MANUAL)
- ISR(WDT_vect) {
- sei(); // With the interrupt driven serial we need to allow interrupts.
- SERIAL_ERROR_MSG(STR_WATCHDOG_FIRED);
- minkill(); // interrupt-safe final kill and infinite loop
- }
- #endif
-
- // Reset watchdog. MUST be called at least every 4 seconds after the
- // first watchdog_init or AVR will go into emergency procedures.
- void MarlinHAL::watchdog_refresh() { wdt_reset(); }
-
-#endif // USE_WATCHDOG
-
-// ------------------------
-// Free Memory Accessor
-// ------------------------
-
-#if ENABLED(SDSUPPORT)
-
- #include "../../sd/SdFatUtil.h"
- int freeMemory() { return SdFatUtil::FreeRam(); }
-
-#else // !SDSUPPORT
-
- extern "C" {
- extern char __bss_end;
- extern char __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
-
-#endif // __AVR__
diff --git a/src/HAL/AVR/HAL.h b/src/HAL/AVR/HAL.h
deleted file mode 100644
index 1491867..0000000
--- a/src/HAL/AVR/HAL.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * HAL for Arduino AVR
- */
-
-#include "../shared/Marduino.h"
-#include "../shared/HAL_SPI.h"
-#include "fastio.h"
-#include "math.h"
-
-#ifdef USBCON
- #include
-#else
- #include "MarlinSerial.h"
-#endif
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-//
-// Default graphical display delays
-//
-#if F_CPU >= 20000000
- #define CPU_ST7920_DELAY_1 150
- #define CPU_ST7920_DELAY_2 0
- #define CPU_ST7920_DELAY_3 150
-#elif F_CPU == 16000000
- #define CPU_ST7920_DELAY_1 125
- #define CPU_ST7920_DELAY_2 0
- #define CPU_ST7920_DELAY_3 188
-#endif
-
-#ifndef pgm_read_ptr
- // Compatibility for avr-libc 1.8.0-4.1 included with Ubuntu for
- // Windows Subsystem for Linux on Windows 10 as of 10/18/2019
- #define pgm_read_ptr_far(address_long) (void*)__ELPM_word((uint32_t)(address_long))
- #define pgm_read_ptr_near(address_short) (void*)__LPM_word((uint16_t)(address_short))
- #define pgm_read_ptr(address_short) pgm_read_ptr_near(address_short)
-#endif
-
-// ------------------------
-// Defines
-// ------------------------
-
-// AVR PROGMEM extension for sprintf_P
-#define S_FMT "%S"
-
-// AVR PROGMEM extension for string define
-#define PGMSTR(NAM,STR) const char NAM[] PROGMEM = STR
-
-#ifndef CRITICAL_SECTION_START
- #define CRITICAL_SECTION_START() unsigned char _sreg = SREG; cli()
- #define CRITICAL_SECTION_END() SREG = _sreg
-#endif
-
-#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
-#define PWM_FREQUENCY 1000 // Default PWM frequency when set_pwm_duty() is called without set_pwm_frequency()
-
-// ------------------------
-// Types
-// ------------------------
-
-typedef int8_t pin_t;
-
-#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
-
-class Servo;
-typedef Servo hal_servo_t;
-
-// ------------------------
-// Serial ports
-// ------------------------
-
-#ifdef USBCON
- #include "../../core/serial_hook.h"
- typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
- extern DefaultSerial1 MSerial0;
- #ifdef BLUETOOTH
- typedef ForwardSerial1Class< decltype(bluetoothSerial) > BTSerial;
- extern BTSerial btSerial;
- #endif
-
- #define MYSERIAL1 TERN(BLUETOOTH, btSerial, MSerial0)
-#else
- #if !WITHIN(SERIAL_PORT, -1, 3)
- #error "SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
- #endif
- #define MYSERIAL1 customizedSerial1
-
- #ifdef SERIAL_PORT_2
- #if !WITHIN(SERIAL_PORT_2, -1, 3)
- #error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
- #endif
- #define MYSERIAL2 customizedSerial2
- #endif
-
- #ifdef SERIAL_PORT_3
- #if !WITHIN(SERIAL_PORT_3, -1, 3)
- #error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
- #endif
- #define MYSERIAL3 customizedSerial3
- #endif
-#endif
-
-#ifdef MMU2_SERIAL_PORT
- #if !WITHIN(MMU2_SERIAL_PORT, -1, 3)
- #error "MMU2_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
- #endif
- #define MMU2_SERIAL mmuSerial
-#endif
-
-#ifdef LCD_SERIAL_PORT
- #if !WITHIN(LCD_SERIAL_PORT, -1, 3)
- #error "LCD_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
- #endif
- #define LCD_SERIAL lcdSerial
- #if HAS_DGUS_LCD
- #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free()
- #endif
-#endif
-
-//
-// ADC
-//
-#define HAL_ADC_VREF 5.0
-#define HAL_ADC_RESOLUTION 10
-
-//
-// Pin Mapping for M42, M43, M226
-//
-#define GET_PIN_MAP_PIN(index) index
-#define GET_PIN_MAP_INDEX(pin) pin
-#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
-
-#define HAL_SENSITIVE_PINS 0, 1,
-
-#ifdef __AVR_AT90USB1286__
- #define JTAG_DISABLE() do{ MCUCR = 0x80; MCUCR = 0x80; }while(0)
-#endif
-
-// AVR compatibility
-#define strtof strtod
-
-// ------------------------
-// Free Memory Accessor
-// ------------------------
-
-#pragma GCC diagnostic push
-#if GCC_VERSION <= 50000
- #pragma GCC diagnostic ignored "-Wunused-function"
-#endif
-
-extern "C" int freeMemory();
-
-#pragma GCC diagnostic pop
-
-// ------------------------
-// MarlinHAL Class
-// ------------------------
-
-class MarlinHAL {
-public:
-
- // Earliest possible init, before setup()
- MarlinHAL() {}
-
- // Watchdog
- static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
- static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
-
- static void init(); // Called early in setup()
- static void init_board() {} // Called less early in setup()
- static void reboot(); // Restart the firmware from 0x0
-
- // Interrupts
- static bool isr_state() { return TEST(SREG, SREG_I); }
- static void isr_on() { sei(); }
- static void isr_off() { cli(); }
-
- static void delay_ms(const int ms) { _delay_ms(ms); }
-
- // Tasks, called from idle()
- static void idletask() {}
-
- // Reset
- static uint8_t reset_reason;
- static uint8_t get_reset_source() { return reset_reason; }
- static void clear_reset_source() { MCUSR = 0; }
-
- // Free SRAM
- static int freeMemory() { return ::freeMemory(); }
-
- //
- // ADC Methods
- //
-
- // Called by Temperature::init once at startup
- static void adc_init() {
- ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADIF) | 0x07;
- DIDR0 = 0;
- #ifdef DIDR2
- DIDR2 = 0;
- #endif
- }
-
- // Called by Temperature::init for each sensor at startup
- static void adc_enable(const uint8_t ch) {
- #ifdef DIDR2
- if (ch > 7) { SBI(DIDR2, ch & 0x07); return; }
- #endif
- SBI(DIDR0, ch);
- }
-
- // Begin ADC sampling on the given channel. Called from Temperature::isr!
- static void adc_start(const uint8_t ch) {
- #ifdef MUX5
- ADCSRB = ch > 7 ? _BV(MUX5) : 0;
- #else
- ADCSRB = 0;
- #endif
- ADMUX = _BV(REFS0) | (ch & 0x07);
- SBI(ADCSRA, ADSC);
- }
-
- // Is the ADC ready for reading?
- static bool adc_ready() { return !TEST(ADCSRA, ADSC); }
-
- // The current value of the ADC register
- static __typeof__(ADC) adc_value() { return ADC; }
-
- /**
- * init_pwm_timers
- * Set the default frequency for timers 2-5 to 1000HZ
- */
- static void init_pwm_timers();
-
- /**
- * Set the PWM duty cycle for the pin to the given value.
- * Optionally invert the duty cycle [default = false]
- * Optionally change the scale of the provided value to enable finer PWM duty control [default = 255]
- */
- static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
-
- /**
- * Set the frequency of the timer for the given pin as close as
- * possible to the provided desired frequency. Internally calculate
- * the required waveform generation mode, prescaler, and resolution
- * values and set timer registers accordingly.
- * NOTE that the frequency is applied to all pins on the timer (Ex OC3A, OC3B and OC3B)
- * NOTE that there are limitations, particularly if using TIMER2. (see Configuration_adv.h -> FAST_PWM_FAN Settings)
- */
- static void set_pwm_frequency(const pin_t pin, const uint16_t f_desired);
-};
diff --git a/src/HAL/AVR/HAL_SPI.cpp b/src/HAL/AVR/HAL_SPI.cpp
deleted file mode 100644
index dc98f2f..0000000
--- a/src/HAL/AVR/HAL_SPI.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * Adapted from Arduino Sd2Card Library
- * Copyright (c) 2009 by William Greiman
- */
-
-/**
- * HAL for AVR - SPI functions
- */
-
-#ifdef __AVR__
-
-#include "../../inc/MarlinConfig.h"
-
-void spiBegin() {
- #if PIN_EXISTS(SD_SS)
- // Do not init HIGH for boards with pin 4 used as Fans or Heaters or otherwise, not likely to have multiple SPI devices anyway.
- #if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
- // SS must be in output mode even it is not chip select
- SET_OUTPUT(SD_SS_PIN);
- #else
- // set SS high - may be chip select for another SPI device
- OUT_WRITE(SD_SS_PIN, HIGH);
- #endif
- #endif
- SET_OUTPUT(SD_SCK_PIN);
- SET_INPUT(SD_MISO_PIN);
- SET_OUTPUT(SD_MOSI_PIN);
-
- IF_DISABLED(SOFTWARE_SPI, spiInit(SPI_HALF_SPEED));
-}
-
-#if NONE(SOFTWARE_SPI, FORCE_SOFT_SPI)
-
- // ------------------------
- // 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]
- */
- void spiInit(uint8_t spiRate) {
- // See avr processor documentation
- CBI(
- #ifdef PRR
- PRR
- #elif defined(PRR0)
- PRR0
- #endif
- , PRSPI
- );
-
- SPCR = _BV(SPE) | _BV(MSTR) | (spiRate >> 1);
- SPSR = spiRate & 1 || spiRate == 6 ? 0 : _BV(SPI2X);
- }
-
- /** SPI receive a byte */
- uint8_t spiRec() {
- SPDR = 0xFF;
- while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
- return SPDR;
- }
-
- /** SPI read data */
- 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 */
- void spiSend(uint8_t b) {
- SPDR = b;
- while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
- }
-
- /** SPI send block */
- 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 */ }
- }
-
-
- /** begin spi transaction */
- void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
- // Based on Arduino SPI library
- // Clock settings are defined as follows. Note that this shows SPI2X
- // inverted, so the bits form increasing numbers. Also note that
- // fosc/64 appears twice
- // SPR1 SPR0 ~SPI2X Freq
- // 0 0 0 fosc/2
- // 0 0 1 fosc/4
- // 0 1 0 fosc/8
- // 0 1 1 fosc/16
- // 1 0 0 fosc/32
- // 1 0 1 fosc/64
- // 1 1 0 fosc/64
- // 1 1 1 fosc/128
-
- // We find the fastest clock that is less than or equal to the
- // given clock rate. The clock divider that results in clock_setting
- // is 2 ^^ (clock_div + 1). If nothing is slow enough, we'll use the
- // slowest (128 == 2 ^^ 7, so clock_div = 6).
- uint8_t clockDiv;
-
- // When the clock is known at compiletime, use this if-then-else
- // cascade, which the compiler knows how to completely optimize
- // away. When clock is not known, use a loop instead, which generates
- // shorter code.
- if (__builtin_constant_p(spiClock)) {
- if (spiClock >= F_CPU / 2) clockDiv = 0;
- else if (spiClock >= F_CPU / 4) clockDiv = 1;
- else if (spiClock >= F_CPU / 8) clockDiv = 2;
- else if (spiClock >= F_CPU / 16) clockDiv = 3;
- else if (spiClock >= F_CPU / 32) clockDiv = 4;
- else if (spiClock >= F_CPU / 64) clockDiv = 5;
- else clockDiv = 6;
- }
- else {
- uint32_t clockSetting = F_CPU / 2;
- clockDiv = 0;
- while (clockDiv < 6 && spiClock < clockSetting) {
- clockSetting /= 2;
- clockDiv++;
- }
- }
-
- // Compensate for the duplicate fosc/64
- if (clockDiv == 6) clockDiv = 7;
-
- // Invert the SPI2X bit
- clockDiv ^= 0x1;
-
- SPCR = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 0) |
- (dataMode << CPHA) | ((clockDiv >> 1) << SPR0);
- SPSR = clockDiv | 0x01;
- }
-
-
-#else // SOFTWARE_SPI || FORCE_SOFT_SPI
-
- // ------------------------
- // Software SPI
- // ------------------------
-
- // nop to tune soft SPI timing
- #define nop asm volatile ("\tnop\n")
-
- void spiInit(uint8_t) { /* do nothing */ }
-
- // Begin SPI transaction, set clock, bit order, data mode
- void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) { /* do nothing */ }
-
- // Soft SPI receive byte
- uint8_t spiRec() {
- uint8_t data = 0;
- // no interrupts during byte receive - about 8µs
- cli();
- // output pin high - like sending 0xFF
- WRITE(SD_MOSI_PIN, HIGH);
-
- LOOP_L_N(i, 8) {
- WRITE(SD_SCK_PIN, HIGH);
-
- nop; // adjust so SCK is nice
- nop;
-
- data <<= 1;
-
- if (READ(SD_MISO_PIN)) data |= 1;
-
- WRITE(SD_SCK_PIN, LOW);
- }
-
- sei();
- return data;
- }
-
- // Soft SPI read data
- void spiRead(uint8_t *buf, uint16_t nbyte) {
- for (uint16_t i = 0; i < nbyte; i++)
- buf[i] = spiRec();
- }
-
- // Soft SPI send byte
- void spiSend(uint8_t data) {
- // no interrupts during byte send - about 8µs
- cli();
- LOOP_L_N(i, 8) {
- WRITE(SD_SCK_PIN, LOW);
- WRITE(SD_MOSI_PIN, data & 0x80);
- data <<= 1;
- WRITE(SD_SCK_PIN, HIGH);
- }
-
- nop; // hold SCK high for a few ns
- nop;
- nop;
- nop;
-
- WRITE(SD_SCK_PIN, LOW);
-
- 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 || FORCE_SOFT_SPI
-
-#endif // __AVR__
diff --git a/src/HAL/AVR/MarlinSPI.h b/src/HAL/AVR/MarlinSPI.h
deleted file mode 100644
index 0c447ba..0000000
--- a/src/HAL/AVR/MarlinSPI.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#include
-
-using MarlinSPI = SPIClass;
diff --git a/src/HAL/AVR/MarlinSerial.cpp b/src/HAL/AVR/MarlinSerial.cpp
deleted file mode 100644
index 9864624..0000000
--- a/src/HAL/AVR/MarlinSerial.cpp
+++ /dev/null
@@ -1,652 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * 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)
- * Modified 01 October 2017 by Eduardo José Tagle (added XON/XOFF)
- * Modified 10 June 2018 by Eduardo José Tagle (See #10991)
- * Templatized 01 October 2018 by Eduardo José Tagle to allow multiple instances
- */
-
-#ifdef __AVR__
-
-// Disable HardwareSerial.cpp to support chips without a UART (Attiny, etc.)
-
-#include "../../inc/MarlinConfig.h"
-
-#if !defined(USBCON) && (defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H))
-
-#include "MarlinSerial.h"
-#include "../../MarlinCore.h"
-
-#if ENABLED(DIRECT_STEPPING)
- #include "../../feature/direct_stepping.h"
-#endif
-
-template typename MarlinSerial::ring_buffer_r MarlinSerial::rx_buffer = { 0, 0, { 0 } };
-template typename MarlinSerial::ring_buffer_t MarlinSerial::tx_buffer = { 0 };
-template bool MarlinSerial::_written = false;
-template uint8_t MarlinSerial::xon_xoff_state = MarlinSerial::XON_XOFF_CHAR_SENT | MarlinSerial::XON_CHAR;
-template uint8_t MarlinSerial::rx_dropped_bytes = 0;
-template uint8_t MarlinSerial::rx_buffer_overruns = 0;
-template uint8_t MarlinSerial::rx_framing_errors = 0;
-template typename MarlinSerial::ring_buffer_pos_t MarlinSerial::rx_max_enqueued = 0;
-
-// A SW memory barrier, to ensure GCC does not overoptimize loops
-#define sw_barrier() asm volatile("": : :"memory");
-
-#include "../../feature/e_parser.h"
-
-// "Atomically" read the RX head index value without disabling interrupts:
-// This MUST be called with RX interrupts enabled, and CAN'T be called
-// from the RX ISR itself!
-template
-FORCE_INLINE typename MarlinSerial::ring_buffer_pos_t MarlinSerial::atomic_read_rx_head() {
- if (Cfg::RX_SIZE > 256) {
- // Keep reading until 2 consecutive reads return the same value,
- // meaning there was no update in-between caused by an interrupt.
- // This works because serial RX interrupts happen at a slower rate
- // than successive reads of a variable, so 2 consecutive reads with
- // the same value means no interrupt updated it.
- ring_buffer_pos_t vold, vnew = rx_buffer.head;
- sw_barrier();
- do {
- vold = vnew;
- vnew = rx_buffer.head;
- sw_barrier();
- } while (vold != vnew);
- return vnew;
- }
- else {
- // With an 8bit index, reads are always atomic. No need for special handling
- return rx_buffer.head;
- }
-}
-
-template
-volatile bool MarlinSerial::rx_tail_value_not_stable = false;
-template
-volatile uint16_t MarlinSerial::rx_tail_value_backup = 0;
-
-// Set RX tail index, taking into account the RX ISR could interrupt
-// the write to this variable in the middle - So a backup strategy
-// is used to ensure reads of the correct values.
-// -Must NOT be called from the RX ISR -
-template
-FORCE_INLINE void MarlinSerial::atomic_set_rx_tail(typename MarlinSerial::ring_buffer_pos_t value) {
- if (Cfg::RX_SIZE > 256) {
- // Store the new value in the backup
- rx_tail_value_backup = value;
- sw_barrier();
- // Flag we are about to change the true value
- rx_tail_value_not_stable = true;
- sw_barrier();
- // Store the new value
- rx_buffer.tail = value;
- sw_barrier();
- // Signal the new value is completely stored into the value
- rx_tail_value_not_stable = false;
- sw_barrier();
- }
- else
- rx_buffer.tail = value;
-}
-
-// Get the RX tail index, taking into account the read could be
-// interrupting in the middle of the update of that index value
-// -Called from the RX ISR -
-template
-FORCE_INLINE typename MarlinSerial::ring_buffer_pos_t MarlinSerial::atomic_read_rx_tail() {
- if (Cfg::RX_SIZE > 256) {
- // If the true index is being modified, return the backup value
- if (rx_tail_value_not_stable) return rx_tail_value_backup;
- }
- // The true index is stable, return it
- return rx_buffer.tail;
-}
-
-// (called with RX interrupts disabled)
-template
-FORCE_INLINE void MarlinSerial::store_rxd_char() {
-
- static EmergencyParser::State emergency_state; // = EP_RESET
-
- // This must read the R_UCSRA register before reading the received byte to detect error causes
- if (Cfg::DROPPED_RX && B_DOR && !++rx_dropped_bytes) --rx_dropped_bytes;
- if (Cfg::RX_OVERRUNS && B_DOR && !++rx_buffer_overruns) --rx_buffer_overruns;
- if (Cfg::RX_FRAMING_ERRORS && B_FE && !++rx_framing_errors) --rx_framing_errors;
-
- // Read the character from the USART
- uint8_t c = R_UDR;
-
- #if ENABLED(DIRECT_STEPPING)
- if (page_manager.maybe_store_rxd_char(c)) return;
- #endif
-
- // Get the tail - Nothing can alter its value while this ISR is executing, but there's
- // a chance that this ISR interrupted the main process while it was updating the index.
- // The backup mechanism ensures the correct value is always returned.
- const ring_buffer_pos_t t = atomic_read_rx_tail();
-
- // Get the head pointer - This ISR is the only one that modifies its value, so it's safe to read here
- ring_buffer_pos_t h = rx_buffer.head;
-
- // Get the next element
- ring_buffer_pos_t i = (ring_buffer_pos_t)(h + 1) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- if (Cfg::EMERGENCYPARSER) emergency_parser.update(emergency_state, c);
-
- // If the character is to be stored at the index just before the tail
- // (such that the head would advance to the current tail), the RX FIFO is
- // full, so don't write the character or advance the head.
- if (i != t) {
- rx_buffer.buffer[h] = c;
- h = i;
- }
- else if (Cfg::DROPPED_RX && !++rx_dropped_bytes)
- --rx_dropped_bytes;
-
- if (Cfg::MAX_RX_QUEUED) {
- // Calculate count of bytes stored into the RX buffer
- const ring_buffer_pos_t rx_count = (ring_buffer_pos_t)(h - t) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // Keep track of the maximum count of enqueued bytes
- NOLESS(rx_max_enqueued, rx_count);
- }
-
- if (Cfg::XONOFF) {
- // If the last char that was sent was an XON
- if ((xon_xoff_state & XON_XOFF_CHAR_MASK) == XON_CHAR) {
-
- // Bytes stored into the RX buffer
- const ring_buffer_pos_t rx_count = (ring_buffer_pos_t)(h - t) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // If over 12.5% of RX buffer capacity, send XOFF before running out of
- // RX buffer space .. 325 bytes @ 250kbits/s needed to let the host react
- // and stop sending bytes. This translates to 13mS propagation time.
- if (rx_count >= (Cfg::RX_SIZE) / 8) {
-
- // At this point, definitely no TX interrupt was executing, since the TX ISR can't be preempted.
- // Don't enable the TX interrupt here as a means to trigger the XOFF char, because if it happens
- // to be in the middle of trying to disable the RX interrupt in the main program, eventually the
- // enabling of the TX interrupt could be undone. The ONLY reliable thing this can do to ensure
- // the sending of the XOFF char is to send it HERE AND NOW.
-
- // About to send the XOFF char
- xon_xoff_state = XOFF_CHAR | XON_XOFF_CHAR_SENT;
-
- // Wait until the TX register becomes empty and send it - Here there could be a problem
- // - While waiting for the TX register to empty, the RX register could receive a new
- // character. This must also handle that situation!
- while (!B_UDRE) {
-
- if (B_RXC) {
- // A char arrived while waiting for the TX buffer to be empty - Receive and process it!
-
- i = (ring_buffer_pos_t)(h + 1) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // Read the character from the USART
- c = R_UDR;
-
- if (Cfg::EMERGENCYPARSER) emergency_parser.update(emergency_state, c);
-
- // If the character is to be stored at the index just before the tail
- // (such that the head would advance to the current tail), the FIFO is
- // full, so don't write the character or advance the head.
- if (i != t) {
- rx_buffer.buffer[h] = c;
- h = i;
- }
- else if (Cfg::DROPPED_RX && !++rx_dropped_bytes)
- --rx_dropped_bytes;
- }
- sw_barrier();
- }
-
- R_UDR = XOFF_CHAR;
-
- // 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
- B_TXC = 1;
-
- // At this point there could be a race condition between the write() function
- // and this sending of the XOFF char. This interrupt could happen between the
- // wait to be empty TX buffer loop and the actual write of the character. Since
- // the TX buffer is full because it's sending the XOFF char, the only way to be
- // sure the write() function will succeed is to wait for the XOFF char to be
- // completely sent. Since an extra character could be received during the wait
- // it must also be handled!
- while (!B_UDRE) {
-
- if (B_RXC) {
- // A char arrived while waiting for the TX buffer to be empty - Receive and process it!
-
- i = (ring_buffer_pos_t)(h + 1) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // Read the character from the USART
- c = R_UDR;
-
- if (Cfg::EMERGENCYPARSER)
- emergency_parser.update(emergency_state, c);
-
- // If the character is to be stored at the index just before the tail
- // (such that the head would advance to the current tail), the FIFO is
- // full, so don't write the character or advance the head.
- if (i != t) {
- rx_buffer.buffer[h] = c;
- h = i;
- }
- else if (Cfg::DROPPED_RX && !++rx_dropped_bytes)
- --rx_dropped_bytes;
- }
- sw_barrier();
- }
-
- // At this point everything is ready. The write() function won't
- // have any issues writing to the UART TX register if it needs to!
- }
- }
- }
-
- // Store the new head value - The main loop will retry until the value is stable
- rx_buffer.head = h;
-}
-
-// (called with TX irqs disabled)
-template
-FORCE_INLINE void MarlinSerial::_tx_udr_empty_irq() {
- if (Cfg::TX_SIZE > 0) {
- // Read positions
- uint8_t t = tx_buffer.tail;
- const uint8_t h = tx_buffer.head;
-
- if (Cfg::XONOFF) {
- // If an XON char is pending to be sent, do it now
- if (xon_xoff_state == XON_CHAR) {
-
- // Send the character
- R_UDR = XON_CHAR;
-
- // 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
- B_TXC = 1;
-
- // Remember we sent it.
- xon_xoff_state = XON_CHAR | XON_XOFF_CHAR_SENT;
-
- // If nothing else to transmit, just disable TX interrupts.
- if (h == t) B_UDRIE = 0; // (Non-atomic, could be reenabled by the main program, but eventually this will succeed)
-
- return;
- }
- }
-
- // If nothing to transmit, just disable TX interrupts. This could
- // happen as the result of the non atomicity of the disabling of RX
- // interrupts that could end reenabling TX interrupts as a side effect.
- if (h == t) {
- B_UDRIE = 0; // (Non-atomic, could be reenabled by the main program, but eventually this will succeed)
- return;
- }
-
- // There is something to TX, Send the next byte
- const uint8_t c = tx_buffer.buffer[t];
- t = (t + 1) & (Cfg::TX_SIZE - 1);
- R_UDR = c;
- tx_buffer.tail = t;
-
- // Clear the TXC bit (by writing a one to its bit location).
- // Ensures flush() won't return until the bytes are actually written/
- B_TXC = 1;
-
- // Disable interrupts if there is nothing to transmit following this byte
- if (h == t) B_UDRIE = 0; // (Non-atomic, could be reenabled by the main program, but eventually this will succeed)
- }
-}
-
-// Public Methods
-template
-void MarlinSerial::begin(const 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
-
- R_UCSRA = 0;
- if (useU2X) {
- B_U2X = 1;
- baud_setting = (F_CPU / 4 / baud - 1) / 2;
- }
- else
- baud_setting = (F_CPU / 8 / baud - 1) / 2;
-
- // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
- R_UBRRH = baud_setting >> 8;
- R_UBRRL = baud_setting;
-
- B_RXEN = 1;
- B_TXEN = 1;
- B_RXCIE = 1;
- if (Cfg::TX_SIZE > 0) B_UDRIE = 0;
- _written = false;
-}
-
-template
-void MarlinSerial::end() {
- B_RXEN = 0;
- B_TXEN = 0;
- B_RXCIE = 0;
- B_UDRIE = 0;
-}
-
-template
-int MarlinSerial::peek() {
- const ring_buffer_pos_t h = atomic_read_rx_head(), t = rx_buffer.tail;
- return h == t ? -1 : rx_buffer.buffer[t];
-}
-
-template
-int MarlinSerial::read() {
- const ring_buffer_pos_t h = atomic_read_rx_head();
-
- // Read the tail. Main thread owns it, so it is safe to directly read it
- ring_buffer_pos_t t = rx_buffer.tail;
-
- // If nothing to read, return now
- if (h == t) return -1;
-
- // Get the next char
- const int v = rx_buffer.buffer[t];
- t = (ring_buffer_pos_t)(t + 1) & (Cfg::RX_SIZE - 1);
-
- // Advance tail - Making sure the RX ISR will always get an stable value, even
- // if it interrupts the writing of the value of that variable in the middle.
- atomic_set_rx_tail(t);
-
- if (Cfg::XONOFF) {
- // If the XOFF char was sent, or about to be sent...
- if ((xon_xoff_state & XON_XOFF_CHAR_MASK) == XOFF_CHAR) {
- // Get count of bytes in the RX buffer
- const ring_buffer_pos_t rx_count = (ring_buffer_pos_t)(h - t) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
- if (rx_count < (Cfg::RX_SIZE) / 10) {
- if (Cfg::TX_SIZE > 0) {
- // Signal we want an XON character to be sent.
- xon_xoff_state = XON_CHAR;
- // Enable TX ISR. Non atomic, but it will eventually enable them
- B_UDRIE = 1;
- }
- else {
- // If not using TX interrupts, we must send the XON char now
- xon_xoff_state = XON_CHAR | XON_XOFF_CHAR_SENT;
- while (!B_UDRE) sw_barrier();
- R_UDR = XON_CHAR;
- }
- }
- }
- }
-
- return v;
-}
-
-template
-typename MarlinSerial::ring_buffer_pos_t MarlinSerial::available() {
- const ring_buffer_pos_t h = atomic_read_rx_head(), t = rx_buffer.tail;
- return (ring_buffer_pos_t)(Cfg::RX_SIZE + h - t) & (Cfg::RX_SIZE - 1);
-}
-
-template
-void MarlinSerial::flush() {
-
- // Set the tail to the head:
- // - Read the RX head index in a safe way. (See atomic_read_rx_head.)
- // - Set the tail, making sure the RX ISR will always get a stable value, even
- // if it interrupts the writing of the value of that variable in the middle.
- atomic_set_rx_tail(atomic_read_rx_head());
-
- if (Cfg::XONOFF) {
- // If the XOFF char was sent, or about to be sent...
- if ((xon_xoff_state & XON_XOFF_CHAR_MASK) == XOFF_CHAR) {
- if (Cfg::TX_SIZE > 0) {
- // Signal we want an XON character to be sent.
- xon_xoff_state = XON_CHAR;
- // Enable TX ISR. Non atomic, but it will eventually enable it.
- B_UDRIE = 1;
- }
- else {
- // If not using TX interrupts, we must send the XON char now
- xon_xoff_state = XON_CHAR | XON_XOFF_CHAR_SENT;
- while (!B_UDRE) sw_barrier();
- R_UDR = XON_CHAR;
- }
- }
- }
-}
-
-template
-void MarlinSerial::write(const uint8_t c) {
- if (Cfg::TX_SIZE == 0) {
-
- _written = true;
- while (!B_UDRE) sw_barrier();
- R_UDR = c;
-
- }
- else {
-
- _written = true;
-
- // If the TX interrupts are disabled 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.
- // Yes, there is a race condition between the sending of the
- // XOFF char at the RX ISR, but it is properly handled there
- if (!B_UDRIE && B_UDRE) {
- R_UDR = 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
- B_TXC = 1;
- return;
- }
-
- const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
-
- // If global interrupts are disabled (as the result of being called from an ISR)...
- if (!hal.isr_state()) {
-
- // Make room by polling if it is possible to transmit, and do so!
- while (i == tx_buffer.tail) {
-
- // If we can transmit another byte, do it.
- if (B_UDRE) _tx_udr_empty_irq();
-
- // Make sure compiler rereads tx_buffer.tail
- sw_barrier();
- }
- }
- else {
- // Interrupts are enabled, just wait until there is space
- while (i == tx_buffer.tail) sw_barrier();
- }
-
- // Store new char. head is always safe to move
- tx_buffer.buffer[tx_buffer.head] = c;
- tx_buffer.head = i;
-
- // Enable TX ISR - Non atomic, but it will eventually enable TX ISR
- B_UDRIE = 1;
- }
-}
-
-template
-void MarlinSerial::flushTX() {
-
- if (Cfg::TX_SIZE == 0) {
- // No bytes written, no need to flush. This special case is needed since there's
- // no way to force the TXC (transmit complete) bit to 1 during initialization.
- if (!_written) return;
-
- // Wait until everything was transmitted
- while (!B_TXC) sw_barrier();
-
- // At this point nothing is queued anymore (DRIE is disabled) and
- // the hardware finished transmission (TXC is set).
-
- }
- else {
-
- // No bytes written, no need to flush. This special case is needed since there's
- // no way to force the TXC (transmit complete) bit to 1 during initialization.
- if (!_written) return;
-
- // If global interrupts are disabled (as the result of being called from an ISR)...
- if (!hal.isr_state()) {
-
- // Wait until everything was transmitted - We must do polling, as interrupts are disabled
- while (tx_buffer.head != tx_buffer.tail || !B_TXC) {
-
- // If there is more space, send an extra character
- if (B_UDRE) _tx_udr_empty_irq();
-
- sw_barrier();
- }
-
- }
- else {
- // Wait until everything was transmitted
- while (tx_buffer.head != tx_buffer.tail || !B_TXC) sw_barrier();
- }
-
- // At this point nothing is queued anymore (DRIE is disabled) and
- // the hardware finished transmission (TXC is set).
- }
-}
-
-// Hookup ISR handlers
-ISR(SERIAL_REGNAME(USART, SERIAL_PORT, _RX_vect)) {
- MarlinSerial>::store_rxd_char();
-}
-
-ISR(SERIAL_REGNAME(USART, SERIAL_PORT, _UDRE_vect)) {
- MarlinSerial>::_tx_udr_empty_irq();
-}
-
-// Because of the template definition above, it's required to instantiate the template to have all methods generated
-template class MarlinSerial< MarlinSerialCfg >;
-MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
-
-#ifdef SERIAL_PORT_2
-
- // Hookup ISR handlers
- ISR(SERIAL_REGNAME(USART, SERIAL_PORT_2, _RX_vect)) {
- MarlinSerial>::store_rxd_char();
- }
-
- ISR(SERIAL_REGNAME(USART, SERIAL_PORT_2, _UDRE_vect)) {
- MarlinSerial>::_tx_udr_empty_irq();
- }
-
- template class MarlinSerial< MarlinSerialCfg >;
- MSerialT2 customizedSerial2(MSerialT2::HasEmergencyParser);
-
-#endif // SERIAL_PORT_2
-
-#ifdef SERIAL_PORT_3
-
- // Hookup ISR handlers
- ISR(SERIAL_REGNAME(USART, SERIAL_PORT_3, _RX_vect)) {
- MarlinSerial>::store_rxd_char();
- }
-
- ISR(SERIAL_REGNAME(USART, SERIAL_PORT_3, _UDRE_vect)) {
- MarlinSerial>::_tx_udr_empty_irq();
- }
-
- template class MarlinSerial< MarlinSerialCfg >;
- MSerialT3 customizedSerial3(MSerialT3::HasEmergencyParser);
-
-#endif // SERIAL_PORT_3
-
-#ifdef MMU2_SERIAL_PORT
-
- ISR(SERIAL_REGNAME(USART, MMU2_SERIAL_PORT, _RX_vect)) {
- MarlinSerial>::store_rxd_char();
- }
-
- ISR(SERIAL_REGNAME(USART, MMU2_SERIAL_PORT, _UDRE_vect)) {
- MarlinSerial>::_tx_udr_empty_irq();
- }
-
- template class MarlinSerial< MMU2SerialCfg >;
- MSerialMMU2 mmuSerial(MSerialMMU2::HasEmergencyParser);
-
-#endif // MMU2_SERIAL_PORT
-
-#ifdef LCD_SERIAL_PORT
-
- ISR(SERIAL_REGNAME(USART, LCD_SERIAL_PORT, _RX_vect)) {
- MarlinSerial>::store_rxd_char();
- }
-
- ISR(SERIAL_REGNAME(USART, LCD_SERIAL_PORT, _UDRE_vect)) {
- MarlinSerial>::_tx_udr_empty_irq();
- }
-
- template class MarlinSerial< LCDSerialCfg >;
- MSerialLCD lcdSerial(MSerialLCD::HasEmergencyParser);
-
- #if HAS_DGUS_LCD
- template
- typename MarlinSerial::ring_buffer_pos_t MarlinSerial::get_tx_buffer_free() {
- const ring_buffer_pos_t t = tx_buffer.tail, // next byte to send.
- h = tx_buffer.head; // next pos for queue.
- int ret = t - h - 1;
- if (ret < 0) ret += Cfg::TX_SIZE + 1;
- return ret;
- }
- #endif
-
-#endif // LCD_SERIAL_PORT
-
-#endif // !USBCON && (UBRRH || UBRR0H || UBRR1H || UBRR2H || UBRR3H)
-
-// For AT90USB targets use the UART for BT interfacing
-#if defined(USBCON) && ENABLED(BLUETOOTH)
- MSerialBT bluetoothSerial(false);
-#endif
-
-#endif // __AVR__
diff --git a/src/HAL/AVR/MarlinSerial.h b/src/HAL/AVR/MarlinSerial.h
deleted file mode 100644
index 7eb7600..0000000
--- a/src/HAL/AVR/MarlinSerial.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * 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)
- * Modified 01 October 2017 by Eduardo José Tagle (added XON/XOFF)
- * Templatized 01 October 2018 by Eduardo José Tagle to allow multiple instances
- */
-
-#include
-
-#include "../../inc/MarlinConfigPre.h"
-#include "../../core/serial_hook.h"
-
-#ifndef SERIAL_PORT
- #define SERIAL_PORT 0
-#endif
-
-#ifndef USBCON
-
- // 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(registerbase,number,suffix)
- #if SERIAL_PORT == 0 && (!defined(UBRR0H) || !defined(UDR0)) // use un-numbered registers if necessary
- #define _SERIAL_REGNAME(registerbase,number,suffix) registerbase##suffix
- #else
- #define _SERIAL_REGNAME(registerbase,number,suffix) registerbase##number##suffix
- #endif
-
- // Registers used by MarlinSerial class (expanded depending on selected serial port)
-
- // Templated 8bit register (generic)
- #define UART_REGISTER_DECL_BASE(registerbase, suffix) \
- template struct R_##registerbase##x##suffix {}
-
- // Templated 8bit register (specialization for each port)
- #define UART_REGISTER_DECL(port, registerbase, suffix) \
- template<> struct R_##registerbase##x##suffix { \
- constexpr R_##registerbase##x##suffix(int) {} \
- FORCE_INLINE void operator=(uint8_t newVal) const { SERIAL_REGNAME(registerbase,port,suffix) = newVal; } \
- FORCE_INLINE operator uint8_t() const { return SERIAL_REGNAME(registerbase,port,suffix); } \
- }
-
- // Templated 1bit register (generic)
- #define UART_BIT_DECL_BASE(registerbase, suffix, bit) \
- templatestruct B_##bit##x {}
-
- // Templated 1bit register (specialization for each port)
- #define UART_BIT_DECL(port, registerbase, suffix, bit) \
- template<> struct B_##bit##x { \
- constexpr B_##bit##x(int) {} \
- FORCE_INLINE void operator=(int newVal) const { \
- if (newVal) \
- SBI(SERIAL_REGNAME(registerbase,port,suffix),SERIAL_REGNAME(bit,port,)); \
- else \
- CBI(SERIAL_REGNAME(registerbase,port,suffix),SERIAL_REGNAME(bit,port,)); \
- } \
- FORCE_INLINE operator bool() const { return TEST(SERIAL_REGNAME(registerbase,port,suffix),SERIAL_REGNAME(bit,port,)); } \
- }
-
- #define UART_DECL_BASE() \
- UART_REGISTER_DECL_BASE(UCSR,A);\
- UART_REGISTER_DECL_BASE(UDR,);\
- UART_REGISTER_DECL_BASE(UBRR,H);\
- UART_REGISTER_DECL_BASE(UBRR,L);\
- UART_BIT_DECL_BASE(UCSR,B,RXEN);\
- UART_BIT_DECL_BASE(UCSR,B,TXEN);\
- UART_BIT_DECL_BASE(UCSR,A,TXC);\
- UART_BIT_DECL_BASE(UCSR,B,RXCIE);\
- UART_BIT_DECL_BASE(UCSR,A,UDRE);\
- UART_BIT_DECL_BASE(UCSR,A,FE);\
- UART_BIT_DECL_BASE(UCSR,A,DOR);\
- UART_BIT_DECL_BASE(UCSR,B,UDRIE);\
- UART_BIT_DECL_BASE(UCSR,A,RXC);\
- UART_BIT_DECL_BASE(UCSR,A,U2X)
-
- #define UART_DECL(port) \
- UART_REGISTER_DECL(port,UCSR,A);\
- UART_REGISTER_DECL(port,UDR,);\
- UART_REGISTER_DECL(port,UBRR,H);\
- UART_REGISTER_DECL(port,UBRR,L);\
- UART_BIT_DECL(port,UCSR,B,RXEN);\
- UART_BIT_DECL(port,UCSR,B,TXEN);\
- UART_BIT_DECL(port,UCSR,A,TXC);\
- UART_BIT_DECL(port,UCSR,B,RXCIE);\
- UART_BIT_DECL(port,UCSR,A,UDRE);\
- UART_BIT_DECL(port,UCSR,A,FE);\
- UART_BIT_DECL(port,UCSR,A,DOR);\
- UART_BIT_DECL(port,UCSR,B,UDRIE);\
- UART_BIT_DECL(port,UCSR,A,RXC);\
- UART_BIT_DECL(port,UCSR,A,U2X)
-
- // Declare empty templates
- UART_DECL_BASE();
-
- // And all the specializations for each possible serial port
- #if UART_PRESENT(0)
- UART_DECL(0);
- #endif
- #if UART_PRESENT(1)
- UART_DECL(1);
- #endif
- #if UART_PRESENT(2)
- UART_DECL(2);
- #endif
- #if UART_PRESENT(3)
- UART_DECL(3);
- #endif
-
- #define BYTE 0
-
- // Templated type selector
- template struct TypeSelector { typedef T type;} ;
- template struct TypeSelector { typedef F type; };
-
- template
- class MarlinSerial {
- protected:
- // Registers
- static constexpr R_UCSRxA R_UCSRA = 0;
- static constexpr R_UDRx R_UDR = 0;
- static constexpr R_UBRRxH R_UBRRH = 0;
- static constexpr R_UBRRxL R_UBRRL = 0;
-
- // Bits
- static constexpr B_RXENx B_RXEN = 0;
- static constexpr B_TXENx B_TXEN = 0;
- static constexpr B_TXCx B_TXC = 0;
- static constexpr B_RXCIEx B_RXCIE = 0;
- static constexpr B_UDREx B_UDRE = 0;
- static constexpr B_FEx B_FE = 0;
- static constexpr B_DORx B_DOR = 0;
- static constexpr B_UDRIEx B_UDRIE = 0;
- static constexpr B_RXCx B_RXC = 0;
- static constexpr B_U2Xx B_U2X = 0;
-
- // Base size of type on buffer size
- typedef typename TypeSelector<(Cfg::RX_SIZE>256), uint16_t, uint8_t>::type ring_buffer_pos_t;
-
- struct ring_buffer_r {
- volatile ring_buffer_pos_t head, tail;
- unsigned char buffer[Cfg::RX_SIZE];
- };
-
- struct ring_buffer_t {
- volatile uint8_t head, tail;
- unsigned char buffer[Cfg::TX_SIZE];
- };
-
- static ring_buffer_r rx_buffer;
- static ring_buffer_t tx_buffer;
- static bool _written;
-
- static constexpr uint8_t XON_XOFF_CHAR_SENT = 0x80, // XON / XOFF Character was sent
- XON_XOFF_CHAR_MASK = 0x1F; // XON / XOFF character to send
-
- // XON / XOFF character definitions
- static constexpr uint8_t XON_CHAR = 17, XOFF_CHAR = 19;
- static uint8_t xon_xoff_state,
- rx_dropped_bytes,
- rx_buffer_overruns,
- rx_framing_errors;
- static ring_buffer_pos_t rx_max_enqueued;
-
- FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_head();
-
- static volatile bool rx_tail_value_not_stable;
- static volatile uint16_t rx_tail_value_backup;
-
- FORCE_INLINE static void atomic_set_rx_tail(ring_buffer_pos_t value);
- FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_tail();
-
- public:
- FORCE_INLINE static void store_rxd_char();
- FORCE_INLINE static void _tx_udr_empty_irq();
-
- public:
- static void begin(const long);
- static void end();
- static int peek();
- static int read();
- static void flush();
- static ring_buffer_pos_t available();
- static void write(const uint8_t c);
- static void flushTX();
- #if HAS_DGUS_LCD
- static ring_buffer_pos_t get_tx_buffer_free();
- #endif
-
- enum { HasEmergencyParser = Cfg::EMERGENCYPARSER };
- static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
-
- FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
- FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
- FORCE_INLINE static uint8_t framing_errors() { return Cfg::RX_FRAMING_ERRORS ? rx_framing_errors : 0; }
- FORCE_INLINE static ring_buffer_pos_t rxMaxEnqueued() { return Cfg::MAX_RX_QUEUED ? rx_max_enqueued : 0; }
- };
-
- template
- struct MarlinSerialCfg {
- static constexpr int PORT = serial;
- static constexpr unsigned int RX_SIZE = RX_BUFFER_SIZE;
- static constexpr unsigned int TX_SIZE = TX_BUFFER_SIZE;
- static constexpr bool XONOFF = ENABLED(SERIAL_XON_XOFF);
- static constexpr bool EMERGENCYPARSER = ENABLED(EMERGENCY_PARSER);
- static constexpr bool DROPPED_RX = ENABLED(SERIAL_STATS_DROPPED_RX);
- static constexpr bool RX_OVERRUNS = ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS);
- static constexpr bool RX_FRAMING_ERRORS = ENABLED(SERIAL_STATS_RX_FRAMING_ERRORS);
- static constexpr bool MAX_RX_QUEUED = ENABLED(SERIAL_STATS_MAX_RX_QUEUED);
- };
-
- typedef Serial1Class< MarlinSerial< MarlinSerialCfg > > MSerialT1;
- extern MSerialT1 customizedSerial1;
-
- #ifdef SERIAL_PORT_2
- typedef Serial1Class< MarlinSerial< MarlinSerialCfg > > MSerialT2;
- extern MSerialT2 customizedSerial2;
- #endif
-
- #ifdef SERIAL_PORT_3
- typedef Serial1Class< MarlinSerial< MarlinSerialCfg > > MSerialT3;
- extern MSerialT3 customizedSerial3;
- #endif
-
-#endif // !USBCON
-
-#ifdef MMU2_SERIAL_PORT
- template
- struct MMU2SerialCfg {
- static constexpr int PORT = serial;
- static constexpr unsigned int RX_SIZE = 32;
- static constexpr unsigned int TX_SIZE = 32;
- static constexpr bool XONOFF = false;
- static constexpr bool EMERGENCYPARSER = false;
- static constexpr bool DROPPED_RX = false;
- static constexpr bool RX_FRAMING_ERRORS = false;
- static constexpr bool MAX_RX_QUEUED = false;
- static constexpr bool RX_OVERRUNS = false;
- };
-
- typedef Serial1Class< MarlinSerial< MMU2SerialCfg > > MSerialMMU2;
- extern MSerialMMU2 mmuSerial;
-#endif
-
-#ifdef LCD_SERIAL_PORT
-
- template
- struct LCDSerialCfg {
- static constexpr int PORT = serial;
- static constexpr unsigned int RX_SIZE = TERN(HAS_DGUS_LCD, DGUS_RX_BUFFER_SIZE, 64);
- static constexpr unsigned int TX_SIZE = TERN(HAS_DGUS_LCD, DGUS_TX_BUFFER_SIZE, 128);
- static constexpr bool XONOFF = false;
- static constexpr bool EMERGENCYPARSER = ENABLED(EMERGENCY_PARSER);
- static constexpr bool DROPPED_RX = false;
- static constexpr bool RX_FRAMING_ERRORS = false;
- static constexpr bool MAX_RX_QUEUED = false;
- static constexpr bool RX_OVERRUNS = BOTH(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS);
- };
-
- typedef Serial1Class< MarlinSerial< LCDSerialCfg > > MSerialLCD;
- extern MSerialLCD lcdSerial;
-#endif
-
-// Use the UART for Bluetooth in AT90USB configurations
-#if defined(USBCON) && ENABLED(BLUETOOTH)
- typedef Serial1Class MSerialBT;
- extern MSerialBT bluetoothSerial;
-#endif
diff --git a/src/HAL/AVR/Servo.cpp b/src/HAL/AVR/Servo.cpp
deleted file mode 100644
index 0a1ef53..0000000
--- a/src/HAL/AVR/Servo.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * 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), safe_delay(servo_delay[servoIndex]).
- * With DEACTIVATE_SERVOS_AFTER_MOVE it detaches after servo_delay[servoIndex].
- * 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.
- */
-
-#ifdef __AVR__
-
-#include "../../inc/MarlinConfig.h"
-
-#if HAS_SERVOS
-
-#include
-
-#include "../shared/servo.h"
-#include "../shared/servo_private.h"
-
-static volatile int8_t Channel[_Nbr_16timers]; // counter for the servo being pulsed for each timer (or -1 if refresh interval)
-
-
-/************ static functions common to all instances ***********************/
-
-static inline void handle_interrupts(const timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) {
- int8_t cho = Channel[timer]; // Handle the prior Channel[timer] first
- if (cho < 0) // Channel -1 indicates the refresh interval completed...
- *TCNTn = 0; // ...so reset the timer
- else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
- extDigitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
-
- Channel[timer] = ++cho; // Handle the next channel (or 0)
- if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
- *OCRnA = *TCNTn + SERVO(timer, cho).ticks; // set compare to current ticks plus duration
- if (SERVO(timer, cho).Pin.isActive) // activated?
- extDigitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
- }
- else {
- // finished all channels so wait for the refresh period to expire before starting over
- const unsigned int cval = ((unsigned)*TCNTn) + 32 / (SERVO_TIMER_PRESCALER), // allow 32 cycles to ensure the next OCR1A not missed
- ival = (unsigned int)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
- *OCRnA = max(cval, ival);
-
- Channel[timer] = -1; // reset the timer counter to 0 on the next call
- }
-}
-
-#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
-
- // Interrupt handlers for Arduino
- #ifdef _useTimer1
- SIGNAL(TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
- #endif
-
- #ifdef _useTimer3
- SIGNAL(TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
- #endif
-
- #ifdef _useTimer4
- SIGNAL(TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); }
- #endif
-
- #ifdef _useTimer5
- SIGNAL(TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); }
- #endif
-
-#else // WIRING
-
- // Interrupt handlers for Wiring
- #ifdef _useTimer1
- void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
- #endif
- #ifdef _useTimer3
- void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
- #endif
-
-#endif // WIRING
-
-/****************** end of static functions ******************************/
-
-void initISR(const timer16_Sequence_t timer_index) {
- switch (timer_index) {
- default: break;
-
- #ifdef _useTimer1
- case _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
- break;
- #endif
-
- #ifdef _useTimer3
- case _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
- SBI(TIFR3, OCF3A); // clear any pending interrupts;
- SBI(TIMSK3, OCIE3A); // enable the output compare interrupt
- #endif
- #ifdef WIRING
- timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only
- #endif
- break;
- #endif
-
- #ifdef _useTimer4
- case _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
- break;
- #endif
-
- #ifdef _useTimer5
- case _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
- break;
- #endif
- }
-}
-
-void finISR(const timer16_Sequence_t timer_index) {
- // Disable use of the given timer
- #ifdef WIRING
- switch (timer_index) {
- default: break;
-
- case _timer1:
- CBI(
- #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
- TIMSK1
- #else
- TIMSK
- #endif
- , OCIE1A // disable timer 1 output compare interrupt
- );
- timerDetach(TIMER1OUTCOMPAREA_INT);
- break;
-
- case _timer3:
- CBI(
- #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
- TIMSK3
- #else
- ETIMSK
- #endif
- , OCIE3A // disable the timer3 output compare A interrupt
- );
- timerDetach(TIMER3OUTCOMPAREA_INT);
- break;
- }
- #else // !WIRING
- // For arduino - in future: call here to a currently undefined function to reset the timer
- UNUSED(timer_index);
- #endif
-}
-
-#endif // HAS_SERVOS
-
-#endif // __AVR__
diff --git a/src/HAL/AVR/ServoTimers.h b/src/HAL/AVR/ServoTimers.h
deleted file mode 100644
index 436b281..0000000
--- a/src/HAL/AVR/ServoTimers.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * ServoTimers.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
- */
-
-/**
- * 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.
- */
-
-/**
- * AVR Only definitions
- * --------------------
- */
-
-#define TRIM_DURATION 2 // compensation ticks to trim adjust for digitalWrite delays
-#define SERVO_TIMER_PRESCALER 8 // timer prescaler
-
-// Say which 16 bit timers can be used and in what order
-#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
- //#define _useTimer1
- #define _useTimer4
- #if NUM_SERVOS > SERVOS_PER_TIMER
- #define _useTimer3
- #if !HAS_MOTOR_CURRENT_PWM && SERVOS > 2 * SERVOS_PER_TIMER
- #define _useTimer5 // Timer 5 is used for motor current PWM and can't be used for servos.
- #endif
- #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 {
- #ifdef _useTimer1
- _timer1,
- #endif
- #ifdef _useTimer3
- _timer3,
- #endif
- #ifdef _useTimer4
- _timer4,
- #endif
- #ifdef _useTimer5
- _timer5,
- #endif
- _Nbr_16timers
-} timer16_Sequence_t;
diff --git a/src/HAL/AVR/eeprom.cpp b/src/HAL/AVR/eeprom.cpp
deleted file mode 100644
index 8d084de..0000000
--- a/src/HAL/AVR/eeprom.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#ifdef __AVR__
-
-#include "../../inc/MarlinConfig.h"
-
-#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE)
-
-/**
- * PersistentStore for Arduino-style EEPROM interface
- * with implementations supplied by the framework.
- */
-
-#include "../shared/eeprom_api.h"
-
-#ifndef MARLIN_EEPROM_SIZE
- #define MARLIN_EEPROM_SIZE size_t(E2END + 1)
-#endif
-size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
-bool PersistentStore::access_start() { return true; }
-bool PersistentStore::access_finish() { return true; }
-
-bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
- uint16_t written = 0;
- while (size--) {
- uint8_t * const p = (uint8_t * const)pos;
- uint8_t v = *value;
- if (v != eeprom_read_byte(p)) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
- eeprom_write_byte(p, v);
- if (++written & 0x7F) delay(2); else safe_delay(2); // Avoid triggering watchdog during long EEPROM writes
- if (eeprom_read_byte(p) != v) {
- SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
- return true;
- }
- }
- crc16(crc, &v, 1);
- pos++;
- value++;
- }
- return false;
-}
-
-bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
- do {
- uint8_t c = eeprom_read_byte((uint8_t*)pos);
- if (writing) *value = c;
- crc16(crc, &c, 1);
- pos++;
- value++;
- } while (--size);
- return false; // always assume success for AVR's
-}
-
-#endif // EEPROM_SETTINGS || SD_FIRMWARE_UPDATE
-#endif // __AVR__
diff --git a/src/HAL/AVR/endstop_interrupts.h b/src/HAL/AVR/endstop_interrupts.h
deleted file mode 100644
index 0ce8574..0000000
--- a/src/HAL/AVR/endstop_interrupts.h
+++ /dev/null
@@ -1,306 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Endstop Interrupts
- *
- * Without endstop interrupts the endstop pins must be polled continually in
- * the temperature-ISR via endstops.update(), most of the time finding no change.
- * With this feature endstops.update() is called only when we know that at
- * least one endstop has changed state, saving valuable CPU cycles.
- *
- * This feature only works when all used endstop pins can generate either an
- * 'external interrupt' or a 'pin change interrupt'.
- *
- * Test whether pins issue interrupts on your board by flashing 'pin_interrupt_test.ino'.
- * (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino)
- */
-
-#include "../../module/endstops.h"
-
-#include
-
-// One ISR for all EXT-Interrupts
-void endstop_ISR() { endstops.update(); }
-
-/**
- * Patch for pins_arduino.h (...\Arduino\hardware\arduino\avr\variants\mega\pins_arduino.h)
- *
- * These macros for the Arduino MEGA do not include the two connected pins on Port J (D14, D15).
- * So we extend them here because these are the normal pins for Y_MIN and Y_MAX on RAMPS.
- * There are more PCI-enabled processor pins on Port J, but they are not connected to Arduino MEGA.
- */
-#if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
-
- #define digitalPinHasPCICR(p) (WITHIN(p, 10, 15) || WITHIN(p, 50, 53) || WITHIN(p, 62, 69))
-
- #undef digitalPinToPCICR
- #define digitalPinToPCICR(p) (digitalPinHasPCICR(p) ? (&PCICR) : nullptr)
-
- #undef digitalPinToPCICRbit
- #define digitalPinToPCICRbit(p) (WITHIN(p, 10, 13) || WITHIN(p, 50, 53) ? 0 : \
- WITHIN(p, 14, 15) ? 1 : \
- WITHIN(p, 62, 69) ? 2 : \
- 0)
-
- #undef digitalPinToPCMSK
- #define digitalPinToPCMSK(p) (WITHIN(p, 10, 13) || WITHIN(p, 50, 53) ? (&PCMSK0) : \
- WITHIN(p, 14, 15) ? (&PCMSK1) : \
- WITHIN(p, 62, 69) ? (&PCMSK2) : \
- nullptr)
-
- #undef digitalPinToPCMSKbit
- #define digitalPinToPCMSKbit(p) (WITHIN(p, 10, 13) ? ((p) - 6) : \
- (p) == 14 || (p) == 51 ? 2 : \
- (p) == 15 || (p) == 52 ? 1 : \
- (p) == 50 ? 3 : \
- (p) == 53 ? 0 : \
- WITHIN(p, 62, 69) ? ((p) - 62) : \
- 0)
-
-#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324A__) || \
- defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega324PB__) || \
- defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || \
- defined(__AVR_ATmega1284P__)
-
- #define digitalPinHasPCICR(p) WITHIN(p, 0, NUM_DIGITAL_PINS)
-
-#else
-
- #error "Unsupported AVR variant!"
-
-#endif
-
-
-// Install Pin change interrupt for a pin. Can be called multiple times.
-void pciSetup(const int8_t pin) {
- if (digitalPinHasPCICR(pin)) {
- SBI(*digitalPinToPCMSK(pin), digitalPinToPCMSKbit(pin)); // enable pin
- SBI(PCIFR, digitalPinToPCICRbit(pin)); // clear any outstanding interrupt
- SBI(PCICR, digitalPinToPCICRbit(pin)); // enable interrupt for the group
- }
-}
-
-// Handlers for pin change interrupts
-#ifdef PCINT0_vect
- ISR(PCINT0_vect) { endstop_ISR(); }
-#endif
-
-#ifdef PCINT1_vect
- ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect));
-#endif
-
-#ifdef PCINT2_vect
- ISR(PCINT2_vect, ISR_ALIASOF(PCINT0_vect));
-#endif
-
-#ifdef PCINT3_vect
- ISR(PCINT3_vect, ISR_ALIASOF(PCINT0_vect));
-#endif
-
-void setup_endstop_interrupts() {
- #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
- #if HAS_X_MAX
- #if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(X_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(X_MAX_PIN);
- #endif
- #endif
- #if HAS_X_MIN
- #if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(X_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(X_MIN_PIN);
- #endif
- #endif
- #if HAS_Y_MAX
- #if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Y_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Y_MAX_PIN);
- #endif
- #endif
- #if HAS_Y_MIN
- #if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Y_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Y_MIN_PIN);
- #endif
- #endif
- #if HAS_Z_MAX
- #if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z_MAX_PIN);
- #endif
- #endif
- #if HAS_Z_MIN
- #if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z_MIN_PIN);
- #endif
- #endif
- #if HAS_I_MAX
- #if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(I_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable");
- pciSetup(I_MAX_PIN);
- #endif
- #elif HAS_I_MIN
- #if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(I_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(I_MIN_PIN), "I_MIN_PIN is not interrupt-capable");
- pciSetup(I_MIN_PIN);
- #endif
- #endif
- #if HAS_J_MAX
- #if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(J_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable");
- pciSetup(J_MAX_PIN);
- #endif
- #elif HAS_J_MIN
- #if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(J_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(J_MIN_PIN), "J_MIN_PIN is not interrupt-capable");
- pciSetup(J_MIN_PIN);
- #endif
- #endif
- #if HAS_K_MAX
- #if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(K_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable");
- pciSetup(K_MAX_PIN);
- #endif
- #elif HAS_K_MIN
- #if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(K_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(K_MIN_PIN), "K_MIN_PIN is not interrupt-capable");
- pciSetup(K_MIN_PIN);
- #endif
- #endif
- #if HAS_X2_MAX
- #if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(X2_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(X2_MAX_PIN);
- #endif
- #endif
- #if HAS_X2_MIN
- #if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(X2_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(X2_MIN_PIN);
- #endif
- #endif
- #if HAS_Y2_MAX
- #if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Y2_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Y2_MAX_PIN);
- #endif
- #endif
- #if HAS_Y2_MIN
- #if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Y2_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Y2_MIN_PIN);
- #endif
- #endif
- #if HAS_Z2_MAX
- #if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z2_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z2_MAX_PIN);
- #endif
- #endif
- #if HAS_Z2_MIN
- #if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z2_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z2_MIN_PIN);
- #endif
- #endif
- #if HAS_Z3_MAX
- #if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z3_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z3_MAX_PIN);
- #endif
- #endif
- #if HAS_Z3_MIN
- #if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z3_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z3_MIN_PIN);
- #endif
- #endif
- #if HAS_Z4_MAX
- #if (digitalPinToInterrupt(Z4_MAX_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z4_MAX_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z4_MAX_PIN), "Z4_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z4_MAX_PIN);
- #endif
- #endif
- #if HAS_Z4_MIN
- #if (digitalPinToInterrupt(Z4_MIN_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z4_MIN_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z4_MIN_PIN), "Z4_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z4_MIN_PIN);
- #endif
- #endif
- #if HAS_Z_MIN_PROBE_PIN
- #if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
- _ATTACH(Z_MIN_PROBE_PIN);
- #else
- static_assert(digitalPinHasPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
- pciSetup(Z_MIN_PROBE_PIN);
- #endif
- #endif
-
- // If we arrive here without raising an assertion, each pin has either an EXT-interrupt or a PCI.
-}
diff --git a/src/HAL/AVR/fast_pwm.cpp b/src/HAL/AVR/fast_pwm.cpp
deleted file mode 100644
index 0a38417..0000000
--- a/src/HAL/AVR/fast_pwm.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#ifdef __AVR__
-
-#include "../../inc/MarlinConfig.h"
-
-struct Timer {
- volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer
- volatile uint16_t* OCRnQ[3]; // max 3 OCR registers per timer
- volatile uint16_t* ICRn; // max 1 ICR register per timer
- uint8_t n; // the timer number [0->5]
- uint8_t q; // the timer output [0->2] (A->C)
- bool isPWM; // True if pin is a "hardware timer"
- bool isProtected; // True if timer is protected
-};
-
-// Macros for the Timer structure
-#define _SET_WGMnQ(T, V) do{ \
- *(T.TCCRnQ)[0] = (*(T.TCCRnQ)[0] & ~(0x3 << 0)) | (( int(V) & 0x3) << 0); \
- *(T.TCCRnQ)[1] = (*(T.TCCRnQ)[1] & ~(0x3 << 3)) | (((int(V) >> 2) & 0x3) << 3); \
- }while(0)
-
-// Set TCCR CS bits
-#define _SET_CSn(T, V) (*(T.TCCRnQ)[1] = (*(T.TCCRnQ[1]) & ~(0x7 << 0)) | ((int(V) & 0x7) << 0))
-
-// Set TCCR COM bits
-#define _SET_COMnQ(T, Q, V) (*(T.TCCRnQ)[0] = (*(T.TCCRnQ)[0] & ~(0x3 << (6-2*(Q)))) | (int(V) << (6-2*(Q))))
-
-// Set OCRnQ register
-#define _SET_OCRnQ(T, Q, V) (*(T.OCRnQ)[Q] = int(V) & 0xFFFF)
-
-// Set ICRn register (one per timer)
-#define _SET_ICRn(T, V) (*(T.ICRn) = int(V) & 0xFFFF)
-
-/**
- * Return a Timer struct describing a pin's timer.
- */
-const Timer get_pwm_timer(const pin_t pin) {
-
- uint8_t q = 0;
-
- switch (digitalPinToTimer(pin)) {
- #ifdef TCCR0A
- IF_DISABLED(AVR_AT90USB1286_FAMILY, case TIMER0A:)
- #endif
- #ifdef TCCR1A
- case TIMER1A: case TIMER1B:
- #endif
-
- break; // Protect reserved timers (TIMER0 & TIMER1)
-
- #ifdef TCCR0A
- case TIMER0B: // Protected timer, but allow setting the duty cycle on OCR0B for pin D4 only
- return Timer({ { &TCCR0A, nullptr, nullptr }, { (uint16_t*)&OCR0A, (uint16_t*)&OCR0B, nullptr }, nullptr, 0, 1, true, true });
- #endif
-
- #if HAS_TCCR2
- case TIMER2:
- return Timer({ { &TCCR2, nullptr, nullptr }, { (uint16_t*)&OCR2, nullptr, nullptr }, nullptr, 2, 0, true, false });
- #elif ENABLED(USE_OCR2A_AS_TOP)
- case TIMER2A: break; // Protect TIMER2A since its OCR is used by TIMER2B
- case TIMER2B:
- return Timer({ { &TCCR2A, &TCCR2B, nullptr }, { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr }, nullptr, 2, 1, true, false });
- #elif defined(TCCR2A)
- case TIMER2B: ++q; case TIMER2A:
- return Timer({ { &TCCR2A, &TCCR2B, nullptr }, { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr }, nullptr, 2, q, true, false });
- #endif
-
- #ifdef OCR3C
- case TIMER3C: ++q; case TIMER3B: ++q; case TIMER3A:
- return Timer({ { &TCCR3A, &TCCR3B, &TCCR3C }, { &OCR3A, &OCR3B, &OCR3C }, &ICR3, 3, q, true, false });
- #elif defined(OCR3B)
- case TIMER3B: ++q; case TIMER3A:
- return Timer({ { &TCCR3A, &TCCR3B, nullptr }, { &OCR3A, &OCR3B, nullptr }, &ICR3, 3, q, true, false });
- #endif
-
- #ifdef TCCR4A
- case TIMER4C: ++q; case TIMER4B: ++q; case TIMER4A:
- return Timer({ { &TCCR4A, &TCCR4B, &TCCR4C }, { &OCR4A, &OCR4B, &OCR4C }, &ICR4, 4, q, true, false });
- #endif
-
- #ifdef TCCR5A
- case TIMER5C: ++q; case TIMER5B: ++q; case TIMER5A:
- return Timer({ { &TCCR5A, &TCCR5B, &TCCR5C }, { &OCR5A, &OCR5B, &OCR5C }, &ICR5, 5, q, true, false });
- #endif
- }
-
- return Timer();
-}
-
-void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
- const Timer timer = get_pwm_timer(pin);
- if (timer.isProtected || !timer.isPWM) return; // Don't proceed if protected timer or not recognized
-
- const bool is_timer2 = timer.n == 2;
- const uint16_t maxtop = is_timer2 ? 0xFF : 0xFFFF;
-
- uint16_t res = 0xFF; // resolution (TOP value)
- uint8_t j = CS_NONE; // prescaler index
- uint8_t wgm = WGM_PWM_PC_8; // waveform generation mode
-
- // Calculating the prescaler and resolution to use to achieve closest frequency
- if (f_desired != 0) {
- constexpr uint16_t prescaler[] = { 1, 8, (32), 64, (128), 256, 1024 }; // (*) are Timer 2 only
- uint16_t f = (F_CPU) / (2 * 1024 * maxtop) + 1; // Start with the lowest non-zero frequency achievable (1 or 31)
-
- LOOP_L_N(i, COUNT(prescaler)) { // Loop through all prescaler values
- const uint16_t p = prescaler[i];
- uint16_t res_fast_temp, res_pc_temp;
- if (is_timer2) {
- #if ENABLED(USE_OCR2A_AS_TOP) // No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
- const uint16_t rft = (F_CPU) / (p * f_desired);
- res_fast_temp = rft - 1;
- res_pc_temp = rft / 2;
- #else
- res_fast_temp = res_pc_temp = maxtop;
- #endif
- }
- else {
- if (p == 32 || p == 128) continue; // Skip TIMER2 specific prescalers when not TIMER2
- const uint16_t rft = (F_CPU) / (p * f_desired);
- res_fast_temp = rft - 1;
- res_pc_temp = rft / 2;
- }
-
- LIMIT(res_fast_temp, 1U, maxtop);
- LIMIT(res_pc_temp, 1U, maxtop);
-
- // Calculate frequencies of test prescaler and resolution values
- const uint32_t f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
- f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)),
- f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired),
- f_pc_temp = (F_CPU) / (2 * p * res_pc_temp),
- f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired);
-
- if (f_fast_diff < f_diff && f_fast_diff <= f_pc_diff) { // FAST values are closest to desired f
- // Set the Wave Generation Mode to FAST PWM
- wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_FAST_PWM_OCR2A, WGM2_FAST_PWM)) : uint8_t(WGM_FAST_PWM_ICRn);
- // Remember this combination
- f = f_fast_temp; res = res_fast_temp; j = i + 1;
- }
- else if (f_pc_diff < f_diff) { // PHASE CORRECT values are closes to desired f
- // Set the Wave Generation Mode to PWM PHASE CORRECT
- wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_PWM_PC_OCR2A, WGM2_PWM_PC)) : uint8_t(WGM_PWM_PC_ICRn);
- f = f_pc_temp; res = res_pc_temp; j = i + 1;
- }
- }
- }
-
- _SET_WGMnQ(timer, wgm);
- _SET_CSn(timer, j);
-
- if (is_timer2) {
- TERN_(USE_OCR2A_AS_TOP, _SET_OCRnQ(timer, 0, res)); // Set OCR2A value (TOP) = res
- }
- else
- _SET_ICRn(timer, res); // Set ICRn value (TOP) = res
-}
-
-void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
- // If v is 0 or v_size (max), digitalWrite to LOW or HIGH.
- // Note that digitalWrite also disables PWM output for us (sets COM bit to 0)
- if (v == 0)
- digitalWrite(pin, invert);
- else if (v == v_size)
- digitalWrite(pin, !invert);
- else {
- const Timer timer = get_pwm_timer(pin);
- if (timer.isPWM) {
- if (timer.n == 0) {
- _SET_COMnQ(timer, timer.q, COM_CLEAR_SET); // Only allow a TIMER0B select...
- _SET_OCRnQ(timer, timer.q, v); // ...and OCR0B duty update. For output pin D4 no frequency changes are permitted.
- }
- else if (!timer.isProtected) {
- const uint16_t top = timer.n == 2 ? TERN(USE_OCR2A_AS_TOP, *timer.OCRnQ[0], 255) : *timer.ICRn;
- _SET_COMnQ(timer, SUM_TERN(HAS_TCCR2, timer.q, timer.q == 2), COM_CLEAR_SET + invert); // COM20 is on bit 4 of TCCR2, so +1 for q==2
- _SET_OCRnQ(timer, timer.q, uint16_t(uint32_t(v) * top / v_size)); // Scale 8/16-bit v to top value
- }
- }
- else
- digitalWrite(pin, v < v_size / 2 ? LOW : HIGH);
- }
-}
-
-void MarlinHAL::init_pwm_timers() {
- // Init some timer frequencies to a default 1KHz
- const pin_t pwm_pin[] = {
- #ifdef __AVR_ATmega2560__
- 10, 5, 6, 46
- #elif defined(__AVR_ATmega1280__)
- 12, 31
- #elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega1284__)
- 15, 6
- #elif defined(__AVR_AT90USB1286__) || defined(__AVR_mega64) || defined(__AVR_mega128)
- 16, 24
- #endif
- };
-
- LOOP_L_N(i, COUNT(pwm_pin))
- set_pwm_frequency(pwm_pin[i], 1000);
-}
-
-#endif // __AVR__
diff --git a/src/HAL/AVR/fastio.cpp b/src/HAL/AVR/fastio.cpp
deleted file mode 100644
index 5c6ef18..0000000
--- a/src/HAL/AVR/fastio.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * Fast I/O for extended pins
- */
-
-#ifdef __AVR__
-
-#include "fastio.h"
-
-#ifdef FASTIO_EXT_START
-
-#include "../shared/Marduino.h"
-
-#define _IS_EXT(P) WITHIN(P, FASTIO_EXT_START, FASTIO_EXT_END)
-
-void extDigitalWrite(const int8_t pin, const uint8_t state) {
- #define _WCASE(N) case N: WRITE(N, state); break
- switch (pin) {
- default: digitalWrite(pin, state);
- #if _IS_EXT(70)
- _WCASE(70);
- #endif
- #if _IS_EXT(71)
- _WCASE(71);
- #endif
- #if _IS_EXT(72)
- _WCASE(72);
- #endif
- #if _IS_EXT(73)
- _WCASE(73);
- #endif
- #if _IS_EXT(74)
- _WCASE(74);
- #endif
- #if _IS_EXT(75)
- _WCASE(75);
- #endif
- #if _IS_EXT(76)
- _WCASE(76);
- #endif
- #if _IS_EXT(77)
- _WCASE(77);
- #endif
- #if _IS_EXT(78)
- _WCASE(78);
- #endif
- #if _IS_EXT(79)
- _WCASE(79);
- #endif
- #if _IS_EXT(80)
- _WCASE(80);
- #endif
- #if _IS_EXT(81)
- _WCASE(81);
- #endif
- #if _IS_EXT(82)
- _WCASE(82);
- #endif
- #if _IS_EXT(83)
- _WCASE(83);
- #endif
- #if _IS_EXT(84)
- _WCASE(84);
- #endif
- #if _IS_EXT(85)
- _WCASE(85);
- #endif
- #if _IS_EXT(86)
- _WCASE(86);
- #endif
- #if _IS_EXT(87)
- _WCASE(87);
- #endif
- #if _IS_EXT(88)
- _WCASE(88);
- #endif
- #if _IS_EXT(89)
- _WCASE(89);
- #endif
- #if _IS_EXT(90)
- _WCASE(90);
- #endif
- #if _IS_EXT(91)
- _WCASE(91);
- #endif
- #if _IS_EXT(92)
- _WCASE(92);
- #endif
- #if _IS_EXT(93)
- _WCASE(93);
- #endif
- #if _IS_EXT(94)
- _WCASE(94);
- #endif
- #if _IS_EXT(95)
- _WCASE(95);
- #endif
- #if _IS_EXT(96)
- _WCASE(96);
- #endif
- #if _IS_EXT(97)
- _WCASE(97);
- #endif
- #if _IS_EXT(98)
- _WCASE(98);
- #endif
- #if _IS_EXT(99)
- _WCASE(99);
- #endif
- #if _IS_EXT(100)
- _WCASE(100);
- #endif
- }
-}
-
-uint8_t extDigitalRead(const int8_t pin) {
- #define _RCASE(N) case N: return READ(N)
- switch (pin) {
- default: return digitalRead(pin);
- #if _IS_EXT(70)
- _RCASE(70);
- #endif
- #if _IS_EXT(71)
- _RCASE(71);
- #endif
- #if _IS_EXT(72)
- _RCASE(72);
- #endif
- #if _IS_EXT(73)
- _RCASE(73);
- #endif
- #if _IS_EXT(74)
- _RCASE(74);
- #endif
- #if _IS_EXT(75)
- _RCASE(75);
- #endif
- #if _IS_EXT(76)
- _RCASE(76);
- #endif
- #if _IS_EXT(77)
- _RCASE(77);
- #endif
- #if _IS_EXT(78)
- _RCASE(78);
- #endif
- #if _IS_EXT(79)
- _RCASE(79);
- #endif
- #if _IS_EXT(80)
- _RCASE(80);
- #endif
- #if _IS_EXT(81)
- _RCASE(81);
- #endif
- #if _IS_EXT(82)
- _RCASE(82);
- #endif
- #if _IS_EXT(83)
- _RCASE(83);
- #endif
- #if _IS_EXT(84)
- _RCASE(84);
- #endif
- #if _IS_EXT(85)
- _RCASE(85);
- #endif
- #if _IS_EXT(86)
- _RCASE(86);
- #endif
- #if _IS_EXT(87)
- _RCASE(87);
- #endif
- #if _IS_EXT(88)
- _RCASE(88);
- #endif
- #if _IS_EXT(89)
- _RCASE(89);
- #endif
- #if _IS_EXT(90)
- _RCASE(90);
- #endif
- #if _IS_EXT(91)
- _RCASE(91);
- #endif
- #if _IS_EXT(92)
- _RCASE(92);
- #endif
- #if _IS_EXT(93)
- _RCASE(93);
- #endif
- #if _IS_EXT(94)
- _RCASE(94);
- #endif
- #if _IS_EXT(95)
- _RCASE(95);
- #endif
- #if _IS_EXT(96)
- _RCASE(96);
- #endif
- #if _IS_EXT(97)
- _RCASE(97);
- #endif
- #if _IS_EXT(98)
- _RCASE(98);
- #endif
- #if _IS_EXT(99)
- _RCASE(99);
- #endif
- #if _IS_EXT(100)
- _RCASE(100);
- #endif
- }
-}
-
-#if 0
-/**
- * Set Timer 5 PWM frequency in Hz, from 3.8Hz up to ~16MHz
- * with a minimum resolution of 100 steps.
- *
- * DC values -1.0 to 1.0. Negative duty cycle inverts the pulse.
- */
-uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb, const float dcc) {
- float count = 0;
- if (hz > 0 && (dca || dcb || dcc)) {
- count = float(F_CPU) / hz; // 1x prescaler, TOP for 16MHz base freq.
- uint16_t prescaler; // Range of 30.5Hz (65535) 64.5kHz (>31)
-
- if (count >= 255. * 256.) { prescaler = 1024; SET_CS(5, PRESCALER_1024); }
- else if (count >= 255. * 64.) { prescaler = 256; SET_CS(5, PRESCALER_256); }
- else if (count >= 255. * 8.) { prescaler = 64; SET_CS(5, PRESCALER_64); }
- else if (count >= 255.) { prescaler = 8; SET_CS(5, PRESCALER_8); }
- else { prescaler = 1; SET_CS(5, PRESCALER_1); }
-
- count /= float(prescaler);
- const float pwm_top = round(count); // Get the rounded count
-
- ICR5 = (uint16_t)pwm_top - 1; // Subtract 1 for TOP
- OCR5A = pwm_top * ABS(dca); // Update and scale DCs
- OCR5B = pwm_top * ABS(dcb);
- OCR5C = pwm_top * ABS(dcc);
- _SET_COM(5, A, dca ? (dca < 0 ? COM_SET_CLEAR : COM_CLEAR_SET) : COM_NORMAL); // Set compare modes
- _SET_COM(5, B, dcb ? (dcb < 0 ? COM_SET_CLEAR : COM_CLEAR_SET) : COM_NORMAL);
- _SET_COM(5, C, dcc ? (dcc < 0 ? COM_SET_CLEAR : COM_CLEAR_SET) : COM_NORMAL);
-
- SET_WGM(5, FAST_PWM_ICRn); // Fast PWM with ICR5 as TOP
-
- //SERIAL_ECHOLNPGM("Timer 5 Settings:");
- //SERIAL_ECHOLNPGM(" Prescaler=", prescaler);
- //SERIAL_ECHOLNPGM(" TOP=", ICR5);
- //SERIAL_ECHOLNPGM(" OCR5A=", OCR5A);
- //SERIAL_ECHOLNPGM(" OCR5B=", OCR5B);
- //SERIAL_ECHOLNPGM(" OCR5C=", OCR5C);
- }
- else {
- // Restore the default for Timer 5
- SET_WGM(5, PWM_PC_8); // PWM 8-bit (Phase Correct)
- SET_COMS(5, NORMAL, NORMAL, NORMAL); // Do nothing
- SET_CS(5, PRESCALER_64); // 16MHz / 64 = 250kHz
- OCR5A = OCR5B = OCR5C = 0;
- }
- return round(count);
-}
-#endif
-
-#endif // FASTIO_EXT_START
-#endif // __AVR__
diff --git a/src/HAL/AVR/fastio.h b/src/HAL/AVR/fastio.h
deleted file mode 100644
index 51d3b31..0000000
--- a/src/HAL/AVR/fastio.h
+++ /dev/null
@@ -1,350 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Fast I/O Routines for AVR
- * Use direct port manipulation to save scads of processor time.
- * Contributed by Triffid_Hunter and modified by Kliment, thinkyhead, Bob-the-Kuhn, et.al.
- */
-
-#include
-
-#if defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1286P__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB646P__) || defined(__AVR_AT90USB647__)
- #define AVR_AT90USB1286_FAMILY 1
-#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
- #define AVR_ATmega1284_FAMILY 1
-#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
- #define AVR_ATmega2560_FAMILY 1
-#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
- #define AVR_ATmega2561_FAMILY 1
-#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__)
- #define AVR_ATmega328_FAMILY 1
-#endif
-
-/**
- * Include Ports and Functions
- */
-#if AVR_ATmega328_FAMILY
- #include "fastio/fastio_168.h"
-#elif AVR_ATmega1284_FAMILY
- #include "fastio/fastio_644.h"
-#elif AVR_ATmega2560_FAMILY
- #include "fastio/fastio_1280.h"
-#elif AVR_AT90USB1286_FAMILY
- #include "fastio/fastio_AT90USB.h"
-#elif AVR_ATmega2561_FAMILY
- #include "fastio/fastio_1281.h"
-#else
- #error "No FastIO definition for the selected AVR Board."
-#endif
-
-/**
- * Magic I/O routines
- *
- * Now you can simply SET_OUTPUT(PIN); WRITE(PIN, HIGH); WRITE(PIN, LOW);
- *
- * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/cpp/Stringification.html
- */
-
-#define _READ(IO) TEST(DIO ## IO ## _RPORT, DIO ## IO ## _PIN)
-
-#define _WRITE_NC(IO,V) do{ \
- if (V) SBI(DIO ## IO ## _WPORT, DIO ## IO ## _PIN); \
- else CBI(DIO ## IO ## _WPORT, DIO ## IO ## _PIN); \
-}while(0)
-
-#define _WRITE_C(IO,V) do{ \
- uint8_t port_bits = DIO ## IO ## _WPORT; /* Get a mask from the current port bits */ \
- if (V) port_bits = ~port_bits; /* For setting bits, invert the mask */ \
- DIO ## IO ## _RPORT = port_bits & _BV(DIO ## IO ## _PIN); /* Atomically toggle the output port bits */ \
-}while(0)
-
-#define _WRITE(IO,V) do{ if (&(DIO ## IO ## _RPORT) < (uint8_t*)0x100) _WRITE_NC(IO,V); else _WRITE_C(IO,V); }while(0)
-
-#define _TOGGLE(IO) (DIO ## IO ## _RPORT = _BV(DIO ## IO ## _PIN))
-
-#define _SET_INPUT(IO) CBI(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
-#define _SET_OUTPUT(IO) SBI(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
-
-#define _IS_INPUT(IO) !TEST(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
-#define _IS_OUTPUT(IO) TEST(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
-
-// digitalRead/Write wrappers
-#ifdef FASTIO_EXT_START
- void extDigitalWrite(const int8_t pin, const uint8_t state);
- uint8_t extDigitalRead(const int8_t pin);
-#else
- #define extDigitalWrite(IO,V) digitalWrite(IO,V)
- #define extDigitalRead(IO) digitalRead(IO)
-#endif
-
-#define READ(IO) _READ(IO)
-#define WRITE(IO,V) _WRITE(IO,V)
-#define TOGGLE(IO) _TOGGLE(IO)
-
-#define SET_INPUT(IO) _SET_INPUT(IO)
-#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _WRITE(IO, HIGH); }while(0)
-#define SET_INPUT_PULLDOWN SET_INPUT
-#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
-#define SET_PWM SET_OUTPUT
-
-#define IS_INPUT(IO) _IS_INPUT(IO)
-#define IS_OUTPUT(IO) _IS_OUTPUT(IO)
-
-#define OUT_WRITE(IO,V) do{ SET_OUTPUT(IO); WRITE(IO,V); }while(0)
-
-/**
- * Timer and Interrupt Control
- */
-
-// Waveform Generation Modes
-enum WaveGenMode : uint8_t {
- WGM_NORMAL, // 0
- WGM_PWM_PC_8, // 1
- WGM_PWM_PC_9, // 2
- WGM_PWM_PC_10, // 3
- WGM_CTC_OCRnA, // 4 COM OCnx
- WGM_FAST_PWM_8, // 5
- WGM_FAST_PWM_9, // 6
- WGM_FAST_PWM_10, // 7
- WGM_PWM_PC_FC_ICRn, // 8
- WGM_PWM_PC_FC_OCRnA, // 9 COM OCnA
- WGM_PWM_PC_ICRn, // 10
- WGM_PWM_PC_OCRnA, // 11 COM OCnA
- WGM_CTC_ICRn, // 12 COM OCnx
- WGM_reserved, // 13
- WGM_FAST_PWM_ICRn, // 14 COM OCnA
- WGM_FAST_PWM_OCRnA // 15 COM OCnA
-};
-
-// Wavefore Generation Modes (Timer 2 only)
-enum WaveGenMode2 : uint8_t {
- WGM2_NORMAL, // 0
- WGM2_PWM_PC, // 1
- WGM2_CTC_OCR2A, // 2
- WGM2_FAST_PWM, // 3
- WGM2_reserved_1, // 4
- WGM2_PWM_PC_OCR2A, // 5
- WGM2_reserved_2, // 6
- WGM2_FAST_PWM_OCR2A, // 7
-};
-
-// Compare Modes
-enum CompareMode : uint8_t {
- COM_NORMAL, // 0
- COM_TOGGLE, // 1 Non-PWM: OCnx ... Both PWM (WGM 9,11,14,15): OCnA only ... else NORMAL
- COM_CLEAR_SET, // 2 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
- COM_SET_CLEAR // 3 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
-};
-
-// Clock Sources
-enum ClockSource : uint8_t {
- CS_NONE, // 0
- CS_PRESCALER_1, // 1
- CS_PRESCALER_8, // 2
- CS_PRESCALER_64, // 3
- CS_PRESCALER_256, // 4
- CS_PRESCALER_1024, // 5
- CS_EXT_FALLING, // 6
- CS_EXT_RISING // 7
-};
-
-// Clock Sources (Timer 2 only)
-enum ClockSource2 : uint8_t {
- CS2_NONE, // 0
- CS2_PRESCALER_1, // 1
- CS2_PRESCALER_8, // 2
- CS2_PRESCALER_32, // 3
- CS2_PRESCALER_64, // 4
- CS2_PRESCALER_128, // 5
- CS2_PRESCALER_256, // 6
- CS2_PRESCALER_1024 // 7
-};
-
-// Get interrupt bits in an orderly way
-// Ex: cs = GET_CS(0); coma1 = GET_COM(A,1);
-#define GET_WGM(T) (((TCCR##T##A >> WGM##T##0) & 0x3) | ((TCCR##T##B >> WGM##T##2 << 2) & 0xC))
-#define GET_CS(T) ((TCCR##T##B >> CS##T##0) & 0x7)
-#define GET_COM(T,Q) ((TCCR##T##Q >> COM##T##Q##0) & 0x3)
-#define GET_COMA(T) GET_COM(T,A)
-#define GET_COMB(T) GET_COM(T,B)
-#define GET_COMC(T) GET_COM(T,C)
-#define GET_ICNC(T) (!!(TCCR##T##B & _BV(ICNC##T)))
-#define GET_ICES(T) (!!(TCCR##T##B & _BV(ICES##T)))
-#define GET_FOC(T,Q) (!!(TCCR##T##C & _BV(FOC##T##Q)))
-#define GET_FOCA(T) GET_FOC(T,A)
-#define GET_FOCB(T) GET_FOC(T,B)
-#define GET_FOCC(T) GET_FOC(T,C)
-
-// Set Wave Generation Mode bits
-// Ex: SET_WGM(5,CTC_ICRn);
-#define _SET_WGM(T,V) do{ \
- TCCR##T##A = (TCCR##T##A & ~(0x3 << WGM##T##0)) | (( int(V) & 0x3) << WGM##T##0); \
- TCCR##T##B = (TCCR##T##B & ~(0x3 << WGM##T##2)) | (((int(V) >> 2) & 0x3) << WGM##T##2); \
- }while(0)
-#define SET_WGM(T,V) _SET_WGM(T,WGM_##V)
-
-// Set Clock Select bits
-// Ex: SET_CS3(PRESCALER_64);
-#ifdef TCCR2
- #define HAS_TCCR2 1
-#endif
-#define _SET_CS(T,V) (TCCR##T##B = (TCCR##T##B & ~(0x7 << CS##T##0)) | ((int(V) & 0x7) << CS##T##0))
-#define _SET_CS0(V) _SET_CS(0,V)
-#define _SET_CS1(V) _SET_CS(1,V)
-#define _SET_CS3(V) _SET_CS(3,V)
-#define _SET_CS4(V) _SET_CS(4,V)
-#define _SET_CS5(V) _SET_CS(5,V)
-#define SET_CS0(V) _SET_CS0(CS_##V)
-#define SET_CS1(V) _SET_CS1(CS_##V)
-
-#if HAS_TCCR2
- #define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
- #define SET_CS2(V) _SET_CS2(CS2_##V)
-#else
- #define _SET_CS2(V) _SET_CS(2,V)
- #define SET_CS2(V) _SET_CS2(CS_##V)
-#endif
-
-#define SET_CS3(V) _SET_CS3(CS_##V)
-#define SET_CS4(V) _SET_CS4(CS_##V)
-#define SET_CS5(V) _SET_CS5(CS_##V)
-#define SET_CS(T,V) SET_CS##T(V)
-
-// Set Compare Mode bits
-// Ex: SET_COMS(4,CLEAR_SET,CLEAR_SET,CLEAR_SET);
-#define _SET_COM(T,Q,V) (TCCR##T##Q = (TCCR##T##Q & ~(0x3 << COM##T##Q##0)) | (int(V) << COM##T##Q##0))
-#define SET_COM(T,Q,V) _SET_COM(T,Q,COM_##V)
-#define SET_COMA(T,V) SET_COM(T,A,V)
-#define SET_COMB(T,V) SET_COM(T,B,V)
-#define SET_COMC(T,V) SET_COM(T,C,V)
-#define SET_COMS(T,V1,V2,V3) do{ SET_COMA(T,V1); SET_COMB(T,V2); SET_COMC(T,V3); }while(0)
-
-// Set Noise Canceler bit
-// Ex: SET_ICNC(2,1)
-#define SET_ICNC(T,V) (TCCR##T##B = (V) ? TCCR##T##B | _BV(ICNC##T) : TCCR##T##B & ~_BV(ICNC##T))
-
-// Set Input Capture Edge Select bit
-// Ex: SET_ICES(5,0)
-#define SET_ICES(T,V) (TCCR##T##B = (V) ? TCCR##T##B | _BV(ICES##T) : TCCR##T##B & ~_BV(ICES##T))
-
-// Set Force Output Compare bit
-// Ex: SET_FOC(3,A,1)
-#define SET_FOC(T,Q,V) (TCCR##T##C = (V) ? TCCR##T##C | _BV(FOC##T##Q) : TCCR##T##C & ~_BV(FOC##T##Q))
-#define SET_FOCA(T,V) SET_FOC(T,A,V)
-#define SET_FOCB(T,V) SET_FOC(T,B,V)
-#define SET_FOCC(T,V) SET_FOC(T,C,V)
-
-#if 0
-
-/**
- * PWM availability macros
- */
-
-// Determine which hardware PWMs are already in use
-#define _PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == E6_AUTO_FAN_PIN || P == E7_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN || P == COOLER_AUTO_FAN_PIN)
-#if PIN_EXISTS(CONTROLLER_FAN)
- #define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN)
-#else
- #define PWM_CHK_FAN_B(P) _PWM_CHK_FAN_B(P)
-#endif
-
-#if ANY_PIN(FAN, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7)
- #if PIN_EXISTS(FAN7)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN || P == FAN7_PIN)
- #elif PIN_EXISTS(FAN6)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN)
- #elif PIN_EXISTS(FAN5)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN)
- #elif PIN_EXISTS(FAN4)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN)
- #elif PIN_EXISTS(FAN3)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN)
- #elif PIN_EXISTS(FAN2)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN)
- #elif PIN_EXISTS(FAN1)
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN)
- #else
- #define PWM_CHK_FAN_A(P) (P == FAN0_PIN)
- #endif
-#else
- #define PWM_CHK_FAN_A(P) false
-#endif
-
-#if HAS_MOTOR_CURRENT_PWM
- #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
- #define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
- #elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
- #define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z)
- #else
- #define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E)
- #endif
-#else
- #define PWM_CHK_MOTOR_CURRENT(P) false
-#endif
-
-#ifdef NUM_SERVOS
- #if AVR_ATmega2560_FAMILY
- #define PWM_CHK_SERVO(P) (P == 5 || (NUM_SERVOS > 12 && P == 6) || (NUM_SERVOS > 24 && P == 46)) // PWMS 3A, 4A & 5A
- #elif AVR_ATmega2561_FAMILY
- #define PWM_CHK_SERVO(P) (P == 5) // PWM3A
- #elif AVR_ATmega1284_FAMILY
- #define PWM_CHK_SERVO(P) false
- #elif AVR_AT90USB1286_FAMILY
- #define PWM_CHK_SERVO(P) (P == 16) // PWM3A
- #elif AVR_ATmega328_FAMILY
- #define PWM_CHK_SERVO(P) false
- #endif
-#else
- #define PWM_CHK_SERVO(P) false
-#endif
-
-#if ENABLED(BARICUDA)
- #if HAS_HEATER_1 && HAS_HEATER_2
- #define PWM_CHK_HEATER(P) (P == HEATER_1_PIN || P == HEATER_2_PIN)
- #elif HAS_HEATER_1
- #define PWM_CHK_HEATER(P) (P == HEATER_1_PIN)
- #endif
-#else
- #define PWM_CHK_HEATER(P) false
-#endif
-
-#define PWM_CHK(P) (PWM_CHK_HEATER(P) || PWM_CHK_SERVO(P) || PWM_CHK_MOTOR_CURRENT(P) || PWM_CHK_FAN_A(P) || PWM_CHK_FAN_B(P))
-
-#endif // PWM_CHK is not used in Marlin
-
-// define which hardware PWMs are available for the current CPU
-// all timer 1 PWMS deleted from this list because they are never available
-#if AVR_ATmega2560_FAMILY
- #define PWM_PIN(P) ((P >= 2 && P <= 10) || P == 13 || P == 44 || P == 45 || P == 46)
-#elif AVR_ATmega2561_FAMILY
- #define PWM_PIN(P) ((P >= 2 && P <= 6) || P == 9)
-#elif AVR_ATmega1284_FAMILY
- #define PWM_PIN(P) (P == 3 || P == 4 || P == 14 || P == 15)
-#elif AVR_AT90USB1286_FAMILY
- #define PWM_PIN(P) (P == 0 || P == 1 || P == 14 || P == 15 || P == 16 || P == 24)
-#elif AVR_ATmega328_FAMILY
- #define PWM_PIN(P) (P == 3 || P == 5 || P == 6 || P == 11)
-#else
- #error "unknown CPU"
-#endif
diff --git a/src/HAL/AVR/fastio/fastio_1280.h b/src/HAL/AVR/fastio/fastio_1280.h
deleted file mode 100644
index f482f82..0000000
--- a/src/HAL/AVR/fastio/fastio_1280.h
+++ /dev/null
@@ -1,1114 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Pin mapping for the 1280 and 2560
- *
- * Hardware Pin : 02 03 06 07 01 05 15 16 17 18 23 24 25 26 64 63 13 12 46 45 44 43 78 77 76 75 74 73 72 71 60 59 58 57 56 55 54 53 50 70 52 51 42 41 40 39 38 37 36 35 22 21 20 19 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 | 04 08 09 10 11 14 27 28 29 30 31 32 33 34 47 48 49 61 62 65 66 67 68 69 79 80 81 98 99 100
- * Port : E0 E1 E4 E5 G5 E3 H3 H4 H5 H6 B4 B5 B6 B7 J1 J0 H1 H0 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 C1 C0 D7 G2 G1 G0 L7 L6 L5 L4 L3 L2 L1 L0 B3 B2 B1 B0 F0 F1 F2 F3 F4 F5 F6 F7 K0 K1 K2 K3 K4 K5 K6 K7 | E2 E6 E7 xx xx H2 H7 G3 G4 xx xx xx xx xx D4 D5 D6 xx xx J2 J3 J4 J5 J6 J7 xx xx xx xx xx
- * Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 73 75 76 77 74 xx xx xx xx xx
- */
-
-#include "../fastio.h"
-
-// change for your board
-#define DEBUG_LED DIO21
-
-// 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
-
-// Digital I/O
-
-#define DIO0_PIN PINE0
-#define DIO0_RPORT PINE
-#define DIO0_WPORT PORTE
-#define DIO0_DDR DDRE
-#define DIO0_PWM nullptr
-
-#define DIO1_PIN PINE1
-#define DIO1_RPORT PINE
-#define DIO1_WPORT PORTE
-#define DIO1_DDR DDRE
-#define DIO1_PWM nullptr
-
-#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 nullptr
-
-#define DIO12_PIN PINB6
-#define DIO12_RPORT PINB
-#define DIO12_WPORT PORTB
-#define DIO12_DDR DDRB
-#define DIO12_PWM nullptr
-
-#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 nullptr
-
-#define DIO15_PIN PINJ0
-#define DIO15_RPORT PINJ
-#define DIO15_WPORT PORTJ
-#define DIO15_DDR DDRJ
-#define DIO15_PWM nullptr
-
-#define DIO16_PIN PINH1
-#define DIO16_RPORT PINH
-#define DIO16_WPORT PORTH
-#define DIO16_DDR DDRH
-#define DIO16_PWM nullptr
-
-#define DIO17_PIN PINH0
-#define DIO17_RPORT PINH
-#define DIO17_WPORT PORTH
-#define DIO17_DDR DDRH
-#define DIO17_PWM nullptr
-
-#define DIO18_PIN PIND3
-#define DIO18_RPORT PIND
-#define DIO18_WPORT PORTD
-#define DIO18_DDR DDRD
-#define DIO18_PWM nullptr
-
-#define DIO19_PIN PIND2
-#define DIO19_RPORT PIND
-#define DIO19_WPORT PORTD
-#define DIO19_DDR DDRD
-#define DIO19_PWM nullptr
-
-#define DIO20_PIN PIND1
-#define DIO20_RPORT PIND
-#define DIO20_WPORT PORTD
-#define DIO20_DDR DDRD
-#define DIO20_PWM nullptr
-
-#define DIO21_PIN PIND0
-#define DIO21_RPORT PIND
-#define DIO21_WPORT PORTD
-#define DIO21_DDR DDRD
-#define DIO21_PWM nullptr
-
-#define DIO22_PIN PINA0
-#define DIO22_RPORT PINA
-#define DIO22_WPORT PORTA
-#define DIO22_DDR DDRA
-#define DIO22_PWM nullptr
-
-#define DIO23_PIN PINA1
-#define DIO23_RPORT PINA
-#define DIO23_WPORT PORTA
-#define DIO23_DDR DDRA
-#define DIO23_PWM nullptr
-
-#define DIO24_PIN PINA2
-#define DIO24_RPORT PINA
-#define DIO24_WPORT PORTA
-#define DIO24_DDR DDRA
-#define DIO24_PWM nullptr
-
-#define DIO25_PIN PINA3
-#define DIO25_RPORT PINA
-#define DIO25_WPORT PORTA
-#define DIO25_DDR DDRA
-#define DIO25_PWM nullptr
-
-#define DIO26_PIN PINA4
-#define DIO26_RPORT PINA
-#define DIO26_WPORT PORTA
-#define DIO26_DDR DDRA
-#define DIO26_PWM nullptr
-
-#define DIO27_PIN PINA5
-#define DIO27_RPORT PINA
-#define DIO27_WPORT PORTA
-#define DIO27_DDR DDRA
-#define DIO27_PWM nullptr
-
-#define DIO28_PIN PINA6
-#define DIO28_RPORT PINA
-#define DIO28_WPORT PORTA
-#define DIO28_DDR DDRA
-#define DIO28_PWM nullptr
-
-#define DIO29_PIN PINA7
-#define DIO29_RPORT PINA
-#define DIO29_WPORT PORTA
-#define DIO29_DDR DDRA
-#define DIO29_PWM nullptr
-
-#define DIO30_PIN PINC7
-#define DIO30_RPORT PINC
-#define DIO30_WPORT PORTC
-#define DIO30_DDR DDRC
-#define DIO30_PWM nullptr
-
-#define DIO31_PIN PINC6
-#define DIO31_RPORT PINC
-#define DIO31_WPORT PORTC
-#define DIO31_DDR DDRC
-#define DIO31_PWM nullptr
-
-#define DIO32_PIN PINC5
-#define DIO32_RPORT PINC
-#define DIO32_WPORT PORTC
-#define DIO32_DDR DDRC
-#define DIO32_PWM nullptr
-
-#define DIO33_PIN PINC4
-#define DIO33_RPORT PINC
-#define DIO33_WPORT PORTC
-#define DIO33_DDR DDRC
-#define DIO33_PWM nullptr
-
-#define DIO34_PIN PINC3
-#define DIO34_RPORT PINC
-#define DIO34_WPORT PORTC
-#define DIO34_DDR DDRC
-#define DIO34_PWM nullptr
-
-#define DIO35_PIN PINC2
-#define DIO35_RPORT PINC
-#define DIO35_WPORT PORTC
-#define DIO35_DDR DDRC
-#define DIO35_PWM nullptr
-
-#define DIO36_PIN PINC1
-#define DIO36_RPORT PINC
-#define DIO36_WPORT PORTC
-#define DIO36_DDR DDRC
-#define DIO36_PWM nullptr
-
-#define DIO37_PIN PINC0
-#define DIO37_RPORT PINC
-#define DIO37_WPORT PORTC
-#define DIO37_DDR DDRC
-#define DIO37_PWM nullptr
-
-#define DIO38_PIN PIND7
-#define DIO38_RPORT PIND
-#define DIO38_WPORT PORTD
-#define DIO38_DDR DDRD
-#define DIO38_PWM nullptr
-
-#define DIO39_PIN PING2
-#define DIO39_RPORT PING
-#define DIO39_WPORT PORTG
-#define DIO39_DDR DDRG
-#define DIO39_PWM nullptr
-
-#define DIO40_PIN PING1
-#define DIO40_RPORT PING
-#define DIO40_WPORT PORTG
-#define DIO40_DDR DDRG
-#define DIO40_PWM nullptr
-
-#define DIO41_PIN PING0
-#define DIO41_RPORT PING
-#define DIO41_WPORT PORTG
-#define DIO41_DDR DDRG
-#define DIO41_PWM nullptr
-
-#define DIO42_PIN PINL7
-#define DIO42_RPORT PINL
-#define DIO42_WPORT PORTL
-#define DIO42_DDR DDRL
-#define DIO42_PWM nullptr
-
-#define DIO43_PIN PINL6
-#define DIO43_RPORT PINL
-#define DIO43_WPORT PORTL
-#define DIO43_DDR DDRL
-#define DIO43_PWM nullptr
-
-#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 nullptr
-
-#define DIO48_PIN PINL1
-#define DIO48_RPORT PINL
-#define DIO48_WPORT PORTL
-#define DIO48_DDR DDRL
-#define DIO48_PWM nullptr
-
-#define DIO49_PIN PINL0
-#define DIO49_RPORT PINL
-#define DIO49_WPORT PORTL
-#define DIO49_DDR DDRL
-#define DIO49_PWM nullptr
-
-#define DIO50_PIN PINB3
-#define DIO50_RPORT PINB
-#define DIO50_WPORT PORTB
-#define DIO50_DDR DDRB
-#define DIO50_PWM nullptr
-
-#define DIO51_PIN PINB2
-#define DIO51_RPORT PINB
-#define DIO51_WPORT PORTB
-#define DIO51_DDR DDRB
-#define DIO51_PWM nullptr
-
-#define DIO52_PIN PINB1
-#define DIO52_RPORT PINB
-#define DIO52_WPORT PORTB
-#define DIO52_DDR DDRB
-#define DIO52_PWM nullptr
-
-#define DIO53_PIN PINB0
-#define DIO53_RPORT PINB
-#define DIO53_WPORT PORTB
-#define DIO53_DDR DDRB
-#define DIO53_PWM nullptr
-
-#define DIO54_PIN PINF0
-#define DIO54_RPORT PINF
-#define DIO54_WPORT PORTF
-#define DIO54_DDR DDRF
-#define DIO54_PWM nullptr
-
-#define DIO55_PIN PINF1
-#define DIO55_RPORT PINF
-#define DIO55_WPORT PORTF
-#define DIO55_DDR DDRF
-#define DIO55_PWM nullptr
-
-#define DIO56_PIN PINF2
-#define DIO56_RPORT PINF
-#define DIO56_WPORT PORTF
-#define DIO56_DDR DDRF
-#define DIO56_PWM nullptr
-
-#define DIO57_PIN PINF3
-#define DIO57_RPORT PINF
-#define DIO57_WPORT PORTF
-#define DIO57_DDR DDRF
-#define DIO57_PWM nullptr
-
-#define DIO58_PIN PINF4
-#define DIO58_RPORT PINF
-#define DIO58_WPORT PORTF
-#define DIO58_DDR DDRF
-#define DIO58_PWM nullptr
-
-#define DIO59_PIN PINF5
-#define DIO59_RPORT PINF
-#define DIO59_WPORT PORTF
-#define DIO59_DDR DDRF
-#define DIO59_PWM nullptr
-
-#define DIO60_PIN PINF6
-#define DIO60_RPORT PINF
-#define DIO60_WPORT PORTF
-#define DIO60_DDR DDRF
-#define DIO60_PWM nullptr
-
-#define DIO61_PIN PINF7
-#define DIO61_RPORT PINF
-#define DIO61_WPORT PORTF
-#define DIO61_DDR DDRF
-#define DIO61_PWM nullptr
-
-#define DIO62_PIN PINK0
-#define DIO62_RPORT PINK
-#define DIO62_WPORT PORTK
-#define DIO62_DDR DDRK
-#define DIO62_PWM nullptr
-
-#define DIO63_PIN PINK1
-#define DIO63_RPORT PINK
-#define DIO63_WPORT PORTK
-#define DIO63_DDR DDRK
-#define DIO63_PWM nullptr
-
-#define DIO64_PIN PINK2
-#define DIO64_RPORT PINK
-#define DIO64_WPORT PORTK
-#define DIO64_DDR DDRK
-#define DIO64_PWM nullptr
-
-#define DIO65_PIN PINK3
-#define DIO65_RPORT PINK
-#define DIO65_WPORT PORTK
-#define DIO65_DDR DDRK
-#define DIO65_PWM nullptr
-
-#define DIO66_PIN PINK4
-#define DIO66_RPORT PINK
-#define DIO66_WPORT PORTK
-#define DIO66_DDR DDRK
-#define DIO66_PWM nullptr
-
-#define DIO67_PIN PINK5
-#define DIO67_RPORT PINK
-#define DIO67_WPORT PORTK
-#define DIO67_DDR DDRK
-#define DIO67_PWM nullptr
-
-#define DIO68_PIN PINK6
-#define DIO68_RPORT PINK
-#define DIO68_WPORT PORTK
-#define DIO68_DDR DDRK
-#define DIO68_PWM nullptr
-
-#define DIO69_PIN PINK7
-#define DIO69_RPORT PINK
-#define DIO69_WPORT PORTK
-#define DIO69_DDR DDRK
-#define DIO69_PWM nullptr
-
-//#define FASTIO_EXT_START 70
-//#define FASTIO_EXT_END 85
-
-#define DIO70_PIN PING4
-#define DIO70_RPORT PING
-#define DIO70_WPORT PORTG
-#define DIO70_DDR DDRG
-#define DIO70_PWM nullptr
-
-#define DIO71_PIN PING3
-#define DIO71_RPORT PING
-#define DIO71_WPORT PORTG
-#define DIO71_DDR DDRG
-#define DIO71_PWM nullptr
-
-#define DIO72_PIN PINJ2
-#define DIO72_RPORT PINJ
-#define DIO72_WPORT PORTJ
-#define DIO72_DDR DDRJ
-#define DIO72_PWM nullptr
-
-#define DIO73_PIN PINJ3
-#define DIO73_RPORT PINJ
-#define DIO73_WPORT PORTJ
-#define DIO73_DDR DDRJ
-#define DIO73_PWM nullptr
-
-#define DIO74_PIN PINJ7
-#define DIO74_RPORT PINJ
-#define DIO74_WPORT PORTJ
-#define DIO74_DDR DDRJ
-#define DIO74_PWM nullptr
-
-#define DIO75_PIN PINJ4
-#define DIO75_RPORT PINJ
-#define DIO75_WPORT PORTJ
-#define DIO75_DDR DDRJ
-#define DIO75_PWM nullptr
-
-#define DIO76_PIN PINJ5
-#define DIO76_RPORT PINJ
-#define DIO76_WPORT PORTJ
-#define DIO76_DDR DDRJ
-#define DIO76_PWM nullptr
-
-#define DIO77_PIN PINJ6
-#define DIO77_RPORT PINJ
-#define DIO77_WPORT PORTJ
-#define DIO77_DDR DDRJ
-#define DIO77_PWM nullptr
-
-#define DIO78_PIN PINE2
-#define DIO78_RPORT PINE
-#define DIO78_WPORT PORTE
-#define DIO78_DDR DDRE
-#define DIO78_PWM nullptr
-
-#define DIO79_PIN PINE6
-#define DIO79_RPORT PINE
-#define DIO79_WPORT PORTE
-#define DIO79_DDR DDRE
-#define DIO79_PWM nullptr
-
-#define DIO80_PIN PINE7
-#define DIO80_RPORT PINE
-#define DIO80_WPORT PORTE
-#define DIO80_DDR DDRE
-#define DIO80_PWM nullptr
-
-#define DIO81_PIN PIND4
-#define DIO81_RPORT PIND
-#define DIO81_WPORT PORTD
-#define DIO81_DDR DDRD
-#define DIO81_PWM nullptr
-
-#define DIO82_PIN PIND5
-#define DIO82_RPORT PIND
-#define DIO82_WPORT PORTD
-#define DIO82_DDR DDRD
-#define DIO82_PWM nullptr
-
-#define DIO83_PIN PIND6
-#define DIO83_RPORT PIND
-#define DIO83_WPORT PORTD
-#define DIO83_DDR DDRD
-#define DIO83_PWM nullptr
-
-#define DIO84_PIN PINH2
-#define DIO84_RPORT PINH
-#define DIO84_WPORT PORTH
-#define DIO84_DDR DDRH
-#define DIO84_PWM nullptr
-
-#define DIO85_PIN PINH7
-#define DIO85_RPORT PINH
-#define DIO85_WPORT PORTH
-#define DIO85_DDR DDRH
-#define DIO85_PWM nullptr
-
-#undef PA0
-#define PA0_PIN PINA0
-#define PA0_RPORT PINA
-#define PA0_WPORT PORTA
-#define PA0_DDR DDRA
-#define PA0_PWM nullptr
-#undef PA1
-#define PA1_PIN PINA1
-#define PA1_RPORT PINA
-#define PA1_WPORT PORTA
-#define PA1_DDR DDRA
-#define PA1_PWM nullptr
-#undef PA2
-#define PA2_PIN PINA2
-#define PA2_RPORT PINA
-#define PA2_WPORT PORTA
-#define PA2_DDR DDRA
-#define PA2_PWM nullptr
-#undef PA3
-#define PA3_PIN PINA3
-#define PA3_RPORT PINA
-#define PA3_WPORT PORTA
-#define PA3_DDR DDRA
-#define PA3_PWM nullptr
-#undef PA4
-#define PA4_PIN PINA4
-#define PA4_RPORT PINA
-#define PA4_WPORT PORTA
-#define PA4_DDR DDRA
-#define PA4_PWM nullptr
-#undef PA5
-#define PA5_PIN PINA5
-#define PA5_RPORT PINA
-#define PA5_WPORT PORTA
-#define PA5_DDR DDRA
-#define PA5_PWM nullptr
-#undef PA6
-#define PA6_PIN PINA6
-#define PA6_RPORT PINA
-#define PA6_WPORT PORTA
-#define PA6_DDR DDRA
-#define PA6_PWM nullptr
-#undef PA7
-#define PA7_PIN PINA7
-#define PA7_RPORT PINA
-#define PA7_WPORT PORTA
-#define PA7_DDR DDRA
-#define PA7_PWM nullptr
-
-#undef PB0
-#define PB0_PIN PINB0
-#define PB0_RPORT PINB
-#define PB0_WPORT PORTB
-#define PB0_DDR DDRB
-#define PB0_PWM nullptr
-#undef PB1
-#define PB1_PIN PINB1
-#define PB1_RPORT PINB
-#define PB1_WPORT PORTB
-#define PB1_DDR DDRB
-#define PB1_PWM nullptr
-#undef PB2
-#define PB2_PIN PINB2
-#define PB2_RPORT PINB
-#define PB2_WPORT PORTB
-#define PB2_DDR DDRB
-#define PB2_PWM nullptr
-#undef PB3
-#define PB3_PIN PINB3
-#define PB3_RPORT PINB
-#define PB3_WPORT PORTB
-#define PB3_DDR DDRB
-#define PB3_PWM nullptr
-#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 nullptr
-#undef PB6
-#define PB6_PIN PINB6
-#define PB6_RPORT PINB
-#define PB6_WPORT PORTB
-#define PB6_DDR DDRB
-#define PB6_PWM nullptr
-#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 nullptr
-#undef PC1
-#define PC1_PIN PINC1
-#define PC1_RPORT PINC
-#define PC1_WPORT PORTC
-#define PC1_DDR DDRC
-#define PC1_PWM nullptr
-#undef PC2
-#define PC2_PIN PINC2
-#define PC2_RPORT PINC
-#define PC2_WPORT PORTC
-#define PC2_DDR DDRC
-#define PC2_PWM nullptr
-#undef PC3
-#define PC3_PIN PINC3
-#define PC3_RPORT PINC
-#define PC3_WPORT PORTC
-#define PC3_DDR DDRC
-#define PC3_PWM nullptr
-#undef PC4
-#define PC4_PIN PINC4
-#define PC4_RPORT PINC
-#define PC4_WPORT PORTC
-#define PC4_DDR DDRC
-#define PC4_PWM nullptr
-#undef PC5
-#define PC5_PIN PINC5
-#define PC5_RPORT PINC
-#define PC5_WPORT PORTC
-#define PC5_DDR DDRC
-#define PC5_PWM nullptr
-#undef PC6
-#define PC6_PIN PINC6
-#define PC6_RPORT PINC
-#define PC6_WPORT PORTC
-#define PC6_DDR DDRC
-#define PC6_PWM nullptr
-#undef PC7
-#define PC7_PIN PINC7
-#define PC7_RPORT PINC
-#define PC7_WPORT PORTC
-#define PC7_DDR DDRC
-#define PC7_PWM nullptr
-
-#undef PD0
-#define PD0_PIN PIND0
-#define PD0_RPORT PIND
-#define PD0_WPORT PORTD
-#define PD0_DDR DDRD
-#define PD0_PWM nullptr
-#undef PD1
-#define PD1_PIN PIND1
-#define PD1_RPORT PIND
-#define PD1_WPORT PORTD
-#define PD1_DDR DDRD
-#define PD1_PWM nullptr
-#undef PD2
-#define PD2_PIN PIND2
-#define PD2_RPORT PIND
-#define PD2_WPORT PORTD
-#define PD2_DDR DDRD
-#define PD2_PWM nullptr
-#undef PD3
-#define PD3_PIN PIND3
-#define PD3_RPORT PIND
-#define PD3_WPORT PORTD
-#define PD3_DDR DDRD
-#define PD3_PWM nullptr
-#undef PD4
-#define PD4_PIN PIND4
-#define PD4_RPORT PIND
-#define PD4_WPORT PORTD
-#define PD4_DDR DDRD
-#define PD4_PWM nullptr
-#undef PD5
-#define PD5_PIN PIND5
-#define PD5_RPORT PIND
-#define PD5_WPORT PORTD
-#define PD5_DDR DDRD
-#define PD5_PWM nullptr
-#undef PD6
-#define PD6_PIN PIND6
-#define PD6_RPORT PIND
-#define PD6_WPORT PORTD
-#define PD6_DDR DDRD
-#define PD6_PWM nullptr
-#undef PD7
-#define PD7_PIN PIND7
-#define PD7_RPORT PIND
-#define PD7_WPORT PORTD
-#define PD7_DDR DDRD
-#define PD7_PWM nullptr
-
-#undef PE0
-#define PE0_PIN PINE0
-#define PE0_RPORT PINE
-#define PE0_WPORT PORTE
-#define PE0_DDR DDRE
-#define PE0_PWM nullptr
-#undef PE1
-#define PE1_PIN PINE1
-#define PE1_RPORT PINE
-#define PE1_WPORT PORTE
-#define PE1_DDR DDRE
-#define PE1_PWM nullptr
-#undef PE2
-#define PE2_PIN PINE2
-#define PE2_RPORT PINE
-#define PE2_WPORT PORTE
-#define PE2_DDR DDRE
-#define PE2_PWM nullptr
-#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 nullptr
-#undef PE7
-#define PE7_PIN PINE7
-#define PE7_RPORT PINE
-#define PE7_WPORT PORTE
-#define PE7_DDR DDRE
-#define PE7_PWM nullptr
-
-#undef PF0
-#define PF0_PIN PINF0
-#define PF0_RPORT PINF
-#define PF0_WPORT PORTF
-#define PF0_DDR DDRF
-#define PF0_PWM nullptr
-#undef PF1
-#define PF1_PIN PINF1
-#define PF1_RPORT PINF
-#define PF1_WPORT PORTF
-#define PF1_DDR DDRF
-#define PF1_PWM nullptr
-#undef PF2
-#define PF2_PIN PINF2
-#define PF2_RPORT PINF
-#define PF2_WPORT PORTF
-#define PF2_DDR DDRF
-#define PF2_PWM nullptr
-#undef PF3
-#define PF3_PIN PINF3
-#define PF3_RPORT PINF
-#define PF3_WPORT PORTF
-#define PF3_DDR DDRF
-#define PF3_PWM nullptr
-#undef PF4
-#define PF4_PIN PINF4
-#define PF4_RPORT PINF
-#define PF4_WPORT PORTF
-#define PF4_DDR DDRF
-#define PF4_PWM nullptr
-#undef PF5
-#define PF5_PIN PINF5
-#define PF5_RPORT PINF
-#define PF5_WPORT PORTF
-#define PF5_DDR DDRF
-#define PF5_PWM nullptr
-#undef PF6
-#define PF6_PIN PINF6
-#define PF6_RPORT PINF
-#define PF6_WPORT PORTF
-#define PF6_DDR DDRF
-#define PF6_PWM nullptr
-#undef PF7
-#define PF7_PIN PINF7
-#define PF7_RPORT PINF
-#define PF7_WPORT PORTF
-#define PF7_DDR DDRF
-#define PF7_PWM nullptr
-
-#undef PG0
-#define PG0_PIN PING0
-#define PG0_RPORT PING
-#define PG0_WPORT PORTG
-#define PG0_DDR DDRG
-#define PG0_PWM nullptr
-#undef PG1
-#define PG1_PIN PING1
-#define PG1_RPORT PING
-#define PG1_WPORT PORTG
-#define PG1_DDR DDRG
-#define PG1_PWM nullptr
-#undef PG2
-#define PG2_PIN PING2
-#define PG2_RPORT PING
-#define PG2_WPORT PORTG
-#define PG2_DDR DDRG
-#define PG2_PWM nullptr
-#undef PG3
-#define PG3_PIN PING3
-#define PG3_RPORT PING
-#define PG3_WPORT PORTG
-#define PG3_DDR DDRG
-#define PG3_PWM nullptr
-#undef PG4
-#define PG4_PIN PING4
-#define PG4_RPORT PING
-#define PG4_WPORT PORTG
-#define PG4_DDR DDRG
-#define PG4_PWM nullptr
-#undef PG5
-#define PG5_PIN PING5
-#define PG5_RPORT PING
-#define PG5_WPORT PORTG
-#define PG5_DDR DDRG
-#define PG5_PWM &OCR0B
-
-#undef PH0
-#define PH0_PIN PINH0
-#define PH0_RPORT PINH
-#define PH0_WPORT PORTH
-#define PH0_DDR DDRH
-#define PH0_PWM nullptr
-#undef PH1
-#define PH1_PIN PINH1
-#define PH1_RPORT PINH
-#define PH1_WPORT PORTH
-#define PH1_DDR DDRH
-#define PH1_PWM nullptr
-#undef PH2
-#define PH2_PIN PINH2
-#define PH2_RPORT PINH
-#define PH2_WPORT PORTH
-#define PH2_DDR DDRH
-#define PH2_PWM nullptr
-#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 nullptr
-
-#undef PJ0
-#define PJ0_PIN PINJ0
-#define PJ0_RPORT PINJ
-#define PJ0_WPORT PORTJ
-#define PJ0_DDR DDRJ
-#define PJ0_PWM nullptr
-#undef PJ1
-#define PJ1_PIN PINJ1
-#define PJ1_RPORT PINJ
-#define PJ1_WPORT PORTJ
-#define PJ1_DDR DDRJ
-#define PJ1_PWM nullptr
-#undef PJ2
-#define PJ2_PIN PINJ2
-#define PJ2_RPORT PINJ
-#define PJ2_WPORT PORTJ
-#define PJ2_DDR DDRJ
-#define PJ2_PWM nullptr
-#undef PJ3
-#define PJ3_PIN PINJ3
-#define PJ3_RPORT PINJ
-#define PJ3_WPORT PORTJ
-#define PJ3_DDR DDRJ
-#define PJ3_PWM nullptr
-#undef PJ4
-#define PJ4_PIN PINJ4
-#define PJ4_RPORT PINJ
-#define PJ4_WPORT PORTJ
-#define PJ4_DDR DDRJ
-#define PJ4_PWM nullptr
-#undef PJ5
-#define PJ5_PIN PINJ5
-#define PJ5_RPORT PINJ
-#define PJ5_WPORT PORTJ
-#define PJ5_DDR DDRJ
-#define PJ5_PWM nullptr
-#undef PJ6
-#define PJ6_PIN PINJ6
-#define PJ6_RPORT PINJ
-#define PJ6_WPORT PORTJ
-#define PJ6_DDR DDRJ
-#define PJ6_PWM nullptr
-#undef PJ7
-#define PJ7_PIN PINJ7
-#define PJ7_RPORT PINJ
-#define PJ7_WPORT PORTJ
-#define PJ7_DDR DDRJ
-#define PJ7_PWM nullptr
-
-#undef PK0
-#define PK0_PIN PINK0
-#define PK0_RPORT PINK
-#define PK0_WPORT PORTK
-#define PK0_DDR DDRK
-#define PK0_PWM nullptr
-#undef PK1
-#define PK1_PIN PINK1
-#define PK1_RPORT PINK
-#define PK1_WPORT PORTK
-#define PK1_DDR DDRK
-#define PK1_PWM nullptr
-#undef PK2
-#define PK2_PIN PINK2
-#define PK2_RPORT PINK
-#define PK2_WPORT PORTK
-#define PK2_DDR DDRK
-#define PK2_PWM nullptr
-#undef PK3
-#define PK3_PIN PINK3
-#define PK3_RPORT PINK
-#define PK3_WPORT PORTK
-#define PK3_DDR DDRK
-#define PK3_PWM nullptr
-#undef PK4
-#define PK4_PIN PINK4
-#define PK4_RPORT PINK
-#define PK4_WPORT PORTK
-#define PK4_DDR DDRK
-#define PK4_PWM nullptr
-#undef PK5
-#define PK5_PIN PINK5
-#define PK5_RPORT PINK
-#define PK5_WPORT PORTK
-#define PK5_DDR DDRK
-#define PK5_PWM nullptr
-#undef PK6
-#define PK6_PIN PINK6
-#define PK6_RPORT PINK
-#define PK6_WPORT PORTK
-#define PK6_DDR DDRK
-#define PK6_PWM nullptr
-#undef PK7
-#define PK7_PIN PINK7
-#define PK7_RPORT PINK
-#define PK7_WPORT PORTK
-#define PK7_DDR DDRK
-#define PK7_PWM nullptr
-
-#undef PL0
-#define PL0_PIN PINL0
-#define PL0_RPORT PINL
-#define PL0_WPORT PORTL
-#define PL0_DDR DDRL
-#define PL0_PWM nullptr
-#undef PL1
-#define PL1_PIN PINL1
-#define PL1_RPORT PINL
-#define PL1_WPORT PORTL
-#define PL1_DDR DDRL
-#define PL1_PWM nullptr
-#undef PL2
-#define PL2_PIN PINL2
-#define PL2_RPORT PINL
-#define PL2_WPORT PORTL
-#define PL2_DDR DDRL
-#define PL2_PWM nullptr
-#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 nullptr
-#undef PL7
-#define PL7_PIN PINL7
-#define PL7_RPORT PINL
-#define PL7_WPORT PORTL
-#define PL7_DDR DDRL
-#define PL7_PWM nullptr
diff --git a/src/HAL/AVR/fastio/fastio_1281.h b/src/HAL/AVR/fastio/fastio_1281.h
deleted file mode 100644
index e0bc5e2..0000000
--- a/src/HAL/AVR/fastio/fastio_1281.h
+++ /dev/null
@@ -1,715 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Pin mapping for the 1281 and 2561
- *
- * Logical Pin: 38 39 40 41 42 43 44 45 16 10 11 12 06 07 08 09 30 31 32 33 34 35 36 37 17 18 19 20 21 22 23 24 00 01 13 05 02 03 14 15 46 47 48 49 50 51 52 53 25 26 27 28 29 04
- * Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 G0 G1 G2 G3 G4 G5
- */
-
-#include "../fastio.h"
-
-// change for your board
-#define DEBUG_LED DIO46
-
-// 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
-
-// Digital I/O
-
-#define DIO0_PIN PINE0
-#define DIO0_RPORT PINE
-#define DIO0_WPORT PORTE
-#define DIO0_DDR DDRE
-#define DIO0_PWM nullptr
-
-#define DIO1_PIN PINE1
-#define DIO1_RPORT PINE
-#define DIO1_WPORT PORTE
-#define DIO1_DDR DDRE
-#define DIO1_PWM nullptr
-
-#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 nullptr
-
-#define DIO11_PIN PINB2
-#define DIO11_RPORT PINB
-#define DIO11_WPORT PORTB
-#define DIO11_DDR DDRB
-#define DIO11_PWM nullptr
-
-#define DIO12_PIN PINB3
-#define DIO12_RPORT PINB
-#define DIO12_WPORT PORTB
-#define DIO12_DDR DDRB
-#define DIO12_PWM nullptr
-
-#define DIO13_PIN PINE2
-#define DIO13_RPORT PINE
-#define DIO13_WPORT PORTE
-#define DIO13_DDR DDRE
-#define DIO13_PWM nullptr
-
-#define DIO14_PIN PINE6
-#define DIO14_RPORT PINE
-#define DIO14_WPORT PORTE
-#define DIO14_DDR DDRE
-#define DIO14_PWM nullptr
-
-#define DIO15_PIN PINE7
-#define DIO15_RPORT PINE
-#define DIO15_WPORT PORTE
-#define DIO15_DDR DDRE
-#define DIO15_PWM nullptr
-
-#define DIO16_PIN PINB0
-#define DIO16_RPORT PINB
-#define DIO16_WPORT PORTB
-#define DIO16_DDR DDRB
-#define DIO16_PWM nullptr
-
-#define DIO17_PIN PIND0
-#define DIO17_RPORT PIND
-#define DIO17_WPORT PORTD
-#define DIO17_DDR DDRD
-#define DIO17_PWM nullptr
-
-#define DIO18_PIN PIND1
-#define DIO18_RPORT PIND
-#define DIO18_WPORT PORTD
-#define DIO18_DDR DDRD
-#define DIO18_PWM nullptr
-
-#define DIO19_PIN PIND2
-#define DIO19_RPORT PIND
-#define DIO19_WPORT PORTD
-#define DIO19_DDR DDRD
-#define DIO19_PWM nullptr
-
-#define DIO20_PIN PIND3
-#define DIO20_RPORT PIND
-#define DIO20_WPORT PORTD
-#define DIO20_DDR DDRD
-#define DIO20_PWM nullptr
-
-#define DIO21_PIN PIND4
-#define DIO21_RPORT PIND
-#define DIO21_WPORT PORTD
-#define DIO21_DDR DDRD
-#define DIO21_PWM nullptr
-
-#define DIO22_PIN PIND5
-#define DIO22_RPORT PIND
-#define DIO22_WPORT PORTD
-#define DIO22_DDR DDRD
-#define DIO22_PWM nullptr
-
-#define DIO23_PIN PIND6
-#define DIO23_RPORT PIND
-#define DIO23_WPORT PORTD
-#define DIO23_DDR DDRD
-#define DIO23_PWM nullptr
-
-#define DIO24_PIN PIND7
-#define DIO24_RPORT PIND
-#define DIO24_WPORT PORTD
-#define DIO24_DDR DDRD
-#define DIO24_PWM nullptr
-
-#define DIO25_PIN PING0
-#define DIO25_RPORT PING
-#define DIO25_WPORT PORTG
-#define DIO25_DDR DDRG
-#define DIO25_PWM nullptr
-
-#define DIO26_PIN PING1
-#define DIO26_RPORT PING
-#define DIO26_WPORT PORTG
-#define DIO26_DDR DDRG
-#define DIO26_PWM nullptr
-
-#define DIO27_PIN PING2
-#define DIO27_RPORT PING
-#define DIO27_WPORT PORTG
-#define DIO27_DDR DDRG
-#define DIO27_PWM nullptr
-
-#define DIO28_PIN PING3
-#define DIO28_RPORT PING
-#define DIO28_WPORT PORTG
-#define DIO28_DDR DDRG
-#define DIO28_PWM nullptr
-
-#define DIO29_PIN PING4
-#define DIO29_RPORT PING
-#define DIO29_WPORT PORTG
-#define DIO29_DDR DDRG
-#define DIO29_PWM nullptr
-
-#define DIO30_PIN PINC0
-#define DIO30_RPORT PINC
-#define DIO30_WPORT PORTC
-#define DIO30_DDR DDRC
-#define DIO30_PWM nullptr
-
-#define DIO31_PIN PINC1
-#define DIO31_RPORT PINC
-#define DIO31_WPORT PORTC
-#define DIO31_DDR DDRC
-#define DIO31_PWM nullptr
-
-#define DIO32_PIN PINC2
-#define DIO32_RPORT PINC
-#define DIO32_WPORT PORTC
-#define DIO32_DDR DDRC
-#define DIO32_PWM nullptr
-
-#define DIO33_PIN PINC3
-#define DIO33_RPORT PINC
-#define DIO33_WPORT PORTC
-#define DIO33_DDR DDRC
-#define DIO33_PWM nullptr
-
-#define DIO34_PIN PINC4
-#define DIO34_RPORT PINC
-#define DIO34_WPORT PORTC
-#define DIO34_DDR DDRC
-#define DIO34_PWM nullptr
-
-#define DIO35_PIN PINC5
-#define DIO35_RPORT PINC
-#define DIO35_WPORT PORTC
-#define DIO35_DDR DDRC
-#define DIO35_PWM nullptr
-
-#define DIO36_PIN PINC6
-#define DIO36_RPORT PINC
-#define DIO36_WPORT PORTC
-#define DIO36_DDR DDRC
-#define DIO36_PWM nullptr
-
-#define DIO37_PIN PINC7
-#define DIO37_RPORT PINC
-#define DIO37_WPORT PORTC
-#define DIO37_DDR DDRC
-#define DIO37_PWM nullptr
-
-#define DIO38_PIN PINA0
-#define DIO38_RPORT PINA
-#define DIO38_WPORT PORTA
-#define DIO38_DDR DDRA
-#define DIO38_PWM nullptr
-
-#define DIO39_PIN PINA1
-#define DIO39_RPORT PINA
-#define DIO39_WPORT PORTA
-#define DIO39_DDR DDRA
-#define DIO39_PWM nullptr
-
-#define DIO40_PIN PINA2
-#define DIO40_RPORT PINA
-#define DIO40_WPORT PORTA
-#define DIO40_DDR DDRA
-#define DIO40_PWM nullptr
-
-#define DIO41_PIN PINA3
-#define DIO41_RPORT PINA
-#define DIO41_WPORT PORTA
-#define DIO41_DDR DDRA
-#define DIO41_PWM nullptr
-
-#define DIO42_PIN PINA4
-#define DIO42_RPORT PINA
-#define DIO42_WPORT PORTA
-#define DIO42_DDR DDRA
-#define DIO42_PWM nullptr
-
-#define DIO43_PIN PINA5
-#define DIO43_RPORT PINA
-#define DIO43_WPORT PORTA
-#define DIO43_DDR DDRA
-#define DIO43_PWM nullptr
-
-#define DIO44_PIN PINA6
-#define DIO44_RPORT PINA
-#define DIO44_WPORT PORTA
-#define DIO44_DDR DDRA
-#define DIO44_PWM nullptr
-
-#define DIO45_PIN PINA7
-#define DIO45_RPORT PINA
-#define DIO45_WPORT PORTA
-#define DIO45_DDR DDRA
-#define DIO45_PWM nullptr
-
-#define DIO46_PIN PINF0
-#define DIO46_RPORT PINF
-#define DIO46_WPORT PORTF
-#define DIO46_DDR DDRF
-#define DIO46_PWM nullptr
-
-#define DIO47_PIN PINF1
-#define DIO47_RPORT PINF
-#define DIO47_WPORT PORTF
-#define DIO47_DDR DDRF
-#define DIO47_PWM nullptr
-
-#define DIO48_PIN PINF2
-#define DIO48_RPORT PINF
-#define DIO48_WPORT PORTF
-#define DIO48_DDR DDRF
-#define DIO48_PWM nullptr
-
-#define DIO49_PIN PINF3
-#define DIO49_RPORT PINF
-#define DIO49_WPORT PORTF
-#define DIO49_DDR DDRF
-#define DIO49_PWM nullptr
-
-#define DIO50_PIN PINF4
-#define DIO50_RPORT PINF
-#define DIO50_WPORT PORTF
-#define DIO50_DDR DDRF
-#define DIO50_PWM nullptr
-
-#define DIO51_PIN PINF5
-#define DIO51_RPORT PINF
-#define DIO51_WPORT PORTF
-#define DIO51_DDR DDRF
-#define DIO51_PWM nullptr
-
-#define DIO52_PIN PINF6
-#define DIO52_RPORT PINF
-#define DIO52_WPORT PORTF
-#define DIO52_DDR DDRF
-#define DIO52_PWM nullptr
-
-#define DIO53_PIN PINF7
-#define DIO53_RPORT PINF
-#define DIO53_WPORT PORTF
-#define DIO53_DDR DDRF
-#define DIO53_PWM nullptr
-
-#undef PA0
-#define PA0_PIN PINA0
-#define PA0_RPORT PINA
-#define PA0_WPORT PORTA
-#define PA0_DDR DDRA
-#define PA0_PWM nullptr
-#undef PA1
-#define PA1_PIN PINA1
-#define PA1_RPORT PINA
-#define PA1_WPORT PORTA
-#define PA1_DDR DDRA
-#define PA1_PWM nullptr
-#undef PA2
-#define PA2_PIN PINA2
-#define PA2_RPORT PINA
-#define PA2_WPORT PORTA
-#define PA2_DDR DDRA
-#define PA2_PWM nullptr
-#undef PA3
-#define PA3_PIN PINA3
-#define PA3_RPORT PINA
-#define PA3_WPORT PORTA
-#define PA3_DDR DDRA
-#define PA3_PWM nullptr
-#undef PA4
-#define PA4_PIN PINA4
-#define PA4_RPORT PINA
-#define PA4_WPORT PORTA
-#define PA4_DDR DDRA
-#define PA4_PWM nullptr
-#undef PA5
-#define PA5_PIN PINA5
-#define PA5_RPORT PINA
-#define PA5_WPORT PORTA
-#define PA5_DDR DDRA
-#define PA5_PWM nullptr
-#undef PA6
-#define PA6_PIN PINA6
-#define PA6_RPORT PINA
-#define PA6_WPORT PORTA
-#define PA6_DDR DDRA
-#define PA6_PWM nullptr
-#undef PA7
-#define PA7_PIN PINA7
-#define PA7_RPORT PINA
-#define PA7_WPORT PORTA
-#define PA7_DDR DDRA
-#define PA7_PWM nullptr
-
-#undef PB0
-#define PB0_PIN PINB0
-#define PB0_RPORT PINB
-#define PB0_WPORT PORTB
-#define PB0_DDR DDRB
-#define PB0_PWM nullptr
-#undef PB1
-#define PB1_PIN PINB1
-#define PB1_RPORT PINB
-#define PB1_WPORT PORTB
-#define PB1_DDR DDRB
-#define PB1_PWM nullptr
-#undef PB2
-#define PB2_PIN PINB2
-#define PB2_RPORT PINB
-#define PB2_WPORT PORTB
-#define PB2_DDR DDRB
-#define PB2_PWM nullptr
-#undef PB3
-#define PB3_PIN PINB3
-#define PB3_RPORT PINB
-#define PB3_WPORT PORTB
-#define PB3_DDR DDRB
-#define PB3_PWM nullptr
-#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 nullptr
-#undef PB6
-#define PB6_PIN PINB6
-#define PB6_RPORT PINB
-#define PB6_WPORT PORTB
-#define PB6_DDR DDRB
-#define PB6_PWM nullptr
-#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 nullptr
-#undef PC1
-#define PC1_PIN PINC1
-#define PC1_RPORT PINC
-#define PC1_WPORT PORTC
-#define PC1_DDR DDRC
-#define PC1_PWM nullptr
-#undef PC2
-#define PC2_PIN PINC2
-#define PC2_RPORT PINC
-#define PC2_WPORT PORTC
-#define PC2_DDR DDRC
-#define PC2_PWM nullptr
-#undef PC3
-#define PC3_PIN PINC3
-#define PC3_RPORT PINC
-#define PC3_WPORT PORTC
-#define PC3_DDR DDRC
-#define PC3_PWM nullptr
-#undef PC4
-#define PC4_PIN PINC4
-#define PC4_RPORT PINC
-#define PC4_WPORT PORTC
-#define PC4_DDR DDRC
-#define PC4_PWM nullptr
-#undef PC5
-#define PC5_PIN PINC5
-#define PC5_RPORT PINC
-#define PC5_WPORT PORTC
-#define PC5_DDR DDRC
-#define PC5_PWM nullptr
-#undef PC6
-#define PC6_PIN PINC6
-#define PC6_RPORT PINC
-#define PC6_WPORT PORTC
-#define PC6_DDR DDRC
-#define PC6_PWM nullptr
-#undef PC7
-#define PC7_PIN PINC7
-#define PC7_RPORT PINC
-#define PC7_WPORT PORTC
-#define PC7_DDR DDRC
-#define PC7_PWM nullptr
-
-#undef PD0
-#define PD0_PIN PIND0
-#define PD0_RPORT PIND
-#define PD0_WPORT PORTD
-#define PD0_DDR DDRD
-#define PD0_PWM nullptr
-#undef PD1
-#define PD1_PIN PIND1
-#define PD1_RPORT PIND
-#define PD1_WPORT PORTD
-#define PD1_DDR DDRD
-#define PD1_PWM nullptr
-#undef PD2
-#define PD2_PIN PIND2
-#define PD2_RPORT PIND
-#define PD2_WPORT PORTD
-#define PD2_DDR DDRD
-#define PD2_PWM nullptr
-#undef PD3
-#define PD3_PIN PIND3
-#define PD3_RPORT PIND
-#define PD3_WPORT PORTD
-#define PD3_DDR DDRD
-#define PD3_PWM nullptr
-#undef PD4
-#define PD4_PIN PIND4
-#define PD4_RPORT PIND
-#define PD4_WPORT PORTD
-#define PD4_DDR DDRD
-#define PD4_PWM nullptr
-#undef PD5
-#define PD5_PIN PIND5
-#define PD5_RPORT PIND
-#define PD5_WPORT PORTD
-#define PD5_DDR DDRD
-#define PD5_PWM nullptr
-#undef PD6
-#define PD6_PIN PIND6
-#define PD6_RPORT PIND
-#define PD6_WPORT PORTD
-#define PD6_DDR DDRD
-#define PD6_PWM nullptr
-#undef PD7
-#define PD7_PIN PIND7
-#define PD7_RPORT PIND
-#define PD7_WPORT PORTD
-#define PD7_DDR DDRD
-#define PD7_PWM nullptr
-
-#undef PE0
-#define PE0_PIN PINE0
-#define PE0_RPORT PINE
-#define PE0_WPORT PORTE
-#define PE0_DDR DDRE
-#define PE0_PWM nullptr
-#undef PE1
-#define PE1_PIN PINE1
-#define PE1_RPORT PINE
-#define PE1_WPORT PORTE
-#define PE1_DDR DDRE
-#define PE1_PWM nullptr
-#undef PE2
-#define PE2_PIN PINE2
-#define PE2_RPORT PINE
-#define PE2_WPORT PORTE
-#define PE2_DDR DDRE
-#define PE2_PWM nullptr
-#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 nullptr
-#undef PE7
-#define PE7_PIN PINE7
-#define PE7_RPORT PINE
-#define PE7_WPORT PORTE
-#define PE7_DDR DDRE
-#define PE7_PWM nullptr
-
-#undef PF0
-#define PF0_PIN PINF0
-#define PF0_RPORT PINF
-#define PF0_WPORT PORTF
-#define PF0_DDR DDRF
-#define PF0_PWM nullptr
-#undef PF1
-#define PF1_PIN PINF1
-#define PF1_RPORT PINF
-#define PF1_WPORT PORTF
-#define PF1_DDR DDRF
-#define PF1_PWM nullptr
-#undef PF2
-#define PF2_PIN PINF2
-#define PF2_RPORT PINF
-#define PF2_WPORT PORTF
-#define PF2_DDR DDRF
-#define PF2_PWM nullptr
-#undef PF3
-#define PF3_PIN PINF3
-#define PF3_RPORT PINF
-#define PF3_WPORT PORTF
-#define PF3_DDR DDRF
-#define PF3_PWM nullptr
-#undef PF4
-#define PF4_PIN PINF4
-#define PF4_RPORT PINF
-#define PF4_WPORT PORTF
-#define PF4_DDR DDRF
-#define PF4_PWM nullptr
-#undef PF5
-#define PF5_PIN PINF5
-#define PF5_RPORT PINF
-#define PF5_WPORT PORTF
-#define PF5_DDR DDRF
-#define PF5_PWM nullptr
-#undef PF6
-#define PF6_PIN PINF6
-#define PF6_RPORT PINF
-#define PF6_WPORT PORTF
-#define PF6_DDR DDRF
-#define PF6_PWM nullptr
-#undef PF7
-#define PF7_PIN PINF7
-#define PF7_RPORT PINF
-#define PF7_WPORT PORTF
-#define PF7_DDR DDRF
-#define PF7_PWM nullptr
-
-#undef PG0
-#define PG0_PIN PING0
-#define PG0_RPORT PING
-#define PG0_WPORT PORTG
-#define PG0_DDR DDRG
-#define PG0_PWM nullptr
-#undef PG1
-#define PG1_PIN PING1
-#define PG1_RPORT PING
-#define PG1_WPORT PORTG
-#define PG1_DDR DDRG
-#define PG1_PWM nullptr
-#undef PG2
-#define PG2_PIN PING2
-#define PG2_RPORT PING
-#define PG2_WPORT PORTG
-#define PG2_DDR DDRG
-#define PG2_PWM nullptr
-#undef PG3
-#define PG3_PIN PING3
-#define PG3_RPORT PING
-#define PG3_WPORT PORTG
-#define PG3_DDR DDRG
-#define PG3_PWM nullptr
-#undef PG4
-#define PG4_PIN PING4
-#define PG4_RPORT PING
-#define PG4_WPORT PORTG
-#define PG4_DDR DDRG
-#define PG4_PWM nullptr
-#undef PG5
-#define PG5_PIN PING5
-#define PG5_RPORT PING
-#define PG5_WPORT PORTG
-#define PG5_DDR DDRG
-#define PG5_PWM &OCR0B
diff --git a/src/HAL/AVR/fastio/fastio_168.h b/src/HAL/AVR/fastio/fastio_168.h
deleted file mode 100644
index 8cfdd1e..0000000
--- a/src/HAL/AVR/fastio/fastio_168.h
+++ /dev/null
@@ -1,357 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Pin mapping for the 168, 328, and 328P
- *
- * Logical Pin: 08 09 10 11 12 13 14 15 16 17 18 19 20 21 00 01 02 03 04 05 06 07
- * Port: B0 B1 B2 B3 B4 B5 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7
- */
-
-#include "../fastio.h"
-
-#define DEBUG_LED AIO5
-
-// 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
-
-// Digital I/O
-
-#define DIO0_PIN PIND0
-#define DIO0_RPORT PIND
-#define DIO0_WPORT PORTD
-#define DIO0_DDR DDRD
-#define DIO0_PWM nullptr
-
-#define DIO1_PIN PIND1
-#define DIO1_RPORT PIND
-#define DIO1_WPORT PORTD
-#define DIO1_DDR DDRD
-#define DIO1_PWM nullptr
-
-#define DIO2_PIN PIND2
-#define DIO2_RPORT PIND
-#define DIO2_WPORT PORTD
-#define DIO2_DDR DDRD
-#define DIO2_PWM nullptr
-
-#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 nullptr
-
-#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 nullptr
-
-#define DIO8_PIN PINB0
-#define DIO8_RPORT PINB
-#define DIO8_WPORT PORTB
-#define DIO8_DDR DDRB
-#define DIO8_PWM nullptr
-
-#define DIO9_PIN PINB1
-#define DIO9_RPORT PINB
-#define DIO9_WPORT PORTB
-#define DIO9_DDR DDRB
-#define DIO9_PWM nullptr
-
-#define DIO10_PIN PINB2
-#define DIO10_RPORT PINB
-#define DIO10_WPORT PORTB
-#define DIO10_DDR DDRB
-#define DIO10_PWM nullptr
-
-#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 nullptr
-
-#define DIO13_PIN PINB5
-#define DIO13_RPORT PINB
-#define DIO13_WPORT PORTB
-#define DIO13_DDR DDRB
-#define DIO13_PWM nullptr
-
-#define DIO14_PIN PINC0
-#define DIO14_RPORT PINC
-#define DIO14_WPORT PORTC
-#define DIO14_DDR DDRC
-#define DIO14_PWM nullptr
-
-#define DIO15_PIN PINC1
-#define DIO15_RPORT PINC
-#define DIO15_WPORT PORTC
-#define DIO15_DDR DDRC
-#define DIO15_PWM nullptr
-
-#define DIO16_PIN PINC2
-#define DIO16_RPORT PINC
-#define DIO16_WPORT PORTC
-#define DIO16_DDR DDRC
-#define DIO16_PWM nullptr
-
-#define DIO17_PIN PINC3
-#define DIO17_RPORT PINC
-#define DIO17_WPORT PORTC
-#define DIO17_DDR DDRC
-#define DIO17_PWM nullptr
-
-#define DIO18_PIN PINC4
-#define DIO18_RPORT PINC
-#define DIO18_WPORT PORTC
-#define DIO18_DDR DDRC
-#define DIO18_PWM nullptr
-
-#define DIO19_PIN PINC5
-#define DIO19_RPORT PINC
-#define DIO19_WPORT PORTC
-#define DIO19_DDR DDRC
-#define DIO19_PWM nullptr
-
-#define DIO20_PIN PINC6
-#define DIO20_RPORT PINC
-#define DIO20_WPORT PORTC
-#define DIO20_DDR DDRC
-#define DIO20_PWM nullptr
-
-#define DIO21_PIN PINC7
-#define DIO21_RPORT PINC
-#define DIO21_WPORT PORTC
-#define DIO21_DDR DDRC
-#define DIO21_PWM nullptr
-
-#undef PB0
-#define PB0_PIN PINB0
-#define PB0_RPORT PINB
-#define PB0_WPORT PORTB
-#define PB0_DDR DDRB
-#define PB0_PWM nullptr
-
-#undef PB1
-#define PB1_PIN PINB1
-#define PB1_RPORT PINB
-#define PB1_WPORT PORTB
-#define PB1_DDR DDRB
-#define PB1_PWM nullptr
-
-#undef PB2
-#define PB2_PIN PINB2
-#define PB2_RPORT PINB
-#define PB2_WPORT PORTB
-#define PB2_DDR DDRB
-#define PB2_PWM nullptr
-
-#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 nullptr
-
-#undef PB5
-#define PB5_PIN PINB5
-#define PB5_RPORT PINB
-#define PB5_WPORT PORTB
-#define PB5_DDR DDRB
-#define PB5_PWM nullptr
-
-#undef PB6
-#define PB6_PIN PINB6
-#define PB6_RPORT PINB
-#define PB6_WPORT PORTB
-#define PB6_DDR DDRB
-#define PB6_PWM nullptr
-
-#undef PB7
-#define PB7_PIN PINB7
-#define PB7_RPORT PINB
-#define PB7_WPORT PORTB
-#define PB7_DDR DDRB
-#define PB7_PWM nullptr
-
-#undef PC0
-#define PC0_PIN PINC0
-#define PC0_RPORT PINC
-#define PC0_WPORT PORTC
-#define PC0_DDR DDRC
-#define PC0_PWM nullptr
-
-#undef PC1
-#define PC1_PIN PINC1
-#define PC1_RPORT PINC
-#define PC1_WPORT PORTC
-#define PC1_DDR DDRC
-#define PC1_PWM nullptr
-
-#undef PC2
-#define PC2_PIN PINC2
-#define PC2_RPORT PINC
-#define PC2_WPORT PORTC
-#define PC2_DDR DDRC
-#define PC2_PWM nullptr
-
-#undef PC3
-#define PC3_PIN PINC3
-#define PC3_RPORT PINC
-#define PC3_WPORT PORTC
-#define PC3_DDR DDRC
-#define PC3_PWM nullptr
-
-#undef PC4
-#define PC4_PIN PINC4
-#define PC4_RPORT PINC
-#define PC4_WPORT PORTC
-#define PC4_DDR DDRC
-#define PC4_PWM nullptr
-
-#undef PC5
-#define PC5_PIN PINC5
-#define PC5_RPORT PINC
-#define PC5_WPORT PORTC
-#define PC5_DDR DDRC
-#define PC5_PWM nullptr
-
-#undef PC6
-#define PC6_PIN PINC6
-#define PC6_RPORT PINC
-#define PC6_WPORT PORTC
-#define PC6_DDR DDRC
-#define PC6_PWM nullptr
-
-#undef PC7
-#define PC7_PIN PINC7
-#define PC7_RPORT PINC
-#define PC7_WPORT PORTC
-#define PC7_DDR DDRC
-#define PC7_PWM nullptr
-
-#undef PD0
-#define PD0_PIN PIND0
-#define PD0_RPORT PIND
-#define PD0_WPORT PORTD
-#define PD0_DDR DDRD
-#define PD0_PWM nullptr
-
-#undef PD1
-#define PD1_PIN PIND1
-#define PD1_RPORT PIND
-#define PD1_WPORT PORTD
-#define PD1_DDR DDRD
-#define PD1_PWM nullptr
-
-#undef PD2
-#define PD2_PIN PIND2
-#define PD2_RPORT PIND
-#define PD2_WPORT PORTD
-#define PD2_DDR DDRD
-#define PD2_PWM nullptr
-
-#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 nullptr
-
-#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 nullptr
diff --git a/src/HAL/AVR/fastio/fastio_644.h b/src/HAL/AVR/fastio/fastio_644.h
deleted file mode 100644
index f4a9427..0000000
--- a/src/HAL/AVR/fastio/fastio_644.h
+++ /dev/null
@@ -1,552 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Pin mapping for the 644, 644p, 644pa, and 1284p
- *
- * Logical Pin: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- * Port: B0 B1 B2 B3 B4 B5 B6 B7 D0 D1 D2 D3 D4 D5 D6 D7 C0 C1 C2 C3 C4 C5 C6 C7 A7 A6 A5 A4 A3 A2 A1 A0
- */
-
-/** 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
- * +--------+
- */
-
-#include "../fastio.h"
-
-#define DEBUG_LED DIO0
-
-// 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
-
-// Digital I/O
-
-#define DIO0_PIN PINB0
-#define DIO0_RPORT PINB
-#define DIO0_WPORT PORTB
-#define DIO0_DDR DDRB
-#define DIO0_PWM nullptr
-
-#define DIO1_PIN PINB1
-#define DIO1_RPORT PINB
-#define DIO1_WPORT PORTB
-#define DIO1_DDR DDRB
-#define DIO1_PWM nullptr
-
-#define DIO2_PIN PINB2
-#define DIO2_RPORT PINB
-#define DIO2_WPORT PORTB
-#define DIO2_DDR DDRB
-#define DIO2_PWM nullptr
-
-#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 nullptr
-
-#define DIO6_PIN PINB6
-#define DIO6_RPORT PINB
-#define DIO6_WPORT PORTB
-#define DIO6_DDR DDRB
-#define DIO6_PWM nullptr
-
-#define DIO7_PIN PINB7
-#define DIO7_RPORT PINB
-#define DIO7_WPORT PORTB
-#define DIO7_DDR DDRB
-#define DIO7_PWM nullptr
-
-#define DIO8_PIN PIND0
-#define DIO8_RPORT PIND
-#define DIO8_WPORT PORTD
-#define DIO8_DDR DDRD
-#define DIO8_PWM nullptr
-
-#define DIO9_PIN PIND1
-#define DIO9_RPORT PIND
-#define DIO9_WPORT PORTD
-#define DIO9_DDR DDRD
-#define DIO9_PWM nullptr
-
-#define DIO10_PIN PIND2
-#define DIO10_RPORT PIND
-#define DIO10_WPORT PORTD
-#define DIO10_DDR DDRD
-#define DIO10_PWM nullptr
-
-#define DIO11_PIN PIND3
-#define DIO11_RPORT PIND
-#define DIO11_WPORT PORTD
-#define DIO11_DDR DDRD
-#define DIO11_PWM nullptr
-
-#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 nullptr
-
-#define DIO17_PIN PINC1
-#define DIO17_RPORT PINC
-#define DIO17_WPORT PORTC
-#define DIO17_DDR DDRC
-#define DIO17_PWM nullptr
-
-#define DIO18_PIN PINC2
-#define DIO18_RPORT PINC
-#define DIO18_WPORT PORTC
-#define DIO18_DDR DDRC
-#define DIO18_PWM nullptr
-
-#define DIO19_PIN PINC3
-#define DIO19_RPORT PINC
-#define DIO19_WPORT PORTC
-#define DIO19_DDR DDRC
-#define DIO19_PWM nullptr
-
-#define DIO20_PIN PINC4
-#define DIO20_RPORT PINC
-#define DIO20_WPORT PORTC
-#define DIO20_DDR DDRC
-#define DIO20_PWM nullptr
-
-#define DIO21_PIN PINC5
-#define DIO21_RPORT PINC
-#define DIO21_WPORT PORTC
-#define DIO21_DDR DDRC
-#define DIO21_PWM nullptr
-
-#define DIO22_PIN PINC6
-#define DIO22_RPORT PINC
-#define DIO22_WPORT PORTC
-#define DIO22_DDR DDRC
-#define DIO22_PWM nullptr
-
-#define DIO23_PIN PINC7
-#define DIO23_RPORT PINC
-#define DIO23_WPORT PORTC
-#define DIO23_DDR DDRC
-#define DIO23_PWM nullptr
-
-#define DIO24_PIN PINA7
-#define DIO24_RPORT PINA
-#define DIO24_WPORT PORTA
-#define DIO24_DDR DDRA
-#define DIO24_PWM nullptr
-
-#define DIO25_PIN PINA6
-#define DIO25_RPORT PINA
-#define DIO25_WPORT PORTA
-#define DIO25_DDR DDRA
-#define DIO25_PWM nullptr
-
-#define DIO26_PIN PINA5
-#define DIO26_RPORT PINA
-#define DIO26_WPORT PORTA
-#define DIO26_DDR DDRA
-#define DIO26_PWM nullptr
-
-#define DIO27_PIN PINA4
-#define DIO27_RPORT PINA
-#define DIO27_WPORT PORTA
-#define DIO27_DDR DDRA
-#define DIO27_PWM nullptr
-
-#define DIO28_PIN PINA3
-#define DIO28_RPORT PINA
-#define DIO28_WPORT PORTA
-#define DIO28_DDR DDRA
-#define DIO28_PWM nullptr
-
-#define DIO29_PIN PINA2
-#define DIO29_RPORT PINA
-#define DIO29_WPORT PORTA
-#define DIO29_DDR DDRA
-#define DIO29_PWM nullptr
-
-#define DIO30_PIN PINA1
-#define DIO30_RPORT PINA
-#define DIO30_WPORT PORTA
-#define DIO30_DDR DDRA
-#define DIO30_PWM nullptr
-
-#define DIO31_PIN PINA0
-#define DIO31_RPORT PINA
-#define DIO31_WPORT PORTA
-#define DIO31_DDR DDRA
-#define DIO31_PWM nullptr
-
-#define AIO0_PIN PINA0
-#define AIO0_RPORT PINA
-#define AIO0_WPORT PORTA
-#define AIO0_DDR DDRA
-#define AIO0_PWM nullptr
-
-#define AIO1_PIN PINA1
-#define AIO1_RPORT PINA
-#define AIO1_WPORT PORTA
-#define AIO1_DDR DDRA
-#define AIO1_PWM nullptr
-
-#define AIO2_PIN PINA2
-#define AIO2_RPORT PINA
-#define AIO2_WPORT PORTA
-#define AIO2_DDR DDRA
-#define AIO2_PWM nullptr
-
-#define AIO3_PIN PINA3
-#define AIO3_RPORT PINA
-#define AIO3_WPORT PORTA
-#define AIO3_DDR DDRA
-#define AIO3_PWM nullptr
-
-#define AIO4_PIN PINA4
-#define AIO4_RPORT PINA
-#define AIO4_WPORT PORTA
-#define AIO4_DDR DDRA
-#define AIO4_PWM nullptr
-
-#define AIO5_PIN PINA5
-#define AIO5_RPORT PINA
-#define AIO5_WPORT PORTA
-#define AIO5_DDR DDRA
-#define AIO5_PWM nullptr
-
-#define AIO6_PIN PINA6
-#define AIO6_RPORT PINA
-#define AIO6_WPORT PORTA
-#define AIO6_DDR DDRA
-#define AIO6_PWM nullptr
-
-#define AIO7_PIN PINA7
-#define AIO7_RPORT PINA
-#define AIO7_WPORT PORTA
-#define AIO7_DDR DDRA
-#define AIO7_PWM nullptr
-
-#undef PA0
-#define PA0_PIN PINA0
-#define PA0_RPORT PINA
-#define PA0_WPORT PORTA
-#define PA0_DDR DDRA
-#define PA0_PWM nullptr
-
-#undef PA1
-#define PA1_PIN PINA1
-#define PA1_RPORT PINA
-#define PA1_WPORT PORTA
-#define PA1_DDR DDRA
-#define PA1_PWM nullptr
-
-#undef PA2
-#define PA2_PIN PINA2
-#define PA2_RPORT PINA
-#define PA2_WPORT PORTA
-#define PA2_DDR DDRA
-#define PA2_PWM nullptr
-
-#undef PA3
-#define PA3_PIN PINA3
-#define PA3_RPORT PINA
-#define PA3_WPORT PORTA
-#define PA3_DDR DDRA
-#define PA3_PWM nullptr
-
-#undef PA4
-#define PA4_PIN PINA4
-#define PA4_RPORT PINA
-#define PA4_WPORT PORTA
-#define PA4_DDR DDRA
-#define PA4_PWM nullptr
-
-#undef PA5
-#define PA5_PIN PINA5
-#define PA5_RPORT PINA
-#define PA5_WPORT PORTA
-#define PA5_DDR DDRA
-#define PA5_PWM nullptr
-
-#undef PA6
-#define PA6_PIN PINA6
-#define PA6_RPORT PINA
-#define PA6_WPORT PORTA
-#define PA6_DDR DDRA
-#define PA6_PWM nullptr
-
-#undef PA7
-#define PA7_PIN PINA7
-#define PA7_RPORT PINA
-#define PA7_WPORT PORTA
-#define PA7_DDR DDRA
-#define PA7_PWM nullptr
-
-#undef PB0
-#define PB0_PIN PINB0
-#define PB0_RPORT PINB
-#define PB0_WPORT PORTB
-#define PB0_DDR DDRB
-#define PB0_PWM nullptr
-
-#undef PB1
-#define PB1_PIN PINB1
-#define PB1_RPORT PINB
-#define PB1_WPORT PORTB
-#define PB1_DDR DDRB
-#define PB1_PWM nullptr
-
-#undef PB2
-#define PB2_PIN PINB2
-#define PB2_RPORT PINB
-#define PB2_WPORT PORTB
-#define PB2_DDR DDRB
-#define PB2_PWM nullptr
-
-#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 nullptr
-
-#undef PB6
-#define PB6_PIN PINB6
-#define PB6_RPORT PINB
-#define PB6_WPORT PORTB
-#define PB6_DDR DDRB
-#define PB6_PWM nullptr
-
-#undef PB7
-#define PB7_PIN PINB7
-#define PB7_RPORT PINB
-#define PB7_WPORT PORTB
-#define PB7_DDR DDRB
-#define PB7_PWM nullptr
-
-#undef PC0
-#define PC0_PIN PINC0
-#define PC0_RPORT PINC
-#define PC0_WPORT PORTC
-#define PC0_DDR DDRC
-#define PC0_PWM nullptr
-
-#undef PC1
-#define PC1_PIN PINC1
-#define PC1_RPORT PINC
-#define PC1_WPORT PORTC
-#define PC1_DDR DDRC
-#define PC1_PWM nullptr
-
-#undef PC2
-#define PC2_PIN PINC2
-#define PC2_RPORT PINC
-#define PC2_WPORT PORTC
-#define PC2_DDR DDRC
-#define PC2_PWM nullptr
-
-#undef PC3
-#define PC3_PIN PINC3
-#define PC3_RPORT PINC
-#define PC3_WPORT PORTC
-#define PC3_DDR DDRC
-#define PC3_PWM nullptr
-
-#undef PC4
-#define PC4_PIN PINC4
-#define PC4_RPORT PINC
-#define PC4_WPORT PORTC
-#define PC4_DDR DDRC
-#define PC4_PWM nullptr
-
-#undef PC5
-#define PC5_PIN PINC5
-#define PC5_RPORT PINC
-#define PC5_WPORT PORTC
-#define PC5_DDR DDRC
-#define PC5_PWM nullptr
-
-#undef PC6
-#define PC6_PIN PINC6
-#define PC6_RPORT PINC
-#define PC6_WPORT PORTC
-#define PC6_DDR DDRC
-#define PC6_PWM nullptr
-
-#undef PC7
-#define PC7_PIN PINC7
-#define PC7_RPORT PINC
-#define PC7_WPORT PORTC
-#define PC7_DDR DDRC
-#define PC7_PWM nullptr
-
-#undef PD0
-#define PD0_PIN PIND0
-#define PD0_RPORT PIND
-#define PD0_WPORT PORTD
-#define PD0_DDR DDRD
-#define PD0_PWM nullptr
-
-#undef PD1
-#define PD1_PIN PIND1
-#define PD1_RPORT PIND
-#define PD1_WPORT PORTD
-#define PD1_DDR DDRD
-#define PD1_PWM nullptr
-
-#undef PD2
-#define PD2_PIN PIND2
-#define PD2_RPORT PIND
-#define PD2_WPORT PORTD
-#define PD2_DDR DDRD
-#define PD2_PWM nullptr
-
-#undef PD3
-#define PD3_PIN PIND3
-#define PD3_RPORT PIND
-#define PD3_WPORT PORTD
-#define PD3_DDR DDRD
-#define PD3_PWM nullptr
-
-#undef PD4
-#define PD4_PIN PIND4
-#define PD4_RPORT PIND
-#define PD4_WPORT PORTD
-#define PD4_DDR DDRD
-#define PD4_PWM nullptr
-
-#undef PD5
-#define PD5_PIN PIND5
-#define PD5_RPORT PIND
-#define PD5_WPORT PORTD
-#define PD5_DDR DDRD
-#define PD5_PWM nullptr
-
-#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
diff --git a/src/HAL/AVR/fastio/fastio_AT90USB.h b/src/HAL/AVR/fastio/fastio_AT90USB.h
deleted file mode 100644
index 51d400b..0000000
--- a/src/HAL/AVR/fastio/fastio_AT90USB.h
+++ /dev/null
@@ -1,697 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Pin mapping (Teensy) for AT90USB646, 647, 1286, and 1287
- *
- * Logical Pin: 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45
- * Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7
- * The logical pins 46 and 47 are not supported by Teensyduino, but are supported below as E2 and E3
- */
-
-#include "../fastio.h"
-
-// change for your board
-#define DEBUG_LED DIO31 /* led D5 red */
-
-// SPI
-#define SCK DIO21 // 9
-#define MISO DIO23 // 11
-#define MOSI DIO22 // 10
-#define SS DIO20 // 8
-
-// Digital I/O
-
-#define DIO0_PIN PIND0
-#define DIO0_RPORT PIND
-#define DIO0_WPORT PORTD
-#define DIO0_PWM 0
-#define DIO0_DDR DDRD
-
-#define DIO1_PIN PIND1
-#define DIO1_RPORT PIND
-#define DIO1_WPORT PORTD
-#define DIO1_PWM 0
-#define DIO1_DDR DDRD
-
-#define DIO2_PIN PIND2
-#define DIO2_RPORT PIND
-#define DIO2_WPORT PORTD
-#define DIO2_PWM 0
-#define DIO2_DDR DDRD
-
-#define DIO3_PIN PIND3
-#define DIO3_RPORT PIND
-#define DIO3_WPORT PORTD
-#define DIO3_PWM 0
-#define DIO3_DDR DDRD
-
-#define DIO4_PIN PIND4
-#define DIO4_RPORT PIND
-#define DIO4_WPORT PORTD
-#define DIO4_PWM 0
-#define DIO4_DDR DDRD
-
-#define DIO5_PIN PIND5
-#define DIO5_RPORT PIND
-#define DIO5_WPORT PORTD
-#define DIO5_PWM 0
-#define DIO5_DDR DDRD
-
-#define DIO6_PIN PIND6
-#define DIO6_RPORT PIND
-#define DIO6_WPORT PORTD
-#define DIO6_PWM 0
-#define DIO6_DDR DDRD
-
-#define DIO7_PIN PIND7
-#define DIO7_RPORT PIND
-#define DIO7_WPORT PORTD
-#define DIO7_PWM 0
-#define DIO7_DDR DDRD
-
-#define DIO8_PIN PINE0
-#define DIO8_RPORT PINE
-#define DIO8_WPORT PORTE
-#define DIO8_PWM 0
-#define DIO8_DDR DDRE
-
-#define DIO9_PIN PINE1
-#define DIO9_RPORT PINE
-#define DIO9_WPORT PORTE
-#define DIO9_PWM 0
-#define DIO9_DDR DDRE
-
-#define DIO10_PIN PINC0
-#define DIO10_RPORT PINC
-#define DIO10_WPORT PORTC
-#define DIO10_PWM 0
-#define DIO10_DDR DDRC
-
-#define DIO11_PIN PINC1
-#define DIO11_RPORT PINC
-#define DIO11_WPORT PORTC
-#define DIO11_PWM 0
-#define DIO11_DDR DDRC
-
-#define DIO12_PIN PINC2
-#define DIO12_RPORT PINC
-#define DIO12_WPORT PORTC
-#define DIO12_PWM 0
-#define DIO12_DDR DDRC
-
-#define DIO13_PIN PINC3
-#define DIO13_RPORT PINC
-#define DIO13_WPORT PORTC
-#define DIO13_PWM 0
-#define DIO13_DDR DDRC
-
-#define DIO14_PIN PINC4
-#define DIO14_RPORT PINC
-#define DIO14_WPORT PORTC
-#define DIO14_PWM 0 // OC3C
-#define DIO14_DDR DDRC
-
-#define DIO15_PIN PINC5
-#define DIO15_RPORT PINC
-#define DIO15_WPORT PORTC
-#define DIO15_PWM 0 // OC3B
-#define DIO15_DDR DDRC
-
-#define DIO16_PIN PINC6
-#define DIO16_RPORT PINC
-#define DIO16_WPORT PORTC
-#define DIO16_PWM 0 // OC3A
-#define DIO16_DDR DDRC
-
-#define DIO17_PIN PINC7
-#define DIO17_RPORT PINC
-#define DIO17_WPORT PORTC
-#define DIO17_PWM 0
-#define DIO17_DDR DDRC
-
-#define DIO18_PIN PINE6
-#define DIO18_RPORT PINE
-#define DIO18_WPORT PORTE
-#define DIO18_PWM 0
-#define DIO18_DDR DDRE
-
-#define DIO19_PIN PINE7
-#define DIO19_RPORT PINE
-#define DIO19_WPORT PORTE
-#define DIO19_PWM 0
-#define DIO19_DDR DDRE
-
-#define DIO20_PIN PINB0
-#define DIO20_RPORT PINB
-#define DIO20_WPORT PORTB
-#define DIO20_PWM 0
-#define DIO20_DDR DDRB
-
-#define DIO21_PIN PINB1
-#define DIO21_RPORT PINB
-#define DIO21_WPORT PORTB
-#define DIO21_PWM 0
-#define DIO21_DDR DDRB
-
-#define DIO22_PIN PINB2
-#define DIO22_RPORT PINB
-#define DIO22_WPORT PORTB
-#define DIO22_PWM 0
-#define DIO22_DDR DDRB
-
-#define DIO23_PIN PINB3
-#define DIO23_RPORT PINB
-#define DIO23_WPORT PORTB
-#define DIO23_PWM 0
-#define DIO23_DDR DDRB
-
-#define DIO24_PIN PINB4
-#define DIO24_RPORT PINB
-#define DIO24_WPORT PORTB
-#define DIO24_PWM 0 // OC2A
-#define DIO24_DDR DDRB
-
-#define DIO25_PIN PINB5
-#define DIO25_RPORT PINB
-#define DIO25_WPORT PORTB
-#define DIO25_PWM 0 // OC1A
-#define DIO25_DDR DDRB
-
-#define DIO26_PIN PINB6
-#define DIO26_RPORT PINB
-#define DIO26_WPORT PORTB
-#define DIO26_PWM 0 // OC1B
-#define DIO26_DDR DDRB
-
-#define DIO27_PIN PINB7
-#define DIO27_RPORT PINB
-#define DIO27_WPORT PORTB
-#define DIO27_PWM 0 // OC1C
-#define DIO27_DDR DDRB
-
-#define DIO28_PIN PINA0
-#define DIO28_RPORT PINA
-#define DIO28_WPORT PORTA
-#define DIO28_PWM 0
-#define DIO28_DDR DDRA
-
-#define DIO29_PIN PINA1
-#define DIO29_RPORT PINA
-#define DIO29_WPORT PORTA
-#define DIO29_PWM 0
-#define DIO29_DDR DDRA
-
-#define DIO30_PIN PINA2
-#define DIO30_RPORT PINA
-#define DIO30_WPORT PORTA
-#define DIO30_PWM 0
-#define DIO30_DDR DDRA
-
-#define DIO31_PIN PINA3
-#define DIO31_RPORT PINA
-#define DIO31_WPORT PORTA
-#define DIO31_PWM 0
-#define DIO31_DDR DDRA
-
-#define DIO32_PIN PINA4
-#define DIO32_RPORT PINA
-#define DIO32_WPORT PORTA
-#define DIO32_PWM 0
-#define DIO32_DDR DDRA
-
-#define DIO33_PIN PINA5
-#define DIO33_RPORT PINA
-#define DIO33_WPORT PORTA
-#define DIO33_PWM 0
-#define DIO33_DDR DDRA
-
-#define DIO34_PIN PINA6
-#define DIO34_RPORT PINA
-#define DIO34_WPORT PORTA
-#define DIO34_PWM 0
-#define DIO34_DDR DDRA
-
-#define DIO35_PIN PINA7
-#define DIO35_RPORT PINA
-#define DIO35_WPORT PORTA
-#define DIO35_PWM 0
-#define DIO35_DDR DDRA
-
-#define DIO36_PIN PINE4
-#define DIO36_RPORT PINE
-#define DIO36_WPORT PORTE
-#define DIO36_PWM 0
-#define DIO36_DDR DDRE
-
-#define DIO37_PIN PINE5
-#define DIO37_RPORT PINE
-#define DIO37_WPORT PORTE
-#define DIO37_PWM 0
-#define DIO37_DDR DDRE
-
-#define DIO38_PIN PINF0
-#define DIO38_RPORT PINF
-#define DIO38_WPORT PORTF
-#define DIO38_PWM 0
-#define DIO38_DDR DDRF
-
-#define DIO39_PIN PINF1
-#define DIO39_RPORT PINF
-#define DIO39_WPORT PORTF
-#define DIO39_PWM 0
-#define DIO39_DDR DDRF
-
-#define DIO40_PIN PINF2
-#define DIO40_RPORT PINF
-#define DIO40_WPORT PORTF
-#define DIO40_PWM 0
-#define DIO40_DDR DDRF
-
-#define DIO41_PIN PINF3
-#define DIO41_RPORT PINF
-#define DIO41_WPORT PORTF
-#define DIO41_PWM 0
-#define DIO41_DDR DDRF
-
-#define DIO42_PIN PINF4
-#define DIO42_RPORT PINF
-#define DIO42_WPORT PORTF
-#define DIO42_PWM 0
-#define DIO42_DDR DDRF
-
-#define DIO43_PIN PINF5
-#define DIO43_RPORT PINF
-#define DIO43_WPORT PORTF
-#define DIO43_PWM 0
-#define DIO43_DDR DDRF
-
-#define DIO44_PIN PINF6
-#define DIO44_RPORT PINF
-#define DIO44_WPORT PORTF
-#define DIO44_PWM 0
-#define DIO44_DDR DDRF
-
-#define DIO45_PIN PINF7
-#define DIO45_RPORT PINF
-#define DIO45_WPORT PORTF
-#define DIO45_PWM 0
-#define DIO45_DDR DDRF
-
-#define AIO0_PIN PINF0
-#define AIO0_RPORT PINF
-#define AIO0_WPORT PORTF
-#define AIO0_PWM 0
-#define AIO0_DDR DDRF
-
-#define AIO1_PIN PINF1
-#define AIO1_RPORT PINF
-#define AIO1_WPORT PORTF
-#define AIO1_PWM 0
-#define AIO1_DDR DDRF
-
-#define AIO2_PIN PINF2
-#define AIO2_RPORT PINF
-#define AIO2_WPORT PORTF
-#define AIO2_PWM 0
-#define AIO2_DDR DDRF
-
-#define AIO3_PIN PINF3
-#define AIO3_RPORT PINF
-#define AIO3_WPORT PORTF
-#define AIO3_PWM 0
-#define AIO3_DDR DDRF
-
-#define AIO4_PIN PINF4
-#define AIO4_RPORT PINF
-#define AIO4_WPORT PORTF
-#define AIO4_PWM 0
-#define AIO4_DDR DDRF
-
-#define AIO5_PIN PINF5
-#define AIO5_RPORT PINF
-#define AIO5_WPORT PORTF
-#define AIO5_PWM 0
-#define AIO5_DDR DDRF
-
-#define AIO6_PIN PINF6
-#define AIO6_RPORT PINF
-#define AIO6_WPORT PORTF
-#define AIO6_PWM 0
-#define AIO6_DDR DDRF
-
-#define AIO7_PIN PINF7
-#define AIO7_RPORT PINF
-#define AIO7_WPORT PORTF
-#define AIO7_PWM 0
-#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 0
-#define DIO46_DDR DDRE
-
-#define DIO47_PIN PINE3
-#define DIO47_RPORT PINE
-#define DIO47_WPORT PORTE
-#define DIO47_PWM 0
-#define DIO47_DDR DDRE
-
-#define TEENSY_E2 46
-#define TEENSY_E3 47
-
-//-- end not supported by Teensyduino
-
-#undef PA0
-#define PA0_PIN PINA0
-#define PA0_RPORT PINA
-#define PA0_WPORT PORTA
-#define PA0_PWM 0
-#define PA0_DDR DDRA
-#undef PA1
-#define PA1_PIN PINA1
-#define PA1_RPORT PINA
-#define PA1_WPORT PORTA
-#define PA1_PWM 0
-#define PA1_DDR DDRA
-#undef PA2
-#define PA2_PIN PINA2
-#define PA2_RPORT PINA
-#define PA2_WPORT PORTA
-#define PA2_PWM 0
-#define PA2_DDR DDRA
-#undef PA3
-#define PA3_PIN PINA3
-#define PA3_RPORT PINA
-#define PA3_WPORT PORTA
-#define PA3_PWM 0
-#define PA3_DDR DDRA
-#undef PA4
-#define PA4_PIN PINA4
-#define PA4_RPORT PINA
-#define PA4_WPORT PORTA
-#define PA4_PWM 0
-#define PA4_DDR DDRA
-#undef PA5
-#define PA5_PIN PINA5
-#define PA5_RPORT PINA
-#define PA5_WPORT PORTA
-#define PA5_PWM 0
-#define PA5_DDR DDRA
-#undef PA6
-#define PA6_PIN PINA6
-#define PA6_RPORT PINA
-#define PA6_WPORT PORTA
-#define PA6_PWM 0
-#define PA6_DDR DDRA
-#undef PA7
-#define PA7_PIN PINA7
-#define PA7_RPORT PINA
-#define PA7_WPORT PORTA
-#define PA7_PWM 0
-#define PA7_DDR DDRA
-
-#undef PB0
-#define PB0_PIN PINB0
-#define PB0_RPORT PINB
-#define PB0_WPORT PORTB
-#define PB0_PWM 0
-#define PB0_DDR DDRB
-#undef PB1
-#define PB1_PIN PINB1
-#define PB1_RPORT PINB
-#define PB1_WPORT PORTB
-#define PB1_PWM 0
-#define PB1_DDR DDRB
-#undef PB2
-#define PB2_PIN PINB2
-#define PB2_RPORT PINB
-#define PB2_WPORT PORTB
-#define PB2_PWM 0
-#define PB2_DDR DDRB
-#undef PB3
-#define PB3_PIN PINB3
-#define PB3_RPORT PINB
-#define PB3_WPORT PORTB
-#define PB3_PWM 0
-#define PB3_DDR DDRB
-#undef PB4
-#define PB4_PIN PINB4
-#define PB4_RPORT PINB
-#define PB4_WPORT PORTB
-#define PB4_PWM 0
-#define PB4_DDR DDRB
-#undef PB5
-#define PB5_PIN PINB5
-#define PB5_RPORT PINB
-#define PB5_WPORT PORTB
-#define PB5_PWM 0
-#define PB5_DDR DDRB
-#undef PB6
-#define PB6_PIN PINB6
-#define PB6_RPORT PINB
-#define PB6_WPORT PORTB
-#define PB6_PWM 0
-#define PB6_DDR DDRB
-#undef PB7
-#define PB7_PIN PINB7
-#define PB7_RPORT PINB
-#define PB7_WPORT PORTB
-#define PB7_PWM 0
-#define PB7_DDR DDRB
-
-#undef PC0
-#define PC0_PIN PINC0
-#define PC0_RPORT PINC
-#define PC0_WPORT PORTC
-#define PC0_PWM 0
-#define PC0_DDR DDRC
-#undef PC1
-#define PC1_PIN PINC1
-#define PC1_RPORT PINC
-#define PC1_WPORT PORTC
-#define PC1_PWM 0
-#define PC1_DDR DDRC
-#undef PC2
-#define PC2_PIN PINC2
-#define PC2_RPORT PINC
-#define PC2_WPORT PORTC
-#define PC2_PWM 0
-#define PC2_DDR DDRC
-#undef PC3
-#define PC3_PIN PINC3
-#define PC3_RPORT PINC
-#define PC3_WPORT PORTC
-#define PC3_PWM 0
-#define PC3_DDR DDRC
-#undef PC4
-#define PC4_PIN PINC4
-#define PC4_RPORT PINC
-#define PC4_WPORT PORTC
-#define PC4_PWM 0
-#define PC4_DDR DDRC
-#undef PC5
-#define PC5_PIN PINC5
-#define PC5_RPORT PINC
-#define PC5_WPORT PORTC
-#define PC5_PWM 0
-#define PC5_DDR DDRC
-#undef PC6
-#define PC6_PIN PINC6
-#define PC6_RPORT PINC
-#define PC6_WPORT PORTC
-#define PC6_PWM 0
-#define PC6_DDR DDRC
-#undef PC7
-#define PC7_PIN PINC7
-#define PC7_RPORT PINC
-#define PC7_WPORT PORTC
-#define PC7_PWM 0
-#define PC7_DDR DDRC
-
-#undef PD0
-#define PD0_PIN PIND0
-#define PD0_RPORT PIND
-#define PD0_WPORT PORTD
-#define PD0_PWM 0 // OC0B
-#define PD0_DDR DDRD
-#undef PD1
-#define PD1_PIN PIND1
-#define PD1_RPORT PIND
-#define PD1_WPORT PORTD
-#define PD1_PWM 0 // OC2B
-#define PD1_DDR DDRD
-#undef PD2
-#define PD2_PIN PIND2
-#define PD2_RPORT PIND
-#define PD2_WPORT PORTD
-#define PD2_PWM 0
-#define PD2_DDR DDRD
-#undef PD3
-#define PD3_PIN PIND3
-#define PD3_RPORT PIND
-#define PD3_WPORT PORTD
-#define PD3_PWM 0
-#define PD3_DDR DDRD
-#undef PD4
-#define PD4_PIN PIND4
-#define PD4_RPORT PIND
-#define PD4_WPORT PORTD
-#define PD4_PWM 0
-#define PD4_DDR DDRD
-#undef PD5
-#define PD5_PIN PIND5
-#define PD5_RPORT PIND
-#define PD5_WPORT PORTD
-#define PD5_PWM 0
-#define PD5_DDR DDRD
-#undef PD6
-#define PD6_PIN PIND6
-#define PD6_RPORT PIND
-#define PD6_WPORT PORTD
-#define PD6_PWM 0
-#define PD6_DDR DDRD
-#undef PD7
-#define PD7_PIN PIND7
-#define PD7_RPORT PIND
-#define PD7_WPORT PORTD
-#define PD7_PWM 0
-#define PD7_DDR DDRD
-
-#undef PE0
-#define PE0_PIN PINE0
-#define PE0_RPORT PINE
-#define PE0_WPORT PORTE
-#define PE0_PWM 0
-#define PE0_DDR DDRE
-#undef PE1
-#define PE1_PIN PINE1
-#define PE1_RPORT PINE
-#define PE1_WPORT PORTE
-#define PE1_PWM 0
-#define PE1_DDR DDRE
-#undef PE2
-#define PE2_PIN PINE2
-#define PE2_RPORT PINE
-#define PE2_WPORT PORTE
-#define PE2_PWM 0
-#define PE2_DDR DDRE
-#undef PE3
-#define PE3_PIN PINE3
-#define PE3_RPORT PINE
-#define PE3_WPORT PORTE
-#define PE3_PWM 0
-#define PE3_DDR DDRE
-#undef PE4
-#define PE4_PIN PINE4
-#define PE4_RPORT PINE
-#define PE4_WPORT PORTE
-#define PE4_PWM 0
-#define PE4_DDR DDRE
-#undef PE5
-#define PE5_PIN PINE5
-#define PE5_RPORT PINE
-#define PE5_WPORT PORTE
-#define PE5_PWM 0
-#define PE5_DDR DDRE
-#undef PE6
-#define PE6_PIN PINE6
-#define PE6_RPORT PINE
-#define PE6_WPORT PORTE
-#define PE6_PWM 0
-#define PE6_DDR DDRE
-#undef PE7
-#define PE7_PIN PINE7
-#define PE7_RPORT PINE
-#define PE7_WPORT PORTE
-#define PE7_PWM 0
-#define PE7_DDR DDRE
-
-#undef PF0
-#define PF0_PIN PINF0
-#define PF0_RPORT PINF
-#define PF0_WPORT PORTF
-#define PF0_PWM 0
-#define PF0_DDR DDRF
-#undef PF1
-#define PF1_PIN PINF1
-#define PF1_RPORT PINF
-#define PF1_WPORT PORTF
-#define PF1_PWM 0
-#define PF1_DDR DDRF
-#undef PF2
-#define PF2_PIN PINF2
-#define PF2_RPORT PINF
-#define PF2_WPORT PORTF
-#define PF2_PWM 0
-#define PF2_DDR DDRF
-#undef PF3
-#define PF3_PIN PINF3
-#define PF3_RPORT PINF
-#define PF3_WPORT PORTF
-#define PF3_PWM 0
-#define PF3_DDR DDRF
-#undef PF4
-#define PF4_PIN PINF4
-#define PF4_RPORT PINF
-#define PF4_WPORT PORTF
-#define PF4_PWM 0
-#define PF4_DDR DDRF
-#undef PF5
-#define PF5_PIN PINF5
-#define PF5_RPORT PINF
-#define PF5_WPORT PORTF
-#define PF5_PWM 0
-#define PF5_DDR DDRF
-#undef PF6
-#define PF6_PIN PINF6
-#define PF6_RPORT PINF
-#define PF6_WPORT PORTF
-#define PF6_PWM 0
-#define PF6_DDR DDRF
-#undef PF7
-#define PF7_PIN PINF7
-#define PF7_RPORT PINF
-#define PF7_WPORT PORTF
-#define PF7_PWM 0
-#define PF7_DDR DDRF
-
-
-/**
- * Some of the pin mapping functions of the Teensduino extension to the Arduino IDE
- * do not function the same as the other Arduino extensions.
- */
-
-//digitalPinToTimer(pin) function works like Arduino but Timers are not defined
-#define TIMER0B 1
-#define TIMER1A 7
-#define TIMER1B 8
-#define TIMER1C 9
-#define TIMER2A 6
-#define TIMER2B 2
-#define TIMER3A 5
-#define TIMER3B 4
-#define TIMER3C 3
diff --git a/src/HAL/AVR/inc/Conditionals_LCD.h b/src/HAL/AVR/inc/Conditionals_LCD.h
deleted file mode 100644
index a611ccd..0000000
--- a/src/HAL/AVR/inc/Conditionals_LCD.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#if HAS_SPI_TFT || HAS_FSMC_TFT
- #error "Sorry! TFT displays are not available for HAL/AVR."
-#endif
diff --git a/src/HAL/AVR/inc/Conditionals_adv.h b/src/HAL/AVR/inc/Conditionals_adv.h
deleted file mode 100644
index 5f1c4b1..0000000
--- a/src/HAL/AVR/inc/Conditionals_adv.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
diff --git a/src/HAL/AVR/inc/Conditionals_post.h b/src/HAL/AVR/inc/Conditionals_post.h
deleted file mode 100644
index 5f1c4b1..0000000
--- a/src/HAL/AVR/inc/Conditionals_post.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
diff --git a/src/HAL/AVR/inc/SanityCheck.h b/src/HAL/AVR/inc/SanityCheck.h
deleted file mode 100644
index 1c1d8d4..0000000
--- a/src/HAL/AVR/inc/SanityCheck.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Test AVR-specific configuration values for errors at compile-time.
- */
-
-/**
- * Check for common serial pin conflicts
- */
-#define CHECK_SERIAL_PIN(N) ( \
- X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \
- || X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \
- || X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \
- || X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
- || X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
- || X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
-)
-#if CONF_SERIAL_IS(0) // D0-D1. No known conflicts.
-#endif
-#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
- #error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
-#endif
-#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
- #error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
-#endif
-#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
- #error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
-#endif
-#undef CHECK_SERIAL_PIN
-
-/**
- * Checks for FAST PWM
- */
-#if ALL(FAST_PWM_FAN, USE_OCR2A_AS_TOP, HAS_TCCR2)
- #error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2."
-#endif
-
-/**
- * Checks for SOFT PWM
- */
-#if HAS_FAN0 && FAN_PIN == 9 && DISABLED(FAN_SOFT_PWM) && ENABLED(SPEAKER)
- #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."
- #error "Disable SPEAKER or enable FAN_SOFT_PWM."
-#endif
-
-/**
- * Sanity checks for Spindle / Laser PWM
- */
-#if ENABLED(SPINDLE_LASER_USE_PWM)
- #include "../ServoTimers.h" // Needed to check timer availability (_useTimer3)
- #if SPINDLE_LASER_PWM_PIN == 4 || WITHIN(SPINDLE_LASER_PWM_PIN, 11, 13)
- #error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by a system interrupt."
- #elif NUM_SERVOS > 0 && defined(_useTimer3) && (WITHIN(SPINDLE_LASER_PWM_PIN, 2, 3) || SPINDLE_LASER_PWM_PIN == 5)
- #error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by the servo system."
- #endif
-#elif SPINDLE_LASER_FREQUENCY
- #error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_USE_PWM."
-#endif
-
-/**
- * The Trinamic library includes SoftwareSerial.h, leading to a compile error.
- */
-#if BOTH(HAS_TRINAMIC_CONFIG, ENDSTOP_INTERRUPTS_FEATURE)
- #error "TMCStepper includes SoftwareSerial.h which is incompatible with ENDSTOP_INTERRUPTS_FEATURE. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
-#endif
-
-#if BOTH(HAS_TMC_SW_SERIAL, MONITOR_DRIVER_STATUS)
- #error "MONITOR_DRIVER_STATUS causes performance issues when used with SoftwareSerial-connected drivers. Disable MONITOR_DRIVER_STATUS or use hardware serial to continue."
-#endif
-
-/**
- * Postmortem debugging
- */
-#if ENABLED(POSTMORTEM_DEBUGGING)
- #error "POSTMORTEM_DEBUGGING is not supported on AVR boards."
-#endif
-
-#if USING_PULLDOWNS
- #error "PULLDOWN pin mode is not available on AVR boards."
-#endif
diff --git a/src/HAL/AVR/math.h b/src/HAL/AVR/math.h
deleted file mode 100644
index 7dd1018..0000000
--- a/src/HAL/AVR/math.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Optimized math functions for AVR
- */
-
-// intRes = longIn1 * longIn2 >> 24
-// uses:
-// A[tmp] to store 0
-// B[tmp] to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result.
-// note that the lower two bytes and the upper byte of the 48bit result are not calculated.
-// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
-// B A are bits 24-39 and are the returned value
-// C B A is longIn1
-// D C B A is longIn2
-//
-FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
- uint8_t tmp1;
- uint8_t tmp2;
- uint16_t intRes;
- __asm__ __volatile__(
- A("clr %[tmp1]")
- A("mul %A[longIn1], %B[longIn2]")
- A("mov %[tmp2], r1")
- A("mul %B[longIn1], %C[longIn2]")
- A("movw %A[intRes], r0")
- A("mul %C[longIn1], %C[longIn2]")
- A("add %B[intRes], r0")
- A("mul %C[longIn1], %B[longIn2]")
- A("add %A[intRes], r0")
- A("adc %B[intRes], r1")
- A("mul %A[longIn1], %C[longIn2]")
- A("add %[tmp2], r0")
- A("adc %A[intRes], r1")
- A("adc %B[intRes], %[tmp1]")
- A("mul %B[longIn1], %B[longIn2]")
- A("add %[tmp2], r0")
- A("adc %A[intRes], r1")
- A("adc %B[intRes], %[tmp1]")
- A("mul %C[longIn1], %A[longIn2]")
- A("add %[tmp2], r0")
- A("adc %A[intRes], r1")
- A("adc %B[intRes], %[tmp1]")
- A("mul %B[longIn1], %A[longIn2]")
- A("add %[tmp2], r1")
- A("adc %A[intRes], %[tmp1]")
- A("adc %B[intRes], %[tmp1]")
- A("lsr %[tmp2]")
- A("adc %A[intRes], %[tmp1]")
- A("adc %B[intRes], %[tmp1]")
- A("mul %D[longIn2], %A[longIn1]")
- A("add %A[intRes], r0")
- A("adc %B[intRes], r1")
- A("mul %D[longIn2], %B[longIn1]")
- A("add %B[intRes], r0")
- A("clr r1")
- : [intRes] "=&r" (intRes),
- [tmp1] "=&r" (tmp1),
- [tmp2] "=&r" (tmp2)
- : [longIn1] "d" (longIn1),
- [longIn2] "d" (longIn2)
- : "cc"
- );
- return intRes;
-}
-
-// intRes = intIn1 * intIn2 >> 16
-// uses:
-// r26 to store 0
-// r27 to store the byte 1 of the 24 bit result
-FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
- uint8_t tmp;
- uint16_t intRes;
- __asm__ __volatile__ (
- A("clr %[tmp]")
- A("mul %[charIn1], %B[intIn2]")
- A("movw %A[intRes], r0")
- A("mul %[charIn1], %A[intIn2]")
- A("add %A[intRes], r1")
- A("adc %B[intRes], %[tmp]")
- A("lsr r0")
- A("adc %A[intRes], %[tmp]")
- A("adc %B[intRes], %[tmp]")
- A("clr r1")
- : [intRes] "=&r" (intRes),
- [tmp] "=&r" (tmp)
- : [charIn1] "d" (charIn1),
- [intIn2] "d" (intIn2)
- : "cc"
- );
- return intRes;
-}
diff --git a/src/HAL/AVR/pinsDebug.h b/src/HAL/AVR/pinsDebug.h
deleted file mode 100644
index dab4e44..0000000
--- a/src/HAL/AVR/pinsDebug.h
+++ /dev/null
@@ -1,400 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * PWM print routines for Atmel 8 bit AVR CPUs
- */
-
-#include "../../inc/MarlinConfig.h"
-
-#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
-
-#if MB(BQ_ZUM_MEGA_3D, MIGHTYBOARD_REVE, MINIRAMBO, SCOOVO_X9H, TRIGORILLA_14)
- #define AVR_ATmega2560_FAMILY_PLUS_70 1
-#endif
-
-#if AVR_AT90USB1286_FAMILY
-
- // Working with Teensyduino extension so need to re-define some things
- #include "pinsDebug_Teensyduino.h"
- // Can't use the "digitalPinToPort" function from the Teensyduino type IDEs
- // portModeRegister takes a different argument
- #define digitalPinToTimer_DEBUG(p) digitalPinToTimer(p)
- #define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
- #define digitalPinToPort_DEBUG(p) digitalPinToPort(p)
- #define GET_PINMODE(pin) (*portModeRegister(pin) & digitalPinToBitMask_DEBUG(pin))
-
-#elif AVR_ATmega2560_FAMILY_PLUS_70 // So we can access/display all the pins on boards using more than 70
-
- #include "pinsDebug_plus_70.h"
- #define digitalPinToTimer_DEBUG(p) digitalPinToTimer_plus_70(p)
- #define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask_plus_70(p)
- #define digitalPinToPort_DEBUG(p) digitalPinToPort_plus_70(p)
- bool GET_PINMODE(int8_t pin) {return *portModeRegister(digitalPinToPort_DEBUG(pin)) & digitalPinToBitMask_DEBUG(pin); }
-
-#else
-
- #define digitalPinToTimer_DEBUG(p) digitalPinToTimer(p)
- #define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
- #define digitalPinToPort_DEBUG(p) digitalPinToPort(p)
- bool GET_PINMODE(int8_t pin) {return *portModeRegister(digitalPinToPort_DEBUG(pin)) & digitalPinToBitMask_DEBUG(pin); }
- #define GET_ARRAY_PIN(p) pgm_read_byte(&pin_array[p].pin)
-
-#endif
-
-#define VALID_PIN(pin) (pin >= 0 && pin < NUM_DIGITAL_PINS ? 1 : 0)
-#if AVR_ATmega1284_FAMILY
- #define DIGITAL_PIN_TO_ANALOG_PIN(P) int(analogInputToDigitalPin(0) - (P))
- #define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(7) && (P) <= analogInputToDigitalPin(0))
-#else
- #define DIGITAL_PIN_TO_ANALOG_PIN(P) int((P) - analogInputToDigitalPin(0))
- #define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && ((P) <= analogInputToDigitalPin(15) || (P) <= analogInputToDigitalPin(7)))
-#endif
-#define GET_ARRAY_PIN(p) pgm_read_byte(&pin_array[p].pin)
-#define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin
-
-void PRINT_ARRAY_NAME(uint8_t x) {
- PGM_P const name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name);
- LOOP_L_N(y, MAX_NAME_LENGTH) {
- char temp_char = pgm_read_byte(name_mem_pointer + y);
- if (temp_char != 0)
- SERIAL_CHAR(temp_char);
- else {
- LOOP_L_N(i, MAX_NAME_LENGTH - y) SERIAL_CHAR(' ');
- break;
- }
- }
-}
-
-#define GET_ARRAY_IS_DIGITAL(x) pgm_read_byte(&pin_array[x].is_digital)
-
-
-#if defined(__AVR_ATmega1284P__) // 1284 IDE extensions set this to the number of
- #undef NUM_DIGITAL_PINS // digital only pins while all other CPUs have it
- #define NUM_DIGITAL_PINS 32 // set to digital only + digital/analog
-#endif
-
-#define PWM_PRINT(V) do{ sprintf_P(buffer, PSTR("PWM: %4d"), V); SERIAL_ECHO(buffer); }while(0)
-#define PWM_CASE(N,Z) \
- case TIMER##N##Z: \
- if (TCCR##N##A & (_BV(COM##N##Z##1) | _BV(COM##N##Z##0))) { \
- PWM_PRINT(OCR##N##Z); \
- return true; \
- } else return false
-
-#define ABTEST(N) defined(TCCR##N##A) && defined(COM##N##A1)
-
-/**
- * Print a pin's PWM status.
- * Return true if it's currently a PWM pin.
- */
-static bool pwm_status(uint8_t pin) {
- char buffer[20]; // for the sprintf statements
-
- switch (digitalPinToTimer_DEBUG(pin)) {
-
- #if ABTEST(0)
- #ifdef TIMER0A
- #if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
- PWM_CASE(0, A);
- #endif
- #endif
- PWM_CASE(0, B);
- #endif
-
- #if ABTEST(1)
- PWM_CASE(1, A);
- PWM_CASE(1, B);
- #if defined(COM1C1) && defined(TIMER1C)
- PWM_CASE(1, C);
- #endif
- #endif
-
- #if ABTEST(2)
- PWM_CASE(2, A);
- PWM_CASE(2, B);
- #endif
-
- #if ABTEST(3)
- PWM_CASE(3, A);
- PWM_CASE(3, B);
- #ifdef COM3C1
- PWM_CASE(3, C);
- #endif
- #endif
-
- #ifdef TCCR4A
- PWM_CASE(4, A);
- PWM_CASE(4, B);
- PWM_CASE(4, C);
- #endif
-
- #if ABTEST(5)
- PWM_CASE(5, A);
- PWM_CASE(5, B);
- PWM_CASE(5, C);
- #endif
-
- case NOT_ON_TIMER:
- default:
- return false;
- }
- SERIAL_ECHO_SP(2);
-} // pwm_status
-
-
-const volatile uint8_t* const PWM_other[][3] PROGMEM = {
- { &TCCR0A, &TCCR0B, &TIMSK0 },
- { &TCCR1A, &TCCR1B, &TIMSK1 },
- #if ABTEST(2)
- { &TCCR2A, &TCCR2B, &TIMSK2 },
- #endif
- #if ABTEST(3)
- { &TCCR3A, &TCCR3B, &TIMSK3 },
- #endif
- #ifdef TCCR4A
- { &TCCR4A, &TCCR4B, &TIMSK4 },
- #endif
- #if ABTEST(5)
- { &TCCR5A, &TCCR5B, &TIMSK5 },
- #endif
-};
-
-
-const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
-
- #ifdef TIMER0A
- { &OCR0A, &OCR0B, 0 },
- #else
- { 0, &OCR0B, 0 },
- #endif
-
- #if defined(COM1C1) && defined(TIMER1C)
- { (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, (const uint8_t*)&OCR1C },
- #else
- { (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, 0 },
- #endif
-
- #if ABTEST(2)
- { &OCR2A, &OCR2B, 0 },
- #endif
-
- #if ABTEST(3)
- #ifdef COM3C1
- { (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, (const uint8_t*)&OCR3C },
- #else
- { (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, 0 },
- #endif
- #endif
-
- #ifdef TCCR4A
- { (const uint8_t*)&OCR4A, (const uint8_t*)&OCR4B, (const uint8_t*)&OCR4C },
- #endif
-
- #if ABTEST(5)
- { (const uint8_t*)&OCR5A, (const uint8_t*)&OCR5B, (const uint8_t*)&OCR5C },
- #endif
-};
-
-
-#define TCCR_A(T) pgm_read_word(&PWM_other[T][0])
-#define TCCR_B(T) pgm_read_word(&PWM_other[T][1])
-#define TIMSK(T) pgm_read_word(&PWM_other[T][2])
-#define CS_0 0
-#define CS_1 1
-#define CS_2 2
-#define WGM_0 0
-#define WGM_1 1
-#define WGM_2 3
-#define WGM_3 4
-#define TOIE 0
-
-#define OCR_VAL(T, L) pgm_read_word(&PWM_OCR[T][L])
-
-static void err_is_counter() { SERIAL_ECHOPGM(" non-standard PWM mode"); }
-static void err_is_interrupt() { SERIAL_ECHOPGM(" compare interrupt enabled"); }
-static void err_prob_interrupt() { SERIAL_ECHOPGM(" overflow interrupt enabled"); }
-static void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin"); SERIAL_ECHO_SP(14); }
-
-inline void com_print(const uint8_t N, const uint8_t Z) {
- const uint8_t *TCCRA = (uint8_t*)TCCR_A(N);
- SERIAL_ECHOPGM(" COM", AS_DIGIT(N));
- SERIAL_CHAR(Z);
- SERIAL_ECHOPGM(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
-}
-
-void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N - WGM bit layout
- char buffer[20]; // for the sprintf statements
- const uint8_t *TCCRB = (uint8_t*)TCCR_B(T),
- *TCCRA = (uint8_t*)TCCR_A(T);
- uint8_t WGM = (((*TCCRB & _BV(WGM_2)) >> 1) | (*TCCRA & (_BV(WGM_0) | _BV(WGM_1))));
- if (N == 4) WGM |= ((*TCCRB & _BV(WGM_3)) >> 1);
-
- SERIAL_ECHOPGM(" TIMER", AS_DIGIT(T));
- SERIAL_CHAR(L);
- SERIAL_ECHO_SP(3);
-
- if (N == 3) {
- const uint8_t *OCRVAL8 = (uint8_t*)OCR_VAL(T, L - 'A');
- PWM_PRINT(*OCRVAL8);
- }
- else {
- const uint16_t *OCRVAL16 = (uint16_t*)OCR_VAL(T, L - 'A');
- PWM_PRINT(*OCRVAL16);
- }
- SERIAL_ECHOPGM(" WGM: ", WGM);
- com_print(T,L);
- SERIAL_ECHOPGM(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
- SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "A: ", *TCCRA);
- SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "B: ", *TCCRB);
-
- const uint8_t *TMSK = (uint8_t*)TIMSK(T);
- SERIAL_ECHOPGM(" TIMSK", AS_DIGIT(T), ": ", *TMSK);
-
- const uint8_t OCIE = L - 'A' + 1;
- if (N == 3) { if (WGM == 0 || WGM == 2 || WGM == 4 || WGM == 6) err_is_counter(); }
- else { if (WGM == 0 || WGM == 4 || WGM == 12 || WGM == 13) err_is_counter(); }
- if (TEST(*TMSK, OCIE)) err_is_interrupt();
- if (TEST(*TMSK, TOIE)) err_prob_interrupt();
-}
-
-static void pwm_details(uint8_t pin) {
- switch (digitalPinToTimer_DEBUG(pin)) {
-
- #if ABTEST(0)
- #ifdef TIMER0A
- #if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
- case TIMER0A: timer_prefix(0, 'A', 3); break;
- #endif
- #endif
- case TIMER0B: timer_prefix(0, 'B', 3); break;
- #endif
-
- #if ABTEST(1)
- case TIMER1A: timer_prefix(1, 'A', 4); break;
- case TIMER1B: timer_prefix(1, 'B', 4); break;
- #if defined(COM1C1) && defined(TIMER1C)
- case TIMER1C: timer_prefix(1, 'C', 4); break;
- #endif
- #endif
-
- #if ABTEST(2)
- case TIMER2A: timer_prefix(2, 'A', 3); break;
- case TIMER2B: timer_prefix(2, 'B', 3); break;
- #endif
-
- #if ABTEST(3)
- case TIMER3A: timer_prefix(3, 'A', 4); break;
- case TIMER3B: timer_prefix(3, 'B', 4); break;
- #ifdef COM3C1
- case TIMER3C: timer_prefix(3, 'C', 4); break;
- #endif
- #endif
-
- #ifdef TCCR4A
- case TIMER4A: timer_prefix(4, 'A', 4); break;
- case TIMER4B: timer_prefix(4, 'B', 4); break;
- case TIMER4C: timer_prefix(4, 'C', 4); break;
- #endif
-
- #if ABTEST(5)
- case TIMER5A: timer_prefix(5, 'A', 4); break;
- case TIMER5B: timer_prefix(5, 'B', 4); break;
- case TIMER5C: timer_prefix(5, 'C', 4); break;
- #endif
-
- case NOT_ON_TIMER: break;
-
- }
- SERIAL_ECHOPGM(" ");
-
- // on pins that have two PWMs, print info on second PWM
- #if AVR_ATmega2560_FAMILY || AVR_AT90USB1286_FAMILY
- // looking for port B7 - PWMs 0A and 1C
- if (digitalPinToPort_DEBUG(pin) == 'B' - 64 && 0x80 == digitalPinToBitMask_DEBUG(pin)) {
- #if !AVR_AT90USB1286_FAMILY
- SERIAL_ECHOPGM("\n .");
- SERIAL_ECHO_SP(18);
- SERIAL_ECHOPGM("TIMER1C");
- print_is_also_tied();
- timer_prefix(1, 'C', 4);
- #else
- SERIAL_ECHOPGM("\n .");
- SERIAL_ECHO_SP(18);
- SERIAL_ECHOPGM("TIMER0A");
- print_is_also_tied();
- timer_prefix(0, 'A', 3);
- #endif
- }
- #else
- UNUSED(print_is_also_tied);
- #endif
-} // pwm_details
-
-#ifndef digitalRead_mod // Use Teensyduino's version of digitalRead - it doesn't disable the PWMs
- int digitalRead_mod(const int8_t pin) { // same as digitalRead except the PWM stop section has been removed
- const uint8_t port = digitalPinToPort_DEBUG(pin);
- return (port != NOT_A_PIN) && (*portInputRegister(port) & digitalPinToBitMask_DEBUG(pin)) ? HIGH : LOW;
- }
-#endif
-
-#ifndef PRINT_PORT
-
- void print_port(int8_t pin) { // print port number
- #ifdef digitalPinToPort_DEBUG
- uint8_t x;
- SERIAL_ECHOPGM(" Port: ");
- #if AVR_AT90USB1286_FAMILY
- x = (pin == 46 || pin == 47) ? 'E' : digitalPinToPort_DEBUG(pin) + 64;
- #else
- x = digitalPinToPort_DEBUG(pin) + 64;
- #endif
- SERIAL_CHAR(x);
-
- #if AVR_AT90USB1286_FAMILY
- if (pin == 46)
- x = '2';
- else if (pin == 47)
- x = '3';
- else {
- uint8_t temp = digitalPinToBitMask_DEBUG(pin);
- for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1;
- }
- #else
- uint8_t temp = digitalPinToBitMask_DEBUG(pin);
- for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1;
- #endif
- SERIAL_CHAR(x);
- #else
- SERIAL_ECHO_SP(10);
- #endif
- }
-
- #define PRINT_PORT(p) print_port(p)
-
-#endif
-
-#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0)
-#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
-
-#undef ABTEST
diff --git a/src/HAL/AVR/pinsDebug_Teensyduino.h b/src/HAL/AVR/pinsDebug_Teensyduino.h
deleted file mode 100644
index 582ae79..0000000
--- a/src/HAL/AVR/pinsDebug_Teensyduino.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-//
-// some of the pin mapping functions of the Teensduino extension to the Arduino IDE
-// do not function the same as the other Arduino extensions
-//
-
-
-#define TEENSYDUINO_IDE
-
-//digitalPinToTimer(pin) function works like Arduino but Timers are not defined
-#define TIMER0B 1
-#define TIMER1A 7
-#define TIMER1B 8
-#define TIMER1C 9
-#define TIMER2A 6
-#define TIMER2B 2
-#define TIMER3A 5
-#define TIMER3B 4
-#define TIMER3C 3
-
-// digitalPinToPort function just returns the pin number so need to create our own
-#define PA 1
-#define PB 2
-#define PC 3
-#define PD 4
-#define PE 5
-#define PF 6
-
-#undef digitalPinToPort
-
-const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
- PD, // 0 - PD0 - INT0 - PWM
- PD, // 1 - PD1 - INT1 - PWM
- PD, // 2 - PD2 - INT2 - RX
- PD, // 3 - PD3 - INT3 - TX
- PD, // 4 - PD4
- PD, // 5 - PD5
- PD, // 6 - PD6
- PD, // 7 - PD7
- PE, // 8 - PE0
- PE, // 9 - PE1
- PC, // 10 - PC0
- PC, // 11 - PC1
- PC, // 12 - PC2
- PC, // 13 - PC3
- PC, // 14 - PC4 - PWM
- PC, // 15 - PC5 - PWM
- PC, // 16 - PC6 - PWM
- PC, // 17 - PC7
- PE, // 18 - PE6 - INT6
- PE, // 19 - PE7 - INT7
- PB, // 20 - PB0
- PB, // 21 - PB1
- PB, // 22 - PB2
- PB, // 23 - PB3
- PB, // 24 - PB4 - PWM
- PB, // 25 - PB5 - PWM
- PB, // 26 - PB6 - PWM
- PB, // 27 - PB7 - PWM
- PA, // 28 - PA0
- PA, // 29 - PA1
- PA, // 30 - PA2
- PA, // 31 - PA3
- PA, // 32 - PA4
- PA, // 33 - PA5
- PA, // 34 - PA6
- PA, // 35 - PA7
- PE, // 36 - PE4 - INT4
- PE, // 37 - PE5 - INT5
- PF, // 38 - PF0 - A0
- PF, // 39 - PF1 - A1
- PF, // 40 - PF2 - A2
- PF, // 41 - PF3 - A3
- PF, // 42 - PF4 - A4
- PF, // 43 - PF5 - A5
- PF, // 44 - PF6 - A6
- PF, // 45 - PF7 - A7
- PE, // 46 - PE2 (not defined in teensyduino)
- PE, // 47 - PE3 (not defined in teensyduino)
-};
-
-#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
-
-// digitalPinToBitMask(pin) is OK
-
-#define digitalRead_mod(p) extDigitalRead(p) // Teensyduino's version of digitalRead doesn't
- // disable the PWMs so we can use it as is
-
-// portModeRegister(pin) is OK
diff --git a/src/HAL/AVR/pinsDebug_plus_70.h b/src/HAL/AVR/pinsDebug_plus_70.h
deleted file mode 100644
index d9aa44c..0000000
--- a/src/HAL/AVR/pinsDebug_plus_70.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Structures for 2560 family boards that use more than 70 pins
- */
-
-#if MB(BQ_ZUM_MEGA_3D, MINIRAMBO, SCOOVO_X9H, TRIGORILLA_14)
- #undef NUM_DIGITAL_PINS
- #define NUM_DIGITAL_PINS 85
-#elif MB(MIGHTYBOARD_REVE)
- #undef NUM_DIGITAL_PINS
- #define NUM_DIGITAL_PINS 80
-#endif
-
-#define PA 1
-#define PB 2
-#define PC 3
-#define PD 4
-#define PE 5
-#define PF 6
-#define PG 7
-#define PH 8
-#define PJ 10
-#define PK 11
-#define PL 12
-
-const uint8_t PROGMEM digital_pin_to_port_PGM_plus_70[] = {
- // PORTLIST
- // ------------------------
- PE , // PE 0 ** 0 ** USART0_RX
- PE , // PE 1 ** 1 ** USART0_TX
- PE , // PE 4 ** 2 ** PWM2
- PE , // PE 5 ** 3 ** PWM3
- PG , // PG 5 ** 4 ** PWM4
- PE , // PE 3 ** 5 ** PWM5
- PH , // PH 3 ** 6 ** PWM6
- PH , // PH 4 ** 7 ** PWM7
- PH , // PH 5 ** 8 ** PWM8
- PH , // PH 6 ** 9 ** PWM9
- PB , // PB 4 ** 10 ** PWM10
- PB , // PB 5 ** 11 ** PWM11
- PB , // PB 6 ** 12 ** PWM12
- PB , // PB 7 ** 13 ** PWM13
- PJ , // PJ 1 ** 14 ** USART3_TX
- PJ , // PJ 0 ** 15 ** USART3_RX
- PH , // PH 1 ** 16 ** USART2_TX
- PH , // PH 0 ** 17 ** USART2_RX
- PD , // PD 3 ** 18 ** USART1_TX
- PD , // PD 2 ** 19 ** USART1_RX
- PD , // PD 1 ** 20 ** I2C_SDA
- PD , // PD 0 ** 21 ** I2C_SCL
- PA , // PA 0 ** 22 ** D22
- PA , // PA 1 ** 23 ** D23
- PA , // PA 2 ** 24 ** D24
- PA , // PA 3 ** 25 ** D25
- PA , // PA 4 ** 26 ** D26
- PA , // PA 5 ** 27 ** D27
- PA , // PA 6 ** 28 ** D28
- PA , // PA 7 ** 29 ** D29
- PC , // PC 7 ** 30 ** D30
- PC , // PC 6 ** 31 ** D31
- PC , // PC 5 ** 32 ** D32
- PC , // PC 4 ** 33 ** D33
- PC , // PC 3 ** 34 ** D34
- PC , // PC 2 ** 35 ** D35
- PC , // PC 1 ** 36 ** D36
- PC , // PC 0 ** 37 ** D37
- PD , // PD 7 ** 38 ** D38
- PG , // PG 2 ** 39 ** D39
- PG , // PG 1 ** 40 ** D40
- PG , // PG 0 ** 41 ** D41
- PL , // PL 7 ** 42 ** D42
- PL , // PL 6 ** 43 ** D43
- PL , // PL 5 ** 44 ** D44
- PL , // PL 4 ** 45 ** D45
- PL , // PL 3 ** 46 ** D46
- PL , // PL 2 ** 47 ** D47
- PL , // PL 1 ** 48 ** D48
- PL , // PL 0 ** 49 ** D49
- PB , // PB 3 ** 50 ** SPI_MISO
- PB , // PB 2 ** 51 ** SPI_MOSI
- PB , // PB 1 ** 52 ** SPI_SCK
- PB , // PB 0 ** 53 ** SPI_SS
- PF , // PF 0 ** 54 ** A0
- PF , // PF 1 ** 55 ** A1
- PF , // PF 2 ** 56 ** A2
- PF , // PF 3 ** 57 ** A3
- PF , // PF 4 ** 58 ** A4
- PF , // PF 5 ** 59 ** A5
- PF , // PF 6 ** 60 ** A6
- PF , // PF 7 ** 61 ** A7
- PK , // PK 0 ** 62 ** A8
- PK , // PK 1 ** 63 ** A9
- PK , // PK 2 ** 64 ** A10
- PK , // PK 3 ** 65 ** A11
- PK , // PK 4 ** 66 ** A12
- PK , // PK 5 ** 67 ** A13
- PK , // PK 6 ** 68 ** A14
- PK , // PK 7 ** 69 ** A15
- PG , // PG 4 ** 70 **
- PG , // PG 3 ** 71 **
- PJ , // PJ 2 ** 72 **
- PJ , // PJ 3 ** 73 **
- PJ , // PJ 7 ** 74 **
- PJ , // PJ 4 ** 75 **
- PJ , // PJ 5 ** 76 **
- PJ , // PJ 6 ** 77 **
- PE , // PE 2 ** 78 **
- PE , // PE 6 ** 79 **
- PE , // PE 7 ** 80 **
- PD , // PD 4 ** 81 **
- PD , // PD 5 ** 82 **
- PD , // PD 6 ** 83 **
- PH , // PH 2 ** 84 **
- PH , // PH 7 ** 85 **
-};
-
-#define digitalPinToPort_plus_70(P) ( pgm_read_byte( digital_pin_to_port_PGM_plus_70 + (P) ) )
-
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM_plus_70[] = {
- // PIN IN PORT
- // ------------------------
- _BV( 0 ) , // PE 0 ** 0 ** USART0_RX
- _BV( 1 ) , // PE 1 ** 1 ** USART0_TX
- _BV( 4 ) , // PE 4 ** 2 ** PWM2
- _BV( 5 ) , // PE 5 ** 3 ** PWM3
- _BV( 5 ) , // PG 5 ** 4 ** PWM4
- _BV( 3 ) , // PE 3 ** 5 ** PWM5
- _BV( 3 ) , // PH 3 ** 6 ** PWM6
- _BV( 4 ) , // PH 4 ** 7 ** PWM7
- _BV( 5 ) , // PH 5 ** 8 ** PWM8
- _BV( 6 ) , // PH 6 ** 9 ** PWM9
- _BV( 4 ) , // PB 4 ** 10 ** PWM10
- _BV( 5 ) , // PB 5 ** 11 ** PWM11
- _BV( 6 ) , // PB 6 ** 12 ** PWM12
- _BV( 7 ) , // PB 7 ** 13 ** PWM13
- _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX
- _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX
- _BV( 1 ) , // PH 1 ** 16 ** USART2_TX
- _BV( 0 ) , // PH 0 ** 17 ** USART2_RX
- _BV( 3 ) , // PD 3 ** 18 ** USART1_TX
- _BV( 2 ) , // PD 2 ** 19 ** USART1_RX
- _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA
- _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL
- _BV( 0 ) , // PA 0 ** 22 ** D22
- _BV( 1 ) , // PA 1 ** 23 ** D23
- _BV( 2 ) , // PA 2 ** 24 ** D24
- _BV( 3 ) , // PA 3 ** 25 ** D25
- _BV( 4 ) , // PA 4 ** 26 ** D26
- _BV( 5 ) , // PA 5 ** 27 ** D27
- _BV( 6 ) , // PA 6 ** 28 ** D28
- _BV( 7 ) , // PA 7 ** 29 ** D29
- _BV( 7 ) , // PC 7 ** 30 ** D30
- _BV( 6 ) , // PC 6 ** 31 ** D31
- _BV( 5 ) , // PC 5 ** 32 ** D32
- _BV( 4 ) , // PC 4 ** 33 ** D33
- _BV( 3 ) , // PC 3 ** 34 ** D34
- _BV( 2 ) , // PC 2 ** 35 ** D35
- _BV( 1 ) , // PC 1 ** 36 ** D36
- _BV( 0 ) , // PC 0 ** 37 ** D37
- _BV( 7 ) , // PD 7 ** 38 ** D38
- _BV( 2 ) , // PG 2 ** 39 ** D39
- _BV( 1 ) , // PG 1 ** 40 ** D40
- _BV( 0 ) , // PG 0 ** 41 ** D41
- _BV( 7 ) , // PL 7 ** 42 ** D42
- _BV( 6 ) , // PL 6 ** 43 ** D43
- _BV( 5 ) , // PL 5 ** 44 ** D44
- _BV( 4 ) , // PL 4 ** 45 ** D45
- _BV( 3 ) , // PL 3 ** 46 ** D46
- _BV( 2 ) , // PL 2 ** 47 ** D47
- _BV( 1 ) , // PL 1 ** 48 ** D48
- _BV( 0 ) , // PL 0 ** 49 ** D49
- _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO
- _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI
- _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK
- _BV( 0 ) , // PB 0 ** 53 ** SPI_SS
- _BV( 0 ) , // PF 0 ** 54 ** A0
- _BV( 1 ) , // PF 1 ** 55 ** A1
- _BV( 2 ) , // PF 2 ** 56 ** A2
- _BV( 3 ) , // PF 3 ** 57 ** A3
- _BV( 4 ) , // PF 4 ** 58 ** A4
- _BV( 5 ) , // PF 5 ** 59 ** A5
- _BV( 6 ) , // PF 6 ** 60 ** A6
- _BV( 7 ) , // PF 7 ** 61 ** A7
- _BV( 0 ) , // PK 0 ** 62 ** A8
- _BV( 1 ) , // PK 1 ** 63 ** A9
- _BV( 2 ) , // PK 2 ** 64 ** A10
- _BV( 3 ) , // PK 3 ** 65 ** A11
- _BV( 4 ) , // PK 4 ** 66 ** A12
- _BV( 5 ) , // PK 5 ** 67 ** A13
- _BV( 6 ) , // PK 6 ** 68 ** A14
- _BV( 7 ) , // PK 7 ** 69 ** A15
- _BV( 4 ) , // PG 4 ** 70 **
- _BV( 3 ) , // PG 3 ** 71 **
- _BV( 2 ) , // PJ 2 ** 72 **
- _BV( 3 ) , // PJ 3 ** 73 **
- _BV( 7 ) , // PJ 7 ** 74 **
- _BV( 4 ) , // PJ 4 ** 75 **
- _BV( 5 ) , // PJ 5 ** 76 **
- _BV( 6 ) , // PJ 6 ** 77 **
- _BV( 2 ) , // PE 2 ** 78 **
- _BV( 6 ) , // PE 6 ** 79 **
- _BV( 7 ) , // PE 7 ** 80 **
- _BV( 4 ) , // PD 4 ** 81 **
- _BV( 5 ) , // PD 5 ** 82 **
- _BV( 6 ) , // PD 6 ** 83 **
- _BV( 2 ) , // PH 2 ** 84 **
- _BV( 7 ) , // PH 7 ** 85 **
-};
-
-#define digitalPinToBitMask_plus_70(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM_plus_70 + (P) ) )
-
-
-const uint8_t PROGMEM digital_pin_to_timer_PGM_plus_70[] = {
- // TIMERS
- // ------------------------
- NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX
- NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX
- TIMER3B , // PE 4 ** 2 ** PWM2
- TIMER3C , // PE 5 ** 3 ** PWM3
- TIMER0B , // PG 5 ** 4 ** PWM4
- TIMER3A , // PE 3 ** 5 ** PWM5
- TIMER4A , // PH 3 ** 6 ** PWM6
- TIMER4B , // PH 4 ** 7 ** PWM7
- TIMER4C , // PH 5 ** 8 ** PWM8
- TIMER2B , // PH 6 ** 9 ** PWM9
- TIMER2A , // PB 4 ** 10 ** PWM10
- TIMER1A , // PB 5 ** 11 ** PWM11
- TIMER1B , // PB 6 ** 12 ** PWM12
- TIMER0A , // PB 7 ** 13 ** PWM13
- NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX
- NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX
- NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX
- NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX
- NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX
- NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX
- NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA
- NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL
- NOT_ON_TIMER , // PA 0 ** 22 ** D22
- NOT_ON_TIMER , // PA 1 ** 23 ** D23
- NOT_ON_TIMER , // PA 2 ** 24 ** D24
- NOT_ON_TIMER , // PA 3 ** 25 ** D25
- NOT_ON_TIMER , // PA 4 ** 26 ** D26
- NOT_ON_TIMER , // PA 5 ** 27 ** D27
- NOT_ON_TIMER , // PA 6 ** 28 ** D28
- NOT_ON_TIMER , // PA 7 ** 29 ** D29
- NOT_ON_TIMER , // PC 7 ** 30 ** D30
- NOT_ON_TIMER , // PC 6 ** 31 ** D31
- NOT_ON_TIMER , // PC 5 ** 32 ** D32
- NOT_ON_TIMER , // PC 4 ** 33 ** D33
- NOT_ON_TIMER , // PC 3 ** 34 ** D34
- NOT_ON_TIMER , // PC 2 ** 35 ** D35
- NOT_ON_TIMER , // PC 1 ** 36 ** D36
- NOT_ON_TIMER , // PC 0 ** 37 ** D37
- NOT_ON_TIMER , // PD 7 ** 38 ** D38
- NOT_ON_TIMER , // PG 2 ** 39 ** D39
- NOT_ON_TIMER , // PG 1 ** 40 ** D40
- NOT_ON_TIMER , // PG 0 ** 41 ** D41
- NOT_ON_TIMER , // PL 7 ** 42 ** D42
- NOT_ON_TIMER , // PL 6 ** 43 ** D43
- TIMER5C , // PL 5 ** 44 ** D44
- TIMER5B , // PL 4 ** 45 ** D45
- TIMER5A , // PL 3 ** 46 ** D46
- NOT_ON_TIMER , // PL 2 ** 47 ** D47
- NOT_ON_TIMER , // PL 1 ** 48 ** D48
- NOT_ON_TIMER , // PL 0 ** 49 ** D49
- NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO
- NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI
- NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK
- NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS
- NOT_ON_TIMER , // PF 0 ** 54 ** A0
- NOT_ON_TIMER , // PF 1 ** 55 ** A1
- NOT_ON_TIMER , // PF 2 ** 56 ** A2
- NOT_ON_TIMER , // PF 3 ** 57 ** A3
- NOT_ON_TIMER , // PF 4 ** 58 ** A4
- NOT_ON_TIMER , // PF 5 ** 59 ** A5
- NOT_ON_TIMER , // PF 6 ** 60 ** A6
- NOT_ON_TIMER , // PF 7 ** 61 ** A7
- NOT_ON_TIMER , // PK 0 ** 62 ** A8
- NOT_ON_TIMER , // PK 1 ** 63 ** A9
- NOT_ON_TIMER , // PK 2 ** 64 ** A10
- NOT_ON_TIMER , // PK 3 ** 65 ** A11
- NOT_ON_TIMER , // PK 4 ** 66 ** A12
- NOT_ON_TIMER , // PK 5 ** 67 ** A13
- NOT_ON_TIMER , // PK 6 ** 68 ** A14
- NOT_ON_TIMER , // PK 7 ** 69 ** A15
- NOT_ON_TIMER , // PG 4 ** 70 **
- NOT_ON_TIMER , // PG 3 ** 71 **
- NOT_ON_TIMER , // PJ 2 ** 72 **
- NOT_ON_TIMER , // PJ 3 ** 73 **
- NOT_ON_TIMER , // PJ 7 ** 74 **
- NOT_ON_TIMER , // PJ 4 ** 75 **
- NOT_ON_TIMER , // PJ 5 ** 76 **
- NOT_ON_TIMER , // PJ 6 ** 77 **
- NOT_ON_TIMER , // PE 2 ** 78 **
- NOT_ON_TIMER , // PE 6 ** 79 **
-};
-
-#define digitalPinToTimer_plus_70(P) ( pgm_read_byte( digital_pin_to_timer_PGM_plus_70 + (P) ) )
-
-/**
- * Interrupts that are not implemented
- *
- * INT6 E6 79
- * INT7 E7 80
- * PCINT11 J2 72
- * PCINT12 J3 73
- * PCINT13 J4 75
- * PCINT14 J5 76
- * PCINT15 J6 77
- */
diff --git a/src/HAL/AVR/spi_pins.h b/src/HAL/AVR/spi_pins.h
deleted file mode 100644
index 8319729..0000000
--- a/src/HAL/AVR/spi_pins.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * Define SPI Pins: SCK, MISO, MOSI, SS
- */
-#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__)
- #define AVR_SCK_PIN 13
- #define AVR_MISO_PIN 12
- #define AVR_MOSI_PIN 11
- #define AVR_SS_PIN 10
-#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
- #define AVR_SCK_PIN 7
- #define AVR_MISO_PIN 6
- #define AVR_MOSI_PIN 5
- #define AVR_SS_PIN 4
-#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
- #define AVR_SCK_PIN 52
- #define AVR_MISO_PIN 50
- #define AVR_MOSI_PIN 51
- #define AVR_SS_PIN 53
-#elif defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
- #define AVR_SCK_PIN 21
- #define AVR_MISO_PIN 23
- #define AVR_MOSI_PIN 22
- #define AVR_SS_PIN 20
-#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
- #define AVR_SCK_PIN 10
- #define AVR_MISO_PIN 12
- #define AVR_MOSI_PIN 11
- #define AVR_SS_PIN 16
-#endif
-
-#ifndef SD_SCK_PIN
- #define SD_SCK_PIN AVR_SCK_PIN
-#endif
-#ifndef SD_MISO_PIN
- #define SD_MISO_PIN AVR_MISO_PIN
-#endif
-#ifndef SD_MOSI_PIN
- #define SD_MOSI_PIN AVR_MOSI_PIN
-#endif
-#ifndef SD_SS_PIN
- #define SD_SS_PIN AVR_SS_PIN
-#endif
diff --git a/src/HAL/AVR/timers.h b/src/HAL/AVR/timers.h
deleted file mode 100644
index 33c3880..0000000
--- a/src/HAL/AVR/timers.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#include
-
-// ------------------------
-// Types
-// ------------------------
-
-typedef uint16_t hal_timer_t;
-#define HAL_TIMER_TYPE_MAX 0xFFFF
-
-// ------------------------
-// Defines
-// ------------------------
-
-#define HAL_TIMER_RATE ((F_CPU) / 8) // i.e., 2MHz or 2.5MHz
-
-#ifndef MF_TIMER_STEP
- #define MF_TIMER_STEP 1
-#endif
-#ifndef MF_TIMER_PULSE
- #define MF_TIMER_PULSE MF_TIMER_STEP
-#endif
-#ifndef MF_TIMER_TEMP
- #define MF_TIMER_TEMP 0
-#endif
-
-#define TEMP_TIMER_FREQUENCY ((F_CPU) / 64.0 / 256.0)
-
-#define STEPPER_TIMER_RATE HAL_TIMER_RATE
-#define STEPPER_TIMER_PRESCALE 8
-#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // Cannot be of type double
-
-#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer
-#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
-#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
-
-#define ENABLE_STEPPER_DRIVER_INTERRUPT() SBI(TIMSK1, OCIE1A)
-#define DISABLE_STEPPER_DRIVER_INTERRUPT() CBI(TIMSK1, OCIE1A)
-#define STEPPER_ISR_ENABLED() TEST(TIMSK1, OCIE1A)
-
-#define ENABLE_TEMPERATURE_INTERRUPT() SBI(TIMSK0, OCIE0A)
-#define DISABLE_TEMPERATURE_INTERRUPT() CBI(TIMSK0, OCIE0A)
-#define TEMPERATURE_ISR_ENABLED() TEST(TIMSK0, OCIE0A)
-
-FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
- switch (timer_num) {
- case MF_TIMER_STEP:
- // waveform generation = 0100 = CTC
- SET_WGM(1, CTC_OCRnA);
-
- // output mode = 00 (disconnected)
- SET_COMA(1, NORMAL);
-
- // 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
- SET_CS(1, PRESCALER_8); // CS 2 = 1/8 prescaler
-
- // Init Stepper ISR to 122 Hz for quick starting
- // (F_CPU) / (STEPPER_TIMER_PRESCALE) / frequency
- OCR1A = 0x4000;
- TCNT1 = 0;
- break;
-
- case MF_TIMER_TEMP:
- // Use timer0 for temperature measurement
- // Interleave temperature interrupt with millies interrupt
- OCR0A = 128;
- break;
- }
-}
-
-#define TIMER_OCR_1 OCR1A
-#define TIMER_COUNTER_1 TCNT1
-
-#define TIMER_OCR_0 OCR0A
-#define TIMER_COUNTER_0 TCNT0
-
-#define _CAT(a,V...) a##V
-#define HAL_timer_set_compare(timer, compare) (_CAT(TIMER_OCR_, timer) = compare)
-#define HAL_timer_get_compare(timer) _CAT(TIMER_OCR_, timer)
-#define HAL_timer_get_count(timer) _CAT(TIMER_COUNTER_, timer)
-
-/**
- * On AVR there is no hardware prioritization and preemption of
- * interrupts, so this emulates it. The UART has first priority
- * (otherwise, characters will be lost due to UART overflow).
- * Then: Stepper, Endstops, Temperature, and -finally- all others.
- */
-#define HAL_timer_isr_prologue(T) NOOP
-#define HAL_timer_isr_epilogue(T) NOOP
-
-#ifndef HAL_STEP_TIMER_ISR
-
-/* 18 cycles maximum latency */
-#define HAL_STEP_TIMER_ISR() \
-extern "C" void TIMER1_COMPA_vect() __attribute__ ((signal, naked, used, externally_visible)); \
-extern "C" void TIMER1_COMPA_vect_bottom() asm ("TIMER1_COMPA_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
-void TIMER1_COMPA_vect() { \
- __asm__ __volatile__ ( \
- A("push r16") /* 2 Save R16 */ \
- A("in r16, __SREG__") /* 1 Get SREG */ \
- A("push r16") /* 2 Save SREG into stack */ \
- A("lds r16, %[timsk0]") /* 2 Load into R0 the Temperature timer Interrupt mask register */ \
- A("push r16") /* 2 Save TIMSK0 into the stack */ \
- A("andi r16,~%[msk0]") /* 1 Disable the temperature ISR */ \
- A("sts %[timsk0], r16") /* 2 And set the new value */ \
- A("lds r16, %[timsk1]") /* 2 Load into R0 the stepper timer Interrupt mask register [TIMSK1] */ \
- A("andi r16,~%[msk1]") /* 1 Disable the stepper ISR */ \
- A("sts %[timsk1], r16") /* 2 And set the new value */ \
- A("push r16") /* 2 Save TIMSK1 into stack */ \
- A("in r16, 0x3B") /* 1 Get RAMPZ register */ \
- A("push r16") /* 2 Save RAMPZ into stack */ \
- A("in r16, 0x3C") /* 1 Get EIND register */ \
- A("push r0") /* C runtime can modify all the following registers without restoring them */ \
- A("push r1") \
- A("push r18") \
- A("push r19") \
- A("push r20") \
- A("push r21") \
- A("push r22") \
- A("push r23") \
- A("push r24") \
- A("push r25") \
- A("push r26") \
- A("push r27") \
- A("push r30") \
- A("push r31") \
- A("clr r1") /* C runtime expects this register to be 0 */ \
- A("call TIMER1_COMPA_vect_bottom") /* Call the bottom handler - No inlining allowed, otherwise registers used are not saved */ \
- A("pop r31") \
- A("pop r30") \
- A("pop r27") \
- A("pop r26") \
- A("pop r25") \
- A("pop r24") \
- A("pop r23") \
- A("pop r22") \
- A("pop r21") \
- A("pop r20") \
- A("pop r19") \
- A("pop r18") \
- A("pop r1") \
- A("pop r0") \
- A("out 0x3C, r16") /* 1 Restore EIND register */ \
- A("pop r16") /* 2 Get the original RAMPZ register value */ \
- A("out 0x3B, r16") /* 1 Restore RAMPZ register to its original value */ \
- A("pop r16") /* 2 Get the original TIMSK1 value but with stepper ISR disabled */ \
- A("ori r16,%[msk1]") /* 1 Reenable the stepper ISR */ \
- A("cli") /* 1 Disable global interrupts - Reenabling Stepper ISR can reenter amd temperature can reenter, and we want that, if it happens, after this ISR has ended */ \
- A("sts %[timsk1], r16") /* 2 And restore the old value - This reenables the stepper ISR */ \
- A("pop r16") /* 2 Get the temperature timer Interrupt mask register [TIMSK0] */ \
- A("sts %[timsk0], r16") /* 2 And restore the old value - This reenables the temperature ISR */ \
- A("pop r16") /* 2 Get the old SREG value */ \
- A("out __SREG__, r16") /* 1 And restore the SREG value */ \
- A("pop r16") /* 2 Restore R16 value */ \
- A("reti") /* 4 Return from interrupt */ \
- : \
- : [timsk0] "i" ((uint16_t)&TIMSK0), \
- [timsk1] "i" ((uint16_t)&TIMSK1), \
- [msk0] "M" ((uint8_t)(1<.
- *
- */
-
-/**
- * Based on u8g_com_st7920_hw_spi.c
- *
- * Universal 8bit Graphics Library
- *
- * Copyright (c) 2011, olikraus@gmail.com
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list
- * of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this
- * list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if defined(ARDUINO) && !defined(ARDUINO_ARCH_STM32) && !defined(ARDUINO_ARCH_SAM)
-
-#include "../../inc/MarlinConfigPre.h"
-
-#if HAS_MARLINUI_U8GLIB
-
-#include "../shared/Marduino.h"
-#include "../shared/Delay.h"
-
-#include
-
-static uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
-static volatile uint8_t *u8g_outData, *u8g_outClock;
-
-static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) {
- u8g_outData = portOutputRegister(digitalPinToPort(dataPin));
- u8g_outClock = portOutputRegister(digitalPinToPort(clockPin));
- u8g_bitData = digitalPinToBitMask(dataPin);
- u8g_bitClock = digitalPinToBitMask(clockPin);
-
- u8g_bitNotClock = u8g_bitClock;
- u8g_bitNotClock ^= 0xFF;
-
- u8g_bitNotData = u8g_bitData;
- u8g_bitNotData ^= 0xFF;
-}
-
-void u8g_spiSend_sw_AVR_mode_0(uint8_t val) {
- uint8_t bitData = u8g_bitData,
- bitNotData = u8g_bitNotData,
- bitClock = u8g_bitClock,
- bitNotClock = u8g_bitNotClock;
- volatile uint8_t *outData = u8g_outData,
- *outClock = u8g_outClock;
- U8G_ATOMIC_START();
- LOOP_L_N(i, 8) {
- if (val & 0x80)
- *outData |= bitData;
- else
- *outData &= bitNotData;
- *outClock |= bitClock;
- val <<= 1;
- *outClock &= bitNotClock;
- }
- U8G_ATOMIC_END();
-}
-
-void u8g_spiSend_sw_AVR_mode_3(uint8_t val) {
- uint8_t bitData = u8g_bitData,
- bitNotData = u8g_bitNotData,
- bitClock = u8g_bitClock,
- bitNotClock = u8g_bitNotClock;
- volatile uint8_t *outData = u8g_outData,
- *outClock = u8g_outClock;
- U8G_ATOMIC_START();
- LOOP_L_N(i, 8) {
- *outClock &= bitNotClock;
- if (val & 0x80)
- *outData |= bitData;
- else
- *outData &= bitNotData;
- *outClock |= bitClock;
- val <<= 1;
- }
- U8G_ATOMIC_END();
-}
-
-
-#if ENABLED(FYSETC_MINI_12864)
- #define SPISEND_SW_AVR u8g_spiSend_sw_AVR_mode_3
-#else
- #define SPISEND_SW_AVR u8g_spiSend_sw_AVR_mode_0
-#endif
-
-uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
- switch (msg) {
- case U8G_COM_MSG_INIT:
- u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]);
- u8g_com_arduino_assign_pin_output_high(u8g);
- u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, 0);
- u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, 0);
- break;
-
- case U8G_COM_MSG_STOP:
- break;
-
- case U8G_COM_MSG_RESET:
- if (U8G_PIN_NONE != u8g->pin_list[U8G_PI_RESET]) u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val);
- break;
-
- case U8G_COM_MSG_CHIP_SELECT:
- #if ENABLED(FYSETC_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0
- if (arg_val) { // SCK idle state needs to be set to the proper idle state before
- // the next chip select goes active
- u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active
- u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW);
- }
- else {
- u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH);
- u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, 0); // Set SCK to mode 0 idle state after CS goes inactive
- }
- #else
- u8g_com_arduino_digital_write(u8g, U8G_PI_CS, !arg_val);
- #endif
- break;
-
- case U8G_COM_MSG_WRITE_BYTE:
- SPISEND_SW_AVR(arg_val);
- break;
-
- case U8G_COM_MSG_WRITE_SEQ: {
- uint8_t *ptr = (uint8_t *)arg_ptr;
- while (arg_val > 0) {
- SPISEND_SW_AVR(*ptr++);
- arg_val--;
- }
- }
- break;
-
- case U8G_COM_MSG_WRITE_SEQ_P: {
- uint8_t *ptr = (uint8_t *)arg_ptr;
- while (arg_val > 0) {
- SPISEND_SW_AVR(u8g_pgm_read(ptr));
- ptr++;
- arg_val--;
- }
- }
- break;
-
- case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
- u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val);
- break;
- }
- return 1;
-}
-
-#endif // HAS_MARLINUI_U8GLIB
-#endif // ARDUINO_ARCH_SAM
diff --git a/src/HAL/DUE/HAL.cpp b/src/HAL/DUE/HAL.cpp
deleted file mode 100644
index 4353f16..0000000
--- a/src/HAL/DUE/HAL.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * HAL for Arduino Due and compatible (SAM3X8E)
- */
-
-#ifdef ARDUINO_ARCH_SAM
-
-#include "../../inc/MarlinConfig.h"
-#include "../../MarlinCore.h"
-
-#include
-#include "usb/usb_task.h"
-
-// ------------------------
-// Public Variables
-// ------------------------
-
-uint16_t MarlinHAL::adc_result;
-
-// ------------------------
-// Public functions
-// ------------------------
-
-#if ENABLED(POSTMORTEM_DEBUGGING)
- extern void install_min_serial();
-#endif
-
-void MarlinHAL::init() {
- #if ENABLED(SDSUPPORT)
- OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
- #endif
- usb_task_init(); // Initialize the USB stack
- TERN_(POSTMORTEM_DEBUGGING, install_min_serial()); // Install the min serial handler
-}
-
-void MarlinHAL::init_board() {
- #ifdef BOARD_INIT
- BOARD_INIT();
- #endif
-}
-
-void MarlinHAL::idletask() { usb_task_idle(); } // Perform USB stack housekeeping
-
-uint8_t MarlinHAL::get_reset_source() {
- switch ((RSTC->RSTC_SR >> 8) & 0x07) {
- case 0: return RST_POWER_ON;
- case 1: return RST_BACKUP;
- case 2: return RST_WATCHDOG;
- case 3: return RST_SOFTWARE;
- case 4: return RST_EXTERNAL;
- default: return 0;
- }
-}
-
-void MarlinHAL::reboot() { rstc_start_software_reset(RSTC); }
-
-// ------------------------
-// Watchdog Timer
-// ------------------------
-
-#if ENABLED(USE_WATCHDOG)
-
- // Initialize watchdog - On SAM3X, Watchdog was already configured
- // and enabled or disabled at startup, so no need to reconfigure it
- // here.
- void MarlinHAL::watchdog_init() { WDT_Restart(WDT); } // Reset watchdog to start clean
-
- // Reset watchdog. MUST be called at least every 4 seconds after the
- // first watchdog_init or AVR will go into emergency procedures.
- void MarlinHAL::watchdog_refresh() { watchdogReset(); }
-
-#endif
-
-// Override Arduino runtime to either config or disable the watchdog
-//
-// We need to configure the watchdog as soon as possible in the boot
-// process, because watchdog initialization at hardware reset on SAM3X8E
-// is unreliable, and there is risk of unintended resets if we delay
-// that initialization to a later time.
-void watchdogSetup() {
-
- #if ENABLED(USE_WATCHDOG)
-
- // 4 seconds timeout
- uint32_t timeout = TERN(WATCHDOG_DURATION_8S, 8000, 4000);
-
- // Calculate timeout value in WDT counter ticks: This assumes
- // the slow clock is running at 32.768 kHz watchdog
- // frequency is therefore 32768 / 128 = 256 Hz
- timeout = (timeout << 8) / 1000;
- if (timeout == 0)
- timeout = 1;
- else if (timeout > 0xFFF)
- timeout = 0xFFF;
-
- // We want to enable the watchdog with the specified timeout
- uint32_t value =
- WDT_MR_WDV(timeout) | // With the specified timeout
- WDT_MR_WDD(timeout) | // and no invalid write window
- #if !(SAMV70 || SAMV71 || SAME70 || SAMS70)
- WDT_MR_WDRPROC | // WDT fault resets processor only - We want
- // to keep PIO controller state
- #endif
- WDT_MR_WDDBGHLT | // WDT stops in debug state.
- WDT_MR_WDIDLEHLT; // WDT stops in idle state.
-
- #if ENABLED(WATCHDOG_RESET_MANUAL)
- // We enable the watchdog timer, but only for the interrupt.
-
- // Configure WDT to only trigger an interrupt
- value |= WDT_MR_WDFIEN; // Enable WDT fault interrupt.
-
- // Disable WDT interrupt (just in case, to avoid triggering it!)
- NVIC_DisableIRQ(WDT_IRQn);
-
- // We NEED memory barriers to ensure Interrupts are actually disabled!
- // ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )
- __DSB();
- __ISB();
-
- // Initialize WDT with the given parameters
- WDT_Enable(WDT, value);
-
- // Configure and enable WDT interrupt.
- NVIC_ClearPendingIRQ(WDT_IRQn);
- NVIC_SetPriority(WDT_IRQn, 0); // Use highest priority, so we detect all kinds of lockups
- NVIC_EnableIRQ(WDT_IRQn);
-
- #else
-
- // a WDT fault triggers a reset
- value |= WDT_MR_WDRSTEN;
-
- // Initialize WDT with the given parameters
- WDT_Enable(WDT, value);
-
- #endif
-
- // Reset the watchdog
- WDT_Restart(WDT);
-
- #else
-
- // Make sure to completely disable the Watchdog
- WDT_Disable(WDT);
-
- #endif
-}
-
-// ------------------------
-// Free Memory Accessor
-// ------------------------
-
-extern "C" {
- extern unsigned int _ebss; // end of bss section
-}
-
-// Return free memory between end of heap (or end bss) and whatever is current
-int freeMemory() {
- int free_memory, heap_end = (int)_sbrk(0);
- return (int)&free_memory - (heap_end ?: (int)&_ebss);
-}
-
-// ------------------------
-// Serial Ports
-// ------------------------
-
-// Forward the default serial ports
-#if USING_HW_SERIAL0
- DefaultSerial1 MSerial0(false, Serial);
-#endif
-#if USING_HW_SERIAL1
- DefaultSerial2 MSerial1(false, Serial1);
-#endif
-#if USING_HW_SERIAL2
- DefaultSerial3 MSerial2(false, Serial2);
-#endif
-#if USING_HW_SERIAL3
- DefaultSerial4 MSerial3(false, Serial3);
-#endif
-
-#endif // ARDUINO_ARCH_SAM
diff --git a/src/HAL/DUE/HAL.h b/src/HAL/DUE/HAL.h
deleted file mode 100644
index 4d3f482..0000000
--- a/src/HAL/DUE/HAL.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- *
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * HAL for Arduino Due and compatible (SAM3X8E)
- */
-
-#define CPU_32_BIT
-
-#include "../shared/Marduino.h"
-#include "../shared/eeprom_if.h"
-#include "../shared/math_32bit.h"
-#include "../shared/HAL_SPI.h"
-#include "fastio.h"
-
-#include
-
-#include "../../core/serial_hook.h"
-
-// ------------------------
-// Serial ports
-// ------------------------
-
-typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
-typedef ForwardSerial1Class< decltype(Serial1) > DefaultSerial2;
-typedef ForwardSerial1Class< decltype(Serial2) > DefaultSerial3;
-typedef ForwardSerial1Class< decltype(Serial3) > DefaultSerial4;
-extern DefaultSerial1 MSerial0;
-extern DefaultSerial2 MSerial1;
-extern DefaultSerial3 MSerial2;
-extern DefaultSerial4 MSerial3;
-
-#define _MSERIAL(X) MSerial##X
-#define MSERIAL(X) _MSERIAL(X)
-
-#if SERIAL_PORT == -1 || ENABLED(EMERGENCY_PARSER)
- #define MYSERIAL1 customizedSerial1
-#elif WITHIN(SERIAL_PORT, 0, 3)
- #define MYSERIAL1 MSERIAL(SERIAL_PORT)
-#else
- #error "The required SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
-#endif
-
-#ifdef SERIAL_PORT_2
- #if SERIAL_PORT_2 == -1 || ENABLED(EMERGENCY_PARSER)
- #define MYSERIAL2 customizedSerial2
- #elif WITHIN(SERIAL_PORT_2, 0, 3)
- #define MYSERIAL2 MSERIAL(SERIAL_PORT_2)
- #else
- #error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
- #endif
-#endif
-
-#ifdef SERIAL_PORT_3
- #if SERIAL_PORT_3 == -1 || ENABLED(EMERGENCY_PARSER)
- #define MYSERIAL3 customizedSerial3
- #elif WITHIN(SERIAL_PORT_3, 0, 3)
- #define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
- #else
- #error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
- #endif
-#endif
-
-#ifdef MMU2_SERIAL_PORT
- #if WITHIN(MMU2_SERIAL_PORT, 0, 3)
- #define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
- #else
- #error "MMU2_SERIAL_PORT must be from 0 to 3."
- #endif
-#endif
-
-#ifdef LCD_SERIAL_PORT
- #if WITHIN(LCD_SERIAL_PORT, 0, 3)
- #define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT)
- #else
- #error "LCD_SERIAL_PORT must be from 0 to 3."
- #endif
-#endif
-
-#include "MarlinSerial.h"
-#include "MarlinSerialUSB.h"
-
-// ------------------------
-// Types
-// ------------------------
-
-typedef int8_t pin_t;
-
-#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
-
-class Servo;
-typedef Servo hal_servo_t;
-
-//
-// Interrupts
-//
-#define sei() interrupts()
-#define cli() noInterrupts()
-
-#define CRITICAL_SECTION_START() const bool _irqon = hal.isr_state(); hal.isr_off()
-#define CRITICAL_SECTION_END() if (_irqon) hal.isr_on()
-
-//
-// ADC
-//
-#define HAL_ADC_VREF 3.3
-#define HAL_ADC_RESOLUTION 10
-
-#ifndef analogInputToDigitalPin
- #define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
-#endif
-
-//
-// Pin Mapping for M42, M43, M226
-//
-#define GET_PIN_MAP_PIN(index) index
-#define GET_PIN_MAP_INDEX(pin) pin
-#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
-
-//
-// Tone
-//
-void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
-void noTone(const pin_t _pin);
-
-// ------------------------
-// Class Utilities
-// ------------------------
-
-#pragma GCC diagnostic push
-#if GCC_VERSION <= 50000
- #pragma GCC diagnostic ignored "-Wunused-function"
-#endif
-
-#pragma GCC diagnostic pop
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-char *dtostrf(double __val, signed char __width, unsigned char __prec, char *__s);
-#ifdef __cplusplus
- }
-#endif
-
-// Return free RAM between end of heap (or end bss) and whatever is current
-int freeMemory();
-
-// ------------------------
-// MarlinHAL Class
-// ------------------------
-
-class MarlinHAL {
-public:
-
- // Earliest possible init, before setup()
- MarlinHAL() {}
-
- // Watchdog
- static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
- static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
-
- static void init(); // Called early in setup()
- static void init_board(); // Called less early in setup()
- static void reboot(); // Restart the firmware
-
- // Interrupts
- static bool isr_state() { return !__get_PRIMASK(); }
- static void isr_on() { __enable_irq(); }
- static void isr_off() { __disable_irq(); }
-
- static void delay_ms(const int ms) { delay(ms); }
-
- // Tasks, called from idle()
- static void idletask();
-
- // Reset
- static uint8_t get_reset_source();
- static void clear_reset_source() {}
-
- // Free SRAM
- static int freeMemory() { return ::freeMemory(); }
-
- //
- // ADC Methods
- //
-
- static uint16_t adc_result;
-
- // Called by Temperature::init once at startup
- static void adc_init() {}
-
- // Called by Temperature::init for each sensor at startup
- static void adc_enable(const uint8_t ch) {}
-
- // Begin ADC sampling on the given channel. Called from Temperature::isr!
- static void adc_start(const uint8_t ch) { adc_result = analogRead(ch); }
-
- // Is the ADC ready for reading?
- static bool adc_ready() { return true; }
-
- // The current value of the ADC register
- static uint16_t adc_value() { return adc_result; }
-
- /**
- * Set the PWM duty cycle for the pin to the given value.
- * No inverting the duty cycle in this HAL.
- * No changing the maximum size of the provided value to enable finer PWM duty control in this HAL.
- */
- static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
- analogWrite(pin, v);
- }
-
-};
diff --git a/src/HAL/DUE/HAL_SPI.cpp b/src/HAL/DUE/HAL_SPI.cpp
deleted file mode 100644
index 7e3fe01..0000000
--- a/src/HAL/DUE/HAL_SPI.cpp
+++ /dev/null
@@ -1,819 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * Software SPI functions originally from Arduino Sd2Card Library
- * Copyright (c) 2009 by William Greiman
- *
- * Completely rewritten and tuned by Eduardo José Tagle in 2017/2018
- * in ARM thumb2 inline assembler and tuned for maximum speed and performance
- * allowing SPI clocks of up to 12 Mhz to increase SD card read/write performance
- */
-
-/**
- * HAL for Arduino Due and compatible (SAM3X8E)
- */
-
-#ifdef ARDUINO_ARCH_SAM
-
-#include "../../inc/MarlinConfig.h"
-#include "../shared/Delay.h"
-
-// ------------------------
-// Public functions
-// ------------------------
-
-#if EITHER(DUE_SOFTWARE_SPI, FORCE_SOFT_SPI)
-
- // ------------------------
- // Software SPI
- // ------------------------
-
- // Make sure GCC optimizes this file.
- // Note that this line triggers a bug in GCC which is fixed by casting.
- // See the note below.
- #pragma GCC optimize (3)
-
- typedef uint8_t (*pfnSpiTransfer)(uint8_t b);
- typedef void (*pfnSpiRxBlock)(uint8_t *buf, uint32_t nbyte);
- typedef void (*pfnSpiTxBlock)(const uint8_t *buf, uint32_t nbyte);
-
- /* ---------------- Macros to be able to access definitions from asm */
- #define _PORT(IO) DIO ## IO ## _WPORT
- #define _PIN_MASK(IO) MASK(DIO ## IO ## _PIN)
- #define _PIN_SHIFT(IO) DIO ## IO ## _PIN
- #define PORT(IO) _PORT(IO)
- #define PIN_MASK(IO) _PIN_MASK(IO)
- #define PIN_SHIFT(IO) _PIN_SHIFT(IO)
-
- // run at ~8 .. ~10Mhz - Tx version (Rx data discarded)
- static uint8_t spiTransferTx0(uint8_t bout) { // using Mode 0
- uint32_t MOSI_PORT_PLUS30 = ((uint32_t) PORT(SD_MOSI_PIN)) + 0x30; /* SODR of port */
- uint32_t MOSI_MASK = PIN_MASK(SD_MOSI_PIN);
- uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
- uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
- uint32_t idx = 0;
-
- /* Negate bout, as the assembler requires a negated value */
- bout = ~bout;
-
- /* The software SPI routine */
- __asm__ __volatile__(
- A(".syntax unified") // is to prevent CM0,CM1 non-unified syntax
-
- /* Bit 7 */
- A("ubfx %[idx],%[txval],#7,#1") /* Place bit 7 in bit 0 of idx*/
-
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#6,#1") /* Place bit 6 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 6 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#5,#1") /* Place bit 5 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 5 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#4,#1") /* Place bit 4 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 4 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#3,#1") /* Place bit 3 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 3 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#2,#1") /* Place bit 2 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 2 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#1,#1") /* Place bit 1 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 1 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[idx],%[txval],#0,#1") /* Place bit 0 in bit 0 of idx*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 0 */
- A("str %[mosi_mask],[%[mosi_port], %[idx],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("nop") /* Result will be 0 */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- : [idx]"+r"( idx )
- : [txval]"r"( bout ) ,
- [mosi_mask]"r"( MOSI_MASK ),
- [mosi_port]"r"( MOSI_PORT_PLUS30 ),
- [sck_mask]"r"( SCK_MASK ),
- [sck_port]"r"( SCK_PORT_PLUS30 )
- : "cc"
- );
-
- return 0;
- }
-
- // Calculates the bit band alias address and returns a pointer address to word.
- // addr: The byte address of bitbanding bit.
- // bit: The bit position of bitbanding bit.
- #define BITBAND_ADDRESS(addr, bit) \
- (((uint32_t)(addr) & 0xF0000000) + 0x02000000 + ((uint32_t)(addr)&0xFFFFF)*32 + (bit)*4)
-
- // run at ~8 .. ~10Mhz - Rx version (Tx line not altered)
- static uint8_t spiTransferRx0(uint8_t) { // using Mode 0
- uint32_t bin = 0;
- uint32_t work = 0;
- uint32_t BITBAND_MISO_PORT = BITBAND_ADDRESS( ((uint32_t)PORT(SD_MISO_PIN))+0x3C, PIN_SHIFT(SD_MISO_PIN)); /* PDSR of port in bitband area */
- uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
- uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
-
- /* The software SPI routine */
- __asm__ __volatile__(
- A(".syntax unified") // is to prevent CM0,CM1 non-unified syntax
-
- /* bit 7 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#7,#1") /* Store read bit as the bit 7 */
-
- /* bit 6 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#6,#1") /* Store read bit as the bit 6 */
-
- /* bit 5 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#5,#1") /* Store read bit as the bit 5 */
-
- /* bit 4 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#4,#1") /* Store read bit as the bit 4 */
-
- /* bit 3 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#3,#1") /* Store read bit as the bit 3 */
-
- /* bit 2 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#2,#1") /* Store read bit as the bit 2 */
-
- /* bit 1 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#1,#1") /* Store read bit as the bit 1 */
-
- /* bit 0 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#0,#1") /* Store read bit as the bit 0 */
-
- : [bin]"+r"(bin),
- [work]"+r"(work)
- : [bitband_miso_port]"r"( BITBAND_MISO_PORT ),
- [sck_mask]"r"( SCK_MASK ),
- [sck_port]"r"( SCK_PORT_PLUS30 )
- : "cc"
- );
-
- return bin;
- }
-
- // run at ~4Mhz
- static uint8_t spiTransfer1(uint8_t b) { // using Mode 0
- int bits = 8;
- do {
- WRITE(SD_MOSI_PIN, b & 0x80);
- b <<= 1; // little setup time
-
- WRITE(SD_SCK_PIN, HIGH);
- DELAY_NS(125); // 10 cycles @ 84mhz
-
- b |= (READ(SD_MISO_PIN) != 0);
-
- WRITE(SD_SCK_PIN, LOW);
- DELAY_NS(125); // 10 cycles @ 84mhz
- } while (--bits);
- return b;
- }
-
- // all the others
- static uint16_t spiDelayNS = 4000; // 4000ns => 125khz
-
- static uint8_t spiTransferX(uint8_t b) { // using Mode 0
- int bits = 8;
- do {
- WRITE(SD_MOSI_PIN, b & 0x80);
- b <<= 1; // little setup time
-
- WRITE(SD_SCK_PIN, HIGH);
- DELAY_NS(spiDelayNS);
-
- b |= (READ(SD_MISO_PIN) != 0);
-
- WRITE(SD_SCK_PIN, LOW);
- DELAY_NS(spiDelayNS);
- } while (--bits);
- return b;
- }
-
- // Pointers to generic functions for byte transfers
-
- /**
- * Note: The cast is unnecessary, but without it, this file triggers a GCC 4.8.3-2014 bug.
- * Later GCC versions do not have this problem, but at this time (May 2018) Arduino still
- * uses that buggy and obsolete GCC version!!
- */
- static pfnSpiTransfer spiTransferRx = (pfnSpiTransfer)spiTransferX;
- static pfnSpiTransfer spiTransferTx = (pfnSpiTransfer)spiTransferX;
-
- // Block transfers run at ~8 .. ~10Mhz - Tx version (Rx data discarded)
- static void spiTxBlock0(const uint8_t *ptr, uint32_t todo) {
- uint32_t MOSI_PORT_PLUS30 = ((uint32_t) PORT(SD_MOSI_PIN)) + 0x30; /* SODR of port */
- uint32_t MOSI_MASK = PIN_MASK(SD_MOSI_PIN);
- uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
- uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
- uint32_t work = 0;
- uint32_t txval = 0;
-
- /* The software SPI routine */
- __asm__ __volatile__(
- A(".syntax unified") // is to prevent CM0,CM1 non-unified syntax
-
- L("loop%=")
- A("ldrb.w %[txval], [%[ptr]], #1") /* Load value to send, increment buffer */
- A("mvn %[txval],%[txval]") /* Negate value */
-
- /* Bit 7 */
- A("ubfx %[work],%[txval],#7,#1") /* Place bit 7 in bit 0 of work*/
-
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#6,#1") /* Place bit 6 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 6 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#5,#1") /* Place bit 5 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 5 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#4,#1") /* Place bit 4 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 4 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#3,#1") /* Place bit 3 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 3 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#2,#1") /* Place bit 2 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 2 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#1,#1") /* Place bit 1 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 1 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ubfx %[work],%[txval],#0,#1") /* Place bit 0 in bit 0 of work*/
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
-
- /* Bit 0 */
- A("str %[mosi_mask],[%[mosi_port], %[work],LSL #2]") /* Access the proper SODR or CODR registers based on that bit */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("subs %[todo],#1") /* Decrement count of pending words to send, update status */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bne.n loop%=") /* Repeat until done */
-
- : [ptr]"+r" ( ptr ) ,
- [todo]"+r" ( todo ) ,
- [work]"+r"( work ) ,
- [txval]"+r"( txval )
- : [mosi_mask]"r"( MOSI_MASK ),
- [mosi_port]"r"( MOSI_PORT_PLUS30 ),
- [sck_mask]"r"( SCK_MASK ),
- [sck_port]"r"( SCK_PORT_PLUS30 )
- : "cc"
- );
- }
-
- static void spiRxBlock0(uint8_t *ptr, uint32_t todo) {
- uint32_t bin = 0;
- uint32_t work = 0;
- uint32_t BITBAND_MISO_PORT = BITBAND_ADDRESS( ((uint32_t)PORT(SD_MISO_PIN))+0x3C, PIN_SHIFT(SD_MISO_PIN)); /* PDSR of port in bitband area */
- uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
- uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
-
- /* The software SPI routine */
- __asm__ __volatile__(
- A(".syntax unified") // is to prevent CM0,CM1 non-unified syntax
-
- L("loop%=")
-
- /* bit 7 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#7,#1") /* Store read bit as the bit 7 */
-
- /* bit 6 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#6,#1") /* Store read bit as the bit 6 */
-
- /* bit 5 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#5,#1") /* Store read bit as the bit 5 */
-
- /* bit 4 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#4,#1") /* Store read bit as the bit 4 */
-
- /* bit 3 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#3,#1") /* Store read bit as the bit 3 */
-
- /* bit 2 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#2,#1") /* Store read bit as the bit 2 */
-
- /* bit 1 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#1,#1") /* Store read bit as the bit 1 */
-
- /* bit 0 */
- A("str %[sck_mask],[%[sck_port]]") /* SODR */
- A("ldr %[work],[%[bitband_miso_port]]") /* PDSR on bitband area for required bit: work will be 1 or 0 based on port */
- A("str %[sck_mask],[%[sck_port],#0x4]") /* CODR */
- A("bfi %[bin],%[work],#0,#1") /* Store read bit as the bit 0 */
-
- A("subs %[todo],#1") /* Decrement count of pending words to send, update status */
- A("strb.w %[bin], [%[ptr]], #1") /* Store read value into buffer, increment buffer pointer */
- A("bne.n loop%=") /* Repeat until done */
-
- : [ptr]"+r"(ptr),
- [todo]"+r"(todo),
- [bin]"+r"(bin),
- [work]"+r"(work)
- : [bitband_miso_port]"r"( BITBAND_MISO_PORT ),
- [sck_mask]"r"( SCK_MASK ),
- [sck_port]"r"( SCK_PORT_PLUS30 )
- : "cc"
- );
- }
-
- static void spiTxBlockX(const uint8_t *buf, uint32_t todo) {
- do {
- (void)spiTransferTx(*buf++);
- } while (--todo);
- }
-
- static void spiRxBlockX(uint8_t *buf, uint32_t todo) {
- do {
- *buf++ = spiTransferRx(0xFF);
- } while (--todo);
- }
-
- // Pointers to generic functions for block transfers
- static pfnSpiTxBlock spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
- static pfnSpiRxBlock spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
-
- #if MB(ALLIGATOR)
- #define _SS_WRITE(S) WRITE(SD_SS_PIN, S)
- #else
- #define _SS_WRITE(S) NOOP
- #endif
-
- void spiBegin() {
- SET_OUTPUT(SD_SS_PIN);
- _SS_WRITE(HIGH);
- SET_OUTPUT(SD_SCK_PIN);
- SET_INPUT(SD_MISO_PIN);
- SET_OUTPUT(SD_MOSI_PIN);
- }
-
- uint8_t spiRec() {
- _SS_WRITE(LOW);
- WRITE(SD_MOSI_PIN, HIGH); // Output 1s 1
- uint8_t b = spiTransferRx(0xFF);
- _SS_WRITE(HIGH);
- return b;
- }
-
- void spiRead(uint8_t *buf, uint16_t nbyte) {
- if (nbyte) {
- _SS_WRITE(LOW);
- WRITE(SD_MOSI_PIN, HIGH); // Output 1s 1
- spiRxBlock(buf, nbyte);
- _SS_WRITE(HIGH);
- }
- }
-
- void spiSend(uint8_t b) {
- _SS_WRITE(LOW);
- (void)spiTransferTx(b);
- _SS_WRITE(HIGH);
- }
-
- void spiSendBlock(uint8_t token, const uint8_t *buf) {
- _SS_WRITE(LOW);
- (void)spiTransferTx(token);
- spiTxBlock(buf, 512);
- _SS_WRITE(HIGH);
- }
-
- /**
- * spiRate should be
- * 0 : 8 - 10 MHz
- * 1 : 4 - 5 MHz
- * 2 : 2 - 2.5 MHz
- * 3 : 1 - 1.25 MHz
- * 4 : 500 - 625 kHz
- * 5 : 250 - 312 kHz
- * 6 : 125 - 156 kHz
- */
- void spiInit(uint8_t spiRate) {
- switch (spiRate) {
- case 0:
- spiTransferTx = (pfnSpiTransfer)spiTransferTx0;
- spiTransferRx = (pfnSpiTransfer)spiTransferRx0;
- spiTxBlock = (pfnSpiTxBlock)spiTxBlock0;
- spiRxBlock = (pfnSpiRxBlock)spiRxBlock0;
- break;
- case 1:
- spiTransferTx = (pfnSpiTransfer)spiTransfer1;
- spiTransferRx = (pfnSpiTransfer)spiTransfer1;
- spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
- spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
- break;
- default:
- spiDelayNS = 4000 >> (6 - spiRate); // spiRate of 2 gives the maximum error with current CPU
- spiTransferTx = (pfnSpiTransfer)spiTransferX;
- spiTransferRx = (pfnSpiTransfer)spiTransferX;
- spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
- spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
- break;
- }
-
- _SS_WRITE(HIGH);
- WRITE(SD_MOSI_PIN, HIGH);
- WRITE(SD_SCK_PIN, LOW);
- }
-
- /** Begin SPI transaction, set clock, bit order, data mode */
- void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
- // TODO: to be implemented
- }
-
- #pragma GCC reset_options
-
-#else // !SOFTWARE_SPI
-
- #define WHILE_TX(N) while ((SPI0->SPI_SR & SPI_SR_TDRE) == (N))
- #define WHILE_RX(N) while ((SPI0->SPI_SR & SPI_SR_RDRF) == (N))
- #define FLUSH_TX() do{ WHILE_RX(1) SPI0->SPI_RDR; }while(0)
-
- #if MB(ALLIGATOR)
-
- // slave selects controlled by SPI controller
- // doesn't support changing SPI speeds for SD card
-
- // ------------------------
- // hardware SPI
- // ------------------------
- static bool spiInitialized = false;
-
- void spiInit(uint8_t spiRate) {
- if (spiInitialized) return;
-
- // 8.4 MHz, 4 MHz, 2 MHz, 1 MHz, 0.5 MHz, 0.329 MHz, 0.329 MHz
- constexpr int spiDivider[] = { 10, 21, 42, 84, 168, 255, 255 };
- if (spiRate > 6) spiRate = 1;
-
- // Set SPI mode 1, clock, select not active after transfer, with delay between transfers
- SPI_ConfigureNPCS(SPI0, SPI_CHAN_DAC,
- SPI_CSR_CSAAT | SPI_CSR_SCBR(spiDivider[spiRate]) |
- SPI_CSR_DLYBCT(1));
- // Set SPI mode 0, clock, select not active after transfer, with delay between transfers
- SPI_ConfigureNPCS(SPI0, SPI_CHAN_EEPROM1, SPI_CSR_NCPHA |
- SPI_CSR_CSAAT | SPI_CSR_SCBR(spiDivider[spiRate]) |
- SPI_CSR_DLYBCT(1));
-
- // Set SPI mode 0, clock, select not active after transfer, with delay between transfers
- SPI_ConfigureNPCS(SPI0, SPI_CHAN, SPI_CSR_NCPHA |
- SPI_CSR_CSAAT | SPI_CSR_SCBR(spiDivider[spiRate]) |
- SPI_CSR_DLYBCT(1));
- SPI_Enable(SPI0);
- spiInitialized = true;
- }
-
- void spiBegin() {
- if (spiInitialized) return;
-
- // Configure SPI pins
- PIO_Configure(
- g_APinDescription[SD_SCK_PIN].pPort,
- g_APinDescription[SD_SCK_PIN].ulPinType,
- g_APinDescription[SD_SCK_PIN].ulPin,
- g_APinDescription[SD_SCK_PIN].ulPinConfiguration);
- PIO_Configure(
- g_APinDescription[SD_MOSI_PIN].pPort,
- g_APinDescription[SD_MOSI_PIN].ulPinType,
- g_APinDescription[SD_MOSI_PIN].ulPin,
- g_APinDescription[SD_MOSI_PIN].ulPinConfiguration);
- PIO_Configure(
- g_APinDescription[SD_MISO_PIN].pPort,
- g_APinDescription[SD_MISO_PIN].ulPinType,
- g_APinDescription[SD_MISO_PIN].ulPin,
- g_APinDescription[SD_MISO_PIN].ulPinConfiguration);
-
- // set master mode, peripheral select, fault detection
- SPI_Configure(SPI0, ID_SPI0, SPI_MR_MSTR | SPI_MR_MODFDIS | SPI_MR_PS);
- SPI_Enable(SPI0);
-
- SET_OUTPUT(DAC0_SYNC_PIN);
- #if HAS_MULTI_EXTRUDER
- OUT_WRITE(DAC1_SYNC_PIN, HIGH);
- #endif
- WRITE(DAC0_SYNC_PIN, HIGH);
- OUT_WRITE(SPI_EEPROM1_CS_PIN, HIGH);
- OUT_WRITE(SPI_EEPROM2_CS_PIN, HIGH);
- OUT_WRITE(SPI_FLASH_CS_PIN, HIGH);
- WRITE(SD_SS_PIN, HIGH);
-
- OUT_WRITE(SDSS, LOW);
-
- PIO_Configure(
- g_APinDescription[SPI_PIN].pPort,
- g_APinDescription[SPI_PIN].ulPinType,
- g_APinDescription[SPI_PIN].ulPin,
- g_APinDescription[SPI_PIN].ulPinConfiguration
- );
-
- spiInit(1);
- }
-
- // Read single byte from SPI
- uint8_t spiRec() {
- // write dummy byte with address and end transmission flag
- SPI0->SPI_TDR = 0x000000FF | SPI_PCS(SPI_CHAN) | SPI_TDR_LASTXFER;
-
- WHILE_TX(0);
- WHILE_RX(0);
-
- //DELAY_US(1U);
- return SPI0->SPI_RDR;
- }
-
- uint8_t spiRec(uint32_t chan) {
-
- WHILE_TX(0);
- FLUSH_RX();
-
- // write dummy byte with address and end transmission flag
- SPI0->SPI_TDR = 0x000000FF | SPI_PCS(chan) | SPI_TDR_LASTXFER;
- WHILE_RX(0);
-
- return SPI0->SPI_RDR;
- }
-
- // Read from SPI into buffer
- void spiRead(uint8_t *buf, uint16_t nbyte) {
- if (!nbyte) return;
- --nbyte;
- for (int i = 0; i < nbyte; i++) {
- //WHILE_TX(0);
- SPI0->SPI_TDR = 0x000000FF | SPI_PCS(SPI_CHAN);
- WHILE_RX(0);
- buf[i] = SPI0->SPI_RDR;
- //DELAY_US(1U);
- }
- buf[nbyte] = spiRec();
- }
-
- // Write single byte to SPI
- void spiSend(const byte b) {
- // write byte with address and end transmission flag
- SPI0->SPI_TDR = (uint32_t)b | SPI_PCS(SPI_CHAN) | SPI_TDR_LASTXFER;
- WHILE_TX(0);
- WHILE_RX(0);
- SPI0->SPI_RDR;
- //DELAY_US(1U);
- }
-
- void spiSend(const uint8_t *buf, size_t nbyte) {
- if (!nbyte) return;
- --nbyte;
- for (size_t i = 0; i < nbyte; i++) {
- SPI0->SPI_TDR = (uint32_t)buf[i] | SPI_PCS(SPI_CHAN);
- WHILE_TX(0);
- WHILE_RX(0);
- SPI0->SPI_RDR;
- //DELAY_US(1U);
- }
- spiSend(buf[nbyte]);
- }
-
- void spiSend(uint32_t chan, byte b) {
- WHILE_TX(0);
- // write byte with address and end transmission flag
- SPI0->SPI_TDR = (uint32_t)b | SPI_PCS(chan) | SPI_TDR_LASTXFER;
- WHILE_RX(0);
- FLUSH_RX();
- }
-
- void spiSend(uint32_t chan, const uint8_t *buf, size_t nbyte) {
- if (!nbyte) return;
- --nbyte;
- for (size_t i = 0; i < nbyte; i++) {
- WHILE_TX(0);
- SPI0->SPI_TDR = (uint32_t)buf[i] | SPI_PCS(chan);
- WHILE_RX(0);
- FLUSH_RX();
- }
- spiSend(chan, buf[nbyte]);
- }
-
- // Write from buffer to SPI
- void spiSendBlock(uint8_t token, const uint8_t *buf) {
- SPI0->SPI_TDR = (uint32_t)token | SPI_PCS(SPI_CHAN);
- WHILE_TX(0);
- //WHILE_RX(0);
- //SPI0->SPI_RDR;
- for (int i = 0; i < 511; i++) {
- SPI0->SPI_TDR = (uint32_t)buf[i] | SPI_PCS(SPI_CHAN);
- WHILE_TX(0);
- WHILE_RX(0);
- SPI0->SPI_RDR;
- //DELAY_US(1U);
- }
- spiSend(buf[511]);
- }
-
- /** Begin SPI transaction, set clock, bit order, data mode */
- void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
- // TODO: to be implemented
- }
-
- #else // U8G compatible hardware SPI
-
- #define SPI_MODE_0_DUE_HW 2 // DUE CPHA control bit is inverted
- #define SPI_MODE_1_DUE_HW 3
- #define SPI_MODE_2_DUE_HW 0
- #define SPI_MODE_3_DUE_HW 1
-
- /**
- * The DUE SPI controller is set up so the upper word of the longword
- * written to the transmit data register selects which SPI Chip Select
- * Register is used. This allows different streams to have different SPI
- * settings.
- *
- * In practice it's spooky. Some combinations hang the system, while others
- * upset the peripheral device.
- *
- * SPI mode should be the same for all streams. The FYSETC_MINI_12864 gets
- * upset if the clock phase changes after chip select goes active.
- *
- * SPI_CSR_CSAAT should be set for all streams. If not the WHILE_TX(0)
- * macro returns immediately which can result in the SPI chip select going
- * inactive before all the data has been sent.
- *
- * The TMC2130 library uses SPI0->SPI_CSR[3].
- *
- * The U8G hardware SPI uses SPI0->SPI_CSR[0]. The system hangs and/or the
- * FYSETC_MINI_12864 gets upset if lower baud rates are used and the SD card
- * is inserted or removed.
- *
- * The SD card uses SPI0->SPI_CSR[3]. Efforts were made to use [1] and [2]
- * but they all resulted in hangs or garbage on the LCD.
- *
- * The SPI controlled chip selects are NOT enabled in the GPIO controller.
- * The application must control the chip select.
- *
- * All of the above can be avoided by defining FORCE_SOFT_SPI to force the
- * display to use software SPI.
- */
-
- void spiInit(uint8_t spiRate=6) { // Default to slowest rate if not specified)
- // Also sets U8G SPI rate to 4MHz and the SPI mode to 3
-
- // 8.4 MHz, 4 MHz, 2 MHz, 1 MHz, 0.5 MHz, 0.329 MHz, 0.329 MHz
- constexpr int spiDivider[] = { 10, 21, 42, 84, 168, 255, 255 };
- if (spiRate > 6) spiRate = 1;
-
- // Enable PIOA and SPI0
- REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0);
-
- // Disable PIO on A26 and A27
- REG_PIOA_PDR = 0x0C000000;
- OUT_WRITE(SDSS, HIGH);
-
- // Reset SPI0 (from sam lib)
- SPI0->SPI_CR = SPI_CR_SPIDIS;
- SPI0->SPI_CR = SPI_CR_SWRST;
- SPI0->SPI_CR = SPI_CR_SWRST;
- SPI0->SPI_CR = SPI_CR_SPIEN;
-
- // TMC2103 compatible setup
- // Master mode, no fault detection, PCS bits in data written to TDR select CSR register
- SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS;
- // SPI mode 3, 8 Bit data transfer, baud rate
- SPI0->SPI_CSR[3] = SPI_CSR_SCBR(spiDivider[spiRate]) | SPI_CSR_CSAAT | SPI_MODE_3_DUE_HW; // use same CSR as TMC2130
- SPI0->SPI_CSR[0] = SPI_CSR_SCBR(spiDivider[1]) | SPI_CSR_CSAAT | SPI_MODE_3_DUE_HW; // U8G default to 4MHz
- }
-
- void spiBegin() { spiInit(); }
-
- static uint8_t spiTransfer(uint8_t data) {
- WHILE_TX(0);
- SPI0->SPI_TDR = (uint32_t)data | 0x00070000UL; // Add TMC2130 PCS bits to every byte (use SPI0->SPI_CSR[3])
- WHILE_TX(0);
- WHILE_RX(0);
- return SPI0->SPI_RDR;
- }
-
- uint8_t spiRec() { return (uint8_t)spiTransfer(0xFF); }
-
- void spiRead(uint8_t *buf, uint16_t nbyte) {
- for (int i = 0; i < nbyte; i++)
- buf[i] = spiTransfer(0xFF);
- }
-
- void spiSend(uint8_t data) { spiTransfer(data); }
-
- void spiSend(const uint8_t *buf, size_t nbyte) {
- for (uint16_t i = 0; i < nbyte; i++)
- spiTransfer(buf[i]);
- }
-
- void spiSendBlock(uint8_t token, const uint8_t *buf) {
- spiTransfer(token);
- for (uint16_t i = 0; i < 512; i++)
- spiTransfer(buf[i]);
- }
-
- #endif // !ALLIGATOR
-#endif // !SOFTWARE_SPI
-
-#endif // ARDUINO_ARCH_SAM
diff --git a/src/HAL/DUE/InterruptVectors.cpp b/src/HAL/DUE/InterruptVectors.cpp
deleted file mode 100644
index e4e0ce9..0000000
--- a/src/HAL/DUE/InterruptVectors.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * InterruptVectors_Due.cpp - This module relocates the Interrupt vector table to SRAM,
- * allowing to register new interrupt handlers at runtime. Specially valuable and needed
- * because Arduino runtime allocates some interrupt handlers that we NEED to override to
- * properly support extended functionality, as for example, USB host or USB device (MSD, MTP)
- * and custom serial port handlers, and we don't actually want to modify and/or recompile the
- * Arduino runtime. We just want to run as much as possible on Stock Arduino
- *
- * Copyright (c) 2017 Eduardo José Tagle. All right reserved
- */
-#ifdef ARDUINO_ARCH_SAM
-
-#include "../../inc/MarlinConfig.h"
-#include "HAL.h"
-#include "InterruptVectors.h"
-
-/* The relocated Exception/Interrupt Table - According to the ARM
- reference manual, alignment to 128 bytes should suffice, but in
- practice, we need alignment to 256 bytes to make this work in all
- cases */
-__attribute__ ((aligned(256)))
-static DeviceVectors ram_tab = { nullptr };
-
-/**
- * This function checks if the exception/interrupt table is already in SRAM or not.
- * If it is not, then it copies the ROM table to the SRAM and relocates the table
- * by reprogramming the NVIC registers
- */
-static pfnISR_Handler* get_relocated_table_addr() {
- // Get the address of the interrupt/exception table
- uint32_t isrtab = SCB->VTOR;
-
- // If already relocated, we are done!
- if (isrtab >= IRAM0_ADDR)
- return (pfnISR_Handler*)isrtab;
-
- // Get the address of the table stored in FLASH
- const pfnISR_Handler* romtab = (const pfnISR_Handler*)isrtab;
-
- // Copy it to SRAM
- memcpy(&ram_tab, romtab, sizeof(ram_tab));
-
- // Disable global interrupts
- CRITICAL_SECTION_START();
-
- // Set the vector table base address to the SRAM copy
- SCB->VTOR = (uint32_t)(&ram_tab);
-
- // Reenable interrupts
- CRITICAL_SECTION_END();
-
- // Return the address of the table
- return (pfnISR_Handler*)(&ram_tab);
-}
-
-pfnISR_Handler install_isr(IRQn_Type irq, pfnISR_Handler newHandler) {
- // Get the address of the relocated table
- pfnISR_Handler *isrtab = get_relocated_table_addr();
-
- // Disable global interrupts
- CRITICAL_SECTION_START();
-
- // Get the original handler
- pfnISR_Handler oldHandler = isrtab[irq + 16];
-
- // Install the new one
- isrtab[irq + 16] = newHandler;
-
- // Reenable interrupts
- CRITICAL_SECTION_END();
-
- // Return the original one
- return oldHandler;
-}
-
-#endif
diff --git a/src/HAL/DUE/InterruptVectors.h b/src/HAL/DUE/InterruptVectors.h
deleted file mode 100644
index 6faeb34..0000000
--- a/src/HAL/DUE/InterruptVectors.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * InterruptVectors_Due.h
- *
- * This module relocates the Interrupt vector table to SRAM, allowing new
- * interrupt handlers to be added at runtime. This is required because the
- * Arduino runtime steals interrupt handlers that Marlin MUST use to support
- * extended functionality such as USB hosts and USB devices (MSD, MTP) and
- * custom serial port handlers. Rather than modifying and/or recompiling the
- * Arduino runtime, We just want to run as much as possible on Stock Arduino.
- *
- * Copyright (c) 2017 Eduardo José Tagle. All right reserved
- */
-
-#ifdef ARDUINO_ARCH_SAM
-
-// ISR handler type
-typedef void (*pfnISR_Handler)();
-
-// Install a new interrupt vector handler for the given irq, returning the old one
-pfnISR_Handler install_isr(IRQn_Type irq, pfnISR_Handler newHandler);
-
-#endif // ARDUINO_ARCH_SAM
diff --git a/src/HAL/DUE/MarlinSPI.h b/src/HAL/DUE/MarlinSPI.h
deleted file mode 100644
index 0c447ba..0000000
--- a/src/HAL/DUE/MarlinSPI.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-#include
-
-using MarlinSPI = SPIClass;
diff --git a/src/HAL/DUE/MarlinSerial.cpp b/src/HAL/DUE/MarlinSerial.cpp
deleted file mode 100644
index 638f7a1..0000000
--- a/src/HAL/DUE/MarlinSerial.cpp
+++ /dev/null
@@ -1,494 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * MarlinSerial_Due.cpp - Hardware serial library for Arduino DUE
- * Copyright (c) 2017 Eduardo José Tagle. All right reserved
- * Based on MarlinSerial for AVR, copyright (c) 2006 Nicholas Zambetti. All right reserved.
- */
-#ifdef ARDUINO_ARCH_SAM
-
-#include "../../inc/MarlinConfig.h"
-
-#include "MarlinSerial.h"
-#include "InterruptVectors.h"
-#include "../../MarlinCore.h"
-
-template typename MarlinSerial::ring_buffer_r MarlinSerial::rx_buffer = { 0, 0, { 0 } };
-template typename MarlinSerial::ring_buffer_t MarlinSerial::tx_buffer = { 0 };
-template bool MarlinSerial::_written = false;
-template uint8_t MarlinSerial::xon_xoff_state = MarlinSerial::XON_XOFF_CHAR_SENT | MarlinSerial::XON_CHAR;
-template uint8_t MarlinSerial::rx_dropped_bytes = 0;
-template uint8_t MarlinSerial::rx_buffer_overruns = 0;
-template uint8_t MarlinSerial::rx_framing_errors = 0;
-template typename MarlinSerial::ring_buffer_pos_t MarlinSerial::rx_max_enqueued = 0;
-
-// A SW memory barrier, to ensure GCC does not overoptimize loops
-#define sw_barrier() asm volatile("": : :"memory");
-
-#include "../../feature/e_parser.h"
-
-// (called with RX interrupts disabled)
-template
-FORCE_INLINE void MarlinSerial::store_rxd_char() {
-
- static EmergencyParser::State emergency_state; // = EP_RESET
-
- // Get the tail - Nothing can alter its value while we are at this ISR
- const ring_buffer_pos_t t = rx_buffer.tail;
-
- // Get the head pointer
- ring_buffer_pos_t h = rx_buffer.head;
-
- // Get the next element
- ring_buffer_pos_t i = (ring_buffer_pos_t)(h + 1) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // Read the character from the USART
- uint8_t c = HWUART->UART_RHR;
-
- if (Cfg::EMERGENCYPARSER) emergency_parser.update(emergency_state, c);
-
- // If the character is to be stored at the index just before the tail
- // (such that the head would advance to the current tail), the RX FIFO is
- // full, so don't write the character or advance the head.
- if (i != t) {
- rx_buffer.buffer[h] = c;
- h = i;
- }
- else if (Cfg::DROPPED_RX && !++rx_dropped_bytes)
- --rx_dropped_bytes;
-
- const ring_buffer_pos_t rx_count = (ring_buffer_pos_t)(h - t) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
- // Calculate count of bytes stored into the RX buffer
-
- // Keep track of the maximum count of enqueued bytes
- if (Cfg::MAX_RX_QUEUED) NOLESS(rx_max_enqueued, rx_count);
-
- if (Cfg::XONOFF) {
- // If the last char that was sent was an XON
- if ((xon_xoff_state & XON_XOFF_CHAR_MASK) == XON_CHAR) {
-
- // Bytes stored into the RX buffer
- const ring_buffer_pos_t rx_count = (ring_buffer_pos_t)(h - t) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // If over 12.5% of RX buffer capacity, send XOFF before running out of
- // RX buffer space .. 325 bytes @ 250kbits/s needed to let the host react
- // and stop sending bytes. This translates to 13mS propagation time.
- if (rx_count >= (Cfg::RX_SIZE) / 8) {
-
- // At this point, definitely no TX interrupt was executing, since the TX isr can't be preempted.
- // Don't enable the TX interrupt here as a means to trigger the XOFF char, because if it happens
- // to be in the middle of trying to disable the RX interrupt in the main program, eventually the
- // enabling of the TX interrupt could be undone. The ONLY reliable thing this can do to ensure
- // the sending of the XOFF char is to send it HERE AND NOW.
-
- // About to send the XOFF char
- xon_xoff_state = XOFF_CHAR | XON_XOFF_CHAR_SENT;
-
- // Wait until the TX register becomes empty and send it - Here there could be a problem
- // - While waiting for the TX register to empty, the RX register could receive a new
- // character. This must also handle that situation!
- uint32_t status;
- while (!((status = HWUART->UART_SR) & UART_SR_TXRDY)) {
-
- if (status & UART_SR_RXRDY) {
- // We received a char while waiting for the TX buffer to be empty - Receive and process it!
-
- i = (ring_buffer_pos_t)(h + 1) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // Read the character from the USART
- c = HWUART->UART_RHR;
-
- if (Cfg::EMERGENCYPARSER) emergency_parser.update(emergency_state, c);
-
- // If the character is to be stored at the index just before the tail
- // (such that the head would advance to the current tail), the FIFO is
- // full, so don't write the character or advance the head.
- if (i != t) {
- rx_buffer.buffer[h] = c;
- h = i;
- }
- else if (Cfg::DROPPED_RX && !++rx_dropped_bytes)
- --rx_dropped_bytes;
- }
- sw_barrier();
- }
-
- HWUART->UART_THR = XOFF_CHAR;
-
- // At this point there could be a race condition between the write() function
- // and this sending of the XOFF char. This interrupt could happen between the
- // wait to be empty TX buffer loop and the actual write of the character. Since
- // the TX buffer is full because it's sending the XOFF char, the only way to be
- // sure the write() function will succeed is to wait for the XOFF char to be
- // completely sent. Since an extra character could be received during the wait
- // it must also be handled!
- while (!((status = HWUART->UART_SR) & UART_SR_TXRDY)) {
-
- if (status & UART_SR_RXRDY) {
- // A char arrived while waiting for the TX buffer to be empty - Receive and process it!
-
- i = (ring_buffer_pos_t)(h + 1) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
-
- // Read the character from the USART
- c = HWUART->UART_RHR;
-
- if (Cfg::EMERGENCYPARSER) emergency_parser.update(emergency_state, c);
-
- // If the character is to be stored at the index just before the tail
- // (such that the head would advance to the current tail), the FIFO is
- // full, so don't write the character or advance the head.
- if (i != t) {
- rx_buffer.buffer[h] = c;
- h = i;
- }
- else if (Cfg::DROPPED_RX && !++rx_dropped_bytes)
- --rx_dropped_bytes;
- }
- sw_barrier();
- }
-
- // At this point everything is ready. The write() function won't
- // have any issues writing to the UART TX register if it needs to!
- }
- }
- }
-
- // Store the new head value
- rx_buffer.head = h;
-}
-
-template
-FORCE_INLINE void MarlinSerial::_tx_thr_empty_irq() {
- if (Cfg::TX_SIZE > 0) {
- // Read positions
- uint8_t t = tx_buffer.tail;
- const uint8_t h = tx_buffer.head;
-
- if (Cfg::XONOFF) {
- // If an XON char is pending to be sent, do it now
- if (xon_xoff_state == XON_CHAR) {
-
- // Send the character
- HWUART->UART_THR = XON_CHAR;
-
- // Remember we sent it.
- xon_xoff_state = XON_CHAR | XON_XOFF_CHAR_SENT;
-
- // If nothing else to transmit, just disable TX interrupts.
- if (h == t) HWUART->UART_IDR = UART_IDR_TXRDY;
-
- return;
- }
- }
-
- // If nothing to transmit, just disable TX interrupts. This could
- // happen as the result of the non atomicity of the disabling of RX
- // interrupts that could end reenabling TX interrupts as a side effect.
- if (h == t) {
- HWUART->UART_IDR = UART_IDR_TXRDY;
- return;
- }
-
- // There is something to TX, Send the next byte
- const uint8_t c = tx_buffer.buffer[t];
- t = (t + 1) & (Cfg::TX_SIZE - 1);
- HWUART->UART_THR = c;
- tx_buffer.tail = t;
-
- // Disable interrupts if there is nothing to transmit following this byte
- if (h == t) HWUART->UART_IDR = UART_IDR_TXRDY;
- }
-}
-
-template
-void MarlinSerial::UART_ISR() {
- const uint32_t status = HWUART->UART_SR;
-
- // Data received?
- if (status & UART_SR_RXRDY) store_rxd_char();
-
- if (Cfg::TX_SIZE > 0) {
- // Something to send, and TX interrupts are enabled (meaning something to send)?
- if ((status & UART_SR_TXRDY) && (HWUART->UART_IMR & UART_IMR_TXRDY)) _tx_thr_empty_irq();
- }
-
- // Acknowledge errors
- if ((status & UART_SR_OVRE) || (status & UART_SR_FRAME)) {
- if (Cfg::DROPPED_RX && (status & UART_SR_OVRE) && !++rx_dropped_bytes) --rx_dropped_bytes;
- if (Cfg::RX_OVERRUNS && (status & UART_SR_OVRE) && !++rx_buffer_overruns) --rx_buffer_overruns;
- if (Cfg::RX_FRAMING_ERRORS && (status & UART_SR_FRAME) && !++rx_framing_errors) --rx_framing_errors;
-
- // TODO: error reporting outside ISR
- HWUART->UART_CR = UART_CR_RSTSTA;
- }
-}
-
-// Public Methods
-template
-void MarlinSerial::begin(const long baud_setting) {
-
- // Disable UART interrupt in NVIC
- NVIC_DisableIRQ( HWUART_IRQ );
-
- // We NEED memory barriers to ensure Interrupts are actually disabled!
- // ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )
- __DSB();
- __ISB();
-
- // Disable clock
- pmc_disable_periph_clk( HWUART_IRQ_ID );
-
- // Configure PMC
- pmc_enable_periph_clk( HWUART_IRQ_ID );
-
- // Disable PDC channel
- HWUART->UART_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS;
-
- // Reset and disable receiver and transmitter
- HWUART->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX | UART_CR_RXDIS | UART_CR_TXDIS;
-
- // Configure mode: 8bit, No parity, 1 bit stop
- HWUART->UART_MR = UART_MR_CHMODE_NORMAL | US_MR_CHRL_8_BIT | US_MR_NBSTOP_1_BIT | UART_MR_PAR_NO;
-
- // Configure baudrate (asynchronous, no oversampling)
- HWUART->UART_BRGR = (SystemCoreClock / (baud_setting << 4));
-
- // Configure interrupts
- HWUART->UART_IDR = 0xFFFFFFFF;
- HWUART->UART_IER = UART_IER_RXRDY | UART_IER_OVRE | UART_IER_FRAME;
-
- // Install interrupt handler
- install_isr(HWUART_IRQ, UART_ISR);
-
- // Configure priority. We need a very high priority to avoid losing characters
- // and we need to be able to preempt the Stepper ISR and everything else!
- // (this could probably be fixed by using DMA with the Serial port)
- NVIC_SetPriority(HWUART_IRQ, 1);
-
- // Enable UART interrupt in NVIC
- NVIC_EnableIRQ(HWUART_IRQ);
-
- // Enable receiver and transmitter
- HWUART->UART_CR = UART_CR_RXEN | UART_CR_TXEN;
-
- if (Cfg::TX_SIZE > 0) _written = false;
-}
-
-template
-void MarlinSerial::end() {
- // Disable UART interrupt in NVIC
- NVIC_DisableIRQ( HWUART_IRQ );
-
- // We NEED memory barriers to ensure Interrupts are actually disabled!
- // ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )
- __DSB();
- __ISB();
-
- pmc_disable_periph_clk( HWUART_IRQ_ID );
-}
-
-template
-int MarlinSerial::peek() {
- const int v = rx_buffer.head == rx_buffer.tail ? -1 : rx_buffer.buffer[rx_buffer.tail];
- return v;
-}
-
-template
-int MarlinSerial::read() {
-
- const ring_buffer_pos_t h = rx_buffer.head;
- ring_buffer_pos_t t = rx_buffer.tail;
-
- if (h == t) return -1;
-
- int v = rx_buffer.buffer[t];
- t = (ring_buffer_pos_t)(t + 1) & (Cfg::RX_SIZE - 1);
-
- // Advance tail
- rx_buffer.tail = t;
-
- if (Cfg::XONOFF) {
- // If the XOFF char was sent, or about to be sent...
- if ((xon_xoff_state & XON_XOFF_CHAR_MASK) == XOFF_CHAR) {
- // Get count of bytes in the RX buffer
- const ring_buffer_pos_t rx_count = (ring_buffer_pos_t)(h - t) & (ring_buffer_pos_t)(Cfg::RX_SIZE - 1);
- // When below 10% of RX buffer capacity, send XON before running out of RX buffer bytes
- if (rx_count < (Cfg::RX_SIZE) / 10) {
- if (Cfg::TX_SIZE > 0) {
- // Signal we want an XON character to be sent.
- xon_xoff_state = XON_CHAR;
- // Enable TX isr.
- HWUART->UART_IER = UART_IER_TXRDY;
- }
- else {
- // If not using TX interrupts, we must send the XON char now
- xon_xoff_state = XON_CHAR | XON_XOFF_CHAR_SENT;
- while (!(HWUART->UART_SR & UART_SR_TXRDY)) sw_barrier();
- HWUART->UART_THR = XON_CHAR;
- }
- }
- }
- }
-
- return v;
-}
-
-template
-typename MarlinSerial::ring_buffer_pos_t MarlinSerial::available() {
- const ring_buffer_pos_t h = rx_buffer.head, t = rx_buffer.tail;
- return (ring_buffer_pos_t)(Cfg::RX_SIZE + h - t) & (Cfg::RX_SIZE - 1);
-}
-
-template
-void MarlinSerial::flush() {
- rx_buffer.tail = rx_buffer.head;
-
- if (Cfg::XONOFF) {
- if ((xon_xoff_state & XON_XOFF_CHAR_MASK) == XOFF_CHAR) {
- if (Cfg::TX_SIZE > 0) {
- // Signal we want an XON character to be sent.
- xon_xoff_state = XON_CHAR;
- // Enable TX isr.
- HWUART->UART_IER = UART_IER_TXRDY;
- }
- else {
- // If not using TX interrupts, we must send the XON char now
- xon_xoff_state = XON_CHAR | XON_XOFF_CHAR_SENT;
- while (!(HWUART->UART_SR & UART_SR_TXRDY)) sw_barrier();
- HWUART->UART_THR = XON_CHAR;
- }
- }
- }
-}
-
-template
-size_t MarlinSerial::write(const uint8_t c) {
- _written = true;
-
- if (Cfg::TX_SIZE == 0) {
- while (!(HWUART->UART_SR & UART_SR_TXRDY)) sw_barrier();
- HWUART->UART_THR = c;
- }
- else {
-
- // If the TX interrupts are disabled 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.
- // Yes, there is a race condition between the sending of the
- // XOFF char at the RX isr, but it is properly handled there
- if (!(HWUART->UART_IMR & UART_IMR_TXRDY) && (HWUART->UART_SR & UART_SR_TXRDY)) {
- HWUART->UART_THR = c;
- return 1;
- }
-
- const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
-
- // If global interrupts are disabled (as the result of being called from an ISR)...
- if (!hal.isr_state()) {
-
- // Make room by polling if it is possible to transmit, and do so!
- while (i == tx_buffer.tail) {
- // If we can transmit another byte, do it.
- if (HWUART->UART_SR & UART_SR_TXRDY) _tx_thr_empty_irq();
- // Make sure compiler rereads tx_buffer.tail
- sw_barrier();
- }
- }
- else {
- // Interrupts are enabled, just wait until there is space
- while (i == tx_buffer.tail) sw_barrier();
- }
-
- // Store new char. head is always safe to move
- tx_buffer.buffer[tx_buffer.head] = c;
- tx_buffer.head = i;
-
- // Enable TX isr - Non atomic, but it will eventually enable TX isr
- HWUART->UART_IER = UART_IER_TXRDY;
- }
- return 1;
-}
-
-template
-void MarlinSerial