From 3ced85a7b0eabbcf316f839d5e2dff7ad119331f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Dec 2021 00:47:51 -0600 Subject: [PATCH] Examples Extras --- config/examples/3DFabXYZ/Migbot/Readme.md | 4 + .../examples/ADIMLab/Gantry v1/_Bootscreen.h | 88 ++ .../examples/ADIMLab/Gantry v2/_Bootscreen.h | 88 ++ .../Alfawise/U20-bltouch/_Statusscreen.h | 79 ++ config/examples/Alfawise/U20/_Statusscreen.h | 79 ++ config/examples/AliExpress/CL-260/README.txt | 15 + config/examples/Anet/A6/_Statusscreen.h | 58 ++ config/examples/Anet/A8/_Statusscreen.h | 58 ++ config/examples/Anet/A8plus/_Statusscreen.h | 68 ++ config/examples/Anet/A9/_Statusscreen.h | 58 ++ config/examples/Anet/E16/Stock/_Bootscreen.h | 73 ++ .../examples/Anet/E16/Stock/_Statusscreen.h | 85 ++ config/examples/Anet/ET4+/README.md | 52 ++ config/examples/Anet/ET4-Pro/README.md | 52 ++ config/examples/Anet/ET4/README.md | 52 ++ config/examples/Anet/ET4X/README.md | 52 ++ config/examples/Anet/ET5-Pro/README.md | 52 ++ config/examples/Anet/ET5/README.md | 52 ++ config/examples/Anet/ET5X/README.md | 52 ++ .../examples/AnimationExample/_Bootscreen.h | 222 ++++++ .../Mega Zero 2.0/Anycubic V1/README.md | 7 + .../Mega Zero 2.0/Anycubic V1/_Bootscreen.h | 58 ++ .../Mega Zero 2.0/Anycubic V1/_Statusscreen.h | 49 ++ .../AnyCubic/Mega Zero/Anycubic V1/README.md | 7 + .../Mega Zero/Anycubic V1/_Bootscreen.h | 55 ++ .../Mega Zero/Anycubic V1/_Statusscreen.h | 54 ++ .../_Bootscreen.h | 58 ++ .../_Statusscreen.h | 54 ++ .../Artillery/Genius/BLTouch/_Bootscreen.h | 95 +++ .../Artillery/Genius/V1/_Bootscreen.h | 95 +++ .../examples/Artillery/Hornet/_Bootscreen.h | 95 +++ .../0.9 BMG - E3D V6/_Bootscreen.h | 95 +++ .../Artillery/Sidewinder X1/V1/_Bootscreen.h | 95 +++ .../Artillery/Sidewinder X2/_Bootscreen.h | 95 +++ config/examples/BIQU/B1 - SKR 1.4/README.md | 9 + config/examples/BIQU/B1 - SKR 2/README.md | 9 + config/examples/BQ/Hephestos_2/README.md | 29 + config/examples/BQ/Hephestos_2/_Bootscreen.h | 103 +++ config/examples/CTC/A13/_Bootscreen.h | 75 ++ config/examples/CTC/A13/_Statusscreen.h | 38 + config/examples/Cartesio/_Bootscreen.h | 103 +++ .../BigTreeTech SKR Mini E3 2.0/README.md | 89 +++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++ .../_Statusscreen.h | 76 ++ .../CR-10 Mini/CrealityV1/_Bootscreen.h | 58 ++ .../CR-10 Mini/CrealityV1/_Statusscreen.h | 76 ++ .../CR-10 Mini/MEEB-3DP/_Bootscreen.h | 104 +++ .../CR-10 Mini/MEEB-3DP/_Statusscreen.h | 73 ++ .../CR-10 S4/CrealityV1/_Bootscreen.h | 58 ++ .../CR-10 S4/CrealityV1/_Statusscreen.h | 68 ++ .../_Bootscreen.h | 58 ++ .../_Statusscreen.h | 68 ++ .../CR-10 S5/CrealityV1/_Bootscreen.h | 58 ++ .../CR-10 S5/CrealityV1/_Statusscreen.h | 68 ++ .../CrealityV2.2-BLTouch/_Bootscreen.h | 58 ++ .../CrealityV2.2-BLTouch/_Statusscreen.h | 68 ++ .../examples/Creality/CR-10 V2/_Bootscreen.h | 58 ++ .../Creality/CR-10 V2/_Statusscreen.h | 70 ++ .../examples/Creality/CR-10 V3/_Bootscreen.h | 58 ++ .../Creality/CR-10 V3/_Statusscreen.h | 71 ++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++ .../_Statusscreen.h | 68 ++ .../Creality/CR-10/CrealityV1/_Bootscreen.h | 58 ++ .../Creality/CR-10/CrealityV1/_Statusscreen.h | 68 ++ .../_Bootscreen.h | 58 ++ .../_Statusscreen.h | 76 ++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++ .../_Statusscreen.h | 76 ++ .../CR-10S/BigTreeTech SKR Pro v1.2/README.md | 6 + .../BigTreeTech SKR Pro v1.2/_Bootscreen.h | 80 ++ .../BigTreeTech SKR Pro v1.2/_Statusscreen.h | 76 ++ .../Creality/CR-10S/CrealityV1/_Bootscreen.h | 58 ++ .../CR-10S/CrealityV1/_Statusscreen.h | 76 ++ .../Creality/CR-20 Pro/_Statusscreen.h | 72 ++ .../Creality/CR-30 PrintMill/_Bootscreen.h | 752 ++++++++++++++++++ .../Creality/CR-30 PrintMill/_Statusscreen.h | 55 ++ .../Ender-2 Pro/CrealityV423/README.md | 3 + .../Ender-2 Pro/CrealityV423/_Bootscreen.h | 99 +++ .../Ender-2 Pro/CrealityV423/_Statusscreen.h | 73 ++ config/examples/Creality/Ender-2/README.md | 33 + .../examples/Creality/Ender-2/_Bootscreen.h | 99 +++ .../examples/Creality/Ender-2/_Statusscreen.h | 68 ++ .../Creality/Ender-3 Max/_Bootscreen.h | 99 +++ .../Creality/Ender-3 Max/_Statusscreen.h | 64 ++ .../BigTreeTech SKR 1.4 Turbo/README.md | 16 + .../BigTreeTech SKR 1.4 Turbo/_Bootscreen.h | 99 +++ .../BigTreeTech SKR 1.4 Turbo/_Statusscreen.h | 73 ++ .../BigTreeTech SKR Mini E3 1.0/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 73 ++ .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 73 ++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 73 ++ .../Ender-3 Pro/CrealityV1/_Bootscreen.h | 99 +++ .../Ender-3 Pro/CrealityV1/_Statusscreen.h | 73 ++ .../Ender-3 Pro/CrealityV422/README.md | 11 + .../Ender-3 Pro/CrealityV422/_Bootscreen.h | 99 +++ .../Ender-3 Pro/CrealityV422/_Statusscreen.h | 73 ++ .../Ender-3 Pro/CrealityV427/_Bootscreen.h | 99 +++ .../Ender-3 Pro/CrealityV427/_Statusscreen.h | 73 ++ .../Creality/Ender-3 V2/DWIN_SET/0T5UIC1.HZK | Bin 0 -> 125440 bytes .../Creality/Ender-3 V2/DWIN_SET/0_start.jpg | Bin 0 -> 14172 bytes .../Ender-3 V2/DWIN_SET/1_English.jpg | Bin 0 -> 32581 bytes .../Ender-3 V2/DWIN_SET/2_Chinese.jpg | Bin 0 -> 32457 bytes .../Creality/Ender-3 V2/DWIN_SET/3.ICO | Bin 0 -> 30763 bytes .../Creality/Ender-3 V2/DWIN_SET/4.ICO | Bin 0 -> 86026 bytes .../Creality/Ender-3 V2/DWIN_SET/7.ICO | Bin 0 -> 217989 bytes .../Creality/Ender-3 V2/DWIN_SET/T5UIC1.CFG | Bin 0 -> 16 bytes .../DWIN_SET/T5UIC1_V20_4页面_191022.BIN | Bin 0 -> 17937 bytes config/examples/Creality/Ender-3 V2/README.md | 18 + .../Ender-3/BigTreeTech E3 RRF/_Bootscreen.h | 99 +++ .../BigTreeTech E3 RRF/_Statusscreen.h | 64 ++ .../Ender-3/BigTreeTech SKR 1.4/README.md | 14 + .../2-into-1 Hotend/_Bootscreen.h | 99 +++ .../2-into-1 Hotend/_Statusscreen.h | 64 ++ .../Dual Z/_Bootscreen.h | 99 +++ .../Dual Z/_Statusscreen.h | 64 ++ .../Single Extruder/_Bootscreen.h | 99 +++ .../Single Extruder/_Statusscreen.h | 64 ++ .../BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 64 ++ .../BigTreeTech SKR Mini E3 1.0/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 64 ++ .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 64 ++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 64 ++ .../BigTreeTech SKR Mini E3 3.0/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 64 ++ .../Creality/Ender-3/CrealityV1/_Bootscreen.h | 99 +++ .../Ender-3/CrealityV1/_Statusscreen.h | 64 ++ .../Ender-3/CrealityV422/_Bootscreen.h | 99 +++ .../Ender-3/CrealityV422/_Statusscreen.h | 64 ++ .../Ender-3/CrealityV427/_Bootscreen.h | 99 +++ .../Ender-3/CrealityV427/_Statusscreen.h | 64 ++ .../FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h | 99 +++ .../BLTouch/_Statusscreen.h | 64 ++ .../FYSETC Cheetah 1.2/base/_Bootscreen.h | 99 +++ .../FYSETC Cheetah 1.2/base/_Statusscreen.h | 64 ++ .../FYSETC Cheetah/BLTouch/_Bootscreen.h | 99 +++ .../FYSETC Cheetah/BLTouch/_Statusscreen.h | 64 ++ .../Ender-3/FYSETC Cheetah/base/_Bootscreen.h | 99 +++ .../FYSETC Cheetah/base/_Statusscreen.h | 64 ++ .../Creality/Ender-3/MEEB-3DP/_Bootscreen.h | 104 +++ .../Creality/Ender-3/MEEB-3DP/_Statusscreen.h | 73 ++ .../Creality/Ender-3/MKS Robin E3/README.md | 10 + .../Ender-3/MKS Robin E3/V1.0/_Bootscreen.h | 99 +++ .../Ender-3/MKS Robin E3/V1.0/_Statusscreen.h | 64 ++ .../Ender-3/MKS Robin E3/V1.1/_Bootscreen.h | 99 +++ .../Ender-3/MKS Robin E3/V1.1/_Statusscreen.h | 64 ++ .../TH3D EZBoard Lite V2/_Bootscreen.h | 99 +++ .../TH3D EZBoard Lite V2/_Statusscreen.h | 64 ++ .../examples/Creality/Ender-5 Plus/README.md | 27 + .../BigTreeTech SKR E3 Turbo/README.md | 19 + .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 96 +++ .../_Statusscreen.h | 61 ++ .../README.md | 62 ++ .../_Bootscreen.h | 96 +++ .../_Statusscreen.h | 61 ++ .../Ender-5 Pro/CrealityV1/_Bootscreen.h | 96 +++ .../Ender-5 Pro/CrealityV1/_Statusscreen.h | 70 ++ .../Ender-5 Pro/CrealityV422/_Bootscreen.h | 96 +++ .../Ender-5 Pro/CrealityV422/_Statusscreen.h | 70 ++ .../Ender-5 Pro/CrealityV427/_Bootscreen.h | 96 +++ .../Ender-5 Pro/CrealityV427/_Statusscreen.h | 70 ++ .../README.md | 10 + .../_Bootscreen.h | 96 +++ .../_Statusscreen.h | 61 ++ .../README.md | 13 + .../BigTreeTech SKR E3 Turbo/README.md | 13 + .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 99 +++ .../_Statusscreen.h | 64 ++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 96 +++ .../_Statusscreen.h | 61 ++ .../BigTreeTech SKR Mini E3 2.0/readme.md | 23 + .../Creality/Ender-5/CrealityV1/_Bootscreen.h | 96 +++ .../Ender-5/CrealityV1/_Statusscreen.h | 61 ++ .../Ender-5/CrealityV427/_Bootscreen.h | 96 +++ .../Ender-5/CrealityV427/_Statusscreen.h | 61 ++ config/examples/Creality/Ender-5/README.md | 13 + config/examples/Creality/Ender-6/README.md | 34 + .../examples/Dagoma/Disco Ultimate/README.md | 8 + .../Dagoma/Disco Ultimate/_Bootscreen.h | 52 ++ config/examples/Einstart-S/readme.md | 152 ++++ config/examples/Elegoo/Neptune 2/readme.md | 1 + config/examples/Eryone/Thinker SE/README.md | 23 + .../examples/Eryone/Thinker SE/_Bootscreen.h | 94 +++ config/examples/Eryone/Thinker V2/README.md | 25 + .../examples/Eryone/Thinker V2/_Bootscreen.h | 79 ++ config/examples/Felix/DUAL/README.md | 60 ++ config/examples/Felix/Single/README.md | 60 ++ .../FlashForge/CreatorPro/CuraSettings.txt | 157 ++++ config/examples/FlyingBear/P905H/README.md | 14 + config/examples/Formbot/Raptor/_Bootscreen.h | 96 +++ .../examples/Formbot/Raptor/_Statusscreen.h | 77 ++ .../examples/Formbot/T_Rex_2+/_Bootscreen.h | 104 +++ .../examples/Formbot/T_Rex_2+/_Statusscreen.h | 76 ++ config/examples/Formbot/T_Rex_3/_Bootscreen.h | 104 +++ .../examples/Formbot/T_Rex_3/_Statusscreen.h | 76 ++ .../Geeetech/Prusa i3 Pro B/bltouch/README.md | 54 ++ .../Geeetech/Prusa i3 Pro B/noprobe/README.md | 54 ++ .../Intamsys/FunmatHT 4988/_Bootscreen.h | 105 +++ .../Intamsys/FunmatHT 4988/_Statusscreen.h | 75 ++ config/examples/JGAurora/A5/README.md | 39 + config/examples/Labists/ET4/README.md | 54 ++ config/examples/MakerParts/_Bootscreen.h | 83 ++ config/examples/Malyan/M150/README.md | 55 ++ config/examples/Malyan/M150/_Bootscreen.h | 73 ++ config/examples/Malyan/M200/README.md | 33 + config/examples/Micromake/C1/basic/README.md | 15 + .../examples/Micromake/C1/enhanced/README.md | 15 + config/examples/Mks/Robin_Lite3/ReadMe.txt | 5 + config/examples/Mks/Robin_Pro/ReadMe.txt | 4 + config/examples/Mks/Sbase/README.txt | 38 + config/examples/Modix/Big60/_Bootscreen.h | 93 +++ config/examples/Modix/Big60/_Statusscreen.h | 62 ++ .../Nextion/HMI/Marlin4Nextion.HMI.zip | Bin 0 -> 10681280 bytes .../HMI/Marlin4Nextion_Enhanced.tft.zip | Bin 0 -> 3221967 bytes .../HMI/Marlin4Nextion_Intelligent.tft.zip | Bin 0 -> 3653372 bytes config/examples/Prusa/MK3/README.md | 98 +++ .../Prusa/MK3S-BigTreeTech-BTT002/README.md | 104 +++ .../BigTreeTech SKR E3 Turbo/_Bootscreen.h | 58 ++ .../BigTreeTech SKR E3 Turbo/_Statusscreen.h | 52 ++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++ .../_Statusscreen.h | 52 ++ .../Sovol/SV-01/CrealityV22/_Bootscreen.h | 58 ++ .../Sovol/SV-01/CrealityV22/_Statusscreen.h | 52 ++ .../Sovol/SV-01/CrealityV221/_Bootscreen.h | 58 ++ .../Sovol/SV-01/CrealityV221/_Statusscreen.h | 52 ++ config/examples/Sunlu/S8/README.md | 5 + config/examples/Sunlu/S8/_Bootscreen.h | 102 +++ .../examples/Tevo/Michelangelo/_Bootscreen.h | 85 ++ config/examples/Tevo/Nereus/_Bootscreen.h | 92 +++ .../examples/Tevo/Tarantula Pro/_Bootscreen.h | 82 ++ .../Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h | 86 ++ .../Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h | 86 ++ config/examples/Tronxy/X5SA/HOWTO-INSTALL.md | 256 ++++++ config/examples/Tronxy/X5SA/chitu-board.jpg | Bin 0 -> 228480 bytes .../examples/Two Trees/BlueR Plus/readme.md | 4 + config/examples/Two Trees/BlueR/readme.md | 15 + .../Two Trees/Sapphire Plus/readme.md | 9 + .../examples/Two Trees/Sapphire Pro/readme.md | 10 + config/examples/VORONDesign/_Bootscreen.h | 84 ++ config/examples/Velleman/K8200/README.md | 20 + .../Velleman/K8400/Dual-head/README.md | 15 + .../Velleman/K8400/Single-head/README.md | 15 + config/examples/WASP/PowerWASP/README.md | 72 ++ .../Duplicator i3 2.1/Chippy_Bootscreen.h | 74 ++ .../Wanhao/Duplicator i3 2.1/README.md | 21 + .../Wanhao/Duplicator i3 2.1/_Bootscreen.h | 72 ++ .../Cocoon Create Model Maker/_Bootscreen.h | 56 ++ .../Monoprice MP i3 Mini/_Bootscreen.h | 76 ++ .../Wanhao/Duplicator i3 Mini/_Bootscreen.h | 78 ++ .../Wanhao/Duplicator i3 Plus/README.md | 16 + .../examples/delta/Anycubic/Kossel/README.md | 50 ++ .../Anycubic/Kossel/images/Version1Probe.jpg | Bin 0 -> 94933 bytes .../Anycubic/Kossel/images/Version2Probe.jpg | Bin 0 -> 51853 bytes .../delta/Anycubic/Predator/README.md | 37 + .../delta/Dreammaker/Overlord/_Bootscreen.h | 35 + .../Dreammaker/Overlord_Pro/_Bootscreen.h | 35 + .../delta/FLSUN/QQS-Pro/_Bootscreen.h | 78 ++ .../delta/FLSUN/QQS-Pro/_Statusscreen.h | 76 ++ .../RRD Full Graphic Smart Controller.md | 34 + config/examples/delta/Malyan M300/README.md | 29 + config/examples/delta/kossel_pro/README.md | 5 + config/examples/delta/kossel_xl/README.md | 21 + .../examples/gCreate/gMax1.5+/_Bootscreen.h | 103 +++ .../linear_axes/RAMPS 5 LINEAR_AXES/README.md | 12 + 268 files changed, 17212 insertions(+) create mode 100644 config/examples/3DFabXYZ/Migbot/Readme.md create mode 100644 config/examples/ADIMLab/Gantry v1/_Bootscreen.h create mode 100644 config/examples/ADIMLab/Gantry v2/_Bootscreen.h create mode 100644 config/examples/Alfawise/U20-bltouch/_Statusscreen.h create mode 100644 config/examples/Alfawise/U20/_Statusscreen.h create mode 100644 config/examples/AliExpress/CL-260/README.txt create mode 100644 config/examples/Anet/A6/_Statusscreen.h create mode 100644 config/examples/Anet/A8/_Statusscreen.h create mode 100644 config/examples/Anet/A8plus/_Statusscreen.h create mode 100644 config/examples/Anet/A9/_Statusscreen.h create mode 100644 config/examples/Anet/E16/Stock/_Bootscreen.h create mode 100644 config/examples/Anet/E16/Stock/_Statusscreen.h create mode 100644 config/examples/Anet/ET4+/README.md create mode 100644 config/examples/Anet/ET4-Pro/README.md create mode 100644 config/examples/Anet/ET4/README.md create mode 100644 config/examples/Anet/ET4X/README.md create mode 100644 config/examples/Anet/ET5-Pro/README.md create mode 100644 config/examples/Anet/ET5/README.md create mode 100644 config/examples/Anet/ET5X/README.md create mode 100644 config/examples/AnimationExample/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md create mode 100644 config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md create mode 100644 config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/Anycubic V1/_Statusscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Statusscreen.h create mode 100644 config/examples/Artillery/Genius/BLTouch/_Bootscreen.h create mode 100644 config/examples/Artillery/Genius/V1/_Bootscreen.h create mode 100644 config/examples/Artillery/Hornet/_Bootscreen.h create mode 100644 config/examples/Artillery/Sidewinder X1/0.9 BMG - E3D V6/_Bootscreen.h create mode 100644 config/examples/Artillery/Sidewinder X1/V1/_Bootscreen.h create mode 100644 config/examples/Artillery/Sidewinder X2/_Bootscreen.h create mode 100644 config/examples/BIQU/B1 - SKR 1.4/README.md create mode 100644 config/examples/BIQU/B1 - SKR 2/README.md create mode 100644 config/examples/BQ/Hephestos_2/README.md create mode 100644 config/examples/BQ/Hephestos_2/_Bootscreen.h create mode 100644 config/examples/CTC/A13/_Bootscreen.h create mode 100644 config/examples/CTC/A13/_Statusscreen.h create mode 100644 config/examples/Cartesio/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/README.md create mode 100644 config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/MEEB-3DP/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/MEEB-3DP/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 S4/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 S4/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 S5/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 S5/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 V2/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 V2/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 V3/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 V3/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-20 Pro/_Statusscreen.h create mode 100644 config/examples/Creality/CR-30 PrintMill/_Bootscreen.h create mode 100644 config/examples/Creality/CR-30 PrintMill/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-2 Pro/CrealityV423/README.md create mode 100644 config/examples/Creality/Ender-2 Pro/CrealityV423/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-2 Pro/CrealityV423/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-2/README.md create mode 100644 config/examples/Creality/Ender-2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Max/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Max/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV422/README.md create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV422/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV422/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV427/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/0T5UIC1.HZK create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/0_start.jpg create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/1_English.jpg create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/2_Chinese.jpg create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/3.ICO create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/4.ICO create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/7.ICO create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/T5UIC1.CFG create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/T5UIC1_V20_4页面_191022.BIN create mode 100644 config/examples/Creality/Ender-3 V2/README.md create mode 100644 config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV422/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV422/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV427/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/README.md create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Plus/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV422/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV422/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV427/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md create mode 100644 config/examples/Creality/Ender-5/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/CrealityV427/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/README.md create mode 100644 config/examples/Creality/Ender-6/README.md create mode 100644 config/examples/Dagoma/Disco Ultimate/README.md create mode 100644 config/examples/Dagoma/Disco Ultimate/_Bootscreen.h create mode 100644 config/examples/Einstart-S/readme.md create mode 100644 config/examples/Elegoo/Neptune 2/readme.md create mode 100644 config/examples/Eryone/Thinker SE/README.md create mode 100644 config/examples/Eryone/Thinker SE/_Bootscreen.h create mode 100644 config/examples/Eryone/Thinker V2/README.md create mode 100644 config/examples/Eryone/Thinker V2/_Bootscreen.h create mode 100644 config/examples/Felix/DUAL/README.md create mode 100644 config/examples/Felix/Single/README.md create mode 100644 config/examples/FlashForge/CreatorPro/CuraSettings.txt create mode 100644 config/examples/FlyingBear/P905H/README.md create mode 100644 config/examples/Formbot/Raptor/_Bootscreen.h create mode 100644 config/examples/Formbot/Raptor/_Statusscreen.h create mode 100644 config/examples/Formbot/T_Rex_2+/_Bootscreen.h create mode 100644 config/examples/Formbot/T_Rex_2+/_Statusscreen.h create mode 100644 config/examples/Formbot/T_Rex_3/_Bootscreen.h create mode 100644 config/examples/Formbot/T_Rex_3/_Statusscreen.h create mode 100644 config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md create mode 100644 config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md create mode 100644 config/examples/Intamsys/FunmatHT 4988/_Bootscreen.h create mode 100644 config/examples/Intamsys/FunmatHT 4988/_Statusscreen.h create mode 100644 config/examples/JGAurora/A5/README.md create mode 100644 config/examples/Labists/ET4/README.md create mode 100644 config/examples/MakerParts/_Bootscreen.h create mode 100644 config/examples/Malyan/M150/README.md create mode 100644 config/examples/Malyan/M150/_Bootscreen.h create mode 100644 config/examples/Malyan/M200/README.md create mode 100644 config/examples/Micromake/C1/basic/README.md create mode 100644 config/examples/Micromake/C1/enhanced/README.md create mode 100644 config/examples/Mks/Robin_Lite3/ReadMe.txt create mode 100644 config/examples/Mks/Robin_Pro/ReadMe.txt create mode 100644 config/examples/Mks/Sbase/README.txt create mode 100644 config/examples/Modix/Big60/_Bootscreen.h create mode 100644 config/examples/Modix/Big60/_Statusscreen.h create mode 100644 config/examples/Nextion/HMI/Marlin4Nextion.HMI.zip create mode 100644 config/examples/Nextion/HMI/Marlin4Nextion_Enhanced.tft.zip create mode 100644 config/examples/Nextion/HMI/Marlin4Nextion_Intelligent.tft.zip create mode 100644 config/examples/Prusa/MK3/README.md create mode 100644 config/examples/Prusa/MK3S-BigTreeTech-BTT002/README.md create mode 100644 config/examples/Sovol/SV-01/BigTreeTech SKR E3 Turbo/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/BigTreeTech SKR E3 Turbo/_Statusscreen.h create mode 100644 config/examples/Sovol/SV-01/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV22/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV22/_Statusscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV221/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV221/_Statusscreen.h create mode 100644 config/examples/Sunlu/S8/README.md create mode 100644 config/examples/Sunlu/S8/_Bootscreen.h create mode 100644 config/examples/Tevo/Michelangelo/_Bootscreen.h create mode 100644 config/examples/Tevo/Nereus/_Bootscreen.h create mode 100644 config/examples/Tevo/Tarantula Pro/_Bootscreen.h create mode 100644 config/examples/Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h create mode 100644 config/examples/Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h create mode 100644 config/examples/Tronxy/X5SA/HOWTO-INSTALL.md create mode 100644 config/examples/Tronxy/X5SA/chitu-board.jpg create mode 100644 config/examples/Two Trees/BlueR Plus/readme.md create mode 100644 config/examples/Two Trees/BlueR/readme.md create mode 100644 config/examples/Two Trees/Sapphire Plus/readme.md create mode 100644 config/examples/Two Trees/Sapphire Pro/readme.md create mode 100644 config/examples/VORONDesign/_Bootscreen.h create mode 100644 config/examples/Velleman/K8200/README.md create mode 100644 config/examples/Velleman/K8400/Dual-head/README.md create mode 100644 config/examples/Velleman/K8400/Single-head/README.md create mode 100644 config/examples/WASP/PowerWASP/README.md create mode 100644 config/examples/Wanhao/Duplicator i3 2.1/Chippy_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 2.1/README.md create mode 100644 config/examples/Wanhao/Duplicator i3 2.1/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Cocoon Create Model Maker/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Monoprice MP i3 Mini/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Mini/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Plus/README.md create mode 100644 config/examples/delta/Anycubic/Kossel/README.md create mode 100644 config/examples/delta/Anycubic/Kossel/images/Version1Probe.jpg create mode 100644 config/examples/delta/Anycubic/Kossel/images/Version2Probe.jpg create mode 100644 config/examples/delta/Anycubic/Predator/README.md create mode 100644 config/examples/delta/Dreammaker/Overlord/_Bootscreen.h create mode 100644 config/examples/delta/Dreammaker/Overlord_Pro/_Bootscreen.h create mode 100644 config/examples/delta/FLSUN/QQS-Pro/_Bootscreen.h create mode 100644 config/examples/delta/FLSUN/QQS-Pro/_Statusscreen.h create mode 100644 config/examples/delta/MKS/SBASE/RRD Full Graphic Smart Controller.md create mode 100644 config/examples/delta/Malyan M300/README.md create mode 100644 config/examples/delta/kossel_pro/README.md create mode 100644 config/examples/delta/kossel_xl/README.md create mode 100644 config/examples/gCreate/gMax1.5+/_Bootscreen.h create mode 100644 config/examples/linear_axes/RAMPS 5 LINEAR_AXES/README.md diff --git a/config/examples/3DFabXYZ/Migbot/Readme.md b/config/examples/3DFabXYZ/Migbot/Readme.md new file mode 100644 index 0000000000..708b3fe632 --- /dev/null +++ b/config/examples/3DFabXYZ/Migbot/Readme.md @@ -0,0 +1,4 @@ +Personalized config files for the "Electron" "Tevo 3D" i3 6th gen + +- https://www.3dprintersbay.com/electron3d-reprap-prusa-i3-kit +- https://reprap.org/wiki/Migbot_Prusa_i3 diff --git a/config/examples/ADIMLab/Gantry v1/_Bootscreen.h b/config/examples/ADIMLab/Gantry v1/_Bootscreen.h new file mode 100644 index 0000000000..b51bc14eb2 --- /dev/null +++ b/config/examples/ADIMLab/Gantry v1/_Bootscreen.h @@ -0,0 +1,88 @@ +/** + * 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 "ADIMLab/Gantry v1" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 88 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B01111111,B11111111,B00000000,B10000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B00000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111110,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11110000,B00001000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111111,B11100000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11100011,B10000000,B00111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010011,B11111111,B11100001,B10000000,B01111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B10001111,B11100011,B10000000,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B00001111,B11111111,B10000001,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000110,B00011111,B11111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11110000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111100,B00000011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B11000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111110,B00011111,B11111111,B11111110,B00111111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111100,B11111111,B11111111,B11111100,B00001111,B11100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111001,B11111111,B11111111,B11110000,B00001111,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11110011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11100111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111110,B00001111,B11111111,B11111111,B11101111,B10000000,B00000000,B00000000, + B00000000,B00000001,B11001111,B11110000,B00000001,B11111111,B11111111,B11110011,B11111000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B11111111,B11111111,B11111000,B01100000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11000000,B00000000,B00011111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01100111,B11100100,B00000000,B00001111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00110011,B11111100,B00000000,B00000111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011001,B11111100,B00000000,B00000011,B11100000,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001100,B01111000,B00000000,B00000001,B11100000,B00111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B01110000,B00011100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111100,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000001,B11111111,B10000111,B10011111,B00000111,B10011110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11111111,B11000011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11000011,B11100011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B00111100,B00111011,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B11111110,B00111111,B10000000, + B00011101,B11000001,B11000000,B01110011,B10011111,B10011111,B10001110,B00000000,B11111111,B00111111,B10000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11011011,B10001110,B00000000,B01101111,B00111011,B11000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11111011,B10001110,B00000000,B00111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11111011,B10001110,B00000000,B11111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11110011,B10001110,B00000000,B11101111,B00111011,B11000000, + B01111000,B01110001,B11000001,B11100011,B10011100,B11110011,B10001110,B00000001,B11101111,B00111011,B11000000, + B01110000,B01111001,B11111111,B11000011,B10011100,B01100011,B10001111,B11111111,B11101111,B00111111,B10000000, + B01110000,B00111001,B11111111,B10000011,B10011100,B01100011,B10001111,B11111110,B11110111,B00111111,B10000000, + B11110000,B01111101,B11111111,B00000111,B10011110,B00000011,B11011111,B11111100,B01100111,B00100111,B00000000 +}; diff --git a/config/examples/ADIMLab/Gantry v2/_Bootscreen.h b/config/examples/ADIMLab/Gantry v2/_Bootscreen.h new file mode 100644 index 0000000000..0ca5d40ddf --- /dev/null +++ b/config/examples/ADIMLab/Gantry v2/_Bootscreen.h @@ -0,0 +1,88 @@ +/** + * 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 "ADIMLab/Gantry v2" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 88 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B01111111,B11111111,B00000000,B10000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B00000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111110,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11110000,B00001000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111111,B11100000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11100011,B10000000,B00111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010011,B11111111,B11100001,B10000000,B01111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B10001111,B11100011,B10000000,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B00001111,B11111111,B10000001,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000110,B00011111,B11111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11110000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111100,B00000011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B11000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111110,B00011111,B11111111,B11111110,B00111111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111100,B11111111,B11111111,B11111100,B00001111,B11100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111001,B11111111,B11111111,B11110000,B00001111,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11110011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11100111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111110,B00001111,B11111111,B11111111,B11101111,B10000000,B00000000,B00000000, + B00000000,B00000001,B11001111,B11110000,B00000001,B11111111,B11111111,B11110011,B11111000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B11111111,B11111111,B11111000,B01100000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11000000,B00000000,B00011111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01100111,B11100100,B00000000,B00001111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00110011,B11111100,B00000000,B00000111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011001,B11111100,B00000000,B00000011,B11100000,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001100,B01111000,B00000000,B00000001,B11100000,B00111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B01110000,B00011100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111100,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000001,B11111111,B10000111,B10011111,B00000111,B10011110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11111111,B11000011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11000011,B11100011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B00111100,B00111011,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B11111110,B00111111,B10000000, + B00011101,B11000001,B11000000,B01110011,B10011111,B10011111,B10001110,B00000000,B11111111,B00111111,B10000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11011011,B10001110,B00000000,B01101111,B00111011,B11000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11111011,B10001110,B00000000,B00111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11111011,B10001110,B00000000,B11111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11110011,B10001110,B00000000,B11101111,B00111011,B11000000, + B01111000,B01110001,B11000001,B11100011,B10011100,B11110011,B10001110,B00000001,B11101111,B00111011,B11000000, + B01110000,B01111001,B11111111,B11000011,B10011100,B01100011,B10001111,B11111111,B11101111,B00111111,B10000000, + B01110000,B00111001,B11111111,B10000011,B10011100,B01100011,B10001111,B11111110,B11110111,B00111111,B10000000, + B11110000,B01111101,B11111111,B00000111,B10011110,B00000011,B11011111,B11111100,B01100111,B00100111,B00000000 +}; diff --git a/config/examples/Alfawise/U20-bltouch/_Statusscreen.h b/config/examples/Alfawise/U20-bltouch/_Statusscreen.h new file mode 100644 index 0000000000..85c0bd54a0 --- /dev/null +++ b/config/examples/Alfawise/U20-bltouch/_Statusscreen.h @@ -0,0 +1,79 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#pragma once + +#define CONFIG_EXAMPLES_DIR "Alfawise/U20-bltouch" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 38 + +static unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11111100, + B10000000,B00000000,B00010000,B00000111,B11111100, + B10000000,B00000000,B00010000,B00000000,B11111100, + B10000000,B00000000,B00110000,B00000000,B01111100, + B10000000,B00000000,B00110000,B00000000,B00111100, + B10000000,B00000000,B01110000,B00000000,B00011100, + B11111111,B10000000,B01110000,B00000000,B00001100, + B11111111,B10000000,B11110000,B11100000,B00001100, + B11111111,B00000000,B11110000,B11111000,B00001100, + B11111111,B00000001,B11110000,B11111100,B00000100, + B11111110,B00000001,B11110000,B11010010,B00000100, + B11111110,B00000011,B11110000,B10101110,B00000100, + B11111100,B00000000,B11110000,B10101111,B00000100, + B11111100,B00000000,B00110000,B10000011,B00000100, + B11111000,B00000000,B00110000,B11111111,B00000100, + B11111000,B00000000,B00010000,B11111111,B00000100, + B11111111,B11100000,B00010000,B10111111,B00000100, + B11111111,B11110000,B00010000,B10101111,B00000100, + B11111111,B11110000,B00010000,B10101110,B00000100, + B11111111,B11110000,B00010000,B10000010,B00000100, + B10000011,B11110000,B00010000,B11111100,B00000100, + B10000001,B11110000,B00010000,B11111000,B00001100, + B10000001,B11100000,B00010000,B11100000,B00001100, + B10000000,B00000000,B00010000,B00000000,B00001100, + B10000000,B00000000,B00110000,B00000000,B00011100, + B11000000,B00000000,B00110000,B00000000,B00111100, + B11000000,B00000000,B01110000,B00000000,B01111100, + B11100000,B00000000,B11110000,B00000000,B11111100, + B11111000,B00000011,B11110000,B00000111,B11111100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_LOGO_X 0 +#define STATUS_HEATERS_X 50 +#define STATUS_BED_X 74 diff --git a/config/examples/Alfawise/U20/_Statusscreen.h b/config/examples/Alfawise/U20/_Statusscreen.h new file mode 100644 index 0000000000..4f062ad204 --- /dev/null +++ b/config/examples/Alfawise/U20/_Statusscreen.h @@ -0,0 +1,79 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#pragma once + +#define CONFIG_EXAMPLES_DIR "Alfawise/U20" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 38 + +static unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11111100, + B10000000,B00000000,B00010000,B00000111,B11111100, + B10000000,B00000000,B00010000,B00000000,B11111100, + B10000000,B00000000,B00110000,B00000000,B01111100, + B10000000,B00000000,B00110000,B00000000,B00111100, + B10000000,B00000000,B01110000,B00000000,B00011100, + B11111111,B10000000,B01110000,B00000000,B00001100, + B11111111,B10000000,B11110000,B11100000,B00001100, + B11111111,B00000000,B11110000,B11111000,B00001100, + B11111111,B00000001,B11110000,B11111100,B00000100, + B11111110,B00000001,B11110000,B11010010,B00000100, + B11111110,B00000011,B11110000,B10101110,B00000100, + B11111100,B00000000,B11110000,B10101111,B00000100, + B11111100,B00000000,B00110000,B10000011,B00000100, + B11111000,B00000000,B00110000,B11111111,B00000100, + B11111000,B00000000,B00010000,B11111111,B00000100, + B11111111,B11100000,B00010000,B10111111,B00000100, + B11111111,B11110000,B00010000,B10101111,B00000100, + B11111111,B11110000,B00010000,B10101110,B00000100, + B11111111,B11110000,B00010000,B10000010,B00000100, + B10000011,B11110000,B00010000,B11111100,B00000100, + B10000001,B11110000,B00010000,B11111000,B00001100, + B10000001,B11100000,B00010000,B11100000,B00001100, + B10000000,B00000000,B00010000,B00000000,B00001100, + B10000000,B00000000,B00110000,B00000000,B00011100, + B11000000,B00000000,B00110000,B00000000,B00111100, + B11000000,B00000000,B01110000,B00000000,B01111100, + B11100000,B00000000,B11110000,B00000000,B11111100, + B11111000,B00000011,B11110000,B00000111,B11111100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_LOGO_X 0 +#define STATUS_HEATERS_X 50 +#define STATUS_BED_X 74 diff --git a/config/examples/AliExpress/CL-260/README.txt b/config/examples/AliExpress/CL-260/README.txt new file mode 100644 index 0000000000..b8d6856a65 --- /dev/null +++ b/config/examples/AliExpress/CL-260/README.txt @@ -0,0 +1,15 @@ +This is an example configuration for the CL-260 Ultimaker 2 clone. +Change Z_MAX_POS to 300 for the CL-260MAX. + +(The printer is available on AliExpress; be aware that this is not a beginner's +printer -- it needs tweaking and some parts replaced before being decent.) + +The printer comes with a quite old Marlin, the sources are available here: +http://www.thingiverse.com/thing:1635830/ and I recommend replacing them. + +The setting "works" for my printer and the extruder using my calibration value. +You might want to tweak some settings, e.g enable EEPROM, increase default Z speed, adjust homing speeds,... + +Have fun! +-- +tobi diff --git a/config/examples/Anet/A6/_Statusscreen.h b/config/examples/Anet/A6/_Statusscreen.h new file mode 100644 index 0000000000..6e08995a30 --- /dev/null +++ b/config/examples/Anet/A6/_Statusscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Anet/A6" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 10 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010000, + B10001010,B11000111,B00111110,B00000100,B01010000, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01010001, + B10001010,B00101000,B00001000,B00000100,B01010001, + B10001010,B00100111,B00000110,B00000100,B01001110 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/A8/_Statusscreen.h b/config/examples/Anet/A8/_Statusscreen.h new file mode 100644 index 0000000000..a69a3809fb --- /dev/null +++ b/config/examples/Anet/A8/_Statusscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Anet/A8" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 10 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010001, + B10001010,B11000111,B00111110,B00000100,B01010001, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01010001, + B10001010,B00101000,B00001000,B00000100,B01010001, + B10001010,B00100111,B00000110,B00000100,B01001110 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/A8plus/_Statusscreen.h b/config/examples/Anet/A8plus/_Statusscreen.h new file mode 100644 index 0000000000..2f1543d233 --- /dev/null +++ b/config/examples/Anet/A8plus/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Anet/A8plus" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 6 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010001, + B10001010,B11000111,B00111110,B00000100,B01010001, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01010001, + B10001010,B00101000,B00001000,B00000100,B01010001, + B10001010,B00100111,B00000110,B00000100,B01001110, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00001110,B01000000,B00000000,B00000000, + B00000000,B00010001,B01000000,B00000000,B00000000, + B00000000,B00010001,B01010001,B00111000,B00000000, + B00000000,B00011110,B01010001,B01000000,B00000000, + B00000000,B00010000,B01010001,B00111000,B00000000, + B00000000,B00010000,B01010001,B00000100,B00000000, + B00000000,B00010000,B01001110,B00111000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/A9/_Statusscreen.h b/config/examples/Anet/A9/_Statusscreen.h new file mode 100644 index 0000000000..5b03d0b17a --- /dev/null +++ b/config/examples/Anet/A9/_Statusscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Anet/A9" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 10 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010001, + B10001010,B11000111,B00111110,B00000100,B01010001, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01000001, + B10001010,B00101000,B00001000,B00000100,B01000001, + B10001010,B00100111,B00000110,B00000100,B01011110 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/E16/Stock/_Bootscreen.h b/config/examples/Anet/E16/Stock/_Bootscreen.h new file mode 100644 index 0000000000..102fb8e777 --- /dev/null +++ b/config/examples/Anet/E16/Stock/_Bootscreen.h @@ -0,0 +1,73 @@ +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file '3dpc_tech_bootscreen.bmp' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B11111111,B00000000,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11000000,B00000000,B11111111, + B11111110,B00000000,B11111111,B11111110,B00000111,B11111111,B11111111,B00000001,B11111111,B11111111,B11100000,B00000011,B11111111,B11111000,B00000000,B01111111, + B11111110,B00000001,B11111111,B11111111,B00000111,B11111111,B11111111,B11000001,B11111111,B11111111,B11111000,B00000111,B11111111,B11111100,B00000000,B01111111, + B11111100,B00000011,B11111111,B11111111,B11000111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100,B00011111,B11111111,B11111110,B00000000,B01111111, + B11111100,B00000111,B11111111,B11111111,B11100111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111110,B00011111,B11111111,B11111111,B00000000,B00111111, + B11111000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110,B00111111,B11111111,B11111111,B00000000,B00111111, + B11111000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111,B00111111,B11111111,B11111111,B10000000,B00011111, + B11111000,B00001111,B11111111,B11111111,B11110111,B11111111,B00111111,B11111001,B11111111,B11111111,B11111111,B01111111,B11111011,B11111111,B10000000,B00011111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00111111,B11111101,B11111111,B11001111,B11111111,B01111111,B11110001,B11111111,B10000000,B00011111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00001111,B11111000,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00000000,B00000000,B01111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000111, + B11000000,B00000000,B00000001,B11111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B11000111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B10000111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B00000111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B00000111,B11111111,B00011111,B11111101,B11111111,B11001111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B10000111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00000111,B11111111,B11000111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00000000,B11111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111110,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00000000,B01111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111110,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00001111,B11111000,B01111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111100,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11111111,B11100000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111111,B11111111,B11110111,B11111111,B00111111,B11111001,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11000000,B00000000,B01111111,B11111111,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11000000,B00000000,B00111111,B11111111,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11110001,B11111111,B11000000,B00000000,B00111111,B11111111,B11111111,B00000000,B00001111, + B11110000,B00000111,B11111111,B11111111,B11000111,B11111111,B11111111,B11100001,B11111111,B11000000,B00000000,B00011111,B11111111,B11111110,B00000000,B00011111, + B11111000,B00000011,B11111111,B11111111,B10000111,B11111111,B11111111,B11000001,B11111111,B11000000,B00000000,B00001111,B11111111,B11111100,B00000000,B00011111, + B11111000,B00000001,B11111111,B11111111,B00000111,B11111111,B11111111,B10000001,B11111111,B11000000,B00000000,B00000111,B11111111,B11111000,B00000000,B00011111, + B11111000,B00000000,B01111111,B11111100,B00000111,B11111111,B11111100,B00000001,B11111111,B11000000,B00000000,B00000001,B11111111,B11100000,B00000000,B00111111, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00000000,B01111111, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B11000000,B00000000,B11111111, + B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B11000000,B00000000,B11111111, + B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B01111100,B01111100,B11111100,B00000001,B11111111, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B11001100,B11100000,B11101100,B00000001,B11111111, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B11000100,B11000000,B11000100,B00000011,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B01100000,B11111100,B11000000,B11000100,B00000011,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B01100100,B11000000,B11000000,B11000100,B00000111,B11111111, + B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100,B11111100,B01111100,B11000100,B00000111,B11111111, + B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B01111100,B00111100,B10000100,B00001111,B11111111, + B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111 +}; diff --git a/config/examples/Anet/E16/Stock/_Statusscreen.h b/config/examples/Anet/E16/Stock/_Statusscreen.h new file mode 100644 index 0000000000..1338bd41dd --- /dev/null +++ b/config/examples/Anet/E16/Stock/_Statusscreen.h @@ -0,0 +1,85 @@ +/** + * 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 "Anet/E16/Stock" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 3 +#define STATUS_LOGO_WIDTH 24 + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file '3dpc_tech_statusscreen.bmp' + */ +const unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111, + B11111111,B00000000,B11111111, + B11111100,B00000000,B00111111, + B11110000,B00000000,B00001111, + B11100000,B00000000,B00000111, + B11100000,B00000000,B00000111, + B11000000,B00000000,B00000011, + B10011101,B11001110,B00110001, + B10010101,B10101111,B01101001, + B10010101,B10101101,B01101001, + B10000101,B10101101,B01100001, + B10001101,B10101111,B01100001, + B10010101,B10101100,B01100001, + B10010101,B10101100,B01101001, + B10010101,B10101100,B01101001, + B10011101,B11001100,B00110001, + B10000000,B00000000,B00000001, + B11000000,B00000001,B11111011, + B11100000,B00000000,B00000111, + B11100000,B00000000,B00000111, + B11110000,B00000000,B00001111, + B11111100,B00000000,B00111111, + B11111110,B01101100,B01111111, + B11111111,B11111111,B11111111 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Anet/ET4+/README.md b/config/examples/Anet/ET4+/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4+/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET4-Pro/README.md b/config/examples/Anet/ET4-Pro/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4-Pro/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET4/README.md b/config/examples/Anet/ET4/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET4X/README.md b/config/examples/Anet/ET4X/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4X/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET5-Pro/README.md b/config/examples/Anet/ET5-Pro/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET5-Pro/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET5/README.md b/config/examples/Anet/ET5/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET5/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET5X/README.md b/config/examples/Anet/ET5X/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET5X/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/AnimationExample/_Bootscreen.h b/config/examples/AnimationExample/_Bootscreen.h new file mode 100644 index 0000000000..d414357f4a --- /dev/null +++ b/config/examples/AnimationExample/_Bootscreen.h @@ -0,0 +1,222 @@ +/** + * 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 "AnimationExample" + +/** + * Animated boot screen example + * + * Create your own with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_ANIMATED +#define CUSTOM_BOOTSCREEN_TIMEOUT 500 // (ms) Extra timeout after the animation + +/** + * Enable one of the following two options depending on your needs. + * Also edit the "custom_bootscreen_animation" at the bottom of this file. + */ +#define CUSTOM_BOOTSCREEN_FRAME_TIME 100 // (ms) Same time for all frames +//#define CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME // Each frame also has a duration + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 120 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00001100,B00110000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00001100,B00110000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10001100,B00110000,B11100111, + B10001100,B00110000,B11001111,B11000111,B11001100,B00110001,B11110011, + B10001100,B00110000,B11011100,B11101100,B11101100,B00110011,B10111001, + B10001100,B00110000,B11011000,B01101100,B01101100,B00110011,B00011001, + B10001100,B00110000,B11010000,B01101100,B00001100,B00110011,B00011001, + B10001100,B00110000,B11011000,B01101100,B00001100,B00110011,B00011001, + B10001100,B00110000,B11011100,B01101100,B00001110,B00111011,B00011001, + B10001100,B00110000,B11001111,B01111100,B00000111,B10011111,B00011001, + B10001100,B00110000,B11000111,B01111100,B00000011,B10001111,B00011001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + + +const unsigned char custom_start_bmp1[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +const unsigned char custom_start_bmp2[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000111, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000011, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +const unsigned char custom_start_bmp3[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000000,B00000000,B00000000,B00000111, + B10001100,B00110000,B11001111,B11000000,B00000000,B00000000,B00000011, + B10001100,B00110000,B11011100,B11100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11010000,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011100,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11001111,B01110000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000111,B01110000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +const unsigned char custom_start_bmp4[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10000000,B00000000,B00000111, + B10001100,B00110000,B11001111,B11000111,B11000000,B00000000,B00000011, + B10001100,B00110000,B11011100,B11101100,B11100000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B01100000,B00000000,B00000001, + B10001100,B00110000,B11010000,B01101100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011100,B01101100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11001111,B01111100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000111,B01111100,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +const unsigned char custom_start_bmp5[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00001100,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00001100,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10001100,B00000000,B00000111, + B10001100,B00110000,B11001111,B11000111,B11001100,B00000000,B00000011, + B10001100,B00110000,B11011100,B11101100,B11101100,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B01101100,B00000000,B00000001, + B10001100,B00110000,B11010000,B01101100,B00001100,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B00001100,B00000000,B00000001, + B10001100,B00110000,B11011100,B01101100,B00001110,B00000000,B00000001, + B10001100,B00110000,B11001111,B01111100,B00000111,B10000000,B00000001, + B10001100,B00110000,B11000111,B01111100,B00000011,B10000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +const unsigned char custom_start_bmp6[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00001100,B00110000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00001100,B00110000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10001100,B00110000,B00000111, + B10001100,B00110000,B11001111,B11000111,B11001100,B00110000,B00000011, + B10001100,B00110000,B11011100,B11101100,B11101100,B00110000,B00000001, + B10001100,B00110000,B11011000,B01101100,B01101100,B00110000,B00000001, + B10001100,B00110000,B11010000,B01101100,B00001100,B00110000,B00000001, + B10001100,B00110000,B11011000,B01101100,B00001100,B00110000,B00000001, + B10001100,B00110000,B11011100,B01101100,B00001110,B00111000,B00000001, + B10001100,B00110000,B11001111,B01111100,B00000111,B10011100,B00000001, + B10001100,B00110000,B11000111,B01111100,B00000011,B10001100,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +#ifdef CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME + + // Each Frame has its own custom duration + const boot_frame_t custom_bootscreen_animation[] PROGMEM = { + { custom_start_bmp1, 2000 }, // 2.0s + { custom_start_bmp2, 100 }, // 0.1s x 5 frames + { custom_start_bmp3, 100 }, + { custom_start_bmp4, 100 }, + { custom_start_bmp5, 100 }, + { custom_start_bmp6, 100 }, + { custom_start_bmp, 500 } // 0.5s + }; + +#else + + // Each frames shows for CUSTOM_BOOTSCREEN_FRAME_TIME + const unsigned char * const custom_bootscreen_animation[] PROGMEM = { + custom_start_bmp1, custom_start_bmp2, custom_start_bmp3, + custom_start_bmp4, custom_start_bmp5, custom_start_bmp6, + custom_start_bmp + }; + +#endif diff --git a/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md new file mode 100644 index 0000000000..07acf42791 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md @@ -0,0 +1,7 @@ +# Anycubic Mega Zero 2.0 Support + +This configuration is based on the published firmware v0.0.4 from Anycubic. It is **not** the authoritative source, but has been carefully re-built by looking at their firmware and inferring the base version and configuration they used. + +## Bitmaps + +The bootscreen came from Anycubic's firmware. The custom status screen was recreated from images. diff --git a/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h new file mode 100644 index 0000000000..b471736fc6 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "AnyCubic/Mega Zero 2.0/Anycubic V1" + +//#define CUSTOM_BOOTSCREEN_TIMEOUT 2000 +//#define CUSTOM_BOOTSCREEN_INVERTED + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11101111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111100,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B01111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B10111111,B00000000,B00000000,B10000000,B10000000,B11101110,B00001110,B00011011,B00000111,B00001110,B00110011,B10000011,B00000011,B10110000, + B00001111,B11111111,B11011111,B10000000,B00000000,B11000000,B11000000,B11100111,B00011100,B01111011,B11000111,B00001110,B00110011,B11000011,B00000111,B10111000, + B00001111,B11111111,B11101111,B11000000,B00000001,B11000000,B11100000,B11100111,B00111100,B11111011,B11000111,B00001110,B00110011,B11100011,B00001111,B00111100, + B00011111,B11111111,B11110111,B11100000,B00000000,B11100000,B01111000,B11100011,B00111000,B11100000,B10000111,B00001110,B00110000,B11100011,B00001100,B00000000, + B00011111,B11111111,B11111011,B11110000,B00000010,B11100000,B00111100,B11100000,B01110001,B11000000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00111111,B11111111,B11110100,B00110000,B00000010,B01110000,B10011110,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B01111111,B11111111,B11101111,B11000000,B00000111,B01110000,B11001111,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B00111111,B11111111,B11101111,B11110000,B00000110,B00111000,B11100111,B11100000,B11000001,B11000000,B00000111,B00001110,B00110000,B00100011,B00011100,B00000000, + B00011111,B11111111,B11011111,B11100000,B00001110,B11111000,B11100011,B11100000,B11000000,B11100000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00011111,B11111111,B10111111,B11000000,B00001100,B11111100,B11100000,B11100000,B11000000,B11110001,B11000111,B10011100,B00110011,B11100011,B00001111,B00011100, + B00001111,B11111111,B01111111,B10000000,B00011100,B00001100,B11100000,B01100000,B11000000,B01111011,B11000011,B10011100,B00110011,B11000011,B00000111,B10111100, + B00000111,B11111111,B01111111,B00000000,B00011000,B00001110,B11100000,B00100000,B11000000,B00111011,B10000001,B10010000,B00110011,B10000011,B00000011,B10110000, + B00000111,B11111110,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111101,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11110111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01101110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h new file mode 100644 index 0000000000..6aaf586fef --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h @@ -0,0 +1,49 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "AnyCubic/Mega Zero 2.0/Anycubic V1" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 48 +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 10 +#define STATUS_HEATERS_X 54 +#define STATUS_BED_X 74 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110011,B11001111,B11110000,B11111100,B00000000,B00111110, + B01110011,B11000000,B00110001,B11001110,B00000000,B01110111, + B01110011,B11000000,B01110001,B10000110,B00000000,B11100011, + B01110011,B11000000,B11100000,B00000110,B00000000,B11100011, + B01111011,B11000000,B11000000,B00001110,B00000000,B11000011, + B01111111,B11000001,B11000000,B00001110,B00000000,B11000011, + B01111111,B11000001,B10000000,B00011100,B00000000,B11000011, + B01111111,B11000011,B10000000,B00111000,B00000000,B11000011, + B01111111,B11000011,B00000000,B01110000,B00000000,B11000011, + B01101101,B11000110,B00000000,B01100000,B00000000,B11100011, + B01101101,B11001110,B00000000,B11100000,B00000000,B01100111, + B01101101,B11001111,B11111001,B11111110,B00011000,B01111110, + B01101101,B11001111,B11111001,B11111110,B00011000,B00011100 +}; diff --git a/config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md b/config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md new file mode 100644 index 0000000000..858faf7bb2 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md @@ -0,0 +1,7 @@ +# Anycubic Mega Zero Support + +This configuration is based on the published firmware v0.0.4 from Anycubic. It is **not** the authoritative source, but has been carefully re-built by looking at their firmware and inferring the base version and configuration they used. + +## Bitmaps + +The bootscreen and custom status screens come from Anycubic's firmware. diff --git a/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h new file mode 100644 index 0000000000..0761b496c9 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h @@ -0,0 +1,55 @@ +/** + * 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 "AnyCubic/Mega Zero/Anycubic V1" + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11101111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111100,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B01111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B10111111,B00000000,B00000000,B10000000,B10000000,B11101110,B00001110,B00011011,B00000111,B00001110,B00110011,B10000011,B00000011,B10110000, + B00001111,B11111111,B11011111,B10000000,B00000000,B11000000,B11000000,B11100111,B00011100,B01111011,B11000111,B00001110,B00110011,B11000011,B00000111,B10111000, + B00001111,B11111111,B11101111,B11000000,B00000001,B11000000,B11100000,B11100111,B00111100,B11111011,B11000111,B00001110,B00110011,B11100011,B00001111,B00111100, + B00011111,B11111111,B11110111,B11100000,B00000000,B11100000,B01111000,B11100011,B00111000,B11100000,B10000111,B00001110,B00110000,B11100011,B00001100,B00000000, + B00011111,B11111111,B11111011,B11110000,B00000010,B11100000,B00111100,B11100000,B01110001,B11000000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00111111,B11111111,B11110100,B00110000,B00000010,B01110000,B10011110,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B01111111,B11111111,B11101111,B11000000,B00000111,B01110000,B11001111,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B00111111,B11111111,B11101111,B11110000,B00000110,B00111000,B11100111,B11100000,B11000001,B11000000,B00000111,B00001110,B00110000,B00100011,B00011100,B00000000, + B00011111,B11111111,B11011111,B11100000,B00001110,B11111000,B11100011,B11100000,B11000000,B11100000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00011111,B11111111,B10111111,B11000000,B00001100,B11111100,B11100000,B11100000,B11000000,B11110001,B11000111,B10011100,B00110011,B11100011,B00001111,B00011100, + B00001111,B11111111,B01111111,B10000000,B00011100,B00001100,B11100000,B01100000,B11000000,B01111011,B11000011,B10011100,B00110011,B11000011,B00000111,B10111100, + B00000111,B11111111,B01111111,B00000000,B00011000,B00001110,B11100000,B00100000,B11000000,B00111011,B10000001,B10010000,B00110011,B10000011,B00000011,B10110000, + B00000111,B11111110,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111101,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11110111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01101110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Statusscreen.h new file mode 100644 index 0000000000..4159d16a54 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Statusscreen.h @@ -0,0 +1,54 @@ +/** + * 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 . + * + */ + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 128x19 C/C++ data + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "AnyCubic/Mega Zero/Anycubic V1" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 64 +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 10 +#define STATUS_HEATERS_X 80 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11101110,B00000000,B00000000,B00000000,B00011111,B00000000,B00000000,B00000000, + B01101100,B00000000,B00000000,B00000000,B00100010,B00000000,B00000000,B00000000, + B01101100,B00000000,B00000000,B00000000,B00000010,B00000000,B00000000,B00000000, + B01101100,B00111100,B00111110,B00111000,B00000100,B00011110,B01110111,B00001100, + B01101100,B01000010,B01000100,B01000100,B00000100,B00100001,B00011001,B00010010, + B01010100,B01000010,B01000100,B00001100,B00001000,B00100001,B00010000,B00100001, + B01010100,B01111110,B00111000,B00110100,B00001000,B00111111,B00010000,B00100001, + B01010100,B01000000,B01000000,B01000100,B00010000,B00100000,B00010000,B00100001, + B01010100,B01000010,B00111100,B01001100,B00010001,B00100001,B00010000,B00010010, + B11010110,B00111100,B01000010,B00110110,B00111111,B00011110,B01111100,B00001100, + B00000000,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h new file mode 100644 index 0000000000..4110ef4c80 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0" + +//#define CUSTOM_BOOTSCREEN_TIMEOUT 2000 +//#define CUSTOM_BOOTSCREEN_INVERTED + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11101111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111100,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B01111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B10111111,B00000000,B00000000,B10000000,B10000000,B11101110,B00001110,B00011011,B00000111,B00001110,B00110011,B10000011,B00000011,B10110000, + B00001111,B11111111,B11011111,B10000000,B00000000,B11000000,B11000000,B11100111,B00011100,B01111011,B11000111,B00001110,B00110011,B11000011,B00000111,B10111000, + B00001111,B11111111,B11101111,B11000000,B00000001,B11000000,B11100000,B11100111,B00111100,B11111011,B11000111,B00001110,B00110011,B11100011,B00001111,B00111100, + B00011111,B11111111,B11110111,B11100000,B00000000,B11100000,B01111000,B11100011,B00111000,B11100000,B10000111,B00001110,B00110000,B11100011,B00001100,B00000000, + B00011111,B11111111,B11111011,B11110000,B00000010,B11100000,B00111100,B11100000,B01110001,B11000000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00111111,B11111111,B11110100,B00110000,B00000010,B01110000,B10011110,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B01111111,B11111111,B11101111,B11000000,B00000111,B01110000,B11001111,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B00111111,B11111111,B11101111,B11110000,B00000110,B00111000,B11100111,B11100000,B11000001,B11000000,B00000111,B00001110,B00110000,B00100011,B00011100,B00000000, + B00011111,B11111111,B11011111,B11100000,B00001110,B11111000,B11100011,B11100000,B11000000,B11100000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00011111,B11111111,B10111111,B11000000,B00001100,B11111100,B11100000,B11100000,B11000000,B11110001,B11000111,B10011100,B00110011,B11100011,B00001111,B00011100, + B00001111,B11111111,B01111111,B10000000,B00011100,B00001100,B11100000,B01100000,B11000000,B01111011,B11000011,B10011100,B00110011,B11000011,B00000111,B10111100, + B00000111,B11111111,B01111111,B00000000,B00011000,B00001110,B11100000,B00100000,B11000000,B00111011,B10000001,B10010000,B00110011,B10000011,B00000011,B10110000, + B00000111,B11111110,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111101,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11110111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01101110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Statusscreen.h new file mode 100644 index 0000000000..a009264668 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Statusscreen.h @@ -0,0 +1,54 @@ +/** + * 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 . + * + */ + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 128x19 C/C++ data + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 64 +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 10 +#define STATUS_HEATERS_X 80 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11101110,B00000000,B00000000,B00000000,B00011111,B00000000,B00000000,B00000000, + B01101100,B00000000,B00000000,B00000000,B00100010,B00000000,B00000000,B00000000, + B01101100,B00000000,B00000000,B00000000,B00000010,B00000000,B00000000,B00000000, + B01101100,B00111100,B00111110,B00111000,B00000100,B00011110,B01110111,B00001100, + B01101100,B01000010,B01000100,B01000100,B00000100,B00100001,B00011001,B00010010, + B01010100,B01000010,B01000100,B00001100,B00001000,B00100001,B00010000,B00100001, + B01010100,B01111110,B00111000,B00110100,B00001000,B00111111,B00010000,B00100001, + B01010100,B01000000,B01000000,B01000100,B00010000,B00100000,B00010000,B00100001, + B01010100,B01000010,B00111100,B01001100,B00010001,B00100001,B00010000,B00010010, + B11010110,B00111100,B01000010,B00110110,B00111111,B00011110,B01111100,B00001100, + B00000000,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Genius/BLTouch/_Bootscreen.h b/config/examples/Artillery/Genius/BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..2ef40e3b86 --- /dev/null +++ b/config/examples/Artillery/Genius/BLTouch/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Artillery/Genius/BLTouch" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Genius/V1/_Bootscreen.h b/config/examples/Artillery/Genius/V1/_Bootscreen.h new file mode 100644 index 0000000000..3342cecf44 --- /dev/null +++ b/config/examples/Artillery/Genius/V1/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Artillery/Genius/V1" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Hornet/_Bootscreen.h b/config/examples/Artillery/Hornet/_Bootscreen.h new file mode 100644 index 0000000000..307bcf077a --- /dev/null +++ b/config/examples/Artillery/Hornet/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Artillery/Hornet" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Sidewinder X1/0.9 BMG - E3D V6/_Bootscreen.h b/config/examples/Artillery/Sidewinder X1/0.9 BMG - E3D V6/_Bootscreen.h new file mode 100644 index 0000000000..475252e076 --- /dev/null +++ b/config/examples/Artillery/Sidewinder X1/0.9 BMG - E3D V6/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 "Artillery/Sidewinder X1/0.9 BMG - E3D V6" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Sidewinder X1/V1/_Bootscreen.h b/config/examples/Artillery/Sidewinder X1/V1/_Bootscreen.h new file mode 100644 index 0000000000..2cce43e7e3 --- /dev/null +++ b/config/examples/Artillery/Sidewinder X1/V1/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 "Artillery/Sidewinder X1/V1" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Sidewinder X2/_Bootscreen.h b/config/examples/Artillery/Sidewinder X2/_Bootscreen.h new file mode 100644 index 0000000000..e83f749d99 --- /dev/null +++ b/config/examples/Artillery/Sidewinder X2/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Artillery/Sidewinder X2" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/BIQU/B1 - SKR 1.4/README.md b/config/examples/BIQU/B1 - SKR 1.4/README.md new file mode 100644 index 0000000000..968eb198a1 --- /dev/null +++ b/config/examples/BIQU/B1 - SKR 1.4/README.md @@ -0,0 +1,9 @@ +# BIQU B1 (SKR 1.4) Firmware + +Compile with the `LPC1768` environment. + +## BLTouch Probe Support + +Enable `B1_USE_BLTOUCH` for probe customizations. + +This configuration retains the use of homing with a Z limit switch. If you want to home with the BLTouch probe, remove your Z limit switch & bracket and enable (uncomment) `USE_PROBE_FOR_Z_HOMING` and `Z_SAFE_HOMING`. Change `Z_MIN_ENDSTOP_INVERTING` from `true` to `false`. diff --git a/config/examples/BIQU/B1 - SKR 2/README.md b/config/examples/BIQU/B1 - SKR 2/README.md new file mode 100644 index 0000000000..f7e5571007 --- /dev/null +++ b/config/examples/BIQU/B1 - SKR 2/README.md @@ -0,0 +1,9 @@ +# BIQU B1 (SKR 2) Firmware + +Flash drive support is enabled, but jumpers to enable support may not have been installed correctly from the factory. [Follow Biqu's instructions, starting with Step 2](https://github.com/bigtreetech/BIQU-B1-SE-PLUS/blob/main/B1-SE%20fimware/B1-SE-U%20Disk%20Usage%20Tutorial-English.pdf) if flash drive support is not working correctly. + +## BLTouch Probe Support + +Enable `B1_USE_BLTOUCH` for probe customizations. + +This configuration retains the use of homing with a Z limit switch. If you want to home with the BLTouch probe, remove your Z limit switch & bracket and enable (uncomment) `USE_PROBE_FOR_Z_HOMING` and `Z_SAFE_HOMING`. Change `Z_MIN_ENDSTOP_INVERTING` from `true` to `false`. diff --git a/config/examples/BQ/Hephestos_2/README.md b/config/examples/BQ/Hephestos_2/README.md new file mode 100644 index 0000000000..ab28487e2d --- /dev/null +++ b/config/examples/BQ/Hephestos_2/README.md @@ -0,0 +1,29 @@ +# Example Configuration for BQ [Hephestos 2](http://www.bq.com/uk/hephestos-2) +Based on the original configuration file shipped with the heavily modified Marlin fork by BQ. +The forked firmware and configuration files can be found at the [BQ Github repository](https://github.com/bq/Marlin). + +NOTE: The look and feel of the LCD menu will change dramatically when using the original Marlin firmware. + +## Changelog + * 2018/05/30 - Configuration updated to the latest Marlin version (43a55a9af). + ABL Bilinear 5x5 is active by default. + + * 2017/07/06 - Configuration updated to the latest Marlin version and added support for the + official BQ heated bed upgrade kit. + + * 2016/12/13 - Configuration updated to the latest Marlin version. + + * 2016/07/13 - Configuration updated to the latest Marlin version. + + * 2016/06/21 - Disabled heated bed related options, activated software endstops and SD printing now + disables the heater when finishes printing. + + * 2016/03/21 - Activated 4-point auto leveling by default and updated miscellaneous z-probe values. + + * 2016/03/01 - The first release of Marlin's configuration file for the + BQ Hephestos 2 3D printer. + + +## Support +This configuration should work easily with the stock Hephestos 2, nevertheless if you encounter any +issues you may contact me on [Github](https://github.com/jbrazio), [Twitter](https://twitter.com/jbrazio) or by mail. diff --git a/config/examples/BQ/Hephestos_2/_Bootscreen.h b/config/examples/BQ/Hephestos_2/_Bootscreen.h new file mode 100644 index 0000000000..b8e792130e --- /dev/null +++ b/config/examples/BQ/Hephestos_2/_Bootscreen.h @@ -0,0 +1,103 @@ +/** + * 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 "BQ/Hephestos_2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 64 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111000,B00000111,B11111000,B00000111,B11000000,B00000000, + B00000000,B00000001,B11111100,B00000011,B11110000,B00001111,B11100000,B00000000, + B00000000,B00000011,B11111110,B00000000,B11000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111110,B00000000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111110,B00000000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111110,B00000000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111100,B00000000,B00000000,B00001111,B11100000,B00000000, + B00000000,B00000001,B11111000,B00000000,B00000000,B00001111,B11100000,B00000000, + B00000000,B00000000,B01110000,B00000000,B00000000,B00000011,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B10000000,B00000000,B00000000,B01110000,B00000000,B00000000,B00000000, + B00011111,B11000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11100000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11100000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11100000,B00000000,B00000000,B01111011,B11000000,B00001111,B00000000, + B00111111,B11000000,B00000000,B00000000,B01111111,B11110000,B00111111,B11000000, + B00011111,B10000000,B00000000,B00000000,B01111111,B11111000,B01111111,B11100000, + B00001111,B00000000,B00000000,B00000000,B01111110,B11111100,B11111001,B11110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B11100000,B11110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B11100000,B11110000, + B00000000,B00000000,B00000000,B00000000,B01111100,B01111100,B11111001,B11110000, + B00000000,B00000000,B00000000,B00000000,B00011111,B11111000,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00001111,B11110000,B01111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00011111,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/CTC/A13/_Bootscreen.h b/config/examples/CTC/A13/_Bootscreen.h new file mode 100644 index 0000000000..91b82a6262 --- /dev/null +++ b/config/examples/CTC/A13/_Bootscreen.h @@ -0,0 +1,75 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "CTC/A13" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 5000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 120 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00111111,B00000011,B11111111,B11111110,B00000011,B11110000,B00000000,B00000000,B11111110,B00000000,B00000111,B10000000,B00111111,B00000000, + B00000000,B00111111,B00000011,B11111111,B11111110,B00000011,B11110000,B00000000,B00000000,B11111110,B00000000,B00000111,B10000000,B00111111,B00000000, + B00000001,B11111111,B11100011,B11111111,B11111110,B00011111,B11111110,B00000000,B00000000,B11111110,B00000000,B00001111,B10000000,B11111111,B11000000, + B00000001,B11111111,B11100011,B11111111,B11111110,B00011111,B11111110,B00000000,B00000000,B11111110,B00000000,B00001111,B10000000,B11111111,B11000000, + B00000011,B11111111,B11110011,B11111111,B11111110,B00111111,B11111111,B00000000,B00000001,B11111110,B00000000,B00011111,B10000001,B11111111,B11100000, + B00000011,B11111111,B11110011,B11111111,B11111110,B00111111,B11111111,B00000000,B00000001,B11111110,B00000000,B00011111,B10000001,B11111111,B11100000, + B00000011,B11111111,B11110011,B11111111,B11111110,B00111111,B11111111,B00000000,B00000001,B11111111,B00000000,B01111111,B10000011,B11100011,B11100000, + B00000011,B11111111,B11110011,B11111111,B11111110,B00111111,B11111111,B00000000,B00000001,B11111111,B00000000,B01111111,B10000011,B11100011,B11100000, + B00000111,B11100001,B11111000,B00001111,B10000000,B01111110,B00011111,B10000000,B00000001,B11111111,B00000001,B11111111,B10000000,B11100011,B11100000, + B00000111,B11100001,B11111000,B00001111,B10000000,B01111110,B00011111,B10000000,B00000001,B11111111,B00000001,B11111111,B10000000,B11100011,B11100000, + B00000111,B11100001,B11111000,B00001111,B10000000,B01111110,B00011111,B10000000,B00000001,B11111111,B00000001,B11111111,B10000000,B11100011,B11100000, + B00000111,B11000000,B11100000,B00001111,B10000000,B01111100,B00001110,B00000000,B00000011,B11101111,B10000001,B11111111,B10000000,B00000011,B11100000, + B00000111,B11000000,B11100000,B00001111,B10000000,B01111100,B00001110,B00000000,B00000011,B11101111,B10000001,B11111111,B10000000,B00000011,B11100000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000011,B11101111,B10000001,B11001111,B10000000,B00001111,B11000000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000011,B11101111,B10000001,B11001111,B10000000,B00001111,B11000000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000011,B11000111,B10000001,B00001111,B10000000,B00001111,B10000000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000111,B11000111,B11000000,B00001111,B10000000,B00001111,B11100000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000111,B11000111,B11000000,B00001111,B10000000,B00001111,B11100000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000111,B11000111,B11000000,B00001111,B10000000,B00000001,B11110000, + B00001111,B11000000,B00000000,B00001111,B10000000,B11111100,B00000000,B00000000,B00000111,B11000111,B11000000,B00001111,B10000000,B00000001,B11110000, + B00001111,B11000000,B11000000,B00001111,B10000000,B11111100,B00001100,B00000000,B00000111,B11111111,B11100000,B00001111,B10000000,B00000001,B11110000, + B00001111,B11000000,B11000000,B00001111,B10000000,B11111100,B00001100,B00000000,B00000111,B11111111,B11100000,B00001111,B10000000,B00000001,B11110000, + B00000111,B11000000,B11111000,B00001111,B10000000,B01111100,B00001111,B10000000,B00001111,B11111111,B11100000,B00001111,B10000000,B00000001,B11110000, + B00000111,B11000000,B11111000,B00001111,B10000000,B01111100,B00001111,B10000000,B00001111,B11111111,B11100000,B00001111,B10000000,B00000001,B11110000, + B00000111,B11000000,B11111000,B00001111,B10000000,B01111100,B00001111,B10000000,B00001111,B11111111,B11100000,B00001111,B10000000,B00000001,B11110000, + B00000111,B11100001,B11111000,B00001111,B10000000,B01111110,B00011111,B10000000,B00001111,B11111111,B11100000,B00001111,B10000011,B11100001,B11110000, + B00000111,B11100001,B11111000,B00001111,B10000000,B01111110,B00011111,B10000000,B00001111,B11111111,B11100000,B00001111,B10000011,B11100001,B11110000, + B00000011,B11111111,B11110000,B00001111,B10000000,B00111111,B11111111,B00000000,B00011111,B11111111,B11110000,B00001111,B10000011,B11110011,B11110000, + B00000011,B11111111,B11110000,B00001111,B10000000,B00111111,B11111111,B00000000,B00011111,B11111111,B11110000,B00001111,B10000011,B11110011,B11110000, + B00000011,B11111111,B11110000,B00001111,B10000000,B00111111,B11111111,B00000000,B00011111,B00000001,B11110000,B00001111,B10000001,B11111111,B11100000, + B00000011,B11111111,B11110000,B00001111,B10000000,B00111111,B11111111,B00000000,B00011111,B00000001,B11110000,B00001111,B10000001,B11111111,B11100000, + B00000001,B11111111,B11100000,B00001111,B10000000,B00011111,B11111110,B00000000,B00011111,B00000001,B11111000,B00001111,B10000000,B11111111,B11000000, + B00000001,B11111111,B11100000,B00001111,B10000000,B00011111,B11111110,B00000000,B00011111,B00000001,B11111000,B00001111,B10000000,B11111111,B11000000, + B00000000,B00111111,B00000000,B00001111,B10000000,B00000011,B11110000,B00000000,B00111111,B00000001,B11111000,B00001111,B10000000,B00111111,B00000000, + B00000000,B00111111,B00000000,B00001111,B10000000,B00000011,B11110000,B00000000,B00111111,B00000001,B11111000,B00001111,B10000000,B00111111,B00000000 +}; diff --git a/config/examples/CTC/A13/_Statusscreen.h b/config/examples/CTC/A13/_Statusscreen.h new file mode 100644 index 0000000000..fba6a451f9 --- /dev/null +++ b/config/examples/CTC/A13/_Statusscreen.h @@ -0,0 +1,38 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "CTC/A13" + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Cartesio/_Bootscreen.h b/config/examples/Cartesio/_Bootscreen.h new file mode 100644 index 0000000000..c745a79370 --- /dev/null +++ b/config/examples/Cartesio/_Bootscreen.h @@ -0,0 +1,103 @@ +/** + * 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 "Cartesio" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 64 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111111,B11110000,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11111100,B00000000,B00000000, + B00000000,B00000000,B11111111,B11111111,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B10000000,B00000000, + B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00001111,B00000111,B10000111,B11111111,B11111111,B11100000,B00000000, + B00000000,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B00000000, + B00000001,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B10000000, + B00000011,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B10000000, + B00000111,B00011111,B10001111,B11000111,B11111111,B11111111,B11100001,B11000000, + B00000111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11100000, + B00001111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11100000, + B00001111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11110000, + B00011111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11110000, + B00011111,B00011111,B10001111,B11000111,B11111111,B11111111,B11100001,B11110000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B11111000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B11111000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B11111000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11100001,B11111000, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11111100, + B01111111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11111100, + B01111111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11111100, + B00111111,B00001111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00111111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00111111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00111111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00011111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11110000, + B00011111,B00001111,B11111111,B11111111,B11000111,B11100011,B11110001,B11110000, + B00011111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11100000, + B00001111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11100000, + B00001111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11000000, + B00000111,B00001111,B11111111,B11111111,B11000111,B11100011,B11110001,B11000000, + B00000011,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B10000000, + B00000011,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B00000000, + B00000001,B00011111,B11111111,B11111111,B11000111,B11100011,B11110000,B00000000, + B00000000,B00011111,B11111111,B11111111,B11000111,B11100011,B11110000,B00000000, + B00000000,B00001111,B11111111,B11111111,B11000011,B11000001,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B10000000,B00000000, + B00000000,B00000001,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11111100,B00000000,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111111,B11110000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B01111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/README.md b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/README.md new file mode 100644 index 0000000000..bb1653a99a --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/README.md @@ -0,0 +1,89 @@ +## CR-10 Mini with BLTouch + +Configuration for the BigTreeTech SKR E3 Mini V2 in a Creality CR-10 Mini using the stock CR-10 display, and a BL Touch v3.1 ABL probe mounted on a Bullseye fan duct. Additional features are enabled to take advantage of the capabilities of the BTT SKR E3 Mini V2 board, detailed below. + +Compile this in the `STM32F103RC_btt_512K` environment. The test board had 512K of Flash and this configuration uses a little over half of that. If your board has only 256K, you will have to disable some features to make the firmware fit. + +### Configuration.h notes: + +```cpp +#define USE_PROBE_FOR_Z_HOMING +``` +This configuration uses only the probe for Z homing. The Z-stop switch is NOT enabled and can be disconnected. + +```cpp +#define Z_MIN_PROBE_PIN PC14 +``` +Plug the BLTouch Black/White connector into the top two pins of the 5-pin Z-PROBE port with the white whire "up". Do not plug the connector in to the Z-MIN port where the limit switch was plugged in. + +```cpp +#define NOZZLE_TO_PROBE_OFFSET { -38, -8, 0 } +``` +These are the offsets for a left-side mounted BL Touch on a Bullseye fan duct base. Change them as required for your particular BL Touch mount. + +```cpp +#define MULTIPLE_PROBING 2 +``` +Bed probing will test each point twice. 1st probe will be "fast" Z, 2nd will use the slower Z rate. + +```cpp +#define Z_MIN_PROBE_REPEATABILITY_TEST +``` +M48 Enabled to establish probe deviation value. + +```cpp +#define AUTO_BED_LEVELING_BILINEAR +``` +Change this as desired. BILINEAR will work for most printers. + +```cpp +//#define RESTORE_LEVELING_AFTER_G28 +``` +This is disabled to work around an issue where —even with an `M420` command in start G-Code— ABL would toggle to the opposite of whatever the ABL state was (Enabled/Disabled) at the time a print job started. + +```cpp +#define GRID_MAX_POINTS_X 5 +``` +This configuration is set to use a 5x5 (25 point) probing grid. Change as desired. + +```cpp +#define EXTRAPOLATE_BEYOND_GRID +``` +By default, this is disabled. Enabling this seemed to provide better mesh data. + +```cpp +#define LCD_BED_LEVELING +``` +Provides control panel probe controls. + +```cpp +#define LEVEL_BED_CORNERS +``` +Provides control panel bed tramming controls. + +```cpp +#define Z_SAFE_HOMING +``` +Ensures the BL Touch probe is not hanging off the edge of the bed when Z homing. + +```cpp +#define CR10_STOCKDISPLAY +``` +If you are using the stock display on your CR-10 Mini, this **MUST** be enabled. + +### Configuration_adv.h notes: + +```cpp +#define LIN_ADVANCE +``` +This is enabled, but the K value is set to 0 which effectively disables LIN_ADVANCE. Calibrate Linear Advance and set your own K value and recompile. + +```cpp +#define ARC_SUPPORT +``` +Enables G2/G3 moves to smooth curves in your prints. Required for the Arc Welder plugin for OctoPrint etc. + +```cpp +#define ARC_P_CIRCLES +``` +Normally disabled by default. diff --git a/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..c35f2a1253 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..02a371ad55 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000111,B11001111,B10000000,B00110001,B11100000, + B00001111,B11001111,B11000000,B01110011,B11110000, + B00001100,B00001100,B01000000,B01110011,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000, + B00001100,B00001111,B11001111,B00110011,B00110000, + B00001100,B00001101,B10001111,B00110011,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000, + B00001111,B11001100,B11000000,B00110011,B11110000, + B00000111,B11001100,B11000000,B00110001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B10000011,B00110000,B00000011,B00000000, + B00000001,B10000011,B00110010,B00000011,B00000000, + B00000001,B11000111,B00000010,B11100000,B00000000, + B00000001,B11000111,B00110011,B11110011,B00000000, + B00000001,B11101111,B00110011,B00110011,B00000000, + B00000001,B10111011,B00110011,B00110011,B00000000, + B00000001,B10010011,B00110011,B00110011,B00000000, + B00000001,B10010011,B00110011,B00110011,B00000000, + B00000001,B10000011,B00110011,B00110011,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 Mini/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10 Mini/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..483f5eb938 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/CrealityV1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10 Mini/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 Mini/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10 Mini/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..f887aaea35 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/CrealityV1/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 "Creality/CR-10 Mini/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000111,B11001111,B10000000,B00110001,B11100000, + B00001111,B11001111,B11000000,B01110011,B11110000, + B00001100,B00001100,B01000000,B01110011,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000, + B00001100,B00001111,B11001111,B00110011,B00110000, + B00001100,B00001101,B10001111,B00110011,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000, + B00001111,B11001100,B11000000,B00110011,B11110000, + B00000111,B11001100,B11000000,B00110001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B10000011,B00110000,B00000011,B00000000, + B00000001,B10000011,B00110010,B00000011,B00000000, + B00000001,B11000111,B00000010,B11100000,B00000000, + B00000001,B11000111,B00110011,B11110011,B00000000, + B00000001,B11101111,B00110011,B00110011,B00000000, + B00000001,B10111011,B00110011,B00110011,B00000000, + B00000001,B10010011,B00110011,B00110011,B00000000, + B00000001,B10010011,B00110011,B00110011,B00000000, + B00000001,B10000011,B00110011,B00110011,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Bootscreen.h b/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Bootscreen.h new file mode 100644 index 0000000000..57260e8b8b --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "Creality/CR-10 Mini/MEEB-3DP" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111110,B00001111,B11111111,B10000000,B01111111,B11111111,B11110000,B00111111,B11111111,B11111001,B11111111,B11111111,B11100000, + B00011111,B11111111,B00001111,B11111111,B10000000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B00011111,B11111111,B00001111,B11111111,B10000001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B00111111,B11111111,B00001111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B11000011,B11111111,B11111111,B11110011,B11111111,B11111111,B11111001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B11111111,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11110000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111111,B00011111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B11111111,B10001111,B11111110,B00011111,B11110000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B11111111,B00000111,B11111110,B00011111,B11110000,B00111111,B11111111,B11100000,B00011111,B11111111,B11110001,B11111111,B11111111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00111111,B11111111,B11111111,B11111111,B11100000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111011,B11111111,B11111111,B10000000,B00011111,B01111111,B11111111,B11110000, + B00000000,B00000000,B00000111,B11111111,B11111111,B00000000,B00000011,B11111111,B11111111,B11000000,B00000000,B01111111,B11111111,B11111000, + B00000000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000011,B11111111,B11111111,B11100000,B00000000,B01111111,B11111111,B11111000, + B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111111,B11111111,B11111111,B11110000,B00011111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111111,B11111111,B11110000,B00000000,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111000,B00011111,B11110000,B00000000,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111111,B00000001,B11111111,B11111111,B11110111,B11111000,B00011111,B11111111,B11111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00011111,B00111111,B11111110,B00000001,B11110111,B11111000,B00011111,B11110000,B00111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111100,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111000,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111110,B11111111,B11111111,B11111111,B11101111,B11111000,B00111111,B11111111,B11111101,B11111111,B00011111,B11110000, + B00000000,B00000000,B00111110,B11111111,B11111100,B00000011,B11101111,B11110000,B00111111,B11100000,B01111101,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11100000, + B00000000,B11111111,B11111110,B00011111,B11111111,B11111111,B11111111,B11110000,B00111111,B11111111,B11111111,B11111111,B11111111,B11000000, + B00000000,B00000000,B01111100,B00000011,B11111110,B00000011,B11011111,B11110000,B01111111,B11000000,B01111011,B11111111,B11111111,B10000000, + B00000000,B00000000,B00010000,B00000011,B11111110,B00000000,B00011111,B11110000,B01111111,B11000000,B00000011,B11111111,B11111111,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111110,B00000000,B00011111,B11111111,B11111111,B11000000,B00000011,B11111111,B11111100,B00000000, + B00011111,B11111111,B10111111,B11111111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B11111011,B11111100,B00000000,B00000000, + B00000000,B00001111,B10111111,B11111111,B11111100,B00000111,B11111111,B11111111,B11111111,B00000000,B11111011,B11111100,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B01111111,B11111111,B01111111,B11111111,B11111111,B11111111,B10111111,B11111111,B11111111,B11111111,B11110111,B11111100,B00000000,B00000000, + B00000000,B00111111,B01111111,B11111111,B10000000,B00001111,B10111111,B11111111,B11000000,B00000001,B11110111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Statusscreen.h b/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Statusscreen.h new file mode 100644 index 0000000000..6d5ef5ee77 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "Creality/CR-10 Mini/MEEB-3DP" + +#define STATUS_LOGO_X 0 +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11000000,B00110011,B11111011,B11111101,B11111100, + B11100000,B01110111,B11111011,B11111101,B11111110, + B11100000,B01110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11010000,B10110110,B00000011,B00000001,B10000110, + B11011001,B10110111,B11111011,B11111001,B11111110, + B11011001,B10110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11000110,B00110111,B11111011,B11111101,B11111110, + B11000000,B00110011,B11111001,B11111101,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11100001,B11111110,B00001111,B11110000, + B00011111,B11110001,B11111111,B00001111,B11111000, + B00011000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001111,B11111000, + B00000000,B00110001,B10000001,B10001111,B11110000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00011000,B00110001,B10000001,B10001100,B00000000, + B00011111,B11110001,B11111111,B00001100,B00000000, + B00001111,B11100001,B11111110,B00001100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 S4/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10 S4/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..badbaf2280 --- /dev/null +++ b/config/examples/Creality/CR-10 S4/CrealityV1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10 S4/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 S4/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10 S4/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..265b59270b --- /dev/null +++ b/config/examples/Creality/CR-10 S4/CrealityV1/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Creality/CR-10 S4/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Bootscreen.h b/config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Bootscreen.h new file mode 100644 index 0000000000..774c35c364 --- /dev/null +++ b/config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Statusscreen.h b/config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Statusscreen.h new file mode 100644 index 0000000000..4beec4f8bb --- /dev/null +++ b/config/examples/Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Creality/CR-10 S5/BigTreeTech SKR Mini E3 1.2 with TFT35 E3 V3.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 S5/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10 S5/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..f70e499302 --- /dev/null +++ b/config/examples/Creality/CR-10 S5/CrealityV1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10 S5/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 S5/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10 S5/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..aa5d5b7507 --- /dev/null +++ b/config/examples/Creality/CR-10 S5/CrealityV1/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Creality/CR-10 S5/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Bootscreen.h b/config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..0d859b7b69 --- /dev/null +++ b/config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 S5/CrealityV2.2-BLTouch" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Statusscreen.h b/config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..b7b883c17a --- /dev/null +++ b/config/examples/Creality/CR-10 S5/CrealityV2.2-BLTouch/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 S5/CrealityV2.2-BLTouch" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 V2/_Bootscreen.h b/config/examples/Creality/CR-10 V2/_Bootscreen.h new file mode 100644 index 0000000000..5f9692aa35 --- /dev/null +++ b/config/examples/Creality/CR-10 V2/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10 V2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 V2/_Statusscreen.h b/config/examples/Creality/CR-10 V2/_Statusscreen.h new file mode 100644 index 0000000000..f6a875eb9b --- /dev/null +++ b/config/examples/Creality/CR-10 V2/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * 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 "Creality/CR-10 V2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_LOGO_Y 3 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B11111011,B11110000,B00000000,B00000000, + B00000001,B11011001,B10111000,B11100011,B10000000, + B00000011,B10001001,B10111001,B11100111,B11000000, + B00000011,B10000001,B11110000,B11000110,B11000000, + B00000011,B11000001,B10111000,B11000110,B11000000, + B00000001,B11111011,B10111000,B11100111,B11000000, + B00000000,B11111011,B11011111,B11110011,B10000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11001110,B00000000,B00000000, + B00000000,B00000001,B11001000,B11110000,B00000000, + B00000000,B00000001,B11011001,B11110000,B00000000, + B00000000,B00000000,B11110000,B01110000,B00000000, + B00000000,B00000000,B11110000,B01100000,B00000000, + B00000000,B00000000,B01100000,B11111000,B00000000, + B00000000,B00000000,B01100001,B11111000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10 V3/_Bootscreen.h b/config/examples/Creality/CR-10 V3/_Bootscreen.h new file mode 100644 index 0000000000..6e04010ca8 --- /dev/null +++ b/config/examples/Creality/CR-10 V3/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 V3" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 V3/_Statusscreen.h b/config/examples/Creality/CR-10 V3/_Statusscreen.h new file mode 100644 index 0000000000..504e53cc8e --- /dev/null +++ b/config/examples/Creality/CR-10 V3/_Statusscreen.h @@ -0,0 +1,71 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 V3" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00011100,B11110000,B00010001,B11000000, + B00100010,B10001000,B00110010,B00100000, + B00100000,B10001000,B00010010,B00100000, + B00100000,B11110011,B10010010,B00100000, + B00100000,B10100000,B00010010,B00100000, + B00100010,B10010000,B00010010,B00100000, + B00011100,B10001000,B00111001,B11000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B01000101,B11110000,B00000000, + B00000000,B01000100,B00100000,B00000000, + B00000000,B01000100,B01000000,B00000000, + B00000000,B01000100,B00100000,B00000000, + B00000000,B01000100,B00010000,B00000000, + B00000000,B00101001,B00010000,B00000000, + B00000000,B00010000,B11100000,B00000000, +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..678bfc70b3 --- /dev/null +++ b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..d7bf341ce2 --- /dev/null +++ b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Creality/CR-10/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..e41d463381 --- /dev/null +++ b/config/examples/Creality/CR-10/CrealityV1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..f5a653aea1 --- /dev/null +++ b/config/examples/Creality/CR-10/CrealityV1/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Creality/CR-10/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h new file mode 100644 index 0000000000..d0a6ad2eca --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h new file mode 100644 index 0000000000..3bea657b74 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 "Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000, + B10000000,B10001000,B00000010,B01000101,B00000000, + B10000000,B11110000,B00000010,B01000100,B10000000, + B10000000,B10100011,B11110010,B01000100,B01100000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B01000100,B10001000,B00000010,B01000101,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00011000,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..b80af4aa77 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10S/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..18c653f2a7 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 "Creality/CR-10S/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000, + B10000000,B10001000,B00000010,B01000101,B00000000, + B10000000,B11110000,B00000010,B01000100,B10000000, + B10000000,B10100011,B11110010,B01000100,B01100000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B01000100,B10001000,B00000010,B01000101,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00011000,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md new file mode 100644 index 0000000000..27defb882e --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md @@ -0,0 +1,6 @@ +## CR-10S with SKR Pro V1.2 + +With support for: + - TMC2209 Stepper Drivers + - BLTouch Probe + - Advanced Pause (`M600`) and Nozzle Park (`G27`) with Filament Change diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h new file mode 100644 index 0000000000..2787169717 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h @@ -0,0 +1,80 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10S/BigTreeTech SKR Pro v1.2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B00000000,B00000000, + B00000000,B00000000,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,B11000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11110000,B00000000, + B00000000,B00001111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111100,B00000000, + B00000000,B00011111,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111,B11111000,B00001111,B11111111,B11111111,B11111110,B00000000, + B00000000,B00111111,B11111111,B11111111,B11111101,B11111111,B11111111,B11111111,B11111110,B00011111,B11111111,B11111111,B11111111,B00000000, + B00000000,B01111111,B11111000,B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B00011111,B11111110,B00000111,B11111111,B10000000, + B00000000,B01111111,B11100000,B00000011,B11111110,B11111111,B11111111,B11111111,B11111111,B00111111,B11110000,B00000001,B11111111,B10000000, + B00000000,B11111111,B10000000,B00000000,B11111110,B01111111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000,B01111111,B11000000, + B00000001,B11111111,B00000000,B00000000,B01111110,B00111111,B11111111,B11111111,B11111111,B00111111,B10000000,B00000000,B00111111,B11100000, + B00000001,B11111110,B00000000,B00000000,B00111110,B00111111,B11111111,B11111111,B11111111,B00111111,B00000000,B00000000,B00011111,B11100000, + B00000011,B11111100,B00000000,B00000000,B00011111,B11000000,B00000000,B00000000,B01111110,B00111110,B00000000,B00000000,B00001111,B11110000, + B00000011,B11111000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000111,B11110000, + B00000011,B11111000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000111,B11110000, + B00000111,B11110000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00111100,B00111000,B00000000,B00000000,B00000011,B11111000, + B00000111,B11110000,B00000000,B00000000,B00000111,B11110000,B00000000,B00000000,B01111100,B00111000,B00000000,B00000000,B00000011,B11111000, + B00000111,B11110000,B00000000,B00000000,B00000111,B11110111,B11111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000011,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110011,B11111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110001,B11111111,B11111111,B11111100,B01111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B11111111,B11111111,B11111100,B01111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B11111111,B11111111,B11111100,B01111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B01111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B00111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B01111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00011111,B11000000,B00000000,B00000000,B00111110,B00111110,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00111111,B11000000,B00000000,B00000000,B01111111,B00111111,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B01111110,B00111111,B11111111,B11111111,B11111111,B00111111,B10000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B11111110,B01111111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000011,B11111110,B01111111,B11111111,B11111111,B11111111,B10111111,B11110000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B10111111,B11111100,B00000000,B00000001,B11111000, + B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00011111,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B11111101,B11111111,B11111111,B11111111,B11111110,B00001111,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111000,B00000011,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11111000 +}; diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h new file mode 100644 index 0000000000..0111682f3f --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10S/BigTreeTech SKR Pro v1.2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000, + B10000000,B10001000,B00000010,B01000101,B00000000, + B10000000,B11110000,B00000010,B01000100,B10000000, + B10000000,B10100011,B11110010,B01000100,B01100000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B01000100,B10001000,B00000010,B01000101,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00011000,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10S/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10S/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..280ab39cb5 --- /dev/null +++ b/config/examples/Creality/CR-10S/CrealityV1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 "Creality/CR-10S/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10S/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10S/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..17079f0320 --- /dev/null +++ b/config/examples/Creality/CR-10S/CrealityV1/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 "Creality/CR-10S/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000, + B10000000,B10001000,B00000010,B01000101,B00000000, + B10000000,B11110000,B00000010,B01000100,B10000000, + B10000000,B10100011,B11110010,B01000100,B01100000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B01000100,B10001000,B00000010,B01000101,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00011000,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-20 Pro/_Statusscreen.h b/config/examples/Creality/CR-20 Pro/_Statusscreen.h new file mode 100644 index 0000000000..54abd717f0 --- /dev/null +++ b/config/examples/Creality/CR-20 Pro/_Statusscreen.h @@ -0,0 +1,72 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00001111,B01111100,B00111000,B01110000, + B00010001,B00100010,B01000100,B10001000, + B00100000,B00100010,B01000100,B10001000, + B00100000,B00111100,B00000100,B10001000, + B00100000,B00101000,B00001000,B10001000, + B00100000,B00100100,B00010000,B10001000, + B00100000,B00100100,B00100000,B10001000, + B00010001,B00100010,B01000000,B10001000, + B00001110,B01110011,B01111100,B01110000, + B00000000,B00000000,B00000000,B00000000, + B00000111,B11000000,B00000000,B00000000, + B00000010,B00100000,B00000000,B00000000, + B00000010,B00100000,B00000000,B00000000, + B00000010,B00100110,B11000111,B00000000, + B00000011,B11000011,B00001000,B10000000, + B00000010,B00000010,B00001000,B10000000, + B00000010,B00000010,B00001000,B10000000, + B00000010,B00000010,B00001000,B10000000, + B00000111,B00000111,B10000111,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-30 PrintMill/_Bootscreen.h b/config/examples/Creality/CR-30 PrintMill/_Bootscreen.h new file mode 100644 index 0000000000..884806170f --- /dev/null +++ b/config/examples/Creality/CR-30 PrintMill/_Bootscreen.h @@ -0,0 +1,752 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/CR-30 PrintMill" + +/** + * Animated boot screen example + */ + +#define CUSTOM_BOOTSCREEN_BOTTOM_JUSTIFY +#define CUSTOM_BOOTSCREEN_ANIMATED + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11111100,B00111111,B10000111,B11111100,B11111111,B10011011,B00000011,B11111111,B11001110,B01110011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111110,B00111111,B11000111,B11111110,B11111111,B11011011,B10000011,B11111111,B11011111,B11111011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00110001,B11100110,B00000110,B11000000,B11011011,B11000011,B00001100,B00011111,B11111011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10110000,B01110110,B01111110,B11001111,B11011011,B11100011,B00001100,B00011101,B10111011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111111,B10110000,B00110110,B11111100,B11011111,B10011011,B01110011,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111111,B10110000,B00110110,B00000000,B11011100,B00011011,B00111011,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10110000,B01110110,B00000000,B11001110,B00011011,B00011111,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00110001,B11100110,B00000000,B11000111,B00011011,B00001111,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111110,B00111111,B11000110,B00000000,B11000011,B10011011,B00000111,B00001100,B00011001,B10011011,B01111111,B01111111,B00000000,B00000000, + B00000000,B00000001,B11111100,B00111111,B10000110,B00000000,B11000001,B11011011,B00000011,B00001100,B00011001,B10011011,B01111111,B01111111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00011111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B11111000, + B00011111,B10000011,B11110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B11000001,B11111000, + B00111001,B11000111,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B11100011,B10011100, + B00111000,B11000110,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011100,B01100011,B00011100, + B00110000,B00111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011100,B00001100, + B00111000,B11000110,B00111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B01100011,B00011100, + B00111001,B11000111,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B11100011,B10011100, + B00011111,B10000011,B11110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001111,B11000001,B11111000, + B00011111,B00000001,B11110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001111,B10000000,B11111000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B11000000, + B00000000,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B00000000 +}; + +#if DISABLED(CUSTOM_BOOTSCREEN_ANIMATED) + + #define CUSTOM_BOOTSCREEN_FRAME_TIME 500 // (ms) + +#else + + const unsigned char custom_start_bmp1[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00011111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B11111000, + B00011111,B10000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000001,B11111000, + B00111001,B11000111,B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,B11100011,B10011100, + B00111000,B11000110,B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,B01100011,B00011100, + B00110000,B00111000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00011100,B00001100, + B00111000,B11000110,B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,B01100011,B00011100, + B00111001,B11000111,B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,B11100011,B10011100, + B00011111,B10000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000001,B11111000, + B00011111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B11111000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp2[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00011111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B11111000, + B00011111,B10000011,B11110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B11000001,B11111000, + B00111001,B11000111,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B11100011,B10011100, + B00111000,B11000110,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011100,B01100011,B00011100, + B00110000,B00111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011100,B00001100, + B00111000,B11000110,B00111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B01100011,B00011100, + B00111001,B11000111,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B11100011,B10011100, + B00011111,B10000011,B11110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001111,B11000001,B11111000, + B00011111,B00000001,B11110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001111,B10000000,B11111000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp3[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10010000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00011000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111110,B00011100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000001,B11110000, + B00011100,B00000111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000011,B10111000, + B00011110,B00000110,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B00000011,B00111000, + B00111111,B00001100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011111,B10000110,B00011100, + B00111011,B10001000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011101,B11000100,B00011100, + B00110000,B11111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B01111100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B00011100,B00001100, + B00110000,B00111110,B00011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011111,B00001100, + B00111000,B00100011,B10111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00010001,B11011100, + B00111000,B01100001,B11111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00110000,B11111100, + B00011100,B11000000,B11110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B01100000,B01111000, + B00011101,B11000000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B11100000,B00111000, + B00001111,B10000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B11000000, + B00000000,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp4[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11000011,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100011,B11111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110011,B00011110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111011,B00000111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111011,B00000011,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111011,B00000011,B01000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111011,B00000111,B01100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110011,B00011110,B01100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100011,B11111100,B01100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11000011,B11111000,B01100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00001101,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000110,B11110000, + B00011100,B00011100,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00001110,B00111000, + B00011100,B00011000,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001110,B00001100,B00111000, + B00111000,B00011100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B00001110,B00011100, + B00111110,B10010000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011111,B01001000,B00011100, + B00110111,B10111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011011,B11011100,B00001100, + B00110001,B01111111,B10011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B10111111,B11001100, + B00110000,B00111011,B11011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011101,B11101100, + B00111000,B00010010,B11111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00001001,B01111100, + B00111000,B01100000,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00110000,B00011100, + B00011100,B00110000,B01110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B00011000,B00111000, + B00011100,B01100000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B00110000,B00111000, + B00001111,B01100001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10110000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11110101,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11000000, + B00000000,B11111111,B11110101,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp5[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100,B00111111,B10000111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111110,B00111111,B11000111,B11111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00110001,B11100110,B00000110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10110000,B01110110,B01111110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B10110000,B00110110,B11111100,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B10110000,B00110110,B00000000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10110000,B01110110,B00000000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00110001,B11100110,B00000000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111110,B00111111,B11000110,B00000000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100,B00111111,B10000110,B00000000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B11000000, + B00001111,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111011,B11110000, + B00001111,B00111001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10011100,B11110000, + B00011100,B00111000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00011100,B00111000, + B00011100,B00111000,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001110,B00011100,B00111000, + B00111000,B00110000,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B00011000,B00011100, + B00111000,B00100000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011100,B00010000,B00011100, + B00110111,B00111111,B11111001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011011,B10011111,B11111100, + B00111111,B10111011,B11111001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011111,B11011101,B11111100, + B00111111,B11111001,B11011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011111,B11111100,B11101100, + B00111000,B00001000,B00111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00000100,B00011100, + B00111000,B00011000,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00001100,B00011100, + B00011100,B00111000,B01110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B00011100,B00111000, + B00011100,B00111000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B00011100,B00111000, + B00001111,B00111001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10011100,B11110000, + B00001111,B11011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11101111,B11110000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp6[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100001,B11111100,B00111111,B11100111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11110001,B11111110,B00111111,B11110111,B11111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B10001111,B00110000,B00110110,B00000110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011101,B10000011,B10110011,B11110110,B01111110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111101,B10000001,B10110111,B11100110,B11111100,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111101,B10000001,B10110000,B00000110,B11100000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011101,B10000011,B10110000,B00000110,B01110000,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B10001111,B00110000,B00000110,B00111000,B11010000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11110001,B11111110,B00110000,B00000110,B00011100,B11011000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100001,B11111100,B00110000,B00000110,B00001110,B11011000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00001101,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000110,B11110000, + B00011100,B00001100,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000110,B00111000, + B00011100,B00011000,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001110,B00001100,B00111000, + B00111000,B00001100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B00000110,B00011100, + B00111110,B10010000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011111,B01001000,B00011100, + B00110111,B10111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011011,B11011100,B00001100, + B00110011,B11111101,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011001,B11111110,B10001100, + B00110000,B00111011,B11011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011101,B11101100, + B00111000,B00010010,B11111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00001001,B01111100, + B00111000,B01110000,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00111000,B00011100, + B00011100,B00110000,B01110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B00011000,B00111000, + B00011100,B01110000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B00111000,B00111000, + B00001111,B01100001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10110000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B11000000, + B00000000,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp7[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100001,B11111100,B00111111,B11100111,B11111100,B11011000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11110001,B11111110,B00111111,B11110111,B11111110,B11011100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B10001111,B00110000,B00110110,B00000110,B11011110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011101,B10000011,B10110011,B11110110,B01111110,B11011111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111101,B10000001,B10110111,B11100110,B11111100,B11011011,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111101,B10000001,B10110000,B00000110,B11100000,B11011001,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011101,B10000011,B10110000,B00000110,B01110000,B11011000,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B10001111,B00110000,B00000110,B00111000,B11011000,B01110000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11110001,B11111110,B00110000,B00000110,B00011100,B11011000,B00111000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100001,B11111100,B00110000,B00000110,B00001110,B11011000,B00011000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000001,B11110000, + B00011100,B00000111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000011,B10111000, + B00011110,B00000110,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B00000011,B00111000, + B00111111,B00001100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011111,B10000110,B00011100, + B00111011,B10001000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011101,B11000100,B00011100, + B00110000,B11111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B01111100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B00011100,B00001100, + B00110000,B00111110,B00011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011111,B00001100, + B00111000,B00100011,B10111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00010001,B11011100, + B00111000,B01100001,B11111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00110000,B11111100, + B00011100,B11000000,B11110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B01100000,B01111000, + B00011101,B11000000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B11100000,B00111000, + B00001111,B10000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11110101,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11000000, + B00000000,B11111111,B11110101,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp8[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B10000111,B11110000,B11111111,B10011111,B11110011,B01100000,B01111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11000111,B11111000,B11111111,B11011111,B11111011,B01110000,B01111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100110,B00111100,B11000000,B11011000,B00011011,B01111000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110110,B00001110,B11001111,B11011001,B11111011,B01111100,B01100001,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110110,B00000110,B11011111,B10011011,B11110011,B01101110,B01100001,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110110,B00000110,B11000000,B00011011,B10000011,B01100111,B01100001,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110110,B00001110,B11000000,B00011001,B11000011,B01100011,B11100001,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100110,B00111100,B11000000,B00011000,B11100011,B01100001,B11100001,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11000111,B11111000,B11000000,B00011000,B01110011,B01100000,B11100001,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B10000111,B11110000,B11000000,B00011000,B00111011,B01100000,B01100001,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00011111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B11111000, + B00011111,B10000011,B11110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B11000001,B11111000, + B00111001,B11000111,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B11100011,B10011100, + B00111000,B11000110,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011100,B01100011,B00011100, + B00110000,B00111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B00011100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011100,B00001100, + B00111000,B11000110,B00111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B01100011,B00011100, + B00111001,B11000111,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B11100011,B10011100, + B00011111,B10000011,B11110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001111,B11000001,B11111000, + B00011111,B00000001,B11110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001111,B10000000,B11111000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp9[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111110,B00011111,B11000011,B11111110,B01111111,B11001101,B10000001,B11111111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00011111,B11100011,B11111111,B01111111,B11101101,B11000001,B11111111,B11101100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10011000,B11110011,B00000011,B01100000,B01101101,B11100001,B10000110,B00001110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11011000,B00111011,B00111111,B01100111,B11101101,B11110001,B10000110,B00001110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11011000,B00011011,B01111110,B01101111,B11001101,B10111001,B10000110,B00001100,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11011000,B00011011,B00000000,B01101110,B00001101,B10011101,B10000110,B00001100,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11011000,B00111011,B00000000,B01100111,B00001101,B10001111,B10000110,B00001100,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10011000,B11110011,B00000000,B01100011,B10001101,B10000111,B10000110,B00001100,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00011111,B11100011,B00000000,B01100001,B11001101,B10000011,B10000110,B00001100,B11001000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111110,B00011111,B11000011,B00000000,B01100000,B11101101,B10000001,B10000110,B00001100,B11001100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000001,B11110000, + B00011100,B00000111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000011,B10111000, + B00011110,B00000110,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B00000011,B00111000, + B00111111,B00001100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011111,B10000110,B00011100, + B00111011,B10001000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011101,B11000100,B00011100, + B00110000,B11111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B01111100,B00001100, + B00110000,B00111000,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B00011100,B00001100, + B00110000,B00111110,B00011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011111,B00001100, + B00111000,B00100011,B10111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00010001,B11011100, + B00111000,B01100001,B11111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00110000,B11111100, + B00011100,B11000000,B11110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B01100000,B01111000, + B00011101,B11000000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B11100000,B00111000, + B00001111,B10000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B11000000, + B00000000,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp10[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B10000111,B11110000,B11111111,B10011111,B11110011,B01100000,B01111111,B11111001,B11001000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B11000111,B11111000,B11111111,B11011111,B11111011,B01110000,B01111111,B11111011,B11111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11100110,B00111100,B11000000,B11011000,B00011011,B01111000,B01100001,B10000011,B11111110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01110110,B00001110,B11001111,B11011001,B11111011,B01111100,B01100001,B10000011,B10110111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B11110110,B00000110,B11011111,B10011011,B11110011,B01101110,B01100001,B10000011,B00110011,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B11110110,B00000110,B11000000,B00011011,B10000011,B01100111,B01100001,B10000011,B00110011,B01000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01110110,B00001110,B11000000,B00011001,B11000011,B01100011,B11100001,B10000011,B00110011,B01100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11100110,B00111100,B11000000,B00011000,B11100011,B01100001,B11100001,B10000011,B00110011,B01100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B11000111,B11111000,B11000000,B00011000,B01110011,B01100000,B11100001,B10000011,B00110011,B01101000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B10000111,B11110000,B11000000,B00011000,B00111011,B01100000,B01100001,B10000011,B00110011,B01101100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11010111,B11111111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00001101,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000110,B11110000, + B00011100,B00011100,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00001110,B00111000, + B00011100,B00011000,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001110,B00001100,B00111000, + B00111000,B00011100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B00001110,B00011100, + B00111110,B10010000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011111,B01001000,B00011100, + B00110111,B10111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011011,B11011100,B00001100, + B00110001,B01111111,B10011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011000,B10111111,B11001100, + B00110000,B00111011,B11011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011101,B11101100, + B00111000,B00010010,B11111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00001001,B01111100, + B00111000,B01100000,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00110000,B00011100, + B00011100,B00110000,B01110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B00011000,B00111000, + B00011100,B01100000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B00110000,B00111000, + B00001111,B01100001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10110000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11110101,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11000000, + B00000000,B11111111,B11110101,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp11[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11111000,B01111111,B00001111,B11111001,B11111111,B00110110,B00000111,B11111111,B10011100,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11111100,B01111111,B10001111,B11111101,B11111111,B10110111,B00000111,B11111111,B10111111,B11110100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00001110,B01100011,B11001100,B00001101,B10000001,B10110111,B10000110,B00011000,B00111111,B11110110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000111,B01100000,B11101100,B11111101,B10011111,B10110111,B11000110,B00011000,B00111011,B01110110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11111111,B01100000,B01101101,B11111001,B10111111,B00110110,B11100110,B00011000,B00110011,B00110110,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11111111,B01100000,B01101100,B00000001,B10111000,B00110110,B01110110,B00011000,B00110011,B00110110,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000111,B01100000,B11101100,B00000001,B10011100,B00110110,B00111110,B00011000,B00110011,B00110110,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00001110,B01100011,B11001100,B00000001,B10001110,B00110110,B00011110,B00011000,B00110011,B00110110,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11111100,B01111111,B10001100,B00000001,B10000111,B00110110,B00001110,B00011000,B00110011,B00110110,B11111000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11111000,B01111111,B00001100,B00000001,B10000011,B10110110,B00000110,B00011000,B00110011,B00110110,B11111100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111101,B01111111,B11111111,B11111111,B11000000, + B00001111,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111011,B11110000, + B00001111,B00111001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10011100,B11110000, + B00011100,B00111000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00011100,B00111000, + B00011100,B00111000,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001110,B00011100,B00111000, + B00111000,B00110000,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B00011000,B00011100, + B00111000,B00100000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011100,B00010000,B00011100, + B00110111,B00111111,B11111001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011011,B10011111,B11111100, + B00111111,B10111011,B11111001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011111,B11011101,B11111100, + B00111111,B11111001,B11011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011111,B11111100,B11101100, + B00111000,B00001000,B00111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00000100,B00011100, + B00111000,B00011000,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00001100,B00011100, + B00011100,B00111000,B01110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B00011100,B00111000, + B00011100,B00111000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B00011100,B00111000, + B00001111,B00111001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10011100,B11110000, + B00001111,B11011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11101111,B11110000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp12[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11111100,B00111111,B10000111,B11111100,B11111111,B10011011,B00000011,B11111111,B11001110,B01110011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111110,B00111111,B11000111,B11111110,B11111111,B11011011,B10000011,B11111111,B11011111,B11111011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00110001,B11100110,B00000110,B11000000,B11011011,B11000011,B00001100,B00011111,B11111011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10110000,B01110110,B01111110,B11001111,B11011011,B11100011,B00001100,B00011101,B10111011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111111,B10110000,B00110110,B11111100,B11011111,B10011011,B01110011,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111111,B10110000,B00110110,B00000000,B11011100,B00011011,B00111011,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10110000,B01110110,B00000000,B11001110,B00011011,B00011111,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00110001,B11100110,B00000000,B11000111,B00011011,B00001111,B00001100,B00011001,B10011011,B01100000,B01100000,B00000000,B00000000, + B00000000,B00000001,B11111110,B00111111,B11000110,B00000000,B11000011,B10011011,B00000111,B00001100,B00011001,B10011011,B01111111,B01111111,B00000000,B00000000, + B00000000,B00000001,B11111100,B00111111,B10000110,B00000000,B11000001,B11011011,B00000011,B00001100,B00011001,B10011011,B01111111,B01111111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00001101,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000110,B11110000, + B00011100,B00001100,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000110,B00111000, + B00011100,B00011000,B01110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001110,B00001100,B00111000, + B00111000,B00001100,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B00000110,B00011100, + B00111110,B10010000,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011111,B01001000,B00011100, + B00110111,B10111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011011,B11011100,B00001100, + B00110011,B11111101,B00011001,B10000000,B00011011,B11111101,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B01111000,B00011001,B11111110,B10001100, + B00110000,B00111011,B11011001,B10000000,B00011001,B11111001,B11111111,B11000011,B00011000,B01100000,B00110000,B01100000,B00110000,B00011000,B00011101,B11101100, + B00111000,B00010010,B11111001,B11000000,B00011000,B11100001,B11000000,B00000110,B00001100,B01100000,B00110000,B01100000,B00110000,B00011100,B00001001,B01111100, + B00111000,B01110000,B00111000,B11110000,B00011000,B01110000,B11100000,B00001100,B00000110,B01100000,B00110000,B01100000,B00110000,B00011100,B00111000,B00011100, + B00011100,B00110000,B01110000,B01111111,B11011000,B00111000,B01111111,B11001100,B11111110,B01111111,B10110000,B01100000,B00110000,B00001110,B00011000,B00111000, + B00011100,B01110000,B01110000,B00111111,B11011000,B00011100,B00111111,B11011001,B11111111,B01111111,B10110000,B01100000,B00110000,B00001110,B00111000,B00111000, + B00001111,B01100001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10110000,B11110000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00000011,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B11000000, + B00000000,B11111111,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11111111,B00000000 + }; + + const unsigned char custom_start_bmp14[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B11000001,B11111100,B00011111,B11110001,B11111111,B00011011,B00000001,B11111111,B11110011,B10011110,B01101100,B00000110,B00000000,B00000000, + B00000000,B00011111,B11100001,B11111110,B00011111,B11111001,B11111111,B10011011,B10000001,B11111111,B11110111,B11111111,B01101100,B00000110,B00000000,B00000000, + B00000000,B00000000,B01110001,B10001111,B00011000,B00011001,B10000001,B10011011,B11000001,B10000110,B00000111,B11111111,B01101100,B00000110,B00000000,B00000000, + B00000000,B00000000,B00111001,B10000011,B10011001,B11111001,B10011111,B10011011,B11100001,B10000110,B00000111,B01101111,B01101100,B00000110,B00000000,B00000000, + B00000000,B00011111,B11111001,B10000001,B10011011,B11110001,B10111111,B00011011,B01110001,B10000110,B00000110,B01100011,B01101100,B00000110,B00000000,B00000000, + B00000000,B00011111,B11111001,B10000001,B10011000,B00000001,B10111000,B00011011,B00111001,B10000110,B00000110,B01100011,B01101100,B00000110,B00000000,B00000000, + B00000000,B00000000,B00111001,B10000001,B10011000,B00000001,B10011100,B00011011,B00011101,B10000110,B00000110,B01100011,B01101100,B00000110,B00000000,B00000000, + B00000000,B00000000,B01110001,B10000011,B10011000,B00000001,B10001110,B00011011,B00001111,B10000110,B00000110,B01100011,B01101100,B00000110,B00000000,B00000000, + B00000000,B00000000,B01110001,B10001111,B00011000,B00000001,B10001110,B00011011,B00000111,B10000110,B00000110,B01100011,B01101100,B00000110,B00000000,B00000000, + B00000000,B00011111,B11100001,B11111110,B00011000,B00000001,B10000111,B00011011,B00000011,B10000110,B00000110,B01100011,B01101111,B11110111,B11110000,B00000000, + B00000000,B00011111,B11000001,B11111100,B00011000,B00000001,B10000011,B10011011,B00000001,B10000110,B00000110,B01100011,B01101111,B11110111,B11110000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B00000000, + B00000011,B11111111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B01011111,B11111111,B11000000, + B00001111,B11000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100011,B11110000, + B00001111,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B11110000, + B00011111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B11111000, + B00011111,B10000011,B11110000,B00111111,B11011111,B11111000,B00111111,B11000000,B01000000,B01100000,B00110111,B11111111,B00000011,B10001111,B11000001,B11111000, + B00111001,B11000111,B00111000,B01111111,B11011111,B11111100,B01111111,B11000000,B11100000,B01100000,B00110111,B11111111,B10000111,B00011100,B11100011,B10011100, + B00111000,B11000110,B00111000,B11110000,B00011000,B00001100,B11100000,B00000000,B11100000,B01100000,B00110000,B01100001,B11001110,B00011100,B01100011,B00011100, + B00110000,B00111000,B00011001,B11000000,B00011000,B00001101,B11000000,B00000001,B10110000,B01100000,B00110000,B01100000,B11111100,B00011000,B00011100,B00001100 + }; + + const unsigned char custom_start_bmp15[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111000,B00111111,B11100001,B11111111,B11000111,B11111111,B00110011,B00000001,B11111111,B11111100,B11110011,B11001110,B11000000,B00110000,B00000000, + B00000111,B11111100,B00111111,B11110001,B11111111,B11110111,B11111111,B10110011,B10000001,B11111111,B11111101,B11111111,B11101110,B11000000,B00110000,B00000000, + B00000000,B00001111,B00111000,B11111001,B11000000,B01110110,B00000011,B10110011,B11000001,B11000001,B10000001,B11111111,B11101110,B11000000,B00110000,B00000000, + B00000000,B00001111,B00111000,B11111001,B11000000,B01110110,B00000011,B10110011,B11100001,B11000001,B10000001,B11111111,B11101110,B11000000,B00110000,B00000000, + B00000000,B00000111,B10111000,B00011101,B11001111,B11110110,B01111111,B10110011,B11110001,B11000001,B10000001,B11101100,B11101110,B11000000,B00110000,B00000000, + B00000111,B11111111,B10111000,B00001101,B11011111,B11000110,B11111111,B00110011,B01111001,B11000001,B10000001,B11001100,B01101110,B11000000,B00110000,B00000000, + B00000111,B11111111,B10111000,B00001101,B11000000,B00000110,B11110000,B00110011,B00011101,B11000001,B10000001,B11001100,B01101110,B11000000,B00110000,B00000000, + B00000000,B00000111,B10111000,B00011101,B11000000,B00000110,B00111000,B00110011,B00001111,B11000001,B10000001,B11001100,B01101110,B11000000,B00110000,B00000000, + B00000000,B00001111,B00111000,B11111001,B11000000,B00000110,B00011100,B00110011,B00000111,B11000001,B10000001,B11001100,B01101110,B11000000,B00110000,B00000000, + B00000000,B00001111,B00111000,B11111001,B11000000,B00000110,B00011100,B00110011,B00000111,B11000001,B10000001,B11001100,B01101110,B11000000,B00110000,B00000000, + B00000111,B11111100,B00111111,B11110001,B11000000,B00000110,B00001111,B00110011,B00000011,B11000001,B10000001,B11001100,B01101110,B11111111,B10111111,B11000000, + B00000111,B11111000,B00111111,B11100001,B11000000,B00000110,B00000111,B10110011,B00000001,B11000001,B10000001,B11001100,B01101110,B11111111,B10111111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 + }; + + const unsigned char custom_start_bmp16[] PROGMEM = { + B01111111,B11100001,B11111111,B10000111,B11111111,B00011111,B11111100,B01110011,B10000001,B11111111,B11111110,B00111110,B00111110,B00111001,B11000000,B11100000, + B01111111,B11110001,B11111111,B11000111,B11111111,B10011111,B11111110,B01110011,B10000001,B11111111,B11111110,B01111111,B11111111,B00111001,B11000000,B11100000, + B00000000,B11111001,B11000011,B11100111,B11111111,B10011111,B11111110,B01110011,B11000001,B11111111,B11111110,B01111111,B11111111,B00111001,B11000000,B11100000, + B00000000,B01111001,B11000001,B11100111,B00000001,B10011100,B00000110,B01110011,B11100001,B11000001,B11000000,B01111111,B11111111,B00111001,B11000000,B11100000, + B00000000,B01111001,B11000000,B11100111,B00000001,B10011100,B00000110,B01110011,B11110001,B11000001,B11000000,B01111001,B11001111,B00111001,B11000000,B11100000, + B01111111,B11111001,B11000000,B11100111,B00111111,B10011100,B11111110,B01110011,B11111001,B11000001,B11000000,B01110001,B11000111,B00111001,B11000000,B11100000, + B01111111,B11111001,B11000000,B11100111,B01111111,B10011101,B11111110,B01110011,B10111101,B11000001,B11000000,B01110001,B11000111,B00111001,B11000000,B11100000, + B01111111,B11111001,B11000000,B11100111,B01111111,B00011101,B11111100,B01110011,B10011111,B11000001,B11000000,B01110001,B11000111,B00111001,B11000000,B11100000, + B00000000,B01111001,B11000000,B11100111,B00000000,B00011100,B11110000,B01110011,B10001111,B11000001,B11000000,B01110001,B11000111,B00111001,B11000000,B11100000, + B00000000,B01111001,B11000001,B11100111,B00000000,B00011100,B01111000,B01110011,B10000111,B11000001,B11000000,B01110001,B11000111,B00111001,B11000000,B11100000, + B00000000,B11111001,B11000011,B11100111,B00000000,B00011100,B00111100,B01110011,B10000011,B11000001,B11000000,B01110001,B11000111,B00111001,B11111100,B11111110, + B01111111,B11110001,B11111111,B11000111,B00000000,B00011100,B00011110,B01110011,B10000001,B11000001,B11000000,B01110001,B11000111,B00111001,B11111100,B11111110, + B01111111,B11100001,B11111111,B10000111,B00000000,B00011100,B00001110,B01110011,B10000001,B11000001,B11000000,B01110001,B11000111,B00111001,B11111100,B11111110, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 + }; + + #define CUSTOM_BOOTSCREEN_TIME_PER_FRAME + + static const boot_frame_t boot_frame_0 PROGMEM = { custom_start_bmp1, 200 }; + static const boot_frame_t boot_frame_1 PROGMEM = { custom_start_bmp2, 150 }; + static const boot_frame_t boot_frame_2 PROGMEM = { custom_start_bmp3, 150 }; + static const boot_frame_t boot_frame_3 PROGMEM = { custom_start_bmp4, 150 }; + static const boot_frame_t boot_frame_4 PROGMEM = { custom_start_bmp5, 150 }; + static const boot_frame_t boot_frame_5 PROGMEM = { custom_start_bmp6, 150 }; + static const boot_frame_t boot_frame_6 PROGMEM = { custom_start_bmp7, 150 }; + static const boot_frame_t boot_frame_7 PROGMEM = { custom_start_bmp8, 150 }; + static const boot_frame_t boot_frame_8 PROGMEM = { custom_start_bmp9, 150 }; + static const boot_frame_t boot_frame_9 PROGMEM = { custom_start_bmp10, 150 }; + static const boot_frame_t boot_frame_10 PROGMEM = { custom_start_bmp11, 150 }; + static const boot_frame_t boot_frame_11 PROGMEM = { custom_start_bmp12, 150 }; + static const boot_frame_t boot_frame_12 PROGMEM = { custom_start_bmp, 1000 }; + static const boot_frame_t boot_frame_13 PROGMEM = { custom_start_bmp14, 150 }; + static const boot_frame_t boot_frame_14 PROGMEM = { custom_start_bmp15, 150 }; + static const boot_frame_t boot_frame_15 PROGMEM = { custom_start_bmp16, 1000 }; + + static const boot_frame_t * const custom_bootscreen_animation[] PROGMEM = { + &boot_frame_0, &boot_frame_1, &boot_frame_2, &boot_frame_3, &boot_frame_4, + &boot_frame_5, &boot_frame_6, &boot_frame_7, &boot_frame_8, &boot_frame_9, + &boot_frame_10, &boot_frame_11, &boot_frame_12, &boot_frame_13, &boot_frame_14, &boot_frame_15 + }; + +#endif diff --git a/config/examples/Creality/CR-30 PrintMill/_Statusscreen.h b/config/examples/Creality/CR-30 PrintMill/_Statusscreen.h new file mode 100644 index 0000000000..97c0e30023 --- /dev/null +++ b/config/examples/Creality/CR-30 PrintMill/_Statusscreen.h @@ -0,0 +1,55 @@ +/** + * 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 . + * + */ + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 56x19 C/C++ data + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-30 PrintMill" + +#define STATUS_SCREEN_X 64 +#define STATUS_LOGO_WIDTH 48 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00111001,B11000000,B00000000,B00000000, + B00000000,B00000000,B01000101,B00100000,B00000000,B00000000, + B00000000,B00000000,B00000101,B00010000,B00000000,B00000000, + B00000000,B00000000,B00000101,B00010000,B00000000,B00000000, + B00000000,B00000000,B00011001,B00010000,B00000000,B00000000, + B00000000,B00000000,B00000101,B00010000,B00000000,B00000000, + B00000000,B00000000,B00000101,B00010000,B00000000,B00000000, + B00000000,B00000000,B01000101,B00100000,B00000000,B00000000, + B00000000,B00000000,B00111001,B11000000,B00000000,B00000000, + B00111100,B00000000,B00000000,B00011000,B11001001,B10011000, + B00100010,B00000010,B00000000,B10011000,B11000000,B10001000, + B00100010,B00000000,B00000000,B10011000,B11000000,B10001000, + B00100010,B10110110,B01011001,B11010101,B01011000,B10001000, + B00111100,B11000010,B01100100,B10010101,B01001000,B10001000, + B00100000,B10000010,B01000100,B10010101,B01001000,B10001000, + B00100000,B10000010,B01000100,B10010010,B01001000,B10001000, + B00100000,B10000010,B01000100,B10010010,B01001000,B10001000, + B00100000,B10000111,B01000100,B01010010,B01011101,B11011100 +}; diff --git a/config/examples/Creality/Ender-2 Pro/CrealityV423/README.md b/config/examples/Creality/Ender-2 Pro/CrealityV423/README.md new file mode 100644 index 0000000000..d1f786b8e1 --- /dev/null +++ b/config/examples/Creality/Ender-2 Pro/CrealityV423/README.md @@ -0,0 +1,3 @@ +# Ender-2 Pro + +The Creality3D Ender-2 Pro was released in December 2021 sporting a 32-bit Creality Silent board labeled as version 4.2.3. This board is a bit mysterious as it is completely absent from Creality's documentation. It differs only slightly from board version 4.2.2 with the Bed Heater pin exchanged with one of the Encoder pins. diff --git a/config/examples/Creality/Ender-2 Pro/CrealityV423/_Bootscreen.h b/config/examples/Creality/Ender-2 Pro/CrealityV423/_Bootscreen.h new file mode 100644 index 0000000000..9dd82d58c1 --- /dev/null +++ b/config/examples/Creality/Ender-2 Pro/CrealityV423/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-2 Pro/CrealityV423" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-2 Pro/CrealityV423/_Statusscreen.h b/config/examples/Creality/Ender-2 Pro/CrealityV423/_Statusscreen.h new file mode 100644 index 0000000000..7ada9c25aa --- /dev/null +++ b/config/examples/Creality/Ender-2 Pro/CrealityV423/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-2 Pro/CrealityV423" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00011000, + B01001000,B00000000,B10000000,B00000000,B00100100, + B01000011,B11000011,B10001100,B11010000,B00000100, + B01110001,B00100100,B10010010,B01100111,B11001000, + B01000001,B00100100,B10011110,B01000000,B00010000, + B01001001,B00100100,B10010000,B01000000,B00100000, + B11111011,B10110011,B11001110,B11100000,B00111100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-2/README.md b/config/examples/Creality/Ender-2/README.md new file mode 100644 index 0000000000..3c3fe6578a --- /dev/null +++ b/config/examples/Creality/Ender-2/README.md @@ -0,0 +1,33 @@ +# Creality Ender Support + +This configuration is based on the unpublished firmware from Creality. It is **not** the authoritative source, but has been carefully re-built by looking at their firmware and inferring the base version and configuration they used. The basis is the firmware version from "Jul 31 2017 10:16:30". It is based on Marlin 1.0.1, because + +* 1.0.0 had very different serial output in `setup()` and overall code structure. +* 1.0.2 changed the `VERSION_STRING` to include a leading space, and `lcd_init` uses `SET_INPUT` instead of `pinMode`. + +Configurations were found by seeing what code was compiled into the firmware, and constants used there. + +For U8Glib, at least version 1.14 and at most 1.17 is used, because + +* 1.12 didn't have the extra speed argument to u8g_InitCom. +* 1.13 didn't have the soft reset instruction for UC1701 initialization. +* 1.18 has a new directory structure. + +## Bitmaps + +The bootscreen and custom status screens come from Creality's firmware. + +## Creality Ender-2 firmware status + +The firmware source code has been published on 2018/07/10. +It is based on Marlin 1.1. The source code and .hex binaries for all printers (including Ender-2) can be obtained from: +https://www.creality3d.cn/download/firmware_c0001 + +And repositories for CR-10S and Ender-3 can be found here: +https://github.com/Creality3DPrinting + +The configuration files have been verified to match the original configuration, but further investigation is needed to ensure there aren't any extra changes in the source code. + +## Ender-2 specific changelog: + +* 2018/10/08 - Updated BED_MAXTEMP to 75 to match the original Creality Ender-2 Firmware (which is now open source) diff --git a/config/examples/Creality/Ender-2/_Bootscreen.h b/config/examples/Creality/Ender-2/_Bootscreen.h new file mode 100644 index 0000000000..eca4057298 --- /dev/null +++ b/config/examples/Creality/Ender-2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-2/_Statusscreen.h b/config/examples/Creality/Ender-2/_Statusscreen.h new file mode 100644 index 0000000000..cd62bdf626 --- /dev/null +++ b/config/examples/Creality/Ender-2/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 "Creality/Ender-2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00000110,B00000000,B00000000, + B11111110,B00000000,B00000010,B00000000,B00000000, + B01000010,B00000000,B00000010,B00000000,B00000000, + B01001000,B00000000,B00000010,B00000000,B00000000, + B01001000,B11011100,B00111110,B00111100,B11101110, + B01111000,B01100010,B01000010,B01000010,B00110010, + B01001000,B01000010,B01000010,B01000010,B00100000, + B01001000,B01000010,B01000010,B01111110,B00100000, + B01000000,B01000010,B01000010,B01000000,B00100000, + B01000010,B01000010,B01000110,B01000010,B00100000, + B11111110,B11100111,B00111011,B00111100,B11111000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Max/_Bootscreen.h b/config/examples/Creality/Ender-3 Max/_Bootscreen.h new file mode 100644 index 0000000000..d5484fb4c8 --- /dev/null +++ b/config/examples/Creality/Ender-3 Max/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 Max" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Max/_Statusscreen.h b/config/examples/Creality/Ender-3 Max/_Statusscreen.h new file mode 100644 index 0000000000..8dba593a2f --- /dev/null +++ b/config/examples/Creality/Ender-3 Max/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 Max" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md new file mode 100644 index 0000000000..1848f94a2c --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md @@ -0,0 +1,16 @@ +# Ender 3 Pro with SKR 1.4 Turbo + TMC2209 + +Configurations for Ender 3 Pro with the following options enabled: + + - Motherboard: BigTreeTech SKR 1.4 Turbo + - Drivers: TMC2209 (sensorless homing enabled) + - BLTouch Probe plugged into in the PROBE port - ABL Bilinear 5x5 + - Automatic Filament Load / Unload + - Measure the full filament path up to the nozzle and update `FILAMENT_CHANGE_UNLOAD_LENGTH` and `FILAMENT_CHANGE_FAST_LOAD_LENGTH`. + - Linear Advance Extrusion (Do a calibration for your correct values) + - TFT 35V3 Controller with two options: + - EXP3 + TFT cables using `CR10_STOCKDISPLAY`, or + - EXP1/2 with `REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER` + - Extruder Auto Fan at 50C (Fan connected to Pin P2_04 HE1) + +I may have some other options enabled that I don't remember so be careful to check everything that corresponds to your machine. diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h new file mode 100644 index 0000000000..e4eed7e26f --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h new file mode 100644 index 0000000000..77d6a71df3 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h new file mode 100644 index 0000000000..42cbcb3f8c --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h new file mode 100644 index 0000000000..f9a4e81301 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..a71a3f4aab --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..c6ee0b6003 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..bb8191e8a4 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..965ec3a476 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..3447217d28 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV1/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3 Pro/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..6443164263 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV1/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Creality/Ender-3 Pro/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV422/README.md b/config/examples/Creality/Ender-3 Pro/CrealityV422/README.md new file mode 100644 index 0000000000..ec0e54e640 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV422/README.md @@ -0,0 +1,11 @@ +# Ender 3 Pro "V1.5" + +This is a surprise upgrade to the Ender 3 Pro that some customers began to receive around mid-July of 2020. No documentation or support page exists for this variant. It appears to be an Ender 3 Pro with the 32-bit Ender 3 V2 board and the stock Ender 3 Pro display. To see which version you have, examine the control board. The newer board is Creality v4.2.2. + +This configuration is very similar to the Ender 3 V2 config except that the CR-10 stock display is enabled. + +## Flashing Firmware + +The bootloader which handles flashing new firmware on this board remembers the last filename you used. + +Therefore, to flash the compiled firmware binary onto the board you must give the "`firmware.bin`" file on the SD card a unique name, different from the name of the previous firmware file, or you will be greeted with a blank screen on the next boot. diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV422/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV422/_Bootscreen.h new file mode 100644 index 0000000000..8a68e87b22 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV422/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3 Pro/CrealityV422" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV422/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV422/_Statusscreen.h new file mode 100644 index 0000000000..b1a6f8473d --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV422/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Creality/Ender-3 Pro/CrealityV422" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..3e541de8e1 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV427/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3 Pro/CrealityV427" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..d12db4bf7d --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV427/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Creality/Ender-3 Pro/CrealityV427" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 V2/DWIN_SET/0T5UIC1.HZK b/config/examples/Creality/Ender-3 V2/DWIN_SET/0T5UIC1.HZK new file mode 100644 index 0000000000000000000000000000000000000000..61e6ec26dbec02553b08606021cbc48f1d27d79d GIT binary patch literal 125440 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 literal 0 HcmV?d00001 diff --git a/config/examples/Creality/Ender-3 V2/DWIN_SET/0_start.jpg b/config/examples/Creality/Ender-3 V2/DWIN_SET/0_start.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc5e50be0aa4d5c5992440fc3141f28e824cc427 GIT binary patch literal 14172 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 P(mj=tiDqdU!p!_X|2Xq; literal 0 HcmV?d00001 diff --git a/config/examples/Creality/Ender-3 V2/DWIN_SET/1_English.jpg b/config/examples/Creality/Ender-3 V2/DWIN_SET/1_English.jpg new file mode 100644 index 0000000000000000000000000000000000000000..09e50802955829ba8c62b07b6eccf2c9cc75cce0 GIT binary patch literal 32581 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%0DRneM& za*EbomUN2VuKFkue*vY|=*KMVg|iQ)BB>W6X@pI6eJaPX#7`yUKUTCET4((giSKHY zYjA%l3ovj~OVb4Y$!o_fG_g(Nl;BOL^ZOyJlxp`A^g`+}@V>O%UR39jU21*5D1(Ut z--u6;CZL2h2rV*`aXhut!f^(=3H8(8Z856H)a-ndDI7_^e=A;v=2}iny81eLb@SLB zlnIK7?_hih>Z6u%2y3wj7C_I9j=^)HiSq0Pvj*7Q_JKh1K=#HmbT#lfs?@Oo5k!vQOHi^hX>t6xdwDUtCZvA z4FVD%ogg!q#{Uydr`unEHM}Y#%{aaDWO6pB-Js1DtPfi1>~AiyY}SclYVM3n_i{8_ zMhY4epoaqCudzqT9#l_NvkJ8**V;tDYK=4 zkjN0SSQn*`A(VJOz2V(I9frvwtxQJ?#eBzsRpSO5CY$0r%8qux?Is1fUj<4GIGD^X zp9F`it7HBY8{Bp3uBCRrR_Rg>;G$sjW6oLAs%K;EtAA$wa2@xO4q+e3qxxAh@71Mv zc5-IuOSCqm@@NqX%UCK5xGjYYi`-A?Ok-jCDyGf|Ix{x;I2frAeucTUFVQ3h+h>+u zo*N8uEx2_&aEP`S*+~hjQjrc!xHorv+Vv^aV}}TsDD)irT^NhJ;!yMR;YtGr6gEtD z2eJ97P4K-I`LM)0cEiN)z2j}JJ#n0|o#fVYU881P0TdJ^+iGoXziCrUaO_a1`+YcQ9y#F-&o`AknQUg@*nwV4@*c z_An=_m8;?GN%?TGzN>#bbr+k3oxM2KVCqMTtKtM-a&F=MqN5dW;{MMJM)A`wODk<` z)VS8P1C;H@&I2|QdrP+f_vvMrqU&MmTS7u`ZpefnvE2D@I1jZY!XxzM*s5mb5{tYn zGW$yCTf^%|ZcUTikCAa>QtOF$R|f=ZPCifb#UN3wi6H}?8QCIv`{^t;iNluM#|b!9 z-}OX5Lq^>Dt7qg~PkI(NxWf^wOZUi`X+8W2i8c_4rc+k7d%C~thrPYCI|S3cbb5@q z^i8}lwcnI6Y=kG$IYU%k$4G2M(kAOMR5SV51!)|sv%Wn7A5Zc@PE-nmA$%hmR8PbS{CdDfHon0o^<%&YY@aWZ+gyoDZa^;zjG&wEqY!TC+}F5*}vO;Wxzp-6%` zp}X^qfm3WJHAM9e)O-T<+}jf8)!h6K>=WXD5n*kAGzuS^C+VAJ=qpJBds(UybIn8b z=y`|dRhr_Gmf!h^`~`I0^Tsq6QR+fv_-5cxxM5|hw3D<$0{WZpUc<#=qXw#KVLN~q(4Gf~Y(d)%WETtDedsQ{n$u)Z z8et@Ff`ldV4o!C^B1TJrn~P&R48diV0UeR;GE?HI+g3ot)gR8Of15`BPS-Nb?8)*`VH zFOBRy3Hi+y1FS*kGk`m$+jpE)@$TB5@0icJ`#8kG`HA34@mi#-b>X-Z$IF7(*Th?p z%pBJ{ha`iwruIe1P-k)SrHLqY0>x5Q)x=(+F-1~Numri`R~I?SJy?_5l?m3x@^I^x zu5t3)D zV^~~avp~-;rOk<-Hc7KuM6c(xxgdA&7l5=vGMFC0?JEIE15hsyjfBPCYuhF^HK*Po zrc{w3z;T9AGLehWKAel^V+rH7=DWoZwjXi4n$1dSF^lU|9Vf#MTd`)*qrb1gD=Rf0 z?Y%eSQnFN8R7Z0pm{%ja=b;)9duNZ0S;sF+wSzAMI@a;kyv$FsrVUstzr7YkmT8)y z_Jfs@&M1xmxuDpwEgH(^^v0emwPe6b$QC$iPt%B;sz$AY&)<(-7V@uKY-Cch!N1#%Ih zO4#4x+EQyriSlqLLtV*YKP6N^M5eUu`>T0}3H2X}`D94tR_b)5Li@bdkrjUE`uZQU zBMMa2RS9H?q!~L_bPdu<5vfSx2kT*pYhjYVP7FhMsgwgM`E_qhiOZEXBn-`QgVmi~ zSOgAU&!=2s#1+zsXk40sg|maLDgCy12;4C_=oi>CW(Y)zq9dbvK1reyA%2S7YsBF- z_x{0FwJvcd)Gr8!DyJkaF#5m60thR!T={LrXg|HeXPh5zfh5`N1s7(&CFR$Fm#~83 z*KzzpZ4%k~bmNNmb*~elaCxU$o={K}L3$>@R4O?nVKr3m(v!R_zn*xud2NA+>acY+0>D3l6`meqQS0>9vZ=CQuN#Me-3;+GY|gvD*s; z{Mi=wXd&h0sZt6ql z>XFGLZ5+>TQE{dW`YCKRRt;>SDZh+hgA3^@%Cr7RU-1KxZvNCHrexik4v&6rft9Tu z`*&r-&Y-%U*H3#I9)7JVu?2vyXz2SU>M>vN-c~YwZ(d`U%LLn9pGwv5S8?=UQE?Xf zZ^1)`?-%o`&anGt2kM&YSTRgrl!eiJmH!vst{Y}eveLJrZ@k`*t?>2D&y)~K@T8eK z<(c7%35TKgxRKLg(7T%raHjg=<#%@4mK1hlnB}iR+3%Y=tk0zPI|a(e!`y-c*X>bC zC*!K|wW75v!@Aj=gcp~ord5p~`=J|}-J#FP*LUIeWs}j?mA6j(JMZquMr$yh7^2>E z$7zv$a>F8j6O%}BAO9EdwA<-RS#9VEbM~tU*tFi!C;3iD{8jj?u%7X@B}@^i2?j7$ zxDYXSmj;STe-*RUyAD})Zj`_{QRP?x? zOLucicHfyQmQqWUDI=!H%L2eQLGD7hP2*viBacOz($onPqyvvk+U3aX6Zostog(#C zOMcy5l0#RDe`V@-`dcnS1MeFKl$%GJm`CbmXZJ|70&{Fw-!c1+-*z+mgh7A-ocjck zf$?gQAeTs<{lUeZK8g0MXH$lNMYHk!L;yYUt5^IpQZrRKH4YvW_pzDZ3zzC7!e-iA zV7Uo*68WW9J_sifdEmnSJj6Bx8WUgQupTfGY$ZQ+2XO8+oIT-m_}aBQUkL zrq4>2?_BTGGs$``gV9)k{;W?MAL zjyr1OkQk7k2L|XY_eXfET0axGn9r@|7eeUSQ!c?P6mKa9UJT<9oh*p46qf@S)ZYiZ5t zA*i`Ct-h65wkccOw0W2M zsv&x;&`wB^*6r3zIQjVi-O=y!^s~ES?`LCU|v0Gn<#o2b(>xH>RvqkMQZCm0_HlJM?t}SO*BnLl> z?Wd+oAqTGB7)rN`r@w&YSDi;w&B>@Yd@ngte2|rSPL+HoyWY3+jr5%jDE{F+=G5$& z1h!K%5g_+9gySGxPX_huM#2nDMi_kZ`8M>2MIt>EDEwpFrLw3s^=Pr!-u_soh+5sL zHgAp?1J)~T#EVJ*kk1tvJoAD6vi@eRiA=MN>9}(N+O462XzN=MYS3?X&A2 zy2e!dKP|+=?a~G|hPkCOyt7!K;)O|~OHMb>flOIwvdoFdaGWmBz<86B94JO~C-=i{%cw_tM(gK(2KoNu!$4hf1=q_QiK*UgPJC>lmWdcop933Br z!Z>b2|4Q1sHg(1Ny%w?1cF0<@8{8ZQ$GERiv7TYyCOD8|{`M{7Zp+6>nDrsxx9A_W zhn@s`lIeIK!<2ZCafj-FX#I!}JuNkh3=L6#sdRb0T>^!A6L_{q$K(@WU~S+9R#|!Y ze-%X}^8PvRR3S=WWxKsEZ?oTUo8xRF(Rz|R^e9+uT)xGbQ(<|%aP#zpFx#(UN-E8f zO!z)|K}z@WrT9J&#p@w@P}w)ex&I8&EuQVkwOHRP0ZF1_+BM}!1b*l+{n3#|Ht;}G z`swWM-fyq&rN6}2nza4D06YT>$9*$pmc7`dL8j2PUyEsrnl<0&ny914N$TZM+dYrb zQFB}hoLE>zByNcMOI8dG;bYceo*WdwLQZs=%Ooxqb{;mLH#60YgtlCR!g8W87LAd?>CtAE>b64lWg5FaacGZiLj0M^ppu4n zs}gwkRF;sET1EOuUgC#c!LK;~Kl*yBxG1CjeR~ijq`N^{N$E~Wk(LgnV;E9$2pK{; z1!QQXOL}NTV(1QG=&k|j#&`BU{lC9`ItTL{JTvRF*8RP%djWC`KdnU^(QY!XwD<=! zj_+rT6#tBp^gS=GJ6+$HIx=ze7FhZmzBplv`_S|C259 z<~I32qlIV40%)Mn&8yH`L1sgK&?Go6We4*;VZ;okG{1Ju4u-mVJ4)aOwwDh}uT-r9 zB`_A+I?-4*TF&=Meon`WJ>3Im7x1et4jbC%gkS&6LF0T&Q{2r`tLvfl3BX8x;p^7! z``$SPxt_V&`ui`uSfQ);a#Z1<-(gN2$olF2_ojYSEsPCLyO3+aa*=Q z4n~%GK9^S(SY*(evSiUP8~mu;_nBZ0#!6z1CWzJA8C=A4Q$>v74`f>TKQ&yt%KF64*O_jYHE}O#zDnO&WUml50l2~xP#n$%&lRs zeaGB-n7%g4T8S0#dbKr!xUFGz(`yap3K&oWHTpl*N8y(Yn1-^ASoAM&E4YRwzk`0{ zfD5f1XcY2|_-PZIH?d+TB5M6)>Wfv%mU|=CZO@Prwafy2E;8cU4Q&&U^-V?_*!8taE9%zoFyX8~eZQgq-ghQK|p|8*$g zQd+;S<<>K~m6kA`;@jf>nhD7o`rXhf?&luMC=cSG_GemiaS4gpLX^)S3}=B zf*oyvese>W*wG`In(83r7(eRRx$oRQce?EXx41eC*2wTZK3^}DXo8JmhzKm_CzR~I z03i;R0M@aOvMZe_uUgNRE0g?&!BmKoF}@k6+r)q9$U64vW1-?B;sKC3!EDH zxW@vF`CO;8gFMO?lT`Ytg>_!@4^V~i4}d593nK3V`}=IAt(5IW=uvk~dysry`5X)J z0ZD=stS~DBwc&mYzRdgH)D%Q|6cF=|_n(4-1#~fedBb z*V%1a&;utQ`I&+*iuA(n{%f0dgJ|fx+*~E0+}9QG{an9ClE=AL+9gv*jOu)MN_~!G zssdaXf3=!bkXB7KZ@FczXaL)Mv1t&@918dFb5A=Nyov6AI^J+xf0e>j2e>Ejed(Ta zxt~DUyI;TYTMay3JncVZa^9u*M7b64xFWF(dNK+|Ez}3C2c3L<7g{vum#YI$^gxH& zgEWdn^%ChACy{Z1k=QXyP`Bz)%dO1ia`@0Ducv;_aG<7W`f%e(7~2p685e*!ChiB^ zsYtod-|jT<2MC^qW8B~CE4Oa`o^v{MrSr+}87I~31+fuRsl~c|ro@Sc{*fG4wUEAM>+m z1gTivTDrqrgAGL8+o<}3E>!O~!nw%PGfh9tL*X#eqbfU9{2yt(BfJyr9qtvr<&oi!Qxtd9MUkEW(@KcGK5 zk$FFHVc4_1x0rM!0%BWs1=Tc1Lf5Uy#vi%8(^fQBc%u+B->;67I+|HGm!O>NDFmti z0EC0=CAj|p0(*)u;zzeT!7Ok>k|H==Ic-{frl{q$CrLMTLyKO^i^~uGS}+WVbiMri z+u4R~8r@;nQgt8O4jrCZ)xeQaMAxOZ;+#!G<5Y@fQ_~EyrJJp_cZjAp@}>2u{Iqh~ z9sF(1xh6OwS*`bdQt4-HfMkZMR92!aCPX%RN^1isH7cIGL!ObmUU#~Cr-i;5kAzJ94%EBVrDg23$~!Hk`3yBoCjfCHS&dqM#!PI zc{bG!TEvPEQ3*t)9JH`A++uWFv#ppQFL4s^_bH;TiW`Z5s*t4R)vjDmqasxbO!ak1Mo zs7*p=1RcNqm`MxcQMM)Td_&CN;=`!x^TtCKuk|nhmQ1qT8i{ll8L1GDwCiWTXC{qH zVOojQ3G!in3SwQ|?qp1;F3J@e6Jq4SJ-eZyW6x~r{b z&S$VmKG|@`3gOYMDEyx0c(M@NBY>S`GyQ4EN^@&9U&8Qy55u`>TRl=zG;ZcNr0Pdg zaq`k~!|7NQ^9U)HC363&Uox=bM^T--nH$`|1sL=X5PUFZ0WOkBDw04@@%^N&6oGIL zy9S(LRdl(C|D>Mv95<}ML5)iJNH0FVHx%w`%G?m+Ws1;q1qsLuD$^lZ#2Mf(=k3YI z)_MI`r+Y+AkEU>!DbQ^LAKZ&Y(gn>fdf&5s>zpFGCoF`34GU_$r+d~Q^Pg|TH##R6r~C{a82UU1uOz|e{q3=qTvFgQs35r(EFL8~a*HtSR)|@OL*J)tb3W=vZkvFW8 zf8My*;|lTwsP?bBUy4f|!#`oOG(KNRw{(<=alW29&_%{OqQD@f4;pa;)OrW~rl-*_ zev%PB!uVGOD_EVY1YJCe$l~DWS=O>A3RR!EBrA{-VkbflyY;Z8)1{^N6P&NNJKi2J zJmAGUy!N^cyK5M$e=G2%yy``&+_NvwLdP)qulrt{5TshA8C*+56wd8ztM?}%GNhTJ z&pfc)eDiiKOGe$xt<@sT<#`rtHl&Nburv?C`!MVN0mk8UQ^n~O++6g%@pd|g$#U|1 z<5Lx}LDHp_j3$~1Dy7Rjh%5W)HmWfhr#d7E3U7Te$WK66ZUYk#m!dvGZdzpHVX zUhVSo|FyKF+X96)9IcY9DJCm z%A5Ob!lRSPYN@5{m(I8n3Wp=kOyP0x;G#^_&V8k=07%s1=xT}g1~C3??A#`W$r7=N z4%-#JFb2<)tf&KV_drt%$4RY8?B2GfwBHzhJp{%*L-e#xvw9*H)grV94%Xa)O$bdc zL;slU54%%p?r(Z$aOdjN+P1|);+SwiGhuTZ>iCJ?wNpEN8lW!NKU`VWdWEdg+BM{=9*638H%@Mx8+z9u zhFPel)aChEtvQfL!_v*Htog~fCbbURAGBr5lxDMw$XEq+U>IlDn5j}+zjXa7ogqwZ zT2ppoHhue`iQO2)IkzaS^}Z3hfv+Ik_>AZ;bDhk`SesZ8BLYDSx~vR0kL`F-+Jlo- zaCT?%)r_$y`MK84gE?NZvFbu|oJM`11_X0D*E8Pp7+7E2Guam}fXwtU!QJ=T<712G zBXd-Z?&Z9VoOZbB7lZeKW4VGyB;)?4nSZv-KXS>i$Tg*sbWgB&Ky|6q zUa4`d$ffO)3PrPs_tQ!R`b|r6%$oODqg(GHmCg~ZvSWtG< zZYm}5*~G)KX`H5dx@I6ks|{qCqPSS1*B*^bR4S3T(US~QdNjUW()tG|hMfQQXlYWl zsmpO_AI8q1CfCy0T$IOO0`1DIR=p;YQfd^Ibg&Ki(HOz1dNouhl(dzN_==I03wL!Q z_jC~ApOz3Fz5NW@$Nk7nKub07TqGr4%v#Cb>noJr$&o?wd$A#&!9Hw&0PT_v@8Jrm zXsWc430x>lF=|Mu;^xC?h9z!cQprS!Jx1m?1zm|Tw|s8MT2kO|Qpm*F+(c|%9w4CGQ2t@LNZW^;x(YS=5-r=;V^UDv_2z(9dZyO74m-`=Be$sx?-+fv0Yj70P)1;-Tt<#a`dG~vOO>;^>a;~>4BuHjPk>-Cb z6J38V@aZTixxgi*uh8XDQf{TS+tn@xG4yuX4)x2Ur0YCK28bq%?iwX#OGUXNIiTvH zTs)m>9`eKd_x6CmgNr}^0Dcc*#;o(f+p=W=Y`*3v)di-W?hZ|5oN&g>FB(ydHFEMS zwKBik7W5C5k9}b6tu3Y@?nJMK-VhPIum<2UTEe?JP`gl^eQ(&Y#m>TUS1uX5uvI>J zeY)5#Iv}Wl$SdY~J*4kWK%V>Waq?@zmk{M+KeXDcpukez0HN!7ofuE)g2l=hx*#Vs zUe=&)d5n9~Q+eY`+Oiznwuy6-bZrRMqk4GIpRbudP=Wrmj1V z>NOvF3&(E!E3V67)uW$b?){UPajb7zh82yTeVEXkc4p0dm)w6auD?v)?fQ2DLY8V4 zF-Ujy5Y%{fds_>KdaS2O?{?g+;;SL_^(z-}X~W{I+cgH;D0RYIc55(B%{xT-`udlL zuiETi7d54F;lFr=w4WxvtDY*_Wa2?!U?R=Tl?9&)wzGytHT-=ZY2a{MgCg?Lv4SKt zpwL(z=fZQ&pp_g!^DJu1ujIq+xwo!&^*+G2j_e4F1iJBx6~|H zvBCbgSy|1S!-t#Ww4$BY`#&f5IY36GE%8rU#Kk}8!$+*RN)y@T+?GIQxd$%;!1L4l z?%)4zvaQbf`mJ&S@SS1;<<+BZk%%U@Y?yvqQaQXMacXvWrhi47dd z_?{>_R_~@(*??PKPO&bkMu5S7xPf0@&#~cgd5Z!vCyIHu-lPrWU)RO$y7}x^flf?#UGy_6`lUYqB{0x@9%Aw?fa1}yAaVF zOj$BAiRN!k0#Q>7teadQSg{y=)9F2UCsf7O!})?Fh2wd;$sfiWgAERZ21-*(Rn_TYR)tIf$#@1}>d(*BrW&d6bn<}L_ z9_>hj9QyaT*0b>7O@r>z#rtxb2uhZ+Py~9{MidRb-OkgvMpyjRKfs4}O6(scLijX& zX#;kwS%Ivdd+!-xxmi`&4Q1!E`|A_|GlEMW{&e4DZxgP`Qb` zlSs()7ox5lwH=7?|G{$ow_nlp#>W!6>H2o`qN~U2v_41~e41rXeO=94AC%?OrFnli z)M@()md)?!?BIK2voB!m;t@izJDH3FrljryXS3p4WbBl^gFB7vQ0Z*J zDd?D^4kB3`;gCB#&~D?>6EVd^blIwM9TNKNWo-qMo1>ME<4 zo<{jK6CsyHrIRKWwdJ@q9EO6PGkG<6KW=QFOKNF!$vQqfE<)>ncbP_3jSv+(D24gvE@;$R5|uWys9zFaC>F3CUhvnboy5AIB36Z$CzpQGuUxiO z-OksG`bgS16=;hpSDj6FxpPfyk7%z^srtRcnJqsWTCaX(cUoabneI+Ps@HBv!1C2XhBtkMe7?hoRAPOqc0no zwjdleH(khbv8CVFUw!e>2frA6r%_yYY-H!siT_&F@new#A$ z=q@N|)vXo+Jc%$!Zf;)^=YZ!E)Dn2b{{iSbc8(uhZsr#Q(s>-OfB!XVM;Xu{@@~>T z+Dp0+GG|r3FUo$4G7CQohI6BN+S^PpYohz@;#w2g!4WJztXV{2dC2urixaK(#tUQ+F4Ts1e+nOBu0lc8#ZetR^P50kMd4zP{u94f0Z>c)gs8Bm-^n z%8z^gdfej_j&Xe*F!}j71wapbiS;x?dVvtQ3urR*HV^u?9m;m0bHrvSHs*;OXStsr z+1;LJ-QFBF&As<%J26RVs#IuciXJztH(GNbtK-LaO9?g%_=)me9s)8v+;%~$xj^a8 z%7qFNFLfm2P4>zoyBclft-H6Jb@O>#m|OIcic4`2go9K3&R>b@E#smdd4?zFhF zLfHs0criS)5_BU*elnQLfrV+j9cU0Jl&tg(Qf*; zA*X%DCyM#tTMg9b4)d*!AKe|@fwBraI85mYiqRhuCMH}8MLS+sadbwSQQN{Iyy~@& z4?@fP>J!Cqn?1lY259njFY=N#0SuSLhUs@ckyiEl=7Vm3nW^#EH+_}#LQ}`7ZmvqJ zq0h5$Erk)wd)tHB%PWJx*EoSt;DvW@EFZw|Z=;jW)-`2LZ|M<7?U# z$n=z$ij?&M#!+RK?7ka7EJU^<{)3Kjw#(A~T{72xnPa2=2&PM^3pgb=IChdUt+wbX z6XafUo20A@_5IWT@mt+JqI{(YC9P#lJ&UhM1bqF;HC&MeVy$=B^)($U8f9EoVY!5St1Hipnv(`Y3+?*y#{QQRe9? zk}k0?BcDU-PPWYct*)nw!{sj;ZRFtACKAP-Sll}QEFSGm8<)Z-^XxB*bygMswROdk z0A>C74?ra%GHLqp;99hlMmY&8E}~lWhWV1vKucT-Pe=cWqPa<(Spvj1+CJ*WWa`QE zJ*?OICEau9lw2sQp>Nv0%g;@h5(67l*|ay=fvR8%1nq{g=zkA^tJ2b?JRHIeHZ>B9 z>het+dzcP(9XC_289hG|=He#E91XeLgRjo7Zyy=zfB!Inr@g0VIs6A$>t6kHeILAU zzRY*?^QP;eT`=Y6SE1{cy7rc)X+!On@FauRXq@G5ZELUx*W8~P7l(gFHgFA8t#wJ* zq_zE6c8f|*O6(<26B~e2Z$RqbH8i%w+qbIk5U1`ezFD(bvq$9%0ByBX0b2WpdXae@ zKi^1v&$we;Qe;1t%Rhh+$%E{tYYHD9kvq4p=I|s%O&oo_Hl8oaTIkUPIWH%9HzBkq z>vg6s37_}!zQyjMr)1e!$DYcQzN=|$je1{uz{8?Gt>;Qoml7M2tRlT9brT*n6KjW) z&##=c;q2=C>QV%i606wE`O~VD?bi*(aF~8J#QsV339!`6YJc)rv12oUpF>2*DuY0TM zS;m%{!mr-=0ng1>>f9_VD+>la-OTD&lN!H_QxooBTX9I-l`s=^Gk+OAY2G~;U45Rj6w*7Y{3F%#(8%y@}iBDYa-t(RZ-l*3y5a+_?HW^{L;6|Voo`(++J&5oj8^FOt-6$wL+;)sOQu|Bw=w2QukYit^`K5a6ZNeSKxA9 zQwwC=AkZS1lxMV-d*?Z??Kir+7sMf}jO2UeJRVn)nfScK9xiqf>;mG0h~_PJt-!7m zMGJ(NFixze5paSbw4XigC{?N7t+)S8JKm(xy=a=`0K>A+`?}ZivD@|V>jDw~Z<9*4 zTt$spqEU1Q`i-wpwZ&LLL>{KefbkP0-5ZlLE~*n=Dy5m&-tM9V-&eGAKVE)O?U%)j zqL=!JqR<^WJr=how|h*#V7*UW$U-|f$^DgY(JpScn3m4g*jJ)E$u7WMu>bPYz4Y7J z#2$xnmsg6i6boyLkNK`}(aR#X^m$FjsqRD}IM%`Zdu+*m7oVEU)x01Y< ziDG}GRl*TDDyvX#ZQvk?p~|gEStgQ&Uho?hx|`ndf5zc#4np|yJfAatEpz4;c8n9- zC#(HCCS%^nASkN;rO2+Y%Ze zGRU!*f5i+5Iof?=tSUKq!bhF_%&I{4P9Kp%GnX*8t1lp?;jm*_Lm=JnV&y0 zUeaZZoVE5J>K-ndFN=1laP6Q-Of^cRE16*71_eKFUm`h&qzX0F)h&7FYu}bmvZi6t z)y}rVA&YazPJ-#G6I&j(ymogfo$rHUs(-S_LsqHK*X*H3iuf+Q#wymG=pc7iYAA`O zJjRz^2Ki5d(YSB?eDL|;G@r7+RdEkIYRP@`jZOkF(u`wSmO!6s8Tk2 zo|Odl{4(=kGB-YJ-zz`6i!F%sZ9mtRb>GY;9R3wm1B{jQs|kw7G=cE! zekTnV^{zQsf@5>cu1nQrB+cC14#xpkj9+$E+tuIz^|;g3jhWxyg&f^czhn)qP(VyH5+j-Ti^SL1(^wyL;o$^cfu)_G%A@%kSI4WTPMZ0qHqIiu z=F>3Q-YU7#5l2?^8f`hmH5GiP?atW^{*^j>>9#)L`r`^mZ1RCVj3S!|UNUX!))rWs z6YPI2SyPqrn!wG+KcSDfE3JRUqOrNI4Jx*kESjd?LaqM{Gu{BO3G}?zF*28B2ts%Y z#FuY>TZ>m=IZ<>HJ~R~g_^y>bwSMlm@A286-5D~q)m7Tycbr&Z25RlgEs!a7$5!C$ zR-X@8K85)0TRE#$BrLv=MKPteZd+9SN4ojMyOWl0U*uObu~BI}x#aH+WaYJTTJ|dr zM;6EBZ*9&`RshNE|BP5BqW=Mi)6Na{nBrfNEGs?}m-tewHnzE%96S|nwnu~*&#yD3 z7t^#3Dr9fA`>@z7q^-b47T&Uls5PeQzKC`r|x} zLbu1o#up0ys$!Yc=J4^8>WTc@D*5e3@dAo{7fPylal9A^8V3I{VelLTp_!{WBlIV) zt)>O4AwlWwdrXd&5abRiS?&@dM$OYTW*W&_A+&Awejf(LUwtZnBQ2)w0k{>S@R1NV zt$KHGJU1z{z~V{%dxRF__5L@>x)C@vR;Q-BlASYXr?ou-*M&XlH~auzfyi}YJ}}2J z&gR9nKxiFU)ST}vNT++7c8O8v7lKIk_O4-NQa|lICw+Cz3mbH80z4$i$5$Z3eJ14x z{!RmYMXe-eUOF$Dc+PSPS!3;`zl;IyC#q>=>dS?D1wJ0MLX1cTYz~{vyFD=FAGCE= zES6T)XWN_8{Pyiytd z+jS4y(|SDOs|R|kVa6EleGJ}8B+r$`Jri;}fL}uycotSx!7D{=CXN&p1PRi8m&N&X zng^2>rgAuDHpIkVawW1q=qAh^@ZF1ytG2H)J=wlm zNQR{ekbTvale*SRmYtY*drAj-W-Q0U+8Dyj&YFS3+^y8#(AR+p8!<*Xmzk!Dn>(7i zqD8zMs*!70E&|v~s=vgquF1$-LmC|4nrL~7tfxCpydK}vbl?*@<;}Ll^DoZuwN5Fm zkz#%3U)E5DwTjNNdMuE2@!BlAI^r?QWeAw zOy0ke&cvka`!%Ien7y5!Wmw&RYJT2Qx7N>J3{)w`@e~@2xO`JU2OThB`7r#V^SrK> zNhlpo(W9$E`kYiCZ@bv*;9A~EYz@vK$fk7eeBp38w4*n&b0zGClBj^@sZ9;>q;1=w zPDq3>uRAgFuEp`-7!O7nF;08%=(CFj_c6qsf3VF;-J*V$fzO>!a%0^rYm}WJHJTh+ zzc}kB!vtQlEVC|3soHcCQ~YcCE6dk^@KD%RaSNEdy$ zciQ}SlkXN>Y<^%Pf%ns`c5v+vlfoZCHLq7nj2yFztvcC%A1eixS5>cuy|zIsM(bM@ zHMTlg9x4^GMa1)_H7WVFK8}_=HLYJV^5Z@_)wL18#jpSy5GbN($LgGV?}YaBzjmEY zb*KDP$GQ97a4~l7P-B-?SsNCr;jA)iQ~ZAC$Ga{ZbygCycTd{J?C|ePX)mbg@@f5+ zvo;z1S)~kF2DhQaj$2f13ZNKrZq*f2p9-JpRir{?1CU2cJti;hN+NVib*@AC0FiFq z7DWXhf61UJhE&q^g=*YEUP5Pkb+|2gJf|a{1p;y_I@NC3qYR)Q;uzu_A7pi=j&``8 zEL{}Rt=mF}ay6y9=7or)RIHs_V>E1itR_Yd@-0)s#i+%eQpbYHC~36g$A*V2)P9)f zsl?HaUo7ay8~f75#y+50x`ESDca`HTrdiMR&ycOc+Ig?^PQCyhU-5np>aXD|pHG>zsCszf$)yEfYrpA4t`z{2fP<=o}|Ne2podqUb|qCwO) zz8_qvxhy&~IaugoTN5l1#|8$VlHT+g?(mfIm^NT`k9f#1+U)=tO~q?w^@ffZgXvAw z7Y$-KvSt-Rg!`5GdtxW-gn@oc&8s{Yl*#G`j?9T&vj0iv$Z+?UM}!c zWr`K+ruqkv6{4;{FxfNnL7STK1i#bOFy=fbuJEIftg_lbm`qQeP*KsAdxZLIhBhR@ zN6C{rzaY#6Xd|l$Jy|uH=^ppuSLhnlhg*`WrhHV5H`Q=HEMeb8vY=C6pG0pT`nfWY z43~A@o!^+*9acAz4=qOIYSzGLe;vs4?i~5vArhu)r?$h#jdoM-jLRMhw!4z;zVK{M ztxy%#t67N8xwPnev+*-btt{L;0(&YiH-`m=OxfTjEA7`S9Z!b|VfY3cw1Fnnc@*_( zG)(DM=%j-uA%EhRJI>9eWvK0Y+=o5P4|j_}vqth&O6AmfP}=Qe-&pxi)||Ym;>0;B zuGVHP7a49qZs(b{lf|d5y_sPruj$3r-m5to+k8tY;2huwyXr1hE%nbIJ;SHIJHaB{ zvr`(&@UNibqVNXruESE9ecNJh=u%v}VP0WVYjb1PpuJSn(MtB@z=uuLKJjo}%5@FUeFWWd|;AqYWayWbJlfpHw@g{T|~|t-A1= z;0gokXHlv3Yn8^PoR2%{%e>40!Ps}w4YhTga(WE0hCmqMw->{}IGW185BE z4Zda#>W$P_aoZ~0&KpsNCbr*_9OeW~_h2U9o9(=9ljUlgtpI3}bO0YlC^oFsZQ?=h z$zDC@U}CU|Uu1hplK`E7Dqf{KueP%>VrF>=YLMb8vw%52qn{ywEjzp%*CRy;P}YL^W((;ndjgjfI(~=wfLGloesN~SiHM3RMi)4NZEh$OETngS9})% zR_3@6xLv}IEZ@&2k3PEzMo`PZ zn}sNHh}vG0B9#BCaf#bNHkOzD%nKtlKO}W;(w8a)M_YG&{jh(a^A<0PCM=%LS@8-0 z24C-lf6!O>|51HVGT?th-|>j5@R946@_2QHl0Q(<%aC5P4QxNlK6akabZ`&OaHS4D z9FJLVx1MWA=W>n!g9O-CyBqn_IIudWG&w)Ra8oa~Q}0jidU!ffCZ9%M#I3Nn?q1CZ z(8biDd)#^)CcHGnTLH3nvW%Zn+XfX5oWZ9tc4G-1OL-nBh1>P$MuB*bzJuUcyq>X3 zU0*EN(uCpRFqzd5F;6>;|81Q;totp*J2oB%_lpKbg@&wp4m<$*Ey}~ljvvh#kM2t9 z-cue$W;ZnPvlZ6AL#QQfC4AzL`osX%HuH7Q4-{}<$(f=yw>J(uDj&o1O~4BbwHM1P zpI@Pz!3p0;YIR`qmBXI0o-t%tctqti&b4h&K5kx?Gzw$=qWxE9p)Hwz@CcD+*)AQV zd!bvn5d)z8Q2btZfo`w7bs*b!Go9(ThKS!gC(p?a(^xnt;PUb7jV$m2=Ns;Wd>j zgSHayI{l7iJ3hOgo;~nsqPjdN$CN>tf7@Vll{=6PDwo3PIiqM+<(I@piJl#pT2|r= zm*?mE;{3yOb@2I$j+3r^a1e5&Ae9?~CQB!C0#@NpQvk>LMx-hU9}~OSgx+NZq@+-P zvo@)?ZR{th8{L>Yc-@0Jr7X_?kN(puTCNu{rWLf1x7=AG-j%KvW6&uP&80H?Mrq1U zTg}Yc&4NF7o~oeEZ9uq6%~ZcDe$@>yGqB1nh#f)BkG z1xi#s?}sLRbQE!u4P&We2kwI8R=#r|RI? z@x*^Pmzx`*SY+#HY|8a<#UFuev*qZ!Z938sVU1$^#2oeJ;bnq2ZiRL3bFZP+p1E2P3};Z0|+*UziMnmB*p<5j9-UUNt#z=b$F|BpK$|C_N?ONqAZHir)Rl@`a4 zaA{2GYs)X0(tQdsGj}N#+djBh0DG@)YHVCr8_R=SX%P#YES(sq%TW`j7k|ZsbJEkf z&+55h7tIHcBR^nYt1%=3w-|eEr;C#|z0$;%>H)Msutxx?IgMRtY{CnSW=W&TA*gwD?={I$}V3VOQ)bFTA>OT7xk&XUGoG-LSugcYg%1 zN97xNW|bnMZgEN%``MFeA5^%1VGeDppeF{u!}gyZIP15WWu3vcpzpa0T4}|lr>omr zTNp2v_ndPnf$pby{YLixb;A-OH)+ZEsn(pfX#7Un;9ey7CRSVR?^CY-Lb9YoHRw38 z_muXVvSqGwR%j{~tkKOY>p`z^XgF@=()sD5e!pRd9U)6G6;Blf6>F-A3b1*{`z0M7 zpXK0H<;B8-#YY1_mqEmha}MInR#;NP!RIRUJy4A=Jma;*KxL%?Xg{3w3pjvrs($wG zS-{7rH3T=n(l2A(P_avI2q-FkpfH!)vyEV6c;EQQq8SXZ< zm8(_93xv2&bvjf!E`C*1q=?|8aL@)b_~B40(2$Q0S^j#v7|T}n$@ zAr>1nr_5BDbYcNG;}}Tkiq)dc;h1R4^xR8zA0LLs;d@i*cSe_tc*aqPxp!u2jorI$ zi|(Nodt(bquI}C}&1tGER(|m^`B;CfnM2KGegL9(?S7V;{ZVP`Apw5DmD1N_L8$Mt5AY||@y2Oj3ilUhVy^ETO@!dc@g>O;G)Hli#4 zW~teK4j62L?C6jsO3y79Gq1Fh{<4y^KT(W)dTr|4hdSX@!Z@eAX#PN+k%&A~dH%KH zUYFdq1n3{OC@~sbsRVj4VjZ_Qp}~?^k?4DbDSm=lBDy?ye}=^b@L~RvfGoX@*P>Oq zn=sq+{KK1xq0W%z!Wu7Uf+VZ?E@H^m{NjW4COag(R|EG@6yJ4nKf7HH5KI4q$-N(K z0Bex ziG!V|W0*9-eNafL&dfx^HMq)g5j5Gdc*wgy`y*@s+YUFb*8}|bRXON|gVF=hGIn^| zP!&sqQ=i;@jZ{GVjB3p+b$emY$R0s6s+v1rKk@vL!$F8{EkgREazkVE*~$u7IdIZU zm4yUT91mwx2LAVzl#?A7J_!%s*jq3DW5L3GeF}1yr|s1uJrIwo8r;uI8UDgT81KCa5tKjdDYFLp z00TYCdWhp-LhPd4lJRTSCuY*1?Qy*3noU^HeeO=Pllfw}m$m&fE~WCf;@oH-;=0jy z6S-CsGE=xJ;PyMg@6xm~VTn_+x0C+>4+bb^!g|w-@e%dMF9k9}Kc3Q3c_9UCvIbop z$sDFW4{UpmarLZuY)_wA+tm%NAa1L7)=J(>e3;V(J|9Wp9_q(h`||7Qma&n0_hvfT z{U*&X_ia;S-OA$JiG1ty`mA$-t61{a7Ehwj*gYW-F!ZE<+onasz}zdFnO;F!Or?77 zzN(4@i^s!{>H8_%nb?Hff-0Nmr^}a?_?30!iX`}}GpCG-WJeu3-s7Iq2<4>dQXhuT zX)ykD)eAE;j^Z5^18(x*pWN=bpZ;UrJAICqyh%RbQg6w}!8^;&^N(0>`;&B{7-K9< zMP}Yde`Nozu}&nZr;EW#p-Wrq!QT4_tfPH`x(Ng}z4=6I>p!`uT*VrG{hE5{?=N@7 z4^DZbftPQKhTSTY@i^ zuFhHOc-IgSZ+)<^m?N7yo2R$KD|s5Vcdm|>%*@qjOO*gfy?(W=9I>%iQcXqnrA~|O zcENn)4_0E;tXPoBLKpZ;k(FTP(7x~vG5$=MpZ#TeH#qBvyxJdEIWD%Qa+og|A5x*1e>Ks1c z@{phK%vlDPDA3A8RqIosG`5UV6P1!1pS*c*y|HV{U$6`tCU4>~nG4GKcQ8?jVy`Nx zg=JIh^{DE8@`&YjFsewh|Kma?^_?=lMW0$i^dB6ER8| z?-;7UgNS3yj~@DUpyrP8;--kj{dW7n3fBgBU8L%~fd>TPj&aDun0HlO&0FBH{NDL~ zm}FFV!t{WY)nISnbD7XDh@imp11it#!bj7`Q;R*g6Afq%dXVm3E*Kjt0b|S;qJ$1k zDqcN#38Tw?gDqLw;Qj-=c8`sn&^f^THPF?Qw#6=O?oqgl3_;yDyQ-bR3{xn1pQ8DK zXduKtf_s2JX^fR~G`fPn3f#MXWNGVQmFJ7Q%fda*f z!=rcI_q+GL``#aKvd$!HX030|%vza!_CEVOE3^Y{Cf9KSR0H~-aXlSVD=olzyn9ne9P*Bl`(E%ik7^GZG5@g&O z=3v**WK41%NzIQCi#lE@w=hIE1)sJ@YGHlD)bt-MOZVOxW`1cIo$#LL<{68-B zbWs%4f5(acXA1w06F)8i@X%16Qbi*MhyhNs_cSuObRcZa3_g^)!J1-$ekM_|_3QoU z(OJ(p_|G*}o(K5XzwX)%M|Ots)~H9A?WsUru-`}z#Mg?=YSEv1-TI~absX%|oDWkZ z(C}jZX8@H>AKFIVj6Ch#f-)#zr&6!9dJVu9@%+Pf;c~Zp=!Z1!WymPnf}YeC@b`Tv z*1nF~o@sd-LCv3Wj}|dXGzoUVr&)!@0yg>~2YT#3f#<}H4vD66L*0G8r_Ep-3eMR5 zt<_r?skS!{(h;59Ne{-x7u8d)HpiCRvl^Ms6bk(zvFE!0(swAN=%^+teSju%FRAA72pCl?yt zjayu7E&Dsd3q!XY|oI^gNQO-OG z$)WMZ*3tD$ea8~wP?#DJ%X)ZmOs^AHB5#|moGBr#ud%1z;^yPY+v}WmljmWxxsla| zDBQ}bi+Mf7g8%gr6(Kvdb37hSpD{x#=4;L*XBWq2sNO$ickg5IR=HC~D|#&6CeL9t zgmtvtg0In3EN*L`j0k-Q%8v^~ojFf*B3dOLDm6g$! z9e$tCgio>@)#$ysCb4TwBVgspK5SP`CUNt2=gXKqEz_sNBW>wBe!S<}D1#6mG<`eT zUSu3Ah=HeAjeb!C-fpL~BnQZ0&RAa9TP)}azxIW*OR?H<`dDI9fBAA*hvB<1xDE(f zQYzg-#!oxH?C4)^VUh>5Z&PV(5xSZNs^^1guyEaqTx23ubJ0-64qdNl#GJ6G24{jv zHtRF5(pgsw-~HU%okg(`RRbdAX)Iv+MTtIcTt!KisKjrS1nPB}oB1%A0W}PO*EL#+ zZoxv~P{h>0Ns7jM2pifqdg$hXX?k>9)#N5dd?*77RinetSxnSRG-*tZOD!WkhF~Je zmI*j2i7vAT`t?WNa7~Y6_0fQCQpMK}*fx&ub5~ zg4-h51eB-1T(}qSjrlVMC!0EYabQdDwQycr_e*PHM%Ai6m5bXtrNqjTeyOOVRwXn& zLJ*PzaOn*ZT;KZ*&Fw(3ylVL_LO=r+4)+wJeRur=^aU2kx2CNug{7MVsx|J>tJKOxMB&xFd_F{0%hWe-+S)*qI{@y(w0Hg z1A@y5kyJaz-@f;S9Z!S>Gammo+ZT+vd%^2&U3keTubm|ls^0@3D@dcL?!H97JwSSL zes(>TJao(){oEdhzr5%JNf}?>%2W7G?I$ZrueGrymwE9c=s<1}4=f8|Y(^(FnkT=U zQueHhSN=e49qF13>SwtS9~OTla&3Jhcymg)f8>$mIP97h+Z7|fob*2DD!Tyx5irhr z{8u<4V|sv}4ZB_mR$oz=$^i-BtNfG=wX4Yih)Q;(K=B33%CitiyjSS5Ex!s-^SgY#;b82RLw5?yOODs0HqQXbzFWu z*-hM+swS$aoD=PV-Hk>DpmjbGORCn4HHrIE$NIJj+$*z{#D{-umQ1S^P)zqlXRt;C zTcrPcTOx$0hpRoYF8$Lt6(1c9a1lDIbcR4^uYH% z3xEAHxNu_m!6uRI7w)79^mx|Xg+HAor05=buqm+vWb-0M z4B6V7OT$}sn#S8axZ1%)iU@*f?0f9>gWP|At^XC(j1OgVe$$}+1PtehemFf2H#duJ z*0TtCDS!a^seUkg#>ke#VuBx64U*LVeEmkkyj#Ta;VBWVWXND&4}u^*rPL};CM)a# ze9{~A_1@!)QJS3QSWInU!tJPk`Yl|*<4r5bIgosGlMpC}o@}jfWzR~DTlp?l1wXPQ zYVT8tk#|&Ud=32^?g-@L;^%7s+q#}u=Jx>YeOZTr3{hp#US4au;qYZSo3c)r{LA<=lpd@eJWG6IPluK(f(vXm zf2r-NDdNOf^Pc5OlOr+kO3VpoW?E1G=lB3ZRzw4kM8Vp%Eq*`#&12i;bQsl9-b&Zj zsc1GH(CL0oe{r4b%)+n0*(gOzt&SBPAg#oJj*7#NBT6V{0sz_(Mhs9JDxkb47M4D2 zva*O(X%)>=xxWU4zp<0z_&U;b+EYP+B%);B#-h(Y43S;M7ENLctwLY0pOYJq0V7F~ z&M{a_k19MX?T zx`kcD*3tN)E~}~z7$)D;S^EeeE)r_cZg59Gr8)b&z6TgivA1)Zc0A-7G0$*s}S})+fQ+;0fjyXNEin@UQ=> zi6s8C##ff1SE3349NB2c9@?q!q2{d zTR_v!X0I-QUqOP_ynG@3!GT-h6IR?hi6`5culv_C#3?x9ygb3{lj+}TTza+8-GkDT zhB{Y^jK)QUrWvzXljRO9jG>a6>}I&-v0jyM79YVyXjZ6o9y)eC^CYcgwHAk)O#UFg zc5h$5%z)s;%npK=dyFex+p3g-*fAv74lq^!x^+@1pOwJK=VPqU$#)}X=Jz@Cc`6v_ z)!E-vH=qDMW4Beo!ffDC{!)CQA#`kCgECt}Z;|{FU^wQ=A;P44m1Hgbii?mqy11C| zl-H*gO2N{f13Q?sdIVru1PG5&XipKGypLRdv64e}()_L1-2|3Ej#e(b^+Db>5*mS$ zKuM+)&=lf*y`7*pe>#&tT&ip{)VF7FG69VJ$ST2U%~*BF22;Pep6<{>0}(zWFG$|D zr;ZaTnUMioliPL$U);VeaLu7`^cWaM#*+=E%Xub;g-A|M8)sp4CVEJG??v8ywXwuD z>NC-n*QF4P?p+M-m(hO&BsQp~GSmGkVI^Zss*Atm50{&K^(#>C%R(&-uYuc~70-gw z6A6E}SESK$Y;)}xd*Q!7ueoP__VC;-?{&g+@0AI*g&A_D3DL|lzm7)YKb8Y2Wt_xW zX7a@@^#}p-glJZK^1(K&L)-B$Lw!gDo^oY4!E+|)e$}WFmieBhk`LP0i`xY66sC2X zp0m&tj(&#RO}|$y+^G0^9LhKp-UjV7J&t*~X+UCLU;Q3*w$IcybuCTAN=L|?zbD59 zKl_Ayt{Y^q6E;1p#DnBpHAU|-`>#cV+TNC*4|0BE>#LVXVGCU#36a+xlt0DMgt-{z zA42nBofxnUXqkbshnj6my&Jar=T3DY1|6DjD8-9Zt<=OUCh7=09GkeNwfhw$fNe&Z*a>b%DCRTRyF?L z1nPf$|Dy&52Tv@4my+8LmL#)h38^sj!9^|8Vt}RC-Z%!>8?6X&ZsG1qO80oRki+I&BZ*4x$UO(F$=%4MzZP{En6iJG}kzr zE5^ftMk8OxjUCIGKjUn&A$ySE-l_z^v%sNq>aP^`Kti8(DJgf}e@HIFX zA}1XnXyC=hMXrf*{s>UMt`WUED3A2u{D~J3FhoYq(^Dt^F(i?1X^w4mj(#ICd_oF( zwQm*u)k0165Bsmk^?M0ipSeXb>a=Y0!3)*+VL8;qjWH`%UH!GtYrBj`0O@A%)#)SP zH?p)Xn=oNK+7sq8t?(o7b^SAuuY9b0H=$#`ld@CQZgu0(`@&xjX=XznQh?q;tnRrt zSU0NdyJHJkTg2s>sQDPh(yV{Qe({Pajo9TG(DN^Z)NEj_6bOVtUBJ%44l|~`Zeo7& zJ@0f52fbukuhK=f@cYzHs*4duCb=yhcVz@3a!Wj@;tYe{q>Tj6VnJ`t1}DuHN?(=l zKsQ-m8u^4U@zeg8Eu{C#p;wD5c(rD9M-_fzSnSD6d=uk^A>%%V)VV&0cMS!-(O`Oq z^i3|hQzs`%vj0t6AkK6T7oHPpbL~?dRv@d(y;c5c1%)mItxdPo4W0xfsocJnZbRgw>bX()vvm{Cpo)!lBa#mRL`L$dV{^|~LX5iCA zGQU#PV77ujF5Ykb`I%fyKVG{@A-pVC3yEAB>8Y-I%MjUp%pqv$;N6=}dX%#XV>_j1 z@wP;~u1d^GxQ+xXXl5?hOM-wv-}YDMXQ>@DFJ~kmif>dVga@W>n(I;3fSD`w0A63d zD!0u+i3|d*F4-Q?J8h?{3b_q*2wmR`P_TyB(XUvSbCXqHDg$!(9yY3MgeRTzht*nFSu;ia+!h&R$wFyyEUT;2 z7#fDlp0*?Qz@v(LDO3#>ZrLB(PA8blj{re=el`9r`21c$+EZbw{v}j`R1A_|{Nwr7NK=gs#G#P6Og()KFUkoe@>1}yxuP7qtP{|%mk6*adNB`+qhCVAb}`{0oUe+UUaF6 zN{9#vI%W9js(7rw?WqeHF3nD-@2By{oQ!Z8+@kiP?<6$ znn8p2;j2%3ru@`qFD*1yryCz=5&QQ;`g!<9m#9NkS*`+vDso&K#aeyg3;}rEbS<$v zGq{`dNwlp!<<2zfk3CTERK-0@pC-Cmo-P0r>z7)J^zFffr%oo*hYt!TRPAK4a0|{$ zK5EY)dNdG%C$dXFGe?@*ecvS;H(>DjDA#PI1cx8ZX$PDJDWQ&rol7{>-o_ zA9~{n9hC|KF&r_#OTs@#MZsBhh=(Agg93Cu%T zUXjHmB`5tx;YAN1R`N7+HIabGd2@@10G^SkP6F-$>u+=IMPgW!zk5}3G5TywBmzLS zp!9}Gnx}Wb|B8Q<&GsLAn=~Db84_$YR>Nz2*_A?@jyVMO8iA!8SGjZD);8;p3?#{d zqpK{$)k>n$=!ezzDyaQ$7flKO7_TMd2M0H`b%+E7JLe3fj2-^<%eSQPm>p==1=N5J@jH@q$x>Li%7c`P`(v`Ts8%L{<&?dSMAb+!hC#Xyi zc&RI@8*o4S4DYNVM*gCY>UwjcDLm*x&u^9Oq-gKwGQo2rOYbitVyqnviy;+rryjqa zDStGV-y9s4_@*P(^RnA2%_nlh%##na&iqhi3FZ9gmNQML zu7|IC)SHY9BRnYfz_T#hvRN}%pJBf#)~SCNQV-1*wt?csoBoX)i6eD#O0#<5|Ahe0 z`vJ;VDuW`=0k!q{$gEPG@tC>vI|U0|^`iAe zHP#75S`ZHij4N_XzePM{5#T0 zj`FZTPjK8Vb6eUXJ5~6JJx*?|@dufs|eeY%6 z1&q}Tx00KrZxYRASL@=dGFcHh0R~CQultrszp{E@1>49n>$|MdechZrq4SQ=-g{s0 zawutamYRCdZ%qb_b|>~)Zxy7yNGr_Mc7d>@O~}APXknvBv4LkxiAA`Bq5!4o{FLyx z`1I8D72|FygLmPwZYbYSP5Eiiu0;A%|A4I4MPYAx2$oX>4YgGMwMo{M(sl&@=)>!C z`}SQ!98fR?GlfYlGE;)!t}hkf?cVszgvb?n^Y$}5x&*3Y)PifR)~wA|Z7BI2hvEzV z7ELD%P0qm6s5pSED#L5op-;cVdz3vZUD(y7J~xSf*Y8L5utQ-G-~T>HXYZrfGb6)>k0=^?dCwy@@vx- z+AiAuj%aIZ1{a_NyV#u_oOY5_9bfO)$yQSrC|zgTDmtrWx&J8_Vf7qR>m|er*FK5Z z;TJR?;dc|@rX)@`H*F~>2h#x3>;A7okET`K}KRGrW8g?Zr`(Unko5szXl ziuH^yTw1j6lFPVkXzfT8Fk829g~Oz_ocj{74DA+D{kNWg z$5E@Y%fE_58)Exz-M()`4qWeQ5>Q(iSV+Ecc@E@B;<*ux(qUZ#pxXJ)5IsP?)c3Yx z1O31umy%uuZ}u%b;+9Gt&ZS%AXle4X)5U!5sAS6@s!!Y-hEVGyM*Qx#fIMFl#}lIy z$-O8Jde0nMs+W>|wel0Q#Bx6iqsZcmbthHoHW8u`Y6k`y)*}>N3@H}vaAblw)VR0+ zdQ^SxQ$u;C+ni?m5GEWQtfkyMBqLOZ!e_b0B-~>anx}^o{Uj*2HkoX}l%9KpZ zWu>c!*B-&ZUoug2R zeXg-rTFcp!UHy`m{M?_|577b8fF_;pTJb^*96tws3bgPOw_*r{s6LtPNC<0Z&1ezD zISfi$$Q{SQ%38rZp-`_dL#-y5Co`PmVZe>EDnCoi`eNS{ zw6)?off>Cnpw814UVJ6=N@yXzoJ|t+o;gNqgwOZ0nm|bdCzZF9-Kh785i2!{0&6QLqwP0VW*>jko`>$hA+FN;4K|UOc!V=<$1KmkLlPy4nU}kQGb3t++ChqS-c>xV zKT}YjKfI!K@gdTB# zH}6=w8(7@m(p48yCNVH$yIt{yHK!)f@D~&l54Yq}&B;NKNgoE{lRJC}H=dx`l?!uQ zHE15p35A4GCzAXg`~9Tnyg5#kP-f1$@voE$*-rvI8%N{LLenV6Tvb`5|9)IkLpHO? zJBrX!-VvhT-k!;Ctn*lULxzZ;U59A12I3Y9I=gmO!1=Z1H*(Xg z)ScMYhw0iR$%8vGZ^+LynC{$){p~pS>(Ykw_(jU7(3k{KhbOH!I>aPQI1*Ste~Oid zaE;LpY!0_DJZa&-gpWFHn>=#95MiZk=GWZM1(m7-t6F{$lEq7=udnZ?N75;jhf&8vG z!m@iNIGRgSp)XlZaAl6vo1}X+G2?jACovKVU8g!c$Cvv z`6KE#$wLng)0<9-y7-(abc1+o4V)ryz7`rjvrxYy=N;4EdxWYHSsw}8U=VZWn<~H8 z;q2L$pg{Eah!`6&g8m`~;`YH>9IOMmxXa2pzh$U0w~hzoaf2J7h%G;v-OsFcv%!`F%dSF>Mem~u8V;+ zc0U4=FX!Wjh~CK#ylP4x7OIaNto#^+a&m04RAO2t%ED6uap&#NROZr^d{|cC7{QMZ zKse{BjZ-t3pSXB|oS!Wc>)%YGT~5Aw!aU6CFj<&pRo!x*^};CGq>Ywd_jQ2pZiwAM z{1qi_nN`>O)L31a7dxTgT(OfFdQA39v&N9=4_0Y$)W9jIAi2rIMrgxl;Z>`eS@(|| znB%u`L=5k!9sw?t4{c=y3%+UuBAwEo`$W>T6@tHmo%rG|D2jr$EN9BDGY?|xyOu>_ zxBzX!in=YlK7c<#oh9Y0Dp^be?k^2_Bz2j?i4?9JLvwDUD4$b40`Qq zn4I1XSo~{Y7CKuhL>)hd)mvX7Yq2}iBsmYe_1{nDm;M}+bQSnI_*v7BJR8kH(q`2k ze|^yX^alCHGY*Iq>%^})$HvoWeSbud_Mis8#c2Nj+3Rh;m(lA=ExcY#S zoWfIMXHos!)^1@@%E4<2vUrK5sk}%{62Bsy4J%?WfW)f4k!xEjN>bsQ0`D2&8=8E| zc%`mf-)&(a+3?cs^I<*Z^L+-vXDn-_s0l8LaPIi3-!c=)V1%_yaEbDvus#Cbg>3OORmi-&hDewc=;bksM6QbOju3NHSQdU0vUv~t0Gq=2eWi7u zF7O;eLywxhn@!b1CuA`o=ZKSa@+q|)7@}X}7F|IrI~8Dxby$#}^GwVZ7mzZJP`Gk| zMkKj-X_fI}TOMz%t$j_*m}Tkj!;d~`)M!HwR^lY|LaAXYdfZ~ZF zT63%7IH2qBpWdWc$WnVYXLyx4S1^BXSE6M(~Wrs$1Ekw>b>iuwUhM*1Uof zByZ}{AOtkAX-}Q`v4`ww1IS1}H@D&#sZk;do40H0w|Ki}567bhb+mHHF~Hg}Ms430 z^nz2k5iydvM>2%s=tlx$`n$l)=rG6l0QsM((l7eT89beaz21Ln!w;Y*%fqh6w(!I` zaiz9UC9k$Z+j1N1xrd*B4e}!hSVYLtD?d*X)lMK{M4voAM9Wsk2oqg;i^0t$tbK-K z6Um>>G`&gJhhNiO_UjCa8x^>`B{nu}(PUr%k$ z%vBsuN)|Xv7ovziG&V{)uwm80l!~51LFL3D!&BU3o zS|uj3W&hdxz=PKDNpCQL7_Zo0_`$*f{KP)Vg1Op1){0qmPLh9(;ejShL7?FFPVW(L zOrUqKb{{dDYoBzc@H`+rx!4TH9tRS;e)hN8wqTk%n^F_tN$}Y+NGJNla&72-ygko8 zON2DMmD$_kvfW)>Aox6Zvqab^2}y638etP7Ndb1cBs*n0`pb8Ybx-zhqSMoqBNUbj)YpC2 zQJ#vgy{-OqlcF?etgT633M}^<=2cc|zL_tmCPCCMNR&0u>^x-U>l9=Z)%z$E;JysH z^C00Y5F2;NAkg6A0dsgQ&y3wb&8Fx5vGpz$Le`wv@9g5Co{-1YY!YD3vkE?r0GwIVWt05UeGIHb(?eZFDvU zeav`r6Qr>|IAcBRdE_;ZT!jlcHhZU~={GcQNT|z+CDS0q-})pMvqgW(D#Jh>5>qj+ z&e#T}hkv&bKZLe&XF6&640K7HB-_M+Af^XW-L3h3`KQ~DfZNX7YrYTndZOxX2Jhc; zBqdN5S)wXb>^`_$x32``<64ULSNky1r_)&Y*sfzT{1WHAuC5^Q;m=i+{55rjV%gVwcW!{oPLd&m1KdV zp=1t!<3vJ6C6>FGLU?_4Cqx0Xu@1>H%c)wAzJjw9sO&JCJb_p;Fs&O^r%<_Cw;<`&X=)6eUMZeD zc+e72uL34mSttYnNW}4cE^t3y+`L`#`0)t1;!69oHh*Qky!4~fyZ2M@+=0T zuBOEXuH0OH9=Y?laCRqko%A<^`?{Ek%S9%K;~idVC#;Ha6k;pxcf;HdsHBG0ByPa) zvFj6W6Ap=Oo;F7xB8wqNVbDSDk3#XqCMpf<^`u9D)ZyiK$o^HP58@@+ndU&Gpou~H zhr<;VT>$(;9%V{@0`nZVYdt6D1BIMZ{BVy9ZckB+M1dNX^PODtH&49ZMn^@dHsWA= zwQ#7_0L#%@d=Gk_Ix_Ts#>4r}=;MsHe`d4u^W*)y0RuC-j z6HJ@g=JPQeXOMl>)yb{zY}NPo0xA(ZiPG}T?E`lJYxkWPAdxS{D`ayASSf)XRg`Bi zcOkZyeY;BJ?_curESZ4!ZWxC!H?}g8?cxr#l97y*6aBp}?!zzs;@~j$e-ZU**sG=! zRhF+U@TH})iYfjGGwxf~xcfd9(B%@4kCpVzHB7bGe?WdN%5_fqLyC!$S9pM_fR_TR zp5Ib0`ZZ7c#;CL=JCZd=NW}vmMB87(1P6!7$3bm^$}`{u3Y-i%=5Lk;b3Onta3Q8Z zgSNR+ta6X|m5c#B(@2NaLClMKDGcXKzh|zV&G$9N>p+`{6c83|n<0&r0glD*Wr%1p zGD-4OsIoxC;fq#&z0HS>o#>(rAA7Dv^21VI=UbdK?QrQZpD7bV0nktGZRCsALW_8Z z$e-OcO+SKvZ0g(R6_EQSswZl3;}}8Xm*e7|Wa}VjCA;wdEM5PVum30BNZo5xT@;Ib zr+Jon>IsbS9vDFAFQTi|GxbJ~S|%Si!H=uB=X_~Q?%3+P`fU)`Hf_7vtl^s}LjptJ zeQo#+jxO7V`Cx*30iA5;OTfi|D?9J~`Io`I{A;wKm8U5lUVNR1139Dg3%KXj4{Y!zsyrY@5v%tb4Rl7&j`EW@W>ZSe-$o>$e-*Ghv${%WA3?9n`&mfn zl=@1npjzv}nLy98^BFMxn)T)W&-V6KnYw$^Cx0WN7ula*(UWCh3vOp$OrVNlZpAaS z2W4W7*B+i9-&Jxv0%T1e0$sOiRFh&Y)fTM&jeW z96ikGW>E@_l^^Ic>R=_~cJeNW45`UkdF>DbG{6mPDtTuk-kXh*m`}jZKKuxnUFbG= znP8wl-}UzggKplcw$xk5fJT##ika^GOLd6x)c4}6DAu4qPOi8RNbEJ zlX|u+=dz-(>lyt0_TcL~M1y5<9ONvWLXU*tXrjR{RBLw$UMFl?AqR(NJ+%?uRpP}* z{J7-Ns4)WoeQMl?Hp-sL`~RZ8n((5&EhheeY3$A9J}L|G_E}EK&g1jHvx`Bd^LpDo z8BCZ7Ck>-+$T%h?Os*ul+9`Uu>)?`tw44Y`QFbM=nTEz1;zWIPYsCB@gD%YR*s2xLeh1H;a6`31p?3nWE?p-0MT77f=UnnVsh6ItBBC zfYXAML7HV2AS^VWfQCo4#7MFMH$9cBwDZf!{ke;&|(n9L4^o zX1;p^jyi^3)sj>4fik*qbTZvbj)a5m=v!YHe+c%;&i%!zY=8(@q0Nz%>GcrPpp`m) zN*4j@sY)3D?RpZDfNJSIY;6f~20Ej6eAdoj$S@V{Eam6OHQLwO4$zf0#pX5%reQ^Jj7u z_v`Lp9hxe?27GVd$_=gw0S<|~^yf`Q83dugEiR4WYfI%4 zc}r>OpNcJky$c8&N|Uz<0X-3J-01==(JUDwL^!yjTe0-Mq6DGy$+g0zY9hB9UC~3} zBUBmwz6JCtXqW3|*vktw0d8N;*)A;tuOl)rHxspqcwZDjv0Jf^n2PLhH@8(UYP-ah z@-{aP3sHM!xa1w`s#yEQTx))Bt}HARwb4DgOXu|#nF zH|?~At4^2pHM+@@#K$otePK;EQ^|K8#1|2h9F;deR3e+=4Lsg|uk*vUm&jMA{p0#Q zZ+Z}3CO(O>oaOooo zVfx|2r#@tq2h_w0QBYP^;BYnJ&tiPqH;lSildmTLS7^%v2ykZt(0TU6G9KVB0a3^I zWz>xGH)TC8Vq{Li3(diNBaXtT^QG`lVOA<#vs^LAzb25VF;hsx5--avnb88Z{RL*N zeC1h}DBsGowT&getn`2eX@ybb+AI$6x<+B+sVYUF0We9z}hC9NUA zVOnmXXfFXGn?(7|j*Y@OQH^i3{0SX(TyH|{vV|HL59M&V9sw3HBb=XfXv^wwSJkE} zkSrLdbqsNY48@up{ZM%tIV>0JBm_q+Z?RiY-|7bvkI%zBuJsmPeatls%(>fLmJPFt zp|a82GX4>MkU5Jv*|N9$oOGZM-JGQ^WNpJ0UV?QO+2e@u`3!C?n49xA(zLx*C z?@h5D2P!|S6jY<#e87@SE=n3K^f62Bz_KGhXz}$ zTVclPvHnnTH>?;!-@mn#A>das^Jw%fobd7bEMkS3fKuR1sw6w6ia^NVsm=0mVrDGgzg1P3uiMs>31>lJQQFEdNFHv-t;Hn-&NJK}MPrpI4p|KK_2K4-F&X$xz87W!* z_$%PmCo&EaU=kYp7r@nL4{2{H+IlYZa)v_&_+%nM>wlU0|Hr`Nf0KcK)%$&WDK*ha zVMBtYM2c~qr5v76l5n!CZ*_q_uKal)qC21;7AG>Yi2g(;Ep6i#I#o<#Vcv=8c&C_$ zs5Mjo_+L|4zQg8G(1)V$t~OWLQKxH$hqOgVY@Jw{ohbhP{y?<_yK*i(R{OZB+?K*d zlpa`h%QJp#Ac>tnVUWVF?TydSWXoQt>e|XtO$&%U5Ddp0o6^v++J~#|>HiH=iyGoq zNTfDi;-P6v7hNaaD9fkk%hQECkE7*(3G`pLwTWY+z}>ACItFq9Txa*NHWFvUPH@aJE?@7)d43@9CwvUXC|jAwVL;7*v|wS?VKr zH4y{M61*DJ_frTmB6yXRu>x|~G_^wZ2@&;Dyo80R^e;kClEv#Kj=95i1C3md3*O+_ z0z);!}F3r_H3|0Fr($2-#;u=74TOv40$W~dav|z1xe`^{m+O6HQM10fcZnIB?o%&t zdD`0Ze57PjkTC8L3+YWNrU#2YY@VNSZfrI?$h=f`lh(;`6LZwplss}_A4EM^Qx&CP zM8%2eI5S13x^n0iJ$X>dYnXOA;<9(6)laU;-N5?ZOZnQ`a zJ}jIr_-HK-AT=V9p#{>`eQLxk^T^P@$s=vY(8ou*ynrnN=~X(a|BH9DhBgxt*2snL@M6ZgA_%|;k6 z(GIF3=>>Y}7Jgdl(Raq^@k*?Cmwo0hs1Os2vz~n@PVVP*?RrTb@0ekSsWJ5879m;y zAY}MO_D>#OQx4~HF}E7`kTuxn8`aS%>wR9ZLf4maepzihdy?O%oW%|M@g90=D|_3G z5_?$dFqWt?xtTMk*lIsxk-_m&KP_D*hFR$xyXzeBF30DMhRGvf`Evu8Fv4=1#Y)0* zKt|(vzeeXa$_&Fow9B==Nkty+>oENEVsAPB-h9=m#TedsTwxHP!4jB(m@Du z)eR28nSbA;CRwh(nbO$%qZ@*{;J&M^^mLQ|rkcWI{;^UJE9=*TyAd8*5C|8Czo+k7 zelF|?ZN%i`zajNtkN~~VmO1ZKjgv)lC@Xgv!%cV-;WKe#09I2b)xir<7`F^d!1bUt z0+SkWLx-C?vM>6s=9k*MvE>CpnM*U0S1_qQbcM%jDV6C6%`=aw5^!xM8fsFSL*S^p z=&r<6=Tb@_7;019m*xy3u)CVxn?03;y44QGh-(1%f$aBWd3q1!Sjb5`s(n)BWtTG^ zdi!+6pXbwZ~Q@I1NtQ3oT*h26U8(KaHRjJ6S+cp;fE@|ms^%L-w#Y&O6Pt3Z06e9YK!_>;ccm53beXuS4 z9onwMK!6;m4)TNR1X$Pd!`RZ3T&Lyeo66M5oAywet!_B`x@0?7aZE-7qF)J%0kxSw zX+PixSB;Zzx$7yXiO@3)0egrh2S9ErHQ5s02|lQ3r52)-eXd8=n>js@4C-A@R{Ap7 zX~2xavJ~>LT#e>t7QI%Ce97xtiqsmY9VHHTyi9dJ&7nNs9M9T#U;VD#fw96cj=_xnsa8>IdkU6yYfF- zEAQU-bKTdok^(@eyqq@(!?Wl~R=ym9JIMJl1O=G^MsuA;G%5)7HN+yBaFr?Lxqj66 z$DcXHvMv2?8cA7OW*Xgfdyc6^Y4k$c8|yuf^d;sM^KDUKN(O6S^^C7iBtAL^6`&T3 zfeUDp?DBA3(X2K?qf&zM@b=14&gw#K#C=HVQ}eX!03MPKr){cRkitPeS=_XN(LHmPL zVbr$L-O*{vwCd&8;8Xu?wWad4Pj52Sl0#)ol$#kRv8H#rYYP}m-vhHuxoWI?r)`q+ z(+1yM&{=`*Dr-Z6XXV=sDhD=j18>)SOU#dKJ!Dpim07zM4=<%m(GN-^>PnrgIZ(X$ zs{HT*(e4~y`15>;0N!S8FyniBqipEmQ)W}r0#40iur8;kFEnzqG(q1sxsIS$T$Sax zP5|MX%1QT)i}$&OsF%R}e86)z0FY24{eNF(|6hx&c%~u_@VnX;^miaDaH~$JHYN5;e0UpH;l2(buxT4IWd#yMQ45IFO+F04ASHKpv7$v-0;zDMgC$Xv;62H6JgjFK0!%B|IB*z z2HA|caMVj-(w+GcZY*~mkSqDLaDMY`n8P*F4TKu%vM`3t2)Vp7NC_f(W&WX4#%^># z7RLRxSjC~{`w!mxUihpuQ1lBMTPtgyvZWCM03b~z?Pj$PP^48r`psQgnSY5Zgxmex9TxE*)QGu{ECf({|C4H5_z8Cq6tVL3#l9?k`a<)T5Cv827$qfl4c`G3r_>>%3YJvni^a-GuaqA!al~?zjJB3CQULE_bqKOvu5|JlYr=u2%wJ z*9V?BOAu^|* z4%)cLnaMZwATRWuQdlb2t$6!fnK4+%PeirSl1h0Q!i~Aa1zC-~Dj+~kkN+Og zjIBp66Kfe>wSFu#9E!3pJASe?+}3%ye*qeSxX-rbJ9+o3Ce-5_L1Y(~a6<~*4iZ}< zHQg6&wvXm{tX;1{UF4hjL4T5ZX_>>wp*~V1)uUpMWD&A=KZ~l1dZDLm%yxrn86iWXgNK}eC0}8c>#NP& z*L6~F((0^Igx_22o_X6WQ>VUKiZe}3#-T<2zwk2G%21q)fng8E&Jo9_j9ly+b2@rA zut3Av>d~M@#NK4_kcXODiG0zMUUTA6)%;cG>^s-Wa;JuVxa`uWcMEBx$GCFX2ZwA4 z814;PmD6heBgt*nmNK+S)^>w^pTsv&eO|?GMIIN%T|!%PMS352CdulOAVs(|vfELN zH1|iVGQ~;D!m*qZ<<0k2 z*arx|-$B*(B6q*rY+hPufOh9($;ka!996qV%TcdSq|*`iiRG_wRI-twIrw}ai$LO< zVwl}h+3^B;1ooXRK-O0(Uo)l<(V*pVYxG;H5M#bEHGNcQmp@%ikofeY{+pexE;bH` zbD8K{hnEf)UWGMypG%2nq(Y`lftQ!|s-kdqca^A&hUHj&PYQ*{a+^oyv$6hPz>B5d z`#XcvhYt!w{ep5t%@NCT$Baqv-M2bryg^R80?eUmN2}&p{NC;IIluQu?;To;(YQ#1 z$_T;KJg+OzBL#en5%dOdwu@I>Lw3q_JJu@H4Sq(cKMg_q1dgfCO)5SqT!-ac?|7Xf zy-EK&|NQ^3&qAdj6S;);j8wHsylcS1z{3mQui)DqIG{ZR652^gvK6*wM?wj0I;O7$ zu%=Oj9b`QT+=TI^=uwt1g9Y0D~A} zfb@Y0!OrGoLanxro0d^)_T<%J)K&yH(eLsLZ>F>?tW(Ip@pJH9hxwp7p$si2v(Nnn zXn(ctd5Lv{#0XRUwGG7r05M;=po3Cr(6_jzB4nH4>W}V1I`Pxg(*mK2w;|=~nRuG(3OkT`% z<6ZiE17*Y20xSU|!Jb}77(aK$Ex7*p6Gzw(Q8dvvu%4D6!L4hJqkVlTzc<@}l1eH^ z4Er0lfWijZm7L;__V#T5sJ1a0ISvwG9u4^sjY)hYURXMPJzXFC;QC~N^%sy*;m93L zJ5cwkIIUfVQOFl|Tx0HXvBoy|a$uDO@oT2ATz;@Pb0@ZKX00*)r#U2xUYp8d z@ilEUjU5{XrICf`4STBhYkDnw-v+@cdLo8`DV2pU+!?tXs+HB2Hr56x_NX$n%By}~ z37URBln+OZWYUSMk?4ilgb0TSLvK1a%o^uAP@d(u@wWyAl3Wd<>c>+-dh3#K>g9Rc zZ>7>3B|L!x&{FP6{q7&5%^~6@6SyvgX6SxWg&*Z%P*Rr}`zTp%LXaLXiP!zCZ~4o! zTLORlIQtb=A2r|2%pWB#jQyX_szSxK46Yc|vC@ZAN0SeXsBrbz377M=si)D z<(G)fL}8(H6qJ|p-cjM+s;C1Y49jg#^b0xpLO(PnQ$JW%H^`yMGkpE_>lEWTTJp14 zMkBPd3FEw4IZoAQgbMG`&TP?9m&ctuANPZLb^H@F`!2xZz{0T@{3?Q^8GVknMkrDY9 zJ=;78%(%PVi3Y}nQ~>2Xu0@<544%3Xw;6c>4C<;wUufPzlag$d1mLKj^b8noU#)OT zOdzuX9jsET2GPVMe%cKqD@DUy;w<~S|; zysTPWZ?{_15%r% zZc3#jFHP~B=@L#pBve?iJeiu#l2q)-Nc_*KG|EN2 zbV`NCL+97efs<0NMUP|=5rpeF{1{7s&T>K}uohZ;M>*XSQ;bDQ8qA8g`V5@Yk~Yle zU222*3xYQec*LXg%n%mL>s<#MWZm;C&{DJD1phKuKqlXukCJ!raxd(<1e0%1WUpB` zObfT-vj^?|bVbnnkxRtyM@+Z&NoV84SxSdzp2-K)=tAT}9h-~J9VR?y!>xFEr{kWB zd3aQB%ZiAw<>Y^C2BWRcd%U-?Mv$q;(%{_JSO4i(OU{2T9MZ3P;O>oGkC@5Ms>9?g z)d9u7XuZZjq`P__Gt#m~U$eGgX>`iGw-|6z{0@bhHLqeUL5UqlUDBIdH!cZZ!Tr5M z6mvEQq1!4}`W4n5Xc$1l5uu1!&S9)C)hEGXj$tYqhw> zNppH#89le6IBg%wrJ~$R$4E6fhp8JWr!W|CTS0e@xlY7>?S=zG18D<-j)EDq@_0Se zrm51{wDKXR)UH^FhfAVzsor8YC2m{g-&z5tT~_)9i}c;i8Du5aw&?DIcQTValuh{s)sA}md;V(hn;>M7O-ILMor0&V=u=B(QieU zwV4v^H{j^eEFah@V=?ein3RF%c7LSv0I}j=P@VN~A~|o9XUM%a9zc{yh6Rpv@##jdu+ZGLRK8Vmy zJnKIBD20TB^)kvISOb)vDd?(v#7*%*dzG@0UMr<;HF1XaI<(12>1hjtOA7!#mT4w-$OOuiFmAM&sf_(Xav-b>54B2wMh@xhVM zTi)KVQh5mP_Wbzz7Y*b8ol5;nrv7_=A(=Z}M~U}Dmx^K2YI7c=>5A{bg@KJ(RuX+n zMZv|ew{Lt)-mGW?OUcTaVfJDUkaEoo!an4!y4K_f_t^fea*_0*nvf9?EL3 z&79v7K@x06HmgebEqvYL2zS@Ej+ePqyrt0{n(g+btI6O4a9ki*E#bhoo7@LIBGS+B zgxquR5wmp+6FXb2PU%KlX^cj6d0tcFYD;s@_q-w)hn+MXB|w|Im~6|i#^5pk1N`h^ zNju4f1csdza0)~H6Uw`9R%0NPzk&>XAIkm$q+I_3xD1sNW7D_|Pi;0E;^f_N7*S-{ zAOWLzlD$iRdZ=OePHFw0O`QA!R>Q@8S$rxxml@I=SJgg?l6JR`e4_f=PKrs17LcI% z>|NEwdvXFSm1MOae&PI@BxVP{g$EHJhVrZF@|)msHzg~U;Cta;$2CN%dhyx!0q0jU zBTl6QU1`FUMkU5e5`^T!TT)l4ryJv#jZOU<(e7jP=&bsHL;Vbo_MfN>d4QO^+3%q) z$RlZT{~*3RT#wAeP$&C77xu0C51XP)rKS_(Zlfg!_S0&MICABO9@Km z$FA>pofgANLM&dBZ$0WL-fMYC8*~H`Dl^nfR?aSESq9~y_7!mY5svZ%)0-)e4;A;`GQhmz!-5=2BS$|^hLVgtO783%8@P(qyPt#Wnp$Yn1FMoN z{!<^REyVb*i=jl8Z|5M@-V2ZLrsJ!hK<;XsdRUQ)hmYXRPq*@CG>6EqKA^K{MTUi& z75EJ!9vB79^Zj-|>yzk0MJSohzJJgzM=AZ){{w*lsWs18&cM;}$0whQw(ZD~@~r25 zDfq7%%HyeIeO&2N%shsaYs()RcWESx-RHAyO5nla{M6mdNDO$Au?>l>pxpva&xewm z?N<{}^uF`=F?5#yb8P8T<0V(6f_R8^lZ&_z+)2hhpxDKWiwV|RWn>$PjGVnE`Ym%8 z%ax?pr|)K|L2q#h^5Ra7FK*PjAU0c!HChZ(6lP6REe6ci8LqB0>|Encu+DM!SC^s{ zGmA8=S^P5d&bA&)I1+7Pd9sg^?sq+V8yo?0T8m%SxRfra1`Zv*dE1U_jyr`m5qAR^UuD;i-{CRL$WK==o8Df zqq*Sa`@I6b8PlQ!aJl7>VTQG>X;j9EoMlu^gi3Y047ksMx_c- zpt|H~tRoZKgNmIZE@$Qjdr2_U~!YoOE2`IAGaf58cgscSD-bwPzn&aMmbpd z<7IRQ7Cp{lg!@q#bLbXBHlp=j__+D)EQMmzeEE3-g9UH)Xg4t%(l)Qv+WuBRF=&G$ z*YJ26Ath4etG}I<++&!QyP2=yw5>Q)v|zQ0QLvB_?1L2=$ngEg5^|ldRbbHDJ%gkB z@v}}UjQ1AtS$_LuX+$%6ts<#0IUcXd>V+RV$UGQ}tH4H_MuPdK7Xiy@Q(0TmBDY9A7~%2WnSIp+xgn z0^HNT06a_eNn=54butB-p@(Wnq?1?)h2l6M&$S~a_Vc8|f<4UQlb(yNOQXd(S5f+P zr6hLScF#(z5CEQp4NSqS=h5YhKr!b=B^7Iq`U?092tTS1<@0}UFp|fymS&}~%Ba}H znN;L{W_j<1*&x-MIjOG1sS=uj-=@#C@ce0A8Q2q;h$Wq&{R!sw#$H1Jb@J24eq2DA zn>h!>7TVnTW%q5sGqf^pL&PCOKvJ+S!zu}n;z*l9&VGS6cJ;9#QM<2ypuaDTi6yWO z2XzZnl8U~{A49L%_!m%G9xOPpdvh)q%l&7v@Bp5!l3JacGwjesbD3h{cWNb_?kE!< z8J`lKStanA`P%)yBd4;_bR26&9nz1>qFcN#PGb$<%N%$%m~KNjk1K77O&@`705+xj zE!wWJ*Dli<21iqwAMj5DeO6f_BuIE|N^6WaNZ+e52o&w4mC{s`96C-AhHU!yZ-!Q{ z@po#-TpKb%%%{g4lw<0Q)%i&AwQHaz%94L_sxTEc1L!gZvSc);B0D>0hybqGd%2 zi^UT9vZUqFv#{!#7jgC}u2<7UIie$3y<8Q}wN)#XpM|~2sE9%`E==*XXszyu#G{YJ zxXh3%VWnxl;@t@nDDZeWBMOD+1@!(EPl{%}T~G{Z558q5K6H+Y zSuA(f2)&8ZN{*CY{6k}W`Fzo@nTMGx=#$(0%$19(J3np5sLd}8uway>1Czq1wG&3{f0V4aOGVxSu_^bKT6gu(9f9$rK;k%Vi{|m^$_?GHuCP}OW^6@V*VLOa4W!9ymMh-{7T4q_$K?Iqt+$pFW}?r{VaiC{?Sn7b?x7-x8eF# z-+c7WxW4SjUSt;c8d;4aN%3p<=fnk?Xf|_8D)*iTUfHoPyOBziL{{v9?P#AVg5DW4 zcC=(H;Q2*6MLl0Ku);gdpgZcttoS=Ywrialek+2MUpAy0sVUw=ITB`3wOt*)4A*`e zCUOsB+=fNb%x*(^RxgWM%+%5lphQEV@lMpnOf*i83}$vkHH!)owKoKXqakhBz+?gu z`alA-xkTbWLuwPDjOMyS1z+nh^j5BGk89!{M{Y}EpAp)`_}PXialEHHg5c7Ra~7ZK z;?P7#&oEGOK&_(Npy3!rI=bD}b0Wt(hZi)z-&KIVrfA0EDQ=fMkkd^`IyisFK{pe| z=@11-f;f1U!dg}iGEs8UutGEO@-{V^5Dmyrb0 zr-nh&;Hs*}<%)lJ;Kj>wO2TI1yBZ%YO`MEFu9>WPO`spx$Pa(T;X}2xt25<7LVZC4 zsytMUnB+9kycR2$UmnC(8I4L*#4cp%u$_p;72Ws2(VI{n!dvW zeqGynkF_oJ9kzGh!GX7~855w~#wx6=-N1l07j#{7|I%6}n!FYYgl)izqmi9p@npi& zRZ^}!?DOig3_5?O*TCu4W1qMN-29Y=mmsl9Tmro_iKw4S?w8yOL-3(Ml?8kGAT|^g zX~2dJ64;-8ZQBDY=E=-5++}?J)^-Wm?7UN&J>GQK=9hVw0m@jj7? z(JC9$DiAIG+;u6*6$obxG*}D8$zvS$4!ohbc*NTGaB>ntj7D*SJ`ToJ5EBwtdwBmL z1ql6^V2y$7p0Ie8gjn|@+l>-Ywf-0di*K(bSCF&jzh3lzooJK5?A-I(bM6tRz(97; zA|BZm%Uir=q8I*=NH%WwA#lle2O2)D*xnekfSx^+AGSw01Ac+>0YLxD+^V|a=46mO z>wJePU75-n?av2JAKvoY*3JScQ?1yWJVN^Lo1BX0ek9CZ1$4ajOiUpnL-(YnY*ZNOOIW>>JdB+oY$G^vz zm0y~;ltuj^-cUZTqB}BiX4PklpitCosl0Qn-8p-ZRr3&GPuV))gkcy8B!97AgaJg7 zo$j+=MfS3(FUG>ul35VX+!XWI)QsB|l*;*}mh}d*Z(5$Kxy)+s`L3>4aci?LPzo;e z1uyE2nb7K*^q!x+AWsiJe#&H5a!;;(XkLGq8OUyiZ`z%W~b3eYE zib1*di2i}|3ur$nRn3p}^LsX%sx)$OfF_R|Y>B8WN%HO0RJ-F}0Nu`Czz%=#Asxv% z^M{*BaaGS=JSk!-zV(WV+Qs=qifft@Dg7=)uF4pV{0gNtDeEbpqOc*|47I(Rld&5H zZ7jYzxKNOt>V{_x>qr^xU46y6mAd%2prTUv_^urjmCK-ox%OGu%8JZ0qVhly{jMBO zyMz2_Ywl6|koZCP)f@;VkmT6kcc*U>q#~vM5mv}4;$3X9aNETGRwAEk3ghhKWzTx| z!+z;n%3`Q6L7kUW)LXf30P))jf{6y^n`x}#i;ZX&tp1gRr1mhO!B&2_4?WT7?lbA% zD~u&f=@@%PZ${>ZnKu;mwmiCq@B=aht&{tXgb8jtKl0oB83GYMpcVSevv@)g^M7gv znn=YSB0S%wWJPk{R#DOmAXW(QQloLe1L^i3$MZUBq~rsGsHe~v*MGz23r3YP1*lJBRxw^qZTgzW@I1~Vx3nSHf8l;ehh>@j!p6! z6rzv>8N`kJwES-N=@0sO*OVW0e38FimMY&U#=3}FW4{h%=ic>*`@H&OV+e7egm$Qx zqeruEowz!;b1yY*f_Od>eMYZ5zfRwXr~bWbNnLv@q>W8MM@2`3lwdA1|HpKjU?K;a z1B(DDRkHHKgCjUP*NNjk%MB6Ec?6fET9VYWX!JoPpT&#T=K{fe6c*#IKS<0 zq=@~>?n!x%-+49ZW?H^d5;TO(o?^Fq~(&{humb7Zb;264jMi(%3TishTYmOzKFn z@i`pe_+nSU`1it!uVvR-cRo-smfp6Tx#+jt?}AyQ`BTS@?I$hFh3JYC-3UmYxej> zM5)v~4YS^~Rhf@*sZ4AT9;DjjLen+WD%lJW3ftJ{qPK|w7MrW2GseDy`!`7y=IADt zTQr=&K`k85-jm7_Zq^gWx0ADnXjYCVVqTDKLF(#9eD^8RmjAdBPb~_42GFoJ*8=sM zf^w33a4bTdwwOndhVE~ep$RA(&Yor#(xmC&LHez9@-$im_~m^lm|k<{qfCuNnj~p= zBysFIi3Q_eGo15o=_l%tl$Nj5H{KbMHFfkPtUd%s%OrK`fOCY0)7ua~qffUBJ-)Krw}4% zuClxQIJxOQo@0jI&vshHPu#g(c{jTRC^hTeaYab6UEzOXyH8EguT!<98&RxL?(=By zM6;IdSowIsEoAuq@ld0=X6FF}LwN`GdPnQ)a^NGBuzVYi3TnNe zUMGv6QDLH#9To3Fn>%8PngzUto%n5jVT1_WgeZ!5XDyt2h`4C6-*FSFCw4NVhYJ6T ziQILn6k_o+lc?9Bw2t@|JQJ@uj5!@w5`m9nb$eJ+s~c)d^gZ0+)p{fP`xv3Y`;~h;PW^0YNe=T%<8?vEni_RX$M<@uHr;~QhHn=7A!4sBx zVU!z`IiXrgcY|=iw^Xwqzihp${QZPk1BQuHv=C? z`rZ91ha%@Jtbf5mRb15b-OT(|3+9INz+-m3lDL%fmECcO>;vK-L*Rj*Ej^hRy<3Gn zfVUVZF$Ox+OIZ{_9>XGA(OQ~_3{3ePQYtHJEz4w{opqrQ1px+iN|x?b-_xSoIGB9j zhAjRUwdZU4x^XTTx-Y?`fw$jW24B6Z?`G_`FC9pip*9L2p&B^s3p3XBWeoaUz@y#w zhwFq+b~C;xdI9xM;Mi|vpnv3Henv`KN?LfS{Tgv~q!q}Kp*&Fw#o-3eHvY{`huOfs zgoXvRey&#nYsAk@?&m(-lrtyr842*5X8uOvI+9?1KL|~h?&Z|e_nQfAo4b3{gyJ&_ z^*OF_=Z6K%WhpX5e!?L;8K$e0EAY|u7V6fqM*Wc_!NkieuwEFUrb4R}%m!GIlxV4! zn;r*vx;89(la>kamRk%AwAD8h$W(nrkz6oi6Y${na|dTJMIq8PK>0z^>StWr%(t~@ z8O880vZ65$e>*J*jc@sD_BU{+T%5$kr_;Mo2|XK}xU(mJPBPvw+6j_Pm@?F97@ZDp)^Uq_NiZ`X71cUnQbHM5=N;hPqu z$^I{3@9AzmC}-L-SDE~pH9n>_&`q^SDI;2D=g$YS*2PIZE{xFnMfrv|Z-oTNA6~R0nHjwgv$`MTL?9WIhW9q)( z6A%Zr5~=?t?H13*-tx0Fdj8uai0wu5UC0*290kL&nXy5Y4MX%GPCPjlQ!F3;>$K$$ zz3#Y9s0yfDZ;>JMxQ5X-4oLb1V%7rJ1?wpdcAp4-Z}Phennh*AiunFim=&!kIn%LX zR&rBI!%?QyE|&Vz?WO(8R;fctzsX;8Zg*dGSOq6Xj(IB$8f~11lxdY_!|X1noU@z1>9d6zk<1O`WA zUTQxRvF;VeU<&U+R&M9s(@!^~l`gO+10H?18%1y_@>r~rDYTbnlPO*sEbP@94_J)y z68FbolKg;d*hz7w7g8r;RxQpwMzQ=`Hy_22#et;)pbJYB22aeIVJi{leyHPREtbY` zlEJzI&`c4;&wDQzDBykY(0RB}AiM{tPsEzy#!=FL7*@+PIi@o^e}g^Yvqh z#+40Tc-C`RdvN}TVL$(vl_Z5#g}C(3Nnx72GG+8(x?p~AO7MkX?A2PoE-n3gG0$G7 zci4b?2G2V}2|4u#Cl6qSIZ;9{jiCAzYG2g=3OdT@i>L5EK~*`zoUPkiIECxdbwcE; zm>aPjM6r!$PJf=K+O3hpHYc8SQEDF6%HEjTzC2and5a>rIY{nQs$Sk^IJx7!fVFQs zy2m$!Kp@`TYo=P44^dOq$F8E?o`GY(5>}~X#DWee@v=Vqfpl_cDznHrN*5bqDz}dg z+!0E9RmoWp0pt>-F9;ga*lHwb$}6xG%+21b?R<$AFDwAE|0MQyaVj5eH2~$X_yV&j znnpG%#^`g17I(_UFB)4Me6_D)1@cC;kkv4gNua$1CM$#PA+rpRET|?T+$!v!mZvo;Cvh$15 zw~ff2^f>8V7Qm{HuOzIIT903u!9N{DEDeZdgPNb_DvO6Dv2}l zJ85P=9)nr!tQj?Z&`=U5cW@Mhdv2jLtJ+y#@@K>QasfRz=7F2O(9@6HP6tUE z#zUdH6P*(u8xy3(3{$e|b@&Z+mFoz$(tI#DU!!y{VV@go&g>PLyh}`@=Sw%N-+2F8 z(JGOs#ZlF1o_;5>bp=|?+8?|2g@wiwfIXeRYE2|6ahu1ZkgD0UAG# z=PhU9N~Q|iDt7)TQ%~D;+G0ks<9e?;+|+-=+TMWkuT$Umj}_F+03+g~ ze~pkRq01Bzh#pRHepx6cGI;Q!G|RaB`Fx~1ji26+|BX|Wz6cI(^AaxUFGC~Cbl)@h z_zz6q<8^rt|2Tn>wq@&})A!^PxOi+KdhL6Ir(6GE5kPK}(K2OAFUC1@V) z)?;~kAG!0EYuHwGobUm$Atpe^=yicW5plvorv(Mv>^P$#9l!*E8j`{XYrl)%K1jrr zHT6sf_~3LNNnJqf+m-4_P_2~EGt@{j`M=$!rA13RL=_kuTR16&LAkZyJop?ubI@m8 zOuu5^k`Db=At6Sc1jN*#021E}d?w5tgo6mjn|jy5vQ;$_W-xz)HmEevk3v4lMBjP79{_R7e+FuQH(dNk%ggRscCS?>1Tfe`d8!l7T?o;^Dtu^VKx`WIQ;>4e8_74C=W+3 zV2!4xT5Cg*PJRe>WlRR3#iF+SLVAjqqBqmulbRkFf?(B^>4EHS-igD1BtP3a^-7th z2c{3YosQJdPmN<#g*GU!Ipwh=7JTFL*^Q5&6zSV0TuNj;{`AfVgTi$D8VTOJ(|c}Q z;@Cj>-RF3n;ECdj!@8V{?q9*dCpB+Us?yXdf*8tW@7ELFKYPh_q-z7XrwVm49#hP5HU>iu`GtYs=L%*~NDRzs>N>$sD4LDbFdi`(yF1 z@w4^Lqghk3N~<+50f7PcWZ9Uvl$I=7L!;fGFN;cf=qG^=skf|Do4q$*KhJCTnDafn zD!fKtOyq`mAKw4GH+#i0qKUUL4&whhkGzwS=TDfD(Z0%c^d@QPpa|V?lgo5q%+*6< z?*Bv-{=ZO#UshQqkrXhibjFFw1NaCr9{+2(S)1shtnU5nr&_e5!i5|Z8cZxvmjoGWyk~2@f%>m_tNM?TMRkuJW_HSco zgBjZ+W=u`gq|%hs+~y`fRx&pv?!ZM(%{T$Yj3G#4nfKT3NFL$%5^>+W_#B@_qjVYY zWnI(yV26UUDq#V-=*&xtl%dJBV%)u%NlN_UF!<>A z>d6ggAQ26L#fKYge4RA~nD_AS{@*_7mJ-H9SF@ep+tLI!lHfS~$zEqk>(w5$&5Y#w zodIU_zQ3q)EY(cRtAMQX=_0QooT(xy27w8Ix0{aJN;(7$8*-$<$%Bb_LHXefjR8p6 z<#3sWdJ5}JX#z7OlP^sVqQ}inO4O9+D!E|Ox6OfR((K*~i@xy=7ofQaB}*1@-nhJK zSN(NHf#e~m5^mNdhRiZQ*>*_AC`mbEA~EX;J_xD0ICp5*C;h5x?7rY~8s`((UqE_S zkT^M+U`WTHgb5qNbL2T`@J{uehMA?3lA)R{hsy8J!NbqA9Tv6`sNl!T`B*|VX7Rto}OD|%ekvVE^cNZOx!8TIuSUjNPjf(!0J3K>k~cOv=Y2| z6pbd>Y#FU9ZmE+Z%Tq`GjG>0`1d}DvQ&!(k+Stxbf&rNY=rJ8)SF5uthTg5NPX@>X zuOi;RfQqlDSdQiLG}>fEch>kNdhj8YO=klApo~iGjY||laLR`r@lu;KoicbcBOZbl z{KXaQo*$8dX1O_x9{wzPh|i3Yz`gonT>B_)-ZEQmDI(6Uk*4r7+Z@XMuJiwzD`bT= zEhTn#Hd+M@Ex)@Ay2J8tf5}&8135c;Ex(0BwXaVQoSQZjwzf0h=EnK8w6Yh_1BVp~ zyICM~u=q^D+j* zW5(=#$I|K4IqbC6>9oc7K8{p2-f68UHSjwIs_yLUN*CRwOIgI1Sk9h#RK+AwA{xj! z;-^L8Ux4Gq(@H10Z9{qazv!`6#n7>wWwi_1K7N?|5Gv&!I{x?6l-)a$N`#WokP3ocK_HcxcjsJjNP zgmh7ul_etedF}5OJh>#06+IP$^}0R~HEW8mS)YI7HPW=relykbwFQSzV{O?@U$4XG zg@31(O#N1q{l7Bfe;q&F*6>U&LD@j3jFh$f?`jcR!8jjd7;g5QkW)lukw7V{Fz7H^ za0)c~o>dmcSs?uB!sCY)gVmjM3J?C=xgd@psbT@#+s5rFUpR!qZ~O6qUZS_C%wbYr{a#~Vfv|GWdW>{)I0V6?7MN>LBtfv|Pm-8r&%QO_ZN`P@V zEXkrGO0ULn>y(=Av6kD%!U(GYJ>en)ILx1w#XUEp^(7!qxZ0QWQt&ICl6hU!I=;aPSY1}08Kib-ZB z%6$%Mc|1#{V##t8ZY6T)rMWOe!8gJLXZw5NgQQQ&xdW`y9^@?-n@}<4&uy#5^55)% zp1&DbFGMg{^zYrN39D3<{hvDzm6V;ugt;y&KH*+Oj($`JxgL6abMB`s(B-5=V zWO|@9U>!~$Yt*m807^lLt_~qbmgn2?atbk~%+`t~OTJw%a0h-BjS?$wy2~vz=-yf? z-$m+)$?tShSN(vS3XALz@d-pu%_om=+J-s?G}egMOv;1(;Q{Ycly8@cQbXH!v9g$`JbQv z@WcB5P(*tPnqKfr8|%^OAi61r&&m=QvH9Psu`y$PH~wHaR!7(H&(_DGuJx_MHqeo4 z=^Vqc$Z;|H+_zpR5Y?7np*~=uzTJ3>Ui1z4%f`T`Q3Gn)q>2=JQT>)JRgYkKsg9V| z<^v1J&zFmV=qbGRc^drAw=Lwz$*E#>7ntn>AIbw2TPRWqQ7%`H#Kar>0tef!t{DG3 zS%klNo~!~y)xNQ ziw9ORbr4KkR^_m#rtK7HBpwMi_#<>J$;~&zAAV~j(JlU|oT7Hduf6vP%_z5cFg~7K zh2&6CFD{AY%rp@_)FJ9Gz|=7-EB4Dw*>NFuuI)UO=FsMiF9>B1xDpTF&sU;zU-ao4 z<__LijFWis?rE4Ig2at8YbGC9LQyj*6zV9>e>?_#o+iW@S66X&djkC!OMW8qoI=%V zZ9H3wkqW}hM)ZwP`(>WVB)$6ZTEy9i_IrU|49NijWIV<8Xf*ua4+PwuJ4~T>P{K)< z0kBuL#b1*_@7^`$mDpUt?hUDp@9o-dc+Xv2n{EzIOJFw2t0M-2*5RBnXFdgg0U@uL z)dZ*nG?NmKDp0>Md_@if1ZYSr)I&F{L_T7S-wVkGy?jaU&7Sm@ji+z02#xE@Jou=dhzQ;>GzSb4ZP!JS)25{%X#78gTEDw%;yyR`14nF(Q z`A8l7s4nr-{}ZdC6E*RJ3ig;X1ud#+Hu3LTjE>xuAh8UVqPmeH8i#{E{bE1{iVWIh z_g3|dkk>i{|4*AUd91)N5cWyYUA=*{LE&>vX$#n3tEBO}GJGjM&dl*es;3PB)IjzD zZR2-)W5WNq8re4{G@_fUKg1q-`-kI_%HP9_yX1IN>AM{*8J%}68)P4dyoG@CIk6nK zjtV!Z!Ewp7M7dDGXk+&B+&_4|)g%J{+sMd-l>28bjeAS(gSx)MOXQV%m^;>ieDZ-V a>!ix|%S|MDie2bKT@t7`9hpQ>HDHv$>}4gkCa0EAlse}=L@2*p+aM(|%W41fUu z=t%%DrT?N$|DY`+04NB5(f$B50KhR4fSmmo{rB^41pY?gZv_5E;BN%}M&NG*{zl+$ z1pY?gZv_5E;BN%}M&SQD1RiG|R{$^Nq-3Q42nYy(4^Kb9<2*ndfcgR%1^ERk3JMAu z8Y(jGYkCKeE%0EdW*oSOPIIVB}6BR2~zJ;xhLN>&jz4qlL;pdby4n3O2L6t{pN z=np0cXlQ6y7+9p(*rXsjN;=U0b9ihA;Gh8D2xy21IDlt32#7cck6i#D0Dyq>M{WNR zo*_O*dV!39@|3Fl5`ch+i0~W<3H|8_wP$B?O5Pxwveqv=}(aw$54r%3X z^*q$AIdGDd1A3+X6>H(9nvuNwm)!qU^uH$(?IXY?AB00ejNPR?d(25JAL~?1$7>bA zzlzAvQsq7C&P^vI1Uq-Jy5oIps&D!nIUJxo0XkSnVm~>b>h<3<|F`P@OEwlej71Z$ zkngk6s%X5}JTo9Y)ll>rjG9`CgS25XlmR#zc>MyvknDET=(*Knu;Au;GL-OAlw17j zb=WE21$%@39fY{Ff2Bjk*(YL-jK~k#VMh`LDU*It%myy-wK_?bkpxXfB113ajx$_N|B%>7A4fjX{d&NAg@%tXqG(ln!5i=3pLleD}v zp_z;s6~h6AJT6XkNAhAvOkbVai9IjeptlCriAHpgxceS6J7LFV%$@Eb{BM0GiP0v# zZ&w2ef12i3g=2CZchSE5ZxN!?-Obj}>|qb;%>t+?%Z{)GGS7{UW)P{aOgJ(pg>y56@)!|57DFXXph2z8KJ3sIiJU0tvp&al9YJB==t`6a4PJ6XD; z@WVGU45FyVTob4tB&I?jW4-PPuI=I1I+BB9gf;80&pc~^>=N;R%~r1@=uvW(Z;76l zsR~W*nFclGN5;-n(zBsX=+G_sAS|=<;Wz#c6Bo&N-v`w1!uM2 z`uP>#7vyNpUb8V(lp9WEnze=X)dX40|?+YW8+9~jsr<;d;YFWh3tN9c_D z{3f~ZE&i{yRlZJdyIzqhsNv8<8I7?fPY(3$x9HF+8McxxWvzt#i}SMcEU!d@7Fmsm z^cB}RyDBg;t8HzT3Wj8FwyNAD0pCW0VKEq)PEA-$UtbBgiqzT5LWH3~u)5D%cFR^J zvSC?F10xKjF-|2cACikBLClv`JqP_!Tu>3U_f|cxD#jGD+OGp~eV;GI$~DY3Ogf!N zJ5<#gJaE>4qg7Dc+kzH%#QwqVZI35%Z1-}b@cAHXn@AuK`!gU9v9@cf(!cWrBK-HD!1%y(E`i9B(A3jO01}4|{BDHVn;# zB$9sa)*!!X@5Z@l;bf4j@6Uis1M~C}#^sWdZTHKRWOvr=WULoB_9Wl`^AQ=3MROPK zW()b;KyxDW&OH&+do&NT2v@COPu`4-DsUR9EU`jtS>PgjYOP^+Dzoc!$l6sMH=JJL zEx>?=vS?g|ca~wST zw~B_kcBqSw+#D8I=Og|Fvr`I>GF>6ioAAWc4=!ZU;0`l!C>Wn}2yo!t(~liyYHBf8 zPP!GTgV!WE#JGKmQAs)2q=D6Fo6|lkU2Z8ZilB4JNJZTNq1%bz zV<0WnTIMW*S{m*9w2qE<{dmA1qPtA`BulIGgR?pm<@)097n+5)3{sg=uhdo@aU9?D?=MP_n04JzGSyzZh~v zGgLL$`AVL?Ai&XSWFptyH5>J|tpUR=0%SjE&g`kQZI(c3)nor#T|a@CL~}UKJ<>XeL{wl zx^=UEaiJ+}J8s4HS8kDXb3FTCVhcx%jt*}J;bBgln$Q<+j&r9Ka$4(UtrmBV{K-i~m z&Z_AfxPf*{tCm*H&Wz6ns)YZbR2Ltzp4VjVkxsyKRSjM6B$w2jWae4hA2+PIPAs!~ z1Vq#2hRq^4Yv8CdS4Vu)$d^mG#6vFd6yp$h>JNPzJ$;H|p|3$$?`^;4{rWk|p}h!< z!ZHa)mst_>HC;Om`eB2ymUi~OvD^A#^Rh{<-Oi(_4Neiho~$euxpY#;iWwObi(zC!{m&MTgmcXrFG2Su6rwU ztUU8{3h^$lasCJ)*Gq%wa-{fD8)sNTp{k*gy-N&S-fVQ=hd;bDYoVn(#YVfmhl@M! z8+wRK!p0_j($Hc~5%oY;MujY)SQfdB;hb3^fgAg(t9#WzCrf+X_+-I{kNzIB({l}W z0SZy2lQLdan==*$%Icf2dQKH=$_6ijaSAl{-K>|NpGJu{8$2r+A+PJ6ulCt>@HxMH zB67h`IcV@%I9J+3XwMKQ5IVQ)e=?5Pf705O;8P_{HiwX{xr z2PX%`SNs~|k0Xzo#2t3Y+(jArm6U(EX}4=Ji|X=kQ|f;v84b3SnMH z76!Er+E_n(u>->y=+6FWF&2RZP0#I_;G>M5|&#bmoB*8;YD#)vHZFzxH zgAA!P`ps%;^~6LyY>*;Lm;dVB{+$~AE7ncq=GrGw_SN~3dw9)3=n8QfsD z|ILtwlI$2y{P)jaKBvyNNplZ$=4mh~46o%5u17rrX2y~#t@n!6mlm>Tjk2GaHCkCS zq|%I@J9v;Slv!U!@pFUGROjSViy}F65YZSd(@;XxA_<^&xC=NMocz-8=$b0{s*RGh zz895T;<^;bY^eCfyLMthCF>0b_@05na2^MvW}=RrOmolzq5ij`n2Mi*}9hH_pHa~Ru|v?cl%_LuHLjuq z)mC_lsnj!AKnouMR=b6|$CT`#BjWQI)l^A0d;KAAch}a)%uYkiG5Pws*Am7n$6rwc zlhvnXB^`EF`U?w%fIfLN?g_u?TfiBlx|oryW$yc4-6c|wx^(WNf)XK7RTSm7BpqZ_TNo+_)=V&k)sv_87` zrYmlR`l$FJsmcOsK;$CqDrN6+pmYHrS;7J?9n$kqS-HPj0keV6o7CAE7|JWh2gm0e z8{nAL)`jG0jHRV*5KtD2cAp9R)sM-F8VE7xVTWykJAr6j|7fI*_V%&5^Hcb zMb^mUNEHy1JZBDP4}SXrqc9^QOD9UzxriR*WE?6=hyj&IPrFGC3BDKjbZI6B-uSS~ z&}k!{1(Fr%8~>IEibQ?=?1SBL<%rEfPcrW)jkA2LIv9T~Ys*^<<=EoF%riJarRP9i z`K{AWUZ|*xGqi|5&>Bl4Aa7L3x05EX1AS2!OFiCHaIoJOgwGwTy z)2mYG%Q{yluML9Ci6rftnmkF5Z{JPw{qI6(in*;poQ!HNUa=__JdNYd6mE=g__!b&)D)b;VMhWne1IyCpxF5Rh;Uev}`&BwQy;8}nzK{Hk z+|)q(iYGz$f}ULD0$p7mtBPaNAhU70kab3`F!MLEL~>MRd~7jb##4hm>5yH2pZ6I_TKhx0SJ(GF2Ks@B8^gI}C&U(hU4D2rM z{SGMRPct3o=0~>gTg+LoKs$m>5#T~=wWuZU__=aQDB*&I*vYBWU?XPjrfB=N<+r1{Vs9X{oVi25WBIGj6hw z??)E>Q4jkdKKX%+IKwK>qT1jUEmhyM00MuWX-Dm-KZxe-jlDvN#!zXlU=S~E<8=2iL}|e ztVIqA5i2QgEpY#r}@{wBf zthobApB>(*B_;Yje0>Cf6eofux zE2S)lwG3F((YeKwaPNBXWpWMieF1;)`UmX5vNWBQZy=~?luM`}Huds3iy!&GWumWK zWSq@GTdcH7CSyWXepS=3%4pk~z)WK~e)%OuWr~12jGy;T+6QMX@uBnb?VLf*pUE+Q zrUs84Vm(cKI7?lg;DCzzNS(uke!6`Q8POj-pd-GJD#Vg z7_Or4JkS{QswM}`b#0mGniO==QtsO;HCsYMrox*Rt0$jonDp6+yGEt3?DFk?G^9R5 zWj-%2^3=CC8uws4hA7U>46NsE9qmx*C}f}7py||TNarY09r8(bs@tnjx^(W>qK&Bc z(&>AC{*jkw-(4X!@Bx#;SzUw&YXQ%=;oEhF3YELSnVIe8;F>&|tnc4Sh(Y~QOe`5AT6;Je)LE#f+R@Yw zy+Xx#K?-7x)j1;(0ufAnRxnOBp%Xa#jV-_PRVkgzchZC*J`TavC^#9|VQEiSM3SLU z!A`>_aQ!~CP0#VHcK#5!lQZyvs(Tk{EYU=e&_ByKHcmyy>pPA85RXrFjky9^`ugBj(DTWgKY}hvM zSJ#9#=^(S)g? z=N}L-DH-$67uU3s7TKmprXFZ_j!A9gLv2K9E|Ai4H;%(_9h|v&FbTArU5s?p6dWLe z9(y#HG#-du&{y8R^%F`HNk*46jx#z|tsB+%vEwZKT9SGnO{`ffG#c8--Gj508OJp8 z$Wlb}H8Xp1r-m36nI>lQ3YvFqTzKE?y_rGA5aUp)l-Qlh##hb^&T~HFtJ`ONV?$LI zI*4bAF)VmVxILGXpl?W$?qtV^JDbG0aCS`bnhW~n#{}wU+9Iiy!j`3#n$Hwc*L(UL zGkGM!^cA$+u$EWQ2a7~vRt{fb_|yk@V{qfaVs9)y@};fdosw>M!-VM>nhmm=9Yjxi z@IszLe|e*Ughfn$*J=eAI#SMOpe42|^%m;JbzxLT(m*Puk6|brqIUFAjYz^9M^g4X{GC)O-n5y|UWWI~V)|Y%BO{ z-);{()v4wkb?pQ_rKzaG7I1=$M)yC?z^~hkeAycx0i|9!qI$1Xg-u?a}~|h77*WJ*cCS%Upl5Nq|Bx)9L zg1jS^mCYy0W6F!-FxY7bFvRj!=&ftA50_3vL;=Ks=MfN=SKZ*lCg$yunT{!?_ghM7 zNSA~^@@Ucz9!{S>*C&VgNG>*y5c7iBng*rQp%<@_q?anddN6EDy~WU+rq=O@K;%a zuhJ9vg>=EZ3^gRq`pbQpYFhTuwb_1A%TW7$^IrA|j)H#OsLYKWB{O)z>H77`HW9zL zq-#+DH5uu!Aoj}&hc^cre%mIBaxHvXMqSlc$Np#BzCH%d1(={k0EPA84Nawq(}OdI z8(m{xzPmy`E{~VSm&mHuj{r5T1Xl+7F-Fi~az~uLH=T1-nmF)gU}^Rh5HaGD(04YI z-9w$RQO0^f3zXp+ox}ANML`WCG5Rh6ml&_haM8xIo>NfSBOd1K^tI^=#PtUH&?HYK7Cfl#) zEi0szO5wI)IZ?Za704LhI9gM7xUD9C?SPtLX_q`E3;D%@WXa~ytfTG=8LMCYm^vFR z+Nv-cBf*6$013I^e9&r02Oxt4&TVq8JO6I}?IE#lzAfYxI%g zp*Wdo@Jw-?SH0*Ps23HEPeHjsn=W6O)`5@}9t<|Hho7eNXbvWlO(oWFabsi=`By8k z5p*r-=<8^>+EcF6_9s!((kA#`l(!Nu21H#UohOSu0-SzbknjqBJGyaMxhTJuX>B(G z?L7kOrXLyt8q$89sSI4k%YTShAHLa-Qs+jBS~7JELFlYwn&QXvC{-Jqu-%bT9$eZC zR&Iy{-W9lJ;?8Nqzzwi?emV0V4;s%!8q+iMpN-Ot7u<4VZ;J@2UjOM>^V z73?E?wOsB}F@4-<>kw0LqLI@s&c}76ytL>Gj&PeB_s9R31ZR#(biVXb+MoY)u=%8v zUt93)#)d=YW}s7%;lTa3?pqQi;tP0?dvk4Z|5Y{N$>DTH({fjaZZ0E?rsmC5=;Vc? zvYK#i!Mna0zPLnO<+@C-V%I4>P;l;~25(3sF?vqkFt6y^)8Z%DEg*&}8MbeGz@Xz` zsDA6krXtf<@2q`ox6u&1vKt!U= zxc(6UBH=Z3Ra}K-UwLWV#`+bMGwvweOG;0(ePLO6($mFcU#^@-0PjSL&kt-ke-_MQ z&RfD`?&#O{18FPxEE8LvLYI59{W^T)-a-7XE5MSiw8mkE=@B5&itz*Tq=P)(n8!vm z!gQy?o^uYJHpxf42SMlM?*g1uZXcL?8_y$WqT~*Rs`f1*?o5ndQb~U23CgXCNKaLd zHHA)`J9;H=w4RRWP5zR?dv7%uUE0w4hOFIdT#5eWGWl2wh2btzvb3FA-0}~0{Rf#M zxr7p##YtONG_6-QMQ-nai0hrQx5-(0zcosx${GV_;68)){U$D;O|B~z2EQfya{||q z&iM%+(L*F}jc#=E*xhAoJiTm_>)bTwJWi-hi}9Wxfwb1U!+y9OLK$#|ecSscIr3a7 zcVJz=$j-I;70Awg6@HyYux~p)u;n5|n!nF&<{D+1`^IFQd6;B-LO|{!I{rL&Id6ih z*1h0v=J;t(Ar(cWlh(A=w*~$l=VRwol*Zojt0f(L-+o!fD|eh*yuj!IOZadN>6~8B z$xI?N{y98SgCrTE{BH3I&1#7{jdL)po$nC6WVawlT65e?lW8z;E&{$bU4rD}U53{| zYUDJi-MBrTe{CObIMsD7l# zXZlObLghs@>)8m)k$1F>`Oty;fOL|)4qjx8)fzF-)BCgn7WFJCXUwLlai1MR8#GT> z=Ywjk;g}z{rLq%+qfs0g@A~73W8*GLztaJNs~^*DA{nxIBz2w2QSb9)FHCd~EuR&G zy{IH5>pEFIhf;1aoE92;d$Q=!xe6`{RORM|sFqEkC}=;VNob?S_EOVWbXGApZPqV( zk!i4SA8XZ0@YO@!6$>_sHWmxRq`&N+Hg2kA#t?rY8U zF)5IPdysTTYnzLYqPyGD)Q^Sh^$NdDS_%eWmXg8}Ez2|{8+s=ZgOHda=$ru`AvthV zRrO5sTi@?8CwOv0B%rsez)OLCqEFjz!U#)#MtJ{2AkY8Kz#%h7T#EEq4C_@L1t*AX z-6WTLir)9CO-0@+$wc28+yEZ|ogNddE;+j<`%=yI6zn>W0O(FYO3WeBMH2KDDPSkL zBSrmg!%u2Nv=x0Lq-#lfgjC_To%8+H{kPV{9c(zGNI-YWm0@hyME4`$U@INyEkYkq z=Ud?FW3lTeUT5X=mc>XKFUMA*^BN1rOUA3TeYp-K%J{9KAskn*xpe@)8+6y6;TJoj zTJ5|XN2H!O9vBUg2e2OXA|3gom&keB$=Sgp>-@G1_D)AN{1eA4g}8t&^*6yWm={HP zYLWcXg(hhs?Pf-jcpeqMM5y$Yj1pq1h!9p4+VYFo?nHR>s?M+ynw#rCZanoi`7b5j zx)oRQWAKnj3(&zvQ@y9y9taF(>;r(#`s@1>q zH!~Gw9+3Vuz35=Pg@7V(O*^c*(=J)3a(n9GhY zCE|Er^s$OyB&llEIt7t|y}jt4DVis@{IJ1{LbMP?ef9j7pJpCuEE&CK%b0HhhA!B2 zkH6eTL!kI9LR12W9y>0N0L*38>){Y^4D{9Mif^~YLtV~;u?UQ4O1JKS;1Q5(^x~u1 zS?mR=(2L(}aTIu76oPiVt2KjH>6cP^XlL;W)CcXpS_(27 zLpOWXTHo)?FkZsQyufLzL7L}3N$7p@+R#q~iCxF3esPbb1in^oGfA%HQab^MpTj=? zKIqqdz&c!TXBF2{~J6iAi%S*R5dM z=65W(-cFeu1#!pk%L0;NV$!!JHgL)@Tu^$cOx;I)m91$;+6!1X(nQ_~CM*a?na@n(Nwnr}`CA!ELCp)z<>M8L1tX<_PnN~|G zgwb}zdz_-PLhWV7>uRHfj(pfCbE2vn&9}WeLr0JdYYsLQRDE&W-GI5deRD}a?5DLKs7l|ser##)=jiq`?ImgQU)1P` z+A;6lSqbnwXql!ZxgH!GpmuBaue zXJxuouXQy(vH5q^ms8E3oY{ku%co6G-PScg_I#cAMEkaFOS01LGD7~~R-lzXbyBM_ zDb4fi`<16+{RxKB|3bxA!|$-NspRO60GnO506NGHZQ-2iCVxwTkySkU`y`)ip2O^ z#yZ)1bPD}nH)_zSD4!C$T@#llb-FRxoyb%8DARZ)HD<(Aw?+F1kn6ffntlW%1%!*7 z(ww9j(1QznllMvDZDB)~E+; zkh9C4v0ur!8#rc;qkl~(ck0JKh=tO(SA5TC35Cr*1s@&<110I_ zbpy3kajfA&QzA5`S;ALKnWi^p7OGHP_sSvZdx{@4W@os&sITXx1O%!sJ_7pV#!IBo(IgYn#m6|Lb{0K|9VypP z1IDUNe))fsl9QW-KLQ3sPRZd6!WP1@w?ftG(ng|MPW2iR_rKQ=-I^A4SS?pqS_tuP zJ{FC+dvLAFWh9aMIxU6?J?*L8Q)~ z#_8H+-tIGpng^M%I$a;7&#C%fyy%}!+pv-=N|rb7757LeLQ6=RqM@sUN0%k8zKyCO z+%5hl3*G~Yf>V!x)N>W}yQig3}HF5Ke|9uP7rAociAT(D?nYXZ0sbSEH_b1K0M zBXV67?_SnY8}eUAMs*V`3(qNFAa>kp`i!31R8u0S$3phra7>YnAs(~iTgn;6u+3s4 zkhHx(h-!7*%`6l=*Ka~rT3VV52Lf6BZNEmjj@LGI1_(fq?p1lew3Nsz>>@oRo!O~? zXS;n!bZelDOWqvGLRn*KJ=b|9J|+%8kXvo*OK$#g^$9hH`rPw0uLU26Svw6$PV*!a z@~3$hc81vEwx6#RtDVI0VPOKSm>0>r^2PI4K>Qw6ft{@H5owp>nckc_ksnh-ZSLL( zSwu^cE%eR|#QiliPf|wde0xWmLYt^1V#eS`m?jj4QGVZ`(uU$u5_gFP+o_W0abjwN z5s)57c{i|qILf19TbNQhVrbL8dMd#->V#NrCDNSWXR>t3_MuHu;%s3_=?IB!O6bV= z68&6VA~QqwekE`J)m5br(hVJz;&4929Gb@z%b&>-5=|CyF^9-IiiS9B0z?%Wd0kdF zFEk$kmLg(t!Y>^tXb*re%SaK4f#vy4(YGAKf62wnu zeOkgD#(aj4J`$sGv?vHm8GZID3u*n z^HKFOE&6cs_UV%UnO#<~HB+XLI@V$weF)-8L0!BC4hyyrg^Fd1m1xl%Wr$aeN*4vS z67wmaCeyr|jh$ewK)ST79eskeyoPH0(}pX`Qr4P-JLl=BA0}D~`=vS1Z*64~Cj|`Q zqi5jI_24d|Czj10@H4XXJy+3CmBN_tax{_7AFdGiZ6@j>YM`1(_xt!F8CKF-ToNSR zXhbe$91X4FE<^sTkLisIp+{xe*(Ki&){%VM%dMz_?>!>5->qEy&EEvE<$z+Y-t9Ni zf@PyI3^J{5sNXWU_0vxGwm3!&8*~C^bKpMFEu<;_X5sn~3S991q!-&uc$|!vURRsg zEs1glT9#)XmsL|1Eliys>3uze?5J-J@jhZQ^D1$^2yiJ6;u{NuV4=h-j;&P{91Bs+ zrDi-U;*pC5Wjy;FN5jT|{NXs^gFY&&Vtf5dIejb{@o;DHI8rA?@o!xj>Xjy=xaOOB z5N2Ge)?8s5)gV>%0iX1F1tprYd*!-=?I~Faogpcf>QsZG%(2FNvmvj+CzFqcTJ^g^ zM-bBhCaiEdGX=)c+0(J6Cr32Qkbe$s@F>7=vh(Ny!eE#C<>f{u83O@?i$Jsv*f z7pYlC!$+A$?33W*4NaKO>pvmmDybGm-e*Kf(x}z>GmudG=&p!qrmfL@U++d^dDrtb z>AT6Fo8~_sQbek|MZ1hN<+W0#VGpj~c+-`1999aKcTbx2JN)H?^d2IJKJq$d|iOhGYHnYESfpFnQixfY2(e``#mD$4^AvyxNuEGIZ3+O zJK!hd2n5U9og}vxhYT|%B&~~5O~nbzmCkY*>q@*Ou)-~j38DMoj*TAs+0oN5`PquB zw?6u3q+M0Ar^f(QKF>DfO|*>Nu#$|kgcp|ji9~1^M}usP6t<53mts;$l9ge$UI*iS z*E9v`QggS%o(Cwt)9N9MB4*?2b{y+Zjr>} z<)m@pznVM7lTy%pY>hx3gG8FWS&tQ@W{?I(XI6NZ(@mB^%!O`YnXAC&0Z!7yqbZ-GU-5r*qnRHKQ5Ob zLdnbRZU+3g%L?mLcFUK8g+ov)&E$+a!mo4$y12T@ z)VhK!a@;wjpDX~+8(xjBqP!aIbvS%$P5RYzds+6fRLGv9EV4#lB#1No-5cei4^%)ORdpx7TXLpHIwOXXvmu5$b%4Aiq$F3lZ#s{Gs zkYbZssYMR&d;wFtar$Dhe6DNt%6uWJ+(&?$S?%XDT=bE&jycVsrz27o=~#kp4JlIn zVZ&XTEDQP9tUklCOx0kd=W(F(g)ALLEUmf9-4Gh`F?glbE_iH5LD-Pk;J9YzpvhTJG&DLCA_|gfrapV}-R$ zK5di@C7TcWp?lv26&KoM_#MUp9s!6$_~fQf7f@jzOv&{kwiM?kmy#|@_lhmEXuiIv z5cIEo7QM!b#Uxjy6)mNg;sk4QWLd9~ zV@{u>(n>=^k1d?lNInEPG9+3N`MLL`H?M|e^ABy7gPQi{D(n50Eb}lkH#>TINrtme zaF4ZGy9@1!Q=9S@e@lq&aHdAf$ICnmz4AkLT~a-zqqByNEIEV5W1rimsl32QG93}> zy1OlNX@#P?YL-FRcl!y8-QfGwT-IiFvt=_)t)y~yqw3puA&x9wrGS##bOn)soC*Bl zq}VQ@44SY7;0S@a$`4f~hBHok77Nie$w>H4j&I8Fx_ssQ*H|4Zf(hqi$F#IvCO9{N z>alMX?z=s>b|b8Izh*!nIyaLWrLasg6R#I3NENA2qBd9`NoS0?hk8-OTQT3iFJ8pk zIhVEXi^@_~A$k?%ga@Sf*+HnAw0EptMAhp_vfaG}_rCdJfr;=LeVmQ5u&jhqhlo$A zOdo+cK9=03!a* z*H}C0KX@*YTC9tH1>-J#Tv#q1AEBxnY(F=-Otk5#>>#+a0lxHCOYvs;a6xl2m+__7 z+F6iSuJcyk^Lg}To#oTtirhO4(kuVkA7m!3TDs?TL_@%&2+2C-%A@}CVpZY01+wfO z+GMk5U!5H}2N9KT$WPM^V4=siN>-$<_&7P~q|+YQ?AD$_ERXaqeNtRbeEZrgu`|m1 zOj=b|jul}n<)jJ4J4|=)gIcO>c8H&4)s2LIp+%SxWoM z%NITxK@0~6+fH}|zcKk~ifQa)U2@@3ReQu{vGcIA+n@QTBpXVff6R?-Y=A}2mRfAK z!t0XYV7g?2=0ofcJ}6tjw@^s1i)Y8#qOD?X!=zf<=V&c#u*yW?L(5>D*M!<>ZoYg$ zu?aE}%zH|`(6kPNl{tkK_7iB~P{Y|h%4Q(zWK7`)c3?m~M%kmHZpv?n6j2txDfPOb zcXN`kze!sOrU>vlrxdPAHb*gOI|v;t=Z-lyF;U%m6Sb`F`*OUD2>D^09D#0*7+xZ5 zVlFp*qb4#JU4!9f-O4N)XmO+Db;8hMIaTnxx!>jqaqZDKIZ2iN zRkYp0(rQwlhHL%cH=bh4VB2}+8J%Q2))u?Ep!Ooo@Rfh>CxZ0z?YZkAnPt@$<2E;vu!dmLR6JZYBe>d>EsAyYN?R zVS2Pyst~zL!Q8jEnc^+Py32S8O)3%`P4TO^f;HUEFc|!k*9yH@n-=XGxMjE&fzI@$ zSxLHco>_70d#xXDdj&3`6y8f}Q9t>2{PrvFQj^`pf3LR(!JtS&16qqviL^+c1H|A* zfaeih{>_gyw2UR1dXfGhwA)&mW9QIagJ#|1mCFoJ*%tOkZQi#)z!$Hi*9EB&zUeh~&=yi7WI#4n ztZ*)1H=yNi%^aWTn^`Ao@kc$M*c*KEfRKykTCbsVfr=N>HuRZ<67POqS*r6$9MzpI zX5v`-DUc4)ShbgY)u{dtQ-r5sm0r_FB0NScUgm$BHwu?I%`3X zC1(w{1Bu;SLyGbyay&RpS-0Mc7AHK^;*nXkn%cvb*<1^RhzQR6&Z3I(N+vP#s3OY8k6 z6D|cOG}dY=X+L$C`lO9xpcIoR_~pS;gLs+1NRUmMqo}4`xrLaIqlp2v7o;|fTYyx- zCuj`jNPrV9vPI#&W4WZKUnYQi;48dkp;8v2Su`0u;lY8*DQVl( zh==m;wKb#Tu_`KkFS5Bj6TvnR4QQ)gtk~K^Cd=s3u#0<>#-hcpHJJ4`bkE_F0Rg(F zax`Tmn{MhCDia^64>QbjLx6h3!PLkJmdxNzpB5A*{feEZA_}!^%~`}T2Lw4sxm2>Ta67A zNIzQZ^n12Hmlc@Z0k}`IerDXIWL|2sb$!F&4C#^41!HJGt6gMc6#=YeIAlsn5aDN=qMZ z6J@OuD3Ahwy1m-Zl8xQpkMJ5FZ<+`oz#C%_woSB7)S?l9hdCk!(Z0Q)=;qw9HnNJo z(S^*4a~!@nJ_$x4S@{X+mHuA8VKZsdO3cJ~VRl;h^5&X&sqc8XNGCYc4hx5A_-4)5 zRBe!}TCi1z{EFOcm?qJlT}4}_cw^&q=IiQz`X$JZv;U>{`jdC~|0?|Hz5c)A@KpFO z@Aa2}vVZbkCj|hWJ$rKX{zpJYdGZ`bLVNb)O#bHOQ{rC%@h=B=q!-VT5m6AHp%M}h z;o;*F14yV}Q$6Lx|0niPSrD8}oJ>7MF?#UbuWuXJWcj@en0!e=$Q;yqwrkTdQ2Zh2a(? z!0o(nAWZA|OODsE3n3#_D3XCh$ot{^?yafmFh=mbC+X*6{w5faoU7je&_-@?pFn_i z+<50x4V0+rdv;dE#3r+lHV5-459_BSW>5#G3GrdqEd4KHNghdBZ2Cj=AEeI0BwQ9` z=ds|x%Yld2b<+je;j`Y6rn;Ftk{qEO!$mT)hC94^UoR<{<7h$WMpnS4q-H%91dRax zFn7eDp#;{dm!Q+>;NnHxhrCQUH%1bsM7qNiR5Oj7mEFDX(0~mT#C!lAFYrxqygKNq zd-=_ueRJpwxzfS|+1cv;d`1gmt`W;GUY_Gp5UddWv}Ar6-y`UpB8_u*psH9lw)hYd zF2Ap96BHN9PRSBgUW)!Jm7iG(b0V6icclCIE=EHPK^QhMHui6~2~<)f2hZ7Zck@%B zjpEcIp#J6%i^24_3&P&o62?Y_4rApaTH^+bT4@~OYCwf@`If}?CzVJBLkorwGKv?n z?>@=@N+`St2u)rhPxDbY<(oDyZ|&H6nMF12G|Dq)*!W{OXF1X+$=|9y&#{x~i{RGo zuR422IKsIv0pU#TRp-0A0Lq^U(VbJCHf>Y`SEyOp9;9*VoZJg&8;)% zjSHTs?P&TjZg|Lj@=<*v^6+DBVrk)djqleXsSn%uj zYje@Nw(~7kU%{(Kz7d5i9m2` zsi=1X5>j9by(wLph}pfDZxZ42bCje1r@6BXild7f^Z>))1O^H28hp^;4uiV}0>RyN0t9z= zg1fsza0yOu4M76I0|b|MC*QZbwQp_JSGBu;_Ez_=zTI8bKf2Fz&bdzu%E_t)({FmK z8&ut;xH*O_TI1vQ$zdkbyP_izaw3$+;$O_yZ?}2QYpp8hC@<$Q6f?sxuOrUYX%4&^ zRt;<6y)7voZ~85YOL2FJgTVw8#rPv<5G7s2*_SahKvPI2?vHPX7aY6tKQr_516mEO z(A>r)cclIFb&nO7hFBG9I28mJ(W83|30wY!WpGtacW{%ynj^&a*}2mrt6=e_d|T>@{o%k$&b%XSY9?|k zTkq=n-D2PnE6ul0o}p1v%oe6kO2L3Q)g98Bl#6h6R%@f+E-fDNLq#l=4FY<{K_pM! zXWtBBSLO|zO)k{N!?)4l@xv2~E|CU+uu$xM!wzz^2vhqhJ)!+Rh&UbxCGNv`LlenN z0eCekM9iXwuAO)}89 z@Ez#%B!AmXb4V?AE4t>(XRb1pd%UzWkaOXU^vPkusls} z9#B6JdGe%ei8Xs!y=vjTZ|R*Q!Ew09qV0)Zny)Dwb|jPIqo37afLdz1-Wj@b@kdHK zP_b-0mElYIxoNEX<~Ub`uP9g=v97nwwQ!rjEJMO_mpP3B>?g51`wxIlu?u*;}S zU|EGNL+!<2Q|GRX8Xko_<09(9rDv;X-ICw~@z-@gnyV#Q1YRb{rM=Wtpk1&Pp9TZx z@G2}m1XVeCZy1*^N@7_Vm~ZHzjtsNa=2vh28R;>+B7~fDS%&iD6VAC~CbN{X%XJcFCNT#MgUTmDG%XfN1izP(eHPv3_l-Wb;j$JLnA zKvpA&*$hrFtP#(7a|!3H_45{~@M7sM!x)`szY=PU_wkb@dasQ1edZDK5mt>Slzm6; z;)S7E-yL-<<5jsFR%;EaHRycewxP6Pd>q?3UHPgz2sq1nSmwHElCLlgs<2I*2ny;{ z+Ust;5sj${qjA5>el8q2pYaF$8Qt%!PjxVW4SX(b(tJuY;#t>LIfl8wertRJj@%mU zRv9~0J{m)`aaDs_^feoC!ei_oQz~&JlS{IWx(&Mz)r0`?MjtEZv^@w)tzR1_yjqEt z8$Dislx-Bj>yDwN8o{$#Cpz;)xN&&L1{l$8tUP@y-YmoM4qBE<#XXF0j%-kUy3wjD|)hj5!9r)vbss-7BfB7}i4|L%x;|jA@N6 z1N^$Rn7bEwr|XSRAWn^|sb4(lj*wU5RGiB_k}cggjVSY9I_CGgvXaV9t7MlJX|9cj zJW6ZPX$YES5xf*~VI4D+Ha8tk2;F69@X_pX+t0D0~C3vIkQY*5uT zaRgIIW^AI09L-eboUiZDfQC7ue)cw%p71F*BIX#8dm354v^iInn9p;V#J=3o4ro1~ zO(^G}t?E%XYb&bvo5#qf<@3Pp!A*b7U*jhludsTVkB;6Kol+8C_99)(z2IH>$4{m` z1#~2kX2EO4ZA@LvMWk5IAAgkn=^7pTg1aqs>Tl|o+@IBJW*5+WFLvGBtGX|CgOn_q z_`60dec_J$bmhhCHW<;R_H*zQQVndePRtl)b*s}@!IEqE-1eiV<)QURyWQXH6Gfxd zhQC*8p3&VufGq91naz8r@6-=l#M#6+qUt^H?N#ZQ=ibf4um z{SN41(KC$YpsNEzuO)*%KX$(ME^?IZ%(egCl-MX8K8-{!Ff*Us-w3j+n>0M_HN2aV zK2)j-P2b(vK`MdS6M%~>L7a(5F3<~6S5c=T&COYSg(ecdFBNt z<^0$|VjuSjSyntN+7j&3Ni#tE=`~dYK7%!8@>BgR-9a+3Yh$py#zrx-EGtBOAU4|~ z3yQ8Oh$7j|ez&qxtiRGZf)|6zbnBEtihJwN%t1vUC@tv!wP4A^T{7r`P^^9!%27j5 zsO%Mz=#$(2d9r>cBl%L1vunX$^f!nk4UahU`S&$TipWXYqW5`chU#i0g-CT)>ukg4 z1EH1rdPnJCtseuWZp2h0qSaEv5~$X?*!CAn^o7!5A9!T-f-y)|B614d9-saz3PFMg z`tS`tfbb0&6&V=_L`FwJ0ij}|V`5^UV_;xmgK@C1aj`Kla0qd5@$d-<2rys0CL+Wq z0^<|l{|AL2!OsCAqah=s;bUQ7;r}0x|D+I1K=Z#S1n$s+tE&E23;}`=kdOh0D1V(+ zZ~kHk+@b~ipQQ3vX@v~J1p}zLQ1EEf@g*Rp1hkUe@VO*^^;-Xe5hNf05g7plKgNyw z*Tsc|hz#HVnz;T$jfD#UQiHi9)LoGAOal{XAPxAm1s^U5BwgVquI+z&ujM_PW7dP3J!C1JtnNC*2UO06%k?)KI3RqppGCBwJg+Qs8KpWK40<^*2s z`U`gstAJ&Cp?r;;=J*Fblfj3ernvOE&Tza~h)Iof!t#_kxy`CN>-WJkoVK=SgboxF zVfR-wt9uM;(kR&2D!F_w3o}QKD=yAIAciWkpjxk&>ztTB^YT-yui4}rOFqV;dsb<6 zI26XcPJ<@y+F@V-h9pTiw%dv?2@8)bnq_UrTB#q%M1M@C~kpd2EK zSmF>3o?Fc1?%H9}JH*7(w#(h#xRZ*s;P>rlvtTNs@x3Hx&%Sf~N=I@I|Fxix14VT5 zA(G<6q(2Q$dA1nB`)yd>z5#1CB#kckN#XO_cY-ttMVkZLeyEBiWBmh=i=@DQ04;v@ zU414k{DCVWgpG9s2)rY{*>k{ESrB?YMS86RB-4`&8lv||G_t61n4LZjp zhiP+Ro7TAHWMo4`nSt=mN{=trkCiS<##DzisJIY#fnCn8FvoCiir-3CZ~j7SN;ady zTYs#${9+Tax$#0=4dz50Z~YG-gDU5iwkQ1;+rqsGvY$}4!~=AMQ^`+gr!ip2QPYtf zO?8Pg1Cm#cc|gs5?T|%S8ZvijVzF>#cByU_M*=&Hwu?SPE9ye_pL;a(UQr4-aF+5q zUBt7qH{?fVR7v{agRbBe8}p~|&E+paHp%2FJ(cnyd}c$H9l<|Em;Na>)oChc92kU> zB~hLY+0_P(jVv+_KAdlGTyFX)*&Z)G$hkDU`~B!q-8vbB4pG|HKO8mwL-?fdvzdPR zD^=(ZL`X1F@~!*n*=X|U@-<9+*Lpta&GN~fy?Ld8cnQnP`^I0Yb8@T>TYV9Kj%M?4 zS`~1pQVFov^5ab;PMAR(x?x5Yc67ybbhq>66njBJiCT87pxnjG3~tDrp0h{&f<`@G zsJxbN6RX7d$l0`pXg^Mp1mmx{pQY@C1hp{J%+x|IK* z%SZx%eRwD3$_%U|A3{HcEOzGL#ZwqU0c}rRcQVIRK(Hb+Dd?uqZp894_*2L=ff(UIKv}0TKhl`*SeFN~e{E|2|wR9}) z$0!;485}=s=KMxOU{GNKb_p5|7ROTm_LZOvFUYUXVz(})EBR(8k%gx*J4GFPn>50d zna*qF?vST>KIZ;>yx@&4qDs9WMe}8@PZ_*7*9nats>*TFBPZgtXE&;~Ny=7TAyPrD=5_(ZH*&pTv?Z{k zL70HwQg$jZtKv1rMLA`!^@m&8V9FrEpp6{ebH6}n?9HWq2`3xd3=SW|=){TSL7Nie zK+VE7*aZB_jYMoScO+Fe=3Pm>d#nP2RQ+OI-r?v&D00}JWL4dsRM%P6>9;m!)!oZq zLJ9YxH?jm4%@V)MuvWf~#~nI@{o#8O`BcLm{G#SYsSXzZ1f?;vh6mh3XZW%9iH#{- zV)C45be|9+GqZnayF4hD;xUKxP2KnA_#+~fimIL~*N%~0@2Z9c$Tow&yjb8bcU#LD}CC5}>lW6KuZudz&# zYVMQ3@Ulw=c_YoTY(#E;(nWa5ne}>V{yHNXaZ(ne1hsgSV|3`+jTv(yox^ksL}sz2~&G)WqH` zx(F4&>>HOIH1S+_QZTHmyXJk@l3gqq%t$Ev6@$0AjVei8802tE<=@kKI``phn}r<( zyQm|X=d!v+YsE&HuGpSRJbz2$XGsw~m24; zEwkS07jYg_$5}N!@!W=498mFL#PB3ooWwfZR>i1O*`_Vl*J-%Y+mpTaAPlNVdq+u=3c3=||q=0|}5{H1K zuP1Z&8_XBpLJd4WhL+m=P-skM324OM9pF3P)LmB&5A65+EvVPIovHpc-V{d&l@jqY zCJzmm6H2rPKT|1BbE&!dA-3{t!q|``nT@Aq`a(F}oQ-&AqBG}_f^{&URLqZDH~kG& z#W2w|Pp3T_4yqy)a2~kz!lbx1D3sh`xj8xYs8c;)r_8fNo+}?WG%}QXyyAH=yX<_q zpw*HjADrB#vLJ0xzb1+E2><~gq15?iUZ?p_;+v%N!;>DYB$d2nG>F3Zq)+mXp^FjwnMig z!n4O~=c^F-3pWu2UH3jUa$F4iq-YI5q5QgIw2=Ak z!gVFX0#vw2c8iqPDsZQX)(=+!r~+eM6N{KGd~TcwN6gHWCN#J7_k zTl>heQflUx4b5Jzgf$~qq?k>U)0m->=|XuwhqaszOhh}QeMW(7(pSAAw$y2#At8Yg zeY<70J64x2vpl-g7B(3%lyUTq6ss=ODnh42omCFI&aV;|uHK=2D-b8Bl1{zVH6%XOOYA3t&Yc| z!%jbB8Ft*NkJ-1CZ>CpGsg;XEP6OjMnG6L#bGR-LT8+QU8UhP9C|xypZ)S8sa&CbQ ztn!yC&seIRh4>|4xw_u{h|ivCNh$dNXP3Ud7cTXTg-i!2r_07nAsa3K@xHKKe+Gzi(=0IR~TjfFN`Aji&6iAA0RRk2nF#k zM6tp}#6X0qpXAdVOW$^bfX+XEF|ZA*aFpRtDiyqCKFqFUWKOBTa{&^O$n;o|33+Hcs25w} z6nB6ygEG0feQt0aoP}dai=B4F5i9aA5hf1fvfpA=)nb}T$^HYddcapTRl0e1gQTqR zOa80e9s_D}+C|xY7<%W3R#7(P5HJ{tEAp{--Bjc~>z|n7Xfx`uL~1=4M&O#kyj&`fN*W#w;4#jAt*7A#S5^B4O5^9y|IGC3czfI@ zf&&S3bw$pI;gUeXxyqB9*RQ$NLZ2oD`OQcLZ9r6*JVvoTjg*>6-wr~FC;`YbAOiK| z7lOBt*IZ#L1bbO)4ehYgwqRYRX(`fTzUuDFj5A!q)*`y7;^K_U(KbxCGOiuM^{GE~ z%DtfKGl@fEV~Qm@7~Bj1yUXOtKP?l3@g3jk&n%X(MuVf# z`^YzrHL|R%d#cfyDg`>UkO#^v-nkr=Gppqhjj3pu;5g!gI^287FLnfDKP>)0MW4o_ zr_(F0I-PWKbQBm&cjuL@AhDjw&hV%!;Usk#u6ficS=PF>AJ3KG-o$n7P}388Pd) zQ>T%y65MUqlhH>$3`6r=-(@%&s3dhPO>b?CJ4|!sIXQ}m&}U3#4DGL93{7X9j+O#F z%JyiPGA4TA&F}78dGD+`b(Ph7OMV)!x0!N^?oHXL9p{3kdh&@qP$MwJ;(*SdQ(t$Q z#ds2%HyV4YF5m$!(Q;l9lJ2^e7W}?5O+uN|f&zbu2Lj#P+K9SD#-{l7?Tlo&9*GHE z%T_owc173t*oGiqBbeS)w9~c-C)=1c__~z)+F{kORwor|(c$7GdB&<_tz5+fF513x zP|XJv10|kY@g}EGw07* zI*Yn{+IW;?Zlb1h&`I;5m*&&BrU?i@MFR1|#_`r`WwgmJDy^Q=9Ug4UqG9e0njRl1 z^@c>$2X2JTIzKX!xVN+rFDOh$37)5HZ4qndh^7yUV+Fcn@l9gFKGZLBT}!=wwTAq3 zQU4LS?Y-Ot1JYg8qbX;Gs=enZPSkip;}7S3p=lm0WM+FFLt@!){{ULHvVk`>oyl0g z>h#Awg~oT`$C}K2-c&%J223C+seL*AhF$%2aG8(A{uOcX*wz6? zr3FGbBq9-p7248P*2)v-ct!IlcQjNM%sZ+V(^qC-7*7eeH2MV1^nIxgJ|v zVDK#T9ZX=t-?4ucLy;+=sx=zZypaP0@DL(V{ucqj|8pb8-+vMOzmEURqoM=+{}llI z?|D>Y5E2jtfQX6?|8g_K^QiC~D*`-^3i!|bCp@K!3_?J`1>@lZ2ncCWY3S$~xq0AI z|1bMF?v`pKSoiq~KJF{z!Uei>ET)!TD5+!$4HsI1fbRwqP<6}axpa~)mdQB}+xklA zEytSR3R{hJ{0m5kM1S6=a6FnkQ3|f@KtD=ZoluvY?u^<#a)Ob2^N9&MhJ&xLrZqYb z?TQ5Bcx`B^X<>s}t@V@IOFk&3S&F3jD?8lZ`DWJN*QCwlG3}=v%fO!MWR!C(t5Pf} zb&T_P*X6Y_;_zejD*zWSU~%Viji242&3l*LN0dZrHdX9iX>IxsRY3wZt)5wZJnVn$83#Q0W=PUE9;r?H9;}> zweO2REmx`YNK-Wpn{uxAOt3724q&44?aph&Cxrb^oLIGgq>?O) zx?U*njn57GS)E+rWG2)`CJtXocgGEV>{$uN?M5W{64nPt5uMAgY#O} zzfNk8RI?dSbAr9{tMR zH_wS1#};;K0rZx?y1a5nEFsdSxOWFIKZdj#ERvIQkIz*{Zn`IELQJqsdwO$^DF(!H z;rH98i1$eFRr+;thm^E>%kF8JWiaWwc)N{8juRBjhrAB9W*k$Oehn=dW_PQU^}S-$ zkW^#rVcWM#iv)359fog|91j;AC@Sl1t3YQ(nknnevf8CJc&{{gp?a5CGHO+e)uo`6 zOcXqS;MpAthn%DP$@;7w3$n*rASdZb?T2n}i}RzV6-C1w>`?t8<;NQgM;$V-&X9FM zb!}x)CMm5X>a{W6#f`q*NVH8EEOzy7KaUt-s2(Zawr8)|X<;yHNEpB4TU*c~NXrxC z;Z`r}!U~LeT zW53Ev!3jaTa%YQmF4-l0TzG=DKcwr7za)^^em>S0c(nlehJ2$}eHTla?z;r zyFMRd_6MB*zPYNr2cA^#DmE%$SmS=;R3}R?spyYTD$0g3<$_a`i50t9EtqDK4q!8V zTgIL3ud)vBNbR^>x-t6fg8T|D5)d9y5DDLcul8{aQL}Ky&OWW;%wRj$$Fvg)i@>}; zmc-1s+1j+!ep}&%th7QQkF4mdf<8){ho8kjqQps_vK-XdDz1BGzbG`1S!L75x1&)a zvO0^CX(FNh4b<=Tm5hYna@cgf9oM9Uj(LL9EhtrPzdT{+g@4xwWM|s7bM`m5xZ2%0 zArcNAD=B%1lM2rEtEswreatl@h4hngSm5#J5lI~1*+G_Xo}!(o-xkL`X|1p5vgnq> zQB!~GvDo_ab2I7)3uXG&tqdwwUK&@t0IrYV&gRKW9Q)epTgvj1fR?gMvpmVBF_K(e z`d=C|c^bXR>0rZ`)VIveIFxmMl7@!SHo@9sYkD)G=?VU-Zq*ZekN#}a49mR>Uv8gM zf%JN}zE2aVCXDTBG2Upe^u$>46roEGy&vrobn}lHe)*Pvj5l9N`_(08CC*UBCrjxx z3Sy*{6{hQA4}bq!Pqajhs;H*w)d4!?N*4pBzxPfn#?bd~)57;3Kt!0(!}A|;rdK@! z(-3S+R!Z=9{)ilV7lX3#4+ga6vpc)4aK8g4SrA$8GWC@Wy{o;Qmf*omc|BJ zzKp>}x$ia|^&U-~+G$*S{ZN`zj{{CX$Vn;Hv?Qe&nx_cDcdgzpt;62)X>B@7A6<)D q9bN{;M*SD#1!dlvjIMHtdU;oWXd~rle=-(+g?4e3`1IJLB?`x_P<0DNfq z8w9t34Q0BP-Sm^B)JwD&hGF*_ z8~^kBj|Kj*z&{rF#{&OY;2#V8V}XAx@Q(%lvA{nT_{ReOSm6H$7I<5J`w2jik&u=E zKtMnM5Z^Dr+ZsUhFZBOv{iWppm4d%+e(M3C!oL?N{GcFE0g$K=P^b`Z{QyD$00J87 z{b~Qlf`fvEM*zSeLPNf9%f444U?CtOq2Uk^KmAJt0ul-u1{MwgkBWwXjzNlv!_1|m zz96h@@8TbqoRWt{M#W;_8r;}CgN;j0$-%Aa;22-q(A3-a*I5w%>shccaPMcmYy9g` zR8ilzApy{kP;kgdupiz}gMxtk@3YWJF|d;nm^qcy{pT^U$jG^b4P4?H8fO-8fD|ms z_Rhiac}+j4I7}UCn^jZ|P0XBJ6MFkD-c|ufP!R9`777(02-sn98RlZsQlTDZv53QE zGw!@2rJrbDgH{Wgb0Vr%C}zCD6ajC7Y0+p+O&NgJX!U3NGSbFBhiB3@pRBf2!;$n* zF*H{CHU1!{nGS>_sH>%z!JA}Y56DuR$XRQwg|4nyS#Aekj-K;p;F^wt210N1+e#LB z@ZJDGV8Bj1GKt$HJvVHOCQk(g(0}&Fc5as1igRJKzTUDG-`1wtd$b?4(m&)A35*bXNYLY)R`i_5*CGqZ_fb@Jf2M zdjrmiGXgVB{m^B8^1E3`^vTqC$*bh|u+2$|ia3jU1I*p8ElAWp2=sYpmOV1z?h?0r z($SPW8i-lNo6^lF**7wLGV;BCW&M9DL`<=6`V&!~+0hn6A<2I(bRpCsY`>|lbm-3#ot|3Qcm(Ro%^<;_h#ZZgCvf}Sj ztP4ct51hT7NrjKtxPRAWR^7RKIn?0YIqGX^pIv&RH`0ZCT1hqCqQo$4%kHc!jI^B! z(lLRLr!I=M8Knh-ap2RXDW#Qo!l~^cV}l@=BT1C~LjA1lf7=`zB8jX$DHhSKGQ+!X zs$QbRIIsuc64eM*0OLR?;_>#V4wYYmUB9&#lyU;MX=kfS$-dc5ho5L*GZn`Sk zA0#z~3BestTNc)n>+pwixCxtW*^?}RVf=29k^7vLq?@dB>Ij$l&$KNsS=*$X>98H1 z5=}a$M-)7}2RqSbsnfD;;P3`%>MbXjDF?N{t5^lJlN=p6TRtrxyG+ItRHW1iTPRVm z5F-IDS1;fkRJSMUbojkUQNOy1^>+(ncPbrsCwSqnd{xM^6CG%uo?1RWLN|{aPN6$h zQR7MTC>mX0=R{?~s|{O?B?V^j(R=x!t+E$>`R}2@M zxtp5l;A9hKvnTB}W3z*j_8q-}@M8$dYp~y}lrBySkbz>XU#mn1yi(&~>KXNJlGS4- zOTxmZjacP2?>U{=8gH(0$MAT2$+J+H7gg2N&Jy6KE~43W!^s<{u*H^LKhHWw5pmo} z#KGB5L6!RS8jwbO0NHMvCBLpp(nvr;?o$EsO}0?Oe%~a{mvE2k=U?%fjh*;PvYb1{_Xn1t%=+M z;HvRX{&ect?73@zt65${0P3^v3DbQy$xq={=$`hVi4mYY45MauaT+3l8{n()s0apB z_ec)_>gSwhXYkDVSqEt&YQ;+H@bY3wJbNp9!q>%o?>#Xwv7f(HI(5n$*EY|=EfS1( ztz*BzvwiB^>X+bZY~(KkyspcOIDy>1 zwp8H5)ggO%)UXKcYj9n3G7E{yXU_A%L;5d0RLvi73f2tT(a~UXO?ZsZbM4e5sA!M2 z3|YHqZ;gg7NhiAxxM|~r(&$F*)F_dGqgC_2(FLz!y#eUvYVB_@Ph7x9TJ&{&pFV)P z``L69Y0>0>WSB_?%t+v}tc>8vg*e+4ad^g57Ka_~k%dxUhc^IEVhVeWz2j~xJGxP7 zu?#rUk*zY)kX+Q@qm2Q5?wT53g_r11@TU*u?2{%Syk}ZOgKu1p=HG(`zvl>Is*+(YMQi6%8 zS@yLm-r~pHiOOPGkPMYPV>`;LrBFZ9E;TZFMvGoKiEEZH3CjEXcpL!9QxT42MK*eh zs}eE2zUNY8mCdtCJJK|lJxHbASxW*q1Tph%zD_PuWh9|bg^hi4myPLj4mxYJp@*eq zpJOnSs1A?T+o>N)RQl98wzo*$p4o|73hv~xTeoLa8Vcof^&E2j8o()eoWWNMD%!zq zQ6HPnKRXfAqOO5+%U2T@`Upw!lY~cWl)b6%2P6V_G;;FJOktcjp4uzFl?s-y5~iwf z0tdB_a)C;##1FceZsW?M!yjrN?SuCzsF^#;i95OQH_dNA7iLl@FTYXzq8%^`PWCq| zB%Ci#mi*7ZyV3lNQS5ureI3!H72xPtGm2GI21#^+(v$VYBl^WrJx0LQCj>1Jw5v9k>SW zvf!eVjoFWK8-Md8Th(6bjo+^B5Q`xb8r!bcqbldc-rXJk(QH_@hxbfa3~SoVHah^f znr~J>)Gy6>5N|U|#~dr(p4hVvEkz{-=pm3H!@C^F>lnP^@rVphUkqMl*pQK~Xsu3B zHz3sELfpb5n1K{(PnhW3mEXIPFB`JpSWtKCEQ(@J{9t*tpmEPyPAQp%(n*G09YRTi zhz)j@FI@tcY#j}>In~2mSs}*cI~)`9BK|&K$nq>2c}6H*+G!j|zw96CR!8|3&;E+N zO!EeCH9C0!uD*7W-|BSk;@YGr(x7sgzUbBWh#D>Rdc_S=gp~87D%G=S8n3SRsu1p4 zu|#iH&Gbf$Fq*7V10jw*nncY^zg~_d(Nm$8&#zPxiOXsR$vxg=RS&2~%QOJZCx+?C z_sz|)w7vZ5Oz@a9`)$&b=@u%_u#Iv8jNAhm^;x`vU3?=o=T??YP?vBcQt6*^dkhL0 z#8{1v`>h>SKQj;7lidjm4;ykTNmW(hq`JF5VAY~1Ij|~EB|>Y8_t!d7ko__8q5Y!C zDs9GyL2MTWbo|tU_uaWMS)H{2q_Q;GSeGh>B=fi&PbHtI?)f7Mje68E&cpq)sAI}+ zDzq-Ad-k|5Jfqe!_e!aSaV$=L{oxQLT~|`PgQ&~`PuaKmUS6`}f~>7kIhyFhRm{O6 zAti0BrYZ2{6uNz=TG^2>aB=NRRYtuH#^v@(;-q_%fbEQc%cvVVk4aT=a}=EaC|=(ajeKMmKH|Tex z&s2ZYIjLTn!Q8BlSN}zkIBjh*+by{fA#L$0tL{w{4{c}X#JQa@%yt?|NeCJDhhX7y%a|rES*&hU|%$@*n~VQ zxqV)=tem^2>)f~P97=geV!kgQD7vnp=_A~6>U^0sktg03_V<}=KSS1-YEza^m9NLX zyv+FSdo~}{{n8;SAic6gJCXC8=>sL$Y_#;8^ZGQimY?hU5qtW2r=;&n3rzY3@GyLt z{1nVLAb2s`_f(gua&vKfRdnGTS^Z>%|Mcs(pgL-d2NFQ^ zCqIB6fas^IrNEWGI2E&&=4hvfu?_J!?dTseui<{N`_6O1S3UfdVml0lZh1*x+aFd- zm*s8MSgz62N?YRP$w%lFYS!Ly2~z%>ROP%O&qF!o}Dc1if_LG zIGJL2cy7<2HCE@`pE@opjI?iLFbgt*#>X+;X=s?4Ru=7|d@vw-HQ324BV0yVVr<2h zypHY(v^2K~!hf}adU9blOCI<;2JtBX>}M7K13qA`WZkOW+xJCs6`lL^J@2*o2Ep5Ad3iiGwW2W*~5(F)qT-=(km7+2Uf%8&dgGZ=3Mr;!mT(o~o`Al^?{9WF|T@E5ab{s~xgL*7lK zLP5Hv=T;JmPrQBgubYiMzFKFctV_az3Dh5s6(gXtbT3v1O6SI5j^plR=5)&R;|x>9 zT6;)CjOJG1R@VOz{_P<6ZM14%#yDt)&~)%5W=%mZQ9r7rH~%E@)0$#9%XEqNNWTt= znZ7P0L@A+7E-je5C8SWs0(!vofL#Gw6#NOro_mj znGTu9mrettv5v~@-msKE_9MHrE}S!Kv7+%Z-(-bu&ZPF!18S{p&qL8jFgJDF>duya z12SY23JurYWAuqii*yQC6kYObYfu`e;HCN`2PGuMArW1Y)Iz-sRL6iD`O^6$8{6x| zr8&zDGJ4!r5v*}&J zx)__ex`&>!S2uV$l6g4rcHs}&EdqtrBQw8KXVlC;Ni9-|eg=>dNRjdb#qu7;e ztU$4gD~AiEv>a~p^*QWDoE->NgU4w0l=bHQ;`8xVTmLwuUbnIn7v>|%f&17T_aLI- z&>fwOh$7=_3^)2p?yY!gLM2P=832!2%+i^J=6LJR+1Dx z-=Ju~B6Ns+-f?zRo}G`Sq_b8l?A2{q=?yR?EO2DyvAde}1{i4@%~*Q5XDfeIIR9B6 zFX_}iwf1L0sr`xN6#e;`ixcxj^ZxM4)6aKB?YgEfIqX`M2u;lA4PAs$t5Qn<2%U3rH?oe8Nn z?L%G;|bh%#fl4ojE*k|i_LL{3JLb~^dS0>{xJQ| zFfr=XX#_{O5=SBGZB6xEAzE?6$}Lq#(c1>oDSj#57=@mV`)SJ({(Ir83IuEq=Mxy zI#~MIE_AEOQKDEWTp_+naas?fYhi3`ymI1SaSfde_jM%|(6<#v#8*uXe9i%W6>(%V zjmNwiS=nmO4b5nL<8`A1UP>JExiclZEOazO5VBB1h*Zj&2SvB&@xmZ+}##(>> zBj#e&kJJ2UsXkISi zA>#fwtdQ?_&y&9vsf<8=&dp4Is4jT1EDH#rMlma_~k_y=LC+pyWJw zjW|m3d6DVUNB?_*r8mH|&GWfBRz##W^;Z7IT%u$g=>CbSBCewYOd4A`MA{`93kM>u z9=&+VLW^WSBdO^Omf(G0B63Y=Ex+O}?GTOZv1Z~XMW1U88vXpIQ-C7@yTB^pP+awA zlt-!ZqsZ-vYD(qGSD~-u*dm(fcGx3}X9Ll!(#MrS-z}47t+fetsd;IHhnwU%4DxN$ z!KPI)tOQ0FhcV*2pww4ktQ277XY15XEd5^&#(uR`we7>!A?Uz;u z2}=8&G|5^v&V@%e=i36lDO&Nk2LREiR3lF;*%L!5+sfnrlHyZ`;CYd^{^%9@9Q`P^*Z6X-HlAUH!!-OI$s;@Ue{0C>KkH z8}=Kj_^Kf4!D@R3{@SA~AElse0{KIU}Ymrv(;#BHn>`_aBf-q`mAtUJmMCKsBH_m1Uy(;Bn(+V<7Rgyh5| z%2&7%i`9sFRLtpB=|6SJ*9pWjd2gWdq@B3qD4BWM=wqcVy=);gR28zc`m0h1Da4X6 z$7X;-Y|eUNNSw&(2a@*FgJ&1JSwFYEysZX68W1v{$JPrlQgvqKDDq55`-#}$lqQT5 zEj~|xhVxA$n)bfTe#7I_%pZ=f{*czG;bYz?ftqOL`KU(dT4JEJo61eT{uBY|8zj|i;@HIhLavSR2Z2NSVs^KwfX zNSvrl9KLV`RgEB zjdGDFVk5jn8K(S#gfplhpKT-B7JPI)9k z@{^`Sn<7MEzL=_-vETQ7)gq|aBE?sv5WP)HT?rPi52SHgl*a*|Mqs$E4-+U`B5abT z8i)&sw53?!qautcvHL?AgDvnjZ^@NV~q1!I;_Y?#Rp?4)Gj{lZ9#Kt!%s zo!xN0FayJ~JpS?1Sos1Fw_25&m6cV2*<|>qous}SeM^{2^gD57ABKIw0`)MniRzyH znCtydhgO3nh3b=S4-bYkd_Ez4aF4L@4+l?0j=p_*q0YB5X@Wm9JzLf8F$TM@Rz4lA zJVUwy2wGveGTm-8GQJJR+{N~|&7gbb8p40d^=z0tkIvC`9*$V5*EoV;dipWD`mCUk zHmEfI?jxi| zt)~BN1g)fyxMRPEA{);Mbjz@?P*UC9T+)@Qw*zm;{;FF}(lXv~=`(62nWUGaj6eNG zW$lm+#+3UWyOTRC2a8IhCpXK3gpYfMtUX#QA~|UjPk?yTt$tUQm?j}V4eMhBAF>$q{{lR>H;f+oDBv-Cnk;Q&Y~VdmY9!f~dL2WC1e!>vC)M>R*T%6^v_VFh2TM^dpt4o6YP=^m;H zmgbNFjp#gl3FvjZv_0#rGbBvy{B;udc^=P^EWV_}*VpmH!z(Y7LzGx)ad%sr8{?RF z`i4tVDG0EEtl3+~60fteXTn*YH@=$;wMq(lHtipcHe(v0#WH5)L4f zZylfOvqVH71&}VT$*dkPij3CQr3LN9B(R94FVaL_S6Ff%FS28LP{mUrvg6+7Z8xRAatamPJ2qvo~X=JPpta~Bb}R@+;Yr+MgvH8zS} z9FIStSB5p&ZT~qyx1c9KH*R++TALP7f=*l856$HVkw`mfW3XMd^w~aYoPfHvxK~@B z%SZBt{f~7~w$rayNY(PB_+ptjlG5no9n6#cCI42|2e*XyVl&!1trRMP(An9GG)#r! zCNUC3HWjxVRn*d-k^r%RvtN<;N=hDfo5eew+eWQ06y|Oxc5DwYbI{s6Rr9~?X?cX; zQc+x&mx1c$5MB4Ec52E{0Gtow03L|}=Os2Sz8y`27RuiPhdAcwBl!dMUw;fEGC9D? z^nVA&Vz{ojNs4@GKW+DTxG3>W`{f0uBQBP$Un;d5uQgD>0P zLC|>3*4f}9>3sc+O9$gJ|JvFTlFSp2j$H1@NPQcmCq^m|;8IW1sBvLPg2u4gEInK{ zX@pAV2k-iaJ>{v8i8J%hKW;QVcP*=6#MN)(JNsZVhp%>dMZ_UREuwq-097J zc}Z~46QR%UnY~+*6zIOO)#r~L@inwdxcQXW{pc-whAep|0L{5>(m`Lqve_4FA8p_C zg*{q=v?H-eumQYJJ$SCuE}VuWW!!@*J$4s?(a|AvjzPr#6R>>X2FIrLah}t?sdHVE zp}~!;0{V%Mn2OC`-S5&km|S}`m<-;5Qie`zZsgG8=IWAX&=DCmxQ9WPDb)%rb0rJh z=?_Sl`^=QA1b~jMbh={-y%+>6cwC>Mdv$S0Mu2ws#Z9)#+s*2nD2~zHo}+Du_3Lt0 zyigw37kp`OI2%=SzWgkZF8`K*KhzpppmK+<8RBN5>i7v)rJV`|T%HKuHW;DIECFci z2auH~wSpA=V7U7M00Meh!h<{LAhP;T1I=B6nhgD3;ccgSte6H;rUi&*>O8F%&knVy zfjkh1xB2W-s$ycu!?x~@V-&D1lAhqRLw}sQpg! z5x>v}ClwX5DGE#-8w!5VV|7`HKU!TKv^6h21i zwQvBkqY#?cyU>(j9@{@Up5w_7PQ1?wdNvid*Cc%Q8p1#76lDqAUT5sfk^?f?k zxfQT^ddAtqO^zQsAy$e#z=2s%LL%=Xs7TI@+cZB{M>vkm+^oV+DffC#`E6IYfKR$Y ze_p+ooS6x3fNEsBj#^NZBwfxJ$`!-!Q?*o>jNB`@S>pgYavn2VX@sJFv2X{O#};ax zHBn^f?y=M}+jrq6E)tm){846F*lF{LXaVg;t}c#yBaVtnVG z!~s3ofUfMa8cHXq=Zgpv$#-Iv#1(^s4L5L>sU?oVWZ=r}Jk6R2VKp%|C9FW6?^MhU z3#QzpET`#Pq+Uurgn`MAnC4QK!C)|nIBa$<4AYt{Q8Ac}=O;>zwVPpWznVw&$B(R1 z;|}3XX(3+CeUOi;v+Nc050{A2E+7~qRGc4E+3u|HgJjGxyy^WC`Sx!s|3SccpPcz? z{N?{^1RNmX^M4R<2mk;`NJyyvLB9b2-Wf5l&@d2ii0_;j8kG0lcLoc@J4FWOUowBO zZy+Gy-~p)U7zk*X%viXjpp^M{QT%tF%U`1ZbG@^4prK&k|Kjnmyi+s`p{)abWCrEHQm4Iz zJFOw^bq8u{V4@rXPGBTPug8d|M@kGD!uqR{YtVbdmvouAmv{H4j@UB&v=`I89*7{_ z0tifPWX_+{NR`#6@Yy~)gWXbmk!iz3d;?hK+6xFCzIu+9vVNSU!L%UyqTW14g`g^M zVb#cLoUR&=HhY;t-jNw0xyEafd^hLNpd+TjB+b^T5T%O5Jj#Tru9ZxQYN) z_NUUY8^c>1mc!Pu=9KHL+g5)UVQ&EuPg>&EhHtX2-NYMS*hOorhXUK&E-Wm?!VUj4NpzDhJ{|l-n?6tZ$(<;xI)gq_t7tvO}_v}Z%-3pS?!2l|^A~tipQ3TXZ zeyw0HjP&?Ful<>2Pz0 zk&YYh!`E}APF040)uQ1DWFPpC*c3m#f67Sd7m9_G7zb0zKzhav=uO-+QSBtzP$pH5 zH>*@y_Tc6z+`<;?(!Cf1Q}bYP5Yl_XzBi%#7;E%i>-)*|2G9dS{ zv2SdIjI6I*G)rNcrc5+K@P!Shm|XKqoUL5P`eL~UFGID_qMV*Kn; zc5BKCo5pQn+A37dz!4Q?AvRGiCY1Ds28D(MwQJ(?siPoLYienXAnFyl*6jOlkhov7 zbh;ZRm?628&r}M$tOZh}zqGPuwzJg;NX2;mc+|Ksm!Y)R<|>wZWp1h>W0a>uJMUHk zbm53Qme!&|@fS~N(v}n`^Dl$Itn`Dz2h4dzif!Q?Wu(og73E2C0|6&@w6jWerdUV~ z7ec7Ry%>N5G8r)$Z$mG!siCh~FX7LgAFO;iv&1U(&deRdk*b||!$!M;_8V_VMo3iru_i;iT`oj3oB4`( z2#qYN^ru?HF9Y)VEB75o4>RIB**eN+0+ridUH9cobCq`uD7BKMD~fD^mM4v5=Fcr% z&L;Z&i8o65U?EO$G3QQQJ+Xy9+QsQ=J3$UQ$3+6IR!8HqMrL5G5%dqemU~k4>uVYW zbpNz#QYM%WRcDtB0#s|ZM#Hrl4afWML4oeV2Y)Q2ML*wJK{|ty<1r9Dx@wK+F+;>H zpz7AP5PzdD%CUAQPSdN ztx0CFrqvQ+zrP`UlJsx}gNG_!gyW#Rus}zloSzfdIPz%1an3mX&Sgatc#m*7&1X`8r-ISiLB*lScfDHp3LU+Ng5Qb~`diIbDT{M} z@>BbR4N~g0X0*qa$i1o$L2dJ>wXgL*!zIi{gmLrQ>9FsAQ=O++b<=!Pk9N5|M2n{N zP-d7e$Qr3Vv&>dukPNF;;Q@iKy$2C2(NS+yD`_-xuwI;))Hn6!7`4CU&Oe3-B+lX; zN~b_?c*vC&04a1~+hcH9&}17T45(!kap(c*wk$T0Mmlc*+sDm`ndUg3sw7wuTNU$G zq*z#?)Q6a)8Yx6dN(ud7A4)H`9CSQg@uACB5K#`{S{3Nh`8bPrVPLXKPI?^M&)HEc z(NKhv5|$O3`EcAl%=EKQ;I8hIkaqX7ma03POYcV_>EqP_2gXJ{Rz`fsO7XKARC1Be zjm3l=r?9fn>M;bSFj`9A?^30s>->6fZ|qTv>H7OnH5dVJ?hc^^jFq?%=r8z^g;qM0^DUIgBHl!G;8kg~ zeamHu=xk!l%c>bOdo(km6|(-z%Y&xO>7HG#zQ4#=FYV;~z26lJ8srCwSfgKW09}_U zHMERst(59|!l@7gOb)bKh%@+Ubu91&yzvFr!7zYAnm5s z?P!?g+Vos!iRIow)sLg6y4^Gg1bh&mh_Jn&vVOi8776n+{!!5U15cJhLfIVu)m?Wd z)WkjEVpHCc%aYr*u_jm6Qm*P^vu?|zEelEMcubZC5O>gU;gzDZL7E2BBwqFmLWrqC z@eL5Y5*IYtTz^re4q0M;2`U?G^(b9!kGr$Mi;ldj=>`c(6$5Y>02gHBh%qHg{EoIG z7g4VkN#1#tsZ~mb{SK#*UpP#59i|3yZ)lTmfJ`s40!Mc8mbhwFw;X8`X(2yWYnDqY z>*E(a#m0-mhxndY5>)CHSSc77fZHyt3Q__qh+{UNb(+?TnK>z+%ucepnDh*8GuJq@ z*RY6;hxiBOtTY_=q9VEDS!f>OY0|QDoXls(OSA-eiagk8D4fA6rAbSbnus_sMevH@ z^EEi3C=mXkFL8@G2Sk<50`et#|4R-5@xMn7f&W(y@gJc-01^HJEF1#Nf2R)(0Ecv(`#T_6JhRw@|jkaG`$~ZV_zIj)6+%z=v@FC08;^EEN~Gb?_Jp zV3Ow-f*lqugv($e=_q%yL4DjhF(sD|9kBOqduwYI8>LGXgjK^NZ-6#SN{~2tRXc|Q zoi zDTVyVaB7~;02M9UR|HAH8Z`2Tlg2dg(lQQ9=+-YnFQC&5!hwBPOYNhDMaI~h$Eq^u z>7~YN`%|`K@Df>xp=@ynEJ4EwvId_<+#2kvb3lzWo!U`G8Ai1#)-~)ZgT7!=a-XY} zwXAGN7!790+K;KKT%hBmBVHI|8x7oGzO26@yyCc^Q5N4TyWP^Y4AZ6C=JT%`$LEL5 zZm{Gt5w#EJbpygKD`<0?vd?>nd8HUt4?3ln0r1!{6~d*giq(3 z-Dg}O#P)Y$Zi2;~X}kO-0hWj0ITw7r_1mX2QekMG&35-HEu~_|lO7^w3SoP?{H(&= zPoON0?iHk%Iz)W8nv+Ak+ht%sxNF(P>~RHdICX$O@>HHB8nc!vhrAAR&RR zdtBRAP}ed>4PT-yFSUaT&zu+#dLTTgnW?p=rlS7t`}5U)TwfN@Omv_hIV^aNX)sbc z5E$2JAAlg3#nDhife{c`iaq-_lG?3X@~4Mz_Bs52p6Ovq9Fog4o2J7T+^O$p>OUfK zu^{ZQ2G%}Im8|=PQF|B*1*XO3fu~9tQ(CT{*0dBZ@P!`hU|7{y1J!K6Of3 zqxkTk)Uq9jZxuDPCMDJ z!Gv1AE?KwJHbX|6O^#}THKk=O%Vo}pELKU8wf?o1cu9>g#RIi!637}{Kh;3ewDnc$ zlP>u#pcSiCVG%VpPojFTvgNNj4ZN9fL~M=>XC{VxgfFUEt(2=4h^27fs0+cZ78PxM zw56TdQbcqP8rLeJ*RSs9pLFhhV*$G!pm)+r1BMohIVam!m%>1Dq#`(&7;iUj%!}I5 zj=*st{dS0P25yvRpL=J3x1 z&TMBylk1)_Udx{3-t_}jGj$E*9rldCc^zj=7;h7ucS^HRl$y9<*dho>?}a5U^kJV{ zLM-uOj_r~EgI3i-<1`L?Qmvszh8*Tlmi=PnOHx)s@p$BZQc(bX*OS;Ji)kwTE@~e$ zfnyF1fs@_E_ULuj;by5_jxH~M-*ZrZdTArRZSM*G!P4-sx&maOr_quv``&<4lC=S9 zk%1Y$%b1;#?DP}r2UY^j2UsIhCNci*);r%4+RDC~Ow6Vw;cgophr!<6;ZqL0O0%!i zw&2Qd`(b*n@{&q zvN~8fyGvigv&@$zQc?`}sGC?+Pd16t&awa&)Ao|ZTjB0i9r##(q}@ke3*yF?-}m8a zeu46s{*AHh91&TZaW68%H@3=_PyO@EZB${O=;@o=?}+F5%1_CxPr`rdffoc#N}fFRBQxP z;8;T~v>gE)$~anRTqZo%8174F-Ikv88=#fk*veKbs4EZqm?wC`%Ky0I3KLX;Oc#U2 zj10QSpTVCDliqjHt*g#a5iB{>xt$=gef*m6^>}l#RM}oRx`8Br z+O_AyKJ!9HhY8|~g7H+BxMmF`-E5~Io+pV~FKaDXC-_!ick!cCQ_QJ%P#!ziFCSU@9x? zlT>_Zp0a{tTt9mm#Z1RHK-#m}6@sB+HaXWQR~})B+6tR@_?GfI_32Gzy8rCb`pkN< zv2}SScJnZOgE!Skg`0$;h~;DBTm=Gc`d zG-3QCyzL?SFmRT>c;x(YQ;!)MK1?>Ua1}ApqGnwkLTStQ&d%Q2?~b7u*w#m(;h<(-vq zthX@N(P@9|%W;uIaGA(j2AVk;J32p2+V5I!xyN3LP;5bFnMuiI10kACDk%@}s-X}2 zmHLPGihshxXHs-lH`G&ffxTO58(e919#@|%_jE|p;DTaxOOn~p_)L42--~ceECsr#XC8`aM`&H`5~pKMM<#>Xmu_JcDJtlp(mqWrq|$S7`3*# z+in9Ub2&NIJQU8Uxv zBuB0zHV?m~sgKAN`U4Qoj57qkixWvoV1)Aqm~?wJIJ620`RMzERd12 zs3+FW&MmV3XBdC=2AEC!zr2zt@Ok^!K;z4O6s)bYEJZ_hsps5hlUM_8#H-u(8#I^;0&9juD4f2>={jOiNIgEv*8XHRkYR17!=k9VPlNCT5?3U*Gj&$K0qX*tYZXb=g{7?bAJ%$Y+&wZjE#Z z!~MFx7HDDlxlP$8bd)oS4T zn7{-%Mhe4VM&pL9bdqyx(@WeDjABU_H|&R)!PufQf-hA(n9{14N|*^sm~o0nwDE;3 zmW5zbH0t!QOhCV4Fa*u8J`_d|2?-=5UW^n;tS~ehJh>tKF-gE8yuge~zG@PX21r8- zA+0P$qb#+KBB=!J{GBKC1T%5^H>ktJq0$(UZLaOCt$=aTp_`?@M;*ynlNu4|li(k( z0|QkCXG4Grs>TD?OG?vkm?#UV;?ABWkZY54wak(6h3s~%tbAz+XyNw^g1QFi8ViqF@0zJyDKb6%9n5Lh!jrQRw8=OM=2SY#V0WSDOUw*r9T6A5-h(fu%Y$Le zY=Fpw%M&k`hTVNke4%3RL9?`TSt?k>UZQPKNS)gU5RmW*uzt#G4ODpFZFw^2E zqnOImmpL?B#`F^}%UjOe<<>(2IdvnkW>Y$<$if2a;WGaF%5d#vlY#usewDSFST;W2 z5TR?Z_xjq-CkN1Lv8IZ?l5B z=8%hR4$zm!<96l^FizljWBJ;)dE$w91}M=mU~snS+Hb+9uvH7(Lz*|DJS!wCDj+ES z6L4z_e~*+9T&48IIGPBS+5wWl?@6NP>OLMf37e>cnUb}#t8an>Wmmo-w`pDE`<+Z| zF2<)05b(uphPRN$Wi8r1Le5`+b^4$`jy$zLwGLlJq2?H4bIfLOv50o#kmSL=nSZpW%)A6WZ$yM6PPUKq} z!?=(9STIHuZ1OF(5jw?WIHf}Dm4{>`SC~zcd}o^7=6+aU z6&s;Aa5khfYQj-Av5lmaG!GWze&RKU7@$LKW7tTxUBqCk{pRVMzilQec}^TNtSxLw zUR`p$-QH}&6I5P;9QX_|&^AiGG&iN7Ucl_p=1#SQ zWjg8XbVmxb_T;io2tHgw+hU7*ToP*y1^ao z5^Vm86J#wem+zJL4~2t@Jz=|6Avzo!=@djA9k z6!hOa;0S>C{x>WfBILi^;Q#1>L&E-7ZR)=ZSf~Jm_p*~(;v70NHV)~#i+e9%0pQ-h zb@4xY;DC1@_g?CPhC%qtq5gLP3la+c-{<|i3l4`0fd9({Vv;3bkuwXcsLsp+MU?(e zzVDIf6NQnuJCDfeOmSm!(+8oM4E-oa_d?`3TEd&7F)P1UA(s$wQ*C6g?rh*kk>yFAHXxZeXrYBQXNqJgvnxTn!yobda)Abbm{TLV@ z(G$tGCWoT0sgD%Q9R`7jmRUg1c9#z(G#yLQZFFY7rRVocBt<|l(mtpYw^U9BS{uar z0Y)%-`lkZPBt!r}32{g=W}uijKYZwrBLyonDk|alOTj2#L}PTTmT`vKE&JK$h+llI zs?OM|^h*|;n1)b16ZH16^o#~QdGwSlBCOH&ekqirYKHAn}S z#mtVGnVBJ`TxGxe+;jG=xITdLvi*2=EcLz)Ea{{suLkr zA;Zv65h>-sVoA+Hm22%1e<39fKBJ0rplx_zJudDE8jAlq>i-L7<-HZAec0=|@v4Y_ z=)bu1?&+PO#3G^StZDcvWW$woVEFhLAq~5B6}=t(U5}#%HL?m#J@`|l8#^P>C_!_H zmD`IWjNW;@if3U{zZD*TWrwi8Svo=6Jpt4k;0Vq^YmmAIZJ*o~IFM;+cQQD~I7pOH z0-ZQ$2b+dQBzUs&+TO$lHd)LJld;<js}kOaX|6IufM_vYuWtp)a$C# zsp*P!%e|9WrBy_8_*vA^Z7D|2)&qZMHgpy1yJ9kFGh))9v|;GM8#KZ>X5H#rbG2Mv zK|`lseN=TxIu3=Qm4$l+fUwTvoV`>M55hNkyt!hUzcee0=KXhARDCc9*htusK{@ZN z*MV?>q!NQD#%D1KvP3!Y@fHlLli}mjTd4`TW&iT?I(0XT#4Wge%5mwF$*0Y6(DQ&` z1y|y{;>pS3MJEBF+Pk`Z5vJ866JtAX|D*5q@(z28dQUBpv>a@T?D)>;9CObV3*DBT%!}{+AD`U684Jf8HdRHZq3^<4WXtRaO6hWKyK_ zg*rJ`0v-nmWo((bA4cy!=uUCl>oW^;q#wBJWzZoTIM((Eu_D_qaAK)&@NF4%LqGo5jafUn*;}t`M zY1KKz5qgzM)i+@sbMC9v)o6qn8x>j+*GRSTM6F_B>VMby{9XM^W^(<3 z(6;#v#=EOb`>pXyzS2_D7C3_I*{P|yl+FcbCCP*beT<6^OS`l~bJHeFCnQ^J;Z;NM zUoasd7!q{NrDvxtC$ICZ^0Uh~CIin=Ggo(M<3{lnO;Qq zhczy=$R*mI_6(vakH*E#GW!nD^5(iUp|>BR_psP0nQ1~5&faFRd1Ax?^1vn}X z1M_$qTf69^Y4j0yUEn>IA4n+@8B_e@ic4{bO})N*2ap1bTC5chEGm(v3`xJ6ywI28 z0f+?X(-aySmJPiTx_~y@Q0hDEbB27e z)_XsXCXkK2*GnKp-6u#49_IK|5-BTT8{ouzq9@QIkNT$e3Gz2NeY6tC=PYbGxC9HC zS4NPVv1RGJ4%cti?5&)bhD&|zY1tvqq!b*tEE76U<9D|Cm(06nMJim*nBMyEFa16{ zu2bLgb2XMRyypS;=EAj-^76IU%}w8a`i-v=FI}Caq1CXJRheows58C7^f{x9^fOnM zYL3kwuX!+$a5GqT@OZrc1tV2!4!C`7k7`IeWXMewzG~H;wD-_>E%ETuniQten{9Og zl3f3sbZBAKX2u=c%Jo1vLL{(BJ^fZW9JqYPvjVu#=>9q`74EPH)IGgu#wLa6TCDKS z%cRmP0U!KI2$iXTAtp{M$7cbBCM_ssN_tG#@07@G z@3yHMUuq6#j$ojkNvyBn@Z;@c_A7+f>)lN#mfw7 zc1KPKe6g4o-n2NN<+UUSADRvy~fY?G{&@Xl~|vZ{_4ZWNXa=Lra#tohROPpBeUYJ}Vdb zcnB|i|AG}-a~E_hwtN^zpRH%xf(@IF;TQq7p&%Jj$F#@?k>bAlFafoy=9pO9{g^UB zU3KFTX{zk`@s69{r_{?*1`jHM^-7zrnJl*0itnW@aC|6wA?MvT_4+a1>Aw;+9?=FD z7)uX@r3aRp^>(AYb**rrNv5e8{Ps-DWGw61ve2XOGIJuj{|H>^o;vh)dm6MKPxT)c zKg1Ys**`73)};I-Gq>Tys7|RXSUgsj$w3N2#k!{rls9?LYV@|#;+?17nSDXz7}3eY zkX>{qTom##sL-g_wBKq>_46)%)(V}vNLvTuH|I>MAbZ8RiJcc>htU}wNiR5Jm^-YD z>K`!qrB{=T-h))Yvu_ci+_)$BvU z8QWH;vE2L*q`{bN%kGbN^WXMia(Sf%Cy?f{Hi?IAyV1H()E08&2y(Ld?Y=Qf+`?KB zO&2dy+ccZHHdw+xjw!1k%IVsDYj8cfzhWJk`&z%9u7GogHqvs`+E=lfeELc2He)Sz zo$=Y?mR!a4_hPtBV>IrUh%q4Mr&DmL04dp&{$MKpxI$=d$jVPtSjVzNxeIR;H}ymZ zuASMnr7_#xZhf;OAlv|6qqq|m2m%74cSS9Dk0sErO~Ii2u}d^31^m>vY!V1-_M?ux zR9iI1gxLgZTtYYo{R2>FlH^2UZr+dgk3kO+l4}t;4A$!vGors>B-S#|%Qx3Q&r8eqr{2~R-|NrD0FW{<6LL!b7tG%90r=U&vQ!h`(fH|Oxc(sQ`4>#Pw>;qZ z*F#!BOYJMeUob;n^tFY$%os}})nvZVVQKAL8a&fI)m%!2Vby7od){e|*!_?FlalGo z%=8A(UlqDJ8%U{2!4L^RvRT3l#y>&FiweeKrluCYWn&c@9J$N9|G%Ri1noNTKa6OQ z%>Z&4{!g6&6cUI4suBM&QEJqG8G@it!v8n35E=wAVZcGBfG8#wIT$8383pJ({C}VD zKPo{G=Y#`QgP`{q{;Lf9r&Ry1|zugqLga?vjqI}7wprs z=0SI!pTfb7symxIw=kz`Wkbv`v9BfD1}xLYu=S26PRWDT2-4{|#gNp*m$t%7CVss# zao?V?g#bEZg=vUT2zINU4PC4tQb)`(fhvM9+O{%3fg%%pW>A>}?bOt6<1vl|+v|HJ zhcfb4i?1kSX#5i<0$rFDl-f3z@!PH86*{AEDP)1@v~HA6rAf;+qn{Diei+pklgG3a zfTiXM|G!|2C{luTJNucXJG!U{(f~j7g58n1x!Zj4Yl<;1HzpidkdRC~&}&q`WV)N? z++1UaEE=%byZRD}D-wd69F%{_c7LWoWVU`^e?05W&~ABqco!T0D*&f>sjWAUMETj! z#i3^OkFJlH95o+!er+wFjYod_Zh_hNnu(~M(G?>$vdV64Y9e1wOMluo38wd>P)?ds zPOScNC?-N%yv7n&_o8TO(g&XyWCw%SI%W#SrGN;k-gn#VH#?laU|1j5sapN-V0WzQ zw^StghEz*_t?*En`$Yut2*G84!IZ=eMon71AH?I$my0mCvh=}87%iW5eJf6$fpeXo;IxE zwR5oz4cj?gF%6|ArJZ6-sO(X`-I4vG%t1KbA5F(~9i99oF$j1Rn$g-~GtOFc<-F%a zFhV-VL#*UB?fm6YBvE?HJGoS5k`O5fUMA&6ximns8?Ds-1HP5E!zFf{uzpLi zi7ASu#3q~?Qc-|+_D*>FgOwA^s&P{J>830V8>4zeJfXUDNf$c2wa)y+_+(HqW(Esh zK_M83MtzR7e>|j5KEjcZ*OwV@8TnA(ewo=#0Gzzk4oNBqF9j$XvmrO^ktxc_T)n=< zv}9)gyxJj)L+3*crY+JRsjDKK0G8j02!8oq!}mHQjqI7z06iI<jT{eXY6fB^8}bo{v3ED2sNGZee1jW*0E?R}RitRP}h|6s0=Z7564CIR)&thRB{6jtS!(l77 zsWj*iOA|||D+#0skzYY;|9rr662BF;*2hg6oW%CHVf{e?uJk8Ie$ayN#FbWoPDwhw zWNfvTb$5x5eBY9`E@2BkL$WnVlY9sL}XyJ%BUu4dNZxa@r`-*-VQl*Rzke9&rC6hvsDlLvC zG?BT8L!hmBpqSgTqS>lLp0G&Y`>D=w&oy|~@qfbo)>c@g;4(<(mr08s;>aZNzEMpf z5;`p`kLb4NsMc8uXeP1wda@VlwcMOlqcry>*r-~b-tpl?WFXC^PgU2Ky%}QI!q2G{ zY&FRn>2wijM(1>o>>@wuFGgH9%$I*lQ24~%sJ|&yzuOQOSm4lYrpaWm8(GmE`>hHJ zOTq$-ahX|6ynR@5D#(9*^;PB)q1o@c*xXORqEjm?Yk0HQk-Vp14`69YCe01N9oC-A zoX}0^XbT@OqA!P#ilI}kzAUxh_|wXw<8n7nP(Q2K#Viqy-Za1fJ-n8Ud2{XhnT7Am zSq=mHmMK3L#Z@dEzAYbD81Q{SZ~5-I?zxbB3THerB5%0H1ewK9M3@1ds@?bfiBMDm zQ$eyDoVnB)8FG>6N;@+GbEacke6v`sa4E<1~sZiPa$~E8V1cdhG77+S|#n-xt2v4y%$k ze+<7B;H@P=aBW=0=%7XlW7vo98U5 zVkM|gMwC$08M$T_`cI;M-6&d8S`+rr4v}(Ij-x_HM5E;yoG#L^Ex9f=`YtYDO!*31 zM@@n-&2}-aCOZR6Vb0E|jzoWnp^I!lu+jZyx$=SU`&grO#DmXGxc+J#jLGOPxx0#_ z7Cc7aKVe+M?3rj7SI6@aS{(_I=bzG2KPzlkZFB?qhe^xV_+bqm%;M|kD-9{G z)bDjxw015470Codp?fkBOD)cIE^U4UY3xBw5yVqomTJ?f zrrJ1RLne4z0}Vl>5gN$D=d2aG;m$^7+QI}bBsT%_j*i1{)rXg=)vy%fd`rp`*tqZ7>?&)fponrXYsie2$jGJc#gkRo`?SWQ z;W-%hB(%5JXmn4@&MrLsGH|Ldvp4l5EF2g}l$l~$p2@o>6rkoc$2|acp?o8V=6%hO zI%Zmfa^|se#+%7l^_=-o4}$N9=ggzOpOEdX$!niP`(I%;vu)zhTzMa5>4cKwO7+S( zG6?07DEJ;YV~shy=|*=snZok9U9=c**A+fz93T$n?;8RdwU~(S^0O`@-z6jf{G4sS z>^H4vRUb!oc=-9=T_|4ED?3g088Cl~1lEL98BmR&vRjHI=j-3(y4xvIZM|QK;CW9q za4Nc*Ek;lfyP#nI#(vjxLULhyN>uZK)|-@xymvmRd%aB%XSO6NOt|7zd^Rv#o0f+* zq|$VL&%1!`_1V!2u&C1&3i*>ax4%cT?4Fhsy#C72EpndF=K#FHqnW(HVsKdLUF+UI z@`vb9Y7*BKQMrc8Pr*$ONcXj^@s?I!bmtyhsBf|JW{uPwA8OLC{1d`k9TguLG(?2| zLVhzoL4=IdXSQG+LgazO+uIA{MWsMTl@B=A+#sf|p`nOEN}QDeR@wu)8~qx>!RftA zkYTd>$((k%6ar)GaHpRLugm{}75ge}HypIs!AwqlyT{H6Ad9Jw`{*z0ZE#uluwFq- z%h7hUCKxZmGLoD!BO9$nsA(I*ci!SraorgH-zMteta@gBL+(bPN5r3-glSl?i2fOmm~n z2NiY}k|WmERR#i7Rscvw7Dr^tY+0g@`E~Vy@RAu*PGkZ-#ko6j>>^okTO6Bw=B`Tz z)^@JjLgj(hK6NW{y#BF-w;KdLtiB1ai*fr0)?nSwnY7a(ML#VBt^EO1?%2Y$YS!~9 zV^yGz9dz9uZkD5Cl6_*DtI)ns9b}=O;L_`3$`+%;YV4iIZ+pA(t9`qDwaNj%bfEW8 zw&G9+wW^iP^NXPYKKG6owkQp?zyB@tg1+h0y7&7a4n2U$S-c5#_4OimcuWRCsN>YS zoLVp$FFYizpRGXAI#@egSd1i!De5;F9n#Nx(Dbh2OkmNP*~O5Z?%c%0K@)E+F3S*o z$!oLPhj`BVbq|lcAqp}?%NboRr&s(bKHG7v1v8fqG}@Q=@UJ{NqQLF%{VPg4XQ}7P z{E%E^W)GcE*(@@6k^`qjJca?CbGaDP2W;tf9qSTW+>+%kx2dBrrUAN*E-K_q$CrdZ zo+Mkdl7O*H#XbG^3F74-x#fW)zTZmcUYK#;iJKjeAu@(Cv+>*mBmHPIq`D=Nc}4Pv zZTjwHoeBb>|?c{9Wu1Bm8yc{`IGA1Am%HI02+UD5}J z>;j({k~hT3Y1wim+MCaj0Q#Ys4Dsw7Us!kGEl%+4nRE$&_13YKyb3wR4Omqxn%0Xo zxD!=Hpk{<7}Gr};Qg2=p4 z+1p*Rsc9saJ_kw)G0Saa-mQ`PyH-%jwpDRcvg(7+$MInO+*>(&t~6)a4oka8bA_y3 zYs*4twt(xjEsrf#DAqPQ9$mo=E#Xb6^#iWFX4MroZ%B#j|JqeNAJ}mK-Pux~;yQ?v zQ-d>hn_;(ML7~%8nsmU21MJtc4fuq(Dz6qVjenFc1@a(L`JZyXxp{X<@mW2Ze?d@c zBPD~c%k{>PjH2C@b&MI9$cN!wX`o@lN~Tz5w_Ya7!SllHLMD)DH|ZWW?BrTu!f$A5 zXiyu58Wq=Oc1CYc2dk19l#EIFEmG8zccB%tj(wgvqCce48Ks1Sj*~b(k{q#K>%TZi z)sIZSxcA*0I&V}yegK?$KzvuW7SrZFcU`~k@h_M}3SHF$n~rm~)08u}pcFF^V0BP3 zGtLF2%|sxfCQ?lT?Vb?;EUd@6wR-#?2`)*{oi!Z@o}-;DB0lD6O)NM4qZ3 zf^d$L^hBDRwPvz3nT(90=Y_bH*Xd{la?|^Kyb3YTGAym|$gS#R>Eb=IMZ}!et5egv zF0(AM!A${Sg*e%E2CTH1k6AXLZI)=lpEg=PL)J5@N4&gHw63Lz>Bt2TbPA$_*X_j+ zpgh};j$i_jvB8W#k2Ic4#H<~wM;7*D@+@6>xRJUqhW4Twy$*Jh5kCcL2zDxW_^r7|H{tR8M(Ene`V)^@1q{5>Gg3P{sq(e3uexQVeK#TLTvdu=9)FXc;g4j-RS-C1Dd+#>zq(Ewn!+yJc}#Y%UjA*_ic3D4~XRE><( zSW2~AJjn6%G+lYUd%1oY-l5%l$ZqKmpl!!3Z*Z(}el+X{VYAl7iMIAt-;SD4xA)_sQWKY z5zvEa!uu_?$nKqvl7Cin;A{`aTAz(K>pg8 z2>&_dKf8W_XdW2sKNyE4#x4p+!GS~hKVclmMSQ*LEZoN1C35|p{o=IYis0y4loXdY z2(cGU4`JO7;<*>f_}xq@eK5uOR=q|hAM`a@leL7k^_0%SI@!_Nr0I#)JH&2b5SsR9Nq#G2O;Zx8Y3JfJ3{NQ9AZsec zq}Ia$Oe)X?UfHnKxbR~O(hYj8rv?;!T=#qRWMcu)CS3K7dVAAhjfKZZ_oL!OomA-b zCth?)la*HTVqTOvglE*Hjhfs+9C_6BjQ*7FB+1rPVH5#2z*Hn+a0#tf*@hvh@{Qi- z475W6``g0tFCT_1!{yEuMi=uegHKfUcTXQ!L$fKl-w5z0bSD2br?zPKGQMVB_kA^PfkrCM#3r z1F!t(+dR07H!{^)K&z${pFe%ZlLOka;B##b^2$x=%^L5@>3N?T?ZFS79K+ksK~UDh z8j`QgXbjE;(RdLE%71P|J!v$;-2=lf1aTHxB z`)pCeg`TQ0>ge0BGhiYYa6~i-OV4&4`^-5T{j)RJPOQnLKxVzDjS5NvP$7h0<*HYx zT%H&8%5)RYQTsrn*MB?7$(SPD&V$;j+KNRUz9v@wAaB~^nEPkz6^`;D&!XH@PNS->cNOTv_zAOWmVnO$6-^* z!}!?`>En~KMT+I9@cD2hrRei>1hMZ~6Wmea#?uh_dXRyMF-+WQ%?=A5U!`lh%KF5Z zWyNf>w6)yXG=u;OuX%GOm7W$2c{pEzJtsf?yu2dZ3n3%OC)*Bj} zX8QFr^0dBT6Ep5`u&KR$e5U;9sk6l>87iweTk#U@<9vvz^;nX`S^g7_hBV7 z!KtEuNO1h30!eG266@!03txh@(im;CcskTf>F6cKeoqIEn)_qDP3Nge#sujw9@b85 zQrmTfYCMYQ6ZL@}&%a?Gq2GoYWM{uSN9dw z3W|Q`^XurZdK_O2eTX9uq{$1dJn+&rk8y{%H5DG+5HszPhlNz-ai?6vn9-izeIwPv zt;*Ia7D;offNVO4ZoYKJ@7IxU+rRf0jptqcF>;UEO_((0!6rOEyiEhX@k@Lzj;jP} zL@BLfQHC{64;uDcqbafi{e@G6My1ab?J>Pqij@x_4lo3noomljo8;@at>Rs1)*jV8 z)1rJbo`BH&4z<0LW!tOZ>Hzt;(8W*S0KcCwUp^IPp}x*#tV?N?qXzst|0A($^=&vL zbOtw<2jSXMxy3$XI;n91FxGbF#2Pa%xsq{`^^x3pvrx5OI5(x_)~=E27fxYN;KgON zT^D;#58KEQphu;2Xk&pj&)PDvzfy=#nyh4ty^w+MN|YjPmz<0IFBrY^#M$)4=BCzQ zVj6J2I!W2Q{v2J#WU(KFVR=UFlHg`HD5QX#)h5AmanQ8PUM#gQ&r`g4R|4DN*V@NA zD5`o#Gk#P&piEe`rKO*V?Br^PgFQ{@1#=7GQ@WU!!P#A5_Ud*#QmGUk0;;kb#xDyD zyT?a9l?NJ4_jcS2zOwda;?N34m6}t@gRX=lL6d6T*@ET_vnL`kp2}_5FUD_lNEF>6 z$vs4h6mkjg-;I&2(bY{QQ$wvb!D@|RR25Cvam_a{M!-@XP~Wc0UP)U2v|`W%{=_-? zlUG%Ib?$A+%T1q!#)lR~q%jlo7mPQsF)fye`7JfNJaeH9+fqJ^!62-Vja>YADGT|C z2ige+f0(J3j#_&eSAn!3M(SnnfHZ!9aQq1;j4x;(7usq|LMhsZCc&u9Kfvkx1*Z-H zlI;kxg-`&BtSI%IRLOm@Q?LZPWCRwJ)|T2!Bet)#bDne1#6sKyisLMw^B-3~9*pXK zt543RT>(@{u;je18W;8lR;+3RUAGIq8ZAfByQR9w+GuP1-hdMF{+8hyvEjxrW~A>t zw+i52rMdhg7Z`MEO?%aN0G*eF-PVUxAJ~%cEx3=}=99=9*7Ox-UO$ZSqsk3l1}P*| z3kwBV)MPI7W;WA_W_k02{l54C>{(=XUQz6Sl3#z+IrV}sGjol=jsE#%Pgtx>yTkTH94`Rk}kdiA{k9Pw}u*nImQ#86*Z%<3(JKXXZ6UtM5*nTV z6f$kY)x*w@m*w9UPLAh+`Tc}?Yt>9@xC9TQJHD3A$edD@TfGhjt-JhJC%N)lpPs}q z+&RUdjfP|=P)z(T2$}l0PV2v#X6CQ`lE1-9veB^IlFfm-mUt&iQm+GiN~H*mMBJsA zOA?RM&i^4?K!4u?F9TgdWqq%0^P0EhdFQx9;lvxmcanWW(JbX34g58+Q3TwT@4!rV zLxp&pVF^0m-qeNU(^KK&ed6MUv*n2utBxYGvN}LH*0?JwI51&3-CgFBpE5+NLW*Xx zBKDnOa#^M#?u}&=(CgOsHOzux)7t`bc=_mA7I#s%KZK?<+R3lmH!tE7urFD z0Z$gHZuHh79`{&V7JzI#LTUDOGzf(Q4!s;WnB7<^O*=zq>NBp_x*_a+{25R79w3F_ z;Aom%s+)J$aNUZW8(wWR3f>81Z#mSeftVY9Yk(orNZzh3XycoTog<_dWQvlj+9$3V zjS3_s(mR{M@2Of}dr5v8gj^+XIk}NlJi}(qjUo-v5O+;Ab~=(?eLuQ~fc5##)p{|C zJ$z3Q9sKQ*LG>v`Odg8BGuqs{i7DL$GU!Ik4JdK5PptI<+PLE!e&*qm{B+GeumXeN zmk75hiocBMN4XFep+Uw@v+B0;-C7TH_b; zNML;&f><-(SC?@x?kJEfJ74r7w{7pL->Eoh(z^Yw-`-hs^(11bNqHIJma?}YX1lqs z5Q?zc@SN+vRvUU#Tz>G<9ZEd)E=fBkNPJm!h!^!(^aQQ!_ zW~rY(NWsVanVdN=EDj(VA#f1dD#bTk8VaM0C zfesf((v^dxHN+WOmGT!qR<%bb0+*z5prX*N3}Pg@^|k4uPWgePyd}rr*?p|ZF;=@t z2lOP*u+K_lNvuVCNfakRkFW%tIMNRXNt;AP>7vXUoB39_D`MlJ;}dW3EU$Su&xq7y zU4Dm<3BGuXWl%p|dFV{`EyiSl4w{3%-O>!paHIVjrio03KF0}9BXQ=c=}F2Oi=*ofRHK#25xA04LvtWxf1HJa2xXHjzE59RLxrOsYTACNC0Tb5bC z;S#OaK9m>D!^aDEPbW1iFrNf|Ym{+`Kl~TWdZ|{$lxyXaMKcP@K1Eww5kF0r)XqgA z9=AH$a*Q~dhu_2nUEB@8cSvqsc)IxYHKF;SLz-a^RGgx-!e-U2zDw)UCAb3eQszI7 ze5XwQY?8t8i!vWo>Mc@o|SC%EKN;k z(uLylGrEY-Sq+5H#-5Wv2n`Tu3<|L8F#jn>GyR9gEm_F4yFDvWce*Y2K$|0euf1Ax zg{+VQlF<8YFCIIVVtH$ryj^px;>3a=T65=Rh?_xS$PU5EE_S3F4UuyE7+Y`t^5qYP zIqFsu)rRz($%f$*rZ z#B{SuxscECmExBmMX|NHrZbT;_wVyI@DL9y|7%j`mqiBTI}f4{P+RhjU9ILjX;{7m zSy5w!Jl4Ue6FmbR187WXHc+czUVV-Rz{@SCZ9DkKEe2>P>uU^LEa^++;<9+V@*_N* z1lIJ10COZG2VbE$n`LI8JZK7{^d4;jXu91s$3HLka!*Iar?=pD3D@Njibia_l_K=F zCn4+d-|$eCS82vp@~8qaDoAQ0Y6XbLHMQGuBeK-#M)P`q={7N;3=>Cf z3Y{UAN8!U<28s|%vqI)a=2=ku2DP96gQfQZ0E;~Qz{xqNa7 z|66J^!hM)8Q9W(Q@cUThZ#3xdlZQ8Gz^giG-TVti0Bp$3rS&cecE}r4;N`BO5b;7) z%#^ijjqOb!-I_W0G^SdXCcynYE-U_bo19K;@0W0Y z;)4B~(xjD`!2p5ho~Tu9%f`?V%@$3U?H^QSa5L}wKW<$HD`Cgca{YoMGH~T9r&(K9 zr8_eZ;&9*-GYvX>b{YWkyY4QUS4M<)f5GIXyY8ZzdcR^&Y>Hs8y*<+UnXlidvTSuQ zv>UPQ-o3~72HaxPO<8 zn5dR+KxlE+j@+?wi1KT2zB}j*>->RpokC-wvSV5hUXLSX;Rv2Mf2NK%i8)z~yh5{+ zs4kcxmf)pKG1hzcLLWf!!po%144*D*KPMPwDi0RL`E=58_R`HgwOs%DXa zs0$}}PGbx&Bq))L4&6`UmF7Wr7T;p~caBR;8SP}j1ksUwc?-NBgNidL=X{x>@+jzT zvk|QhwLhOVAOXQkEcD#8U}S0DHvN}z^#z_ct~VQo$^DR+ItFRlplrtg@1I+sO#LKi zXBldWtUVzl2OkR-sYTGBF*>j^{+X7dr66wC7OAe5EYM5h>@km_DYOB_Rwzx5D*2@~ zhprhVWc5B*cWTZ>V~b^0EIvTg4q>)Erq^9_)?5JX-3PgaX}EZ>R9hLryzS(rkO2BM zl`~kI6fjeb4E4Hns=30RF!$Kfke3yVCKN)ZbqIXQ`97D&sH+eo_B|c4Kwh;EOQJED zgzB3j)Arq}5Q%=-V)bjYZ!5r)I@>LlSd`5Yao$dW*4}e=SR1`&qeY0R96(}jwllUa z?Xn8maQYN-=_(VY<6skBb~&xBqqH_?Jud7<1?&p}2BD8zr`islohbUe%su;KW(3au zv>~06@ax@MzH73OLvfc!Sx`xQRYm6bAFD6W?$L8a(V)T67b+pm3W&B$7%i14>+m=F zOmwN4ap!QGICfkevjcJkJ9c#(X*E1x>k{BZW{#2P4Iq6(@{~5&`3eK}Ev&X*IL!yK z);4DKsgu7MP^=9V0nV0bH>u@t7%Uf>sP8Ydw?BxE3V}~6#t7XbN0@@OvQva~o2`PV zk5S@9)YEiusq+S)X$$TwVL!)-MQqO7bg=~!8;3*qmE`g(EjS^Bs`qu`ks|oi{dU>8 z?PQhv8+6O1Rx6g(?!w`KDo!4P51#WmRUI8I4uyX3vlh@L^+>eAi+i`wDrpU;topzW z2UBMTrBh?0RO&##Xe49I5-+-ZbwO52_Gh<^L=u_UIA0XiSGc*Gu^*x%g5^0JBs4$Q z`(^>KmTkH)8TLUsrRFgg3xv_LeW_&=6|r@fm$m z8-L*+;L@8vMsAwesw+G6vAo(NBCS7SK~<3_(Fs<{2mZM0?fBI3t=CmXQLB&J5O~4+ zyD|rgc7bY@_W?{dOmxjuS}prmNne*n2n$$QQgGp+Sr?ttQNNU%+qQcg3;T$+b|+4v z7H|||KfMOqMW(6#NMH=zF3ON?qqMPwDiQ6xwbqX!ujy6&O+K!DI!n{zB& zka`ezjGgY6=0ve`G@fX`ymaxMtSjoAN?D|{s=1EBR5y>qqC>-#QcRtq)`TN+SotYG zFJ~?WMNjo&zFn|Rn=xj;PC6vK^nHTn@S|=ik<1VUM$O^bmHU>lA*(aJ5rSHsDT*tYQiZ{-8*HWI|bY&i^f7p?r^h~A~j19$<|JA1(5ep z9lWT^5jDaby?u=;c4p+(x6up~IUi8zK;%(qcab}M+|0x{e}W-dE5g@H^H7ZdPcqBI zX+8%NN%`t^q?e#^hBuNyH+DtEH@@h>f30*PoVF>aAJ^0ZtfNZ9;09WavcqE}U}bz$ z7_6N^yB|sR)5bTH;?t9-JFFK{!f)SjP4P~OZyKWSejR46vF*ScaQdc4D)v%BCDipI zWw{scos^-vifO=cGH&X68oAn0abGh;z8nY|peb>`TkmX8T|8k;K^w3#CG<}~2%hev z-&3KJYmC?R>xhZICc3k0xJ^Z;YK0!$0_*z#Z$j(9piwMN_FcwEl#PN)oH{w9NWQ4c zJ+gt{TxK_Td6g$#Y9-vwml??4O>TP(TY&W)#yF|%hS)67d|JO-wMP^gweXj=P$&;d zy&u-F^XtpIGp1V&M}f!}m1}D9i zm&~2`@=_hYC75DAexz^&sk5XZ-21uq4 zuY$F|bM1E}&vbS5W1A4`4O{UWO>KFNquH8qpna3ascF_gf#Z{|gVZb^<`=lGoe>jm zOU?Qbgv)B32Qw>b3}y^?RA&~P^>)4p8&H%au2=EY0>{s%B|~=slr90(_Dnt;xg`h$Q`-6dM!jg!j^L<(mCYOgspmh^^fYY{X` zrS;1Al(GIy@xE}&wff<^(RLIpZAA0+SGMx7q$9v!+(g%n1O|}H!T`W4we`04HjuzE zid>v?Z{vhl$c!7G^F?zCZrMrVP?f|i`jv<{e0QVefm^sRTS$2I;gwypTd|1$ZOt;= z-t6m~OM8eYCAp}QDq+2yA@r}91wB@!Z=R{{6eXK7qj|a_X@Io|%PZo2)$ zrV`8CS?yyh->5ILi?hT-iJDQ<@a<|gt>&Q&>b@(SeJVrODh6h>S(*h;7S)yDbu%aV zN3rhAgx}zH@r)TNYuI455Etx7z>5Y%5($ zHS%0&ieQ9{>%d$jtEGR?837*_ozI$-Rv;cYJ0}}H8 zJaW-dOA?SrPED2T`$RZ8i77E)>AG+W^2kB09Ay7I@^idU36Mt~*34Yg`CoG_chV+0 z`w$W#sw~opt^T9?vDmCx>oMJe=I>l}n?&vrhdIVEUX-Z=f`=Z%)E0oQ4C$mGb}P9; z^0DcBrb%T{V;V1-6Ie>tI#bw)y=NV#cK)JGfXb=IiU+eXbTOWg*jwj!n<@{;Vz$A3 zp4wD&D1U%^-{BMOl4og~-#nY4?3t4CD?#PA1?q4XNBX@>p9)@`?zG!1hz$O69^sC@ z4#&)v&S78i46lhNt;fnu;-9)A^+wXmsE?)YN=2gLGV)6h*&Z%7hm?q;zOan<-yo>c z21d~5X-0sM316q=$k5TLClWEm_LkOXG+c6`VF@c{qX&N>5@``DyAMPCf?D%530G^t zH93dak*r5DZVO@ub>2t|=QeMpZ3;eC9yVOuwUF0HF2a0QP$Q&7A#|5@PmXcaPA2iI zO~c_%dAR?iy&{JCp=1I zhASkR#fd%^yC`Q~J{`5@r@^<{9mDwk7?-OjWk>v@ttybN+yN9KW{#J^(x{n9`nIlb#iSFwd;v&L1NI}oY2 zAXjKYTE(W;!A$%aSG#cvvbX`0kA_ZMt==p3lh3%q-}io?G=+5~Q>#tp@v*dYl#5OU zjjh$Gn92Xhp|$mK&WX0W{5etrM-;{+Is~z94~+;(bnxu@uc`_{COH_- z8x7)YUD`i$9xAwR&&h!?crv+_SnayAhMRn%b4G=)>GAi~oMVvt^XCFCIg8oC!6T=_ zVr5v9Z##LBQw(oM>m`}nAUPyIN@W7d|Za*k*+}Q5t ze_$}M^-kZwE!jRuXz%GP3?J$xG@$h{a|mi0rO8r%#{ zU%Qd0#~ZL9-z+!cNO4?o$S!3@SqvBMkVLdz{6yXmAmOAGxrz;RO_N!3Zw}x5K}|h6 z?YB$@GTY3xg%!g54{^d*K;^gpFrIV+tJVK$w*5cUy>(Dr-QFgOdmw0VcXxLhcXzko zPH+;O;ElVxyN95S6Wk%VyX!lh^L}T(bG|!u=gzH~s+lfo|Fvs%7yGx@Z>?uN@}5%P z!fb*M-hSH$Hl%>J-xhvo9DhNukq{@19WJZ~#lb}_WKTiH5tHGbz7ZOoY2`^DVeK$r z$6)sf5OLH6JIZa;7Szwq5smHsDuH_(*Lq&FK{Q)xdl= zM7Vz_Pyf)}z{*oF+wGr79W>ORES`TLby#4ij*J3_oDvMhflY|Ocl`6FKcqJ}Fi;2f zGy=2Z{vdvTn-KkR(*6&^+kYT+81R_j2Sbj{hCm_4{$JQ`f25~w2f{eFlM$=gh)y2} zlvJ%QxY@~QoDu2~6v%bU14Qa`GW@jaexbL~)cxo)eW9*kk6*LY4?>Yo={IS3fo&@c z&wE**CYRA*LzYpvI<4DD08<+8PTe5*o+J0ogi#zabLtDXr#PCeY_`f!h9Q^9X>{$S zoh0caar8RPYtN1Xo$8uGDt;Mk#4r#3Emfh|SKOOv&m|Y?>3F zdb{WHvrPey$CSm1;rd-E^7e#`5o!MUp?tI~u!($fW+fq@J*Qqa)6 zFc!-`x7s8b9@Xo`#+BY2*LLizoUv1vdUc)IwNGUYu;b;E8oM2>n|YfvNv#klJ%Tnj zekt%;c0t$EjhJ^_QqZ`>b@A3e%J^E+KvZNEDL|q50A>y_O0=8^&xT|T0bm#52>)Az zdZXG(gaa0#;$wOKPWm|9r<0v>3yqC+y) zn#3QyxMEPjy(C?iD`bFsEFzSP4ou5``sBdIrM~(#j8kS;93g-0 z2sNoz&HU34p)XU0R#@!_b$4BhIy|De?V&FaA#Duy$CicpbGsqQ?rYeuc!jBmQs?2D zbl6Br1qIn3poYbQ_E|1?MaB=FgMMMMmM6`1YmuQk?XEwa)#Y1F#UZ)@X{W06$#k|v z$fDh;^~5^Y*~WVh^7H%mXvVI4OX~#K6x_7iSMEfkI~*r>4SNgWyA^A2&l912A*ERSKCH8hxu02_x(0FAj*?#rkQS)5>X1UxH>4?pU_&|y2Uo3`@P6G-tuAMu8OGqTA#n#&c&c*-TmPN6TegAQ zP%8jwJ^$?dW0*5{2NQ6vH$Q78GpkxpCog4p8pRCpfEfBCpG>)$0khn}j`p12H)--N zR4G%P=oF>u5dEL4yk8|da2%>+j>Kd>gviQ?88sI^C}U7514wvA7qxUC?KWeis5d*a|^+wy<%mDHOsxY$^+TA#{vy(?uQ6Fqg; zZIo+3izEi30@ZSo0XJKK|Bx< zBb)fPY7vwhb%GoXIN`7E=D#pHq}Ob|MA`Kapiw!6uq(l#?zOLPA4nu`l+nemnAzj= zR7Kuqw;4(w~@$F^Q_ayza zwldSnNLdWF5f~a;-uOukD-#0!G{5_6GY|ZHH~QClUUhctt}Y)1R{0^2P%nNonn=Y# zb0uSS3aI-dJULFthoma$2e>E|;ld!ipd)r>11w~%#$D5?Vs9GxYg8egyXZ59kip1K zd=L|!4~+<*vTasmL>97_8K2z4m{eM;e||nuOAv8Yx9eKnZc&;mW5I6jw19!zq0l=j zEv#sRVm77zqt@_=U?xDSCpn3KWk|W<^I5Np1vL%?j}r&(6i%ZU_y|ZqjbIg51dlgf z(T-1k)b;a*frqBAUDI@EW`-KQ&%k~lwKp!hYY>O|L;(3a!N_?3XNU4SsqqtC!hp{3 zMy(BF)TevB_Lu)=1A>rC>N)U&ESIp;Ys-~x(?cH z>v8lDZJZiZ1!jr|kIl4>89Y?B9b>45oU|ciqhnOKFRgJ93tUxxHHDS7?j=Jb;jn9t zjuVxmBb;WIGA;YL+cUxF8T0-1FwxS@U4d=mV&e6=G*6#Kyj?(t0_OH+cE?z3ZPvf- z@F14kV=E1fhxbMlO?FvY7g{3Gv2ABL9>1$L^b_{EbH^39|H$sJl`qtCMdyyNrie|D z2|3$y^@X6%b6_3qMNg0uA2xB)t%Q{^G?BEpV#ek3TpAESMGYGZ?~Lq#7}S#$UtK^s z`2lB%lPC!KAi>M}mM0$x9i)ppEF9Bj<>%jQ=IJMopUHb-N3#f|qJI3M>06E*~6{kvoj0Is%adnj$~6#;Kd0`6xYwk zSs>biatW7Qb{-To`F6-pHBt6?&8THt?xMf$CKV3^9u-p!!}zDF?L6n^{O~H)VU(An6|LNc?hD*Y3Q8P~Deh~{ zPF)-(pW?EVC>d}dzv^UFjZ;zJ=#TYwtKxOsBlK<2VeZoly0the+IyUyeMm%?XOa9m zC?u|c`b(kG3{L1S`woLiZ2a3B0L%F&Q1_dX)rFp;o#+bt$`8vAir=|WFwR4oEIucs zZd=fgC-~B@YDj3mB*2VN{X$dMLYgx3{6wuvywKihw@+gs=Md$=pKr045KGWyryG=2 zKVUite77394~dRJm!Rb>-g0w`{24aMn=lYaKCJDs#zhaWuRr?Spg6i#sx~R4MvWbR zLKoZ^pOAZ7Zq7Qay}C&#N}I}P!Y-)2Jw?5*9vHCDLj!57H@N4T_PY0#i-W>78(Fvm zSJmV%h`S|kNNonTg<_GVj4Q8V)C1px@PgJ)w7iRYT;*J=X9g=u^P-DM;yJB=CPp0( zIvTaal76OYAF;J3xzkHmr8LV^hx7%a{6{>wC0MG($vnJr^!)C7hut;uRP9Q9YkM1z;8 z;tdT8at2azFufy?!BrGM^B~Is^~Z;Pf;l1}UMdsxcwFP>Jr*1QIl4zuGar zwegN%!m;hFeQmn$_hgQC$*-kfr)IKSEZ<38TpOxT&dK{3bXJ=Lw9TR8)2;Lg;_CKR z!RwLp=hVstHu54$DUZzs4a6LpihKuKd4(0ak~g$ZPo+c=*{iTnG1elP#afdr?nBIy z8Vz1{4|676y%6QvKpEr;Qqvwt zr;WO@n!?`Saw&XGXr+z6tA4Zx>S?w|M>j$D!+a56thQg3;;#5QfzXusM5AnjtzPrn zu4pRg_a+{tPnOy@gB!7P_3V49GUcJ;ShU=knQMr&+H1J7-bzOE=fk*<3{6v=)_XbcI zucDam>pq?gcE$nSxQfm`LrZk-Rfwf&Ga$d?5JvVJ*S9k&JA;* z_6Ec!rk=sl{DM!z*-e1P>MQkQ!D+QPv@*YDnSbxMttQgyDb-BbCX?dYgi^QDpS{2( zqEsYfRh6O6V)KAH;`$ft0GtoZ3_7poaG&f$gR)_1^Venl;##Cqfxhciim(Fq)l-qsGb%@79ZO9Z5-3BZlqg&fHSXb_o0b zDJf+~H1AfzSM7JEv$e(=Fvq0T!M&hqXCr__nGfL%Or+=5W5<|mAOev0{#W4b_HRY$ z+w(sZr4PTz_};)%3+@EfVZ)K*Y@|P3?Mem9BaFaj?7pli8>{z+!aEL zr1v@bx!!?VzZa=KiilqS8deF&c7O}ro+uf#qq+-Jgdya8ZvP6n6)2{Kmhl}d8j?X}93NaPB!BhX zEuk#2(qAdbtor;|*MHn*>*WK@YLE02aKaREa?$BfG^TAY^Zw&S$<2fu3JC&WBL9SW znR)PE0Jr}`)33pi-2dkFMgsQ!hW(=s{ZDNu7*m5sf<}ZyK>p*^CjJL?gM@~JhC_n? z+q3(R#`GV-)nLnRGDIwF9C9`!E>#Up_r%88xli0Ku5JlQxa=I_--?@>#mox8V-WwH zit(?w-XAkKBt)?N+n?`H`UfHh&dP>FKte7X$cTT4gz4igH0Sp(;_n(<)_A+1*#M6WHyl;I_C7q*c-@3nk~9P%Weg9eR+KQ5kr}A_4QalWDzfLThdlLKD;ayHMC)3=%+#$KLlP|!?L99$w> zCNIYpJ)pR~Nc&vCCp9I$U~PXB=iQQ*pmAF}I&ONAZWz+~sa!vMa>#ZpJZs%z64ZvJ zEOP>P6REdPjynhz&7-~(-Mn5c2~4f9;d7Js?U*i^y1?{B;P_62-M}Q9GnrbjTa%AI zj-C>D4h$b_bhM)Ot*0FhyIPH12uswH%E(Xz35D-*<}X9g#PNJrUl#YJ*YiFl<8*Ub ztFdHWIcou})QvE-{_a5kG_k9la0JmjAnIZKIRb@F6_UtW$%yck$F4)GGekfKscoE? zxeTtg0_dB9%v{Q+(6$~*D36r=Nz0n_8@mA6L7CjJILBy&1^?vh! z87!T~>G_>g`N&cG9tQH)5B}A(30Mde`*hjl>wj_3@)rc(m&Zq8#N(b|{=Xm&?Z3>o z3H|p`q+2)MeVuMn1LK1KWr#R9U{cTrNmH1Q(rJ=c@IT`&o20~Fm32Cus(e6yK~Qb( z>|8bzsSJE=jtKyS0SY(lzmz2@DEMf->*Qpq>r(UZpk_Fh2d$TQn8?J+rS5k(d$B%U zsm5w}#ZX?iq(~?M3zB8ho_xm{mMTZhGANv-pa$J?R+jbpkHyW2gRWwWG1%4`j^_a( z%@UI$pM=qyyQlQqwbrQx4BYU{(Nk;M9L=T1Is~xhd7m>~CWQw-w!LQBoE3V74bQfK zDo$`05)!G|+u?hM=0RR#S+4rdXfDK;(hWtIML^V=mYzEEdj+3s+tkXmxE8fnm3{ZTZU2^8gmwZ+t@sYz?k-!#i23L_ZA$ zjDilIoq}skV1_7DkK7^_gQel&Vo`BxS#ZnDUu(uaXxhwkR|FQl1dEGumrAja&_PIg zcmg>G%9^DsLMiMmQ2w#G#$s`*_nAVCFxWo}e57@Fvg8)oJ`T}?9=}{(((TB2@#gvW2s`6e(3xNVN?N8DgPt%AOm8>zZU^y;W~&s}b;y?(KB3mg1L~ zC>!$IBq(y~1du^)mzr0&ev%%3xC?^i-&6*kf>Xwj1=7vV!mw5% zni=a(P#6{?Hq0oTj`_9^z%wWKEVPz zB~!_Q17|*pk;ZbpK>~*r5WfD*`#NMHBV%0_pX3ggl38KWYLl&lK>;j&s&z0z5%$wC zPbQ|26|63fpDijYR->LYxg>%hj#hQh++4_jFMFdY{>2YpwwQ;`d*VpjD#Q$Aw?%--```=J)OaISm zI}y&V6?6CJ>0PXY>b)~Ao}@6syI_(8P>^yPdJKl?h+Rti6qSo95sRHtk^(W$XfNZ{ zNA&dcQzrRq$eqNk22)$;)eW8*RzBEUu-#z7?lIy>l9MonLbb&QrNCTl?EudY!d~&G zcf+y62B#VK`_L^-|L7sD_!=%6sE61AsRd zSi`{|ej`A9Eh&}}BZRMv$0(h+9Pu>Xa9VvLcl zMR-QRccZV{ePW-S2d*%dIS}kVD(}rau$}qPvaqh`u)O{uoDaq4ZE`TZZJf3$A!-Fy zG&^2xvbRA&?QN{eKt}P+!_D(-pw*{m+6`Zy11VE)(cZMus{U+=_GKsRW`G?#zXdp4 zH5Kn9J6o@NeSB%;v-shg4Sb3VYd}IcUp?XI#PyhC;mBL%ZzuL0oK-zf%OqAl`q1=J zHro~!GJT7I{rcdz@zK&xw#(Br(}uMUHD&_RGvYd=7F0o zb$_0P5wlvVGKCJpR(#I`Hz${)V|41lwi4Hcob43V8%w3?x}cqUqqeP)cioK==JL?D zp*>Rv{pLoz6y;P?71?GZ{diZj-Lz)4K`zN_i-n)*coV^I)0>1oKL$=c`^Sf~!a6f7 z8TXqr_j;HrP}T;FC@n6%o&Qh(n$3(2Z&_j(ZrKszxEb^-EyTw9!Zn4s&*5cOU)qU; z9nG11CR$r7zedT#w0-Z&2{UKX+0k|2@sSTJr7lQ?+MrO%h${?=B_9bQF!oNhoikQKTl0{P@A2a?bHw z?&{;Y{1|`Tz3Y*_ph;X`;|9bX;GX=@EKz@EsytpgkjXr1=r=l|a`_ra;|V)&c#}jQ zf4yfFM^Mtc>S3Y7s1ur1)mv{A=odc^3f3h5DPRSsK*|-bDVeUH@}%rxdv&#)_sV`9 zHNL={FSxKt{7M~!QmyvTO`)T)cD`v9bLqfdRZ3DaCCsXsK!f6ZifOONZs zccgvS<}kbzd|OHtDRk`nU-fIB`%F{W+fMwCuBXUKoDR zyU~UK9;!O?w^&?j87qTjU}0~R)weMjp#OO6w_9NtD&y-<*r}>|D2G0Mt#(=|6utKCY zqiNP0iqEL+g{-#QWPw{!wJo|}%1%jz35&_bHv64|3S?!Ps5l{FGisfZ)I%hv7Gl=y zCGGWCu0SUp(SXL_V8OXXPp5w4#Nr(s_{rNrot*jWPu(gv3S&AQe;EbyUj}S*1yTY@ zhI(bEDfE0X+b4ZejqP@x$7^Nw3mZG01kB%X_HO;gcIv598hkh7yzi;SO7{$u9S9n@ zrLu=)$mAW}rKp;)l7yFZ0B&hx4{y_UI9_{a8VowtxtVAfpBEbN&jE-0^X%-^7QQ&o_v-ry zb&_{kDNpveTJ%-9_B4x8#fhI1w$^C~~kL|(-wd>Mu?|D5hgWtAq zD;{fFk3aqevC~?C==5kY3PkNRhMN*%7r#&=xF`D_&sNu3;r-I^X7Sow(PsaWGvy@M^{!a?Uc+6B zzxft7P-;m8uwP}pYS)<{V3Gf^R$bcE?!8$5+(s)t%YFmf(~+L4&Po)%sit$lHhaWi zeQ0ttHR*u(!p;4|2~FqpfK3H^w8Knx8O5A{gH{Ki>|5RqvXPkMFHVJjkQ$YUU|5^F za*Ez{JW1UPXKPHZTdUkmdu?#T!(qamkp5B}r^7<$Ir4GB&v7IQR0tn$9~#F(p>AOR zLWFH`dbMPn=v2t)mKOkIjVW@QF60SdSiZlvl+|}=c57Qq&`IzqrKXpkR^%ozBR z#EI|69igw^ULAnbAJ`OZVcPYt@tEiH0kN<)P)bXv54C?EiXg{mm3+NxSy^I7v==%W z-dh(_;`gAd*6F^U@&;_2gy+QyC^o8$Zm|Kl%&SLBIS&N@L3_U$wN7Rm z${0JfhJGN65g#0cay>fjv0rC$K^k*Ceb3O%9?pW$@;D}Mup*FGC#M;EC{`BWt7VoW z$!T^_JJGm$>^D}zkK*n5v-1maWH}Daz4!?()~Hgr+Iz>+SMGr54X{4Le;h1{xT)K$ zDRV&q1yI$#BfczhO@Dws6M=oK6b8Pt6Kv-`{=5;m-V2<^-N0)Mj4F8Z5OIFbFxYv4 zj()8n5pNy1JNJ2;`yz6T{1-%*4l#>d?e~*_e6)7~pFHs1H+1FIbn^u{#>g(vt_^Lt ztv0VP^!etp8NAMow1UsJd@;>1>x}wpykyqif*z=yxZO^q9%EjNA zfj47IF&kNFp^Q^2u{xTx$3p5+sq2F9y4_rkNA;ZRsg}<{e)%XZSK3`f zeYvS*Pp&Qm6|xvPt`aqjw;ZaI0u~E(Ph(hgR;@JGR>T5;O$8ijs_hrd zeNA*ST3<*K)U=QwaF30*(C+-(yM^3)qU`TiXE*0jOKB_~0}MM@{lAZ*Fb91wf1*Yh zZy~(Mx6qHmIBKKSC~6w-;_l>%g2mXQd*YnV6>NzPLo=-Yo>$7Ug}78{M@}522!Prj zq$SJAd+9qwEk=h`VTusL8lk^@NzRI#eJY()Sa@pL99)0QsSckqX&Muu-&Z#sS#Il6 z8Xe&D>%`4geY|c^N#~{zu`}`jiksT>1fQupa@PL6q4^jy_@>hM_DFJ%?*4oJePZq} zh_I>Y%mIlhr}o&ucTa-5c~r8ri-G39AbLf7_B+V({7ZlLU|Y`^4@vl`gDokDtpf~d zp9=~4xt*@ujcZEJNoM8$bDGZSo-*!;J$Mrfe29V`Jkq=}bebar!>vvl7@L=!#?b2TIG95c72@&0S86WQD1J@~pdIaU<|~V5*<^YDYn~ zYT!n|!I1mKpGYorev_QDqq32kRj1R8Zgfn--(SIlrG6dN-XLaW-5Y6;dkQl#Y8xAT z8pY|2X%H}@;bSZ4i#4>}4jHa)4BJ|g@n~yW@fwiRr>+=AigV|F{~;KybZd+T$YKRr zpuf|o7{%bD{#Z_1ZD0ZC3q|JvH@L_aM?aMJs=Zid~C&txadSbnEx>3&ljzuzjJM1sJV7e{Ak}s=y+1S zJj9!_vW!1gFZJ79gzT;Em?z$!+6QHL#8bh0erXPCbj^i63%EaYwiTDHqj-QDpm4jc+D7vYl6XI~ot!EW9&Ps+m0qu7K8+&ld$(Y&s z7Q40!AJ!=IuR4!YW`8pjnqNOV0QeagO!Dx%%~B|c3A8y}4`XLHI{RUXRX6Yo!(rMw zt1euPxKY6$;WSTC`WaS~U9b&82_TO7=oNDLW1bgme!vd1eFw?D3VMNy5Mj-D9$94b z8@Nb6DSa?LT~~gzf5Ynn2;RS>9sC7xVA^A-vW*w}DsTLX`A}n5fDgYCfPAIpPxWfS zGbnQPZU4(2I1jFZt&79zFNjZ)&&L5t4`3! zgA%`^4}o;CpEP)w6l5QSa7h~HG7r;^iE{=3$wr|?Mm}x(&D`d2eW{91X|IhR|Cj>K z8Uyj(=PB4iR`@_0knXah%olgs$uh*=h`)I3N{XiT)$_KCPJ&S{>CvQl* zvIZR#HQ*qLcFSjr8i|sUsfb!3^?rRVMw8TQVbQCVD^MD&bky`2*7(9U<^j z{w;3zM7R;XPpUV!-?mL~XrkVtV(SwBo&DaLE4gb}QP7ixKsV*Wuwmq6DPulqsKJb~ zQ_2MJ-HhhQe0S+Eir|o?IE%)*pjlJEg%SU*)4SpMUIRPXk!ciq0RfPzVGxjr8D?g> zG$Nsrk)S9u*m*Zy!*sTm5O7N*^&`DTV=$WWf?cSR$;L&J{6hf4INPdUeITh*uK|b|G<^p*pb|whRy*sw>tJl$$dyMii_i zK|V^~w1Pz&RR6NKd2;JvH#d6k>r^w(W6p2i*fU6P7_x=ko^y~+TQ%jzdV*HNGy%3O z7`n1&{~3uMYQYdS$|r1|Ho`K0?&{cs*n&7X?G!))0b0-qc|UL>TSxA6DjSc|f@!N( zc~^NdS)}Y_`ebzJn~{TSov@Zi^za!Z8DQb&n#025#R#L=9jJ8ueZR4Gn9c0?6BGTG zRSQzL#)W;o1VMsw({IeZ`}Iq=*F1CKpQrpdYcE5wrY+cs*ZvXNmW)sP@~sRxr{lS> z4o`MxlTAMv8DXno;5HMuyf~i{NW~(>T5EYDITG|+TV{m>$Pe$UTqlQcmyDSQ@%RL= zw&i>>=?DbpV9*I?IX*&2;^ok8c64redcUi{z zpZj)JEpJ_^Wn*!gF>l~0H|(FuGIGWMmE}jeNkengYA@2_IHQvKpl|hA!C|SaA`GSL z;4?$#k&;C$S;&3yrh}J3^ol!eJuYfLRju@x5Co;9-;GvKBX|ol(u#)mG=V zGOhUm3v4vE3GVmN-_6U_Q+f#pEtvIl_CQf+QQe?>kqbUvqr`EPECHEr&w)O!?(@Zz zuLF?mzN*n{MVh*H7}wJc%#n0Zx>ea_1I!gH_zYkWZ-B%l0yid}63XB!Jk5sRJKJx+ z(yz+Ue?dUxI?o1cM?Rd_mX32%2d)!OE}e+{1z|-2&L-R@J*Y=<9TUQ2!%*&z7#Ig6 z_+9}zP?V>H3M6NQe5I`SBex0uhm(N7zfA%R4K;B#*e({(y+SQ($`8x#P#D{Mmx55@ zK>y^Tq#QIPBww5!Y0IHTA}=d)>xo(ukr&%#bTatb+I;sQGOpASv*9owgjPfNBJw8s&k)7;R*X-#^VJYt{U|QmGK{Osl37d1Z9X6 z8SIvfX&M+A1<_%`3W_5R`=R**WJ3$71TJ*?j$~q=^>CnoO>~sSf3mq%z?dmaaG6O+ zNQ8`qj1?fHz$B!=2OP>O3kFOhBV+4@6G3unyGv?S+O`|vRfMUOgWqk_SnX`nFi8jN zs1Z=C0AVI!R@5|c0bSWb<_-_yop*0}u9LaRJx`jb0+#BnA1NKpJoj7SyE>KA^!JG; zH^C*j)*tgd2)DNC< zItzD7weYU_SwhvQUDenxcbt0QZ?DX4zxlom-XUM6xq-#Zil9}+x}!(}mdpd*wJfVr zccsUytyg}b%5llAhMJ+-#z&u`wa&PjnGb|l@x8Yn2HJSu=Hm*5@YvNSy}ouP4j6-W znhyt7+YKr!DK0=Q*sAtF+oNhP42||jslF!O^pDs;Ka-^HWh3rcx5HQ25cbctyn(VL z$BDiej4`nJDn7Qwxai)`zzGnkZRmX&zoj9@6Dzi+(sR-BzsZZ@oqYbWe3pFuRB;8e z@M>%^_HujAeb9&6h^g-ULOgZ9N%1XlM=L_srAQ&9fjHFkQ&WhJx_+OlrsSUb?qEwv zHh+trHopF_S{M!87eruj3W#6TGxTe{VZzBrQ{g=G1=6`+K=l-3stOL>fk*}C$$ixD zDmMw)<#zw}onVG4hqg>!zi#$4X!?6NDo^^(rtdZ4F<%u=9p*vVQg614=;XVQQbks; zbUL0Ydy6`^X!!nqk5hfwa87Dxa^c*BB`E`C!0n#d#%S3Xs&JgKQ^C-t8+mXI%BaE( zl0?**U@R9$ev5?scKT7&M3r1zT!#*vvzSH(hU?QKV-rDml`qj+^g5CiKd7_y=B?=m z?YN%AZR(Bs6m(Ma$M(zWmDFK$N~%H@%&1{u(b-ajRz{o+#@yVxTJ104?@OUZTz!4l z^c{>xm26q%DrFrNt#QJW+9hIS+A50mC&fwyalk%ESPmc zGmH)lIAA^Db>msUPzhF+76E(4?tF=r7{E46JP$UcKgjexSbD%d?SqJ3?>T{Zt6?U3 zcwx+h!)V`7w*b?M4E{kz0G6w_he~HWc1-4Rt$#Ao4I_7f&4O9Eb`>Kdx#ob6`vGvk z3UkF}Fpx4Ik$7fJuT9>e2%8B&MVeR}YCGAow^-9|t}6s%{$8YhgAnbLpe%zMnVy5~ z=G|r08Qq#Tu5ZYXwaDm}F5D=>N+(97IOQ_VL}!4B-}enYJ%?5w8JY2ZEOA4kAZ+VA z;{Z&ZZRkGov?~*)S#e~rJuS_V4H&$hN^u+&sCr;781}yzxqlviCaIe~j|KKcg2A{1 zm2sgf4m#PZ{-L-Sd>;?tguRtXJ^fPI8OwDsGNHpq`GzNW@DWp97^#e|O_0}`O$4e0 zX?lp)nWSaeDJfZs%EuKknvl4p99hb1SxO-I&%^m}x-zEJD3nT^eqN=R9xweHB-mIB zYXlu@JRw~nAu9oEL}3c=V!1_OVJmmc{snvA!p*xgrYE7T7a~>19(18q4@)Hv2}_0q zp@z|1EXn|hyT4c)B1~{vX|5-wVMF(%Fk!bm|ru1?^Go$U|mXWtkfvY5QJxGTNjLauYeu z!Y!7;lE(HE-WRS0l*US3lZAGr5iu|p*gimTWGE_2IGspm-uF)H;ukkY-j_Dh#s5v;F8-|08O)#MO2{iln8RQ2- zLW;V&NNx0^*&KQFG-VqQ_A4-i(pTQac8jScUZeSAQjpS*yGs7mRHKf)7>irE3bTe zM#jcf;^_;rX$j}B4DdR?*mvf1QN>TWX-#W>nee{-|4-qr{IhV`KmSMJ4&;SMA?P~% zqj2G*Nz?s4j{{8Gu2$t0nsP=z=I+Z1-_c0}i)oYT066+bj2J@gS&Xy5qUO)m7ehao3sj1qS9rY=24C+vg=O8-F!1D){MJ^Uc$ycN z@1lrKSeWpt7?xaOrp!%VVv~OncUKV?xt~Lf9SQr*e}UvA_V3IT^IRSG`T&j5E&F-m@Et~!j$_guf+tB%C&TAQ}&%7&b2nx1Sv>oFcn zq6ObnRSV&#-4}l=f3zjA+n%f`U|@V)rp$`?F+Hj1$!)M(#+F_|N6w$n6bXP1K~FRGHLtVc5C?$%~e2JzBcu7g)SGhu!wo~WJ zuQ^jq7N?ds-oCI_XRA~gQtBTW)KXaKYqdH;(6uTcJ&qUkeuV~omEyZQ-Rk)pyaF>5 zz_S8nIuuc`jjcI?KZ3Rcq+y;~4KEdgnB45}r3wsDLr6Kxxx)L zN+Oi*xaW8LN&eGxIw0CmX^%R*MUBPK;^J;6QFHwI5S5BtK@2#&m zbnB88j#PxQRMBEw7z)=4f_~RAh^wYwdr2H9uA2OeY<(Me{EByPFu-(`D`CrHN8?`K2^r2lgi z`2WR0`n$YN2Q5*g9T*#ywm#%JLmU7D)MP2k0pQuA8~{|x=KQQaq^XFHy{J_I-z=-4 z046^E`6Q%cjo_uDgL_{B*7!JCqy5v{7*C+Z3VX|q?s%r@qAQQmhe1JHLE!(L+`oV1y#Bk|77+;<9uDSDECll(-XGK-TfBdU zwEoi<51jJ~frN>LO-2s(v*W~Na2RB4UhWRja8tK=sbiM#EIBy2sk)6vIC!{osi_cINbFjKeNq}R=())Mvz7q91Z74Pi5ua zBUV=G%)xvSs{acjLT%2jv;Y0&pfNo0d6I4OhhU@Vn&ovY+r>a&0)9JASs*8n#1Z{< zzDZB0iV(mkJuSbhOz|64`*}bQyUJmk>v_s4i#CIcY+J;?@ttGnBHEgy>fi^YOX?)= zRO`ogi$m_RKt>=MnB1J~-u|%I+@IJqO-beT(#@4}MyR#$f<0!hkyFr`8@Hi`Vr9sG zq)gdmJ%}4%w5b1K%~Yw}{9rJ8Q9jx_DPrUp4fkF2{p<0Dyg}t8ANCspZD1zawn$0o zSm4!{_%$6cUM}hSNyUgu^4oa#EkUzH$AHF;ge4+r#YDU&wth3j=$eG%ur^gOq(u8; zk`&>PdemG3C09LJjiCM)~3G=jp@g!s$Zk zLaB1MqD|2;ZQ30>!HB)71CNETzPT|^KnK1i zJ&GUVc?qz%7D7dxNEy?3bU1h*@^ww+vH9?{Lm_1*_M$xYZ@*1ps5Fq*XLYD z=xqIx?3s+rxF%W$<6^EmV?7lU{C=0_iXwBie5&z$M6VkIDJ+Ag_I7bYU}g&CQKY!v z_XOSotyYcv_3S7C9P_!vL~z<~Hs=|I%p5(fCb6jb-BYgm_{q>Ubn>h9cCmk@H076} ziW%oYszIsl`kG&wh17FXfeGJl0pDU2bjFl0s&;8fDUl~Jy0)UX=+78e^x=IjMu+m2 zGqv8@E6nMs^@SQLTKG*iLr>_*W6BSA_(*&;8QE?~?9%4(Ge+gOb}GukvXzx_B*izr z7hUn)swkHv7C)>*P9LZEPG9M-JT&0&r>qXDG{sJ-;CgiJF*qbTYCgNc(Tw5sA;JPe z?%A%{ZNj1SQL3 z31k;70~&aPl(~gN=OG{Ph&yPF4pHNHB$nfnHy*kj8?eHbsb7jbeMHAG>>OXFP>=?vII4Qtng?lQr{ z>)42U1wzXf@n3Bzql8`6C*sN_orNahYqEsD?$zRYYa`r+$E-f6oi9z}IUKQ^O&s@F zC4|T?D-lS3#}GWQstjSEmtv(n^>fj=k@j@i&v`!S^cC48KrR3LkTbhRVC9VmB)P~m zG(_Q&bk&)jSHzgr%7b{@qnwo<-fAZlD5)x{GNRW@vxPX>lBv;t9Yw<+k%Bl`b9iGa zZ+*is)^)7*)m%>E8+xU*<39XW{8hbNZf2x+Z`VJf-Q>DifQSR<(RDh+E0Or~02yit zW$bWo!uPsEvEIKR;?j;PCL_s{Jy1%Aqu+BWj`@zsI~v?knyy^ALBo#Z)V=k$Se^(e z9d>TQ-qn$16quoc3T;#^p~+s0_2qqY_E9lr)0(mUlFDX2th!M$ibr;U5NT%Y*UW;R z5`MUM_%V2BS^7g1T_9nTc_!Wd$jQst$sB6?NqNCtU~z{KKBo_-ZK@CKZD!0Kb|qow zu8<8oKfIyxu8@ObiYa~c>M90S2xFt=fH#stPInU-Z-=y+b#F;) zE)5hCj@r){XsJB*5O+zuqfkZ%Q#u%L#U)}v9NWJyIPdpvoyv+Zze?!t&glYFlY+&@ z#6pLcks*|T07-$M`i5!yk;oiSaK)l$<3389bN@W$ZY9(s5Kj(O>1P7etIrNn-b|58 zps*IoGtP|mQhcZV#W6w|I~oyDoE@PF6VG`Yp9d6GL8Od_fUp26lR_N(K$aOEzny1f z5IfF;9Mjp^z{@@%GUGPa1#w=ha)+rugHS5c-976oP1Q1t0PRc{7_B~+@mTC7wM4^gDE3|zw z?OBl*&P}EiZ7HDX?~33?4g>I%w4u|k3<&QeAsEv8w=Wcblx7<^Hu`FX$}Fuqd$$ju zec9c(X~QFsHHeiNE@kXa_vbre*bTw>A*iTbhGJOF3MN^Md?i$a9m`Do;cI;=(RtR8 z((lo}+;THBliFe*Q|%aQmlhs85Fu^RG*GvaUxD{%JJzUAYg?oXrP&qnTk?qMi``rd zr^^_x)j+ZbD!_XZ)iQoxyeHipgFlEp5507+N+@0bhaMmEd4QX31xkygjV-c{&6wwU zY;XJHyXh>AUHcJ+27~w5CVF~={Ny9gKC%dX-DH`uNK?4I`na~kyjcPY zbrv`L6LK0YQ)f0z`017O6|6Q>q<)BtOu^C}itzguibHII=ncwi!?mc(VlLWjE=#AG zFI&s5g)W+{qt{7P(~7R8IOtRn&uae4>0@b@><4rg;4x;AzE;eF+5Q7f z6-=u_&-{x%p|Np2-T7uMfGP%$s0Kp)2H0OI4}V78U=PBWI+~%8;&#QQT6(sAy+@#maGE zHm2l86BMF2i|{A+s}@uL&%c*i*i>?|G);lOzKe)h2?;YTAf!a3pt^h&!y^$9Q4~7F zxi5LEiQ#IFz-4Xd=}hW0jA}Y4w7$GPUv;&uS6rH^#~7)=7$_fUV<{J@XBiO*BB*cE zjaArE6cNIVMz2G{t@?`k8I`6S5Qs_>$b(9sfaEHUx=4TX_gI*GXu`_NWh8Rk-18qm zeQ6@qNXZ~~@Gyijibpz%V6=ct6`!=W7OC1M1`BP_&0y{bfn^{nyJ8T1IkIR}jQQP$ z#x3Zi&uwPv>x;ZZ`#j5|B)(^TwA{!!({psd`t~RKi2|}rHQh(Un#*CVHx36MXl{t9 z%2xZ?d`wR9bv_?7r>zD@dkqnrHIj^Lg>+Ku)S$7OCqRpRD-qa&n?rkgU!QW6I%#>RGnTC+~#_ zlBWz`e$sXA)Lq`<@Ia4%oL&f$m7m(3LQ0*lwU(B(#@J<5WTurS_~ykDh1t$PjQUV| zg#_~$JfS(MLb_lXjZv10uNC?5HA6{Fq2_%&`#b-$x#N=obn2v1b)z;V{*0_tP3OQ} zwxI)za}tg|Lre1Qn9$aVDAa(Z-LiFX%|OGv``$O|I)2#uY@=faYFuu3{M*OJ4xO@B zmpTIEzo}iPU&cz$Af+TtaB$)F_X=S$C0XY&@;z?HvqI80N?G@x&4ycrnXp((A)C)~ zDT@zb^tiBh{2n?-_fFZK4h&DB9R}A3H=mZ8UUpb3Z!LRFxwIY~ZcE2btJWE)hw%Wo zx*vpdtTOZymnV(Ad+9w8#>_K;LN-iZq`Yqlm$Uu>bPzk_d%CAcv zyWIBO>z;%-yJ6ArV@Y?Wx6Oc>K0M0PfJMY2v81Aegx-rNhw7k7XSA+ZGE&!pKrxux zDQT8155ntrU<*S8Jz(MUhXq+zL~ z<{f)T(N7LMPaN!}>P_sR=_YBurmGD%f})F8zvaa>Xy!lH4bqo2t?cNbw<2Q#a#}A8HPNInLTiePsw>Jerl-<(SDQbqc74kjW0;Kz?dLVS`2tEA|)N6^KiX*?BpOF zzMs4u2At0Z=SCW-AFeiMsj-trYPlW=S?3X)*o!&f{9f5QOck;1gs%O?Kq}|sy8Y%* z6wKxlnL$KmyqF*d&>xZ>lJ~Jh*+p7xCD!t+;pY`t7c608*XB$Jw8@F%?&n!t6PHKj zBvM-&pc&;ZYkpZNE%W`h*omQNfA3yeX2?^`s@X8Yi8|2!RwcS6=&P5F%dxUd+P8xO zV3z!9R5~gtZgL>9t?faDC_QWW05cM`#*2i1W^M;t_~-yjU(n6<9i@CtL&^T@w^k?X zcpr~A-E32L6%F^)N*rf0O-z;Hx?ROueQ8UtiI@=s)?!&bnEG#PFjD@i8?(!pP{Q!8 zjIK%ao7;z=6Ku&FvM43eNcor!8198g&<)84WA!i16Ow2y`>%iYflc1%uxP@#TMoPdxWJ4)iA*m>5Zk6uUtZG&6>o-KY(MD6N3{n1>J9f9NS*$1 zV&sBltA;^!Q$jQYKUPn!h=HE&WcW@5F(X6xt{I3?k4N9c%OX>U9awXvFj6U6Z}kDJ zTGhL8y-Zv}t?G{_UUpa0*S^?l^?l>6I;DO*X5mg$%(1GCKwKw-@VNi^PJiNUsQ2zR8 zG7HSP@b5ADMJ58I7KkAYgpE##i3#Zm5++91mX^gTEQ+eC@VTD}i3!4Y=zP~x%p)MK z1vIyLbfz#P->^-m6(hqaaN}B=X=o-%`SETfx+h&M2~8+}B#CK+lq`V;jaDqvoHl(7 zp*EpZ8Q@Ko3CK)8g6%&Y!R$oPAxLaYY;0xdq@;fvy_z;fH)pF8Y%9vr4GdA!5t z2FB?d=o9V(?9t0o4n)p~kwzfp?ZBkQH>lQUNfiiOOgOQPu2pnIU#AfXBy<<5^ z%S|~9#pKVhiR{06W;jmedNBfTnC`YwUrfaXUF+t*$dydrahJs{jkpb8a{U@O!P?&X z_R~Pse|}Hzb3QKHp=SDRBpoS(C8IcDi2Xl+TaRj|^DO5s4B-NkX@^RqlXnBGJv$q3 zV=T>tkj{>oO9A&&WLoLpBOqKs-hTqz`p78)$f;4z1A;yfiCqQ?bu|v;`ie|9>f8II z=B_S^*Vi0IRR3_x>2LKdQ47l*99U;@-c^+xZI1p2K)4U0k@sO24&l23m*gmB86@TQ zZ=Wr14Ow-pauSRg+IDYLLUma{ACOhB`g0Wx$_ytxSQt&2vIzapj>Sg|8O{gOyLu>SGPYJ!uM8+*6 zDo~O(# z%?Y;}u_K$!nBfSA%1e7ajv9OuF%p!~tjtP*It!uoDLk)^g_{pCvw3}eaUa)?Z;@&5_}Ab@B9 zZ$XUl0Bnn-S;)FKyN~IaOG8tx<_&9=uyNHe307*vAX;Bz#;InNn-n^9P838 z^+!CW#U9|KURNV|{pA}nzHXk8$?2<{yI;qj+t1*F#?*!u&*H+4+b|{0muiGw^eOB) zx0zw>22xYO=VEc{`{gfD8OIk|E)zrxR@_Tlnjw-{l=$zO?x(TT&T1TesVqB``gvm9 zT6|>bbr-ClE24zD#;5CIxID`k;<+Yt#VTbwrZN-7W0O;g3Djtx0wa*4+dw6WKu-kT zl#V^+*6h91WIjQqgYnECP*`o3@kI(q4J0kCrs3FbWCyX>iA9Il;6W-nDk2QgC_upZ z(N%3Lu`9$b$Ke@zpoUygV<(GTI4lFcR@(Al1%Mq#fMb}>s6$CtdhOERi6PF&E(ev= z-f}A})bw)70;|RfLcysjR}FhCT5>dwbNBbepZcc+Gd@G+gzFW;jIuk`mP|X-wun1l z)XWT7YC4@+upYWz(Q6$w?y@}FdW~4EYUFjJoZc_q6y;deHX!vg2c>1#P48A93EmzO62bcZGm|&UT?hdmpGj} zk{%irE2LPytKN_#J)+Qzvp}+c!Wtwp0yk#w(8f7^q-*^#lpjJ^WR5E36pMei(==rN z8^5D8L<(c6)_yDJV}FE7Z0r^*Ky2T~DP`s`QQmwq$8xHaHgQZ9Z6<_4#(ZPg8u1r3 z;sV)@#PMTW$R&Aft9E?|<)?j*zior=BksYir>tG|RUYR*NN7)lu&qg^x$~-{k4UGv zvmxDWFK0nVQ~`2`kH;a4ev8(VptvQ_YtW~jWsHv@m-q>MP2wSxZ$_Wj(WrYwn;3fa zH3|cLTK(?_euLl1@n)NoKCYc--_DrrO5BhiQGJ-74A?4M^goon#yfgZguV0*7%yzS zk%F(osgI(3Lm_eXZ*RFrP4?C_%2Cv{n@6Wwf#f}werdB^ScD77*{n3)$#v*#vpK{k z&e*KwE@Hh-`8)FAQv10^Jq>51y;~Z|Qp7<9*(ROjQn9N>;z!my3o9iCNkj>P0Y-+|U%k=-%GSFQ+w?2L+6}vPmuH61c!y&-j(At`Gx7)jqo^wc}JY{#Q zmb@LGLaJf6X4!|yovFj_>Wx6=jRApZ^cxgWw`dXKq^-x!eq*birCa8v8Z3}i>->Dn zQ&mwys!#EF4S!XX18MwcLnfOdSnh88xQeBpa_UJ_1T;xjGr>J3l^cBvq8X`cbc0Gg4Cco*KU(-Ftyc4^BcMMvrg9Z43Sy!3p}Ow;0^`|(K+gc(1!kpz*AY70*+t)v ze+lVw#}P{cbv3dJY^OcdeuSPA&UC4s1`_QN*_o_0bt0y~@jrHtrJVZdixaodb3;+2 zS5Q@Z(;oL4^BBpcMOnO$=j7KHDGP6NBkHXWwm7QvPRq%yU8;4?f&vL)zhf^V)RuKU zlT6Nk^!TIH0_c0Vv(3-;NT+$KJeGVMpVr=ui}_c*`@4Wq{!})Sk@TT3;YBWuvw6Zl zLJ5BR*xRiCMF8EY+GBTXp*9hvc3R|NOt|k$$UXTkv)~}G=JCuO+{OU)@(`ZDG$$q| zn6#yNjtM&34k$xBt+X@B=IOG&E|Kq`evSB`qPM~Z=fmEN_wf9#5!BDMSBP1w;CMV3 zV`#p%!a3zbtN(NR-th8Mg7#S2$DDWfob^tVN8gRRoHssStapcXx0GBLYBI>J^=@#| z;cR{&BqTJ_)S7Fw__u6GO*JvUI5bUIQDJ3HZAdLld0>YR2hLmLfOkH%?740b_1ey+ zT$~r4h#o2gfXw`z7fo$?zdVExxmVNeWL1sYghy9g;&z+SfM}RIi`MKN$)?N6CCe$+ z$0B21Ef=i(75@ON%M~|NF1BRdT9$^LQ}_hYJx|K5K5+ps5B`KW4|q;ufyV>KohmY<%2`$?;sF1ULg^MO^uM%TA!K)Wp=>6!y>6 zV%$^W`o3sP$eD^hV^?!0a1k2LrxmVjdjL_%cp z%zO9!@{Sc%{wEyNSklP*0fP?SQavq=8e8zyyCa)0GHS&hDS$vd&{ble8aenoD0u+N z9`DWO?9=ejv4yLS?qLjL6rwC{lRG8gVv&=?b%H9^?rmtN`;=SnHVZg%!J<`X%R$@O zA00yOCzhhEDVXtRCt{Upg8PjY5e=k>8zfdgfR~o2tGB1Il(WhbS59vze<}U(qmyp* zI(f`ZSiF%$(h@<8<6G#xm$6bzda{1=UY0g0b`_P}c73~RrakAEISJ!hwHlvxX{;nC#>|e*JvGDJMt&>Z# zi*g&ugdA6iqxYC2|E`1AKf?8ZC}D43Imi+N)|?zuGCaUK@|nZOTLv$M1j4-`%;aq; zk;gHtyTu-5p=vPAbA3Nv>1-zG{DB`5gtoD!{EB_B5vi#_J z@$oV&V56;ZR9t@4fWxu#eObrgx;&agdFcB+J%ix7zh3GICf_PlQBLyW#q+Fy-f;SBDLTsd-6lL~QJBPWg%r|hcqbvFXD*4pHs4d>PSJ(D(iIOhYie4r(+&;t!h?_66h>_XOfP)CRA12Ni zI4?>|{pU&xWY|_X^4XPrw&WARME2wtuutS&SaED7)nIFk_jfuKw(h)5$N>h$Zi!rG zDMYO1Bb-W_(6_)I8M&;0mW^H-+LnBCIAtXgG_V-$BP@fZ?~oW|W5a@x(h$#fjP^-M zq#0`pPpRR}{^b%fpN)jM%!P7(Xs%BfwZHR7jV=BHW5B41HpU%8@hNvA9>dG$yYQX3 zTTEKG)B)wQmG7$nsclgK+K$!k?}TlsAjeNOwxV)>%58oNDk|Fa9%F?uhN-C;igAsM zykGI64&>9`OW4{Vb+-a$w_>l>cX5lVA7nDE#SJcFrmBPb$^aI*U*B9UZu?}3eEMTv z+S0u%bA-bea2u&@KKIJT1_y77%qy? z6+E{%Miv52dT2VxESW?jhaZ!?0vFi;>@Z*&7kxrw*8bN>D2o{+hnPVww-uuH>YB?e7x@89E+0q9MNrwAjTDm!wR-jQnLC!+Vp*Y zY@s!iS4QOpqvUeq-$Ry*xwvHUxDGu-$x2c3cNpkKpY*Ls5CjC;I|T{f#dRc^UQFe1 zEfT)dU$TU@fRGPJJ&xtL)5wwD>a@J>54L-ey~pEk_KOe>`W8#dN>dVFV@Su_P#E2a zgR*k;OC(Q4EoYg}+B`%ZB=KYMFIC5QR#NBVk8uY{=(LncO7NO{_p-sff`Xe`JqE>7 z1W~sE+CedgFr`jS6roX!VcUZF_9Ez;E_)NxQcGB;%ss>UEFY?NI ziGfj{H($lywyD*6msS}5B3()pjY{ouB9Ff{lDEN%5l`YD8aE0q;Z?WSPs9lfN@YJ_ z;Lg1Lqd2>t5cO%VVmX@5Gj$+3yIC2vrzL$4vq0VTA^c$fZHBsbcvgS> zuD}P&xP9~2$WVnbtFo;Wc_SZ1d=jpaF z#IB8KoPj9lAbWGUur5Kv!UVw|B_RHHIwj0GQCT*g!S8#i%s7=JK!<|4+0g$cu@Mna zkrikH-yq=zqKbvnm;I6}2&nwsoM=%#p-bm&F(NO4nKe&@5r$U;lnpnsjjfi+lncpB z(7V)+_EU5Wwi6}2{1G`$1Tsxpi-x0TU)N9P=+C=`LWvxWtRIi+UD_+mwN*E*L?JJ4`7|x(Cng?1s!Q9{7Ym+em%w9eJOD32jKpd-IwQX{||=0JU;r~qoUr! zsF3Hqm}s#>j}e6Gvwbyk4OygeC{qqpN)uLooIRdr9{F?`mEQ?kF(db%I@W}|@46^X zF{`Z1^jy|fNuy(nOk{FQ6bVIQg%gqqMAywD1U8>*8R%tzvTD&4U!5}Zof0N!d~C6O zzKP5^xl}CCN8i+lskffU9in;=Z1N%=9+t+by{awa$CJkY+ULb<*cr6YoiNYF<}KpD!Iw_+pbp`v+20S zP(t=_Nle_Wbg}Ed7Q;4TpFp0mDa^3)=)SAQ`(wO7N_A{%Y+Ddb`Si!DVK<@2J$-xV zkaNh2cV?L5TG|G!5H>=FboImrJ3i9UT`Da9=b(s8Re|{ONd~2YWfk*^R_J`OxihC= zr@&^*;x^}rD|*+QY7bhkrSr~`8;-@)+)>jKO2qu?!kWxpOcSrPeVyXk)%&mBz4$;cuS@(#4ee)lVk4ln6?`LAkBb7+u$3cgjpj(jRu+lkpSkh@==+7 z+3e86g3(#tGtu?~0AZg=ey#r0lST-qsiG|iLgmhsrjH#b|LjgK4K2Wek&JLKq#8t6 z=E6B~uOct2OkG=sRDF`J#0mOTFJQuIXJ_K%U?Uz#Wc0sN7T;n+v0nPx|MY@~o zlM%{sCF^JTy{QZyBmWira$d7dGwQ3DjSVu&J8}|*!gU=@#@e!d21qn_vz5q#^+eJh z&FZLPRXaOVd9?YEQ$l?T^ij{rBm z?Q~m*IJp>jtyi3zl;eBeWf)g=xtB(ov%2XQql8Ov9!UqvSX~d~7m}uvCF0rCC-(Cp zN-jo_g$Xrj?_JgZG|q}fr>o$3%%pv95ruw~VG{X+M?yJ3%6qRS1FV}~PqAh*!eBa; zv~ZWUP)5nSpmSd8VO6|OiB4^OEFPk>mdt!ux9^r($}||S?|~|{4LD3l&cNj&GExGo zC+;C~6UoOn&_qfR&1-e=aO;ArL;|@2_Et)A>5C#sNqBODDd0Bzzhc8(vHt*eOUc@` zjUc6CSojrp7C3Dl+ynOBT7=o@@+QOJ9sXkw&Q@v-S4j#N?p)?hxl|M=#`lJ>(uB&ER)tegqgOD)Mp1%jAR#K0>}G$oH3!sT z`KkQQrH4g5|l*^S|!{nB)~JR@kW4P3Ku8X~8!b?8C9U zm)WkKkqX_~-@ngMEi}kU@?9y#F|)iMS)`|t7@=QKW&G$Q8l9~j=-oQ}f>!=F83b+G zOynOT>(!I^vU7eZZk7>?T%JX$aH;kWz~cCd;RscZ=hiX!cExz3x3%TD(qQYT>O#N@-AWsBA6s+)=>T(_1SlKO*#O@YKq!5{;`Ceho-%3-BmvR6>JDqx@- zhYRZmh7=UbEa|VZFk6WONIzVj&O#bHONV*wzyo_)AH(Ikm}7%MxOj zggRJG`9Scq%8WT_*p55Lb_`f&%;`#BftBrFC<;;KUhOTQJDyg{PWiq)rcVA_g*_<1D}>`Ffy$S)~^zePN5pm$ks^ljd| z(-Vo__H!kc(XqI!8+`KLrQB!-Q_G{_5To$;YnKX77i+mH*)Ykp^DA5K7U`J0#REKR z^>{x3>=r;duYEwrmJ2%*TmjVnf++{qUgYgEn{joPQhHGWoO{=(YF`>!!&gqJ@5$Lc zi^Sxwe#cz_1W!q3UXGYm+FO+lfYv|418COUiS+{boZ}qupVwRs#223BaO77M_iE{@ zP#9lK<9zQ(>b{sU;Q7mOMh_y@pA5fF_Kpg-PwE~NO)A#GY=q!sto)RnyIL#nV^ zFY2rEx{=S*7U?)fnf2i1Zv{JXGGUeKQ2Um0VXR(fl-EB&X0MBGBALwk(_CHk-0BVC z+dL&*CevK6cEugsffqBs0P244c>MEY3_-3b4fHaqUDL)rIm8k_W7KM1_x}OVJg7il z+x9uOI-x$~0X&laOB~0z@%HgW?0-)A=fLdFl~mW^N;PsTbcKDIZ4>R}9F~exSMn6* zsFAQ)7m1_tJK#w_$Ree!$lc{2Y1I48?7NSE6_lIbTK_Fk|9{gSKn3{kf%pGg(vODz z76l2O3yg>iSM*E#S28dX00{vJ1MT0F4W8!v-^svec=+i5Is~|hN$Hb`cz7kH-~qv{ z%PYY5j6%YuPVS!naSXs?f#I3I|NHd-6y&$4=!i&Y2>&_;RB!=s!vGT8FMxo8hWqdP z|CeI`1s*)ijfzGmX-Ysu&!a);L@EXTmbkbK)H1VnPDn~_Vc_NC7ZkE|adqpuZC z9%R1KcVRMOiq*=(|+{59I7Up_@)Rf>juQ*3}|b-lc^A&foS`LcTb2_ibk5t=L~z zWxZ{e)o;7WC}?^`7f=n}w>`BFTslxE(msgcQ_;uE0 zwPG>kC8YLra%2Qnh^uB^h0)yz6i$|LlwnmGBHMNlB>FQBxFfahiip{_feG!9^RJ=b zpNVn6^?%=vqziq&@iQ;~&l>#CV*J;G8N}!F-wmha@!DP_4xX6BW+KigoE?{*jEI4h zv$jrp&A|wQE85W<&bYzmrZ@2@!ijAjQ7;Du4``8*&J*#hJEcv9Z) z=#BVf{yle!(pQ+6`E)$m^0?Th>e?5x%~<)c(hz%DbNQu#>5vk@tQhNBrmI~9De@dG zH@;Y13D-=cS1FqQAwR8w4IN|gGXJ@>7M`NZbc|GKH=i$$F9axV0nVKu3_Vyq3-87k z1TUet?f!ZM&auPWO-zUf)v#;pYYY{mo}R zo`+>yu#jzp>cIMCT{{CP3tP}MBYtYgKXcF3G*vX?_6L!Z>Qk<}GP3ZR4?6tps3Xe% z(A|`WA0-z4Cm)YOsLSN_hJ?g3@v>ix)*OGM4x+|cSZs4+H2LCy~ITY z(UxM;l#+Gu5jOSq%$yGuBlZ63ays*$42bZg7F-*TOpvi-AU|2tos_PTYge>`+wpP` zybE<2mcSDB<6r`qg*dj7^ZWjdb}>26F_~i7c03aQ!n8Mbjw4j2rLD9neV zc)P8wx8S`su)43(^LOL}xLKOkGWt%A8Rr^{JHtU91DgZsFQI&eCZ+nxzq=+~m8Fke z*$Lm39k>^K@9;7GS>E5uh#9>(aMo9)?ah?|x|T#*t41`j?x9Hf|Gi;sMNM6|oRTNM z#fK6`@>kjLNx|ZGv&%EjLNu6bPRo@odRJpkJSxL}|H%MN+JQUkH2@ENP-C@xZP2elyt4LYQnNksJL7Q&L~-Gc!wv zIsHud!4r?Nsj&Z8jZvpjR%&H($Bnq5<@`Z2a~%lHjY+^;G}vVaWT`6eiEUY`BX)Uz z4e~1``!v3*s8(>LegkRrZ^;{qD+}l_} zD5Z~FeXxRWe@$&dFvw+y0iWKq3ci^&DU0NzV#hU$>L|v^Bc~DEeGYf0LYUKdUfZY<#hz+dpAtk(i zx*EdHtLSjxxA=J&V! zL+OO0J&JeoaUd!sZH!5~dR(J0ZQ~Ci)PDt5OMg32S->rJ1_HX7Kp9XEj|n{ zUQ1Gg1|#vyOvd?-{>~*2T}qi7w?$*QmmB^?fd|voAF9;g8rU}0*{1OXtYpmU!r>he zVYMZPU9z!EnEhk@mNc}8DLS6XDg`G|PdFDQ^>Xnj4kNQJe6$o){adNRgX~aV{yM?p zuQ=*u&8o!+P9IOX`xM6Fhn|Fdv{Pb`-(@Com1+3Pa=)pVySwKVlp|sEV4K2Ylsfm$ zS(8p_hJlrn4@gxlKf+^W~X;Zh$Tu_bBL7$2rUQ;TBQP`|I zgcZ#W$;`ny(L@y55`}A8-o@NY7{=>vvKd^ z<%amm!jhQB2D0G%#W!JDX5TKG-z+O_8YP0Imxm@HrGKU^r@o~D@OjxrgTc&#NCm3j zOUFOj8x>8}5E(1DlWZ_rcuPfME-~&->LQ4bjP`3^QarBNfqMUtB01}DEQRc9lTb0n znKse>)iQU}U@73&5D&J{pr;0&EXw$nhu$isnh5hH5!5`Z8QTdORjEu8My5Cv_WTcy zs#Ya8t$tu-gW0jc3dx|T6p7q|a0?3*i$`D#~7*X0|;eZ^6&JU6Myw1 z7`Z+)rm`{3GCfq|S=?X%#~F0ns@x0<3P)uGOK1|xuYMsL7l{^FggsFY+K9A@M}b|s z%t8p`zv~xG?g;kwwmy$Lz2!Js<6#7~j0*U>oa9a^sJt=QVbG=Wn z8$qq=BVWs5;@SP`5xQ_eM44zR2tO_?n!%O83VsTO3tr(EA=KafiIoR+_=Up$lPMHx zud&T16F2Sc4z0>H3rj7=9OmFmr1&%hten^#iU}Tl&4g{l%uF}i>%sI>kXLh4y=yfC zKVPPd%;;1g@o#_($I184ZanDflO1eD zfKRDkP^=@R5|gJDCD^om#46uqq_FM?-!VX%ACo)sfLCEyK7`>5|5GQDqd;ySXIvYf z&56DtNWqyid^MHmA}Y;E3n5>k$^MMSFLwqr>v8e>jt}ZxYu{j}6&v_u@*e0F z*w5P5bmOtC)Gb14lZT5I$OX~2Bnto9oPZq+Y#k&D>WdS$O8cD)1jGa$h*J?#?9S|s zRoVUl(7sV@%>cLwb$zmb39cIY^{(w$Z&X{Gf1uC(gf-*de0e#T`=Y9^=9Q=7tvC~d zU?6LVCmqX^wyxU6vUh>j6yeb^uXPR7pc$Ny#p~KoOAr|%duK5e`;(e!`?N82WHgy0 z*AO587{ly+({@&DBR9Mb<=$f)75Iv$(97dX3%J?u+`dm$G0o)=^J?|g{}Y1WeoNuh z7VDP>GSue#bpvS*q5AoS5W>f_%x}Pt>}gVVL*HG)n(%9c%YL1;yJzRlx6gl-q1yTYf)r zdFq`;AJMVlm-<%mi`7&Q`|C=l`%Y^ZwBm>BV$-wndSUHcTi}mzt)PIZ*4Li&?vmy| zgK6RM7uE|eCK?LjLvH3)n)`&ceXT^iB-uo4s|PXi4)Sy?b&-sz=?zfeTKY-2iZm$FATMI*Abu?VPP^LwDuG)W^6#@8z1fjjsFhZ)QAmhtpI!g_*QIE1 z%6;&7c#kFP-FqZzwlo)Z*>KZwQ{gd0$~bPKtIJ;z`=cRgI3c$#OmYvs_b*s{BrI%z- zG>TBhw^>T;1w|O}2^(?cbtitHL$wUx9@7#dMf!E)eGf!j{JXbb&qEw%x$BomE#K10 zk%hl1XFr5{xqsi*HXil{Q}yZ=`R65H-=-akAvRJwPi`|>ohy_&R-bkJ(90VB;m_E* zFaE(iWMEa`PtVj=uXkHEv=eurGeN>nrJ`OtATxIz`gh|!sQbm^1uh0lbM?nkOlqKZ zBA*|mo&Y7y=O{Ce=R0Zr30X9nP>7as9z&gVIiA#ZAwk1dzZWWsl))ta5ysstzLuLC zmNH~p{W<;FX%Ka%r<=!&ete(IAQCnu#a1jdi?NB52G-SB*w4~Vagh10Al4CQ$3p#y z?~!_H{I~ZXX*>yTVc_y-vJ>lu&G^(8vS%m$O$A zw2z2Dp69oF4JifWhPF*3v01LtpMho665ohV9XoG?Qgcj0Ih6SZaLza58a^me&IvMp zxl;>p$$1%QFmC@o^HsCang`l4QhCNS5rTh08P;g$~HT zjqYr z{FZJQC>K4IVCPrK9jbI2($s)qYAPyZ-~8Dl>xYM=ol94q z9e%z3fHF5;&ZIj+EmI-U9=qXtEfbwygiV_&>eboOul42Z<7G>K0={7>+Qxn2PWpxT z4%>{yD$Jr?JX43$|v74V#v?IKHGrR znoc7~o5Bt+>zCnWJ#+~JnOWn}nSs0`sA2O`K4*U8NxWvJ!Ix-_>UwsK0Jm5;7tK`9 z!alQ-wsb!_&%|cl*P!ymi;9>teLJG{H3dS*sm=Effc0oxZcx5DXpT>}es#py@&%<|kC!1faa|Mje-vcZL z#lkmKM9O*8LQapi$a^rV#AKRtbx7z=?p*s+$VbxZ$AcXqSr$)4{~)oRJL3d)ctxI*wRED9u)A8icp(jAiKFgdz%VSX&D2#!jJ&@z2~X z%AlyP@IzYU@|PcHgv+{kTiBy z8uLHr!`0x=1(0PE-#3c_TKeTJ(9Qe($E4^=t!QUBnS6D2pBZq9w#fLJQTO9#4Q_Q) zXGOqdo=U)v%!rrH+Fj!54|@**C%f=r4g3+P_u>JEBb92eo+G`3nNV|Uzqkj=x!(IU z@au%?kS@(XfG|~fgH8Tre{Yu4;HQ};{4W)GMB*nA5N@GoeDAj;%%IiLZW9BEXQqLC z%b*@3tV(+;_12z;#hF>7U+bx!UpIfb;J&^qZ%pH@kfj4FQ$+M)LiWt+CdX6$WIx3>8{D@43(DM>kGD#= zxx7<#eNe#<;=_)RU>A!YYv|lXFtH7UHict>RGBYp1a3Fqlh`MSW7^lP&A&lUBbdM z=7-BPQi{P7j+m;D{2VH}#^d^yD(AZm-p`OrZ=MTQJ96y8z$Q=ZEjb_IkAp!J+!yD; zNBo4pZ@38h)0cD!VtYtaOb(1~{{gK3&^l?a=zgCe;$5P{i>&%DBnMWRq)A9On8|>_ z3evv16q)9Fv?U8FJAmM?JRdmw97LH7aGOgEl|7FiY0=QYwTJcy9&U_&54(nLA#LrB z|CU;~Zi_3Huj_v1U$CWnbL9VSJj!lWRS;tN-ReJ@{g{+L+Swzhb6V$m!9dy)Gbf9> z;=8FUc%s#mXUkKYRQ8RKVIE7()ZEBxmI&X^bjYy{Eqkg@viZGeu~7E9f4pS3_M=iQ zL9>kW9CIKUvZUKx=vw+?{rO0J1wXXk(2@ztr=Q^+ryk!9-nqf_W)d-P$-@G58$2BejB!94)oO8E_SxN@Yf>bZ3E<84_m@xaII<4w$c#eaAPI`j6>zGX`Sy3K&%2B`Lw6Bqk%`#7!gPK7yO~8x3&FnW zw{7`Y95hM_!Y~VNz-mvYX{AkU&S!7MDZ9dVP?Y+vsO6udDCpKM`~OwOY{chDu;BLyv^PvC*a_(1A6GaNnok9jx3k#^Krr=9p3V68} zD|nLEN~Y}~WsIxKtRX3R;bv5|1*M(Cm@Ucbw2b_XhbKhbyIF#!+5h zGT8)mD@wkLYIz+a0e%&wU>zT4tpo_T?2KyvHc|QAYOz6 z<{Ymv+PGGy3b?dwVuv{9vg)uwm9}P$l)3C7grpyS)+&Es9iAOd5hNH@5y&;Md#%Gd zm)1>Z$naWfhTJK1)k)dKnAP^c3(aGWKnPb+-i+*-RCRly`Q`Io6D_YUey`KyJ#rLx zBuvT=wA7X_>4qj`5a~yyh<*z2Q_6Q9!zMjy5k`(D=N%GTnJhm9YiB6DhNke8-5(Q{ z&@v92jEuS4uqbI_raGsFCrDzOVodSvd`yi2Nd6><=%IN};LLs3-WJTXAqahQ`f&bW zV5uf?zMIE;{^Tn3kdZIG_Q2duqLmiVT=WytcGfKtoO_M*$Pxl` z`;FicAs%9w!1{RK{jCeG_!U1m`DN*7cgp@KW_CqElm8@nrz0U-xA5!HQLy~__%}lE zEzQGy`R2gf)Rx|zfA^sP^}mLk{yN@UioH2+`__DV>!%cREc9@*D{3mVI1>PZh)J+D z8oW7hAo}!h1-+rXRu_}ic-(Wk>~Q~$U>HpQ*d6j4!N2A=g2v_44cFzH>mSh}`r|b9 zq_@|{1-C@%U#%|3CH^+<;(^pZ=l)!#yT%r830v&G{7F{pLjTbd<+vcKijCvwH-feq zxM;NIyVhOC6YU=SOZh%z6`3vYq8*}AKf-r&(pBDZ1h*!z-xpg%57*@EpG*}95vgq7 zwVY02Or4)kQHFdgXciU$^9z29*7}-y(KLMi?BufRFmAmA==5!7ZCI@5%(e1%2KpP} zK=Awcu}`SJ9EZ?pbJ+)JdX2BP1oP^-P zNRr3S%=!p#UKKqo3%uc83nO39trj0NO`1S0G)m#gFv5^A*bUSCGD~_ToGP$Y38Pa= zACCzTp|4R2S~%hu)G41|=s(Q{%tg!?zVC54F2OA2t{4I7E0Sy%$83pkf1`_-*$Dc%CxcT58|3Rcb)c-%Ye*{$gKioeZIw3bbTv9+} zA#LgYcWQt0H$uN$A`ZDIpJUmt-v|}rbLSaY+qd0_Uj3e)_c4IAce`aSwe*f5F{~bi zU&?kr#8xh9g@;t zf)f}?e*r$4B5|lvCS;vY>D(hN7@5zVyOG+T(oAq8>UlD}J3L#IAs0HK5&&n*CU}oZ zBS(4k$670X4ZjjLHfK*3joK9$3UE~d*}6BeUIRcXy*5B@YG}mVD@H$3ykyy=wot69 z^Rn9UeR1eMjvl1ZhX}hnTIX;szN9X>0@#D&M&a_Z+XTxamLqL}j7(pa{+C+D37>Gz z&tG3_K4VDkScFS<_G2V}wu*oee&X6>Fs7H9>TA; zXc361_m442Zy%n&rA}z8W)FRr_R&^TI|4B|Mi_uW1>J}CpVgEqzzuwY-D_9wM1KsM zBxX`jrdKPb*T<-yu-Zo?Hn6rS)dj0IVj; zQ)j#U0U*(Otd<*n`y0VLtOo0*##WQLE@fyM+WYdz*KM}WgW1dqvJIk)>JJSfqF;Wx zv=q)c;#pYX@mlSojh%c9T;~&771N!hckx;(8x4>p-dLH4Q^t{%!FcUFBA}_D3c)8I z8)ffTsEL2a*Z^tE;)s1h3aHxUdK2I@V!MUmqJ=GKV3UN$m|5&fRbuHXDW8pzRji*4 z^y1u`ggD^d{Tv%>cr!%Vd3Up>Qs5FhM%wGZwot1cM&)SV8zV@sGhnRguvS)Ssmxs^ z-rr^(oO@1axVCd{e`5!5ngDK58DI;=vSnOgPED#6P!Vt(7_XM~$iv0LScXn)BH@zR zJ-@bOudk+EO4IcZ+Vuyltpq><(YS`x@=< z9A=+cTsx5W;?_y0cIExs-B)V|w_5Vq zZIE6^n7m;yk(HHyx5wu{7$VAk`p6m)HkQ5lwals!0*#0+33_DqKA>RQ%R(FN z;Q5b+fC9U|`A+0dt2%G?IBRrkY`{Tc>tq!(sV$CPU8C{Az3)Duf9iF4ZfaPa4 zql>0Q!FxQS>FGO)wRR7+*%xT?5%JXI{JsL|D2EayqFwz;u==@6t@H!#`9(XOK-d&; zLQS)&ROKW?fY5o70mj~qtZlWLRZah-fNVz9%pmj>uiI>X%W)J}<3*p<*&Q}Uq`w7M zoS^`ds%hLdW4@*wd8xW{y&k&jfNq^`_a^MiErHVVi{N=^eZbtbSh3=->B=|QsgJu$ zLRf5K666c{EkR+IQ^g%YwedlNl*u5N$>kWs9zS30XlOmzzIUoY?!4BaOTSRERhP`Y z6MY+t8Qai=l$=7Mo~g{@#eJ~LV}{hsR4jCL)HIVnmMgoOd@%~&v{6nmt*_F7F*zo5 zMzI$gRJiaPp-$}iw;=P0ZHCg;_kzIY&sA212~9le7AJ;m%h;cjQEWe#cqy>!y`_)Z ztXl(8Ea$0?9I4l6J|22;*0x<2S_phnMP?teVkfiaU+^fi`Ph1jp%jSyNklsBCLOr~;ZvQyJyuaXH^6Z!naG@E zBQx1itd}5`Q^)pEr*_t-k)4x=!$xPsT=6vU=71A^ADQ9+{rpe&@Lna(K+GKj^v1l} z$?v3#z@DB*ZB_FNtHEkA9(^g<+kvHthu_YI_6|@lrDzVen|ACFzg9sw@Tl^p(h|0$ zHVTd&K!ypXcrfxV@tWKxv^6=rrg^>rwf5cp6UMaR0`WIx_m)F!0nx`aUHs15&br5F zpZI*vmjy-engs7T5VdzTLI%=nO>4f@xz4};Q4kHuLpUY`4SlDUNuiS`KmIXF$$gp+ z?z2=^D1#*Rg@z*X(Wp|PoDMARk**iM`+J+8=gxwlfko!cXxrFP545UKC&I(i;~_ zkC)6Yr*k~X>M3=^U?JAVZt}Cy$3c$yD^qP}immP{$p7#H%3hIDj6TyUtFO+0SQf( zp4IA=FK+KX`Ju+d@4=qGRhyfAu|gZuF{5O3hhId({OCTJN9^hAs1v`M6=_!ptVw-NRqbPY^$hvuEGfN@vE zuVf)s)JcZD}aF}`(|@CPCQhxUsE&uP6B)V`Oow-<8w_JprzIj-CkG1U3Qo&Y*^_`*Gpn4#B*xR)iTy5_oMSJ_9?^V3a*`zz7gH zG;WgO*dtV+Niq?>@U@@qUhKA9Z#@wEpmIWaRYhv%XheTIxj%vqriZXz*l&`;!12EZ{EU z1d20}fgjk*#NOr`Egv;w8#uJ`*t!#p#6U-P-di^?YSx=(Bp{^Fn$A|}=+H`%yVrD{ z_{e!V_QvLHDmf_eTN*EXzZ?WRrFGMQF}IUn!B>c6%r2t#%dy~Ct4Q}ZLIES#tJzo7 zhPVrtcsr5f1CR{ysVDmZ>F#_rygs#}KW;_bN_oDzu7_f{ z=yn7JQzXKsI#s*;jwH-Q_?@wWU3VUdzum~u?(dZV#B2>y!{xbm%0@MZYbO_=@AGbm ztqs3U0*FBX7|nj{*11q?LwkZw1}^~QQ=dYpqRTd&0%anvukqTp#B+dq6XGKAI@~r0 zyMz6MboP&^I;C-$;7bL?1{~HdRY_8-BSwBFOOpMamVka~3IfY`Az`zQuZ}Kt|HaVe zpNQix*n#i|+Q5+w8XS}`{0Fr8$HD&rZT{cL2ENq~j%@z8s{g@Ae_ns7n&HTX0FCwq zIw2iB_gkWOJW>{a$2HS`a82fG)ctPr0DfoxeEh9P>UCOD^TyT$mdh+h&17JJtY=MI zvPmv5X|q+0MYCpESi$gGCdSLLJm-*lY06bdMc>&aHV@svRs*CHo{#s!FsrzZ;(Y+J z19BW93vj5AVhVasKRgeZJYLi0reVvd)07J!V|OeGop(bF09g}d(WE%Z%xH(gvx9g}#SEp)lw52=(m&y7f@2%2%rmObti z8?#-h05;|M8o0NB6Jh-;6J|LCX?sPAd>9_OjYK;NJ(7+Z4Aq(1Nr$VFY| zzn!3GB@AW}T-Z@JVNChI?bZ zs@kqIxuYiSz+3F#Rn4oJv!ZP(Hi1~%wRpJf*Q^bK#%8Agi{r5tgrTdZ$tUgI?bxwG z{P@=Q#Up@$?o9znVKbvw2Pg zIF~={Qv6QhhLsn%mmO4VOkYBgr#WFvePM9nk-rPCFFsQs1jQFy=p zftR6}YIrDXqKLeooevjG$D>k}X;Qm5DW=w=dgEG1XVR?TuA9w?_-NG|FrPzgZ8fH7 z>A>VIag;4*%lsQbaaT7zf}Jcj+I+~W!s?6ce$sTgX|6(X0+Cf6rG52Je@wK(gXu-% za~gv?=*!e&U1S;F6<#uZCc%Wa@-HSms`XwdB@6l@|WUhvOnX?Pq~VX=h{uy7pWlK>0u@@9w$JLcbc;o@IY_l2|?N{rcv`c86ON zJM3k})7Jg0W|LB9e))8^XhaBwRm+u{c#CM2dxgZ7vfiJ^KRAp4!?Se6Z>6O=qTD#lBAc`| zwIHoLkaX=%oVZ|NjEpo#kLtJnBU+CJDEo3jG~otMn%2VSzY+Eq$91b=pnS2FTMQ@F z&&|?eEpA#FCDCcMr|W%I>9SW8)O{Slj{%(P;u23hbID%B_rvq62}M`zPJ;wl9JfAX zd~0rAtdzT^=C7w{FYNs0fzHvFoY)<(W&I(X>kkXaSQ2rPLVJ&UO{FV2p+8=QL0rFi zCSPZv)cKiO7W9b1{NyMC?{h3x`30Gu8r60^M&9DL;FQvY*2* zoBUsw&C{USZn>~1xY2uPjAsjSCpq25&WR(l{K>1{VMIvtdCeFit{`K2LL93aKJIXQ ztyS0j__G1j>C^>+A!iO0nF$2oIY<%?UTlb0e-;^1G-N2yce|C&0g3MMXY+IlP<`A z4)5!99n-9nLQHY;et3U#W^g3D{f z{nv|eGx#0v4m{OADB>YwInIK)^N5E)&w7VZNNEQ`(-XuKO!m-t56$u-PA7nBi^5pWc?;P3UqpbRn`eBI9nldoZ%@gr&XH(%)r_D9T69 z5T-Qz+5dVYEg`x;f8ymJPyM;U#cZG zMz&3lKm>n2;jQ86(^<^?oL*+07yl||VGw_<>yNhi2>B;R5dU;7%IG45bT~yt}#=47|z3cs}Hz%;w{^GhUCi~{40Gh(Jr2Kp3cFl#r-M$ za;kQWt+Xxn#c!?;?kD+t_i#VqVLK5TPc!iodbfU2%{O59e`7e4m1#reDJ(z%70PkfVx8qv;%jYZx%gV$%_4|l%obi$paIlm_MRNHt|=FosQYW zgw3bEdM|&N&ppfBiBqv6b^=5mUCn9U0t1O^Pt_Z{cRLPSMef+=?(8#@{Z*7hZ>PBz` z=-z)jjw4^_P0QX?&QjpBTwAud+yZ+hchfX{eg}oXy%~$@?zCN$rLW+LHVkgJr;#){ zKB02>)tf(D1#hiOofXvY={UmQc|P7n;fBtbrhWHG=e-i^4e)OOG%`;@wfBg{r7m-o^;&0Gj5YiF}ym5y# z(Rq9(=Ked*DTMndI}By7k>e??iM(iGF?5WRXzKURqkaWWpIIj+=O;Dr^kyY&&gH~U z`{_QJDe=9)F#=;~sqdS6*XT5s$D%o}`R|zW=G|V^-3t3pQh(a}|?e4U6_a%L7N(<7wS%hY#!eYOEWjTApcTQMe7k!@%8vAo_`=sWHZy4D=m!g^lG z!lVu6WovzVCMsW1?BZH=Oy3xA;4}qT)_p)4vYKt4`y>Abz`cUtfQ=8^=$0MSPvlt^bYMc?aEvFJ!_3=6KhHj?S1$U1#tktxm}_k z+bcS|CwZckGokNq@$JIZDt{wPxxV>u&S}?--)6S^UA44FYt0gbr^YKP8DZPj*C8{0 z?hj$CFt2GWE9-zw_?wjfxql`g4Hx)sb7xnXP4t)0bo80y6s84$B_ZFoG5# z!L$34ElfF7cd}m-Z?IBz*K7#wjFkF7oFgfgpPj~yLpfH$>Bdxb;tJ1_6#dRx6bS}k zpWHU8{2UL4Et)o34iX^qMpC(6ajd>oV=3HoUmT~C=h}=Xl4)5hjEtkDG1tT#mTs=3 z6TO-?G=QueiJ#lP=^X`EZhGDt2X72pp6THB2zix`l@S5jKCIg{gfCm5_c~gzsUnhXW7o$rTbNSWn#u#qhVTS3qvT@hRge8 zWUeBG8-f%_u%Z9uqH25n-5!|Vbh-tqhZvCvYR92a60YN?`A{ac>_JSH1Ca-4R7ZjN zY3O>BkD9heSW8O3pG8vE{@hPTbA!1ZJw)&_Iv)VpL98acHL$gc9I9O5QD}sYB{7tL zK;>GVKvZRQ)(!i9JLo8m`o70iwKGO_cQpvH@d50?PZK@5QiuzvOz>ZTLL~FUw4mWO zHayJGcu8*y@`s5qcV6vC%Y=m=OAK+PLq-||9Pa#QPy_r^p3%glH0)5zY)^c+8sh7e z_0^E`qK3$TAg^d)G8Q`wx(Qf7E$&{4{SB9 z34F}ExBQKOlQ^GGA|ByfaMT*&I^~pYoB)|7|1-DC$(>4`XoI&*d>^iw_o&iFUX;>E zY)Z^Oyq4D>iNPxj*gb0McI$C;R-~|Ew8xY9ChXEiTQ#!ry{u^q77y;^?lm8xrVLNHKKJzH`3V@!#1%RV)mS zAH&2mgEButiKMp|%HJOZFnyguU0M@-_`bj%CO?0!Pl3VYpDo}pjFV)IXT21m{?cTc zM||xZ|3t@I#6PjVVfB>|(UwtGoHg!SNX*K?g9LBFXolB&FAuwHJ{#`-u=*@Cv1uMg zW=|1p8pnHjkk2%crGuquiblUqF{5D)-J6F_;s!O(WhN+o{EN#3y#;@9THd|4iZtSb z{29izCsPr-YeLwYx@=b7Y%;n6{n5eMX^tsl7EYljsfxphRP`F-51s-Sw2!=C6fp*HkQt!=%WqZIX7u;Fj)DG5s~_-DTn_<;)W+S>hJ+|B>K zVu^(L3CN2)!IZmvE%$b@A@c!c-Aj~*c)OXHHr4kg=cXj0nOD7v{-*=OojTue_J(?=++?gW z(p|~9^IEQ!*n7Syin6m#PZz-&LixsmU@_ z=PsXVmTdsF^>r^f2Nh@zNT1;SDz3{5_d*@b_UG z9^J_np|ryBGOyhB)ODlo)CGg*qt0W*lF;Z(vV8f>0(gVnvI}&}Ysg>ndxSKD6ub5z zU=$r8>m5gl7wMHrsXeREPABt~;TUQh#pmJmmdH1>@CM7+cDdBqT7ORl_AZ+)r?EmM zmxIpnrLmAVas<83!Z93a@pr9$sZdlz*EAO%`$Iu+){UiHvrN8^!nM7)w1uiSt-FPX zOf*fpz7agYnA!){Q!8@1KHDFsCDrk@Vp!&Wu`b$kitnb{q2d-F-NY5}0fKtTIBu9t>E2XQ&<;MWz-fS9I9jJ#2#IRH0< z*+pL&G`cuIYxU_BN9NC)FT-p)Wv8?ks?QcAozwfgtc69wJ4eazzmOb7a2@hez=k!o1sNYgwrncZ0dc@uh2>3f<$T6m@EAG+k>{_ZCBbhTrI=K3zYwwp==M`={{2DMW}&MgD|Iyvv9F)*piwO!$GGD!5Yxd7o71hS6$jS< z6&~%cVF+FJb{q_^u>3`O?~hlTJaZlwv5_;rO{li!hOIl45$*@DP6h`%>Uw4#Q9_xa zx=w*~&OkU&nj1&+qMTsTWs>aW0Y+uoC__Upu3`i}2_#STb7({lgeOe~eOzzG9dczq z{?XB$!F<9Su4pYI+#DVrzX3fkR_Upc9Er3@5769CX{iFfklQm!j0Ay(ZX2C7Z zqyS*%-O>Wz08E@)S`Hn+B)g?G9|89SZ)tNg;GV!O?Un^##NN{Wf&fOu4~-3A13=U# z0NL-BPE-ewop0&1egOGrd%l;?bpeo_e&pi(p9toi2sMa58MZUMk4@u z{+4bP1(36U=%+X5-@O6cjlQL)UIKSRZs`pS02Aew{)Pu&T>q)zkZ}P_>026C2f&oN zrNNm1#?St~IUXFdB!ChBBYz*(emH>z;C}uOeRDo=&w>GDxm#L$0sz_F(nit%DDIZF zSOh>XZ)tl20HkqCyVV28gSYhWu=)pXX@4yM#CA)Eg#w_QTRMgl04d(m$-V$c`IgQc z2S6mZbio0DocKfk^XvEXD-Q!eq_@h~6#yW}E&cHU0D=wcP5NHGixmK=-qN4m03hfs zJwXH@huzY1xc~?@$8XYi`;}S%x#X7KG6Rs$Z|MWr{5Za)&olw#(?2yloC<(kbxWh5 z0?2E(H0B3b0YK)rG^HW{%Dkl?9ReVUTbhj*Kz@Ep^F#ok z7q|42GXP|GOH1hhAgfziu^RyWc1x?%1E7FgTDKeky}qSQxByV-Ep62XfPT*Z@9lR~ z20(9b<$J*9+t2Iwd;V(&02Fg8KN$TV>x+y7KsC4W6O;f@{Vkn-2LQdlrSp3KF~7_Y zKpwf3UkjVBKj$|lzz)E_uK*B#t_RY92ms#(JKxVg%752=XaEY@Ej@}0p!{5~zUR*> z11LZ1GXkgq_?3JBb>T<(?|L^FK>JzWcYS6FU@-rgj{r&p&_{1+96JEidP@^?04Q#^ zG(|Ch`g8rcsSknS8GugsBmZVSM&PyqFn;#`cP)MaVEi1vAEo|&{ksSL?t#C1;O`#z zy9fU6fxmm;?;iNO2mY^m;CkX3#+u?TW+nh2Elm%g+_Jjf0Kj@ZJCGR|o0?e*fOqSg z!DMDe0$_Cxd1iTAQR5e8Qf?4q6*mP{LpKXU9wV@jAQ`_4uZxwfm9c|9nTwUBwLPzk z0Qh_5ys*zVzh(lHeJ|o*ApjP>IV#z6`KM%}HV|Vn4n|G}Ll$;cGAsG>DN2udtJSMO?FeGzJZOSg8&%T(jTW_ zW&5kzf7@5L3d+m>bx|v;n-2J1t-XV?@t^Jew-wu~y4o5uDI43{I6@4KVZ|wKjBR;E zA;$U+HV{=C8_Pd>@#za22OIkrHnwDIiTtrlqO^l6ORD_k4Lxk-QTQM6$M=N7% zhd*qM{cYgY$!}~8oAD6X)V|&UFuzY&!00{f5`w#)23`YjzY;v` z6FfZZ754HYA;2TR66^)>CLthwPoSHG@+;k#!%8C|ARvK|5Rq=>{3`O-AFkg6SST>Z z-zx+-EC3!04gm}9x)o^s-Y@{+&m{mA1%!rxgbW8DeE<2Cfeb=HLO?`?hxt^H;1Lnv zK<;)<&V(%b;iU#;LlpMqlwwA& zM>x3Dd7ha>6Wqsw9UBP|0SyHW9qwmM02Zt+a%^M}i?E%Nekm&i$DV@|<@XPRV39I5 z_EdvcX)5KostyES!<8dG4pBs^;os-Fo&xT`+6s?_fCUHv|>RHslU7M8g5BTt{rBO5j{MbAlbB;ysAqmasOb0!TMhj|dBLx09!BT<7Mcolm@7I)u)TY0p#o^rGs#!{f}Zw7nq&;pL4k>ms11 z)j?0*;qu9ndUEhaLU(*q&CqQE{5SvzHi7a!OA_*jv6dgJ%jv&vJMxael+OAd%xq3@Jm#=go_ zPDp3k8tDRO(8%nhaBt%$WnA1r@GCiDA`s@dBl%ng+)C*${DJ`C$QK*?QW~{{J7WJy zvUO-ZmuL<{W9zFt2U_+c8ZOY|p^QW#gJQYo9ksvZF%oP%-jdRdH({v_CPdcoHx5Qi z=58IN8jI@I5tc@r)p;4DkR<2q$EwFjrb^c8qt=Y~NLt3V^H~n0cM6Hl*S$bUm z+n5uah1UIP{O(V=N~WvaZzE2ulTfARm28Pu68nZL1T5ceQDHeatOcq2uY2N;2uvHa zt~1uKO5v!{F!4Std{7JhH_o?h%E9P@VX1>WNTTnVV%Dv58sy~FM+tLcWpVyBs< zoc6-D$UN*jdn~DV{Ggau(B{FXiV3-EwiQ)4B?A_lVFy+$`^hQo4In!yC1~9DpryXdt4hW%pwrz5mHK>VaI0{)(b!`?VK;H1Bht;p zP3Vy{=}t|>e5)&QOSb1qaR`>820HG?G3C(p4YfiZney1@ROh7k!-q46>M{PE1c}5j4kcBWG)hryI{2kz-E2GE zFT0Iz*EEQJ2hpf=TxHjSxZ=kT4)|E2ySc&=yXfatc5Dk(89yTln(fRK7Y9C zFbnpMee*h(OW4(Y+iPLY$XeXlCUY^5Fex?!3;hdj4E1Irz&j+nZMKsufYH#NWR&OT zM8xYmb`&7262chxO3WlpAs0&FFk-9EGX0n$LW1Y@Q@c1hGI7^nA@<)4(OfkFu`N=) z3ND5bN1?#N#eGM4oH$usx%+vln*4(g?1p?TDAD2HRND={K+J3zoJ2zoo3fEFs^oGf ze+nI)oqbVGENnSzJoZLdwOb#Y0k=v9y`%P!mJn68`**P{mfD&ZW%q0g`L-kB4(t%# zM&=(5rI+%`H})E8#rJMKp~F4G9a`yBeeNUDIWs#(9%8)71aK!`1M`~oS0}x$(|gmi zK^F&OXUT_`ku!ozXags8)kFDV-Yc$xj3KL8*8rt$^{mpCYtjS10}n63b7rog4zAg; z{>eVk3EnAk;&YpKZ?kuiDxnSxp=i{pGyb^C;8$;beDQffJWm3%va9I)sqjaw16hnR z=xWunQ$(x_DeJvISagmE50MO2-D#KUo~r0$%tSSjU>C*474zG*5$Z!l0~#q`kTs^J zq&n*~uT3zWQray1Mzil!dro)xxnJ*W9_f-&aXU9Jgm#*~sPBc3qlK1sm2{Gh7>82u zxheq#RBC~n2KgR1_Z$aV0+akzFoS#$jd+f5kijPs$1|$v$vFQ^^NDsJ9!6*}VN~9NVx#S~?>^pXQ0YMVc(kF?f&6-x-{LuZ{L4 z^*dA^$d+-kQ9_!8nYE|CPP8@rNvJd*M#!gK;@JiM#eCIHVQa2*;mU3znFws*>S0u} zWL9n6)2oACb3HNQP|eMSJefS1U9mPPx;^VvG%*TSUbQLowg&kGBQ!B$##vDJ{cRK^ z_#B=$#ykp^M6Kpg1X!YRNlN~3rCK>mNG(sua8^Uybvy3MsN6LqL3ofN`6kYhPSAmC zD)yZ(Wll^Km5damXD)&L6?~7k%8c8R0!uy7osmKg?dLLk<<1T>LuA2JH` zzl=>I^YCLrkWCAa3Q!Fc$|-faF9g~ozX&&prtXh_t!*0kSwGhpiwW@{5{)P+`$Sor zLr*L8O^(x-q2r3}N)5-fBQ8;LrRTHCk^;^S#Dei*kUhEp8ytpEG05IIg zl`3Wep8DNYA*^-wi;-y^%p83uN=4&HC1tn2`>K`a8VGy0XjuzQ_A?0n2><@@8F?ET z@xvG2GDxj3M)uZ)a1N=P1Twr z#TFsj=!NbFhsyHo>sx{NBa9GZtMY93)GXqtf_!6VgM^mR=A%Gtf%eHI=Pu_*l@IXP z9JTJZ^@_8Z5U$>5>M0OnlZ%Vn`ds;@f_k5pY?)6@rX36&Hqkh067iNaOyOfb~lbRtrWyhc3a?j7x4AWKj z0z=GPY3t~?X*U!EL|225WmL9|6e6hZynJUolat!0#Nx+qvD!N$6*ZBo5cbMYNzz3! z($_Fe;gxLPIE~!N+9qEQq>8@wdegaqo)(Y9u=Z$u$5x&6(K|wKlOm!gnhUhVV$n^` zy{{+#_E7Nt?VRK_ZJ?DpSHg|6#ruT|7#D05n%lf9*Sa^ClcoPfD!($1VTYYgF{9@ zL`Q?GG~F9^KQ1eFaboZ0w* zLs|DA3@`SrUY@k8na!MDD8D)`6f1fOtdLohS+j77znY%-Mi+xle%n1K!RCD&&QdaC z>AQ6<`;$m01Lay()l{&$d6}6yq%}Fp*M;7f4s9#fM_H~*BACvz#)tLrvGwDD%ymeh-09jrAh~?Lvum)mu#` zrhVM}EFajzyg*8sO5T&lZsZc4B>_ma(|=gvU9JAeJ>G08h8oKeP!?^it_b(&#!^C^%3_9YmOAzcMROW1-{rA$anuOW|DV zM(o@AoA?W^foS=G!->j|_z%^vitjzw3ri1|_AV_gMp_+TKOF1z9y0r+E}KxrMtJ5<^Nz=jp`%27*p%p8<$i^RBiIL~3ohW)^`*Q;!o(0yD#Trpl?uQ$} z>bQ}VJd1Ck@lzV^eY_!BcD!_G%5uTOzL-|Cj>V>?FZy%^mkI9MKcvn->9|bQHowc* z%ctu?ZhtzN9M)VfczZ@=TgS!1x>+n4wwHEdDq$d1Q8A$E)8W zf$(`$E&D94@|VXrc^`Fg7Id6{uL+V~_-1?!lolLb1JZo1HG0+f>HSgdry=%C zcRH+z%8m-_EQpCY|gv0<<^j_?rt=Nq+`i+RjK!X3=U(q_Rcrg`j;f* z@@3X~deNPQ_sY(a{P+SMGj$C1W;IW6+t={1H!EgVY3!u(9)95Odbcmi4{7F9`#O)u zEg)R6b7%e3+*hy`GWt&2Pt`0#^!&AJPw?==*W9&C)Q>h~?hev1^n)uZLy52a78 zwlxMeUgql8dtD|5pBWw<1#v$L<{mY!9*+VKnTBx@OT|dm74k5Qgll_N;5v5Yj6j!$ zOym^?hU;XxYV25=PrPDadne(x_ zjj0K7sXGhr!PvG{H1@1~vrLB(Lfi3b=C)(VNehiR8$v* zb?#OBV6N8Y%le?cntmr`E}O;$otK)Wjng8VS*EoW>lH@ew>e$D(M^l9ag)WmO(NDS zo`m*14fl#`ph&CQnf^SBqZYUDB6wNzYEGm{@k?EH?3WNcj>PVZ&15a!vwGEqt@vwT zz%)JJF3KRwAL9np2zWPsUNu2+*5Q<{Y4p-!EE5^q5Fy#2>nVl}T+Z2vAK&YPM~7$6 ziIuN{5XncJxTpPTh#_%4LscVUX3DDS>x6_4D}q&=lW27(+2f;Jc`!G;{E3uW5a_)SkE+!qEpu`?-nE+??Xi)l7NL!6SoW)$s zR+l>R1zHmcXP%&DvfP-4#<{IS8xwjKX@L`Okqo|}ucx6_Bx4YI(#29&Bu`tPMMMHx zp~bv2<+JA%cEcRhn#un7##KJryyhCCh>)t>qeAKhx^g=+LAIC~$^{ah!s7f$Q^#G) z9x7-^XMSWyV&vJW(+U1^h;Fk=-i7DK4t8KWJgS#} z^fP|8&oFWJ{y1u{qZYA=ygQ^h?^AyENl@gaSIN$v*Rw|!he^2IEkzcXU+%1es}Fdk z@aMCOmLMrlPZ-4uC%;GvmH9ptcNVCn!$vr8d7smVU*go7Tqrv{jAWDb4YW2KC<-wOkPALRW&HkOn-hN!NfIx zXQfVssA%d#c6DRZ>(oxYk<)QK47U^ELk+T>bu zhDc22Op3v^J3W_~+xNdbmQc^6VJK{1nGW3csMPl3v25{;ZF{UNOTzivxi{5Ax-3Oz zKI(3PR40sAt^!ee+cPPXMX8c;^&YdPg2NqqCiEPl<4|2Rt8lFXd z>r$s2B^cw`#Gekk_XT{SS3e}R_Bn@ptyZneWIP<3?cUbGaXeMK}ilPML$-m^$YtPhuU;V*;cnOsxXG&`!!a$E)`(pM9u zZARDC&Oij?n2jP4ty3i9#R(Bwa&mziditYmKi>O*^>uUm2Hd@+*;k}}4(StnI zgHMe3_#?a1QT1`%AEmPzaq(0>ASY)&Gs!}f-2e?;Q{+4jF>)$jF*ivP#@{)$z9*h>6I+y8Z}3WLvE(R2U> z8H5IhfP@NRuN&`2@gU<|B?F>R#C99QOR*wz%W*Y zkt&+7z6gG5=?7Lw1jXnrR>ed?{?DwMIyi)52!mDpg*{eCnY|iH=?5?_9zohavueAx zQ!=a_|0b!&7L%wSV9J-;$rn%5j>LqF=h`7#;kEkPXu*8d7e)UbPIYc zg$)Wa4#cZ!J<6>`(8!a^E7b_{p2SWTlVHW*q+etsN~=;LOH~Eaoyz#1CD<{t%lyFA zFDpcLF@T9ffPKPYbd`NX=0nOTod-vuG`pirI%nQ^!XN%EuRhyn^2c&~`Kx!a(M6=R8x6D+uk zeMsHVta~P=M}f28BWRNBHSoKm)?+JbG2ej7aWvHfOwo8B_fw}ZEOgq^o=?jPF;teV zz7JDk=Aj2x$E=Fh?PBh5oI6)`yO!H^c@v@09phOVhkQI3Nrscqn5Qe-)WLN;oqVj=H{J|)G)&|9Sn6Hs+nggvJW9H;B1`O z-gG;E_pxH1TE2We$Zkq4#$jeeQ#9;ReYc-vv1}HzHSIOf&}{YkSZK;C?bRYlFl(Lf zCi6LSVp@HmJkw{-xDWA#Ggo2Jy|d@emeV(1CSFBmdqQjWy2$<*AH=w!4$q{z_X_qM z8YiIQaU*pUjZ1maq}D2e`L$K$`5G7d8ZP!`rpzj-YXH}c&G)!{sDCosv|K>2Tuo|3~{ zUWY-kxA}AH`DRlJ!QiR8!H0e%7D*}Bz!S6RJX^fZDdVA?dR-ZMW9_%Eze8*E(omMX zqN3GGkDVgr@Srx4TMVcEcWB+;6(C7upn7iDeR6Wjx%Dw2f?^=LS8a*@U|hy`dO1%V zt*>mmmA@@AD$&)}hS%sz_^vzt=HcpW3RvU@T8*pUp6DGB+94Wo_S9}YFPiJ`I3WP|oHkb}RtlqSo9v8Se z;(g4U!9yyKqj8bzwGn`Eyd`19UeuSR^`S)X3+v#~*!ab`U#t48A)O#mzd-KF&hS;O z_3TXk&RZsi{3g@>p!1XMeQ&Gjr!3jT^cEUXn?+unyw$1;GZ8;l;qhgj8HzZ)n4$Mw`G-#AnCV^#c8E(B z)n7HA`C<_g$rTT=vI}=T2E)nt3#nj&Zv0OE0N_ALP&DQ*o*dCLR?s zD`fkZsbFEJxbHdb>xKq8J{b}pGD2ea3RFb2X8152)42YKkpA=h@9HgYMkRYxf;gg| zH5W0)W-d6iREBn_b%{u>$Amm`GVU|55!^P4ODM0crsBlYoM^JgyYxv%y$Ze015O$XLC&^4p^LS$~KF$AZJ_$4e8#I(@}@&U>9p8)xjFSS?00*A|rwC}m&%abYkymG)Yvls$iDn71~~ zwkZ&G^+=>7Wt%`~d#9zoo$z^K@sNWG{aoD^Um{a%;C$~onT#GzvLm%CvzeU`k2IsGvkoYsoU@%v{YpcA z1p8GG%Chn=kyca#q#Cj;D!)K=)*Z*P-TWY_jw8fy`Z@dYNp*(y%)wdoh1bRd?utDV z+7uzk0bY#gcTkO_wxZr(rYmGlb6U>fl;i#g4U_z>oVF?ATd=8>@EkO;#Hv!x-J)_S zZ<#HskyayExs9^4#pG`FV)_aT#`HBnPN>+$xnTfvBRU}wYJBEipJSEr9aMeTq8;s#7{Oib^ij=b?o!8=U~Q*Nd$B&6ASdf9 zWRcCI<*qJQYmvK9A=kM_(wCI^$!6bc}p(10lIXsas}XpL{g zuMxyp<07^0E&RkJ3*n_2v(k{HrsU#taK&tQ!|9959;s(P>kMuJefa8u8l!$;=IvLR zz#9^q+dpg_W+>0y<&=-VcEYbnqcdn_&cm}(#4BN8W0%!nMgnHqau~Wd?6$)2CIKvK z$>pVERrNaDR$AuiAhuK!qWGG~kf)I?PTQIup?e>{P)uct=ke41zR9T>aBS)Z+w@oXSggRK_*uP=2CZiJE|K_72x2vtUJ!$t{H>3+-cm#MpYEF zwuqfZk0-2&=J*uS>QRH%ymSHUQ7$@RoPa^D#Uyy%xnX6f!SU?$X zF(|CYPn74PM#KV63tvMlkE2Lz9TvY!r-XH!QRsEY(|0nyt zg;|(cm|=0zKM0Roj9pk*f`yBljf-1CLPGp6N%e;<+kdqEZ%Oq>eZQ#rU)%Cy&-lOF z_xKRTz!_x%Qx-!Zv;*BE#KqD%?$E_0NP1gId^@^Y44VVL?^c z=5Kh=kKBI@s^a1cEBy{u#zUhd2#=s(Q&FY538%s#f)G%Uk^dlDEO>0#VaQp8S#gj+ zzk~6@djA67N0Ah`d38&L%a)j_{)m3PTi8vd3@ zVAR<;X+tHeO$_c1Jfs~^h?p@osnInL8ceTvGpXM}VmJQuH92)At$*-)SGPl){0JSU zWB1m_LiVOR5_Tdcysh{aZ;9$`#Aa)b>-_2S6is68&xTlzZ?FcShm%*GL~1FUGqj5_ zD7od080qQfrOG}6bXea1*<%0@F(V(@hB9fOeEN1PtCZ!_m#c}Kjhdmb`6eT#uoXV_ zv%aRg;aMp$P6+XfE^;b`Od9&rjX@ z9uO8cS}eLkZH_m#*-7uG^FQj@?Imh9ZTTituBiy}t zTd1qf(-yT-L2x%yDlPy=Jo}=(LpkKZLs0X|Y`t)|ecH++!V8|h zz9_!wp)c+VIRfNEDZNej7j{$u)vDqlomn(~vvHN{{t=x1aYHZv7zkEm))rS{-kF`} z-|BiHr?s)KFU8MfA!eVtYLt>q_(F3xGW-j|v6nfMFx=u&Qt!|1->D2;t={>9E?zej z3$374VaO~j%y4Ei+0p5;?ZFCeSeUJgV#5<);DjnCj3oEH9{Wh5vQ-}(r`g#*?UcI)))V{6@1E>j z?ju|S?;t*Ic6xrEuqdsGf}jM1?Gzt!4Ped0f+9{DdV}8B(2(&tX~>CxaKKJ>sNEW+ zpqk`dayX@aEfqSQfI1`-LRAyoh?L(HXkzZ|e176}8s&Y_x`H<1F}^Sd3yJHRN?hVN zhV&#?F=vB$ggQ_O+1QNeGr!LE>F8{G4r&?KVeCDtN|!WY$k)nlr%a89+!=YH3@ulR z53T^OxCF+VF+8;3vqs)lleJNt2yt*1+oa}X+M18$xA=TT5YC6SfcJdpoffA0Lfr~p zLS09;dH`%{s}54js8K10AX{@+WcWk9+9AEAk*+a3YW!5Q^;j12^wfrKnQV8}N1oVc zd9Luks>A0!_iIfMn97R{n8|F_)Lg2TR*j>$w@gBAj~5nc`Nh&b&hCB=m!#u2R(ady znoWj=7`lPZ7ekpP6=zJ!>~Z%yzD(K^ckh1V&U>tm+M1o(A17ZJX6DVX+N9TSJI~_N zu&9%@9%~`tQ;L8{(VH@F{y9oj4%4aR@8USQFQ{R0$v|-+u>1HW|oAl%4PSs_LFKG z7JZ8`%ZrGQhQ=$HnQhou4;g*FQaDcP;;%ILTtFE9ptIJ3s#ld5+!G{RvLwJOYnK$e z;F^c~ZEs4{vTP}od(&U!UZgTqOv2zr-C(@l?nB7#3|am=4X#V3Mcwn|t>qM==5W7z z%$Hp$wWKE99WGw|PRXOAu4xi?i_*~YqL9t(LMFyW0)rz&mZhv3uNX35ior!KVt;aTYdH{iDA(WGWwf`j4|!6m`>U z7?xY>?A!eA>bUmJo3p4r1bHpeM$$?x%L@HLk}ypm)u;jw%cnRxs1z0F6f}}T$sJ3! ztjT^gF-~pYIhvuZXq(Z%&@BebY~zv_<$--?Lqdw0;=rsOx4mhj8jCrNQzo0SMeLy& zeL974Lv8}2cM%)L=#l4?zop7Vu7?zJ#LWF7{sSwjJp0F-VzQoX7S$>o53*Pekc~U+ zEhQfk=+q6#=rf>ci%44;&s0KBovB+qn$SW?r>%3M4{PN6DgT%w0AT`L z@6y)e*Gq{pa#4nv%2~MJ(7Iu>%lYNDudbN$tdZ4itHYwxMX*(U$W22*%cJYtw8dTh z_N$9woR(el%C#gTCPAeE`uD|XW_nX9oLu_7T05Iz(r%tSsx{thwN14_K`5Sg)AGXw ztGIOQlceA6`P!zL9kD_q1U#Cz-L8sDqDR2imqrr%T2T$G)(u zxVkRxs5`X>HS<+|J?A(k4!;H{GP#qZYn!qh5AX#0_sn+d&x35%vlqFk3A{_s2`5W~ zj=hS_PQQTjM?^zd?LT)yG{}X>My^!Y<}0e*nH0Ti+;w+0)5lcDv)9@lC=}lv>9SJ} zOUHCd$a5quX`qiD_Nv#Si{qfwdli*){#+qUXj5p#Q?jRSLodm#2t_N|=(9A>ozeCc zDP3-PRxCjXNdau%Q{k7$eSY&I@24;JTs$wiEZ!Xqs21&S^Y<~z%szKVb3R$k4W)5c zOA+fO^#c$0M}xj)*llwM@s*@mz8DvHLqf6~_iIS(_*xhs z)I$gry808n8g$xSeTaH_eM8*Z3`qR+WmKKPkNe`bI`v1mdwQ&33$oPD1^HQg60bUR zO>n)ztcQkx!aZ?YJ=P^+@jZXsiu>fdh+17&ij({8tA4o z#-x%oizd|PBeYDATnB&hRi>RuO#AsfpkHV9|Lq5%zmf27B>bNsA&-PGC%ZT-Qu#*! zlADWJR7{jhT$ELmLxh|AuaNMk?Jo@D`Dfez5($6QC;Vsd@}KMbi{Rx?+dqSs|7`oe z3JD8fNO;42x4;htc4IFp8tC66Aw29(WE8}o`)px%1pnK8wzw?9O88(_G+6vHf(?&A zg_24QcHb|I36YQxk&zMa{#fDQu;5v~L*We)3jbh27!ih-4yL7}*rk4e#V%h_d`Cid zu^TA-Mn`_<4ogG+oXQ5Mo&5 zdrj7syUFKV8A=|osMYS*Z3-o8))6gv=?Rmzj}Dp^4XQsM0`{YUpyJ;&E-bQ_muq`a zRSXP#2lJ?~I)iEwD2mQ&1V@t93Nv6>XqT1Z1H(cQ!!-VsFAw899u;v_XG*M2Q?6WU zYo_kkdAt!c_0Mu~4_EELX|bBOd~Us&*If(`yY200KbcHEhH*i>#lv%HhqQTCSOgZI zy1~M)Y%jvPu3{F?&M=x9E@$igR-(TZdnhW0T%GfEj!T%0(>K`65ep?OToBvv&7+_4 z&CX`4UIRI1$~eO@>}vOVGqaH1*~tqfbZVgaRLgt0h3fe<9$reO*(W4zZc1W??)HcPbf7O~67kCX5R({29O83mF|7P~Ygj=glv>1Z_y5xCS06#5`@?9x|I#Uny!> zh_YOkJ25j;CwEV`j6c2xNLA{cd?GE3yYcN@?GuUfoU1eYkEh8Fi=}n5_Ori~9;nZV z_uU}kLR{mve`M!t{`Gf%Oc+Aa)DR|;dfTk-l7i~u`k*PPoV?)Sk+nH)I~`-c2P&1) zSQ^ql2{Hduu#LlU+TL zP@swv&E$mimSo4A_ue?gXe#(6jU?Is>w>9gBcb9{4|P4LdAI(Av^@V+Q+=a?bx3Ytp||2jHy2r5dT z@_)|zMrB+!xlfs1C(?#Gh3wOe|8{Lj(v(TWjD*M(FI{fT*-dqEd)_RXyp>lLU-z0@ zxO|41rDn|`n?)DGouSfpiwfdBuE_cBX^k3c>mHw`^yBfi)v6Xd%oz$bZ^$sv4MT>V zPDUfAPeKz5(%|{Fk-^lmYbZ~?vEJK&=WHvbm=}|3D=3EFa$yHAO0}&Fp$4Q*CPA;*hC~GE;PBp4~!el8(Mk+w&8)5fhf6%J-it4_L^N#p-MNVAE2DFz? z@FQwL-S6G(m#UACx$gRJ)Gy@a`X_a3i?3KJR+|-Rm6Pa9BsbKvo|Y$<7E!hvI3G(U zy*i7+Rtc>b?t&yQ8Q5V$*CbaS`Y%`W*fj%rjx3_4#P$)$@# z`;m1!#>|>ososA(7+%C@PQh+2q5DSEGuu(n8@kkBnd$t+SGq=tXO8-MA%uhd?!0Riv*pzFF>?(!pkG0 z!%1^UVT4RlKO;3-+pdGu4n+hzlTJ*`g!=HPShb$*q5a(%GN%1&Al-ZFikhiO?n=bY z{s_rV5^uabjJ%N0WfOaY+@VlATv7gnjR%9QtMGX zjo9;8uZ0+#{k`;cEl6`f&~8HSx=npi6}RJfDA|%9tt$r2{Z%<B<%Fkpdq_MD4=sKn!G%uK%cdJI24=hRwddAt0<;L@o zuK3ZoFhxHI3MiKy(>C|)qkq{VQz%hU5NL(Uge#kt3^B~eNK+z%PMa&sg@}IzN1KIM z^zqQ=FYhtx1+AyzG1_9>@#%kPZ7W7$enu9k*{rx-$IYQ zv|9};hfS%{{kM%%PHpV&EuE?fvv*A|9+;(WkIT=K5A&)i#CvoX^H~}1aL>=j8@PBq zVsfV*!YW?-5@nNO81@S@qm^bCTZ{VsPPTalZS|4!q_0 zpk}B_iTylEM*88Acjo4W9y!g%*n=QdeOH|L2Inh|7`6GJc~fuw?DZ=AT(w2l`lyB4 zub0**Ej!gUTf|3q=|y;LS6`(OLMuL&H|Ay^xC(VvVANS0jM!Q>o!FnnO|r>;m}{!= z@|4uxm_4kjOEfE%r_9L6?cx!TnG^pOba3hAGd1yCfV3{Fu{oXN_<>R}LT+`UTKS=I z_n5U{$+Q)17;8Fd#6<|Tm#i?&F;>AF@yNB!tH`VIiRWL>5;pZD;2!Lgieip1nOVHw zmGLI6hDWu5uIQ|IJ8)&3M_4&F>an|A2;mItI6QFN$a;{N9hcdqv(?zfcfJqnoPzqT zIG^%0y#6ua(*nC)?x6aTG;7N$xhM9@KOeOU+mEt@?)jT`p!yt&C zVnhZP`J0)^l_~QZJ}k#HE3Y1|A0#Yg*#!f6b7{1FGMQy2URmxa&+ZV!9c*_KT&f6l zio`r^=m~yqr_Z(M|Ix6rs2*DrKP{7({>i&P)}#Ly@1Vc=@NYi+pYWkD3x^0RxA?D{ zAGx`?M1+NfVa&(H!@?o<*PB~^*#5ft@n3BJOFsPBmOn#~|I(Jf3K@Ps5B5Je_g~ub zzlsl`H++bIbPEpw)SJz%H#=Cr#|&W)g}SvYp}@f&3I&gd3ftTYiyq!Q=nC%V##nfm z24I<3DA+jUs4QSyVI@3#eM&Ug^Pp~?gM|QxjP&D{O*jAxo*V&@1qoSL30ofr1paFG zdnztU=>n?=UigPWgIE8^fh})}dhlhyO4$BTu{0_y+5oYC7C2wVtiKg!mLt!&`+g-L z5hq7t`iKRlPh;vH^^g@3Z|N7*Wzy}Is8c^04R8V0@H>WNsG30tx+VWycVcu9S zx)-Gy6!OHHbHS_>HRN4!crH`S`!sM-*Mbo7%$(hd`wadPq02R(7*6%OfT%gH`>Edv zoN2%pt+q>^W}cSbOD_OkPV%^~r?nA5MK_wDdRDi|5#6dfzc|iAdzJs3oo^+EE)1i` zTmVx$?kQ9!aC5&=0ik4O1#4Iw4{rre4f{iHO~J88vxzbeGWbdP(+GCRC@5EBpmm;F zbH!bw*SGvdy9suHpxl#yj96~4=)3$dl~s5g%eN%(W^MP_E!)JPBoE0LQL#Lv1(m$f zQUcqIu{pFD2`I=u*A3;=X5Q{L20YCNcqbUqSSqJ?IZ>8g&I^^IdapAe(|hg^o=Emc0)6#+C$#+PF}Hk_dkVS?B^;oD9VSsqxln z7BNL6MBya9honj@ljoe}<=4^2Y*RkicQ(GK_Yq@-aGq z>Zd904y5bZ^|h5awor0vsh<)u2wgn&G`_oUrBKt|Wt@#C=UMO;4BLC?wx-pwRDUeT z7$CCU;|9vNcs}@Epyg2)$-Lk82}`iG;qwNs^hLtST;{t0VBZW>xaR}a!KMEq&>-DfAmhNLS&Wb&W9v)Bb$4d7MxC6n@J6A zPMF;Hp@uIc&z@r&uZ;KzFHPqS3UPbnCbU~lTs|hJn`0}Oc}c$X>Hf&6bGn%t7f)pm z+S%!PlN@h9&i?k)21ScsOHC)8b$6p4qgR&vKCTt+Gu2iu#Cu9e1g~Wx>MMi29(Al* z!W+KuWYk%qkh}&4A${T)Rl(X#cHIkSWr)R6uJ_---wV;w+YSP`mDjb+T{=vdl}%38 zi^uHCC-Iz1$WvVAO|TKwRCD;B^w<}_uV*jl{GFbypk~-;s$|O^7x!5J&#TGF@qL?w z@qnl<0?MN+oi`zw1X)@plOaAqB$h9NoZj6>8Ej6m&mS2z^%)6`@bvUt^K>qs@M?4% zYB?I5?Nj013`}kx{e*+#V?1Cr7F(`5#t}zR%{we8@WIEH6yCFH)-Kh(Q)-~tg7X<; zyWQiq54bFXuQ^j%N{3dwEvsX~9@)c-2>VAFlDXZ}`F(hIhgM$~Kf0aoykPI!WlD%k zOZ6Ac;#z9-a{Mk<5_Rx$blhX{T2A?<*3RzGM~`cC8Ll$&UNvzrS6TVpjkkJMYTuWd=#1WOcCmsgK7S*yevKf z({G-S?depp;xcCey*63p92J5v-NZOCKVQp>eP%MWB|{csFcvP=gQqIV*lY*MJQ&$d z^#O#05{N9krT$T#qGfRpNg(+Nb6uvq%VIRP1PGGBnb-r*1ew%LP3b$IQI{LtT5yZo zeYPd0H!8nSH*I`#N+>4`eo?w_!Li8ix5OQN;M%zp*cwjw9u@|9yFs(Nm?PWG^fAls zqoC-((g_W}J|X%`R8)9z(hw9zk|Xm1Q1XRo)xOr#H%d_XGC4UZ(1s}NPDx~BcwyDFa6Gm`v;KxY$h`fEn{Yr+DEz*t% z+g$CWVjHmC0oGkTLhj!zj>Mk2`C_@uCe;TW_>N46;~}Nn zpcym0`rWJEEySYNrkd1lTJY_{{r<8^t_B&$tl4<+YJ=mktxxR>57sg5RTxx0^2++J zvo>X8j7{5OP;!>=F83mAKJ0yverYZspyP&N-fOKQ?Iq?Q^fEQ4sKPjMUW!-rT~ib9 zdB{<7Q8XcE0d?m^knh}qod>n9&3If60{s{Jh-u59GF^$6YQnI`2_R1cmWV2;ZtHRC zavpY;%;%m>qk3FBU#+|rFAba$D$Zi`UrakNgf%!t+f*2uoPcQL+HJ=8tL$yWBaNT? z-Ago+E|=s_+_#K;--dxA>9Y4QhRKr8wKT|_6}ls1q71q3{}MnXz)%-zlT5b%n#Dyv zlO7)Dq!i514$u6XHX*h&SU70V&#N1+in_Dc8PgfMedltFwC6w?qpN}PS(Ja@8MqQD zIv$Ba6*=xVz#~BY^@^H$RH03$^H#_(r>pw(OdMnc7XV=Y9)=;Z{o4-Xu#e4M(#w2( zpBN6x2t|lAFWdw@XTiqtt-s^=Eh<>bR)~q1sHH5TNaVUoD6*d;p{L>(eAW_(hTI8%D z;7>2)k#EPUIXa-U8;_MJcoKX-zH$u|({tzTGrlBS=eK0LC)=RllPk0(sbemV!ZA6? zCH{$aXm|Qb_=27HUXz0>X=b7~xbrdAuI>JdW4Z%!mWb&@^}_Lc0hCL@IYso~$h&0j z#8el7Y2*D{{6?bnq-y_%y|)gFYHi!bhYkg$Q(^$=m?4Lh?hd7;rMpBylFr1BUn6QFDfwx2=Nyr-8!h1gW}VfrCWru5qYYP!5r)qIawd%j`! zUWl9bu+uI80$?Eo0O9ZDFaUC>m1+~+Cxd;>r;16D&ED6~RMY!f)GVpNH&g~K9TV#X z6%xg46tXv1#97X4ZWU1zDs-@j$1@2S4}|NkMF%%8EnHFhj*n`=pBLf-DgYB%u*iP2 zp8+VlT6nOPql*9G7w_Ny7XF{!!~9D<_@y5F8}$GpCdMhk`K4{sm*uToEP~KFV|Gqq z7FMtryXgN-$?{0 zaPUZ|2#CnA*XjWP>G!(;P*DNea2f^XT0QtC9(?Qb1bZzfT<^rdB*#Jl2?DVdaljOm zc-QK|b$e_8$~T$et9k&!gdQxYh@=O^f~p75j!%Qw$WZ-2|2YosAJu~~ZMj@b;NOo* zdPgB~zbp(8Sy19YizEdEz;hKO(!0g*8Nhr_Q-bRr0A~j&sh5|_o32-0#T}d~FtMI7 zwX-DQXfms|K6t}6A-P{+H4{pDp91t)JiI+f(N8Pb`!cw*z5yXVdCwYYx1jH%JpCM5 zC4LX{(F)}o>TC<4aSyNuIioG3V?Eh$;(iiqiu*m7yA&69mlt$Ab3$eKCgtG!9Ydq2 z7G(n;=y0muv@O*KK6dR`@4b{STDWDb^=!E=C0saM{(fH4 z=6XTTTIYlq#m$0e*<_+ND+_oo2d@ixcM$kl1jl7^7xy1|7U(Z?>GXmmG%`St4zWkO?Z5V--$bDJ~;CsW|+mLQKT?{PHjbgl<=?1fD zD8V`#h*`h!))RfDoaA-V+0%UM(1n-F^_p`HXgodA*8)NX8^map`XONnIvSiGjYe3F zgx~K*z0n9$h56Iy$!e@Sm75S*YlPQ|ExkMX0%>>hB3CjS@z15h3M>%0I!JWX)Ar`EE)$Ly&Nh3v!1EEbLmiaW`gdl{|> zVtTj6*k+VNWhUU;-yKyuM+K8!iT1GL##s_-n?RPsE+=8{r?bX=kq=0BzsLvU3Cr4V zDr1)1#Z4;;<*PZE^~>+}g%H{5m`AU#6z|Ck(_^*q5wR}?NTkucM=_5(D{YniDB^f_ zewMg$xL{%@+QsLQrT0QlbhseTZ0M6i@vvzs)3dNGOgRnZe$j4lI=z#jy{?{&UdFP80ReTGuxeQ(=Bp`1BH>eEJiI5)O+_{ zIXRY;IaE5Sz4C)mPhsAt!4G=NlrweZFz)$u zQ(F<3;2>muTLTQbGhd_XEB57B&c2ZTny(51(ia5*q8(UT8Xc^fTI412W2hqq)gtxq z+4Y$?=`iI4c8iy(6lgwbHTv+z7`O&F3iSe+p2pF%(lC-yn=4_D6>7N#y+|h5V&XQ)*2TB_p9HL zdg_3vh<*%wm7wo10KeF>wB@jK~>N6n050DKjipqLS6jwVqZth4$qq`Qi90CC( zv|7Keq>6&vB5fr}+s?k!b|4&m&8^4$HpF)Wo9jLyc+wzamgPggw~ZKF(GwW&($Eo* z8iOILdT-FYHS5dXncGAVhG@SEN!XG$!(aU?1_2x3IOv70AqN?+I~|g!WKRvf*`6 zw@f22AnkJbbd{*(tV7VXIfJW*S-|t6orMSr`v%Np@6{(~6Q^HI%kK$?4j5hb?HT0y z89ajBi#_W~q;2c6^@J~7HJ-n)pYd7T)gYU=8;gQXl7>eT#h=VgjoFrOA9U=7)qeUk zExT@8nASK(+G>b{XJYyVO%u*@mV`Vt(0N)hQRnWZ)e^t%z(9h)tzEUgB|i8{X`7cJ z$6YisLibw3VC<0b{gEsRwdZi$%#SbE{pLb^c^%b61Vd~DVPAV9y+%l$U2~5d zauZE%aW5z1Rm_A>^bMeenm_R^v=f_)on*fZ)UC8x{|v~DDLBnyv3op(B?mrl*GVV2 zlhTj09~$iNL|WNI6lJCs(!yJM8`v7xK?Bp|(p~r%(L~*(gEvpJZn`?>T1ikhh{AJ% zU!fdPQS^0gvXq~&>N;@Ve>(KOQPlUt=5$zvj@ZnnwfNvH<+i~ti&^W*J?s$4Qcdz6 z21XKO4Q381=8L1ez{c<>7++M=vLF;^|F@3R+pq7~=3tYJ-!)_UXvS81bSZew!gafh zp<5}GAi76?zGrxXyiK!Q?am8Qik{F;1k--Ra+RKzBrKN8aICA;jWx9maHp>mSCN;r zuNwVI{f|oxbVCg(u%qjdRq{Q0VW?n|q&Z3Oc=>)_$zEZK@j;S#RZOKOli*#oz$Up~ zC3#{?EQuy3f;h?62ihGSF~<96;4WUGo{Pv}jpTw#1xq2L&K?vbW2Yp;wm3|J34R!b zN-I#M6(;70X0O3Lt>?4ZLZ>&TjjaxQulAGqLJb>0qWt&T$@HGzvMyvnhGl`l1AD+S z?rnVr(v)PFPFUTqdLJkYaNjt-B)tuub(w#c-48(40JYbbx&71**r=2ZL7%* zJif2cj58mAoH)iM>V|!izqMU4kBAh=fP5&1ALp*@|Irbll2Vdvo_#qzrWxk)3rhhw^AL7AZV*jhe zgY4_o%71E|g@S~PiU0%c@cg9%^zUQ^1VngbSU4mY6liHWBD6XI4h{+J+wQNcl`)W@ zK2^vdY!t!QKt-?;;rXF!szP)b*LQ|JQ6(W@A_)NlOupIp;7`C z(sc{yd2IaGzzAe;>X5QQ+OP@^o{$p79|eU)FKL{IzblCN-6kt;@6lE!r(kIR*cxO%qdPo&2GOg+7_W|jDg-lRRW9%dC7vvELLZNszt%Rj{CVP zM-}06>!d6k?kVL&iQda*td`=Ek`+~hqLQns_oe6x_w^fZhFp9GRH~Ds!JSiRXa5p`02_fh&#R)jM*FjOm#+`02T5l?1L%$q z`gr=@B-L8(ZM=XTusz<@>cI(Lwj+KlFY`WVw<0z|EK_X(JDR+;;D%5zon%CWv6vWb z^$A|FwbbauUOzY6fHpKqCfkEaz%_iIVMaA57O~1{FqdsuR+U{$w4I#pcW()St|^b- zT;a^7)%FpofDW2Lgt!@pL<+SwpMOxh#;i$lpv0cWip7jBu!}NvMG@mu8b#tHcPx)Z zVhr0UaoJ;P4V%HtGTKYM<)fYvj(Ka_@`Y@U#r)LaCyy3}(^7K_?%>&RzusuAjg9si z-V(cVMsD93voaPCwhS}~S~$c;O}A?%mv^LhFQ$PYLJcKOB1CuAL^Oh%J{2_D$M9M& z>)coE6qB^0*&Dqdu-JOhyRXA1KwPcASrtm6W+exXtft-HYfw#Z6o279ta~Y3%CvK& ziPP)6|A;3x)Zg+FG$`U-*3yf!zPWK}|-W&2p_PtqkmPgd_ z`e(sadxdfm4UEh~rpF_7t~jL*72DC~mVM36%st7q4Gas}kr7(qrZy@CPpR3}eXJ9$ zbnbhkY>5eN-A`JM;2o0;BCjf_RSw@9c5k-zHNkt2-#Kk~U9GGEVejmL) zw31YAafv(0!OK^QiC^_bZDU#`NYz2L$Wk-UvSL=#(a=U8^VN^f2YwND8m)a+Q<5#w z(&vFOht0d8kD1u_=Zt}*HdB^eOl;9ukJvGG`MELTF+S;A>#x>b_AmM{R%@9>r&>jC zK5a$+3>Z0gA2-$NsU|WVi#Fwy)zIFkeatNJG+ve$cdu`*$7JpxLaoFc-RC9_x9Ld@ zLr-DCf^v~BYc8mqt1+g&UQ>s0J>+TGvh+lf=D94S?_y}1Y2C>}L!mH0Yjb#LWFe&* zx9R!V*ya_M??Xq-m(j{zqxVNtyCO12$vY2=iF~G#IU=THjbl1TOeJv};C0|;Ic9yh zs&+~VtD5QP>K;Y2vxmA=+jBClhzu#!(n=0{8%{eEIE>3mAldLJ2Raj#S0+lwO;0E* z=<>mwaLupW`UX{?2gUW5sODq);$FUer; zWZ|T^<|m_(HdQSNDdB<)<9STzVq41L7Hw(WnvT80n-;X%P0>BE6rTZj;=OqVG%ni>d@u50N&dM?TlH2-lI~>l5=z1JC$9Z z%&4aef-wgYV_~x1Q&I+NU~pw%;MVaXo*!fcPEKnF`O|eTS3y5wEoFzJ1k;gZ=DphB zb(X+ouVow^HYL-iKEUl8RlJGDN2GWAowk|@?eXn$(}sZtM&!{+J$DUiv{{uPq3Id% zw)2?{O$z%j9D61zh~i@~?*kWN!MS6Se0-`5R}UPhg2!Eb_@&&jl&nHRB`V4f-(`ii zuGck=?G9X6m!WZ<`LD^(U)}OAOOZ=vp0(e7f+o{ndeP!&&k$-`x*FWyvo}8Nz9!5_ z<>P3~s*oT=Bo3c}2KK`9|D+`|;J0V>YOcgtrfb=dZA*4^Q1MZOijG$VpMl}@scwP5IDbO25wGvaC?B5HUVL0t?nhkRjthNFkBComgW?`39rC@U ztQQt;y}{)IYl5}YAj2FN`P^zwrETS2eas_$tpI22)iv|Iu9>@C^y8u2XmqFYvJ#J- zWBDDd>p^abm`}zI3#!M|X5CzsRotV758f3z;t5(#r_;I%xLtJz=$zRcaHsMmd1Upk zSgDC@Nhh5Z@Pu`*RV|?&S6B%)dC8IX1`{6x-VI4qJ>iv~GJYb0q<$J$yM1bPW!b?o zZN~njxX92zL-cX^wq^XZfTZ3-^_>k-QKuTZM$JtMk6nN3E9o>3(K}ZjIJe>rvrZ+jU;ugq+piB%R#4*%1@WSX?NTHls!%Rn6bz{a)g{&92yI(@Yg=ITF4F!Ew3axJbNj>9h=9xfKzzup zE8T-44+}TMa@()`oAoZ<7;I4h)aik11KqTL+ohKw{i*V zZcC^(UdT7BCEVCfQ!&jEkZp9>?FLl~0 z8%kjA8llNyAz>Y#!POudAt~CMN--!V-Y`+k?>@=NV0r*~bRbu@0p(=mbv?uNvEiED z_3cA7uckvv0%eZ|+p@$(RW-Po;U80Od07S}Fi60v+tVXRC-wjSJ;_p8gRmIGS z<)@W%q<>sa!`VBur`YP(AeSzhU3EciJxdizbb3E})D9y;8ds~&OB7+t3}h)xNhu|$wkniqMHGBdyI22MTREm6C7p<*&9_2d7!Mb9Hqk6RpfF*) zpc?k;=tk61YO(bsK?@EuIaXWT6rGQR`2L(3SVz5VXsK!lTb5j! zf>A!i%UI+w{`(DH69N0G`9Q1tgc*+#Gu-ApUo8=5Sx*(v$2(J4at{^UUConjiz!ls z%ER8OqGF151R{CmWf5g|#n`uBCHka951Lszj4LHSfxJ|_QZz3XU?j4uh@P$_KA&2Z zo=MWYqyqO{j9SY<37I;SkZD^EPeBP;6Rx~hQ(+U!j5JbC#706LM+t(eg+HpL5^<15C|#V_lg3vM)2T zN9_u6Oq`oz7{_UvRmRu~gZU4}ojvP6%tTT@oOzuXir>A29ifz`YsytKm^E=B)dKC7 z{*I~)~6oQU-JsB9PAaYu!is(cyDXA`zNO?3zy5rtP zrk(cY=otd7YCC~lho@5YBhsqV?=`j%PUAa!W++VTDy?R7?r(PF@-aoLu0`dhm^jia zRelsK&MAJARh=IxZLhRiY%UM-)$b14Q<7e?&5DSoJWwRCdDq$5qXY&$*xzAZcpsfN zXp`h%n#;b$SU6Yppr@2*%rMJJDkn?j%E#7+AnyCO1E%U>?O+`dsj0nvnX+C-c$9b` z5qTgtoe_AAtZKh_M8r%mLjr=1K|n7|MUpX}zUckfyV?RPshHT~0P1d=CpA2Of0vwh zc(}eOObDY_$z9Wmk(_JIh}*S{&`umlx|zYej_QI_6FeGCo$xX5>94$9U-_tr!kvV+dypG0Y~G zPGHJB`j~lYx$dgW)oof2%7xDW?-^@#FI^dGn%tv7$&54PmYRaYu8K-yX1m$Cl-s4a z8KYvEA{A#F*(>U-cbZrCDdM`yX)at$i{6r7z1gaELvOJMH%l#PDXpn$bWvvwD#@=p z!xq<2aDDTQH`6Nm++Lse#%TggN{h|1ZmyS1b(yoXx-$OzTNxWN;tyfsA z3ltZ_BeHX0MzyDvTGN)D$eqL~>* zp?)W$a<++LS!=Px`!jo#PgWtPy^k|Gc#nDg(ZfH2zCFw>p45@6Wj|owney%qMZe(- zWp%=ra5#fEVtDNa5l#n`i6gj|)_VPj?|px+{~NcznmGM(pt1fpj0_^iCL#=GgM4Q} zP<{pyWfc_@W)lH%fLYmo#>l?K3jS^EKV)Rz=KJB?`qy*$S()vZ*YU%-^)Ipis~H(4 z0P_!SsZRlbKdiz90H9u}NMEvNf4CYULF;b6^lpNO=EP9G?}FyM5RhOn5Rn0xC?F0l z3T(qx95GHvJd||-pq+u?zAnp!9)0bJ3XcGQHu1$o#L@#JDZT~@3I8$u72nA(*8Kr} zu9~t3ljl`1l{iEy$jn|8&5}vZ^#%*58Rsb<@(hX+@Ltg1$YOomBc_@M&Q)9kC0fSs z9%!TrVy?u`xZcBT@ngY2ybVdJ9JerjzxXh-!8z(xfm(`8S=|Yuk-GH~MWQW`>g_^x z1ex6&A!3!q%y{{x8#(a?u1$bS+cfZ^ZT(J&8fdX=yy%Iguy6$N%xgN4G+H64Sb%Cbu9WL8Lu5Dwu`0 zIXCFt!w;pf1)D<{KuW8ms@Ls>EjB~Qx~`;)EEVaS=M0ukA+o4ZFZUR%Si9%KM$MGP zI^FuY_GYGBMY+;IECD!DoasUgq6B6`AIcBkchW`;59m^{rgS+Y$w@is9lx8`p1b06 z3u-G&jsH;9bz3riR}cSWg(;XZG+iYwxQS{>mS#2^3*OzE4f?~kxpC;8OnSVB;d`?D zOWb=KQ&q4C_|uXKeTuKe)P+}-SPp{rna$o|qb(QWt#P9uzMPS^M@niYYb6~OJn}Ph zq#nizyd_bqv#vDn0mDm4pz>)jCckmCvuh@41m8#!PP{AuO8`$$4o<( z2iIx+cyA;5j?Q)q;w{||MK|%EH{gSQ34_0c!G8rqqGD`ZT#z4P92Ywamk5UthZv`j zs2GPJ%THnGYwQm(?k}Wj({lN#lr9AX8=qLED8=35H_V@s~9KOH4a^Oh=Bdp9^x8@Fks;TAb4_2 z1R%6B1KJ`&NZ*bE`;R~rb1CQ(Tw|^_zj$Gd|6ce}J}6vjWFkAjTvBpqvKr@Oyzuj9 z*8bStNa|ph0LnXFFqol6SY@v*W~^isp4lbAy2ikb5v{Krc{!rUBYmM~IVYoh z25z{Rjm=;JzmieT1YJq76#4}L|dzcql$@0cVi;H$QUz)^l@E5>PwL&ZRE3z>h zb7FfgbUeu4_IUf>j*$r+AGv1^S40u3L|{XBqY`*y(CVY&@oG%X=IPMETK~YF)!MY* z&V+3Rc9*wrx~RBp0oN_`Qa`pKRp?UgnM%4l^$0Y?3$S;H-`7^#PIoM=l`Qi)0TiEc zRjai|-;1fl-l{SX(l?=-DuXm{^zryaFyZdIsi34rKa9CZ<+=!0p;bAepHlAMifAEQ_p-u+bw^ ziN|(E%8%t#3?7>sKn#Hb*Vh?t7fTyUBL_V)7t3o#;=%{~GC4PN`}$#K=!NY15C?NU zpy2hhl0A@BAQQH>Ga_SW;$SoYv4P1rAxt0+76_P)feg$7;$&vwWCpP^vVgc*IJj9M zWZwo5`fO0gO>QL-v2V}y%YXA9`)_gzah=_nWz?>kEs33$D%qhe!$SMMT<3&YS ze%hkwTde5c#{NUt`8J=>-_G|F*!dPK{I{|HGq7{r&gbiZgWfjsTBthKU;OT*}4RN7uYoSgi2q?dYDd>T48`+d9Gn?NHLnB%ql`wiBf%Cx51B*E>QTAMVi%#6XnB5*mPw`ghW`_#*x>tIarN>2 zR#b1ZOL4dg*m9z=ZTi?EC0(9y?xemEH>;3TLFh*Fq|^cy+CZMI!aVb-%ewJ=e;*7& zB{xNp^pr@ygN^Yz?6DIk91We!sO$soF7?MMq>9QT5udoKcW)wHEGwQE*Q;N=oE}+x zGvrpKP7=%AGdmZuSulRdgaujNB|q8TC`riOO{XjCQMK4h*fu?|y}&gzdyTEomzsmu zWw%;POrr=iLsU+6xCAlbJvd8s8+LhSmJN$07W5)l?_%a{5KBwJz1|opl>``cHpRFA zp*%Obt<-#>+L|phDg{#qPeOXv;4-T0o~;030S70vVT;rrIAJ=G04j1x7vg&vH25Mc zh?rEgW+)P_y@cj>0%GrKWHJf@kdtyY3JRFJ*(%*zba#EKb!!7!^v=1amOoOelMp|x zPn3;#ti}oQCHZvjTtURLaEV3jcsG^07jk!y|Ni3KrQK9|gOc@qqDJ}pa)>}FcnJ&L z$a!OD)l|MFBTI4hr9%qaP+sYd_0zgBeDlu$c4vc|DF*0iU7SEjERe$5*R+?eZ*t$` zpCOgTFQj6$vZwftbs|Rg26m=44yM*tWY^fIr*G}(zz4i02VcO}(uNQCGgSZGfwHnc zKh)Cl8mhlc`$cs6`O)?&t~N%@N=Ek9j&=q{N=C*M*TFX2!gfY_4%T)m*47r^@m}H4 zztibN+1c4RKtFUkE(oWv7?>T}eO*|POPKAal@pM!u|IUWzr_ASr201B51sBW^Zf*= zzQz8~>HZS?KZ8_I&hc$r(+?hFX)3|Ig;w6(e*0wM?t8wf@cVx`2P`XfP#e(G1*G=A>DgkEbgaURj74r>To zZ+^blq9Sycg@}3#VY-FVjsW*VLLv5pmcDKvfaLAMWz)2``=|Em;JK<}iDTkc6m~d4 zu#C{vqw2a33$->KGj$AZ42PV>R;%_=sd!FTz-<>L zuKU2LH@1ZpCsj-{*dyI4oC-IB{P_$G{d^!$HVD&ISfIE~ z&i5NpG!o=NuvUh!P&l@$HipPiv^qw3^O?1$XZG|YflriWj zSk1s96bHPnf5(LmEV}0__x=L?cz%3ZzAzzH*CK*mi}Uy;>0vFusQAXXC|KSj=W$^& z(Bd#0%~tcW_$m54>5|71RF!i%ZMgqMl_M3o{rEHBc@3E#{UH1=)cKVi`d6p}Vq;|& zZR|fpop1B8|LuG~L7i{0(1h0C zypI3XsDll_{zG=?IaD$Gk;C~yh)}K@u|li${tP_Op00>U*Zc^|>Y!zO-^kN7Kf;D8 zc2L~GK>`4AQONP2Rd=jkWVvgA`p&VgTdzR-uE1fDgA{R~{3!f2P@ff>5()W_z|*Jg z{rL4t;_wH}&RU#+dIU=~=MMHmP5vd(M8BA)%1Q@rYo0+q8mNe>az?i$2GHT2(yf8?tetkoq?4_liWQgrH${oa~D1nh0+$#vG1$Q3_8Xg%2LDh zTqP4c&P@_~+(DjIZJvkrz|qUgw}R3ebB(YgQ9o!e6ea5LdU`(N7tJ6O+(l$~;p?~SJ99;Sbng;Uvv{NhF4p1m z(kbJJap`pLBTm_#^wpu5%;#xn-#OPvv0pMvj$h02W;nc{S3A}Uee{0vqQ*VZrzn!= z%xqzMbs_J}xvLV1g!)d+y*^;YC%@oQ3)`xXK3nfzjQMp`O7pw-&f1yh$!KFR`8EFH zE58yt|0baWVinKW4T!VHuj$)$JcWa`P=z^h8$mGMgKPTzX~~$q2d=5C4M)Mq0UgyNB)Q> zNQl=u;5B1`gGYvkHum}!0QHK3fk#9FK!F1r2N#(fh=;FF5e`;*E_yeU`jH;mZTbqR)|waGu_VgGXOjw zw=vLECJ>RuJ!R6k%}ixknlykP3Ar~0gGvT~ix|YeF{O=t6*tvXO|o;&!0AZ;42{cp z#h%;FFHV}A2o)3N4d;AtWfqO51LlyWp#8bo8!z0FHxu_(YH zd57<<;NUrvd-jTBHkH8wHg+Gqkksi6o|c_`Z+fH&2MA~D7QzRpq#=sJ*c;#J7ONAE;B+#mefw6a%r2{@v5U64 z3quiO*Wq2gP4%9O^G1yZsr5w(afR*2`)V?D@=Qw+8Mc-&2dvO#zgpZmMG9t;2`*Bq zY`gm=kxtN_CVe=Qh(Wb)vI^dnLn1IZ9bDqW^jlCdK~@&tuXkefBX8wbR0EE1sT2F9 zGg0Rl9R^$rJHuva=KDDD;>;^Th*CL-*TV*{8l})?Yb-p+?6xayBDtwv-YT6x<;IE} z@(8K=7RU4OF>83P*JBzn2Nkb2PiwS)+*6aPQ#VL;LLv))z15zkr&nKJIB-WXt@{FJIt#YK1Xpa#0pyhx|K={OIeU;wT z^_4xU3031#9;*6|wCfLT97}B-`PN`0GLjdlq)I6ZlBhSW@YG@H7fh$cl!bhxR3lWD z>FwG+19}>R=QNaDPv$-}6tXqUW$oL-9iP|Ec{ygDw`7$hGq1iie1AC};>-7X{kW-J zehC=slS~TXSF!TAG5Qi0Z&+1cr*N-!@E3Oe!p?t%oh%>-Cnx9!c0xcbV2Ge7v>m1x zn2TKu^i%Bo5)1x;oqvh_r`Y-RTz+8ZU*`K6c7Bchft`Pe{a=lp_yGJrur9a1U?&nX z;#bb~J3NH~Ae4$hkrS%lK{dSZH0?{XOW5mfm)Bky6j1a8C<4K(c=%Aryf)H+{SAPj zMR@=?1aeGxM35jB6eod7e?-QmMm$?PEE_$n{E*Jcp&sRcqXK=W%JHMt*1Yg;O0zB; z5%I;1IcV6q)_#Exo-r&BZvhht#8g^NF!FO2D zm!lP=t|2J636mqWN+=CmM)=GW12FWu^oi_X3vn_BF8y&B%!Rpnt#($>sZ$5aX~fVh zw|lL6yjUqKouRnjSjJ3hTc>J+m!KUFah5bw1^ujO0O3T+%rItzI9_-tE| zm4DWKdPYYc_oTROnJ7SQ-bR6T@0ACNDwT4&sM-jB@l-$iir3u%k7)yU~FG%sphqgfw>=Q1AbOw_ot~Z{UqZOjwu|BKRAm zh(RrbL7bc-!qB2~VX>c z`h6#QUjPl-xEcNnzWo8-pcUj$c>CJT`G=wi_q7z`+6oFl4#dVmfoh5HP)Peu1EGQ? zR7-?|CkJ67AS!yk{v)EzrxB+nMlG>%^_d#Lc2FeZ!o$f#liU;|(VM;#!W(am|D4T! zP)7(tII^sj?U%O`aBeo^k#ojc;1-%&OH}vR*!Z&lmIf~tr+=Py;;25qxWEw*i$Uhe zXF&0JK0Umzcs1~Bv{_|ORERdP^32q9{KS>(Xr(njKh{VQ_cNeyGMV*8*oSkb0?K^T zg1p*-y+a8?UTgebc+vS!_Yt1DH{Zn#%^(C1T;z81xM=r5D>@Vt#C?b%W0vNk59VWd z9(9qv6v!YCqVgNx4hzOlqN{yQHCIUJGi~!}t50!$;>nX*{U(mv77wJt5_tid1gjte zT+O(AaS+jlST#gM&h^xGzg}jar6|}I^No#ViXC(cnfz!XF)L&oW0}jyoyXNQ!WW~`4;VZk7UE#qXYVua zLJJ?V*b{xK*4qg7*zYvYC%>5FGr z#Z7s(9K>7$DfB2kpJaqabV}$2D8#MnUd55`9D9ET1niB7hGYR5=JqtpF_*cAb*9%h z3vwkIY>tCDI-5I!xv6>2yVs@hBcA)sRf0ZDU5)!PGC9`Zq8I0*ipz zxS;JSzU7PrIYmICP*TPL5`ln3er|97Etd6fWB(yceVgwGtNZJ@{Qb(PZ?T}iJ(vI0 zFl7i(_yY?IgCYqOe0~EK000FJ+CvZ)+DqcvfZ$KvDqxVHT?7$P5Uz^^5#Ya|*0<0v zMS{@63}j4sx*N3lii%7kMi{ntYXVWg zk(8h|qvGI#DaQ&&hPG2o0gVRg| zNt2X*yRwm*<8s}R!!d^t)+k4!>yX&X=-Dtu3nuB%DHg6SUrW`kx1;wep3;4_@!5P; z(BrceV``-lv*A5yBWaI_d!dP^#2ouU5OTt4oDhJIs(``b>4s#RpU6Wv&W^yX$Qs`% zg6ZCZ<6UK?b`%w?u^-HB0Fm(XJfuV@_b5Cs;;kR2d2q+G5%4o0qiig~!s*u1 zLv^-$1-Leo59z!V`7=di^rPh9;ch8nV9bV0pmn>c7`VwaLkrq`?vf!=+AJ^h*EMe! zj+O{}M9Y@E%8|<+XQWyrh;Rhhk$ncN!>Ug=iC;~)J+GeMTJ3$BcN=x~HuOlArVEI)LPERcxzdk4N7?ehz%lyMXc;5Z=>TyMq=` zTWheZ=I!=iW@|4>rX|4k?K8Wv2eAUJAY$n%OmpLhq;@eO4U;@comHh1cME4NFp}cr zF&dt%?V7;6lUsEP(iInSohgSJI`{hL7OT)?>W4|`F{@3vP1X$NkG9fvM4Ac+!98tq zoICSf2$h?e#xgV0>?@^|gT9mzNe>RPo828xvnI|z12|WeHOJ*FJ0{U?zSZ-s!PbAL z-P_a(F`K8wbjKtS6`;(b;p7Bx0=SY=$y*O?4t>t;s~k=W%3DW{pHjW(CVP>G{)DTv z>VsO%(ex_@r;tK6&dK)B!%JJccS)XzB&jXZk6)CQl8~E=^H^zd1eMm>tydZ{@;v8! zCQ!MIUla1g7Yx(YSKB(Q@JingMMQdr$J-2HIoRCHC;35~j4>s$fI+~4x%EuJ)+%Zl zHDOf0l0PQW8p@5Fe4~UfCTb?*1y5dw?sD{SCwJi~-vAR@4aWrpCP&&tiiw76DABGW zJEOzrq*F_#zCr{&gLkig><5@h4t&qBQJEvPVw**v93>bI;LlF#hXdH}sfc&JOlp`p zb7$K$?M_cq0|Ut-)5Q$P{o93^`B5D>@EBNPMj5u<^z(|NyU{Fpy!5Rkd<*7)5jpL2 zNQ&(7Ny{sKxAP9;q#k_7>6;qCfNokbjaR}ZNQZgd;pQoBU} zd&3O>whM8Tf%uu)gqHuhxca5HSs8IfllT%wt-*c+u2(2;aF-?Tvj$_vcIz~Pj=Lte z;u%H*fXl$J_0(6V!U;&E9sB7pVFUZiC)Sm|IVE0xqb<81Pdyq#CK^X6lq-4E%g>FB zj-*DaKw>oA`|sr6Sly{1tPPAcI}9}G`$*LeI>pjXV1Bz1K}M$(uiJs;c`pe)lWzWI^er z!(kyr{*fvYk!98RnYUri4%c8|be)G?O6%XJ(VMoX8_0p~Qrak&gwNj;RWpGq7Q!J_A%+ zy+Pp!7H(-=ktB=t51;!7M2Kx0#1dYu9BIiQJ*wHu$Fisu!pc67#qLDLN7}ec>-83v zS9l1$-+?MQOHPP|f5VER(8LoAz(0jq<<-Koh)tQDTjN>3dL1pgr*AMP#hRk|; z!qr}il*RWxOG-s0Zq&!isX_)EWUU>PZ*n6RNI8<<)>L^VqP2801n`n{9misL&0KN} zd!9>5W`pu(qCWS^@|+ z9#lG1ZpI8{lqVaYsRzSVeps@{7IdJA)7byq#78#b1l z`!3C;xSD050oIzcv2CJVubqjr330;QQ$;KEO{gW1hXAi@oy(?LQ|D$#_ea^-n9>J} z9jDzNW2*5=3}ooof>EgNs$`$ah_t4A&ts?c$vHz5n zf1U5Qiqt>P_Y?6L^fmUkiqt>H{#UW`pf4--e#pVsf-yWY3IY-;be+Z*N`C#ww}FHV z0}ltK(uA>!qn?LC<2s`V_+haV_`!nIke~$7xgP6M}Q_%zq9`Dj9d^C0m{g2 zk@dohp{{_QgV?Y2o4|icmhLkr=FQ*5VDa~o0qS8P$B8t5zk>~_P#t~6^kBdk&bS_? zBN@^A{)s5N48t=ip_0N9Si2fG)@g)KR^U(EG>y&Kbo0pMGR@83r@&FfP`#f@y=)V3 zWg|WwN^S3qU*8qU@u|+DZ^kgZ-61k>HfFi>?p)PKyvXz>_Je`PZc@*TQyV^7%MH?o zmS6BWcdEO)4(!GwJtLoc&Gi92KKZHHTsYsm-3w|4hEGH6tv6J|A}zVwx$X=RF2H>_ z4R_|R;x$`x$7)!St&A-*b_`rs%*q)dwG%-Z;%CE3x)`UZMH{bu5T=BGksW?+Izu}Z zPjQk`yv;SN;jDlWP9{$A%vqm}iC+rl7_uzKS*2$#9hz$*2ULnP72&P$dyagI#*^t4 zKN9vi>26;5Y00tA(R=bi^~vpApM@-|r`0$+x+lW{SUX8!8y)If`Veuqopix1=0`<# zi#>Njox2EGE1pGp0@ZKcV2ylburF`nuCnO%7*C}dH4}S@f(9|_MTboo0Cp%0^l8(- zNlDK6Y@4nUb#l%;fN~{#dmq5+NI`sWoT4cGa7Cmx000z3v^+lxVs4!4qe&gbb!wcF6XaPx2 zbT`Gk+w!fdU8U~owQ+s82eD?5PPy=*P})KaG2`dGY+Or1$aM9G=js{IC8+RYnAPHJ z!!qufo*x9#Ns@ z!#iChyKUT7qeN9OgGJ1V`6B*LeL>i)Xvfc20a0rn!aZ;Nh|Unh?|@hr4Xr5B<{DR3 z(5r#F{609S({j^h$j4*a=HfYV1&J^u_1lwqMKp^GaYhr92`P2vD2~z0{1>4h_aX=O z7+^X1eosR#`}gFlmnBwms-#$TaY*1<9i~henZ``F(^fG&SBY?T815|&yR_way^Kws z`;|-Ori`q~nXn%f)@%-gjW%ZJee=IinKYlD9LoE()>tvJm9QmB5JP8%9;FxI#;m?7 zSxauDr%dJ5vICO1Ee4`CSbPymjzZ^S+mo}~$;Xh$8??+z@lMX>1t&ZB8Fk#~p-P#> z`-mt7obxT`+1w;? zb&;w(j(%KCdQpi{-<-Y$c1p>%6R5OuPDm=EzgVN9B5^YLbs*~#E2g#_D>0Ts7$ZT* zI&o_EmY80+{N3(q%9@$oXx2QZa$@h~!x}lR+%Bu-znC8{-8RbDb(&n|q@3PvIvE_S%s*g76g| zFs+f|MV}I56XQ@lm1pc;-jQbI*a|W5C$l4MGUqXcLK1I5tDzS4a@(1x z^P!NGxv>qLBpG)AEtgOXSY%3Pi1OF4tx4sG*0?-5)ia&5M93p?-GThM81S@S|BDqVgV5uCQQEZ-&mUljO ztG6rWELt~Z5)wV5QW@IJWGVxSefUdIWiC`iHzCJ&P5VDd9Li?KAIT|}i39Y_H%6ri zzP+Y04du7nl+3lUOg0js{r+DL+vPvWA2#S-eXCxbLV%@Cf4@Jb5qJKe9AU8sHoq1J z(rPKAqf!A`g<8t6QyN-hU8{Pg;_lIPou{URA1xYl=?AsL2sldCv{7vi<&Ov8d25CN#XR}-m^xGkX2_p)FA)*3q&Xde&G_5i@ zsN4*-Ki3@*pY%64Q(_3#Pu8s74KF%ZrA~}dK-09=tvhq;xKQ$d%d|>9kj((%+d^9*Ifqp=ah~;1_Y=C= z=lSvW#pv04t+U=c9WI;x*JB~Zm1F6fQ;|wS@@@lAI>K*sZ9F@?J=M#W zcv#MH{^4p$zGj|gvwhLo#X76mdw9mMcCYO{Zn1*UYZgn{K-*iojnI&3RF7(-b^IhZ zzAd&nxAx#FF3)}DW<_|H(BRlG5)c~Ay6%I9o$TJ$?f0}&mq>|s{-LCS@8mP0-l)qD z*frrvZB1db(L=fKzTWe$8E{Xiu=zas9T4p*f3qPpW2UMRl&`+1H5|bLU#=NqRVSmo zqN;2hsB{x6wdy9h>DX7uhuhBu zOh;=wzn78`R4+Jt{h1gfL2i*)M2~`EHHmscz*Ptbp}X}82|}~%-?k@~MjV#S|2hx; zx)}Y_%Jg5}(f>yx|3@PK_at&gK@n!4XVI^=N+EV;4h|7f7Dg5kprg*;j@bkHj6TQy z2R#4R*nbtqf9Crw*9-mEe18YyKVyH(^?!-|Uj^gE&k{LMzy1Z>!2dA7J|58L4pE3_ zjU33||LHjZkjEjRfUP}0i7maM}AXcFS0wQ4;ZJe6B>H&7DwHMU{;w;9gNGN30rWDNay6lqh;Yj0OTi*0~ zuN-G6Wii1QeF(r7Hkm*7ZpsDP!6lQ8+w2LfPJDc-1B;KI!)-c;zqPw(y@kxqx(jYi z4z+(<+%253CDBZF+k$+p9ZX;F7R`KzIEiKvKlu=3Pjnm**A9Q+Xsto^dUlRG$#fDZ zc5zx#M$6@GfFrOT^6w*Pz~*TRWFO*8&<uVw$Jrbz<$;_h}TOHDH6 zVxFEV@N7Sk&y?#QeSmX-qgty%TLXjkWT7}c8Fb-_53PAqe4AK7v1BKA%t`fRXZ`1T z4)wMmv(Mwr+MN6B%&!`cji7iCCEkI}d9>z~Qz5vh+xY^qQLIIenMvEMMESJ|HMQ7PdPZkuBmbo=)>k zb6M_+)j!HwXuNM(_TV5F(ShR1rT~w)AK-tx@l)p-^{ki!DpjxmQN`d`4=P?HML_`HsI& zxbzgK%bqV4F6;Dpr32AQC^VuAq-4FT&KXrx!}3vE-z9s@5WIl_?!wtR-S*6;B+HAv zSG1e{Tbl4<9}QvlYRATWC|e3@PVI)dd0F0Djz>l=>^u4ah<3zy+ohRZKX7G@F`pvc z5h>mxVXf+3uh#F&Cuvj9atQQ=0T6v?uN3e1^_`}?an9(xoRm`=vHNr+oIF^2`AbWK ztDuYGpDSTRhd-MNCdyg#*3XE64i4zKWTX*eZ$qA)qghcA*G$(IR2gGS8DUl^w{66+ zY4S3MR$6&Tc&%fVMc#7BbaN$hKoGvu#pdVp9&C^X38uWwR;wGrb%_Xel1H@%x%Jm2 zuDPh1zQz}O@F+~dmrMbf;}{yJg}bVLFcQn5@p!wG9TWvNT$A?^cSs(f!Qh?A)673p zRnDgP?a`OvTIsmstC^4TUVF7y7T9+{&4UL1F7$W6xl580_Z@=b-u}S{;9UZK%4^FV z`izTy`UGnk6aHcy2n(2R-NWchQQFEnstb9?aNu74rJelHt*&Nr(W}+0R^~PFd|e+{ zoFmT)ssz?OsOs3gJyaS$v2w;Wl@^UZ4cGI-h~Oimke^C}ukV)1r#u?VgdAtiYywp1 z=G2r?e_TrQ+YQU9ij~7n8Q|w(i6AMSKtb^Wzz$i$&`HB>$b40@A;}+zU-pmG~CKfv$KDkIGJNQUB=Ql=>h7yNn)l@)nwd?KKkQ zVIOGT076F{JM+pxf+*ji4@N&yL{S1LLo}i34gL6Ln*Apb;;(ix7rK?UB15fBG$O%z zp6(si87`4kxs5BsHFj9ggIqr}kONzD2s| zh+%ZtDK;UiBCC((Q|?>3G(Z=4>g2>8fMqg_ZK?#fS5W*DP{FeCK^#*M(<8>d&oKJD|mD>UvqGcjaGvy<)(R>fI=3} z?Vg>5B_`fpnX0m+5l+xyG-4Y#XSS|dUb#wB9h(=|r*+HG+FNwTnY3PS2MqaGJEoH- zVq$GNn|v#5-RU;2@N`#~NNcab=jTLq``BnOSF{o@8T$h3F`t*+LYujZcQCG%I+e2E zsWT4*3A*)5BttC-4m`EGi(T`z%Pri~XU}U1I{!$(P3W!#8Ac=;&O*Aj|IeRMw2!s* zwBG@tbdB_tW^Cpb{bMU}rms;khuPL3QE-Y%L57KNx%~WYDg16LYfSCDrR^5N%h~ts zYXhxx80>d=M7IJhFPqLfM9Y;QQEA6Fph7tUyPsZ0aHt(rgO9(!WY|+9g`ABHtF7M| zCyA5S57llHHtHAXTQm^9M5vM}$4{k=Xf0&Z>ynIrjaS*W`bB3+#@arlzlvva{&+=u ztnuhOVAM^V@^j$VlA3_qiL0C#Y*~fm;0Dk`kI+w2oaT=K68W!>0Wdmbr&f126>)7H zlqJ3sMEdR9*1T<#7a5QhY3YzxWtjLZwMJ=CmnIbf?l2?tU#O&(h_Pv!i)xGtkDx(R zl$i%+U6(!#}WZR2JO<4IGh{Rqm^)W`$2StIRvAkM* zF=c2?|3!?a-PApS5Qiq3Ey3mh7mW|`txT>G3beuv;3a6I2%4AFyy}m2%JZV7Fdw=S ziz-e9p^~*+PzAX(E|3U*hmBBtHCL4>NM~Oc=mX`41yx_(TEnXH|3H&X6#a(-|KY%Y zivt;iIa!5Re{&!Q2eS}xpdSa5C<_D7FX(UGyBUAR{^r2H#Qv)s_%q*c4*W~LzvIB4 zvA;R+FR}ltII!pk2mW?NeMUYQpsNFr*Pg9{{(D^(0umI6fxsCNKtDamUrsG92A+a(l5Cng6;Is1{)F1Enn*)DfATpHyGYIw&IWj}X zT?#1$ps-v_8v;4-&-K&SbnNOPexcC+^%0&e(;B;aZz^d^t$)DLn8%+U>2C}nFeoTY z*=tF=CP|l5U^8N3`8B=(x-vP*72@i5g8Gv1HMy||(Ky*JR;WAJW|8lbop8=*2^SL| zis+tRdf*WY?WLngY0ZfR#~WLcViv*1y+M~Z`=|^TwiiEZRmZ{Z^BCe7=rOf0DoZJc z@qui99Lb6e#Fcs5j>Z;r5gVMAn5mvm!R>B4DPl=)%0`I2!qGxzscmGt32o$Hui1kZ zncl{Gz}3~G1(n(cs@zkt#6oi3BS&TrYUURNc71#@gxuFL=dzlkwccDiK>Y=Q*li|k zpxB$BqIK*QAnv{^B1PVx+zNV|EYnmm$~Q`uUK>9Z#XMM&Ik7+~4dYT}C< z$4)sGTAb+`-K}K^w`@o6!!lj=2}=+mrjIhtQ<<42&W8$4-r)~3Pl;tv5BLN-rOi9=l*4nf z(k}RSEx!Z$-fcRv$xUlB4|~0jX?lzxcUc{;zu_5_x9}^VzE@O>Aeqac8FsCENrf5L zEFv|pRe3xfkIMqB@tQYI{kT}uIE0Il;8jB;hxL$`3hQUkEjz4EzbiB6+DWAyrt38* zy9@c-_BA%r`FSuUn*DWQzYx8o7^y&-nK4U!OT;TB(<&9I524sjV5VUbJi^T!W~sANR$Je>+q!+7SX~Xi=%iQmaF#BuFPV`I;S5XO{fq|@ z%YmI0O77S{MbhCes@oc7*3p2*^n>+p;lOdoNAqIG#2;^^>-Wmc-i20BHtznclB?^4Rk2JdHN9U zRAsqdW?ke!93p%EqgJbj$+w; zo-m=5XWra!JX0^e1N;_}99Jr?A@DMXb;7I39Kev<=Q(+;5+Qh-PR`>Nw`PeX=VEHa z^~B!$1gzWw+xCyND4qC>HStD_@vcxw4ynP{%~Iu4u7=ZI@E%Rjoto~VPjDnz)iQ> zspC?SCZ0A@Rfv#yamS+}`hjmfBWl+$rUnyFw!Q}CaW>hGjkn(6{yc+gU~Q0z2X}Rd zaRge*npjgjvHwP(fh5B+y08p3I$x1`o=n6@q+^YCsNZ|vX{7$O>#f}yYQ`{r0>_3d zr$eY?j?L%Vx7TSz_&qcVj%9s%60^ zmhlxSuU?ta;sg@TqCUizwe1tD4!UfmN$SeNT)NbLnOa-3{zPLoEk5JuLXJjptY2f- zq%yozk+oM(vEb?$OGsH9)>GI#KAev5&BUmbh-uk?=Mz7u_^y1A^tL|ci4xT5k;Pvf zMMOf3h)L~(10Z$pV_M?X98}Rwb3Os$$>Nbp)HL zF*s~+cP<2*-lT`fPMbDv1WCJR)Sf{hy5Qqh5EeTwnzK`}NN7Jcg}~mydcLw%G=xxQlTyd4~Zc1eP3DB^sl%FscV z?JhTbmHokccBoBTdtDA;_kwbwx^)-nKJrA?4c$w$^g^hXIpZH0sWW5rTdC=^D~n1G3Z zejhIe$EXseq{38vSCJ+Zu_HkcFvY0OQbb8a5=Rp8AtDd-L0=GfRr~+&f&LHv{eyr1 z7XC2`vk8iE{_ZdpVqp{(6%_`~5ENx$6Jq^aZ*s<;vA=QcFR}kB{{6_u@!LD;FZuos z|9&3J?=IWF#Qv|szf>Up{jRP3srNxagTsJ8!ai$&K(7bj-`^Vuun`sl6gW!onf!hf z+y0aYpV1Eh0R{AmB?Ow3GYT4@paN%P2r1RGpf$U4!v2!~fJR5Zx@CXLe?avQ3Ml{i zE9Sj|j;murL7gTdzWAX5{+akLfx=(K&ps8RU;VCs+__}FCKCI0pzQD&IE|}$p$!)d;w92u+8AQTrOs{4UpSw zu_}$`?`7Qe9-J!HO}k66RoenhVB2OWgNs1w7Pokr*uF(5C?P4KH=Ex)se{(JR%0*CN#UlapiLM=vP);{Z&n3O06=JwA--v)2)#Wy#0=h)@rVd0f!Dx`Du%t zU0ab$O*8(Lm2>Ugd>Nsze^I^+<^G!RC$R+99q)xlNyUfT8b_DIy)^fm!$L!_P>|ev ze}{8aM8N6Otmeis$S`0q)|XHd=v@k`_bw#SLjC%b!TjY?*Pmeohcixcxw)< zViKlm-GO)G=Chi_%hoJK2r*ic>o^Gvd|B3!1eXLH@E7p70VfHt6`=^dku|MSI+lIAr{~xcA`xT2qva9U#TMs7?<%|pQC8OeTzQtAq`@H^+84HY ze7A(P+a1cfD1afZ=obVK+(BRv&qEEbuG5*z|DofUxmX2PJ)AgdOyTJpg=xtu>9$*G z45jNeX<;$r8W??+aG)Jh?+dP8buH0OH@({95Y16;XIpY*z+Euu#A-K{EGbbLV@MaU z;^bTquMpAUqSoGbbwsbsNX1zl%xR^9r0M$(kfOgUJw7x&D#eWs18+s@rfjuoP0kR+ zL4LRW@r#?TYlRA*x9idvLlPAdSVSIvplD#Gn)+FUZQ%zK-^BE#ITdjj_9nmHNn3(= zw@@d&QJ2Lngu#sqFL`Tk*GN7_w%3bpIYO2l!P_hq#}Vb3b6N#5-S6dntP=S0(oWk5 zZ~gIqjr{Zq1Z`$lGHrHuh)G|hEV%}7jo;b zr}MSzw5d6U@0jpXv<-WbWo*Lc0N8}3+J}08UykLo^ra(GoBnK2B~}Y=2YGF9RoRxr zQR&ev<#@Nty13LU{8L@35ta381SlbXC^!TTI+=Uk7A33t_oGtQR2JKz5o^P}8#W|} zZqQe%((W3joBpn(@t6DI9ASmCq!q>Ck(`7Xs>^wd#fbcGT~YSld}X6bYHfFD)3aj| z7Qwt_FQ^JJLRz-W;IAk)^YDknsb%@&jHt&)Mb}X4T9lG$ z0`Gb=opQJ^$yY4Uwqg>?=PASa;7~QYI&JqcbJjg^i)+W=0kmy%ZJ+w!sCm1sAyr<6 z9-j$SV_gRG?ricLDI!%N^{)1v6t0fj6VFk27RL1*4bL(@YR)+?^S;?Ft@pQr7(+vz zP%XWM$>b+?2~GRNo;7HE2K9xM0r@BW&%l}G0gU)xAj%uqz5|@Dwb?;FcqN6b@$J^4 zEiigN(w)mwXyAzg}z6Bc~(i$ng`Q zNuNb0T{W&2IF;~3r)u!MuCh}@YbX41?Tx)eQ)u6oDavE&%1e^+6_u9>Te!i4O|f%t z5=rkSxj1&@u8@-4LlL~Ipo^NT8M&5JjY7IvH@~!~>uV*$nYU9vDsvyyWQ)4 zcJOZp8C7iEL9J`9K>wTx-WGk_4&zm}wYwhY_qLv}=D4)EpSU{Ihu>}lg?7=FEY%Tx z#6%0T%;D*}Dboz!F?@rHw5~6HvZLRe5gJj&>x0Adg>LHcNYHQNHJ7hGe8pJuv8!F% z#HYO!rf=sBs;l(J2V-IN;+a<%4a=Io&8T?uHsQ(nLKeD(&P3c2Ckn^%hAA(9*RL?m{W;lh*;Z(dB;LBwgA&I(8=AV@uRXNrGnPdIZKkyMm}mc z99PXRHk_A^+Pdh*Fq1t#w@Z20KdTJK5v;-ilnD}R*apaZLXczSM8p^GC4 z+hj^wIODNqVqS{o(b1(;e?eA`kS3hBKlY#wgQejT*ph&tdKw`CWy7u5sGO1-@9id6 z<`|e+vyO?7ZIw4fK(r1b*RVO)&x%wQ!|WE|(MJH~h+*um;C-_eJj!%^(q)2U-^E&1 zc-=1VxXzeH&v~v&FGt<}sW+wjE9}v|ZSbrm{{DC&CUewY-8A{P!v2mj|GkD4U4(L` zo`854GPqzukmWo05v#T2(K@)JF2gn3F3GZ8r=}^@-B=e=rGYFM8l7mK$%sSK5o1 z2#Nsjk~@K83zm1FC1O$AA*dQ4g&2a>f{>=fk*@{7?&=OKgeZJ`Wi?($Jr{C@)(rrJ z`GwWbf=pX^SP_`23XQ69v@)?}8)vk_S;G~9^u_K$<(5m`BNzSApGk#e#EDEj6j4cP zc1fTFBH;kNCQ+G9%aDlQ4t|n*OLH{WD6UPG1r+DFLSgU-Sh086_9=Ix2eq+p-F3 zm=tZ@PJh0AJQ#k!^+eN?v7#dgCH#q1D>8vj!6fkxrhAKTZaN`2^%uHd*U<2AC50qf zOBg9ZDn%XuR2WG*(Wz0TE=leFXY~h=Wv@7`M~T6x`@0UT{cm%(GaCSf3@!r-9Stj} zM@j3VMG#n6At|BrvsX=52eZDe3>+lA1Y$^dbUYy2aI%*;j(ndy-S>o z&E{N618i5=4Vlw~s0B3dGV!@JVZD68UnlB!M{@|DZ{ppEUUh zObPuLn#8^HEKJ7Xhy4y9;F^xd4J z=$RB!5ce#s>eH#R-#cDM%Mghef$Yro!!tJOzv}gDULua3p6gtO^1_;0`oV8EQ4E`H!^;%IddY(Wx>S|^Ib&aqzbNTsf_W)nG8NLyNv(vVZ5|I4g@<= zi_)q&vEO^n%dees>@6zqyj^chQl*lh{Rck8^yK$UQkC3wwIG{2zAu+WDlLshwzDFJ z<7^F(+##Ig_I0jUDp{Rv##`{FOtPOhQ$G9pN$vH6>X47&r*b}-bHM~7d%K2>^s*fL z{yQA++qZS3O-031aWUd=tkL-w zUniNk^?A~;`UA2Uq+njxP=d)1;=Vi>IyM^gD9ZjvOB%GI~O z^fd6sbh@p%dHSI4e$~lMmsM{$roc8~-hLkY?FbsR)#xoovwj?=qmmZv9^?VrN`{tr zK*~`L!o*Dr-t0rMy9u3u{hOiE;eh6QPf-`;F;@&fzA0oWa5H7YEh5ePup1U!}#(V~#sA;^81O8ZQs67PLy%GrX)gT5-*X|HGI zUAESxb~@Fz!QaqMS*~98CTNp!AjP~fACzWX_h5NbCZg$pwk&4EE`~7~rLYz`Ug!^$ z;;ZV$sj0oRz!*d$Y1qg}(CO-N7gLUup=7?-DJrJ+rzn$P4B z(2TUA3KO*{$P}%Ww(LkL)u1+*oM{F`YuyBFI(7=;H7O5yA_cB^7q_L;sOf(p$p;pzhs*$ zd)~@@S#Ic#y!G+r#Lyby@>&+&|1 z(Y3GLNfl>hN8QRtsMFOa^b{cL2YsNQG+ivVBD4Xv+}tICsUEO;Hj{018?$ zubBTgeWrkSJP|3T&T^{prjw;L@Q8l`$#N&Rn{2ae6WQW?+NQ16SI~`OXrIBr;DuoM z$FIk#=O-I@vpftG4i2stsd&4LDHUHgt`G^oPK<}K<(7~Ny`b9rdW=xT`U515{xe82 zPq&-u$tR8eCy>0;@yS1y`SJZ!@XJ-o8|DL7L?>8yj4(UIoXP54L;p&)bL8NO^3iO7FPb6Bo?~OrNq;Tmzo(4kR`K=F74oVJZt-EDX<@#5PZSYIpw1f z%5<=&*nEOWQGryo# z*lIyzd&GkiC8W%*JIx!(rx`=tx$Y~~3A*5UPK_Q(?pF|fh<>M!P{z%7=;c@&(ylg6 ze!Pjsbunyhy)TCL8b1yfs|nSg=&KSZ+_3h!N?SC3y4tUQan!qmaTxgclOmI}&{Yls zA#_feCUz11fi0IBo~7KRV`eru8H7{yaIerbmqmiJb+g`|6DAIY&xw58 zAx^jgfM^Uk+?LI0_OD#iNZk^C7Oe#Uh+Y#}H+H{KM@ya^A1&3C8bXH@n;lPZ1+nqh z1kTb1^Wy`}J=s+KWfP=``ZhwfS@A%GESo<(_9a0Zc%i3mJLLfn*)o5)0wp*}#eb}N ze*BjHS_1uF@BCxk`;SS`zh@G}#4g0hDfC;A6l7&*6XaxPWfEi)V-ykw`V<03jr~u< z$9~5C79{@?`>%53k9>l^1S3DImG7Px@SG*UXRJ277*UQBS(-u5i z(s7Z9+qeFQ3>n$Md`7oc)eS*r(`%rFjz;VkJ%df@+$|Ik8z0+MB5ISw)$04`1m+mX z0YAxO><%_k#Ydb&ZoAp~LJk}EOJzJ>HBCmbfL;gv8vBvWx_em+-To&O@k1&HB?V9UCrGW~#8W1j#5d)>o;gG6?UAs}Xbx4(w z!~Rr!N<=jH1NtFT#<15?dnw5E#I4xGMC@yJ7-PzOr)SM;f{Gb-sY$es`D`HPdA%jt zfYLGxSm;aE>Sg7kkneyNdiF!+*z>+Y@>HCS>BXc^7QEet4jh~FX7)FAuh)@@&W?N| zcV9=w5MeQGbvGO{Am&1I1YpcFEw;kA zm0qY27Bi}(@kYjxc9=ihu4rCAS~^JU;zCA17}Zm3>PY@6Ll#SxR2W($mkUI4NvZK? z3J<$eN?%QncusDgSFQ)t%InaUFPkpu37SV&ud?g-E54$*2W5e^CAK9k{vZ~nZ-4v5 zrR!RwGTF?rWszJYnF;S`_Kk=JSJ&j-65ByE6wOnX!skfgb@Is9XJ(p+l01FRx~{L^ z&vpbL0uhL9`%2yIyzPX+u!ON)gN_3?e~f4kQzCYc!WBpD@bLxZgtSc?9wuQEMZZ;H5lyjArU#;VA)G}>)=mo0KO?d~{sLXdje^5vTo!~ux z3yZ_D+368v|MtoyjtP{NM}Mr~9)5lV&**Z7Pw$nqqBSAV?50vPUKxV`RYD{lZA16 z1=Jexl5%Y2u--JBs+bMU#hpsW#KFn0q|bdUu{Xtmpn%_EdpmLBYAv@g$d4|Gpk1EwEe{r22(8Nan_|SF zMTlOXB%Yu(Lz;PLjx5^vVbs#_)L--E{wLjU*i*C}T{m%^=9Tl=i*n`9DmTMfc7oGN zXP?+g6EwiHc%N}ik{2|TPt|0)J=vYlLK+kCTV@p=Bb$UPc#Ep`{1?k?hh){B$tfio zgttL;yrBrw)?=BgNC>_(F1D)Hf|!*rqGyK3&kz-KllZV@U6wM(B=K&6x}TvimuI(> zfL!Sh-Ot*olZCmm(j#91{jCjC=r#dIJU=Ep8ypVmiD6O9S=7Qdy?24e*+`HiR%z$C2UMz->WI5=i#K z`pZzHN$;h(PO-{x67)uWMWi5MevOm&;d#LtWU0cDTSV!a#zjk+H!81eG0DgjB?Zs^qhjoRf>P9nw_?hS|%gq27wd;rb!W>#zi; zmn7^b*4nqsMwJYTE#vJaAJ(m_CB^+vkMaNk2nt@JLNwF$IEm|goa3D1RH+-lbTtPrLG@p?F>DYBO8CDYzt88W3aZA zt6g1t&y8Ll(d1{qIM4}wz-JVv@eMvpa8%B8eT}EM@rxsL zs5U^U&&GDOhGb;d`Ipo;T&yQneZp66r(6L-g^#!Z?2csb~A$rOy$-@h+ zf_~0rIphM_qKfb8FZZxI0lDFGEJcq*+_Th|rDZ_D9|{_YI9!oV@&Cld z^`DMGn|}!H-y<}j{R@+bFz0XQ7&Znm5q5TVPF67>?J$Y_EusC475pD#|5ZZ!neVsi zDD;^$Uqxu~&r08)2@MKp4g(EDwC8fs=j}h(4OkQk0`aqA^m$^+ zAD%JKelWm_(I4G{uYiPx!f1#J^IS4oPYjFk2cm&N{W75WVdeS@(H#7N#)=n;Ktw}9 zeU|v*0`mW?@LkjEH+hl#zOVJ4?^D&LIXA5izdBdkO1MDaS=Ap8rxze4T(@xr6@g21 z@And>XZv(P7Agq)Eu#Ndg8alpQfaLKrC6y%IX{rOcv+-3Mv*!{6uu{r5wAFH?|Q}p z&qv)T$8U*$Quw~aFH2X0qM*D@3|eiJTb!*3eq8Hb%bx^mi1CUcaAz%vi1v!<*vMnl zuy);X9UgtSg*w%RzlNqvG|A^}fP3Sv&=w{s*Zc{vfs2wHxWIK3+Vhzez0+lz>YlHjeMW zOKg+!rIA<8E?1o!Iw-c7BohfuIt^2G)&Sq!bGc~GbGaye6vcV6cxnzkw$LHZ@GGzm z82BDWK43~Ap3@v`AI0WFregU(W7=n~RjZ?!KJRlqyJ<7R^^kWzC~aVh_WZ+_w*!U_ zn_*Lg`-U5bap-o^cav<;!&ig_bT8oeIcEy1D78>fk^oA%&fs{t0aQfo+iE}kd}KRq zR+hA<->o{gqy+Q+lK0AW8&}ep@l1S4f{I#?A9T2!t0vbhh7ZyPxR?|X>AUu z?s?0^$SwBI(5m=jxB+QRBP8~)c(bkeY2EdeqwOQ7RdQ>GVm(ds{@r+QhxK~R4wfl( zD^f0Pzm0`OV_d%a39qkQM%3B7a#i#rmPwhC8CYi8cfg(okFFFiolO@Gyyk;c-X%sz zyF5nE$`s}^t+~Cgvc~?Je9;a`7$r8vN!^j)6#RNXPM04)&2PoJMn{+u86B2%47FXt zB;cT^k(+WJ{1A4|V-7Y+vt@4T?DV9@EU5U7%S?Z-CFuI%YdRami0oQWW*4NA1I#k` zIOK_m>7J%SbXy&5YEiZDI1~#VVVNvNi2_=}LXzdgyW}^)Xc;RfBkHU4KIa|IZERVY z?b13`B^w7ij(w)FHQH(!55Z+&XFk&uhp4ml8g5wE(#X{OkUg%x+zFX4;%6MmWsZ3g} z26aOsP3G;5WK5%c5+}-W(^t)`CmP;EvvH#h;fb%Y@XL8gtz781soqT-e@Q#YDhMmr zD}`jfOtki?e@Q$qq#CSp^ZX5saOT@sBXFN|t?now%6>G8DB|c^g(?Z~zh4;~# z-<_=s`MCe8eL0h zdD-0;pRts2hYc(dH88X}F}NS4kZlC!7YRBy z4WxFHmy`{kS5YqJs)h76VbLp1kxx(>5#f&|6>PpT4zZVZtDLN#Wx0;5u7-DUkE?ww zqzyY2IBf|`!Bzxwr@3$^ZYVTGFFZ%a1hB%@<^nYnVir%>2yXK%f< zp_b8~MOYgLJ3wYi$ZA;Pt}!l(rg(k`co zOgDebJOc_X2_(kNKxcl%KvXt22%^kySCYSFF1IE+f3|_EgldFY(~xmTFjqtZeun1G z!4b!mF5h#g@S5kE3MkTwHb4p_yMyVO~3#g$-e6&u&vZJ0X;c zfGB>3v%*;EUvL&>a9jKX&ITpe)2N}^iH4)Qp)R#~v5PJC9&~ANXs>oH?uS>2*AkYE zZd0_3pT8L4Zy`XFUJ4$HA{k@bb!z9-G8b_NwbFl<9hkY@gotf=hO=94Obb|=R)J#y zO8zzyKhYFR*B0iPCc19eB@6T-S7#uhigBJXOB))kWohcsgfh# zRCLD5jJ8TRbYGS`);Ymw-7CWc*aMPjT6)iVGNJ}yaarP?W=iL@q2_D zH4IvXbwOpQERQcL0T$B@a@?8AVTr~?hVeH_fdWEO{b{%V#L1(skw zKLzx1d7fnn3IQZFxMy^GrZXg9MI`_@VFQ(s2u%=O(SS*an8bmZMFq;=P?$|A-^h55 zlvUM)j2-DY7z_de5@;CnhoS}wh6L2p2!SRr20%!2m}WAB1RA>t1>`Hn5%(xL&M>20 zDjOA$u!xZUncSWvI&7_?6R++oIBPm}Zl#Lk(u|bm-qd{%B+A4LvB#7Tv_`A{@S?x1ol3ATtT z?28sF>Dav#u|fr1s{boaxm^FyFmO40#D`ltHq{TcMXxM`jFyChoAj+dEO+jX1y7Q? zzNI}0xUb^3lhArBZ!RH8kG6%4Avj`cdF?0H_J{%?5ip?v1rWyyFdUatnXdX1GM*A9 zuX?u5@xO96j_?1Rw82ig@1?Vd*wlPdb68ZvFE7st}f$O9W0)nj3A% z2z}E{wk|iOsPqc2_l46OJ8XNI!tn@yf8~1yuKQcaMyZUrmTJpDDO_5nM&o_*YS@A^ zK;n5alPQS8aXM4zP$MX=IE1*>>o}&^OjktgmU8OkBf=JS(7ygk@15TFZ`M`V63dD1 zsW02EN_A10d3AJH7YNK5sRA4r1q%HW0XTzTAC^>E+d^mtt~1it?^cEu&UBl=n}ZwLp}_n zI>EdLQ;J0a^{XrvP=J;K#S~$5e#3GkNk}0h?*P)IPratu-jYJ;p0q)|r2BqOYhSU8 zEzRk@fkF)j+j2O9PVsy$9yv>)%sxOC84%jd4EP+4RpHG{YY2S*V6`Vfhw`$X`8fPE zO&^2w`CA8C%@r+I2oa2ynUd)ny=v8RE0pfkR+W7Y*br60;X(XDfMe*k%EAKTa+QP} zcc^*mm-w#5u;O(cI0WR5K6cVg2c_($yxIcCehKiawFahfBTvJsXONcu1_<_3H^7_29a#gXJucHdin!0&h->dS=-tbuq z=u~4xM$UeTf&?*0=odL4bpMCFvyO^l|Kt7=yMQ3lteC@D%K zAf3_;2Av`)A<_*ZB_K!$2nap{a=kzAee|4r&w2iNu5&z#z`VZV7hTaA zRVGDCJp5`B<485EG!t&zX{o3!$%&ol^2>K<%o8Xk`*3CP`X!F1=jicB6|>Y9QTly| zp#ei%R8o0l_G1M8FP^{f&uY{h7@#b4HZ_Y@E7{C0chcpU;=gmF&a$n7-6?pz4o%6$ z`W8wIBpsHJVB~|2kp~LMGl(g3TBem%icft<{$Vf4Z_tK)i9s&~RJuc=k_ z5&k`2tu;H!2D=bTPeGv_k^3~AU=}&_POcT`WgV$JmN82LMxab7>d3AjA8uI`rDx)L zU+*hOspKF`eISw8FjK)+^+u4=d+Stw5%dh|CaemhSPw-S>&Sj2;S*f2>r1Z4cy@9HCgfYI3YY8bum$r9r=L25wu6ByKq6>} z7YLf=aT&&CQz68CNl`MLSt4GPKGgF3ou(Vy<$W!4Q9h5vy3}F~acsK7AkI!xGB-Go z(uH2>I^z{AG*%EIRPcOoP9@jsgM32NNs)D-^pf0LNy9qrX#}+`@RKVrH*tCe5JmBy z4iS$6LW<(a{7{!a1t-4{P>O-#9WjH!jhQ5MRdnJx8EY?P9{Y*_&$Ikw z+FR7;3IdnN{5@{r+vJ+$JGudbHoY@7z1!{N7$t1@aM=fHhRRuWnC8eubx zJ5B0d%=4Mq;bJ~{Cb($Kfe+2mX{dBB7W>I}BJC$dY^L){RQ)GxO27d@TE_+}YXi=G zWGZ>DZKUR$*v^G@DPJAxo{dyzwjPZX<&Te`$IS!zOI{Qi)rHpsk2C3bl6Mp~mrgE2 zB9kWK|#9Zihw&wHJ>@&L<{knR)Q*Nnahkx8p~cnF z^W)B^!K#|)H|si^r?JH9IHKSMQ^d8gnW~w6!itL79Q*x&gRHM*&?BMpk9{J6i-0a5 z;)wy)5^u_jhz3p~>cE{+of(v!QfBpJo%ec~u5U-(pFFi1 zJzhSzj>kfP5Fr%z#rH7<(GA)SX)h;O5uIGc%t1bif_R3r$63L`j$OXi_;}oTX)PG~ z@?bf>M>Ul?717&-xNpxh`CwXF0v}8fbh`p=D=g8|2bx8-M^t?~@IccebBmc43ZBwS z+Z#9;4sm&=<|~K`NHX2|bi6mR-L5=jyC-+h_@KA>x!q3Bxrf`tUqLE}w2-~V5HF*} z)tR^w;AUneatg*479CqA;(b9&&!WxhKrY&~PLQAuxhQ!*1cdQ(7A26R=vP0dAyAW{gG6w`&9IZu4Ee{MI@j?XSEh`;vk+ zG@m8t*(MwGe9Q3B6OTxRT>S>Zs~)2F=*lyqn@XxMMP$v;P$RtXxSXg|zJjzy?`F|S zyz1}vg8SZF8!PAT%E|I!mn!4w9*daAT?z0hw;^|84rDfWTEp+;H*tJmXN`zgNbr-P zTm!NLOe&)Lx{L(5uN7U38(Fn3{DntQ;HEnON zT;|i9y@Gt5JhZ;DAIC~m(0F6;Ip%=327*(KPkf|!_wydcY=x=r> zZGqcImzfsbj_r&QQ@v1Es}o_UNo=Bu$%uMUdNP9f?(B+=I>q_cq<{}#XQu@7c*Qa? zBZ`>{MOBuv)sY%ATPfaKE@g)C@DUW8&hO_6DEl}$SLaJVJ3YS~W@!ChiN)q4;@kxS zSoG>eG!h2VHtI+-*u(M3NM;Yr7J+6`HIER+F80UPd8{r9JErdECTzm{bM}!#L{RG$ zT1HQ&8m^#F(-!=TQ2g$8JGx*ZK`~MT{3K z99h?t@K9Bkdpbe1s0a{kGDrZF?Bzyy@4PJ}N?<(iOZEn~4zYhBoLVn&R3-BntvtJc z*11~*W%8o*vS6yE8_oDT-5`%!%i4@d30m>GuOF{mqNk&MaX+lvIPc0$tye|L?-Uy9 zQi<+p6fnnQGI2T68NXH9ZywCNufpg|8B9?UPRJf3z&(zoOtUuOj(zt9i>A#JnVmP} zz7tQV1Ix^XQTSU{F!UZHFmK&tH!~eYuE?MMDHcMb(KggZDxbap&*Ekab%{3-r0jPv zXm$APusMjMy-~nh#nDv>Ykg!A+o#dinexb8>jU<9SYr9riHsakXPGkbU{ofqpfq)L z@+4|nXka&WdiwwkmA{>O$g8q7G)pUDHALiHB+)Q2Wl2pE!!$DUrm`kHF)#F-pXfdn z=TxLDG87Xn0w?`J%`=lc5+ep~*`oZQg@j#5L9bd(VfXkOO4&C~`LVh@rl^qx?s#p1 z;*358_EazGy^`7eAF+44$M@ZQUYN(&H+u!Lr@F|(I(|>VUa;OYQXJm}VUvm(lu~;Q zMjnm|{tUu_QRxzzq1}8A)lBr`W>k*yqABpbU^9{TMjkcBZt zF6jJm=Q6w+koSTcqgnBqPD#bVCGa#t%q)^a5725NXUlGrJE7nq8bIK1B)^H(13RQ6 zR|p)z$jM3j*+-fD{3|Vwt#{6F!8{hVdP{PDWi+h&uz*7&NWwYtE;6Tk1 zDFxzshCa*T)s8q@Rn)n%RHCVufIDK~4;*NvrGs_TBMGR*-=W}y-iDVw0&ZKOat*bU z+jb&-!my-sA~U&{dH6ATAsrF=_2Z2E1-m-z9kLZ1|A5!zxP+2{_}^|@SkQwl&Op<5 z%*t9%pW!JHsrxpqO~1WIP^_lrLobd4+_rw8%lJM!D6Ps_lUh|?FEll=9t8OxO7cM0 zRxNHmm1ohkMKTZjBYemEWofD$E@i`-QSpFhoX1-oK{JzmX-agp=z+8_EzC*-k(}DP z?gY_hRf;qdUZ|n!Ag(BD33}#W*sIGCp<;Ouj(o{?ub%DtR#3;A&*+&&?4`te!z#am z*oKdmzk-5}jY>ayH;!C1i&H$@xRlmg3-oN6eORW}uyOfngIkH!tL(z9%T0=3L@Tcu z3%5QT$WN{pw3}OUQhpl?2D;y!&&2wqXa9L+MLzGP{5$(NC*bY&=pCA>4Ey9SuIDSR zuJb(%ZOSf9pULHU8nC-Seg{pAhL*st}gh~`)Ju(-E|n9-adwx?1hZmA58jtbL?re zyPHPojnUzx-&frpZ-1L~w`pezJ4PO!HN{kCs5kt%c1_5;bziMIMMyYua``yTo^NiV zO&8&HT-{D`_qYKjwc-=>UMCK>tk!_u^YP$?+tm~gL)`UjmB|ZrZ>ZFBZI2+q{7Em%tIsI^s3xg?wR1B zOXgCqJ5GCbegHgn0I6=iX}xt0m=iW$J+*JM?u-z$fmwShj|>fb4Bb}bbiH8~K&sR~ zJK%qfGmkx6+GG#@C#Muej2N^HeVP^cj=F=RY6W9ASD1;sS3{oP?BG3YKtN*> ziC%e>vn6o(;dXLc`sW74hvQbu6#BE5Hh{hVaoYNDVd!XH&||lqWJx&FKVph2)Ct!yM9+LJ3Z-+ToT}Wr z<63FQ9-BkIJ;BORqT^RkKrTnJ*QgX&rgwQ``KU=#?_M|6!R7%qS-~C6Osj1wpxX{% zEB~>uRpsDCtxCbepzM){MM7>87X%6YBWJiK+~2D(3T%DwkDy>*vklkQe(l}5ccE&n z^kQ*G&rHK`m!3@7{8|)OCs__+&1ggF?#opVQs#IonHoj6Sl|S?2H^K@9=c2`2w!|< zKR$Kn<|TNkW^+AY*HGPYJew!Y3BBSI2XKC*-Ul*ZObAKr1?^*Sw$=4b+E1jgh-n%C z^WI_!dY8#O-WGoQi=(`J@)yT7LGS68lJ;~w+Do{DrewmRVa^3Vx#mt7?h*4#a}VcE zeorZ-eqnSzd9F9!w%gxs$_F-_7WX`H4+$S+HtHP;l@|vRo!{RTW>R_HP zKBizR<&OAs`A1-%o}r`$@77Ars-x12r5){!p2e|ck1SqI&>KW^;W(b$l`FVK?{zW^ ziW!#$=LmNz+bjjHeFcSV1v=K;b!8~cKCo_?d1%d3<8XB37*1QgcGvjf5DNaAYQngi zlm_&oc|v1bws%!K5UGgu@TKs{l)2dGv=N>>rhvJGLu@OYyCvq-PyB=E%Rgvg|79o)ahZJT}9}s0G-P#@9`H zquenV%B|Wr>-3rp(m(SijxD#@7Op?c;!4Ez5{p%=vabJha%1AXBoM*PUNapYT12dK zhH(aMe({z|(-V5K|CZT(Ih;W1Zc|+9eOjYZjt&`=b>RcyW1xI7%^N6x z0|r+BO>qX>fw%fhT}Rf(oC|y5Gr%ysuOQXq+_(ep-ra}4+eQ3t7x8b}Mey?Sit5o=LUhUjIn5LK$9IhMEM1 zBniQ*?&=72Ll7&Z2`SDKgi6+#7S$1cOO9Ao>?CHx$VN%pT)b9YRyZoK z>S^!QljxwX5zxK?u~N^AXU2qI78lx`VtqCZ>qQ++F{e?EG_0woCFI99 z9J}IRm{7XX8Y5T&CtI(`8i8EtNqOETC%==uz%i6=lqFAWiH3tM3+Ww3M6?xVbIb8$ z(Y~UU1_@q%a!69~u4qcDX#TyBM`i$)$sB)`54Ay{53c?pXFU%Q8cSRjdFX;2xp6ig zpX`!G5yon%B&l$LW>QAZ-~bq zq7UZWp=2VeDV%NPys&!r*^2OX)ax(o0c%|y*SzizIW6?qU}*)1rkWbpo#)_HedQEh zsxj^y6l1R<)AtgRD!FxQ9Z&0N<8PMyX34){i3AJ@bg<=u!r;8zCoBPGQ*w&}<)TO^ zFBg&r&i$*f_n8*%{67@Eitt6)Opo<>~8cmT|kM`~kiT6UR#apU{U(mo>8vqgEAcPMyqqM|2i z!W7=HVj!?WaP!66K#ukzXfGJt489-hDUZ&TYX8(%j9KA9=T28&rFBOSxFvzg@8jDl z7nJVs^ua4Pp0bTd`%_~v`QW2O-FaZU@1{1zxK?ORp_1ZN5P-}TsHkujycYVLv3nyf zj@M??s89c)qpAYMxEx;-2m4lweu9~lMtV+)Jblt#f}V{V1CYztB$I+aghNL^zZ;#z zScu&qs<`UhR9P}nVnITCLro((4AGi`JvirsIcetLn1)qTZv4zG_k9Kx*&3m3p&f`;01ROe(5Z4VBQ;(J@*I~`8>2Sr;> zHCi!nZZuZ;G(^J2tGEV!gPClhUhSI#ips$j)^$-m4cL4E;d6@e!}$^o*hzP5?QS~6 zjTZ=3?sAkWJm%aCwadwiJ1mFYW!swNzVz9%{^_dd!S<51U}?A~g<-HtzS+$#bx(bq zRFdP=eUI7(ih{z$HJvztt3v#E9HP)8ClZ z!HK5eoGfE3(!m{EVX=vkI7*^r5_Y_%a6+#(ySje|T&%%+S_I;fkWKLWp zLI5(P^8rB&={is_5Zdol^v%?qVP0eF*dB|d3hjAFad^R}g!$xr>Dc*KjUqGy~82$M&ILs%sC51n}m zxDkRW{nnk@K~eCT2(bVxM-6T`E2eFAFSxEa zCGOfBAE+mc{S!I_Z{>3Vms#LlJB~sY-2S zli1&s?MouzYl5x+0axV9ouqK@4DBzs_C5#O2+IpAiXXq2yKHi^cPrZZ!lzHYeLWP7 z6<7AP>^JrGH!m+Q|Msf>P5}Q`3E&b?aeh7+P=@=51t|&R={_7A`3w~s(oE?@)y(0dnz z0ft}#CAlX_-{^k=8%X-bz()rY6A%(XPOV@PETAL+MtXu{V9F;j5%g?j0LLc{lR!{W zLNEkIgrRHzpqQJO#Fvy-MfFDpKRo8yEQ#J!-CK=X;>RkxLMWMB5Kic4q1vlZ2)|}e zU(B1tDvF|KZI20ZMFsf;;>fD%?3N5FH~^hY7gTvvnM37mWX13=vytvx$h*GG0hf^+ zf$AzbP5<5nNb7m%z{kl)I&Z>AM8)*P&$MnmAI5h2ab5*XyO8P0T<#*m%U z*=DK$SIvq=LV>a*c(5W_W$*<*H3$@gQ5K1bY6A_NGPX4@)GZ=u{aBMioWy)kY-%GZ zsRK1N+HA&buN14RO-L~2CMRLCcbiag3^QKrCcsZcmoytyex5YzO5Ia4u^3|Zp{?Bl zt-6JerPkRcQiw6Sjltwqrj?E%X@FKusOMabDuf*E@QXQ6&$5M5aioQS|eBUW@+lGyi$FC zWzQ@CdYl$Q>9qHj`|>2YDDkPAYl?i z%4C)c1U64y(P%%I#b|`+KyZ_m=wy(ZJuxtG8<@2%_DIFg=pMas7K2GPN1|=&R(XNsl>H?4o{RwrIjLZP`tkxlblS1U~V;>qC_pl zLN9sM(QYY%0h>_sXHN!0RtJo+&xz@OK)&x#@GTWJ)Ap*>IcBn9&tP zJ~`@s)3lw4;L>vJ;!FMelm&w&F4e=4`TAk2$f_+`B6aoLz`o=}`t$++jTZzIHn&93 z0?`d@^Lce(!yD3N#<;g8q)0LAe9|)05oV)=Q8fhAqI@MyDG;gUyEX2WYn?a56esyeSw!aFB{qhI#{*f z3)Jp>7UyWoklnORE?{76jbUt(U_jlP5rH>vZ~eLA<=jH~{MGz-<(3E@U)w2?sL#A3 zahhZd>{ryPXI!Rq(?w8`k@94+Zt9Bu3cUQt4EmN1|Kz@akR%U#yX7!f+~*CfPc@>| z?+`%t3f_${Iu0SO+Y;0~#q{-)Zvna7qpXeOirn1}uv@#>s9WniRciTuPbJ%5JP&gpSDEdOklDTZg%Eq9qR@{7Kc%W8EK{>{Ts z%XR)8SM+vn4EhRs>@nt@b*>knl^WM`{_*YPH-{M_f{pas(H-*?Y3e^u;l_j=VN~gp=7@4eBD&EBO ztm+domf0EU{cYI(2J629s|1(0I5&(RNclN4CPk6r;&6m0mn6`NibsO~S71HU^8Hl% z55ao29+2|$vt#)=SkJUT+S5<8|0%GZ7`8veazP;QiD`Q>SLO$U7aaq@=!tC$w2%63 zv7Qz*1Be9S1I8^0CM_{384Z>w9sM^?GvsXc46x3rrD1=<-NxdGBNVO!3wUf+3ckaHa$qpOuJ1-vIw#I4OKRT@1EoL+| z)nJ#Byy7OzU$S43IuyTBV|q|x;ngNFd&73V`qISYrHj0m=oaOzlEv>nrxk3c^zQa9 zPk`LYpz@q+q%uYzCYakVx_wmGm+8oC%K4Prsxx3}=T?TiA+i||_*CJMbQTL#*|Z2l z*`KS(0dzj$)sm{U%Mvx+6jU%kbVk1dam03!6of3Bp{7evL%lCDZLelnY=59TZ|ym6 z2*>DT$g|FMHXdW7XfyC>#rNcA8TZFIU^^#(NzMx;l>&?8R<&UJZ8G2N%Ui6kju~=i&ny=+K=Kw3RVFFyLt);ynj4u zeb-I;Ja999l8-BFQjyWR6bHJYtNrdMRVuK(T41#CogB8V~!41`bZ(@8KkR8;?xuQaDqlIuc! zTvWBE6V9b!t2tiqUa5qt7;NnzS3od`5dtrFESB%dS) zR&NdlXUM)&5fMnvV2o1q>&7<`U-f6kWe7=ky}t6^kz1sw!5Ty-xO|gA{zWV^B#(t9 zkCq*WIvu@cn`ZH-a7XA4XLNRaM1J5vzX~aw-=8D~Od}KeMCM#6h#2)YDp$(Uqan^G zNnK_G2e`d)eAaaz^bLDj^WGD3-@KjnKp#BdrLy5xCZ%0*buL_2Kxc4Kx%g0(HM;Yq zExec+sHk(;6(D95sQjd034W!Pq_pO|_OzY+E67rSQ~HW1IFRl)&VJ+U-{4GKQbLpm z4*iZZetv*t;(TJF{9FhzegxOA?6YrL*ms=$P5TdVc6Kb^arU?Meu1+y?RT90P5Yn1 zS;F6N_GdZA|KbdYETUta*k=IJ(9q8R@ht#mD1X>z#DIYY*k>?0sInpVJ$krF43iWV z05%{#2}Xxt0BOCa8$Jqkb& zQT@YKuG-qs913yP>)tONst+%;p~k9o356tg-kMkP$PMWR!*2#;5GtU}inV-EwZ0@{ zh-St5rb@ohb?LfncFc<`jc3}CW3Z6O8=)LvodP{}77;v?~d)?Azy>Yq&T;Grt}(Dglr zg3rq82IFzJYB|w}cq!*%oD1ckWyO1Ms>#&okqeDP<37nmS{+k`?K`DaWJ%T$nR|BV zGVM4*fqN>io@2Z$pc^oFFFLrW=78b;+Fx$!CEktVY|s;)VVsD-CLXv(+Y>K$HHTL9 zEB+br?bi)y=}9x>#H<QI(0$>G@(ko0`7>Sq#6ZsZ?I%Arrsgn2A{k@47Q?PmPeJ zoy-<_X7olpZYA^4<$f%_fyLMnU0tK;1k;3;sap=%p-gU4xmOh(G6}WQ1*hVXY z%QEnQdJO}&wrIfWBFcRkN>6_LC!rptPud_WA0mu@@#9Jlm?S zzRu}a^3lY}tlGQ1eoA3--{S`1uET7gt)%-1}EL(RP z5BUP~dUlP^aU1lZ)ivYrT*Itm^X5nHt=>l_i2BCdC6fA-Qd!@$@z1$mj$9PGy1Ip% z^MxaJi^M+Z4sCwgbjb+VSvZ<2nE8#&-^lzo$OMWU#dx@(K=LUN96YI7;THpDobkhv z+&}>&FSqEgka?yB5^#T_{fEdrTaW*z>-_?mXIdZu_b12lpF(EbNv!bCc8mbjFfdUe zC+RvTUd{j6Fff6@Ab?Dib3h)>A2ZHCkQ2)e4RBNvV-NxLk03fS8c|wqdMpE&VMerx zB-4p02bHGijdYh9~dp-gW4ytuqy^Cp>1MW8ggP0dDM~T@;i~l>e7;) zuIi4N{4p-;TFv%UTpJPqpcpVFv;8;OnNc(P<_SXp}UGHzB;V@jw zr~FvwHWw6_>{>`#CFpOCTYH<$qDLSY`~v4?w44P!m&6nzR^c+!!Di;#rw8Ik(zsN zyz#=M++)R)iqLCFI?e3XIV&;WNSR5J>f6pHX_?*nNP|kCG2k}5rRCH~OY4Y+)g5r_ zMt@V8bm&-_O?L==@GDwmk^DvXzMEOA1Q$%Qr-fW4=UZbX9t#_ zQgP-w3gDzn@p^-%0Kz&ag6?lu`?C8hsK(_Bsuzm=S(n^s&tB>SH?dj=*#v^RI@UO*N#mraAIjwl4=f*B z=D*w2fx8wQ^367W(nKzeTGl?)Qpg{K)5h;V5K0KzanlUGCd{?yI$C<6hVMWzJ2lq0 zT!XsFt~UW9d3Tid-P7p3^gR~^s`Cse;w)MYd7)K?cW(!M1-Y$gZXFp5f8>_g_zFr` z@NC3oO#48Y+g`lg+C0az0iTmQbM3RG7*qgORP*nCQ1vVqbCIt zdQOThkQXV*;A*~ z`B`?}s8W|~M6jS*J;TQ0c3;?0_NQDkdYRZ$C?(CLf)TE{ki>l@GM9EC^H%@9ZZlgUl`rae zy38zfR#OnJbUc6klAip#Q03Qko5|}`kN3LSI3vbL+G>hE_(o}o4|r7a(TXz>bB2ud zKb9s6A?vm$Gz2k9i$Z*SgJ>jj-aK}i8~c#*q;u-}AY~XNJ}&g`^DrCIhwjcH-8>qj7}=JnggAMx9?J|igzQVzSet** zi$BT_F56eU9Pldiy;SWq)8^1!f9G+f)Venx8H8)NKCRM?-U%~E*T`ix^?Kh+Ikmz9 zZxy=6#l31nWRpAfnte#7VDO>)(nr3cJ3Az+no27Qj>+A#iv%Wi!3%>)O zzcYFMRVI%(63K-W<^Aqq6_wzH@rz2pcqO=j`cZC)U*hze_Pdw)Z`yx~({Jm2uSNaa zdcVTyH|=*X^WU`pDVzrV-RuR5M^9@)vn*MFr+;S20&!2EY?SaM>ggyr9h1%e8WRHYsxme*LD~Xp}6P4p;+JC zu910;r@h=kuwm9*k9TwBwK}>V^3FZ(zLw}bWv;4dHCh@;Vs*s{jhGJ~TXzr?;lwEr z9&|^!OG9eN#VQ{=(VdqIO~Ncd%Qc)?<^h-2vE@<(=LNzFWgmmC+`BAKFcF;OQ%&-z zZMvuOSjFqwx)@KI-R|{|T>+Hr)nz#AV5cFed=brNKwtFpe!t;a{@m5_OL% z!q);l^f|5#iyi%wC&73-azrM~m<*r8%5P4>4MYfb1xwt>mVHF{^hv7rpK(|S;VoDU z*j|;)_I_(oU&I93x+&dx-F#~i&8Nk$r9tVVH#xyR={&|oH}S}@(z&jCpZjO#rZM$i zY-}A&*jLwFBke@POHR|^P^xZ)H`yW1(FH{Yu>`)nPmOb5*mkW@b=1bPUUC{=FFa4D z|Ahc4ddw)#)vGIe?5yg06B_^M+%8wBf%xia z)h8GQ=w|d?aAKVTu4EuD_9Tl4L`!Etj|G%`q5#8MAt>K%*i(=K!B$#AsHpNuu?dWu zhuFX#`D0RSa~3>D;E?ShcbCb6h~YYGC#xtAf?@=ZHw&*JcR@RZXU-pQ!s&_XsD?`U zd3Iuf56r6hTE%(qxsoUSAFtfwKDuR=P+OI5c@WK#SWbaug>pV}p8g%^Smv$3M(f4n zu$?=FM?mY`i>2rel)-VY?mFkUj$^Jzj<#Y?3`N_?-eob!7fDX1f`P^Q0!8t_N`oLw zE0^frs3Wm9xB8N?MMZNcbv{`6Z3b9=B9h9_5WI1@hLOk~++4hZCk6@%nmb zUcZ01lUm&%)h%SZ8bto3NL ztY}X?Q%OLDp-=J=mm=z5l)n<*d?u=3+KBZP_B&lSZ)e&|S1^Q~kA2KLi7_}*q*TCP z=m?r))oi^NWL7?5b9}qrXw>+N3eHK|>B)*r$`bD#>B(339Awo{L` zt$#{8PI*V6^J0C);`|U#*V}IWshRRe6^lZO3nuZYvF_J*dq=$*a!n?XOs+=W4&-uM z&P^(J1n`-1v4yTaTPLqaF#FGvI~;nLv~dp&Tw^;nyQaMP&)BF00)3rD<1}}2vJ>Fs zv~lDxFt#-`;V`nb=5#Z#ae}T1yV)5SS(!Ld8=9C|*a*^otZk&FwlEf?)r2c> zDcFgbm|IADIGCtT0j+h~EG=3s0ppdv1L_OpP`1ZmHHDOXol4p(jtTL&{vC<1}tP6lr5HjZ?EtRQaUXyjmF=VW1PLw&NMfuXIllOXL07fy^=;Ap=u`+q%G|Fffl z!moF=wmvxlr^}ueLHv4eM>Tgl6HXNqM_XqHBNG)9Q@Rteoq(8wiGh=?gPN`F?LW?< zlKH=~HsRt3QE|AK1WX*p_btc@Bq{-;%f%$bMd6}+zjWT7X(fNE{fBHkTTkq#>-~a_ zXIk-}YX9G`5%v3q2K*23exAI50q-WzWB@3zIN2Z&3=B*R3` z7z+ZyI**Noef|P2uwA%ty3^SQoNu4~sQdoe*B2msOb`+1$2PM-n(beLtPl)zpmOBz zor=IH=)j=76Ynk1aTfKDIpwF7BPVnOhT+iygruPZ0B9gaiV4(?oHR@T(w6=}FTh9; z0U8inwFhFXqRQ!D-;JkDFeKzhM$YaMqQ#F+hv2XgHaLif)@(pk6^LZ8hO|s@)cWP0 zVkR%5`iqVD^=BMplMx;1kD7rdZ7kL%;7Gp@G9N%?$>66Mb%I}}=Q=pI-hbGCF=Bs( zGOJMGA<-OpLi<-&o8;K29{6@PJ0BhD+Y1--Le-X?US43bnCKc1ngtosVm z;FY(?cr_`bQ6(5Iu72K8Eqv)CRzr{Nq1?`rieRqG?#zuG!v4nRRk=KLoIFntrS8`m zyz0|mSKpTisN1tcs7&Mv7+vXTpsD>bGV$8gmeOdKtL?G|Q}m~$X$9-}j4Q;$QFoD5 zS2yg}$P>A#bkufV;HX}Xro~8C7~(A@TBCVUg}oqVBQg^oT7>2r>bM^LU>BF3^A)MF zIG(%jqCBtQN5*Z!qE!zsRWp}A`Ouvr<9uI-AdwdR2q@)Z`A(kiVE~5$lBx>dl!1<6lE139BzsDBL^Uy6 zCMVUc&HSJZ`ViZcweU79@>yrBP6`3NkwD6!UYP5U84wQ)lS`QWobT9n`TB+O;UOFU zflo1}pXH2h_RBgG=oPxgmyI4))OxM2lETiXX;vjlZ>yGWJ#5osKjd&~j?1fON@|%2 z#2pC_kW^b`b(g+4Ykc!}P2+D*=)YonH2|f=y?~0@$BF z(f+?-(`otr=?g0G3gGGVcCh(Q-#@XrjFwoAr^?*^)|EE$B$c7~V(qS$R_Gh8ne9B{Wubp zK^=6p#EccKCGZLYeNccgG0x05>mM3cL z7`78Mh8A-u4iSPIR<{c430v1~*@HE1nOpQ=PY<(_F()9K#O)0lGx;Me^6yGzmDHt_ zXEMw7ZN0u>wJg%xN3>GbWMZ*8zPr*!G*DxjnoJkn<;H7C-W7$+55>!fK=Ij4svNT% zhqpE}!$Q`=cp_*6s>&~tMJ6`6<1!|4q!oVdjn>i{tSfYt+$q1;s;R)1&n09^1b$o~ zg9kBg!X-s_8>mX>7uvjP%Pe2spho9ld`UG zI7np>ODHO;Dj7I!$Y~1Mc5o1wxHz3;?DyE7<|EqLZEso)3>3ZD=hjDS57O+UpO>mn zNoTeCP~2vEl+qlJE{;Q=_Ws@?rFzUF+Gw(QXRs^h6`e&^o^hSHtFmF+%L7+5oEuDD zKFTv2ic(fobWBKePekivWl+(1MI^7p6^-=1uI$?<>J{zEvPt@kIW|8^`tFZe&x{t4>8YX4JkJPi~6FB?IaSg7E?C*1%={oqr# zCMqV7cJrsh@+6f8nD+s}AOz}30LLXADHMq%`V{8JO@C5Lf&w|o(fK2$h=NZedRk2a z6qA4rU=U?mV&6!T^eDQ&rrmU;PV;ujYkpE!_p~i<-Tk1V8alE!3CBC*D0duJ4Ydo zM(&E?b9w8wD?$GBUFdkMiYiRtTPV4ML@I60&w7f786PtrK+N1+CLBw7V#Yly?@f2w zXtU>((3gM4!Btq`?03P5XxfmaZdxi%Xa$KN{6V(Gcg=j~jfifq4CdbCm{P`hN(v63 z)u|`Ld5>+Rdoq9JZdHLv) zpZF5K9oH)@@pqq!p5-k@JI=aqjA-{1<=(U~x!W1E*W9%wcR76KHSd-pceaGSPD;}A zCVhRuvJzgb$`KER2DbW$d^S?;Vise;Hd|-9L#Ab;Lqm*fTt=g8qVrE<6id%Hs0J0f zza1XooxN3Fs6x>(M-IV!D873yD*EMsf5q5-@ud1a8;gFPUTGRyekt`mCW&UWef??c z=lg68`j`9Ho@!N_WEZZ*`NRRT}C5WKP&s8O@(h%q3Gv7Lo z-bo}v>hsp7T2Cb`I|8bak0;(uxX$VWgS5!`&BtGxFJ;jhRWG&^4kweQDMk@7V5;`L zyz}DY;-S@X)xICggs5fUl_C23Vg2K#?B1=?$LmZP0#V_2`5ROpeg(;=NQM^$wtg0;L2S{n7X<2nseBvd%e z+cj5+`zZC$N>kSJvQ1VYhu2tN%G7gV#yJ`FzQG5^DbETx6r>gsuM$L=RcDqYhP{3> zjLjJsB8jz0bbnQnqKj@kdP|Y;-i%H9SZ~o_q-jTi?DUYDLm`xt$LV!}^p1E>!gJvf zqN6(D9D>GzyhFO+WT&~`#Qhyc{5N4lUN}FGxCD@i^T$LkJ|2D~ub7wwH=Kt@68TGW z^h|qVK7O0#^;hjbB<|UIKw{2M*87DydZq;ubAF=zj}iB;mM0c47v=B71wjA{_>a6C zRCJ6pNT0ZSQ2=}N#92xLA||B~g`V_u2XbvPjLw{;sNg^Od|JE$q~@Fs<$@U41I|_7 zJ|qUr@Gpru3&X8fVrNPvQmr1PafW3~aG0}3L*n|!p2@@$$vm`fp`rhL#UXjDS4oT+ z?r$JQkfnSDfn=9%vBSCg$pb_222lhSHL4AH8g50v{Jx6?CO00u1tjOAA`1!6n&)02 zn4s9-%_-oCd6_A_b!{-CP*VW+ZCJsq^;b|R0w%w;Qodjrkxnj^oQ0cr9_JQJgMmnn zCmp>%12&h4+y51$FRY$foSvY&_J9`>vDgB;9PvtOiuK-MoKfdRPEI;AmW9Ebxbki{ zi*6s5s*qW>CBFn6A)AG3l);E?&*|m|E<2tR-f4=~&j*HwdzNz_@d{1R9^O3|yyYw* zt<+LaNW4*AzkZ-lv6yL|rQAYu{V6L`aCW?`wesTPxTXyb?;NMBYBmv?*foxZC>DF$ zxM{`_L!Fn|N5y@;2wZe}dwNQ{`1m*R1ox?)`ZzcjS50>>R$rePcAjpO{=GanAf?|wSchmD1&zH05iP~1Op#T)bHM6{vi)z(!LjP(VVev=v1 zI|eZyJcf;|w!1^vJ9~&@YZ_k5n_X|^eN`MxF}4uxNWs_o8hd=e_B;aFYIyFxAv;$O zI{NjC?90GF$dv6IZ1!~jce4W8N*u<5_I2+t5_r9a_u_0V*VC?an>Xbs+c6Nly&11l zN%#PCqvF6nH|@rkdmU>Hk{e4H+s7zt4JvC%dV5u`4xEl9ODV)AcN7 z?POUukbc)BOuXt`Fym|0z$yEv;;?hjaiXPcpm#7$8{5=+bH5t8+Y`6FN;`3LTzJ!4 zbL0I}E1~#1Ce0ho8Lf@KnfRND|Bi{=2q>HvsL?!Q2?D{7;h&70L@g z)dDq|KhgeUCZ4Vb)M)->y5E6rc8cm=FkEj96FABh-n9)hHDk{)c9sIos!Z$zd|6%VfqpHl? zu-iwSRoy-WFvzp6o1LMHz z`SmG+5(Zt=I~1r!Cf4BgrAEq2Te6v8llv-Dra=d_O~xh1*Rv%|%kfb^P0L`CDA8&V zdFh*#n90pU`+IUwxK!Ta6nk@1P4U6f+Fuir1Sdk+w7KxId_eWvYxsSU=&n7R6 z;)CWzV{Pgssh7buqWFN_<;8z!*-79x89V6jnRNLSRcZ^Kt%c*K47^%G&-@7P)N>%+GFCrTQ|C=& z!0R7lb+39;AtyT=?!yh!)0>fk z(I4dhRCfQgJ^xkPlLsmZ5#>J1J@~>RQBiRTp!F##D#jxUg+PAI)Gyj^O#MOoyG;G^ z-Z!TH@ZPVO`bGPVsXu7{Q%v>yVI=3QvI`i^zk?Q-Vm-eb28<2;)ei-lo-jB-*YiB| z4k+u=5)cA8u0-H-m;#yV-`wcefmJXLz)~?>JVXa-2$19INT8Zt3?!r@{k`$I$TIlG zgFPMPHvS6_!N)6_4OV#DT1Gjz3x+WwQO=ub0!X5Hb< z^9Ht}O@5EzhzUcxXZG{zCkG-6hNKCXt|&G$Y~|;;(agNP6t=L;CTP1gm3p<5=h`8@yd%$tq3-~C)ifbQF z-;DNV_8>3cNZwvD?O#v;OZ7DS%@Le5Hr9JUG1k)5)o)*QqRV`XU$5;)K#nQ7Y?VByP z=nfL=kjrDXX=4qfc>6=@i#mNf{IT2fEySOOJttZCZ+cdUE>LxhVT*6+J#Eb$T0vj# z8@)ScZjhUI^)txBgKAAFHfTU+(Dq%`%h9ESi9jdc+T2@5&Kyx{n@`P~9Nk@GgEHOBMGS)cQvm)HIAxqq1aFPY58%PRr?i-UYnaXv{t zC?}YY9}4{aFMTfbT>BRXzt{dYlh5A+qTVn5eDM8yzhv^c7KnQPiS|Fmi}ggf)|S!S`+;2v95)uwnfMgh4bS!zW7 zPU8;j)XLg;A!^Z;$?~f}^6M{}Q zg7LOme#QkK8~Eo_8(cT=TlY4`t19a5)+`+{XQ^+E9VqeJMeVwi%`r))usjQIhq;qI z`|QtT>>nKcD;!DjbAvghc!Ag)sMPsntT?xnxG0w-RFX#=%*o09D;!;D0et*K`UH>*O3nZf>oF}8h1Fc2OuboJst_lzE z1u%&qDu6IxC_dq)ssptcmpX7wi<_Q@z>>(1A)XI~i60;o91JqdUnBzvb)G3JiVZxV zYD|sm6S;*1WXk^CF2>kl(P@}H>2@%3r{`%;snI-5HkRj*mMx$UuFraB&XdGv#i_9t zkk7>D5et1)B9{!_X!bUSL1#Q=_v7%<)G)P)5+fA3L+8yG;R(Bni8GJ??lWjK7SGAC z9~V7UhBDXLXMr02Vfo|d%-DmbxjxhCBqUXaFZx??dF#WAV>eJ-Of)60NhV}zbeZ8g zEG->tDQ1O{Gd?X|AqZlyOxwCy&`U5XJaJA(mJSLNuE}N*4}uZuMJ*hH z35{+r-8~AcZkBCRcf<=zViORbA8eHOhFN2SQ#^W1BnVesC`SnqN8$bd_xk)*N^t4pzK(KXvgTFzu1G7Lr|1y8Z(inuvZ z$zHsok;m1M3ZE~+;Wrkvu|xuch9jo<6-e)6q_C9ty^HS~XswkMilltiB$tt(L6el} zTQ%kRaDB0#c8-ip5$eZW#cf-QpCX(0jHtYg035KX&_Azfc1O#zu%%)EO@7BEg@e3X z$T8@RJQEK!QNSm&@oWXnBt&X4UMyI8N(N4AMk|?uoGF0>JdNm*ntb^g$vzy2^Zkvz zHm<`b$-c2}fWZB7md~I|b?!CKhElZaVV73>JU)Xm z?hbv}jpA5Cn|OwUlycP6{;|F*o9BI3)3NL7@yrM9vWUC(UhjnJJdclNx9)Xv^cQ&? zKIq$J)%(+i{L_Z~H*H8MKHw^dI2SMu^MxZ~5}Z8zJY2k7l6-ukVxqt1;TJ714)YW3 z@AB}=dqDa2C-41=hhMZn`SvH;{}c~Hez0di{M=a|^1Ize5E2X`GVIw7Bd~vojPcdc zodFRG03rw*7Y7*_g~cPVBqRch0z8C1q{FA@Ij122Ls(!56aIge{sBvf1y3c405--3 z+L2;7NYoIMzmrfMy){<=yDDW;k|Cx^-rsRa7xo@kaa{ZL)QRMU$D))>A#6{G%k?Nt z^P}xZXRy5IrmlZ#m@)2%vd(pjqrdTP*Mh8)@+QH(Ec$znJN#9*W&*~W!s*3Wd)a+4 z)6&Yo&)F&!m)Y@P#M*hWCXT8rcblyCB-IDFnO*m1Qoy>FG)Wzu=$X9=J-Zeir5bM? zn_~H39*TkVl^L3vD4vO4VJ0kn9$BeHF(3%by`jHJ`rfR5DLy=!O1qcwGYHYn3grW#STF4w+ldHSx#H z3-F=A2?4?qZkP-#5vt8OzRPrc$~JfT(Q{3`o3gY%kI8ri(4ucX^Dt>1w<(~tFgK@s zOu**FW_PesX^?wg@ICB1!K$&3`mfPSt<5*!Q{31DEjwvhlH#&%1rh5M>md6?P%Eh! zOjTohXEVQiamV}0+~OU-H}g)h?~L0TLaD2^8B`woInJTEY2RaGBB99Gwtmnu z^PGW$tSQkYj8n0%!y`{)>x1X*Uf&Qz%=i;f~u|aryf}Y_spDb6Fj4mXI(U`e_PTRw)Jw4X%;5OJ*ruw{A71_8)xYBvKR>tFSvm2`@AE*e8&FT=7L^3^h;u_l zd4B2N_|COJIq@gj-{#f%d*A%vkKgk1`)d%@HN6XnI^On%K zbO<$bZUT&wnWTf#p@;Wl;~8pvjLAnH>_g6-eedFghQtr2DeJ;V6TZmb3UOMR!|d{ ztNIH9H1qiyG9gVJlca6}4cb1+Ak^k(_a%*G-Eg;NlXV)Bk7J&?j7YADRX$7M(lUtc zy{Qt7!kTZu5mgooV{YAH{!-zZl$|9;QKcP&rsys)YUezDl(>615iI*_Iw!cr)gN8N!okD8eN z9{N=N>@EJ;TRh)eFDsUzexYO|!PG5M22(0b@gI7CCSVI7vc{LzK z1_b-)f8J`y>W0 zx_VYF)=FFl&D~8Zol`@khg$TXH^>NUn5AdLt1%T4!9)Q@?>UvF1||&w_pBY&N=T_I6p( z5PL0Ui>uvDA?{2S>T+K<$n28wqh5@8$C7l$?4a5K3+qzN8;Ghs(H1VVDIT~kdo<=KH-dqTmy6bgUyRI!{Z*S)p#{! z_t2Gjm}%c)UwV+S)V(t~v@>fhci{8<%ja0h-wNgkI0W?pJ_a&Y0xt5vtfwaZz6W?HXpmS>enz% zQh7kOF>;S%yo~pB)#!D{u8r`>&Yhv0-K!}Zr@oo;?^GJ2%dKmJ*RKAd-k*luziQY? z@IrXGAYceUi}RQ@en~C~2?+=fKNpk>IRD81E5mo8<@%}iH>r2=9_LTr`vvtbwBVm= z|5MZp`(dUN0SO+sXZ%B$%^CF0Ph3@^f&X{+GyiKa~;xp>`Kxl9g@XnA&NBei=Ew(D1TzmhXVNdxPn0Y?2eTZ-= zJ0?rS&sV?%6sU47VRH-C6Cs%n%)o(+MyI2C%8(6xq5@0wlKn=O2tt9Po*1{XnkVH} zdcc8{qHw=v_VG;&R~%It_4OEW$^;c<85mL0>VaEP4`Ax~dnB-B9@@anqR%Ml_t+(+R|7BXyi!hI6f+TY8Iug>x4liK^l&~TSi9^0Lh z7oy(VLyyHYiS0PKIt$sj+R=F?H{jnUQR7+_T_s)6V;jhnc;2h({lJYhI_X49J**up zTH1FRPHY@g#?evt5ejWcE%p(#AlvzQB3QyA=A#uU?sfLJFB>8Bx4Gc*nI16fDpbWT zu!3cgVI9jHf(4B_glP>irttOA){(5BBi%`wiq@5?v_21{J4A9{b9@+4KOnM!u)?muPu4DA= zW-nFIGVZ+d(^!7JIIpLi9b$U5w7;+2!l zSgmm2AL_K$YUw6=y^4E-Q0ClGv1;65$DjcAJ=ZhvJ(@g5V~pSVU?4kEJ{G*T z@tcz>f9&3$e9>Fyc2A1??3M*5urx0zac1}UIQh8w`GAwh;(QVisKhVxMK83#()>@f zzX`sJ_kb?pPu}|l_%5_Sm+&Xr{}lLsTxJ07Ji-41_z-|x(X-AR9O7B^^6L}}Q0WBr z<$;7$5H2t|2?h>B;rpnnnb07g89fBxmIeIZj2_(C!n~?64m>r2Ph>IPrUOJRssva3 z@4%Zg9Jlonn$H+`=J9@>F1|8`?!KByAqI4O_d^t=tPC|Z=r-vL^_3)2^p?QQLl|a6 zD~;ioG8nry)whp(}6&^z%a_R?+j(gi&H|-`@*{6%F@7X@HPMvsx$5N)F zH^PJ&na56zK#jsi{Ys`CdA}Z3I3SF*wP|`=GNMpcdwdgCWzN_&l#Ib~eH?RQUXpm` za;^y;KUE_0c5@!w3Q*QG-9u-yx9Eo!lKBwu<6k1Tu|6Rlylu^?yz{2I%s@)Aa3Jeb zTLtepiLJv_FV}W<*URDp54g&_-moJrO_P$)5yrGgt=y-Y=JXmIqbQ%A^Y-ibFZ!sv z1Z0L>qS5tnM}62!ldgRimzRj->Y%aF5gj@iHvHqAiqwYQ%G0`fUi>%icxzx6BkZV~ zGWsZeZ?45wF5L=c#b(Hs8AL{vAw*8{Pn6PMjHQgpmKawcM+?ikjb!1v%MFPS3@6YF zPm7-}R(7qDz;jr|(Jm6qnwvl5`lz#7VM*IuF2nH(NKMNZtgAQVxIG{8)ML!rG|@C* z?4JDd`q|gZ!+BwFG)-6Kvc*-pva&2nSFc=pw3YCoepP4#zdVH`u;u+Yy1!7bRn3Y_ zVO6(W6u8bzcS6I%;KQsCQPAGRZ?53|q1GR2eWezUI4_SFFvD^2yS*qsFFynz8J`q{ zPf85>E4wDeeXa#&IDVr2ZEBsr2lNVm^4>40b*=?^g+I~$r>GV5!&*Bs5X=38Spy=m z5#hct3pi5vzsx#MR>KCO)qrF*0x%7&u}?Zg&4i1a5c!N-z!E$#nEBVxKXB9#Oa)L& z)CWNos83Qua5sx-0CM4dmp?jZURfT-Es<)kH&_mFmaL6n#dxM3&5*i#azxvO!~jpM ze{*VqS_mCOYN5Hp0~8C#ns0NR))kBVB`Q+>p6}Yc(xg3k<}w@&ZI*DJ_)DQrcvW#@ zwdf97SA}g>^5aCclb`4a#@Yo3>StS*p-MYnbHv0Ab0AN?ZcLGRrzAAB+mY4xCc@?& z7)FmvY;VJ&^Y&~5Zm!RSIv`a6=z#(0%4;yn!!a#d@$BpaF#|!YnET3tYc#CtGqASNy$is)y=+DF3;=Bdm383 zmGQ*-UE9=a48%7|4ZJe41{ET_6Yxk?joe&laCzLhawxsJG! zbL>P=#r;MoF*Y70Pbw!{vc+8i%y+B#qwU9P-jKn`Ic{A$I}94zQ}$^O3gY38%qcf= zS~HjCs?m8FlC0C5GP2|N`U(msYcfHWJ&z%7#U`{IH={Tf4vxOrFu&!H8J?q~2H)=1 zQM>1fyd*^P>O9fHRJ>@B=AIw!_4%(^HU$lg{^nZSAI|;Z+*i(l#YIISe>p5kF)kp< zj1xHgz{ktYC-rO2ooTs%RO<`2e6Rg&&YgeDUk>a0_kPK_bM0R)^Ly=oigW%ymL-uv zh)4kGzMD@03>Yx?c!oNpv&+5TPzTIS!eRr3MMMw|V9)RYe@0{Mb8gOn@+BO?Urapf z!coEDz=IJ0e-=p%5ySOKFP;V%2jp^pXV0#YZg~mQW@wfsPtv)f%qF3%XK3ocO3IZN z7`gDOQc)5SMFgNVUL}LEhNm{sz5}BPr>a~Sj!r4@A{NfLQ3W}K{c-&4il(9 zz>5j2YfboTs0DFLE`u-~u)<@SBt^;&y2eQHu5pm@M5W95BBFvW^T9sU4|}Zd>>K>L z;FI(We#S}Cv{fl5Z;q>ri$`(suC>n5y9xrw9@miIqDZ6VC7t@IiXjTb$TTx9+&z8_ z`ID7klf#nCOckr!0tGK}mwdB58_|*+9L*mio<3!aAb%L5>?xYjrwRQq)HaH99i$ei zIYBEnrLjmkUlhp-&Fy)AO{=5M6Qqy@UZfmk9f2IIxWyy&^1*TCSnRPA&fW(f z`I#VxNJO+q53R6Za6{y#QQmr@&_C6_vKe#9ZOC`nyPErvPeX5wWU zKBGH^oTjJ{Z|(GV7{^-rxg6VwSoh(Hct7E6i_4}ohpj7P>bUl!29*$H z8oRn7-12vaOZf5?b5$uX+koA9I_3=_#UPgtt@CTgrI;@TBUX<`;B>pCDznS|?@qb9 z3Yqn}L~nL0x=U$QOb#n9OK$i~5FJ`nXABDe88rDbWBIRUEP23EoZQ^sJRH9igkK8E zB?<;&NyMR2lD}lz7wtC>_k;F#+4kkVZyxT4_kP8;FWPS&?g#CEifs>n@Nh`TfJr+e z+t)eDvtJPq;oy+~umSxx7^JVB?0jMSESd}ioc%+>rxK+WqX7m@(jicw?szs~d3NgJ zFaHKUJ0C$MiVIX85%2)EIhaIkMi%#cw-qn3#sb^F@TT^9(CknfXd}!3EVzqO)NqdkD9G~1y;1|8GBW`mU-0?INE2L z?mbWP@enSFGRZi>(7=iKk(xg_CV9fN+r^b&rHN_`y<~i9sx;$&XKiX|C8%pRzCy=< z#jDpsH&dEUSfjao%~o$h`6e$eukFx{i4y&#Qd4@fYMpAQL(3@g8y#a0PCO3uZg;7w z_@0sC+3gRz%1xM~KlLqg z&>zFv4+jFpl?dOj=Q3@>PEWflrpx7n<-@DiCra&VYIg&o*zhxgX4Zz8lY($_eKZ2$ zXVe28(!%(ml{_!-(s`PVAq(!w!&XW#+}@83C8(RjmZiKo?+urVd9~N{)T&{*U{wEo zLf6T56*syI!*dc@X*;&$FGGiO*6TfP3cR5W zOTwX$d=?MaSw~KkQ$hl`M=Qz;=H=m);^O-i7caEmuGjvc{Y@@jya#ahXW#Pk z-GdA5U$^PM|L^#}!$kl!7eD_`T~$i@VOI_Th%y1%Xg{38MLxeS4|hh$uhW;nLLEHJ zS!5>&>+B#d6#+6eAtMUd_&yC6G{z!Z+7c*l0->G2KqvZzM+6c+L10+G`B4F>oe(_W zbOb#Tfw4nmRE7k;Px`AKF*TF>;-+Sq<_v$gfyxH_A4PfuRur;y^6@U`MU$%HUCrJ} z(Mv*3W6XTS(x|Cn7KwxTgm&4_hVj)Ui&q0Rpnz5}%ol>q9o9qo#gBF5q7ynVy(xK| z*e~L*edV$J5!mW}YijkPdUXv6Wr?3;UFRDrty~F4Qh0T2iI<`+fm5K4SYvVxM$LQ) z2QsNka~78}{NzTJ9>)a~L(y-bE5XEZzJCh~O2RJ|JW%Cb1fe%Ee6f%<-t zZc?b%Oqqy3$9G-N@=lm+ACujN{WA~yiDUYnnxIDlx#91axg?fIYl#zY7-(l|NJ^^v zHO_Cgpz4rBVz(;z!4!ZJ`ed+Oq`EMJSzihr8kuUp);WdY3EQCF$*>oUR7H1sm*Hl94TtBqk^#f(WD4Uwn8djzD}@%(AE#IDoi- zLt!9y<2GMdqehp;O$OzgyB1Ve8zm4BnW>l)5mBEqX{!V?-G6+`;@ZU)J>=ZrQd?;b(7}~Gs+_iw$>kIL1SWVC`#W{tsySBq3_>+ngp|z`zN*A#R?Upsxq`CzKmj>EuE zHz4Pp$AAyNkn`*=Q6Zj9oj4wIVrt(N<;>ykFp8DWpk(c|Q=?Pi)k+St&!FJdq{JE5 zdv}`_QsWP#rhA+y)MH=olkbgKR*oA@mhOHAxtG(q?+$#_oHy}Gd-KW9z{m%cLsN1) z`VVRU41NBqp-%{~g)Yv?^Nns|-26Ne5C}gH6fDWlFZs(8O&8j4bo)X3+oV1J7QjV* zA?*+E{lbA>d<)>Df1>?Qkv8TB(jxz3Xc*v2;Smu44+@I}M06s4wWl!WCz=4(o{{#; zi6-EJAr}g;#}Fk>t8NM``vGfxNQi$OJp`8h04IuYHUtA`R2_VPaT()CM5JOd6B>fe zo@qzZzcaSOoIm0QebNnu@Z3-d85+HOTT6o1{nQUCJZ+{CTpm<$*QRol2v&mAiJ`k> zCpjEJYNikd5xK{7j&o8{Gn`LuE+N1Y$+3YA-@;Z$w3^U^e z2?O;Tsb=TAF-YZnmdSN*JjG_Dz!VgFUWUJD;v{_Mv~UqgzpRLNU{Cf|+X1N_k>>4t z-HrLnW4E3@!|%UGCOiZ|hr6mc;U_f|50|@*un6HE-b%B$DrW})sqP0LWUy7=>^?_M-wL%RlBc12}<#e zT2j!r5hE3li`z0oL2EtSdJbDdNV9M&LS^Odo{0Yqu*#=rn`Jgx*1~dL6Z;!U1{|ji z&S+Q1(1)PY6@wMIa)XnFTV>N*6Q%rt=;Nb$*9VoECx)M<)P8hH(dv8g5f5$r#1@d(=sRo1Xx*qimoQCZy1GgAo5{w8x5%0{J*ymlw{_&;_S}0bVpGZPNK4#jJO#o_oh~ZQi=Ng#*R4%f|YA}?DOw>(A;yv-tP`PQTWi}2zH`-*>Lj@r2jzr-$7bj z3@XVf^%vau#6=~=rMSewT)>Kk^dqA1^0<_=1_bW($(f$Sa z@3sFaNGAdi{o2m_Qqcw0GLX)V`$d8G{1-%|^B}b|LVsID1Oe%tzzxMOH=XbZKmctC zQGm@1Q6DkWXbHM3i?huPSOjD^H1w}e!2lsL*l@r$qA@Tbgoh{!!A~!K)kFP+#*|ir z004HR*!`$zD4iz#cY&Y5YN%n_77s-gV+ItizG%0m_v}n$x!lz@{BGHp9>+>7!^Nkx z0zp?%K|Vn&FY$UTurS$-&WO#c7K1GN?EUoZ@pa~9HZ7!rtBx73bj;&mxZjGQAfxcR zPZe0$bmscjkNueDgs#%idJ2E(zBP;qC0`K_La&=e92KJt1o#i(nkb=ka1PUU4! zUX_e-bk}tYVK*Ke>>YTBdwlI#DLzG&He0BZYSC`9QWqy=#x&#(s<5G*B)oB$)BzrZ_gupGo9rs47 zgN$7M_9bcgcy2ZeTdW>r#4>TULfx0O?(n|x(T$5qSj)ASjH*@@Cm~UI z+>e728f25@A=a|M|5T0}9p*J`%k`Hcc1Rfg^gRs5LP!>GKh!T0tDG2h7|a`~jmtDm z5iQ4s4;QE%vCNUHx|zEz`0F`#IIx>eye~Px*sJt(shr{{7KCw0rYAu}!YpSS3=qA8oT%&qRzM8CIUKS1m>i4CwBCDy5EcbbQ|6DMcwVzU_m zWn+tz3Lsx^Sm2Yp;IYxQE|Kn9i%Ip=*%QmwM|Umg>L-PzqF)f#ZmH1cdm=RH9HGq9{{ZZgXEP-fNaJOo?Y%q`(jC*A!FGSr#b>8=guP zL6jOP5(jMT0|D+>{N3Ry5$kE`29w+LF45Na9?Ej+C(P)evndYnJL5v}&2Ez=nPkj7 ze~GXwzXJ2ZQ{XjoqMn{QQ{|`0@L-B9n;W)=Jynk->E{_7-IK5nA4RvnIrXnU5bFFm zIu^+DT*q4Mgc$cRF)B`8z>|R+#g08v5km11I5EEBbkRGExmi-l>LgiRB7Dt}Q>lo^ zC-oS-ATHR&196<3&Dk5|@UXR*%_MA((2Iq%0!ein#UgNh`n}WD&GGPWB=H5Bil_R* z@Z5KYRe7@R%adW529H~%gt@&)E-#QC7X&|EBTFlTgGuLo2M%I_*%E-15#oG(6Z0)K z7~eqP`BsKCiJ1wq6eaPCSFH|_k^v6e65Tdf#l#b6x^;6Cqxv;q6ym(cu72io&D9TR z2piu(Xk+!)#MA7r;|D)b-%!B_U=(@VJb$?Ihbv#W!UGnC z0w;HYplcv54QN*Ki%W5eNl9{wi}69FfbIETH7hT)XB_xv?Qe4B;yobf`X}%Gf-4tV zAn5uh+W#I`{!S188$eRp_w7pH$~_|dS=2Rv7a%F^s|1+U!GZ&>+@GytAYGif7Zo#x zaM7XwSMGsm8K8Rl?M%aY`4k73WfGpM`3~xH9N3YveP^?or*vx0_e~xQ5ZHi2*kH>96bCFF#tfbWC7Eju zNW?1mFkl76?q_n5U%4ui)^M-qCL{Co+L$w$qNfTTtYWSh>|(Q)$Q?u)AMeOyrnMKV z;D_9_>kxB!n?d4JZSZ>xiMfD)4!D`wihZ8cW8C&3lTarwJqum9wXOf!tE&tUW{DaWje$3}4PGJaWd`453XUy#6TMAO_1-|x zVFbySF#vf4F`S*i^=dYorD>l=pU;ydR*BafGg$$sxJ8m{Ff(+aAr-o|4DMRYoJQ&x zm`&s|GWUB)yT|pzx?Oj39Bb_BgJy3yuMh6I-L}+HVa_gLlXm`;me6LXiPsn1-e_DP zW*HD&%h(7T12K7_-*Kw*kYPAx#tlfA6pWjB;byiMulXu!Az_C9}jFWQJ z)oP353QVjDCMm9^D9k;+W;n!pq*L;iX>Gv%4`=@j%l?~TS)Q}0STUY6|8~wwJ}wEc zBrqEU;T8j8Ys7!K2y&r4^KbvG{cX;kf6F&+|M)FG9}2qomNWnM&)@Q&;%v}aD%)3R zo);?t%mRxbzXUB3JnXk9x3fk4v!zEMlk|+VRH8HlU@?d>H5ctUXMt^yzw%4ZI7bHTnd&r zBcpF%=VE2Y+o^);34Owxpn2ZjfeIi8_SuSBNdlhb+M2v9n{(3g0Hm$E(gu*WxQLZ~ zX>0s8S=XM*E!xqCl$1w7Z5X29Nbkt^WgFyosM>f3axwTeBt0rg>bKm81+LZDIZxBx zCT+f?hSf5$o@|^Fr|}v@$&AQ*oyu>>C8hkOqx`$l0#&@%D5#I)a@|4MV*C_7 zt@q=^y!u(?sDtTvp*3+wR$XFAsZ*E6X08)PN!3- z*=&3U;wUBH#laNt-b8bV458grYN4T_?v>zdP%d(!zcQXoDYhRa`SO_kUh7z7*wJN8 z(S<@*R+ognNZ!vNlE_c`%HgFRBmQ$wh5N{jv+|pK_(QlNg&0^j84kTZgFeQ!`Rgfk z@GM_xc!;(Z^318*v3kLPBnmvFF5WCU(fX;(kRUXnp*3*-#C;gHV~!`**(iOf-#SrP zyq$c*x-`aNiFlMa&_Rd|!Y@%8)4|Fvp37xvz(SS=)@H4s2PZJJRHMvUkgaqcmDiD2 zy*%+-5@c9uE*t-d5^cK1#Tqgl=#h~vkl8sd$)|*Kdh5+hL5Pb^a{r@;2_(l88dh&g*{awU5msATt z0xX0(Fu7X&tPH*)_Vo)%JZO7Ce&U6h#m@u-X0|P@`(95zBlA39W>XYB-<=_r`f|ck z&=eLSp}y18G`lhU`aUF{9edZi(|Tx4yv@rGV<&WM9!3eo-a#rR@r{`RWeN6R!lF%a zNr*gFCluj(k-3%P?`Wt!a&;IQa$0Ajca8b>V57@&&?Eh|{`xLWJV(Kb;9SaSb9u0Hkq)QY z+AAdo=WB2gNU#BA!=f1-z7yS6k94N`2XLnxm$Ew*WdtU1Z$BNnQ7($TA4tSC=3`FoGDKy^ZbcQerTBpb5c3*C%8o{m2DZA z&;t;1BgyG#wkFx7k#fo#@PU2^h~7>R-viLF`;KPCXOO;UHDQ|Qa<0(Inr~Piu_FUT zEBw7{TwD9V|CX-tTw#kBO)T904ghKaJL|`TaU#^P7Z>0!$l8IwaHS!uW$ETK=}8a$ zol2>FDZ2i5TbOs8K7&FDV*4!Y*A~3$uN;D&tP{&tbF>{UaCe5kns>b>U+lZT`*1bn z+|Py)#Bl~1o44IYa*@w6t=%Di|^Xg3; z`pI4kZK4S)z34dp%uantk__j&`({h#?q;RCO}@$MWBHSRVEYHQ{|>h2yO!U4peQdC zA}IzqT23+Ga3c3F4?^*9o@>8(;UBcW4cqhgzSXdQc<-06J=cEo!ar#LQ?Ly@>qq|G z&!WH}ApOG5!Xg7_GrmcH*;`;`1@N;-*yppifSWy|Etk)?y7B)Ong1EKQTPPkSB<6Z z1UI%P5Dxl;_{L1x6iGcW8SDs@CkeVhWR-r7L)g7 ze}`E^>hr>}LVLDIbU=$-uo_{Yw0||u$HgOVNd*16TD$1HXGs|Fk5nFt?%;Wo!qULO z&`g*e-x)64Pspo$7@NK8iD z*O(X_OjoRp$KxZVdCaP3dvQeBR5oE0F2fyRjS=ZA3RxFtXx6B!zs*uyAvR~*?hEqe z67U97&s@g`c~}}A(3BAyELJDJP3!qUtK|g1cD*sKK3TSDA;xLyptOH^w~%y^yQ-?K zZgu*YjKFT_3Ut-uxfRi|`|$HBWov8u#ZQwdOWcJMHignU0uxqZ&z^^u<7`)sm~PJ? z@mznbjdy)p_IZwP*U%TxLZ@zIKLT?FBe067q|X^)5)#IS>GE!$(>A0vE z&*_JC5*+PSwTs_<)K{T?TC^^?eW+gg=0*Q5?&F=6suNtdRKxL9Q8)8=dP#bxsF?PC z+(lIefj!D=p7NKFsg+LjO!FsPnV@A>Sg8PI9niWXXh9Ov-pHYmuI+C$Vz?~&jTo`% zNkx>_EzDp#p9&o0k9`IeT^$d0eV3Gf8M@opY8A?h6FlZ8oZr_p7vnTtS*>zU(alfG z8e_(Z&=S^b@siEuBd>cqY*-jBI&o~BZg&X?vSNed?!|UP+EybmYEsFmFQeHH2AlVZ zD;MT;G^K%X4Vq+m={{1BzOIfuyi&Bh2FvwHDAYk!lk7w?@h@}J-P1z#_;XMaxkXYGHAuK_=VE1)3%6J3EK@L$n|6wtJR{+KrZCSv|8lUxLqky*T z_jol8Bh_)xSQ4-=!Yj%KKe^%(p%Dw$>jb%_yX#f2kgWLt*uz&+FsE+gAZ(;YfPty8 zTd6f1UxRA&pGQzDE%_&~i5aGZFsV#R#uOmN z@N3R>)x~!5(bB}!G?y7K+Op)*^ET%8Uas}cp;~M5u-ue}#W`w|=={0rI0o_gN!6soBF<{s4FWJcK2m47FeF{jI^69-gg2`O}t{Tq$jzf zKjs^Y5sL9=p=({`z8}`*Y4xLX6{G0-r25Qf;fkBorkO_=hirtdLLnnnm6ddWeVDe zfH2W}By{!z{bhol+5?m@D2xPzvypDOFF{-s^76;86dN2KrG-6`xH;@{x7XYxNl#&c zz4&?NKl9M&k3DGR&QjOYk9+Yz~V)`a$}=X%0!XO55mWDx$1ObNMp!gLXQJw-Sg-rDDx$ zD4CLYz}`eNF$-9mumO9uS!-RvXGP_ufaELbQ0#%rAl&gg6tQ`+b$joRvAOliSp)lh z@PP5Ck5(;WiODYs%L1sc!&rR=RYb4Pu3^M!Ru=so|af2k@voQC=5tejPq4>^L*|l)joGA1JGx0mlvQ?3`C>o=1~RZx=fNK>R2RzCE=wJ4G3{4Y0iO=azSq5wwL} zEYudG=GtZP1T`;~(HwauhE~+-vQdOTNRa#92L#J}&zGr(R?K~Ybc>9_xc9U7ip803 z8pkIv&7%gG>c$ltr=h50Zb-0>2ob6p!QwyA*4$}&&f$1mR&!BmCG1BoIe74R`juM0=tHsvB zkK=D>wzg>s_pW5XyzCI;zU1`~mI41$DF&6lBh{+mp3D0W9QMlsR@Fp_!hrLwJRw(E zn0Miong9^|R?6Cmx{1MH+v@d72ilrQHUIIGk$CAjmz7n-L(NmR_`0lv44w=<@!iVS zPZIJRKAXiRBjkr^s>3yYg#rwV%_ZZVUoFs;nV`>P>kt}ohe z-1|ZM+YCPcma|UrPrl{n!&4XEayF#=&)WYKgMT!`zy|4AsrmmO2A|DN{bilcW~a{F z@cE1~B5=|Yf(L{t;j8^HI`uEiaOIg9)*s7XpLZ_&VulYhxykE<<`gF0@lC-9)i;Mlm zrI8G|5(7-!E=*r?&l-9ZLDQod=+sy_A98h#(Rxp>?5mOXhlyi29Cr8ZBn|JN>Q=xa{-VR!r&;5gNcL2p(U4!o8;XbN9-5vHiWV>^8Cq0!;=#pZazxD&eJlo9^?(M=!m-Tp!6 zq~us;1CbQD7J9F)ZjCkle2hdio~}_tvv)XL*j$_mi?F!xjWE4AOsz#LrEEDeL1u~x ziCItLC>d1_aY62Z*E1f%>l_Ts-(g?zPEPmc!&{fsoW!c4c6~Wx}+T)`g@-JHj6ceGoCHgSCwC!SU2LBfCzt zVEZ1`_Bdqx#CeoPtEqH9ngzFa)DnEJ&xLN?sG_@OQs|M8T+=Dl0&afUt`p(CWaVzs zgQG%Vmdfy*Um*j2VV+6@GC>?e8hPcS6K!~FTUcfPb_fz28*)E*9}_uQ@2Hc{kF3qV z*kfSK<8i(4oJ-#gjf|z-A>J=DRpsq`OV)K+W}3D#&)9aEmH+7;6E4E=XFA|`Uoj<)^}dv5_2<=%IV z4&6w%#L(%G!+?M@4BefIqyo|nq7q7jw6vg<64E6oARS5wNQZzRpopN9o_i48+wIox z-TV5UbFT9~-neHJX8pNwU(Wii^(!97D~S0^{(08f>4E|}wr9Nfb1{6N5LR&;xp~7s z*f{dwHyi(E6m^X<^6__764vSL{D#Jw zG3t-^@+&qz!v3MA|9UU~7}!Dvc+a#I*wE>P44lUHk9^aZ5pmB!|m#J!B}_d)Qd>?O%nQI zue0?#%eFar8G0VPK#diP7EPg%VV}j~R!_jZUtGLdXegx{6 zX9bXsH zZklMtEm?^;ScrS;6Ww&30hS4-FV^t=ZjWA~=FyZKcxgfXGi%ufXF zvy%s(=LoGAQJZ^p`Q%CxgHTU(ugJz$+VWImo31NEFpsZp^qaui@YMO>d}<1*y$`Z7$qy? z!kp6gsHpXp`Q$A>>c+D*^#lu_6db6KT~fkyOAF85HB7C0dYd^W-5*y+j`TL(P;V{# zvpa467kBzal*1{MJ57G%PN!MeNO3b6nFykFSU$5@oC{(J0y6&Xi?P>s5OGNM6v=-9aUfHeM|je&u} zxM-ND8HgA_`!2w+#}L#uY*I3eZ!-|7!N7Q>Y#}^^g)q(6#v)8$Zp4@Ci$Q%Xj)6RJ zEEp$1NSjKl3=zi~|JT+co#=G4{0%u;{Tay_*8r=J%W(RH)Iy^Nw}DFZKIZWCrjU3ngZ!JETZPYG#%_zbE8By!!c zL}tJh%f-c&wy0EkjA0td>|1;xbP}yD|5bxeyR-qn^1~W5G%1@Xxgtcg1IfGaAdbg@ z7gzCo=v;4^@V6$4#xo3HvP2@h z>NDPSfUQUQ&j(Z{3Mv|QJM)pnebUXf5M^&i#{y<)fSRKgj6ZZvvy8VtOetDFOv82a z?RR5I+|Q1nANw7$0U;il!4`SO+hA~zC$VJTFe(HkvkbDclmCLO^R-( z0Ge6?^HP{qP=tVCzDgu?Vwx%GWu3_T9Nm@kE|`xo;b1lhnaf9PL-99n=kL1MCw8;z za)goTmI-2Lg2ENgbUyTG-dy5!`qZ+kAYx#-(R(A8L?|_LWWpzOhEO88j(%z{bK{VH zo8ZLzd>ZY0tpmO0z__GG3<6h%9(@M!zqtAQ?)>vA9_qD#%McxojXvVMfhwsAG_{q4 ze%p`U>)p!_qzYWF#!y$95g&qUH}Wep5V`1T`gOrqQm?N(UG%I|pweHqH=?B1<`eSN zvhCpOQQhP*@O=GbMy>f-4cZE5I&Q0V(d-6sbVIy?035Oce?oBq>G`V5J5N;_Kj1; z1w}+;Aqc1l1TH9#l!yPysy@b|g!K^z{($|*e0+2--#GP$^M1+4N7!$1#Shs3Dn5?< zaZVFJ$SAM+Tc6PpmExfGy?sd-qxkqwGl{VPItJDSkbjv;e9XrH9ezTNFWK1u{|9o{O?BG_c%M*3pDy3DP(0?t%K8@$&U^@vpS}F7HW4T({^vqq69Kf z8J(jJqI+qM!876=^_V_QMsA{C@Lio9q>31NC^8P>mGO|AiAMI67&l|s z@>tv~OPDoeXFn)ZeqyH*iHQ#av!Px8O2$LyR7X5N^|{wIUVz=~KJ0IdTCq3UvX^}S zJsA%?axrp0+-h~~cqC6A(=9D-6}HVje*ZJ5xWNlK))i(Ls*7G_Mjsn?jq6zg^OIz~ z5Zzp^mdG3n`C!O-5@nqp8e(&5cn%>>gQH|z)0&b0X*BIc9>-ZJ4op$9JGy7$-#>AU zMx$=u9BBl~gqIGRh3u>yI!3eDoUc7UI4%N9cjSLQ8{ zaBffz-Zk7nq>?68?SWzkZqwqa(Bw7&GY))Oa?DUHc`){E3{`mFDYR?EI9CNtuI^BG z!wS#FGzihfKk2sfGjUjAvM*UZx3GTU<%rkHi2}o`x#BH}`i#+*C-y~mXG_;5KZD*) zr4Sjb^P6aAU+JXo!B2sDUi6TTC|plwhvwOiI!_E(@AH%M ze#OXNu)r$WpJ0D8^8W=!#u_1r##%kwX4{_QwB3Mn05g zQX7s@T?P{PH`X`lBb2u}(dPyEwce9fwUXrbP%pFWSG*v^} zIkUs};8-6M$Ai!c66Kkd_AFoupzwu{`!bpwQ)c2Es;b4cK@p3z_8O{~&lv%I+={=1 z_4Z+UTIS=%y3erOAnm1jV5U~9ZgTTwYxgzmOAo{YRfFN+9Ib2dF*6PlYG9@tE<< z#fvD$@p5^ftFbYo4?e>NNsD71v^fAng3Y*=ay_NjI_)&bxeM1FYHs678@Yl3_g#9LLf584@T0T1Oj}YO9d--`58T#et_#;I4EB3#Pmj9J; z{eKk7{}Wn{rNjYt{FDK-e591Wr{$O5`PN}5-&(CjO}D5;bCu`5ik3NMvv%yuPG&(H z$P+@h2m}o-jq-U6iN6)fyWVktP*(i8P=5Y}ma}r!myc-q-Q-tVKK(0N9x$EmopnqK z6Ek2nvc+PfLd23D26BV!8e4oZoy-3Rv@H10{@gD86G>zHuGIdS7bVHiqGcgkv%1l; zMt*x~hYME{|4hpZ5%eD@lat?M(tAqn0aezdJ9G5l=Yyq>jNXejl)s?Fw}{dz>WC{K z#SbMnzmZRzr<%zp2j??1$2ZN9@3}?nSqrj(FzFvSv0fc37-ORp(CnMUQ3@bJ7Ca|m zI}~KN6U>bAtP98;OVi0YIP|B^ybG5%9vVUujM2pqHy1sOdna~hnF(e)4R^+ff9KVR zJ*~#qo*Vo8-bCmF5qG*czRG~5Mec~_s<)Nc$wX)z!UTeaZ-ymv=R9G#0Yc)xe{*Be zhf$05$z5I*U^T?GI5{<4=7nI7r#Ma7ypi!w?iuj#=!WGWlQGW><57ay*tCLG_!t>2 zfH@v(rxM(>8<;$;L^;C}hIgtbdZkCt4mWm;KkX`dGq8Ni@QSj_b)F(AhIXbs`^}c8 zD3#m>XzI#z2o8 zlo!$Rix(p`HHPa?g{E$_~y$p1Q(&B}67j zI>QC*J>Bt}jeoQ8zhPsDuqaeaP7J8a5)(wFk;Rc>P=u_kEK~@N5E6v_(zZUv0$ol& z!Tv)wK0Xhy(0_8?FGTV&7O>ENg8i>zHe zD@Pk^fxYb5q!hpeXfPEu3xbtK5N=+^CQ1u58>3;MQqteD(I|zC>NEzby0Eaplv+Xv zphMX_-i7Tiy~c|*juLn|`sZ$fr!rTKo7`+tWD??Y#x0#r#j8@DvwwEaL^DxUGgYgV zIXRR)FVu#L3qejp75dmYt3!MwLgO}lbfY>$Fx}wbIk=Gh^_JWBb|Sfz-|`3wPw+ZeN&)pU4x(QQuXPY|ZIqmVFY<%gpNlEJ^VgUvW2HG3G?}F1`P!-+79GAFu_tj3F$9}<1 z_OOyf`Jbx@CwNnO+FnNBO~N)q`r4s$V}}bho$6Y;uBW2HBYfF+4CLOF zSI*GAfxvv+BGcHasI=nr!)r|R$ZOOdmb%ijPHg(RqF>PQf54l1`*{yyCN>?B;JTkM z2n;^9onj_P0FjL*&>4;oR9eua_F{8z*n6s~y$L@rBQMN!M}VftQjuATv@=7Fei(5t z&MEuTz&)GRUeR-FNy5f-&eIo*I(4Ad`>P8vOX}FfK@z6`)rZVFq+3^$@CJh;&wDYM`AB=k$ zup7}+^ z*K=(osIoMZ7jtY1o!|O&3x5Ws;VsW^9b6W--qp`qqZQyY;HE6N&oug4MZX^8?-I40 zUlUCc53^V-H>-J8Eq_ntu)*t1E!B(#PvTw}%(TfaF}){!!{ey}uAocUqTgZ+CeTe~ z#^+@Zn>}$%GP$Gnf*|1w69$VB@nNB(eu6@JdbU zVh$u}UY08tb)Mo>;G!5gHBqejXW4dQ#MPe!(zMq7( zxSK}*ck1+xiMzsVW%_=X+WX0gx2&?=ORk$f;1)09 z%jR1y(H}joY)-u7F@(4yTUprt3>-F&oHB~z8aP8IJJ%1eU)y5Zm`6WamUx*uiPJioN z&|`|1@7_zqOZM#WQzNv1&Tg{vTwPJL11%pA(98MH*YE=h5c8p zUJmyv@>v-`heQ++AM;D}g~vaGus4_%qa7{HV^Rb{C`|Pi57_gVa!>RSoVZi#UmN29 z|2b&-hBuD^9`r&m)y z%ay5wAY*UNv^KIZzIxN`J~v&V6s2d54)X&QyO3c#Zebm^E>$K0X3Tg(G>r$WkF#qS zqcd(z)Zb}00WD5j(X1$yd*ykcUwd(p>3W`8?>T)jNITub3Zotacs6^Fl@^U(;l8hc{z>F9W_2_U?wHHOLG4G0^Xo@R8D zzxu}f^uf8SS1WEjO0@pe95>zO9BUk2cIa$M!I^s>S)I-O+w|c1g;|?1Mtn6|g zP1Ic34^Z1-)g9d?bFI5PaxA<#QNnx9Z|hTS;YOG1V#2J?8J{(E_aIPK7)n6ejw)@09suc$jWbF>yNYxiAg}<^Pu6zoqxT zlitEeh&<$*e1-u!94RD^0Q5JordJ&Ks{}Sg=m?A2YkwrYf584@{ysYIn|%J^ykGM7 z5%!yf@B{Y0iob9Cjb)DcQ_CDM%z-lRuYFX2WsXHgj*Wu`NN<#5j>}4eCx|%K-YEJ8 zr1$qDNl?-oFwEg#a>^seT+2K*zU;5`y_nw-L21dwE0Wdoh)>;c5s|bvLLli#V`^l; zWXR{JS*flTeX*ZwfRmL_Cyw=ouu2Cyk`F=*rV-beXmDap?j%x>&PzWs%@JKC3|P&& z5lt_Rugo-z8a=h^Kn`eC-QFlxsG8L#CJGvxMMiC$L0dw9kKMC3(mAGCXR7fN3s+19oFP zXF*M-L4RK4@^dL1@1;f~zWmG|wYSxWPPN{OES__h*czl+o;|J9qKvo`*VDeb>5zI+ z$54j|VfohC%h$GqrzL|T36w#)pgxnpjEfJEec7^}aX)j^t@jQ*803>4O7|>$SrT-O zX_mX3V`0)qihy~qDhoW<-KM=vDPL7Pt!UN-zr?sg^BFX9rD=+1>b};qhAXo(c`5hC z7Z)k$MXvTGQn>kidK5zVX|?Adi2Xk03b=~Wa_?Xze8zSk=y{^^^&X7#ND?q*-@hCY z>{$6|bK;TzNbSnxp9mSEBItp1(-U4+au?5;uQ~OC zA9Bcj^-|FzMc2cBA-y$0pwDv{r!Km?J4>88<>)40ZslZQEnw;7aLU`<`IMjl&`l79(udB6=uez?Kue~MA3M_+q zua@w3aCWeEH$QG<_Lc%49WDV-E9%py05U+m#NA#B3`c!eW1Mi3o`a0hMMzwp$K?5SN3BLEyk(PjS&-Qui@d^rzT=NZrTh3H|iEUr_fkR`{pb z{|t4bf4eY%-(g?^j{x%lTnMlsHrCOFjg5nYi-UuWhlh`khe!DRg<43Dg^7iSjg3b{ zfJZ=df*80?oH%;X@e|>fKYfq;_NUK}L8Q1K3J?Vb8Yu{!6b*wE?eh~5u#6Go`@}XD zHZBexsvzxaQu|0b1NVxJ4zx@ITa2;(+@ghnNlJ!APC4+U%@YFw1I6Gjm=sz8LW1V8h(I>1w*z2p3t`H?RGvxUa9bNQYN|*tZ|hzW zl?`*f0=IcpG^MKz4v{nHrzYdFnjl5cT*KsBh7e-r;zscp+qtitD;8c+#KWDP`^4F6 zL6v{DptNAZ_U?3jATeeb4IAk3Ff%6%asDGXufrx60{#}WX!yfnkrnA z%}Ddyp12%Vty`3Pjyf{I+DlZtgKGVJ0p_wIg*eTVFj#ON^x~!+$@;~yk<9Ce{XI*9 z201>&E`xjvNs@hX4Ie9K%sDZtSkK|9YH)nUh*1SGX}E)mmz7Dr#o(*cS;7nAnXQJe zDiFKbn~+HB2D7{COad9^3p5Jd3`nAl){_nUVT%h{37tz?1v~rc0ySw@>K@<27LFRM z+|GmfYT%b8`Pn`+mx*b2)O_7@-JSXaZrR}tqP6wqQ?xD#^g52?CGH9D0?j72W45;2 zIbUCXH14l+IeVp5`h)+{q|ETv{<}r=o&C%F(0I$=a`d+x{Wo$H7=|e;Dvm(aQy*~} zTvS{f2^AL;go+8uLu7wxCm&-`_0)fl{fC@(d>*Qv`tQ&C1*aWjQT5b+kNwYZ8mcDh z%Y_a+0kn4X@P+6w&;i0iJseRS#utXeL0!1tE)*7cH5R~ZH~_c(=_}t}^6TIHJ*UP0 zU?=0?p$37VuCJ~!>KO-E7=fZRpph6I@7oj*3@mIkGE5v&atdJeAtjiV1#Za}%r0l0 zNX>a6A63MK4lIwrrYnYM8Hx9O-lIGP;zs zYOeJJ0%9FTFF+53xBJ#hv{utR-JP$Db(nIpe^6sta<)hFZZ?c=Qi_H@C;9xeZc!eM zz1@Z4$Jg|!;EPsjXpdQF@-WXczh4-LFz2|`Q!_r<4<|UuVd^X%bte=4m?ZV3a%4Mb z@3k#7)TFyS+0BVPw|R?J!raOM$I3dz9LT8NBzfuL@UgmOVX^9^WZ`_39ZV#^X^JZD zqu6M&0S!AppKjfZ=hWHkGw6s|RT^b)J&j;BF>yo=+mp`V^ns9wG+!6zl_)RbiYA^i z{RBNfGVBlc=0`c)p2O6g$m+{*0|Hf_fINff8)6}`J6j>n>n9(bZSa^XwR^Sdm*oZs zF<&F$imita3vJR`Z%9XnpB7s7nVR*um>oc<#Uo2xCZHHzXKwa{O|z8VR+d7URZ{GhM`IWhvN90=P@#_pKjS#l;d@r^4%X%EuZ5|6dCi*U!jjZFmv~OUDr%% zydP;7q_#Yb2n~C1FQqM%!Oi_1&xr0vj{%C;D%O5m$Td}ss~(TSK7(%izPNh#lki@; z{9(%r8F7>g&~9y^5SqYQ6voZE1wtk z1uOeg>^~&dx)37KYZqUMtm^rk9iG%e!2ePkX_o}78Spv8|zn-3u*0U>1yljZtLX8j558sPz!`Z!yk(zbSU@^H1Z*0#1`{R#%Y z)vuwydKUnei9yO6PiwnV^z@Aj7 zI2;a@2X?H3e-+LjVUduZV*fMmI;2EIM8rg7#KdHDq$fz}n5fCfsF}djs0++W&v^1A zBRwlCHxEA#H>;SKq$JRB`u&AQMoLOSML|PJNkdHze4M1FrKLW}ck(3j$&-BIT&%#w z1!UX!`T0eKq@={frKG;c!@q>{2#^v68u$;3DhBng^SvE~i7NWQMh(6H?u`Yg@;Dmo zhlYWU3G7(?I@u5PI#Ns)K`k=45U|e;3~Z61h((ZNWjC`1QO;Qewpap&7&^+@`qokj z0>XO0&LYz?$8ZTKYX%F&W^Y=wV3NxszklP}eUH?~)g5o9Pu*R5Z#gUM7p-PY)1kOi z7FgnP8^0%CG@!aH^Cc{c{9}TiapP&ZsfRojKJOHo_TWJ@?ZS`gxW~(q#7kJ*H$@cK zynARC`8P$lfr)UDLLo~+&d>89;TLdj3dBZHh;F^?(sF9JCd*GBsX>27qOus5E(F7F zNU0bB=HUbLSHG3;Nuz10t$j6+qMtCUW6LqEm^bX_ebU`$Mql<*zs|G7`X&7?X2KS( z_OXsL^EKm5z4FL40e`n%o%v{T7jYKiK2Fax&w-1TNRzWU4!m`gjp@D9oo{>SV*1or zKTXojy^mfybDNd1KF42NhYM?;Y)*g7Mup~s*hYh+8@ zhslZ1juo}2)2DU=al$hhG4Ab*i!|}p=qiSWVqf=DsH*x5s(Rd^-*KoPA#TE#J7`W} z=^k?1dHq};cdCKn28;*?6kW@`5J>4&KjB^?_D-HJs-GF81OxFXm(UxH?~v19XBY~7 zcD-rPp2l#L4B1xcb7yK)8J*IhsmcX(diW-e$BXpS+=;nvp7K}n_1_KNiRPy$xjJbc zryy@QIExXGuS9UWO2vhc4UYltp?F)Mr-0%$+wf_^46*0&_mUsac45Y5?yD$u=R`P^ zk%{ia(cuY3W+lOs+uW_|%TgNHT=+{v?Io@fW(~e3Z9|$wXb7X61hF~wDyHezgrI-BM2Cqcj z)vUpQkO8a86Sx!o)Sg#5#x(L_SdIyg!xZtgM+tG63mwGev2=6~C(^?cHp9I&GGkE`&-@jnxeu@2$^Sc;QOcn{KnPYwz5tc>5WrgICP!TzVpzN>t{Rj*FDfYjL z-+_@dM+E;h{0E*fG0=c*u1Bo@XM#rq2p%=K7vOgc3_QRy`~vyP?_^p+M@MnG(KS+fwp@#M0YKXSYr z50At7sJ_cvK7#KErx)V&2`%sX88#b;Kf|&fN_{qA*k?qHd7!b#eNPzXQ#g66Akbx! zTDty- zcFyz$8eyfQ;Ay+abz4I=mIz+mKs4GMFmpJV-(l8$OHA;(i_6$R3KAz64@BmSpQg1k z>oG9nZ*-z}v8{-~M^VTLSI(6-8tlQnbfWch1rdV8j zy?Czd5=(j7N?T!!WQ>QR2Q2JUxS>PjVCenZsl$Vn{I3ZbQx1EjWVlU?uhxxn+Ny&1 zY0D7~YG=rNOi%X~$%?;~7+c`ebLYHB-*?Wn_^G?=CVf!qyh7C}OUJxPdFh0)p}DIM zDb^UIpR(Ig@h84?=~E01ql`5jSaI-Fa~2#Q`wXItO6O0~UV(%Q-jnTxNsJ12ujIOi zB(pql#hk}jzm|K&-nLV%5xvjE{1NA(Ow~PR9)mlVnhA+Bwu`QHkYhVO{}_CcGf=&3 z(cuA=zU2qV`-5D2tS8Q@?{?4$GG;*bj-1IBF9!BJO_X1)v}~!!DGqb%sC%%lorbR3 z4tMeFNamA|XGAIBz0t<5sbJuvuPt(9zf?{w8g(8fdi#WfFmGeorDFd(ee@iH@f)2& zJB2sNh~zP?^4_iPVJDG{@lB5kwnbC8so^dYTz8m2Zi=lpOvInqpp`5}R;OGl^Y1+D zS8#N)zudhd{gvB2gX$@|8#z|Tp$gMUXxVGDEA)4N)eyx#&0EJI~f!pICP=6?4^+x{`Wp){@bGE@o0vSG$WXTEN3}Aw|tEP^{p6J(6VZ z+9`IMFxfILPi}!KxwH=Qzyr&)+PR_Fos!R>Cw(<*s6e3bmMtm}paTK{k5Bsk0U|3i zukJ3G)H>at&9B;;c(iBo`c+yzbZ_f5Qe)t8!KZ1~!1Z|zGI04z4KnXoDx=d%^GGA> z`Kv=)IB9!nkLGV9O+SO;t9+TBjy?Jv3H(PBcmKao`Y?!?xEvCgW&br2Kn)v2h>1aw zFsP6a^4n^hzl#Kpv46M(e~0}~M*@Nfm>fbLxQ8#1030rgKp-KqKtBrb1vubT{M=s@ z{enfUw)?W&?yuPYsz@O2s2Jrtj}ZeC{YdEp`u{JH044~C1W+kQp!MS`siUETzAAll zuuvQYu)H0iO)fmhsuP4o2?PUQv_2|)_&yFmXMqcnVE~D{Sg;E!4!|5ZiUj@|2z*44 z&Z;2FsT{C$YXYi)T}qh`wSk74DT4wx@bABF($7Hx+3CgaJ*y z&1Iyd(x5wxb!qnZwN%Ws!`Dh3s-joS!jPFz4VS!U`|V2%x^GA`UO6kDe}2tE@&hFw z>$W?-L(6($hv%)`mCFfL{f(pmPPYy1y6wz;9{eSvGseCm1IO^BSHwmU@DZ zFTJkcn}qzsRE>xe{%>XpRz7Uic9Pc!!0rOL+0o}RgFbw-#uo|k|C zi<;Ltggc|Va!)cogZD*)qrz6a;b%}jmifCFv1bt6iIrZ7yBe@8SdY&UYNV;jTAjm(QM4gmpW9iUaO5D3B4EQ z8^fCmEVI4sFb`;c!>E(I4!K1y^ej_bhb5%kCW@iPBT)6Z$L_eBxBV;ebzr$k14R!5 zyY+j|fa1JBLaHSh{Hw3jEG4?lGNDUd__CMg_7lh^m*VmfA$dczN+|*F{s}K`6>Myi!aNIVg2XRJjdxL^Sk%GHZXAd8_Dr|rT|91mdR$lr z?Q#Osv4^MBek9 zdU^Y5_%y{nWNYtHn-jkOt)=rf*xqSHN9MSpFW-nE@rO70qif+~E; zB%R1eu1U9NIT}GNs#Qs$Hja6-S$ABvuBfb+Y_y(GUsz8&%zG2@QC3AscFB>UN^iXD zMQ^J!xlH{`3*F+(%fxms=NYdqjoiK0GY2IHd+Zz0pFyQpOGskw1ZaKmj&3WZIIS66 z-Wh{>TI}4EZNpVJt<5Stgl}IJZulgGi@0!@ZjgO&K>g362a4Z$g8zj+0!&m~7$S;* zeTyDMVGwa4K$atsFcGAf{IBu^$5^0v_1J^>JM4ctdJsa$3d2R=Un2lc4taOx=bgW=nS~^-AiqoAOmqNSpzrlzN(0zO#iPM)M=5oBRuV_^}L=H~=1era(@ zVPRoOAY1YS9R8C$LGq8$1JG!KhK~J1`Tzrjj*0fgM?lBI!NWT4B|Y{L$OHi&0So0L z0Eq&4Z1w;c!Ae2-ws|hl&7!t$gysS9bd1Gkj4|M=68rug4$vh(}ol;V=$o zZYl`blDhdfp98-WcRRb6a0hoGDs~40OTr*!{>JLmC<#P?&#;f)Q^ijW&zQ2fXldG} zOSwjNV%&C+(lx+PGg>md`oi5JZ?>DMP1RIe1Gic>Gdb-o8HZhiL@~IQv|y(4(~aDjv^A$*Jt{6>Q;f{DRk`tG;8F_|BYf(C^F&bnwZ=HQ zmwsXVJ`BNoah@aUwP_xjtq3J>14pp0p5lAw4a@y7drs_4Lg)K;8RM?JL};U{s$q;& zyXP_As-?EmGOwSR=(2H1MPI-hO&I9IN4WPcsdAX#397*8w`+J}?r1ZGl&1JNRQ?&{ zQ#fl_R(Vg-1ndGZGuhpW()C&#S5hAv~M5 ziJzLETm6i8B|3jBHReKy8`EZCZxT&O`pUwzf8}IHnuR) zU(~6+UcIW?2fLG0YFW1_bx~w2NjjfF*{JqJSsh!hvs>83J4$Rsh+53Pv@~HRYnD6K z?Lz)9vpIaJ{~$-E^_`dU7x02w^($*t3m9 zQ7;+Uy+`_=61s-R&VJx=1=!V+kf?bGO(fq?l7%C))9KQ}<#WR$>r>0U zbmnFgJo_k_B$L+o4+{`}_sIOi1jYZkD&YUcN(JYCO7K8w1W-aD@ppEFyqqvh9FX*1 z2^j_hiWOvmG6r#Zn4qxyw_pV6Wa;5x?dblsXu%37S~$jj3j}_^{=))<K*b+Zr|1*Kbm&#$(L!sNqt^(R)X9k?F4{V?Er}w;d9Z6n%?u~w+bdo$-E9EZ!-NsUraeK;7{qbVOHH5E=YKW3q)+|46Lmc+Z>ihS`4ZJoJ zb_QSa_(we`4XEEc@a~a`Sqwk88of|smUj0--zc!ho;Et`?u8Er(MD1-CzJZPBNRAe zw<$L{q#oL{z4qROu!q}$N~er(ByO4Iz8TCsH=Xo+g4lOu(feHCx_%QIM4@Xx8Z)D3 z&IK04E_^Sjd9?s-FQS68c42&%$Gg;pn#oIjwd2yr1!<2*;a;C)sy$LiZG)zS_uNv3 zM;I|A6I!yYoQbuJ-Vddd*awg_wVf}g2`%PQe^Kd?IhH10(Qdj?J3*`R8D!l28MNvf z^D)ioV42aN{Gr?rLLW)WE91vamS< z$DnDmH{M~_Fr;MOo4AvCE2(wy&KEUV-~Sjfm}%aj93E>vD(;?U^znlQO_H0@*%-Gm3Ikk1KAIGwo(q;}^a7%A z?4r1QJkMr{z7z4xU9H&tdis{HvQ1=<6M_Vc2(z%|7jj5t}_E3 zzxcuu{fR1@es(gXb(O8s_04W9N`+@0cdyb=pOonJ$jopMwoOUlpqdP?oyTUy6}2YT zJBhqrZ0nQwj)#^iGs$8|?)zhFwo#Z?WNoCOl3|f-D&+&=%yR(BF;_ z;C1eMX(Lx{z&*%svvrYY^yK`2iI!zx zJzy-r-PRjPrOcyx?skMeFJ)2N6^2Z~(s*kqr)W>@&_+ojom>9poN({iq1&rmZ;L|D zpk3xAmr97Per@~OHYJS}YJb+W+Kn@{y09Qc_Y!z^uTOGNX^KcV=+o_pMug!`R zV|;!1@|Vy1&zz&*0p9Nb?@MK=yu7$DOjsVMEIrQGAdup4U<^1^9w7>pLw?Iu{cV8v z1^Y*y=&#s+8sL37Pw?mW^7FjY@y{XjQ|y0LfOi!L@PJa%KZkOdSb%YafrBb!WPu99-;2$C0m(o%) zxR%RX^Ja|Lfz9tjyq8t4r8S=sfxi1icD3tprUQ|ImB}tvLEg5-ByoCtEvn>FZIS&G zyM-qIBJrS8qWX#DX<966-lLxP8CnFhY}>l4&rjTC>oYjf$##~2DZ8kwXB|&YBZQjjaKmTfp^sI&%)yREFg?l-XU^lY~VpX5H z8*xr|1eW)5^b{t=JINLOQZ~Cc<-EGnVaDAyC*ZMis{YoN27)>Q@Dlc^vwT;ccAsW6BZf*$Q5-I9ZjT ze&T@#HnKYmhOv1+cHwQ3gxVv2_v&W+UK$npYV9!0{<$uKj;^k*yOwG7QuhjFgC=Pl zs1R@A3B8Vso0pc_ii_gLU)aHfFQCQc$PqjR#rMOh*@6vx11$#%Ol z$cd9lK-85lkSu`XnRLC$1uSb4^q2`sx$*vaWdfY8!oDY#CiRU4z&9AC$&kDGe1GOb z)a1y4N!zYWvI!q!P5;D`EkDc|rbq6t*A|{$&G(0~H1A08IJNH{t`}n=RV7wgTun;h zXU(O{FMF${w%pV<)cLp}|FIF&PwUJ-l<7pCdjI`9adAS0S-TsH1#RNl66?gF zvmsnvf`#UFL=XKKUzE9ullR>;WDT3ZDWSI}dYb;MTZ6lIbz#wiQ6CHPuKP_JRZ$B5 z4u4~+VtMZ=UV`{~rCr0G;^dgcvNw57Hx6m%{U_(Vn-D#=^EkXowEiV z*=_bO=XKsWdgrX=?);r!> z^MS#l*MrtT%j1cat~X* zxU+3nnb@y~&`l0)R@?gA95J*MZ{iKCp1ze7;1T+ooT>EkIAr+b+D*?f!Y6i>;L8fT z0`Krelz2E5dB@!%8K!Q)i3g{3^&0SEpqtVBVHO6Qw}!)v*sI*-GVrYLKYwt`Gx{>P zWSw4#IqK#e@_zX-)@sYK6zmN~(LihO_)?Y#ZW|eEqBwiLJKfa9HILdE#uc~bY3F4o zh=OwhB|ACF;m~s(O6MmmEQ&ook<3|X;t*^u`nbPL7<wS3SuEc^%W*&9F^zdjJEQYlq%2 z>k?^u-*f2M8rS=YdKQ}cFQe|kZ;Nn^o0FWH2{10YGE>s8mW)WE(ih&~TNiM!mT)K@ zejz3nZ#qJx#$jaYMrz1W7WMMOy|s}X&R3yf1qs-TUCW;|Ha^WqcJcdP@kd{w z_#NN=N9(Ho_Zpb;!cY;UknGpEP#h)aAin)-Mjl79*r<3F2h~-D@qKR*y95secPF^JYjAfB7A&~CyM^HH z5Tqdx-10R^CU@q}JG0ik>-X1pr#h=y>Eb-ps;aJM?{oIEkFoA2SF13C?XqK32|)>F zkW|A{qi0x1>nRSFbLQ>-uKC?HwnE!0G%@|3i}=Zxy~GZhR*4}P~oEVmq974Mqy(G~z6xm!d zBFmg`8*R00P4JRl<~ukY*pg?YPgboiL7XHO5d#3vl&9X?Jdx)^$HloburxZXe^r27 zH@)6TP8@kQEsK6K_JYwsKfHI`it6i=4#b8Hsd?3`hiEC zL^PFy)Cm4q7?RwLgKyh~#}2=4bW3$Kg%$$V&62Ry=e;D`UlZ%}L~&>-F+P!0f94-> z_ZW>vS)zQwD7bNFV@F@vum$PNjPN}W)wR}EqQs0+P%lH(A_Gj(L8YCZKH)>ZY*ib55bSKmt!Xk2|C8 z&RpzVPe4$AVobjuj;kOTXhe&1NM;MVwoeES22zYrn~k*&1~sa&NR(RaIjO2qGfd>C zD~nin3mvpSK}kXgG7(Gqiax~6y~D~gOfo>kiN=$GnYmO?)it)8gC$?o9t}5|RZ4z& znbNtHGMta`@G7);-8iE`Ke(@U3Ui@14`($3VR-C!$K04TVnM#u~xz`h-+%wJX= zPv?=LKX*&V3c@40!)ew{D{ChYcZC`Esye0hZlTs*Ro+Rws`4?>5toaCA(Af}yPnEv z`_%MUp^tFMbIcWApSW!O>~vo>OEsQ~dMc)sRxu9c8$e{jcvPkSRV`j@BE7y)N|s%5 zH4H$U4*dgsJ(uOo{u5!mj)Oy6>r6x}bN^~;{iSLZCd;TnMpa}q)G0nm$ zvvY2`!<-~du7BbQ>6SjGh zpR@Jer*6PF5T=VZ+7-|8J8}m++xt{=MgM{ckx$vkzdt(cGU+Rui&m9EH)Oz9mDJ4K zI|;J$VzSzMbfQP%^jGk*4BFIv1yORtsk0ru+;l1`t7ZeBA%n1T&M5%{e`nn12T7>B zWVbnq9A4dB*DG75{UBi?K1RMczDbFtGm;rMt{4W!9V?Z_w$sW!7PU>Y^jq0N5p0Tn zwkc~vA|o}4pc;A8ta_PQj^8K$~Ja8sJ}YqZ-} zn&PYYkCm2kR`&gHRFda9-jFlhFsG~tAqahSy~Q54)ZixNW)LOiR_aTH<=*RvXfJW3 z>|v&xcp2)flt>mnylH)+Z~r>3m0d$upnOoL2#KL}Rdj8-hRfz@@#PL0)^h`gdA2C+ ztoKvg$a~YTIx;6!5^1NwKcrqtkm~8D5Y}A^Use(O=m}hgbl&#ee}0rh#NZJiCji&( z3s06+V|wLTZqh>qe$k-y;MK0_TWBXxsZy6W2bagE;;ch=4Bz&uOmKJ~6LpK+Gcon| zl0zq9Pv>)g$bC+$D~$A+LVsKQa!Qz$5>DC%$dpxot>0s)X;37%Z2F zj=dGlA*Drh`0Cr0!&)-=Ip^uy7g<+tAXK<_`F2$UzTzOns=C2}UXWee8gJ;^iem?5 zR2)qgt{rNGNnkJ+SS(1-I0e7fKi)O%w814GvLJ zC|die(rPdsnOst`4L;Uj~vbbK>N&z7^n_a9YYRPvOlS*LnZSDNS$k*pn@^+KK1c^ z-KOAyhCJlNG@TDnT}=S`DFffcW92pU$uoM{=JpE|xUPi_4WixDFZbTwjX1Axf|HD( z>=2sKMBaLTFv_x0&HE@_I-ySZDkzUuPuDkx#pRS#gCpu0a8oC=FVbYQ4=-U+WG~y6 zkrYGesW^1xn^FA`IW{l`BRGNgYj| z%;JUF!=CrouYUv||M=YeS3Wlk3~UU7V80qL=Mi~usd(r^A}AstAjrYN$jZ(v@|*hf z|EdT4jD5(#|KG9yAz%729#}s5SL6MS;N$19JUCAL-^cPl#g~E}>H%Qx^SkZGIuy7E zzVyd}0GJekr5@Ty|P4YTcb?F_~byjRIr!)J?*oiSh<(jB}0trV)gg$ zVMygByN6}zDEJ5Q^DZWCh7X#Z`l4eCVXG(Id;E^^q_(G2Uh$e2JsAj6Z|-YP>$ z@_I~(b5tE~uO@yjPs&uSHWjh5@tvq=ErN$0m(L-EYw|Y$f$w^$D^9AlJoR>;h*|&m z6}?Pt3oYnzSmhlnJ!DVr!p9tQvwOUhyen!AhOXCm^|;Zfe2-r|E#NR5C&cPfJS~Uc zXNjz#r=2U`?#HZHdh^opwJ^$y7Brgnso7jt3@p!DO@2nCP9-Uv%oiJlnQb$PY>&Q@ z=*N;KzC-DYI;6GMa{mW1!xU zQkS2QTzttnuZ;EJROaPK zMK+CKhFF^d=L)yq)nFcRMX0cn>z?yc`^L=hF_}*X%3E8*GhAEL9B)X_>-Acv-S?oz z<&HYDRP+5qy@M;5@F8u4D~i%N4f&N9bsSz~w`N%T_2NcK&r6GCXNhluyOMY4$vBfm z*6oRP`m;Q->cskIPd-z>FT)MmTpw(AE$JH^)4{hWtFBCcv^noUtilz3NWR-DR9I%V z;e0dWSZ&WMl$qaJ>S^W*5KXRwMyOc*< zUPx{}$CmCIe{zupuTma5{mwV@364+1ee~Iug0Ku0&pSvNMzfaEDp^+ZIgg#_Jv6~m z>pG*rzKo}A>|c*2;90T}K&2G>*1)o!K3We==|>4oUr zmCp`cp+P2Q?jki+Z;GBpR$jP=+C!MCoQn#JpgsXIEuQRPPRZ!?f)`Br4rkhSUcsTr ziE};j*1jv_d7*oC^$kFEH&8t?A{%MGdE2v*SrMv2r&%H~{l4)qNnkmPW!eI-$k5yT z$yEr~mvTJ?Y&*U7I9v&PeF>TPRVzuBEw8XeFIi&B^h7tZutr9}C`Q7PkSz$i8Vhd^ zJtxYQ=Z?TbGPow%aXZHgLBFlSLvg?LJhHWeFjm^kNf5p`1~96+J%MJ%r5lY^2Zf(q zZVGt{n1yV#Ct~}8hXQ@2?J@S2DMx=%W~DIMG0}{3s&0cnwU)I{Uc6-J>!a__uSB~V zR$!{(tXoPwT@w<1U!vy-t~<@p4CvPA#aP#HvwPEi!~W4IZhd`~azR#ceS=%@p?fI_ z8LX(}es#1Ll{RC~FdNJVI{aByA9N+UtpyKC33&ej`N8eV=ot9q;EblA%r?pw_(ZRu z3P_wXoR`=7H-PROxGHBP<52|o__{lK1M~HcxQ+)ctrzj_EOQA>Ln9fhCZXK#-B&}9 z>XSFG5vu7BF@@G9wz$0xM)nArM$enr3YRXldq*zPUJ8i$;G?{f0+xyjXR#sryr)Ty z@&!t)z9*~n#>qU3a66r`F`eAyNV`Hrc69W8Nd(BqzsfpEpjG`?n|6JE&O)c$Uo_9b zvgA1dnWv5za#*GzUWKTRNmK>+{F3iOcjQEx*kgEdf4o#q2Qu}mA&bMsIz)V$C+~a; zKcWghY7d78ks_ETs}9x}%H;C993r8he~@&UM<{(|Lv`$iP_YIak4wCf8sj8*E(8fT zH8Zxs{(^}yPG@@pGy|GG1(mkp@^Gba%+&$y9GSlY?REOZ@X~J-cV`3X(Z(Dcn3cv@ z!XR9buaF&h`Z(Iqk;;u;z5HyZx`N$!a;(ojK?7}8j*#PuPo!s^%4VjGVmhz9cR)8< ziEmPSw)|H0>qXUx_u8`bIdwj*vS3SFb=HZhJ=EL z`3~s8JO8!)()c`-Hh%Rg`mXW$UIBpvi?~UJF`qICFp||^IkJ5hazDt{e+}^<v@#2oz-i&yZKCt&Q`cMbBtbPE9TArXp$eq>(vG5)CI= zH4|9doCFLh3glbKlcx;15hx>pz1#-&<4o67bJnZLT05kukdw-JLpw@Q~J^k01?OZkzcYj-Z*s3uloK%+i^qghd#IZ6elKM)y98@fE6fHhi!x#xLmoB-u&uAqg4Lb7J{) z?X@oWEJ0cBx>m40#1I&P=~qn4)H)DS9s&Ky>r@Ma zAh5S+NQu~e^Y5B3!@)`Oldr7>ka(C&DtQQTlBKh%>b$SgUWR)ZpeNJ{7QdwLek)Cq z)5pkz-9T1ZAeR(9(voJs^Fmx@`G6s7cl;d)U&LN+m-DSDp;NNMojeoAOz~n%qe;8V zhHX(%i`iKjxoqBU($(ov>PfX%T-#oT!Z&~;*b=94U^L~9`+jV`Tw?+j3No|$qJ>>y zRtS8%#C_2d7rV#_KXOwnQZ#kQw(0wP$Z^LPC^AG=HOER5`gBo6bHJg1Hg8EJ6B7pB zrz)LhTRej=usz3syT9k~csd*>FvRc4?7%dOQw}VwtSE!KC(A;OlIcyeAl!>sp*~ z(K5Khp&YNcWu34!6ORlF!)J2jYF$_!_@}SMKSJGq=J5Y&4rgFs1PX(j6a7kP35bdc zvOe?(20O$svM~OAV(xqFzmj_Y9{V58;XjUr1#DOMGr9Kf*IgPbRY6<;0A&}LjE;{V}RFU0l^ww0UJ_AIbAZW zA5%EsUkFdb-&g8#M<>qK?mJ?CF@xOaR0G4I7hfV4jY4nB**axR)oqK$gV z>+;bcnqn&!L65#vuBwwnb~Q4ognp!)O>y%Y6z*) zz5R|>w_mU)imf6K7y5#XC|$};QALy?M@v*LEZh#?P!gzt#s9>DI_V8%5gEc{I(6~M zny0GV7hAIUQs)T9n#`qPTMqOK1?@n+P zkSNtC*R!hHg0tgUt=m~>F}0KIo15oevI#0nlW5K9gdVM>8TmG21Z87r+w>Dyy%b7P zh+gPN9^WS?pItCf=j`> z;kdJY_d-H-f-L3dT53~1SNgn&+%qNMsrb1ab(ud^WvY&q1roh-(F2+gA9#9XAO9S^ zQN%51Y;$w?zQm!eu8XKuYN?ed*sw-Aw!z%0@&XctyQ#DFlfr<*{FK5x;)RQZvbb>( zAqG$@0vBHSaqZ#Pl&#h2yWF~|xA|()7jRa&(M_83hp&o#jESB#f4M%5t7H+LWB%fj zaDEj@J8N!l`Zcv$&k1Mzi@t+;FuSp&V{?U*MU&PXODu9~#>64fA{DJW;alUkcpU3f zk@BvOa0oF_~CeHmlM!F4dabPY{O6j_J)d4?-h=Ybdi$Q|ZQ^ z3fX2EoYLYD)}DA4Q^Q)7F9CY1pI@8mC0n^TsXgb^B6E)tRxpu!^-KuA?YW4Fthi?V8=$LhOxEn)-QFGO z2hxz7bRG%Riz`nO!m-v8t4F2{3=SlNF8(+Z{SJ+zKdk|$Tk)Q%3n67@mX$El;@Imf zm2PxqwYtP_Uy1R98@y-6k?|lEmxl++-tI;QdS;BCIM$JsgY@A-y#)|XyV_Fy(U=z6 zMHl4qy!jV~mdC_4*)e)7L}6qp5yCrfsXdE>KZH8XU#KRqDmkHVsV&Y+H`b(VH(KO{ z#SFz5;^R?JAv^IL?&{-BZh6871%Hte545POR(NF6`{p#|i0VZil3bQ_;6L3uq4*iU3k%q)M* zC8XMwlnoa8OOfiL!zT%MQlK&f|NcLr1~WxsDzisrR`l|-3iS#myWaodGBMS?PBdWBukP-3+l*meX~nh}$ZO*069;1W)alC4)yr~sBfsb}y!FL`nC=+sw&OJg2C zGr1s8;?hft-Zm=GjjwQMX8)ddu_&?uBssl2=>=<)IJ&IuSk_^F_2}`EzL&{2fF0{M z0L|hT#~Z8dZ-9kQ^BS$jyEW&<(;&7bFXO6D=FF}bwk`P$%o<6pl0i;dN0=);3-OpQk<8bM`lve@E=^(VI4BArDf~E2Zxoo@N5z#2-;qD zqp0A*Ri2wQJV_k?6;5cjWgm8764=IQGTi}~{wjW&UqY~f z|1mQ?DL}Gs_;F-i+H7xVhExNKLndz-)$hJia<-=``IaSpQ&nYd7H0EsgEX_Y0hGFc zeume%N6x*;s ze0B**BycV~zuU3%g=Bc@L(UHEN8th~6zrnc4Gfiw4>63Jnvj#uDN`<;tFRMh@li}w z8cBE-<~+www>ic#1!>et;*E-c8WeWQnsgW!#VBEWd@SLhPR)XM`73W1N>fFS(U5bW53xQ{P&cwOYEY1@MOR1r zCb=Fr1ccG!O}Dnjfebr;O0wfPpXjR;#5WCME0h)CQrre|)U{{u%dAk>{TT z(SMa75)~C@WETZH@BOxtTR=oagjtY9P(YMJR8WBB?-E2mV}BKh1pYntKZR*Oj^&r# z&Y#BnJDBz(_E&-EPqF`VFbxc{eh<^Y?mOVt)ep+8haJD$^TU?syK?J0Oas6DsNeiR zY2TGw7(hk=I8rh>a?GDN?V(rck1W%7$3G}&Ab2IW?t|eUBTSY&dWRs{m+?-ff0J(A zSbA7^D*gpZ0}xzLL4Jq1-%MTDv9!8ehbSe{_bdnS? z#>U!~?y#J-^#H7ke*{pAzr$pfS3{iIZk}G=bJEpm#J+dYQpYAI*AY&Sr>13i4*3nh zf)F$;%qS@Bv04>pDQTYd{Ic$|?95O|L-KKXg_ZjY!Bs~t4b;I{RLX&cPcb?d;&cWyabx z?NKuTn6arFt6!hhz$j%;SBD3--kqsCD8%9KBgT`7q|eRv8wtWlfp|<;2IA;NQ2{aA zc?Gz)dpI7-vPc_Qjy*#c_awza(u@+iv=_&ibTcu##LgvS$5XD)Rk;e6B zTOcCJeO9){5YHZ06_XD|wFiAk#Ba!TdG3bg;iDd{u#=tFTja z)?MOHS{cA!wz4n$k~u-aa=yy)NqWMflqpLTxuxAr!FJh&DWPLUW#tL|QdOLRg(x~G zo($@VBf~pCS#y4r(vfG?=R^%PbG<{?#xpY>{o|ly`P#1vF~^kpS{Dr#X00ukk9a>B zYWiaAJ`2O=40Cy0jf)+F+!}MG|jikFVPYG@&+|lPzT|0Gkz7yi$=N| z$&k$YHvIi2ix#W>@af9Z4P9By>iO$c^MaY$&B8S+#bzXucGa*a^=8z#=wGZMV8&F2 zoM<~;l!mhrW<3MxJ~yabC4RUy;`iT#+X~WoiSm@Eqp{r6oP+MfYH?ciJT>KFL_PGr z;S5k_E-W5QQ8uBxrI3^;3THW_^Tmwa4*?zZc_F?{1HMf{;K4V**!6yvrdi^So(ndK znh@R)k@jA}9y_5xfgYjhha2Jw6AxP2-HRJS#hZ*C5S!&8^_*T=Lq+LFTo?Lakzg!* zgIQjg5A2ZaRDh&%8#+l+8z8hOs&1F6^+Z=<%1+l7V~LJh8a*nxDRC;k3b zfJXvTzNgmU3A|EsgW$ES!ZJ zduLcj^A+;ddA4~HW;Ombr;yP^IfQ!75oADQNrvb&J?KcRqLHJx!In2_4Yu;$M#0bg zUNL-rUgTdR^JolOYO2CAzHqNnu5N5Fmxa35hl5}&hua!o|g&qI>AzQPYh9SWQ>n{ zx>K@4Wv}VY85SL5Hm%9Ih$(rC8DQ?U&uJ5*sY;ip@p*-nzc|agr=6?aSGq#jl5ISy zAQTH13Dr$P#3rJY&rPtn;u^kyK-bj6_4$m$@R@@aNIDgxCS_=wkT^|2P=v5rZi2Y& z8q6SHK^nBJ150@pws71tobo<|5Bz7JEIRtGT0>W5vJ!>7PN+%HSWr^i&owT$nKdDd z(eE4|@r_M(GX9{>v+V-(z00O#plyfuhO+VJ%xrAkYjK%wrHY{*_#HX< z14{k}8283M{CDsd+`1Rs1Oow_oBV-{e^)z&hJ}Iw zXEz@jZ9zW>puo*GzwdqcMO3iO5!_QWbf5sd94Usb9)gVzqac~zcSCGQI4A^!-~I$R zI|^>P2?GSfV;di|tP0rZaZ-8Pb#$f&D{V%-N(^#1p+9CbH+)A0;2{CtB+p+$=6-xE z@7=QQkeW}kbWv~d&sZ}&{|EfYj?)Z!IyJmS(-4q4W`BI@x8Gm|VW&X-1aTh7_#a2g`}=h22} zD5K`MP#{uF5kF;cj;qb-n@2Q!zL1kP|NdMKSI zX*ums%qEaXG!Pr3+FAOZGGl-I~$aGe3-?#aC?HN zQqJt@=tq|2seL{$*|F{h4Hl%&U{FcYgs?gH0@AIC!GD8e^!dGV0#Q{JT@!~6Qg(0)Vg_kiv8=0j+Q>z2L)_{+L z@upXD4%AkHy0;NMx((=&ERP(g*N$6N=s;B;c9$+^=#R@K!~}25V%I4zh>Zf?jFA|Q zRMBrp$FH^;wr4xbyU@NMAIj4-Em==mYZy6guzHGCK!`)~{hJC83HjzEEFb$=Iiw=t zZS4xHb>LOWsZ+|RdFcK(Ko!J&(S8bL=ipP}kB2E=MVws5Y>jR;uGbDfEjQZQGSvqR z#@Um-;{!MmL50SiYSFHEGSAxv9{0Prd?@80=5l!?G2f0#23j!jt*>&2WZ%%SkKvSk zCYi=NT@#95B(9g$<`sVwxhT*xVZ%pqJX#VqZr9{+cTdLS)43pGsPBSO4ICcIGDA|u zCl4M4*(HsyEORybn+D50w}mkvLl+8t&mkMqTpZTKbAI_cm6gsZ$6d*KQ&o1CX#jlW z@%cT26e1s&i)@9#M{bvJOMATp`g9ob)wZfWU@y*|#QWz-K!~;MvlZ(Za>IXO$)rZ+ z=Y`s4*HmG}_l799aZsY#<0ay4|9w`BTzw;tR$u)qf;QPP%+ZcYv-7*trv)V50tKY+ ziV(aw^KQkCMOrt;xFV@G@yKh|hG`uygT@L5&80J72YIs+$`_gM%S=?3bAw`4OTFTV zx`VOLmM>g$d*&zqW_AD>6>A(@Wdz^AgvVbbUhuZ@UCCzAG|D08J|3#eCsn= zeUsq*L5pDY^^1(iE31hn{pOo`Jnoz4*Z#bb!f0;bBOH8hzX6WuSNc$lj5P=S zoapg}gNY$xk6u)x6vR*}WrgppoWZnhG>vgnoZXM4I8@A@))8_p)L`rBrIe4uQI1Zb zuWGu!uq2c$o1bku+wYU^TJIa;*3F0;_+iRlV>6g@r8@Aw&y&Innn9Ur!7wb!# znJ2!6ffRXR%5pDsCsSI|i`$ew*z3CY3_jW%iJ{aVnk!m`TI&R^RxiH1cCk#Gm~?st z3pL5?hW(^EgKYFQLq^z@`FNXI^Fn=WB|*;amonvH$MgmKot5^Gj7PyZsh& z2GMWt2`+14tHt$G;A)x3=(Eumu?P;z9rC7<&xMj?L8Ps#CHKcfR5cxOygj&xfk z9Cn3>U+H|0u=5COnC~e@W7E#0hEyEy`EDELpNj|1U$yWCu8Q*CVNP*7Bxq!N(N7n5 zRC*r9$|oa_yC=U%Q*4<+{hCo2Xf~SF_YDxt6#(&ML8Y#2av>OjIQvCJ<&c5)y4tui zE8oH-_R|#Ybh_6eO|5|y^A{s+Zlv6x&$Zn(9mi{Qrv20?0v_Ua{de6HvoI2)?vgGk zCFEKOt|cAKXJxz!tkW*$SV5z=UdM*y>l0`KzHn75q8@;76A~)E)#s0O}*a zyXd#m^6U2g?fLfqWXI!w#3cWSN&Xu#35y^TGb1xIxUIlXG6wdH6=D|!uQ6w17G!1r z+odQ!V@3Zm_CF?L-;YJ;FUR{^GWI=I_%CDs_sG~UQOI{{1rJ^mjsWq)k?Y?I7_e|) z8V2(l8-oN3MgGjjNa2BUHi8%edI-8c^3Sk-(J`c-zx&;`_7@#PgZ0U(c%Wl?4}6Rq z6U@gd;mH0-#-`O~ZT%l85dj*2JOyGh#=EU|y$bhzGD8ygdq;*h2E8g8%e6VDhjkJB zbz)YunH@#Vs0v#d*UK=umB3;U2mX4_vykC674nhQ%KGO6?_w!+?F{BKCmPq;JH@SN zy+(@CO0 zijd5efrB*l8vp>CqkFsrI>W~zkaF-;AFb$pYHAWF$G(ydZ?dS67IbP!u?lW6+&7f? z%7V*c!tH=TI`V`RjjhlyJ+xkL;PR9+px2q%92U5of8okrkRB zinX5O^l0g9V-77`QG3~~u=F-u3e3dPy1+~<+QE+Wg`11XvMWq)c=sYGpk?+lVh=^# zqQ=VO9%1~RTU5*exw%T0F06SHA*-OoY(;`Te^$*%N_nA-=KRe`{$Bb{Cag{J>1`p( z32iieK#BGIj9Grs;W~x(tO1Y%=|EI%P|8vr8%)J!rDZO2El{Yb;Yr@Iw2!y@a$=&V zPd=q?hw0hrd!&G z5|-t^35{NZJC8h}){o{NQa4_HnQGF(z3-!bW`1IXU9mMzU#)DTVY4`Wt=SaRmO5m_ z#(j6cRHNZ(X-sjy-D|2>>yN(SifjrK6qISdyBZ$u;m3!;ONQa&4<_?V z1LVe9!%es14)-A+$X%+fp(BH#JPqoiWvU4Lv=zxJ7c2$#%3n~1{QWn;)5`Oe9_IzS zmrSx_f(^B2(W0bKZ9fD=f0{v7NzLi!~q-r(jKklBch)og-RqN>nUrTedj`fZhJrFq2`YA4`$a#qdddfRu&?K312 zQFqN$S``+jgqGXl9>K0#zUV)uzw1+LWqLVkF>`V0eh-IYg&7~diS?z@XbDM0t$&VO z#>p(LH{yP6X_8E60!rEJ^Cxj0*w=2Lws>G2Y`Lz%FlSHx>Iz{R2i63bfL#~1DrB-z zCSwb^6wU@6p*4=Co>bj9)k!wc%x@X{;A4u4n$TjO7k3sXxqvP-0TZ0))YOD%Z z_O(1n9_6-z`Iq|$rguO14E-QrJMGG)+I_}FJ34bLH{Sqws3WCj^E1rg+a0Uk9iF<4 zmdt>!CljZm!R~NnAQ6P7X1$C?<1TEx&e()*6i^v*D`cUYo`2nt=U%^rN91uEaiSy? z#WS_T;$mdoZoSMnf#6?7`O)&^iI|6%EuQBioA?U!>!A6{2{bCW#qEkxyC5?)1iQ#~ zK&2_UVY_1_XnuY40Eh8ru^UO*Rr7veoMF$` z)SL+KO|rDUzk64g<1u`Zo6%-xkapn6UD7903z8lPG3^qAmChLF6`9FCUmI?`1BJF} zHQQf!F7SLhT%K~$3^kavo>uonx2&zJTCyLS%QU^x*3+_h;9;X+9u{d;2yUY8WAR2E z!VR-nM1mR}emSn_4IR&*TVVT5;*xnCzUAZ2W0@Y7Zl(h+m{!pZ%7mfTc~mPa^hL6o zw>2LCM6+B=^Yg9Y*=!lXPzS8_&)}9= zCXc)46>66AJ=)oF@~^PPd3d+aIB*tSGy}seXHyd~X9ANP?J}mYkhH}QyOLQfEvHtB zl{kT(!YeEN3m8sH9>@Fa442mC&U8#IrzcAs`2~mXP~Zxz`s)MM9VqOR{ZAuzt3>Zg zzgn(4ZQ}B6tSNd;{^Vd?80HtgzumS}Zun#bebpSL7$jM-yMD8dBUGb!XRGx+Ej=f? z^rn}l(&9SMSm-yhlb9p}jVWKLJ6X1kiw@N1O1QX8T`n37u$^0;g9`I67_S<BaU@E2NRwC7fV~rL{?2T=PpaFW%sbRK_(xrmX(Dgkn*S)MD zYgPR#RFsxj*V|!8K{?kW+FIG_n(Qy;UNcGb0^DtCYWbK>;mAT9<)GB!6juBWt5AKv zjZSsNs7XBE>liJuLq2{CN{&6V;TZ(%_>5v}E6W5lxOp~_Y<+%W z#$X-@0tN&E02_OJYHxUHZGUwa2n+yxc7ApS3>_R96##x{VrFDwV0#-J3J(|w4IdRZ zC@dgcR$f*nEIm9qH6UI{LPkVFKwCRJDla%GEk8Ba$jrj0*1opJ%-!7C)xf@}qNb#x zpu5}L%Fo!z&EM7c=hJjJ?f>U>z_Wt&U zjGdgBm4N=};^ySy;QO1LijSCyjh~gbsH~ve*51~pti8OswV>X}!p6kH^_Yshs_XCI z&h zd0$s2?;AoWN+l}XLNdmq&)C`x%uUw}D$BMut(URnqCH0^IO`@h@WV&fwSx$Gs zbPhutKtGVwOh|j#qQKeO6{pjq#!6dUoljW5O-yIuW6#%VhVzp#tqk9|A3J=Q(4a^lc`z#=jR$hfB zEbcrx<{)01LPnQDK!`g$`7b?pEifI|$DP2lb-udV%+cf7*!8}p$)>3Ypt}g%${g6q z9^cg@=hCM*?JV_&7>tlQ_WmV?j82@HMu6@c z;N<4QUHO7ciTN;@l)B@!xV43$Kiz}7tcE7&-xPe|poz8p~( z!6D$|5W40Mj zVSLmJz#O&lT#@!DkSpN@`bZ5kYt|pXL#BxJWjIx8`3RqCN$GU4X{=V=SG}Nh&&zJw z!+X8H7^Sisqpf4#+;H39bKJv|Hi>3!%0ksg2=RRce{h?BL8A!u3;N*sV1lnjp~ zvpRuHw<4YyYP@`pbm4t;VQ|-BcF7nDu?!Bg4hgJue$-sbWhjL~m`I&Xm{I08_I_x%fRS{7!w|}0yI{H* z!v)d+gO?}(#o+U)e6a@A6vqd|7t;=5LPbWW6D!e&H|!&rFY!QJ3g=qGTIwa8HLfF= zGHG4#=~Ezihar|XQtU$B^jq&YgFN*-G?+cx>r{zW>_voWd?djFmjtJH&0_sx#D7R( zz^5BxMXF@n8*#~Z>fUZfmo1tt=;~GAchn?UlSj`kq(W7NL`vy6JN!I2nL8w+3?009 zXTx$AvKbAg5fR30bKhWd+J6eCn|}QW-;4BiyZD9L!t(!+p|7}vl;_#+X5b?KCmO;H z*KWWV(aWD!@h$y@CxbWsE#c%y>1RKaQ<){0QHAfeOY}MR_D<@z6U-lH#$l0M+fMsL z!c`kIJuwgVz-4+^x)Hf~60Zueh&J#-_CsF0{Ueo5 zm{C=pQMjC!09fFB=lcFHuD=l4#cxQ!G*h~%TbRRJ zu_53wUcGHaTCZ-XS&K%Vl0u$j5!(oco<)oSbGq+)bO3jC251j@85({XA9)634u5cZ z1rKm^0@#H+WBvi|gO+M-xrg{Hd8~$;FjHU%Vf0g*!a zna|kvkGHHZW1@@rpLuJ}{mMPf<%}24(Q8LL51PfhYd%DzOua1HMA7P1qpaDunS{n$ zzdE;)Ouj|AQB2bzKDj$9wkJ%=MfI#u!QAksWVFm>Npetydg*K!8yj(ye*1QPer0JQ z1}y=PSam$BEx9fK`2RXU-dop>WcbsugSvkFSK|zg0D>lf5}!|gz8(5|?|q;p%U;8a z)IB7{Uf(Mhqev+sHMBw3vMl^tX=q>irJX{bprOj3Jj1-J$H7#j-k8?ViT=!f*v6xm ztkY4ys>5A?FtMxgoPr;l=8*U0eVvu%`u^zp?T}XXorndIK+{eB_*X~@UM&KRYkE~32q(Cq7$myC?(S%9wig6QajC+;BY z{bLe<;6qyxAJUv^;bC~eo&%m9CzXbsY5lF`dQI#@j9d16r{QJfVXkP~3&sMs%-Z)M z!#mtO)ZLElDlsfH2vBo2u&m{ACucspC}1zZR?`Y6uspG4JG@ZzbMg3am*)tei21Mx+G*i3!&VR}~rb`lJB&Ia895r&;=1EHdYg;E~+Wbx%CeEb*j z$ZvmVod-z}lcf=EWstlASY@V!`ac^JVdkOWr%Um4zU!+*+XOxs7kHm@|OQM@UZ1cH5)YVgnK0RfT)lpOw4(@9v+FGr~K z!Q}YWBqlyeQ&wB!il+ej)N2s(#0-?UZi}~WjH%|hr-u~gbTT(iTY$c-1 zmnc)Qhfml0Ey(aK&+euBGEITy+=W-w^!dC&KVkxsN%|j6&;H-H{=l zEvnk>mn7^`mH9{i3)8J|prQ~HJiunDatxvfg1h#{Ot;!{&Q!~y8=*B;V-Kq*hf*=( zN4a}{OO>>jCI1xmQs`Bk3*{=SkAV>jyssU<-rz5ykUQhlz@d)(mbU9uc=C=C0-ody8-j*@8<->S{%Bvv9T|KRXa;j{ z_H&C>=x6^X;p1YGOm-(7$rBPQ7Qm94^l_30)@U2;UUgMh)liLBBIitCKpEHLH!u_& zCiR6%PmzaQLW@C%{WY{OPs%!IKu}OuSx7Q0E;=XlR5`*rd`*NxQmukK~*DS3@#Oof&H$2Y%{=5qk* zF9+q*AlaqTy4u*Jffu2tTGjQwciqCUV z{V$MkjS1<05o0}bhu1k~;9`eP^>G9KH(@!86DJ8_jSOKSMMDAxp0mN zgK%WbczCJ>8nFo)wiYyY6_nMB^}cVcD~cfLQT|i;HtS9X z!WS2|Y-qe68P^02BTY#s|35itt>g=X8;}Z?9)JO;J+n5$LBUSBHKHb_E*21f4a*%5 z0jJA;OXW4?7xH-crR1Gu+n4Jbc0S}|H<3YtYaB<48d(Tx1b7!F;uhE{ULjXgTVEFo zoI41!c&sGFOQ|11i>ma~S|Um>;Ga)T#YT-VHZxhgR@0_cIzcm6qNjF8eH#Qb;l?6F zA}@Iu7nikTc450#;mdZkd72Z2ZFXyO@`Q-@kahNxVGtFIcx{{wb#oaTWQP%Ex@iB` z3*tx(6jyX(@!Dr?a(uq1TYhx$X3)?q;W5TExKAWd?+PSY%#=;jQeQIUA;maFxT&Db z*v{Lttoasht8}h-6Uf;e)D;U>_T4?qU&;sM^!|_lbDIMA|KRSK%k!g}&Hgr~wfBWc zx<8+XkU)VsSnRy+i<&|g=i~TY3M6igg0-LRm7AXoS{>)&-r%0tO{p>5=1x=|w^=Vc z4Q4u6Kz;(e1iLu|Y)dFB6?t6Opq#>l#a^`jzdhdJrXakK(MD`sX+hcKq%oY<`ENgx zZT@x61p)*X@R)h%Z*v10Vmuc=5>NvJIveEvVqjCo7v~PzL(s?nH1IVZ_igL_&nV^zfVxMxudbr$IwR| zxV-ri0>2Bnb9c+$9?oSJlHTe+AQ{9eCke~c!urF7EZd~T^_scJ*7^BYp`YVk(!p0 zuk4lV+A|gU%#WRd*j1FVE{UUPxqX~^{ti&wrhO$y+z%3G$$b61@DWP~76;M$4xb;1 z3m%DzyFpC%k+)b|k z9iYsPmD<)trz^~Fs0m4~ei=nJihLLTWJBPKfRbKfRtNGbW$Tt@>_6;VhxlHE`d*lT zDB)+2Rl%FO;h^z;`63yGaJQS}bClb3zl+eH%+%@G+?j5>k_)t+H|t8fTHh*<+%hK{%JJY}@q9>7 zP#*!F7d|MoZg8VuZAzW)W&@u8U=nCP6a%mUgvFYcd(3+4d>5{Hes&iAhiVB6+#h;o zn#n~9U;V<%msdGCBC73q2yGSkZ`9Soz%h&4O1unSA8*1uq z5dLIf;T?MQw1XXck-;N>liWQ8`KU-7{Rv*?Sq*dHWFt{Ovhq>djaGt^nl z^^e3eAL}dKQfb#L&Ad0wPAe}=NmgZ6N!l^pJ0$!)A5U5sf~aTTJAL4-;(@1} zbHC+gm@9w%WZrHFdkzt{A8i+%9LoZtmyi8@O)w7(0}T)Z3lDmCer|JUscUpxNr_ZF zJt{X%SX@_4R7*eZHYYD5=Pz1UUVBV_T${4DX}n}Q)*i>Kr?q)SaUj(VLd>y3%NWai zpx=3;-Fd&~Plf>ZGN%09hR2o}o<)A*7ts8J6!U=ne}sbQc$JSP9_C<|Pvo4P=7sin zfVX1rk)wgth5YM$;X3%^{U@{|I4dG+!+Q5IJUTz2pd9~RQb9<4)o+?DIw&;fxHFW; z*vrk5|M=yLgWHqS`54LW?)1x*m(`Dh zl+Lc|@cJF>_`2$rooS!z;p(H2nWTe=fz{#v_3{z*^}d9ipK6Dmnv1}oy_LVs!i&kV zyQxX8pyk2I*CX52*U#>&zbdr3|GnM( zJD0tM?b)Rm7hK+l`nh{=Vh;Ep*WeR^rVMS~eR$h@d2M3_s2R3sTV7#YAPQ{f3s&NO zbXjZBMXU@E-WaLc8X@B^&NC%gQe%8{aWFDCJ{PG_q**~&TWS_=aWXk5CJ58O;wsm} zfvAbl_RGr8Q@|WrCj?EiWGo*@4qEIXc(%iwj_BZUWE+1|9(WW?o`jl+ZV*nD^^Nc7 z{Q8fX|LvrNA?=;Jhymzl7Et(NEh^yY1J;q-!(oOr&Uo4A9ejJme@z{vEszMiS5 zm9fw1)X?a_-S)YmLu)NJ<|Cy-W5CA=)g7K3I zey)v~pNfr)m^;v+?Yia4lgOUj8C22A_t&(FwXBAZ#2Dio+Y8?$-#z$SB`9J4EB)}}?B2G^*t&&)imVOgE${O4 z_rTo5(y@X5{PxI^WJn4gnw<@7K@RUXbeNq;kB{3-8TW{?sL^#uwcrAytp0f~a5U>3 zRuaL&gKtPU9!Af%UONGtLPHGt+4Qa6k%~t_%xKFrUOg_m&>+TCD4a!Tc}IC|hjm!) z3~b2HYGx&TvlRqQ&vk>Ha>F}2{$)z zil*f7brIu&uiydMns#%hVPQ3*_Zem!27lY;8&0eZ0#Mh1-kL?T_`GjyEy3oNu;}H3 zx78jwW$VtD%*TiYG(yuOEjdBtUtM2OO?M+D{52uk#LFnE(#Kd$tRlaq9>M(V%97xD{) zV;Z=*Ib=*k6vNOfm-@da&0fx^TA|blMW7?2ww+=VU{|5|QpsBE(0ha;xVwJbXF=-WxDPByYfi!<5Xt@TaTS?KjPxl3tSnm8<1u znxC2=neb&^g!ZA`lUyDN(T<+w^k7xbxFmDV8~{QGN^fLd52F$sHef#h4I?b<)A#EH zon4K-_oU~yTdqg8!fn1y2;1E<+XbCG4T?bu$CpI?%+$&W>d9PhxTVNnJvLyRJb}^@d=H99G@xD0MlJm_< zT$lj0nI_-(BOgQaZUMV&RS<^kf3rpeQkBn8NM%CgF;0UMS{+>(PPH|qaVORxw?URW zQIf?~vxo(LSG0IA%HF39yiStNNu#F*$|F_rB_94WU(SganL8U!_**Dob zPcdF0T)(2)+`4GFPpJbX!?DC6!BZgKRxp213D)o`KIPCm7Cmw&ZZBv&Y$WA?*3-n* zM1jfc^zgC6ih_#z(W&6&=vD>eo|>4R`R?ct_Vc-%z7y$-Ta~gS56pg<(1-P_is{Yt z+&KMi;D42%_w9Zs5fhagrjXt6%o)FwurX4l*1FL2Z$I~HhQwv2lmR5l)z(>fv4p+c z{?pQgrO;jScvv8%BZn&=Toyo|C{)#^P*7;w<%4|TE95Dq!|;9ldR=0L1F;J~d^TX; z2z2#^aBxVw#}s3m>-K2{dvz{em;wD~Um8hyjP~>aXag5Cp^_AiClOq6O{3e%F<&P( z2#nLGUc08hqcfxc*uu-iPCQbLuF;{Pxq|BZ*To+;%EQSeO}oaquZB0fpsB^E(9r3t z#rIwjd4u%*J}u7-o@or$>Kt$=B91@fBm;=&pAZzCO_5eGhdY*k@-U40%P9|kNR z061t~e|CCmZ4!H`r29=sxzGO`P(TTaobi?Dgu5?IDGll!%6n zu!&gl{~_myTbh71>gqiH;UVyZPl%I@mX($9IPw1X>fxK)0K(U@ps-pdSpnil>tBF0 zBse8s&bJdV9Q!mDV_hp*CDJltNV1ND0wX@>&E2A?RKvPg%T?uOAyXqK_cA_e7Dl?r zXf)rx5?8CG3rfzYd@RMLelfPx6h))O6IH*ba}c`W9byQmcBf|rua*^b90DJH+Td^i zbZKU8L5CY#k62DCI4C%1&~w9g%bd$SxX8NS+}km(Sk+zgtLAa+lYnYoN8A7n6bZXyNpX5pYEH?;mWEe0QFIaElD>9Q_Rg8K3(5 z7XdjqON0V_>~aNjVIN~?-Fy(36fg^OQ}t~!6ZK%s0$R!{t#l#GTgOP^elYc4f7~`b z+A2k+T2eI;0RSw?^;W;mEWpQHv8_z5M7Av5$kMwK*9xs}zd$tBz~+$+oTu>id7&)= z781u5AAD-Fm24U17Gz=*KmgnR5@s4bXQr0}ZxLK+y<($cpmfFS2zwii_5}2Wb>M_{ z@|p4|QPZe5siHkVyD1??EKkW|E!+Ys-Q@0}s`e~2Qe!?xD4C;(98Tu#?g%$|04yGI z3g*X_Fk4B9nyl<&JyZaxcsal9Ha@eqvnZl(&1_jrc)f0`*>mv1^rmYXgqYHf2auxu8+s0JdL z*Bw=ga0l6?VjG~i5ixpb{tb1^%y(V^IW9S}Q^2%)72CQKJY;3@5_`bdaZzPPU0`48 zfKDKXk|hXKEavz^Yh4V=A{I77o%~rm|9_HPePTD)yUkK)=M}=2kfD}{n|0uH3&o{& z@er?#mdx0?%uNBNLzuC^>eR=Wt08@w^fb>S_Se|)flsPep1!1&qK>2#x!(b|rz+J1 z#>~;kHUyoCz=y}vvuWDG%h1`?{Ji9qE1mO1mwBq~ry|ul~$F;t<^0lhm%EYv(tJ%D|?B1>2xwp6HpO+3ZZ?+KrRd zC++2bkG*sVwHWR8_x1Xv(fpR^-;C_tjO*VOcuH#?HjFjtd|+y6Xe2xg0wx9$C5q|Z zXn$NV|J`@B{u->_fC=8D`W(2s<8$7+fFj0}cr3ZiEJ1c$yBA-k!}26oVmw1R z7VN~L01+hnO3MmZifD4H99$PcVk;G1dNxscQpSeH%V3!n(Xvx{NJN!Ydi!z^^!)UM zj-Q@RXLKwY!jTyDmj<~Oclc#Wk9k6rmKvQ3@Zu$fmwubCmY!(!6ma;U13Ktl%zk8k zd}Apf8abKXO!Wuru(jB9( ze!7wkr^p-IQLI7=%CEp2sMh-L)qUDfaUN=k7JL1T?v(F&+SO;Vk({IL~Q7twec^BmPTlkFbY%<94{4(&>J&j&1v?BhKP-% z*#FTOx|D2BW6l(o)NmTKn;U#d9Ig~2=)f`T#;S2wgsdplbusb2f~z2Rq@4}kE0Z5t zH=ELNs)`|iQD2K7NJCgeQCwe7o<~BTejv61QLO}0s(H7uWJ?hG3KM36adQlvYy0^x z4$&A7*9LW~bW~^^d#-U>mUI1EbK-snYKa18so6lo??1LM<;cyF z>Mp8PhPK7>&;7(v*gq(xO`HER%bW8=-XQa;t%~r1i-@Q>M%GfBw7p_NM1b4s+zbBS z>$>xkyoxq|V(5Y(eoE?V6ZV&$ija?#WLu2c;X32tIOqJr5qcE51Cp42 zmZd;c1WkU*>YqI64=fWbvEI9K&O&lvzbnuRBRgsiK`>_UsmLwR895`b!Ur^LO?7$L z_sIgL)w9I^aR#kE&J{8_6n$7K_*p~RTeD_ib4VtS0P-bpcS$;W1469f$q<(m?kH_% zQd>bm^tn;c8k=p-;pD@?9*S|Rf||zRmGdGs0w3&&Pl$kyl$eiTN=TQ>6Z+m#w6sW| zzf{Ek)dP%0iCytIF-n}Hd8NDq(Zm#_jji0H=+!94+%%!9c4fA(#GJqTuei+~%E!{~ z?<4w>PluI0^os5t03jm3=ds{bVQ2jAZ}9*7YvJ+*j}cR3f_(5*6!adPMi`JygQF?s zF8x%Q1uJXp5)o$5HX&2HOUAMSBk3bI;XYHGUw&6LRf#*{|cN^@y_u=XdG-%}VjjY>1wTrQUFy zqRxD6NHQE03_eH`WR+%FE4AzrB5)oeko{M6oP$rEu!pUEQf$LOJtP(wt4DkXvsxZ@ z$9k+d0A;=aJttMPwMBJMkAOxI%OLk*E1lKeXiTp!gcV2A&Y?IOE z%4~$>_us3{=%<{w&QGl7y7$KUR=lvXg806I)}i}fw!*^clg0JikVR6)_Ne^UBvnGW zVpH_BGC}+{HKsze*Hy68R=3D&fbo6xd!z&l*KQHRVGX4ndhYC$=pk*ie0olJCRBL* z^<|8fixyvm5R7#NglRP)0}e0lUDqUlH-jXlGlMCOq;}k5%3#`k&;p|u?v6>%51=X4%u=JxNUdE9Fq^x zObJyXYdXA3kHSFD20q3rHQG)|xK}^EM^2|LZ1ycZPA64NDOTJe-*w78r&~_NNvQ=q z88PiOG!RdPp{vAIr8Dee1k`jV0eANb)ou{MXIlwV>CY1uGADYlwtjfEuy1%rn7Y$r z

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 MT1prgS|0{lk>(*0uK)l5 literal 0 HcmV?d00001 diff --git a/config/examples/Creality/Ender-3 V2/README.md b/config/examples/Creality/Ender-3 V2/README.md new file mode 100644 index 0000000000..87d8cebfb6 --- /dev/null +++ b/config/examples/Creality/Ender-3 V2/README.md @@ -0,0 +1,18 @@ +# Ender 3 V2 + +## Flashing Firmware + +The bootloader which handles flashing new firmware on this board remembers the last filename you used. + +Therefore, to flash the compiled firmware binary onto the board you must give the "`firmware.bin`" file on the SD card a unique name, different from the name of the previous firmware file, or you will be greeted with a blank screen on the next boot. + +# Updating the Display + +To update the graphics and icons on the display: + +- Format an SD card using the FAT32 filesystem with 4K cluster size. +- Copy the `DWIN_SET` folder to the SD card and insert the card into the slot on the back of the display unit. +- Power on the machine and wait for the screen to change from blue to orange. +- Power off the machine. +- Remove the SD card from the back of the display. +- Power on to confirm a successful flash. diff --git a/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Bootscreen.h new file mode 100644 index 0000000000..2cc4ed7ac0 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech E3 RRF" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Statusscreen.h new file mode 100644 index 0000000000..de64bb2be6 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech E3 RRF" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md b/config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md new file mode 100644 index 0000000000..b79b46a721 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md @@ -0,0 +1,14 @@ +## SKR 1.4 Board + +These files configure Marlin for an Ender 3 with `BOARD_BTT_SKR_V1_4` board installed with silent stepper drivers and a BLTouch probe. The probe is configured to use the dedicated BLTouch port on the board, so you can remove the Z endstop entirely. + +Features included: + + - BLTouch + - TMC2208 Stepper Drivers + - Advanced Pause for Filament Change (`M600`) + - Nozzle Parking + +### Nozzle to Probe Offsets + +You'll need to to adjust the `NOZZLE_TO_PROBE_OFFSET` values according to your probe's mounting location. This example is based on the Ender 3 BLTouch mount posted at https://www.thingiverse.com/thing:3584158 diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h new file mode 100644 index 0000000000..3a2cd25f32 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Statusscreen.h new file mode 100644 index 0000000000..59188a99e7 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Bootscreen.h new file mode 100644 index 0000000000..f4e26e353c --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Statusscreen.h new file mode 100644 index 0000000000..1d8f0d3fe2 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Bootscreen.h new file mode 100644 index 0000000000..c7a686f828 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Statusscreen.h new file mode 100644 index 0000000000..ea06110a68 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h new file mode 100644 index 0000000000..b9f77d0dcb --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Statusscreen.h new file mode 100644 index 0000000000..ffd391c5ba --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h new file mode 100644 index 0000000000..bbe01e09cc --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 1.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h new file mode 100644 index 0000000000..9a21845bde --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 1.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..b8401c1268 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..e163936ac2 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..c0d709c4bb --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..4ec688be4d --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Bootscreen.h new file mode 100644 index 0000000000..2755c90f27 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 3.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Statusscreen.h new file mode 100644 index 0000000000..c86abb0ba1 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 3.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/BigTreeTech SKR Mini E3 3.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..920d114d1d --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..7b9557a6a7 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/CrealityV422/_Bootscreen.h b/config/examples/Creality/Ender-3/CrealityV422/_Bootscreen.h new file mode 100644 index 0000000000..6dd410da34 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV422/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/CrealityV422" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/CrealityV422/_Statusscreen.h b/config/examples/Creality/Ender-3/CrealityV422/_Statusscreen.h new file mode 100644 index 0000000000..a40ef1c4f6 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV422/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/CrealityV422" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-3/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..b57c8d9463 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV427/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/CrealityV427" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-3/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..e1de9b500e --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV427/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/CrealityV427" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..6580ebf372 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..058aa430a2 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h new file mode 100644 index 0000000000..8de5f3c505 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah 1.2/base" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h new file mode 100644 index 0000000000..d64d4346e9 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah 1.2/base" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..70d6a180e1 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah/BLTouch" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..60c4b945d2 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah/BLTouch" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h new file mode 100644 index 0000000000..8282845e61 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah/base" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h new file mode 100644 index 0000000000..ed5e31142c --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/FYSETC Cheetah/base" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h b/config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h new file mode 100644 index 0000000000..9255919470 --- /dev/null +++ b/config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "Creality/Ender-3/MEEB-3DP" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111110,B00001111,B11111111,B10000000,B01111111,B11111111,B11110000,B00111111,B11111111,B11111001,B11111111,B11111111,B11100000, + B00011111,B11111111,B00001111,B11111111,B10000000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B00011111,B11111111,B00001111,B11111111,B10000001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B00111111,B11111111,B00001111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B11000011,B11111111,B11111111,B11110011,B11111111,B11111111,B11111001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B11111111,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11110000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111111,B00011111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B11111111,B10001111,B11111110,B00011111,B11110000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B11111111,B00000111,B11111110,B00011111,B11110000,B00111111,B11111111,B11100000,B00011111,B11111111,B11110001,B11111111,B11111111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00111111,B11111111,B11111111,B11111111,B11100000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111011,B11111111,B11111111,B10000000,B00011111,B01111111,B11111111,B11110000, + B00000000,B00000000,B00000111,B11111111,B11111111,B00000000,B00000011,B11111111,B11111111,B11000000,B00000000,B01111111,B11111111,B11111000, + B00000000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000011,B11111111,B11111111,B11100000,B00000000,B01111111,B11111111,B11111000, + B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111111,B11111111,B11111111,B11110000,B00011111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111111,B11111111,B11110000,B00000000,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111000,B00011111,B11110000,B00000000,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111111,B00000001,B11111111,B11111111,B11110111,B11111000,B00011111,B11111111,B11111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00011111,B00111111,B11111110,B00000001,B11110111,B11111000,B00011111,B11110000,B00111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111100,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111000,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111110,B11111111,B11111111,B11111111,B11101111,B11111000,B00111111,B11111111,B11111101,B11111111,B00011111,B11110000, + B00000000,B00000000,B00111110,B11111111,B11111100,B00000011,B11101111,B11110000,B00111111,B11100000,B01111101,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11100000, + B00000000,B11111111,B11111110,B00011111,B11111111,B11111111,B11111111,B11110000,B00111111,B11111111,B11111111,B11111111,B11111111,B11000000, + B00000000,B00000000,B01111100,B00000011,B11111110,B00000011,B11011111,B11110000,B01111111,B11000000,B01111011,B11111111,B11111111,B10000000, + B00000000,B00000000,B00010000,B00000011,B11111110,B00000000,B00011111,B11110000,B01111111,B11000000,B00000011,B11111111,B11111111,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111110,B00000000,B00011111,B11111111,B11111111,B11000000,B00000011,B11111111,B11111100,B00000000, + B00011111,B11111111,B10111111,B11111111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B11111011,B11111100,B00000000,B00000000, + B00000000,B00001111,B10111111,B11111111,B11111100,B00000111,B11111111,B11111111,B11111111,B00000000,B11111011,B11111100,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B01111111,B11111111,B01111111,B11111111,B11111111,B11111111,B10111111,B11111111,B11111111,B11111111,B11110111,B11111100,B00000000,B00000000, + B00000000,B00111111,B01111111,B11111111,B10000000,B00001111,B10111111,B11111111,B11000000,B00000001,B11110111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h b/config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h new file mode 100644 index 0000000000..f93b3ac238 --- /dev/null +++ b/config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "Creality/Ender-3/MEEB-3DP" + +#define STATUS_LOGO_X 0 +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11000000,B00110011,B11111011,B11111101,B11111100, + B11100000,B01110111,B11111011,B11111101,B11111110, + B11100000,B01110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11010000,B10110110,B00000011,B00000001,B10000110, + B11011001,B10110111,B11111011,B11111001,B11111110, + B11011001,B10110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11000110,B00110111,B11111011,B11111101,B11111110, + B11000000,B00110011,B11111001,B11111101,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11100001,B11111110,B00001111,B11110000, + B00011111,B11110001,B11111111,B00001111,B11111000, + B00011000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001111,B11111000, + B00000000,B00110001,B10000001,B10001111,B11110000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00011000,B00110001,B10000001,B10001100,B00000000, + B00011111,B11110001,B11111111,B00001100,B00000000, + B00001111,B11100001,B11111110,B00001100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/MKS Robin E3/README.md b/config/examples/Creality/Ender-3/MKS Robin E3/README.md new file mode 100644 index 0000000000..802be739d9 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/README.md @@ -0,0 +1,10 @@ +## MKS V1.1 Board + +To compile Marlin for this board set `MOTHERBOARD` to `BOARD_MKS_ROBIN_E3_V1_1` (not `BOARD_MKS_ROBIN_E3`). + +Changes in MKS Version 1.1: + - `Z_STEP_PIN` is now `PC14` + - `Z_DIR_PIN` is now `PC15` + - The EEPROM on the board is the AT24C32D (32KB) + +Full specs and documentation for MKS E3 hardware can be found at https://github.com/makerbase-mks/MKS-Robin-E3-E3D/tree/master/hardware diff --git a/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h new file mode 100644 index 0000000000..766e508767 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-3/MKS Robin E3/V1.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Statusscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Statusscreen.h new file mode 100644 index 0000000000..ab167bbd1e --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-3/MKS Robin E3/V1.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h new file mode 100644 index 0000000000..e4ed424978 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/MKS Robin E3/V1.1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h new file mode 100644 index 0000000000..314d82afe6 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/MKS Robin E3/V1.1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Bootscreen.h b/config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Bootscreen.h new file mode 100644 index 0000000000..9c5596d8f5 --- /dev/null +++ b/config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/TH3D EZBoard Lite V2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Statusscreen.h b/config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Statusscreen.h new file mode 100644 index 0000000000..6b6561acb4 --- /dev/null +++ b/config/examples/Creality/Ender-3/TH3D EZBoard Lite V2/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/TH3D EZBoard Lite V2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-5 Plus/README.md b/config/examples/Creality/Ender-5 Plus/README.md new file mode 100644 index 0000000000..6ec2f4ed35 --- /dev/null +++ b/config/examples/Creality/Ender-5 Plus/README.md @@ -0,0 +1,27 @@ +# Ender-5 Plus Configurations for Marlin Firmware + +## Important + +NOTE: The Ender-5 LCD stock firmware is only compatible with Creality firmware. The LCD standard UI will not function. This is expected. + +## Marlin DGUS UI Instructions + +The Ender-5 stock LCD can optionally use a [customized Marlin DGUS interface](https://github.com/coldtobi/Marlin_DGUS_Resources). With the stock LCD firmware Marlin can only be controlled from a host over USB. + +- Format an SD card using the FAT32 filesystem with 4K cluster size. +- Copy the `DWIN_SET` folder to the SD card. +- Power off the printer and disassemble the front panel to get access to the LCD board. +- Insert the SD card into the slot on the back of the LCD (not the main SD slot). +- Power on the printer. The screen will turn blue and display several messages, finishing with "SD Card Process... END!". +- Remove the microSD card and power cycle the printer. +- Once it looks good reassemble the front panel. You may need to physically rotate the LCD by 180˚ for proper UI orientation. + +## Restoring Factory Firmware + +The original firmware can be restored by downloading the [Ender 5 Plus firmware](https://www.creality.com/download) from Creality. You can follow the same LCD flashing procedure using the Creality-provided `DWIN_SET` folder. + +## Marlin DGUS UI Limitations + +- The Information button (i) doesn't function. +- The Tools menu does not do anything at this time. +- If you press the Tools menu icon, enter another menu, then press "back" you will end up stuck at the Boot Screen. Touch anywhere on the screen to get back to the Status Screen. diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md new file mode 100644 index 0000000000..ad69266691 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md @@ -0,0 +1,19 @@ +# Ender 5 Pro with BigTreeTech SKR E3 Turbo + +This folder contains configuration files for Ender 5 Pro using Marlin 2.0.x. + +To compile, just use these config files and set `default_envs = LPC1769` in `platformio.ini` file. + +BigTreeTech SKR E3 Turbo is larger than other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 Pro electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. + +## BLTouch Support + +Enable `E5_USE_BLTOUCH` for BLTouch support. + +BLTouch can be connected like the SKR E3 mini v2.0 to the Z-PROBE pins (check naming: https://github.com/bigtreetech/BIGTREETECH-SKR-E3-Turbo/blob/master/Hardware/BTT%20SKR%20E3%20Turbo-Pin.pdf). See a SKR E3 mini v2.0 guide: https://linsomniac.gitlab.io/post/2020-06-20-ender3-pro-skr-v2_0-bltouch-upgrade/ diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md new file mode 100644 index 0000000000..7a21aa7b48 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md @@ -0,0 +1,62 @@ +## Creality Ender-5 Pro with BTT SKR Mini E3 + +The configuration was made on a Phaetus Dragon hotend and a BMG clone extruder, running the Leon-Me Gen 5 cooling shroud with dual 5015s. + +### Changes: + +#### Configuration.h + +- Set `SERIAL_PORT` to `2` +- Set `SERIAL_PORT_2` to `-1` +- Set `MOTHERBOARD` to `BOARD_BTT_SKR_MINI_E3_V2_0` +- Enabled `PIDTEMPBED` and set default values +- Set `EXTRUDE_MAXLENGTH` to `600` to allow BMG extruder load/unload +- Set `[XYZE]_DRIVER_TYPE` to `TMC2209` +- Enabled `CLASSIC_JERK` and set default values +- Disabled `Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN` +- Enabled `USE_PROBE_FOR_Z_HOMING` +- Set `Z_MIN_PROBE_PIN` to `PC14` +- Enabled `BLTOUCH` +- Set `PROBING_MARGIN` to `8` +- Set `XY_PROBE_FEEDRATE` and `Z_PROBE_FEEDRATE_FAST` to faster values +- Set `MULTIPLE_PROBING` to 2 +- Set `INVERT_[XYZE]_DIR` to `true` +- Set `X_BED_SIZE` to `230` to regain bed size +- Set `Y_BED_SIZE` to `225` to regain bed size +- Enabled `SOFT_ENDSTOPS_MENU_ITEM` +- Enabled `AUTO_BED_LEVELING_BILINEAR` +- Enabled `RESTORE_LEVELING_AFTER_G28` +- Enabled `PREHEAT_BEFORE_LEVELING` and set default values +- Enabled `G26_MESH_VALIDATION` +- Set `GRID_MAX_POINTS_X` to `9` +- Enabled `EXTRAPOLATE_BEYOND_GRID` +- Enabled `MESH_EDIT_GFX_OVERLAY`, set `MESH_INSET` to `10` and `GRID_MAX_POINTS_X` to `9` (for UBL) +- Enabled `LCD_BED_LEVELING` +- Enabled `MESH_EDIT_MENU` +- Enabled `LEVEL_BED_CORNERS` +- Enabled `Z_SAFE_HOMING` +- Set `HOMING_FEEDRATE_MM_M` to faster values +- Enabled `NOZZLE_PARK_FEATURE` +- Disabled `SPEAKER` to work around fan stuck at 100% issue +- Enabled `FAN_SOFT_PWM` for my dual 5015 setup + +#### Configuration_adv.h + +- Enabled `USE_CONTROLLER_FAN` +- Enabled `CONTROLLER_FAN_EDITABLE` +- Set `BLTOUCH_DELAY` to `500` +- Enabled `PROBE_OFFSET_WIZARD` +- Enabled `BROWSE_MEDIA_ON_INSERT` +- Enabled `LONG_FILENAME_HOST_SUPPORT` +- Set `SDCARD_CONNECTION` to `ONBOARD` +- Enabled `BABYSTEP_ZPROBE_OFFSET` and `BABYSTEP_ZPROBE_GFX_OVERLAY` +- Enabled `LIN_ADVANCE` and set default value +- Enabled `ARC_P_CIRCLES` +- Enabled `ADVANCED_PAUSE_FEATURE` +- Set `FILAMENT_CHANGE_UNLOAD_LENGTH` to `500` +- Enabled `ADVANCED_PAUSE_CONTINUOUS_PURGE` +- Set `ADVANCED_PAUSE_PURGE_LENGTH` to `600` +- Enabled `PARK_HEAD_ON_PAUSE` +- Set all `SLAVE_ADDRESS` to SKR values +- Set `[XY]_STALL_SENSITIVITY` to `50` +- Enabled `IMPROVE_HOMING_RELIABILITY` diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5 Pro/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV1/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5 Pro/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV1/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 6 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00011110,B00000000,B10000000,B00000000,B01111000, + B00010000,B00000000,B10000000,B00000000,B01000000, + B00010000,B10100011,B10011001,B01100000,B01110000, + B00011100,B11010100,B10100101,B10000000,B00001000, + B00010000,B10010100,B10111101,B00001111,B00001000, + B00010000,B10010100,B10100001,B00000000,B01001000, + B00011110,B10010011,B10011101,B00000000,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5 Pro/CrealityV422/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV422/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV422/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5 Pro/CrealityV422/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV422/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV422/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 6 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00011110,B00000000,B10000000,B00000000,B01111000, + B00010000,B00000000,B10000000,B00000000,B01000000, + B00010000,B10100011,B10011001,B01100000,B01110000, + B00011100,B11010100,B10100101,B10000000,B00001000, + B00010000,B10010100,B10111101,B00001111,B00001000, + B00010000,B10010100,B10100001,B00000000,B01001000, + B00011110,B10010011,B10011101,B00000000,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5 Pro/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV427/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5 Pro/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV427/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 6 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00011110,B00000000,B10000000,B00000000,B01111000, + B00010000,B00000000,B10000000,B00000000,B01000000, + B00010000,B10100011,B10011001,B01100000,B01110000, + B00011100,B11010100,B10100101,B10000000,B00001000, + B00010000,B10010100,B10111101,B00001111,B00001000, + B00010000,B10010100,B10100001,B00000000,B01001000, + B00011110,B10010011,B10011101,B00000000,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md new file mode 100644 index 0000000000..8f4fcff83f --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md @@ -0,0 +1,10 @@ +# Modded Ender-5 Config with SKR 1.4 Turbo + +This config is for an Ender-5 upgraded with the following mods: +- BigTreeTech SKR 1.4 Turbo +- TMC2209 drivers (sensorless homing) +- E3D all metal hotend (changes thermistor and max temps) +- "Extreme mode" for all-metal hotend (higher max temp which is not recommended for long-term use by E3D) +- Chamber setup (configures chamber with the thermistor in the E1 thermistor pin on the SKR 1.4 and the heater in the second heater pins beside the bed heater) + +Other mods not listed here may also be enabled in this config, so proceed with caution. diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h new file mode 100644 index 0000000000..b6f5825eb0 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 60 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md new file mode 100644 index 0000000000..792b0b61b5 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md @@ -0,0 +1,13 @@ +# BigTreeTech SKR E3 Turbo with BL-Touch in Ender 5 + +This board is larger than the other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. BLTouch can be connected like the SKR E3 mini v2.0 to the Z-PROBE pins (check naming: https://github.com/bigtreetech/BIGTREETECH-SKR-E3-Turbo/blob/master/Hardware/BTT%20SKR%20E3%20Turbo-Pin.pdf). See a SKR E3 mini v2.0 guide: https://linsomniac.gitlab.io/post/2020-06-20-ender3-pro-skr-v2_0-bltouch-upgrade/ + +This folder contains configuration files for Ender 5 using v2.0.X Marlin with BLTouch. + +To compile, just use these config files and set `default_envs = LPC1769` in platformio.ini file. diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md new file mode 100644 index 0000000000..331ce49968 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md @@ -0,0 +1,13 @@ +# BigTreeTech SKR E3 Turbo in Ender 5 + +This board is larger than the other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. + +This folder contains configuration files for Ender 5 using v2.0.X Marlin. + +To compile, just use these config files and set `default_envs = LPC1769` in platformio.ini file. diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..3d6234e319 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 "Creality/Ender-5/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..a30807a5ef --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 "Creality/Ender-5/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md new file mode 100644 index 0000000000..15ea6c022a --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md @@ -0,0 +1,23 @@ +# Ender-5 with BigTreeTech SKR Mini E3 v2.0 + +## Build with "Auto Build Marlin" + +For the best experience building with PlatformIO in VSCode, open up the "Extensions" panel and install the "Auto Build Marlin" extension. After installation, open up the Auto Build Marlin view and click the "Build" button for the "512K" environment. + +## Build with PlatformIO + +For direct PlatformIO build, locate the `env:STM32F103RC_btt_512K` group the PlatformIO panel and click the "Build" item in that group to start the build. + +To make the main "Build" button apply to this board's environment, edit the `platformio.ini` section `[platformio]` and change `default_envs` to + +```ini +default_envs = STM32F103RC_btt_512K +``` + +## Older Leadscrew + +**Note:** This Ender-5 `Configuration.h` applies to the newer leadscrew with 800 steps/mm. If your printer has the older leadscrew, change the Z component of `DEFAULT_AXIS_STEP_PER_UNIT` to 400 as in the example below: + +```cpp +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 } +``` diff --git a/config/examples/Creality/Ender-5/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-5/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV1/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-5/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV1/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-5/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV427/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-5/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV427/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/README.md b/config/examples/Creality/Ender-5/README.md new file mode 100644 index 0000000000..ef74777b91 --- /dev/null +++ b/config/examples/Creality/Ender-5/README.md @@ -0,0 +1,13 @@ +# Creality Ender-5 Leadscrew Changes + +In mid-to-late 2019, Creality upgraded the base Ender-5 leadscrew to the same one used on the Ender-5 Pro which prevents the bed from dropping once power is cut. + +If your machine shipped with the upgraded leadscrew (or if your prints are 1/2 as tall as they should be), change your Z steps from `400` to `800` in `Configuration.h`: + +Before: +`DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }` + +After: +`DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 800, 93 }` + +Or by sending `M92 Z800` followed by `M500` after updating your firmware. diff --git a/config/examples/Creality/Ender-6/README.md b/config/examples/Creality/Ender-6/README.md new file mode 100644 index 0000000000..877274fbf8 --- /dev/null +++ b/config/examples/Creality/Ender-6/README.md @@ -0,0 +1,34 @@ +# Ender-6 Configurations for Marlin Firmware + +## First Connect a USB Cable + +The Ender-6 doesn't have an accessible USB port, so it's a good idea to connect a USB cable to the micro-USB port on the motherboard. Even if the factory LCD is reflashed with compatible LCD firmware, not all features will be accessible. A USB cable allows the printer to be controlled from a host and will provide complete functionality. + +## BLTouch Instructions + +To use an installed BLTouch probe, enable the custom option `ENABLE_BLTOUCH_PROBE` at the top of `Configuration.h` to get all the settings needed to support the probe. Creality isn't shipping printers with a BLTouch option at this time, but the existence of factory mounts, wiring, and OEM firmware supporting it suggests this may change in the future. + +NOTE: Due to slight manufacturing differences, you will still need to tune your probe's `NOZZLE_TO_PROBE_OFFSET` values, at least for Z. For best results use the Probe Offset Wizard. + +## Flashing Instructions + +NOTE: The bootloader on this printer remembers the name of the most recent firmware file that was flashed from SD, so you must give the firmware file a unique name or it will be ignored. + +Copy the compiled "`firmware.bin`" file to an SD card, giving it a distinct name. Turn off the printer, insert the SD card, and turn the printer on. The update will take a few seconds. + +NOTE: The factory LCD firmware is only compatible with Creality's firmware. The LCD will not show the progress bar increment and the standard UI will not function. This is expected. + +## Marlin DGUS UI Instructions + +The Ender-6 stock LCD can optionally use a [customized Marlin DGUS interface](https://github.com/coldtobi/Marlin_DGUS_Resources). With the stock LCD firmware Marlin can only be controlled from a host over USB (see first section). + +- Copy the `DWIN_SET` folder to a microSD card. The microSD card must be smaller than 8 GB and formatted with a 4K cluster size. +- Power off the printer and disassemble the front panel to get access to the LCD board. +- Insert the SD card into the slot on the back of the LCD (not the main SD slot). +- Power on the printer. The screen will turn blue and display several messages, finishing with "SD Card Process... END!". +- Remove the microSD card and power cycle the printer. +- Once it looks good reassemble the front panel. You may need to physically rotate the LCD by 180˚ for proper UI orientation. + +## Restoring Factory Firmware + +The Creality firmware can be restored by downloading the [Ender-6 V1.0.1 firmware](https://www.creality.com/download) and following the flashing procedure above with the Creality-provided `DWIN_SET` folder. diff --git a/config/examples/Dagoma/Disco Ultimate/README.md b/config/examples/Dagoma/Disco Ultimate/README.md new file mode 100644 index 0000000000..79cce6bca2 --- /dev/null +++ b/config/examples/Dagoma/Disco Ultimate/README.md @@ -0,0 +1,8 @@ +# Dagoma Disco Ultimate Configuration + +## Requirements +- Dagoma Disco Ultimate with F5 board +- Reprap screen + +## TODO +The pause button feature is not yet implemented but its behavior can be replicated with the screen. \ No newline at end of file diff --git a/config/examples/Dagoma/Disco Ultimate/_Bootscreen.h b/config/examples/Dagoma/Disco Ultimate/_Bootscreen.h new file mode 100644 index 0000000000..655921ee58 --- /dev/null +++ b/config/examples/Dagoma/Disco Ultimate/_Bootscreen.h @@ -0,0 +1,52 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 2500 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B01111111,B11100000,B00000001,B11100000,B00000001,B11111111,B10000000,B00111111,B11100000,B00111100,B00000000,B11110000,B00001111,B00000000, + B01111111,B11111000,B00000011,B11110000,B00000111,B11111111,B10000000,B01111111,B11111000,B00111110,B00000001,B11110000,B00001111,B10000000, + B01110000,B00111100,B00000011,B11110000,B00001111,B10000001,B00000000,B11110000,B00111100,B00111111,B00000011,B11110000,B00011111,B10000000, + B01110000,B00001110,B00000111,B11111000,B00001110,B00000000,B00000001,B11100000,B00011110,B00111111,B10000111,B11110000,B00011101,B11000000, + B01110000,B00001111,B00000111,B00111000,B00011100,B00000000,B00000001,B11000000,B00001110,B00111011,B10001111,B01110000,B00111001,B11000000, + B01110000,B00000111,B00000111,B00111100,B00011100,B00000000,B00000011,B10000000,B00001110,B00111001,B11001110,B01110000,B00111000,B11100000, + B01110000,B00000111,B00001110,B00011100,B00011100,B00001111,B11110011,B10000000,B00000111,B00111000,B11111100,B01110000,B01110000,B11100000, + B01110000,B00000111,B00001110,B00011110,B00011100,B00001111,B11110011,B10000000,B00000111,B00111000,B11111000,B01110000,B01110000,B01110000, + B01110000,B00000111,B00001100,B00001110,B00011100,B00001111,B11110011,B10000000,B00001110,B00111000,B01111000,B01110000,B11100000,B01110000, + B01110000,B00001111,B00000100,B00001111,B00011100,B00000000,B01110001,B11000000,B00001110,B00111000,B00110000,B01110000,B11100000,B00111000, + B01110000,B00001110,B00110000,B00000111,B00011110,B00000000,B01100001,B11000000,B00011110,B00111000,B00000000,B01110000,B11100000,B00111000, + B01110000,B00011110,B00110000,B00000111,B10001111,B00000000,B11100000,B11100000,B00111100,B00111000,B00000000,B01110001,B11000000,B00011100, + B01111111,B11111100,B00010011,B11111111,B10000111,B11111111,B11000000,B01111111,B11111000,B00111000,B00000000,B01110001,B11000000,B00011100, + B01111111,B11110000,B00110011,B11111111,B11000011,B11111111,B10000000,B00111111,B11110000,B00111000,B00000000,B01110011,B10011111,B11111110, + B01111111,B10000000,B00110011,B11111111,B11000000,B01111110,B00000000,B00001111,B11000000,B00011000,B00000000,B01100011,B10011111,B11111110 +}; diff --git a/config/examples/Einstart-S/readme.md b/config/examples/Einstart-S/readme.md new file mode 100644 index 0000000000..f6da66f9cd --- /dev/null +++ b/config/examples/Einstart-S/readme.md @@ -0,0 +1,152 @@ +## Einstart S Machine Notes + +The Einstart S is a commercial machine that ships with a proprietary firmware and "licensed" slicer program which requires the original SD card or license file (.lic/.reg) from support in order to function. The impetus for the port was that I acquired the machine on the weekend when tech support was closed. + +## Specifications: + + - Powder coated, formed steel enclosure + - Machined Aluminum internal axis support frame + - Genuine matched HIWIN rails on all axis + - Genuine Minebea NEMA17 motors (200 steps/rev) + - THC7128 3A Stepper Drivers (configured for 16 microsteps, loud) + - 160x160 magnetically coupled non-heated bed + - PLA-only, Direct Drive extruder + - SH1106 OLED Display w/ Cardinal navigation + - 9533 I2C PWM RGB LED Chassis illumination + - Onboard SD-Card Support + +## Initial modifications + +### Bootloader/Marlin installation + +This machine probably doesn't ship with the arduino boot loader, so unless you reflow a 2560 on there to replace the atmega1280 like I did (to preserve the original firmware), you'll need to use ISP to do an initial firmware load and/or bootloader flash! + +It's not that bad though, you can just buy an ISP programmer with the appropriate header, or build an ISP programmer using the Arduino ISP sketch (wiring is easier if you use the "old style wiring" which utilizes the following pinout: (see the comments in the ArduinoISP sketch). + +I used an arduino Nano and a header I had lying around, but you could do the same with a nano and some dupont headers cut and soldered to the board, and taped/glued into a header. + +Triple check your pinouts, it shouldn't fry if connected backwards but if your pinout is wrong you're going to struggle for sure. + +#### ArduinoISP Sketch pinout for 10pin ISP header using "old style wiring": + +See the comments in the ArduinoISP sketch under File:Examples:ArduinoISP + +1 MOSI D11 +2 5v Vcc +3 N/C +4 GND +5 RES D10 +6 N/C +7 SCK D13 +8 N/C +9 MISO D12 +10 GND GND + +#### Einstart Motherboard ISP Header Pinout + +The 10 pin ISP Header is located to the right of the ATMEGA chip, just above the long LCD header. + +#### ISP Diagram + +<--- Face of chassis + +MOSI ( 1 ) ( 2 ) Vcc + N/C ( 3 ) ( 4 ) GND + RST ( 5 ) ( 6 ) GND + SCK ( 7 ) ( 8 ) GND +MISO ( 9 ) (10 ) GND + +Component Plugs ---> + +### Motherboard Diagram + + |1234|1234|1234|1234|12|12|12|12|12|12|12|12|12|12|123|12|1234| + --------------------------------------------------------------- +| XMOT YMOT ZMOT EMOT EF HB HE PF ZS YS XS PS BT ET PT1 TC VBRG | +| ===== ====== [DC| +|====== ====== ____ ISP IC1__ ___| +| |1280| ::::: | | |USB| +| |____| 1 |__| |___| +| BUTTON |SD | +| GDLRUO LCD |___| +|________________________[......][....................]_________| + +Legend: + +XMOT X-Motor +YMOT Y-Motor +ZMOT Z-Motor +EMOT E-Motor +EF Extruder Fan +HB Heated Bed (PWM) +HE Hot End (PWM) +PF Part Fan (PWM) +ZS Z-Endstop (Max) +YS Y-Endstop (Min) +XS X-Endstop (Min) +PS SPST Switch to enable DC 24v +BT Bed Thermistor (header not populated) +ET Extruder Thermistor +PT1 Pt100 Thermocouple (not populated) +TC Thermocouple (not populated) +VBRG LED Output from PCA5933 +BUTTONS +G GND (buttons are pulled low on activation) +D DOWN +L LEFT +R RIGHT +U UP +O OK (MIDDLE) + +## Uploading Marlin firmware to a stock Einstart S + +### Summary: + +Make, buy or steal a 10 pin ISP programmer and select the appropriate programmer option via Tools:Programmer in Arduino IDE, use the Sketch:Upload Using Programmer command or Shift-Ctrl-U (vs Ctrl-U to upload via serial). + +### Detailed procedure: + +You can either load Marlin directly via ISP programmer (easiest, but requires opening the chassis every time you want to change/update firmware) or, just program the bootloader which will enable later uploads via USB. HOWEVER, to actually upload the sketch you will need one of the following: + + - ISP programming header (ArduinoISP sketch, pinout below) + - OR + - Install bootloader on atmega1280 to enable native USB uploads (also requires ISP). + - AND + - Connect button between RESET and GND on ISP header, release post compile just before upload starts. + - OR + - Install permanent modification described below, requires no button press during upload. + +### Permanent modification to enable USB uploads via Arduino IDE + +As a permanent modification to enable direct USB upload from the arduino IDE, you would need to flash the boot loader using ISP first; but then you can solder a wire or 100n capacaitor between the DTR line on the FTDI to the reset line, which is conveniently located in several places on the board. + +#### FTDI Chip Diagram (IC1) + + ______ + TXD --|1 28|--OSCO + DTR --|2 27|--OSCI + RTS --|3 26|--TEST + VCCIO--|4 25|--AGND + RXD --|5 24|--N/C + RI --|6 23|--CBUS0 + GND --|7 22|--CBUS1 + N/C --|8 21|--GND + DSR --|9 20|--Vcc + DCD --|10 19|--RES + CTS --|11 18|--GND + CBUS4--|12 17|--3V3 + CBUS2--|13 16|--USBDM + CBUS3--|14 15|--USBDP + |______| + +#### Arduino Reset Circuit + + DTR-----||----GND----/\/\/\/----Vcc + 100nf 10k + +With this modification you no longer need the reset button and you can program directly from the Arduino IDE. + +### Power notes during flashing. + +You do NOT need power connected when flashing via ISP. +You DO need power when flashing via USB Serial but you MUST time the release of the reset line to allow the upload unless you've performed the permanent modification. diff --git a/config/examples/Elegoo/Neptune 2/readme.md b/config/examples/Elegoo/Neptune 2/readme.md new file mode 100644 index 0000000000..f9b5c24dc5 --- /dev/null +++ b/config/examples/Elegoo/Neptune 2/readme.md @@ -0,0 +1 @@ +When updating the firmware from the SD card, the firmware file must be named 'elegoo.bin'. \ No newline at end of file diff --git a/config/examples/Eryone/Thinker SE/README.md b/config/examples/Eryone/Thinker SE/README.md new file mode 100644 index 0000000000..7d02b4e3c3 --- /dev/null +++ b/config/examples/Eryone/Thinker SE/README.md @@ -0,0 +1,23 @@ +## Eryone Thinker SE + + - BLTouch probe + - Filament runout Sensor + - TMC2208 (standalone) stepper drivers + +## How to use the config + +#### Check the hardware of your printer + +1. If you're using the stock printer there's need to modify the config. +2. If you're using the Filament Runout Sensor: + - Enable this line (Remove the "`//`" prefix)
+ `//#define THINKERV2_FL // Enable for an installed Filament runout sensor` +3. You are using the Bltouch: + - Enable this line (Remove the "`//`" prefix)
+ `//#define THINKERV2_BLTOUCH // Enable for an installed BLTOUCH` +4. You are using the direct drive extruder: + - Enable this line (Remove the "`//`" prefix)
+ `//#define THINKERV2_Direct // Enable for Direct drive extruder system` +5. Can I use all of the mods? The answer is yes. You can use all of them or just some of them. + +## Have fun :) diff --git a/config/examples/Eryone/Thinker SE/_Bootscreen.h b/config/examples/Eryone/Thinker SE/_Bootscreen.h new file mode 100644 index 0000000000..7ad31a07fe --- /dev/null +++ b/config/examples/Eryone/Thinker SE/_Bootscreen.h @@ -0,0 +1,94 @@ +/** + * 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 . + * + */ + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Eryone/Thinker SE" + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111100,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111111,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111111,B11001111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B11100011,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111111,B11000001,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111111,B10000000,B01111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111110,B00000000,B00011111,B11111001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111000,B00000000,B00000111,B11100011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11100000,B00000000,B00000001,B11001111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B10000000,B00000000,B00000000,B00111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B00000000,B00001110,B00000000,B00111111,B10011111,B11111110,B01111111,B11110000,B00000000,B00000000,B11111100,B00001100,B00000011,B00111111,B11111110, + B01111111,B00000000,B00011111,B10000000,B00111111,B10011111,B11111110,B01111111,B11111001,B11000000,B00110001,B11111110,B00011110,B00000011,B00111111,B11111110, + B01111111,B00000000,B01111111,B11100000,B00111111,B10001111,B11111000,B01111111,B11111101,B11000000,B01110011,B11111111,B00011111,B00000011,B00001111,B11111000, + B01111111,B00000001,B11111111,B11110000,B00111111,B10000000,B00000000,B01110000,B00011100,B11100000,B01110111,B10000011,B10011111,B10000011,B00000000,B00000000, + B01111111,B00000001,B11111111,B11100000,B00111111,B10000000,B00000000,B01110000,B00011100,B11110001,B11100111,B00000011,B10011111,B11000011,B00000000,B00000000, + B01111111,B00000000,B01111111,B10000000,B00111111,B10011111,B11111110,B01111111,B11111100,B01111111,B11000111,B00000001,B11011101,B10000011,B00111111,B11111110, + B01111111,B00000000,B00011110,B00000000,B00111111,B10011111,B11111110,B01111111,B11111000,B00111111,B10000110,B00000001,B11011100,B00010011,B00111111,B11111110, + B01111111,B00000000,B00001100,B00000000,B00111111,B10001111,B11111100,B01111111,B11111000,B00001110,B00000111,B00000001,B10011100,B00111111,B00001111,B11111000, + B01111111,B00000000,B00111111,B00000000,B00111111,B10000000,B00000000,B01110000,B00011100,B00000110,B00000111,B00000011,B10011100,B00111111,B00000000,B00000000, + B01111111,B00000000,B11111111,B10000000,B00111111,B10000000,B00000000,B01110000,B00011100,B00000110,B00000011,B11000111,B10011100,B00011111,B00000000,B00000000, + B01111111,B00000001,B11111111,B11100000,B00111111,B10011111,B11111110,B01110000,B00011100,B00000110,B00000001,B11111111,B00011100,B00001111,B00111111,B11111110, + B01111111,B00000011,B11111111,B11000000,B00111111,B10011111,B11111110,B01100000,B00011000,B00000110,B00000000,B11111110,B00001100,B00000111,B00111111,B11111110, + B01111111,B00000000,B11111111,B00000000,B00111111,B10001111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111000, + B01111111,B00000000,B00111100,B00000000,B00111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B10000000,B00011000,B00000000,B01111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11000000,B00000000,B00000001,B11111111,B10011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11110000,B00000000,B00000011,B11111111,B10011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111100,B00000000,B00001111,B11111111,B10011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111111,B10000000,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111111,B11100011,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11110111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11110111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111111,B11110111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B11110111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B11110111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01110111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111111,B11111000,B00000011,B11000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000000,B11111111,B00011111,B11111100,B00000000,B00000000, + B00001111,B11111111,B11111000,B00000011,B11000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000001,B11111111,B10011111,B11111100,B00000000,B00000000, + B00000000,B11111000,B01111000,B00000011,B11000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,B11100011,B10011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,B11000000,B00011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111011,B11100011,B11001111,B01111100,B01111000,B11110011,B11111000,B11110111,B10000011,B11000000,B00011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111111,B11110011,B11001111,B11111110,B01111001,B11100111,B11111100,B11111111,B10000011,B11111100,B00011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111100,B11110011,B11001111,B10011110,B01111011,B11001111,B10111110,B11111100,B00000001,B11111111,B00011111,B11111000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B10001111,B00011110,B11111000,B00000001,B11111111,B10011111,B11111000,B11111111,B11110000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B00001111,B11111110,B11110000,B00000000,B01111111,B10011111,B00000000,B11111111,B11110000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B10001111,B11111110,B11110000,B00000000,B00000111,B11011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B11001111,B00000000,B11110000,B00000000,B00000011,B11011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111011,B11101111,B10001110,B11110000,B00000011,B10000111,B11011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111001,B11110111,B11111110,B11110000,B00000011,B11111111,B10011111,B11111100,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111000,B11111011,B11111100,B11110000,B00000001,B11111110,B00011111,B11111100,B00000110,B00000000 +}; diff --git a/config/examples/Eryone/Thinker V2/README.md b/config/examples/Eryone/Thinker V2/README.md new file mode 100644 index 0000000000..e8cb523456 --- /dev/null +++ b/config/examples/Eryone/Thinker V2/README.md @@ -0,0 +1,25 @@ +## Eryone Thinker V2 + + - BLTouch probe + - Filament runout Sensor + +## How to use the config + +#### Check the hardware of your printer + +1. If you're using the stock printer there's need to modify the config. +2. If you're using the Filament Runout Sensor: + - Enable this line (Remove the "`//`" prefix)
+ `//#define THINKERV2_FL // Enable for an installed Filament runout sensor` +3. You are using the Bltouch: + - Enable this line (Remove the "`//`" prefix)
+ `//#define THINKERV2_BLTOUCH // Enable for an installed BLTOUCH` +4. You are using the direct drive extruder: + - Enable this line (Remove the "`//`" prefix)
+ `//#define THINKERV2_Direct // Enable for Direct drive extruder system` +5. Can I use all of the mods? The answer is yes. You can use all of them or just some of them. +6. If your printer's PSU has a reset problem you can disable the `PIDTEMPBED` feature: + - Disable this line (Prefix with "`//`")
+ `#define PIDTEMPBED // If your PSU has a reset problem then try to disable it to improve this problem` + +## Have fun :) diff --git a/config/examples/Eryone/Thinker V2/_Bootscreen.h b/config/examples/Eryone/Thinker V2/_Bootscreen.h new file mode 100644 index 0000000000..a7a328daba --- /dev/null +++ b/config/examples/Eryone/Thinker V2/_Bootscreen.h @@ -0,0 +1,79 @@ +/** + * 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 "Eryone/Thinker V2" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'tHINKER V2.png' + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B01111111,B11111111,B00001111,B11111111,B00000000,B00000000,B00000000,B00011111,B10000000,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111111,B00011111,B11111111,B10000111,B00000000,B00111000,B00111111,B11000000,B01110000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111110,B00011111,B11111111,B11000011,B00000000,B00111000,B01111111,B11100000,B01111000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000001,B11000011,B00000000,B00110000,B11110000,B11110000,B01111000,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11100011,B00000000,B00110000,B11100000,B01111000,B01111100,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B01100011,B10000000,B01110001,B11000000,B00111000,B01101110,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11100011,B10000000,B01110001,B10000000,B00011000,B01100111,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000001,B11100001,B11100001,B10000000,B00011100,B01100111,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111111,B11111110,B00011111,B11111111,B11000001,B11111111,B11100011,B10000000,B00011100,B01100011,B00000011,B00000111,B11111111,B11000000,B00000000, + B00000000,B01111111,B11111111,B00011111,B11111111,B11000000,B01111111,B10000011,B10000000,B00011100,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111111,B00011111,B11111111,B10000000,B00111111,B00000011,B10000000,B00011100,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000001,B11000000,B00001100,B00000011,B10000000,B00011100,B01100000,B00110011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000001,B10000000,B00011000,B01100000,B00111011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000001,B11000000,B00011000,B01100000,B00111011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000001,B11000000,B00111000,B01100000,B00011111,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000000,B11100000,B01110000,B01100000,B00001111,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000000,B01111001,B11110000,B01100000,B00001111,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111111,B11111111,B00011000,B00000000,B11000000,B00001100,B00000000,B01111111,B11100000,B01100000,B00000111,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111111,B00011000,B00000000,B11000000,B00001100,B00000000,B00011111,B10000000,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111110,B00001000,B00000000,B11000000,B00000100,B00000000,B00001111,B00000000,B00100000,B00000001,B00001111,B11111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001100,B00000011,B00000000,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11101100,B00000011,B00000000,B00000100,B00000000,B00000000,B00000000,B11000000,B01100111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00000000,B00000000,B00000100,B00000000,B00000000,B00000000,B01000000,B01000100,B01100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00000000,B00000000,B00000100,B00000000,B00000000,B00000000,B01100000,B11000000,B01100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001101,B11100011,B00110111,B10000100,B01110001,B11100011,B01100000,B00100000,B11000000,B00100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001110,B00110011,B00111000,B11000100,B11000011,B00110011,B10000000,B00110000,B10000000,B01100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B10000110,B00010011,B00000000,B00110001,B10000000,B01000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000101,B00000110,B00010011,B00000000,B00010001,B00000001,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000111,B00000111,B11110011,B00000000,B00011001,B00000011,B10000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000101,B10000100,B00000011,B00000000,B00011011,B00000110,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B11000110,B00000011,B00000000,B00001010,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B01100011,B00010011,B00000000,B00001110,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B00110001,B11100011,B00000000,B00001110,B00001111,B11100000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Felix/DUAL/README.md b/config/examples/Felix/DUAL/README.md new file mode 100644 index 0000000000..48fe099151 --- /dev/null +++ b/config/examples/Felix/DUAL/README.md @@ -0,0 +1,60 @@ +# Felix 2.0/3.0 Configuration for Marlin Firmware + +Bringing silky smooth prints to Felix. + +## Build HOWTO + + - Install the latest non-beta Arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software + - Download the Marlin firmware + - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - In both cases use the "Download Zip" button on the right. + +``` +cd Marlin/src +cp config/examples/Felix/Configuration_adv.h . +``` + +The next step depends on your setup: + +### Single Extruder Configuration + + cp config/examples/Felix/Configuration.h . + +### Dual Extruder Configuration + + cp config/examples/Felix/DUAL/Configuration.h Configuration.h + +### Compile Firmware + + - Start the Arduino IDE. + - Select Tools -> Board -> Arduino Mega 2560 + - Select the correct serial port in Tools -> Serial Port (usually /dev/ttyUSB0) + - Open Marlin.pde or .ino + - Click the Verify/Compile button + +### Flash Firmware + +#### Connected directly via USB + + - Click the Upload button. If all goes well the firmware is uploading + +#### Remote update + +Find the latest Arduino build: + + ls -altr /tmp/ + drwxr-xr-x 5 chrono users 12288 Mar 3 21:41 build6072035599686630843.tmp + +Copy the firmware to your printer host: + + scp /tmp/build6072035599686630843.tmp/Marlin.cpp.hex a.b.c.d:/tmp/ + +Connect to your printer host via ssh, stop Octoprint or any other service that may block your USB device and make sure you have avrdude installed, then run: + + avrdude -C/etc/avrdude.conf -v -v -v -patmega2560 -cwiring -P/dev/ttyUSB0 \ + -b115200 -D -Uflash:w:/tmp/Marlin.cpp.hex:i + +## Acknowledgements + +Mashed together and tested on https://apollo.open-resource.org/mission:resources:picoprint based on collaborative teamwork of @andrewsil1 and @thinkyhead. diff --git a/config/examples/Felix/Single/README.md b/config/examples/Felix/Single/README.md new file mode 100644 index 0000000000..48fe099151 --- /dev/null +++ b/config/examples/Felix/Single/README.md @@ -0,0 +1,60 @@ +# Felix 2.0/3.0 Configuration for Marlin Firmware + +Bringing silky smooth prints to Felix. + +## Build HOWTO + + - Install the latest non-beta Arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software + - Download the Marlin firmware + - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - In both cases use the "Download Zip" button on the right. + +``` +cd Marlin/src +cp config/examples/Felix/Configuration_adv.h . +``` + +The next step depends on your setup: + +### Single Extruder Configuration + + cp config/examples/Felix/Configuration.h . + +### Dual Extruder Configuration + + cp config/examples/Felix/DUAL/Configuration.h Configuration.h + +### Compile Firmware + + - Start the Arduino IDE. + - Select Tools -> Board -> Arduino Mega 2560 + - Select the correct serial port in Tools -> Serial Port (usually /dev/ttyUSB0) + - Open Marlin.pde or .ino + - Click the Verify/Compile button + +### Flash Firmware + +#### Connected directly via USB + + - Click the Upload button. If all goes well the firmware is uploading + +#### Remote update + +Find the latest Arduino build: + + ls -altr /tmp/ + drwxr-xr-x 5 chrono users 12288 Mar 3 21:41 build6072035599686630843.tmp + +Copy the firmware to your printer host: + + scp /tmp/build6072035599686630843.tmp/Marlin.cpp.hex a.b.c.d:/tmp/ + +Connect to your printer host via ssh, stop Octoprint or any other service that may block your USB device and make sure you have avrdude installed, then run: + + avrdude -C/etc/avrdude.conf -v -v -v -patmega2560 -cwiring -P/dev/ttyUSB0 \ + -b115200 -D -Uflash:w:/tmp/Marlin.cpp.hex:i + +## Acknowledgements + +Mashed together and tested on https://apollo.open-resource.org/mission:resources:picoprint based on collaborative teamwork of @andrewsil1 and @thinkyhead. diff --git a/config/examples/FlashForge/CreatorPro/CuraSettings.txt b/config/examples/FlashForge/CreatorPro/CuraSettings.txt new file mode 100644 index 0000000000..d45af2b721 --- /dev/null +++ b/config/examples/FlashForge/CreatorPro/CuraSettings.txt @@ -0,0 +1,157 @@ +NOTE ON FLASHING THE FIRMWARE: + +The firmware for the Atmel chip used for USB on the Mighty Board is the same as the Arduino Mega's, but it doesn't do an automatic reset. If you want the printer to reset on DTR you will need to flash it with the firmware for the Arduino Mega. + +### Use with all nozzle settings + +Build plate shape: Rectangular + [X] Origin at center + [X] Heated bed +G-code flavor: Marlin + +### Right Nozzle + +Number of Extruders: 1 + +X (Width) 227 +Y (Depth) 148 +Z (Heigth) 150 + +Extruder 1 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: 0 + Nozzle offset Y: 0 + Cooling Fan Number:0 + +;START G-CODE; +M104 T0 S{material_print_temperature} +M140 S{material_bed_temperature} +G28 +T0 +G1 X150 Y-70 Z30 F4800 ; move to wait position left hand side of the table +M190 S{material_bed_temperature} +M109 T0 S{material_print_temperature} +G92 E0 +G1 Z0.4 F1800 +G1 X110 Y-70 E20 F300 ; purge nozzle +G1 X120 Y-70 Z0.15 F1200 ; slow wipe +G1 X110 Y-70 Z0.5 F1200 ; lift +G92 E0 +;START G-CODE; + +;END G-CODE; +G1 X150 Y75 Z150 F1000 ; send Z axis to bottom of machine +M140 S0; cool down HBP +M104 T0 S0 ; cool down right extruder +M104 T1 S0 ; cool down left extruder +M127 ; stop blower fan +M18 ; disable stepper +;END G-CODE; + +***Left Nozzle*** +Number of Extruders: 1 +X (Width) 227 +Y (Depth) 148 +Z (Heigth) 150 + +Extruder 1 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: -34 + Nozzle offset Y: 0 + Cooling Fan Number:0 + +;START G-CODE; +M104 S{material_print_temperature} +M140 S{material_bed_temperature} +G28 +T1 +G1 X-110 Y-70 Z30 F4800 ; move to wait position left hand side of the table +M104 S{material_print_temperature} +M190 S{material_bed_temperature} +M109 S{material_print_temperature} +G92 E0 +G1 Z0.4 F1800 +G1 E10 F300 ; purge nozzle +G1 X-67 Y-70 E25 F300 ; purge nozzle +G1 X-77 Y-70 Z0.15 F1200 ; slow wipe +G1 X-67 Y-70 Z0.5 F1200 ; lift +G92 E0 +;START G-CODE; + +;END G-CODE; +G1 X150 Y75 Z150 F1000 ; send Z axis to bottom of machine +M140 S0; cool down HBP +M104 T0 S0 ; cool down right extruder +M104 T1 S0 ; cool down left extruder +M127 ; stop blower fan +M18 ; disable stepper +;END G-CODE; + +***Both Nozzles*** +Number of Extruders: 2 +X (Width) 295 <---- bed width + 2 x nozzle offset +Y (Depth) 148 +Z (Heigth) 150 + +Extruder 1 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: 0 + Nozzle offset Y: 0 + Cooling Fan Number:0 + ;Extruder End G-code; + G1 X150 Y70 F9000;move away from print in case extrusion cool down speed modifier too low + ;Extruder End G-code; + +Extruder 2 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: -34 + Nozzle offset Y: 0 + Cooling Fan Number:0 + ;Extruder End G-code; + G1 X150 Y70 F9000;move away from print in case extrusion cool down speed modifier too low + ;Extruder End G-code; + +;START G-CODE; +M104 T0 S{material_print_temperature, 0} +M104 T1 S{material_print_temperature, 1} +M140 S{material_bed_temperature} +G28 +;purge right +T0 +G1 X155 Y-70 Z30 F4800 +M190 S{material_bed_temperature} +M109 T0 S{material_print_temperature, 0} +M104 T0 S{material_standby_temperature, 0} +G92 E0 +G1 Z0.4 F1800 +G1 X110 Y-70 E20 F300 ; purge nozzle +G1 X120 Y-70 Z0.15 F1200 ; slow wipe +G1 E17 F2400 +G1 X110 Y-70 Z0.5 F1200 ; lift +G92 E0 +;purge left +T1 +;M104 T0 S{material_standby_temperature, 0} +M104 T1 S{material_print_temperature, 1} +G1 X-110 Y-70 Z30 F4800 +M109 T1 S{material_print_temperature, 1} +G92 E0 +G1 Z0.4 F1800 +G1 X-67 Y-70 E25 F300 ; purge nozzle +G1 X-77 Y-70 Z0.15 F1200 ; slow wipe +G1 E22 F3600 +G1 X-67 Y-70 Z0.5 F1200 ; lift +G92 E0 +;START G-CODE; +;END G-CODE; +G1 X150 Y75 Z150 F1000 ; send Z axis to bottom of machine +M140 S0; cool down HBP +M104 T0 S0 ; cool down right extruder +M104 T1 S0 ; cool down left extruder +M127 ; stop blower fan +M18 ; disable stepper +;END G-CODE; diff --git a/config/examples/FlyingBear/P905H/README.md b/config/examples/FlyingBear/P905H/README.md new file mode 100644 index 0000000000..dcb9ba1029 --- /dev/null +++ b/config/examples/FlyingBear/P905H/README.md @@ -0,0 +1,14 @@ +# Flying Bear P905H configuration + +This configuration is for a P905H with **a single extruder and inductive Z-sensor**. It's been thoroughly tested, and I've tried to make the printer work smoothly, so this configuration is more focused on print quality than speed. + +- Use this firmware as a baseline for other P905 modifications. +- Find other notes in the config files by searching for "P905H". + +## Build Instructions + - Get Visual Studio Code and install the "Auto Build Marlin" extension. + - Download the [Marlin source code](https://marlinfw.org/meta/download/). + - Copy the two Configuration files from this folder into the 'Marlin' folder (replacing the existing files). + - Open the 'MarlinFirmware' project folder in Visual Studio Code. + - Click the "Auto Build Marlin" button and then the Upload button. + - Don't forget to reset your EEPROM with `M502` and `M500` after flashing. diff --git a/config/examples/Formbot/Raptor/_Bootscreen.h b/config/examples/Formbot/Raptor/_Bootscreen.h new file mode 100644 index 0000000000..d8c8d1fc90 --- /dev/null +++ b/config/examples/Formbot/Raptor/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 "Formbot/Raptor" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111, + B11111110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111, + B11111100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111, + B11111100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111, + B11111100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000000,B00000001,B11110000,B00111111, + B11111110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000000,B00000010,B00001000,B00011111, + B11111100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000000,B00000101,B00000100,B00111111, + B11111110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000000,B00001010,B00000010,B00011111, + B11111100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000000,B00010101,B00000001,B00111111, + B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111, + B11111100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000000,B00010100,B00000001,B00111111, + B11111110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111, + B11111100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B00010101,B00000001,B00111111, + B11111110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101010,B00001010,B00000010,B00011111, + B11111100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010001,B00000101,B00000100,B00111111, + B11111110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100001,B00000010,B10001000,B00011111, + B11111100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010001,B00000001,B11110000,B00111111, + B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101010,B00000000,B00000000,B00011111, + B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00000000,B00000000,B00111111, + B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111, + B11111100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111, + B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111, + B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111, + B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11100000,B00101110,B11111011,B01111101,B11111011,B11111011,B11001111,B11000001,B11011111,B10111011,B00111110,B11000000,B11100001,B11111110,B00111100,B00011111, + B11111101,B11101110,B01111011,B00111001,B11111001,B11110011,B11001111,B10011110,B11011111,B10111011,B00111110,B11011111,B11011110,B11111100,B11011101,B11100111, + B11111101,B11101110,B00111011,B10111011,B11111001,B11101011,B11010111,B10111111,B01011111,B10111011,B01011110,B11011111,B11011110,B11111101,B11101101,B11110111, + B11111101,B11101110,B10111011,B11010011,B11111010,B11101011,B10110111,B00111111,B11011111,B10111011,B01001110,B11011111,B11011111,B11111111,B11001101,B11110011, + B11111101,B11101110,B11011011,B11000111,B11111010,B11101011,B10111011,B01111111,B11000000,B00111011,B01101110,B11000000,B11100011,B11111111,B00011101,B11110011, + B11111101,B11101110,B11001011,B11101111,B11111010,B11011011,B10111011,B01111111,B11011111,B10111011,B01100110,B11011111,B11111000,B11111111,B11001101,B11110011, + B11111101,B11101110,B11101011,B11101111,B11111011,B01011011,B00000011,B00111111,B01011111,B10111011,B01110110,B11011111,B11111110,B01111111,B11101101,B11110011, + B11111101,B11101110,B11110011,B11101111,B11111011,B01011011,B01111001,B10111110,B11011111,B10111011,B01111010,B11011111,B11011110,B01111101,B11101101,B11110111, + B11111101,B11101110,B11110011,B11101111,B11111011,B10111010,B11111101,B10011110,B11011111,B10111011,B01111100,B11011111,B11011110,B11111101,B11001101,B11100111, + B11111101,B11101110,B11111011,B11101111,B11111011,B10111010,B11111101,B11000001,B11011111,B10111011,B01111110,B11000000,B11100000,B11111110,B00011100,B00011111 +}; diff --git a/config/examples/Formbot/Raptor/_Statusscreen.h b/config/examples/Formbot/Raptor/_Statusscreen.h new file mode 100644 index 0000000000..04f52f5713 --- /dev/null +++ b/config/examples/Formbot/Raptor/_Statusscreen.h @@ -0,0 +1,77 @@ +/** + * 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 "Formbot/Raptor" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 3 +#define STATUS_LOGO_WIDTH 24 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111, + B10000000,B00000000,B00000001, + B10001110,B00000000,B11100001, + B10011111,B00000001,B11110001, + B10010011,B10000001,B00111001, + B10011111,B10000001,B11111001, + B10011111,B10000001,B11111001, + B10011111,B10111001,B11111001, + B10001111,B00101000,B11110001, + B10000000,B00111000,B00000001, + B10000000,B00000000,B00000001, + B10011111,B11111111,B11111001, + B10010001,B01110100,B10011001, + B10011011,B00000110,B10101001, + B10011011,B01010100,B10101001, + B10011011,B01010110,B10101001, + B10011011,B01010100,B10011001, + B10011111,B11111111,B11111001, + B11111111,B11111111,B11111111 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Formbot/T_Rex_2+/_Bootscreen.h b/config/examples/Formbot/T_Rex_2+/_Bootscreen.h new file mode 100644 index 0000000000..912167eff9 --- /dev/null +++ b/config/examples/Formbot/T_Rex_2+/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * 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 "Formbot/T_Rex_2+" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11100000,B00111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000, + B00000000,B10000011,B11000001,B00000000,B01110000,B00111100,B00000000,B00111000,B00000011,B11000000,B01111000,B00000000,B00000111,B00111000,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000001,B11111110,B00000000,B11000000,B01100000,B00000000,B00001110,B00011100,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000011,B11000111,B00000000,B01100000,B11000000,B00000000,B00001100,B00001100,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01111110,B01111000,B00000110,B00000001,B10000000,B00110001,B10000000,B00000000,B00000000,B00001100,B00000110,B00000000, + B00000000,B00000011,B11000000,B11111111,B01111111,B11100000,B00000110,B00000001,B11000000,B00011011,B00000000,B00000000,B00000000,B00011100,B00111111,B11000000, + B00000000,B00000011,B11000000,B11111111,B01110000,B11100000,B00001111,B11111111,B11000000,B00001111,B00000000,B00000000,B00000000,B00111000,B00111111,B11000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B01111000,B00001100,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B01110000,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000110,B00000000,B00000000,B00011001,B10000000,B00000000,B00000000,B01100000,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000110,B00000000,B11000000,B00110000,B11000000,B00000000,B00000001,B11000000,B00000110,B00000000, + B10000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000011,B10000001,B10000000,B01100000,B01100000,B00000000,B00000011,B10000000,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00001110,B10000001,B11111111,B10000000,B11000000,B00110000,B00000000,B00001111,B11111100,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00000111,B00000000,B01111100,B00000011,B10000000,B00011100,B00000000,B00011111,B11111100,B00000000,B00000001, + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111 +}; diff --git a/config/examples/Formbot/T_Rex_2+/_Statusscreen.h b/config/examples/Formbot/T_Rex_2+/_Statusscreen.h new file mode 100644 index 0000000000..3cdaea16b9 --- /dev/null +++ b/config/examples/Formbot/T_Rex_2+/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 "Formbot/T_Rex_2+" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 4 +#define STATUS_LOGO_WIDTH 21 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00011110,B00000000, + B00000000,B11111111,B10000000, + B00000001,B11111111,B11100000, + B00000111,B00000000,B00000000, + B00001111,B00000000,B00000000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00000000,B00000000, + B00011111,B00000000,B00000000, + B00001111,B00001111,B11111000, + B00000111,B00001111,B11110000, + B00000011,B00001111,B11000000, + B00000001,B00001111,B00000000, + B00000000,B00001100,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Formbot/T_Rex_3/_Bootscreen.h b/config/examples/Formbot/T_Rex_3/_Bootscreen.h new file mode 100644 index 0000000000..fba4169669 --- /dev/null +++ b/config/examples/Formbot/T_Rex_3/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * 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 "Formbot/T_Rex_3" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11100000,B00111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11110000,B00000000,B00000000, + B00000000,B10000011,B11000001,B00000000,B01110000,B00111100,B00000000,B00111000,B00000011,B11000000,B01111000,B00000000,B00001100,B00011000,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000001,B11111110,B00000000,B11000000,B01100000,B00000000,B00000000,B00001100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000011,B11000111,B00000000,B01100000,B11000000,B00000000,B00000000,B00001100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01111110,B01111000,B00000110,B00000001,B10000000,B00110001,B10000000,B00000000,B00000000,B00011100,B00000000,B00000000, + B00000000,B00000011,B11000000,B11111111,B01111111,B11100000,B00000110,B00000001,B11000000,B00011011,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000, + B00000000,B00000011,B11000000,B11111111,B01110000,B11100000,B00001111,B11111111,B11000000,B00001111,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B01111000,B00001100,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00011100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000110,B00000000,B00000000,B00011001,B10000000,B00000000,B00000000,B00001100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000110,B00000000,B11000000,B00110000,B11000000,B00000000,B00000000,B00001100,B00000000,B00000000, + B10000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000011,B10000001,B10000000,B01100000,B01100000,B00000000,B00001100,B00011000,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00001110,B10000001,B11111111,B10000000,B11000000,B00110000,B00000000,B00000111,B11110000,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00000111,B00000000,B01111100,B00000011,B10000000,B00011100,B00000000,B00000001,B11100000,B00000000,B00000001, + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111 +}; diff --git a/config/examples/Formbot/T_Rex_3/_Statusscreen.h b/config/examples/Formbot/T_Rex_3/_Statusscreen.h new file mode 100644 index 0000000000..5bf520543e --- /dev/null +++ b/config/examples/Formbot/T_Rex_3/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 "Formbot/T_Rex_3" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 4 +#define STATUS_LOGO_WIDTH 21 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00011110,B00000000, + B00000000,B11111111,B10000000, + B00000001,B11111111,B11100000, + B00000111,B00000000,B00000000, + B00001111,B00000000,B00000000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00000000,B00000000, + B00011111,B00000000,B00000000, + B00001111,B00001111,B11111000, + B00000111,B00001111,B11110000, + B00000011,B00001111,B11000000, + B00000001,B00001111,B00000000, + B00000000,B00001100,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md new file mode 100644 index 0000000000..d908932c50 --- /dev/null +++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md @@ -0,0 +1,54 @@ +These are example configurations for the low-cost [Acrylic Průša I3 pro B 3D Printer DIY kit](http://www.geeetech.com/acrylic-geeetech-prusa-i3-pro-b-3d-printer-diy-kit-p-917.html) and the [3DTouch auto bed leveling sensor](http://www.geeetech.com/geeetech-3dtouch-auto-bed-leveling-sensor-for-3d-printer-p-1010.html) based on: + +- `../GT2560/` +- [Marlin 1.1.4 With 3DTouch / BLTouch for i3 Pro B](https://www.geeetech.com/forum/viewtopic.php?t=19846) + +The main characteristics of these configurations are: + +- The defined motherboard is `BOARD_GT2560_REV_A_PLUS`. +- Travel limits are adjusted to the printer bed size and position. +- An example `SKEW_CORRECTION` for a particular printer is enabled. See comments below about how to adjust it to a particular printer. +- Using the LCD controller for bed leveling is enabled. + - `PROBE_MANUALLY` is enabled, which *provides a means to do "Auto" Bed Leveling without a probe*. + - The `LEVEL_BED_CORNERS` option for manual bed adjustment is enabled. + - Bilinear bed leveling is enabled, the boundaries for probing are adjusted to the glass size, and extrapolation is enabled. +- `PRINTCOUNTER` is enabled, in order to track statistical data. +- `INDIVIDUAL_AXIS_HOMING_MENU` is enabled, which adds individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. +- The speaker is enabled for the UI feedback. +- `bltouch` variant: + - `USE_ZMAX_PLUG` is enabled. See comments about connections below. + - Heaters and fans are turned off when probing. + - Multiple probing is set to 3. + +# First-time configuration + +## Skew factor + +The skew factor must be adjusted for each printer: + +- First, uncomment `#define XY_SKEW_FACTOR 0.0`, compile and upload the firmware. +- Then, print [YACS (Yet Another Calibration Square)](https://www.thingiverse.com/thing:2563185). Hint, scale it considering a margin for brim (if used). The larger, the better to make error measurements. +- Measure the printed part according to the comments in the example configuration file, and set `XY_DIAG_AC`, `XY_DIAG_BD` and `Y_SIDE_AD`. +- Last, comment `#define XY_SKEW_FACTOR 0.0` again, compile and upload. + +## 3DTouch auto leveling sensor + +- Print a suitable mount to attach the sensor to the printer. The example configuration file is adjusted to http://www.geeetech.com/wiki/images/6/61/3DTouch_auto_leveling_sensor-1.zip +- Unlike suggested in [geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor), the existing end stop switch is expected to be kept connected to Z_MIN. So, the sensor is to be connected to Z_MAX, according to Marlin's default settings. Furthermore, GT2560-A+ provides a connector for the servo next to thermistor connectors (see [GT2560](https://www.geeetech.com/wiki/images/thumb/4/45/GT2560_wiring.jpg/700px-GT2560_wiring.jpg) and [GT2560-A+](http://i.imgur.com/E0t34VU.png)). +- Be careful to respect the polarity of the sensor when connecting it to the GT2560-A+. Unlike end stops, reversing the connection will prevent the sensor from working properly. +- [Test](http://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Testing) and [calibrate](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Calibration) the sensor. +- If using the GT2560-A+ and with the sensor connected to Z_MAX and an endstop connected to Z_MIN use the following calibration routine instead. + +## 3DTouch Calibration with Z_MAX + +- Home the printer with `G28` command. +- Disable the Z axis software endstop with `M211 S0 Z0` +- Reset the probe Z_OFFSET with `M851 Z0` +- Move to the center of the bed with `G1 X100 Y100` +- Move Z incrementally until the nozzle is the correct height from the bed using a shim or piece of paper, record this Z movement, for example -0.2. +- Do a single probe at the current point in the middle of the bed using `G30` and not the returned value, for example 1.9. Invert this value, i.e. -1.9, and add it to the Z offset above, i.e. -0.2 in this example giving -2.1. +- Update the probe Z_OFFSET to this value using `M851` i.e. `M851 Z-2.1`. +- Re-enable software end-stops with `M211 S1 Z0` +- Save this value to the EEPROM with `M500`. +- Update the start G-Code in your slicer software to insert a `G29` after the last `G28`. +- Carefully test that the offset is correct in the first print. diff --git a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md new file mode 100644 index 0000000000..d908932c50 --- /dev/null +++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md @@ -0,0 +1,54 @@ +These are example configurations for the low-cost [Acrylic Průša I3 pro B 3D Printer DIY kit](http://www.geeetech.com/acrylic-geeetech-prusa-i3-pro-b-3d-printer-diy-kit-p-917.html) and the [3DTouch auto bed leveling sensor](http://www.geeetech.com/geeetech-3dtouch-auto-bed-leveling-sensor-for-3d-printer-p-1010.html) based on: + +- `../GT2560/` +- [Marlin 1.1.4 With 3DTouch / BLTouch for i3 Pro B](https://www.geeetech.com/forum/viewtopic.php?t=19846) + +The main characteristics of these configurations are: + +- The defined motherboard is `BOARD_GT2560_REV_A_PLUS`. +- Travel limits are adjusted to the printer bed size and position. +- An example `SKEW_CORRECTION` for a particular printer is enabled. See comments below about how to adjust it to a particular printer. +- Using the LCD controller for bed leveling is enabled. + - `PROBE_MANUALLY` is enabled, which *provides a means to do "Auto" Bed Leveling without a probe*. + - The `LEVEL_BED_CORNERS` option for manual bed adjustment is enabled. + - Bilinear bed leveling is enabled, the boundaries for probing are adjusted to the glass size, and extrapolation is enabled. +- `PRINTCOUNTER` is enabled, in order to track statistical data. +- `INDIVIDUAL_AXIS_HOMING_MENU` is enabled, which adds individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. +- The speaker is enabled for the UI feedback. +- `bltouch` variant: + - `USE_ZMAX_PLUG` is enabled. See comments about connections below. + - Heaters and fans are turned off when probing. + - Multiple probing is set to 3. + +# First-time configuration + +## Skew factor + +The skew factor must be adjusted for each printer: + +- First, uncomment `#define XY_SKEW_FACTOR 0.0`, compile and upload the firmware. +- Then, print [YACS (Yet Another Calibration Square)](https://www.thingiverse.com/thing:2563185). Hint, scale it considering a margin for brim (if used). The larger, the better to make error measurements. +- Measure the printed part according to the comments in the example configuration file, and set `XY_DIAG_AC`, `XY_DIAG_BD` and `Y_SIDE_AD`. +- Last, comment `#define XY_SKEW_FACTOR 0.0` again, compile and upload. + +## 3DTouch auto leveling sensor + +- Print a suitable mount to attach the sensor to the printer. The example configuration file is adjusted to http://www.geeetech.com/wiki/images/6/61/3DTouch_auto_leveling_sensor-1.zip +- Unlike suggested in [geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor), the existing end stop switch is expected to be kept connected to Z_MIN. So, the sensor is to be connected to Z_MAX, according to Marlin's default settings. Furthermore, GT2560-A+ provides a connector for the servo next to thermistor connectors (see [GT2560](https://www.geeetech.com/wiki/images/thumb/4/45/GT2560_wiring.jpg/700px-GT2560_wiring.jpg) and [GT2560-A+](http://i.imgur.com/E0t34VU.png)). +- Be careful to respect the polarity of the sensor when connecting it to the GT2560-A+. Unlike end stops, reversing the connection will prevent the sensor from working properly. +- [Test](http://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Testing) and [calibrate](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Calibration) the sensor. +- If using the GT2560-A+ and with the sensor connected to Z_MAX and an endstop connected to Z_MIN use the following calibration routine instead. + +## 3DTouch Calibration with Z_MAX + +- Home the printer with `G28` command. +- Disable the Z axis software endstop with `M211 S0 Z0` +- Reset the probe Z_OFFSET with `M851 Z0` +- Move to the center of the bed with `G1 X100 Y100` +- Move Z incrementally until the nozzle is the correct height from the bed using a shim or piece of paper, record this Z movement, for example -0.2. +- Do a single probe at the current point in the middle of the bed using `G30` and not the returned value, for example 1.9. Invert this value, i.e. -1.9, and add it to the Z offset above, i.e. -0.2 in this example giving -2.1. +- Update the probe Z_OFFSET to this value using `M851` i.e. `M851 Z-2.1`. +- Re-enable software end-stops with `M211 S1 Z0` +- Save this value to the EEPROM with `M500`. +- Update the start G-Code in your slicer software to insert a `G29` after the last `G28`. +- Carefully test that the offset is correct in the first print. diff --git a/config/examples/Intamsys/FunmatHT 4988/_Bootscreen.h b/config/examples/Intamsys/FunmatHT 4988/_Bootscreen.h new file mode 100644 index 0000000000..d7dd1f0ef7 --- /dev/null +++ b/config/examples/Intamsys/FunmatHT 4988/_Bootscreen.h @@ -0,0 +1,105 @@ +/** + * 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 "Intamsys/FunmatHT 4988" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_TIMEOUT 2500 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 125 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000,B00000000,B10000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00001100,B00000000,B10000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00001100,B00000000,B10000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000110,B00000000,B10000000,B11100011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000110,B00000000,B10000000,B01101111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011100,B00111000,B00000010,B00000000,B10000000,B00111100,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011111,B00110000,B00000011,B00000000,B11000000,B00111100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01110111,B10110000,B00000010,B11111111,B01100000,B00111100,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11100000,B11111000,B00000110,B11111111,B10110000,B00111100,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11000000,B11011000,B00001101,B10000001,B10011000,B00011100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B10000000,B11011000,B00001001,B10000000,B11011100,B11111100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011000,B00011011,B00000000,B01101111,B11100100,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011111,B11111011,B00000000,B00110111,B00000110,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100111,B11110110,B00000000,B00011000,B00000011,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100000,B00001110,B00000000,B00011000,B00001111,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11000000,B00101110,B00000000,B00011011,B11111111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111100,B00011111,B11110110,B01111101,B10000001,B11100110,B00000000,B00011011,B11000111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111110,B00111111,B11111111,B00011111,B10001111,B11000011,B11111111,B11111111,B11111111,B11111100,B00011111,B11111111,B00111000,B00000011,B11000000, + B11111111,B11111111,B11111111,B11111111,B10001111,B00011111,B11000111,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B00111100,B00000011,B11100000, + B00010000,B00001111,B11110000,B00001111,B10001111,B11111111,B10000011,B11111111,B11110111,B11111111,B11111000,B11111111,B11111100,B00111100,B00000011,B11100000, + B00000000,B00001111,B11110000,B00000111,B11111111,B11111111,B00000001,B10011110,B00100111,B11111100,B11000010,B11111000,B00000000,B00111110,B00000011,B11100000, + B00001111,B11111111,B11110000,B00000011,B11011111,B11111110,B00000001,B11001110,B01101100,B11111100,B01000111,B11111000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B11111111,B11001100,B11111111,B11111111,B11110000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B00001110,B00011100,B11111111,B11111001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11110000,B00001111,B11000111,B11111100,B00000000,B00001110,B00011100,B11111111,B11110001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11111000,B00001111,B10000111,B11111110,B00000000,B00001110,B00001100,B11111000,B11110000,B11110000,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B10111111,B10001111,B00000000,B00111111,B11100110,B11111000,B11100000,B11111100,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B11111111,B00000111,B11000000,B11111111,B11100111,B11111111,B11111100,B11111111,B11111111,B00111100,B00000011,B11100000, + B11111111,B11111111,B11111111,B11111111,B11111110,B00000011,B11100000,B10001110,B00110011,B11111111,B11111100,B00011111,B11111111,B00111100,B00000011,B11100000, + B01111111,B11111100,B00111111,B11110000,B00111100,B00000001,B11110001,B10011110,B00110001,B11111111,B11111001,B00001111,B11111110,B00111100,B00000011,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00011001,B11111111,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00001100,B11100000,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00001100,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000110,B00000001,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000000,B00000110,B00111111,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00001110,B00000000,B00001101,B11111101,B11101110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11100110,B00000000,B00011001,B10000001,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11101111,B11110111,B00000000,B00011011,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11000000,B00110011,B00000000,B00110011,B00000001,B11001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00011011,B00000000,B00110110,B00000001,B10011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00001101,B11111111,B11101100,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B00000000,B00001110,B11111111,B11011000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11110001,B10000000,B00000110,B01100000,B00111000,B00000111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11111101,B10000000,B00000011,B00000000,B00011000,B00000101,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B10001111,B11000000,B00000110,B11111111,B11011100,B00001010,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11100000,B00001100,B11111111,B11001100,B00011111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11110000,B00001101,B10000000,B01101100,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01000000,B11111110,B00011011,B00000000,B01100111,B10001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00100000,B01111111,B11110110,B00000000,B00100000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00010000,B00110000,B01101110,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000100,B00110000,B00001110,B00000000,B11111111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B00110000,B00000110,B00000000,B11100001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11110000,B00000011,B00000011,B11100010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Intamsys/FunmatHT 4988/_Statusscreen.h b/config/examples/Intamsys/FunmatHT 4988/_Statusscreen.h new file mode 100644 index 0000000000..62ae8cf147 --- /dev/null +++ b/config/examples/Intamsys/FunmatHT 4988/_Statusscreen.h @@ -0,0 +1,75 @@ +/** + * 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 "Intamsys/FunmatHT 4988" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010000,B00000000, + B00000000,B00000000,B00000110,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000001,B00000000,B00000000,B00000000, + B00001000,B00000000,B00000001,B00000000, + B00000001,B00000000,B01000001,B00000000, + B00000001,B00000000,B00000010,B00000000, + B00000000,B11100000,B00000000,B00000000, + B10000000,B00001000,B00010000,B10000000, + B00000100,B00000000,B00000000,B01000000, + B00001000,B00000000,B00001000,B00000000, + B00010000,B00000100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00110000, + B00000000,B00000000,B00000000,B00100000, + B00000000,B00000001,B11101000,B00100000, + B00000000,B00000000,B00000000,B01100000, + B00000000,B00000000,B00000010,B00000000, + B00000000,B00001000,B00000000,B00000000, + B00000000,B00000000,B00000001,B00100000, + B00000010,B11101000,B00010000,B01100000, + B00000000,B00000000,B00000000,B01000000, + B00000000,B00000011,B11000000,B01100000, + B01100100,B00000000,B00010000,B00000000, + B00000100,B00000011,B11000000,B00000000, + B00000010,B00000000,B00100000,B00000000, + B00000000,B00101000,B00000000,B00000000, + B00000000,B00001000,B00100000,B00000000, + B00000000,B00000000,B01000000,B00000000, + B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/JGAurora/A5/README.md b/config/examples/JGAurora/A5/README.md new file mode 100644 index 0000000000..861f276750 --- /dev/null +++ b/config/examples/JGAurora/A5/README.md @@ -0,0 +1,39 @@ +# Configuration for JGAurora A5 printer + +## Firmware Installation Instructions + +To install custom firmware: + +- Download and install arduino IDE software from https://www.arduino.cc/en/Main/Software +- Plug in A5 to your computer via USB cable +- In arduino IDE, under the Tools menu, set: + – **Board** to "Arduino/Genuino Mega or Mega 2560" + – ***Processor*** to "Atmega 2560 (Mega 2560)" + – **Port** to your 3D printer’s serial port. To figure out the correct serial port unplug the printer and observe the "Port" menu. Connect the printer's USB cable, re-open the "Port" menu and see if a new ports has appeared. This new port is likely to be your printer. + - If you can’t find the right port or if your machine isn't detected, you may need to install a driver for the CH340 serial-to-USB interface chip in the printer. + - [macOS CH340 Serial Driver](http://sampin.ch/ch340-driver-mac) + - [Windows CH340 Serial Driver](https://sparks.gogo.co.nz/ch340.html) +- Install the u8glib library using the library manager in the menu "Sketch -> Include Library -> Manage Libraries." +- IMPORTANT: Unplug the 8-pin LCD panel header connector on your printer. The LCD should turn off completely. This is found underneath the LCD, and can be accessed from underneath the printer without removing any screws. Remember where it goes so you can put it back after flashing. +- Close all other programs (Cura, Repetier Host, JGCreat, etc.) that could connect to the serial port. +- Open the "Marlin.ino" file in Arduino IDE and wait for the new project window to appear. +- Select "Upload" from the "Sketch" menu or click the Upload button. +- Wait for the firmware to finish uploading and verifying. This may take a couple of minutes. +- Plug the LCD connector back in. +- In the Arduino IDE, select "Tools -> Serial monitor" to open up a simple console. In the popup menus, select "Newline" and a Baud Rate of "250000." +- In the input box, enter the following G-code commands: + - `M502` (press return) to reset settings (in RAM) to your configured defaults. + - `M500` (press return) to write settings and initialize the EEPROM. + +## Graphical Display + +The control panel included with the JGAurora interfaces only indirectly with Marlin, and this imposes some limitations. But you can use a RepRap Discount Full Graphic Smart Controller with the JGAurora A5 by applying the following additional settings in `Configuration.h`: + +```cpp +#define ENCODER_PULSES_PER_STEP 5 +#define ENCODER_STEPS_PER_MENU_ITEM 1 +#define REVERSE_ENCODER_DIRECTION +#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER +``` + +You may also be able to change `BEEPER_PIN` to use the piezo on the LCD controller instead of the one on the board. diff --git a/config/examples/Labists/ET4/README.md b/config/examples/Labists/ET4/README.md new file mode 100644 index 0000000000..bde2f1f1dd --- /dev/null +++ b/config/examples/Labists/ET4/README.md @@ -0,0 +1,54 @@ +# Marlin for Labists ET4 + +_Note: The Labists ET4 is OEM'd by Anet, so the update process is very similar._ + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/MakerParts/_Bootscreen.h b/config/examples/MakerParts/_Bootscreen.h new file mode 100644 index 0000000000..68cdbd9b60 --- /dev/null +++ b/config/examples/MakerParts/_Bootscreen.h @@ -0,0 +1,83 @@ +/** + * 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 "MakerParts" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00011111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111111,B11111111,B11111111,B11000000,B00001111,B10000000,B01111100,B00000111,B11100000,B00111111,B00001111,B11011111,B11111111,B01111111,B11110000, + B00111111,B11111111,B11111111,B11111111,B11100000,B00001111,B11000000,B11111100,B00000111,B11100000,B00111111,B00011111,B10011111,B11111111,B01111111,B11111100, + B01111111,B10111111,B11111111,B11101111,B11110000,B00001111,B11000000,B11111100,B00001111,B11110000,B00111111,B00011111,B00011111,B11111111,B01111111,B11111110, + B01111110,B00001111,B11111111,B10000011,B11110000,B00001111,B11100001,B11111100,B00001111,B11110000,B00111111,B00111110,B00011111,B11111111,B01111111,B11111110, + B01111100,B00000111,B11111111,B00000001,B11110000,B00001111,B11100001,B11111100,B00011111,B11111000,B00111111,B01111110,B00011111,B10000000,B01111100,B00111110, + B01111100,B00000011,B11111110,B00000001,B11110000,B00001111,B11110011,B11111100,B00011111,B11111000,B00111111,B11111100,B00011111,B10000000,B01111100,B00011110, + B01111100,B00000001,B11111100,B00000001,B11110000,B00001111,B11110011,B11111100,B00011111,B11111000,B00111111,B11111000,B00011111,B11111100,B01111100,B00111110, + B01111100,B00000000,B11111000,B00000001,B11110000,B00001111,B11111111,B11111100,B00111110,B01111100,B00111111,B11111000,B00011111,B11111100,B01111111,B11111110, + B01111100,B00000000,B01110000,B00000001,B11110000,B00001111,B11111111,B11111100,B00111110,B01111100,B00111111,B11111100,B00011111,B11111100,B01111111,B11111110, + B01111100,B00000000,B00100000,B00000001,B11110000,B00001111,B11111111,B11111100,B00111110,B01111100,B00111111,B11111100,B00011111,B11111100,B01111111,B11111100, + B01111100,B00000000,B00000000,B00000001,B11110000,B00001111,B10111111,B01111100,B01111111,B11111110,B00111111,B11111110,B00011111,B11111100,B01111111,B11111000, + B01111100,B00000000,B00000000,B00000001,B11110000,B00001111,B10111111,B01111100,B01111111,B11111110,B00111111,B11111110,B00011111,B10000000,B01111111,B11111000, + B01111100,B00000000,B00000000,B00000001,B11110000,B00001111,B10011110,B01111100,B01111111,B11111110,B00111111,B00111111,B00011111,B10000000,B01111100,B11111000, + B01111100,B00000110,B00000011,B00000001,B11110000,B00001111,B10011110,B01111100,B11111111,B11111111,B00111111,B00111111,B00011111,B11111111,B01111100,B11111100, + B01111100,B00000111,B00000111,B00000001,B11110000,B00001111,B10001100,B01111100,B11111111,B11111111,B00111111,B00011111,B10011111,B11111111,B01111100,B11111100, + B01111100,B00000111,B10001111,B00000001,B11110000,B00001111,B10000000,B01111100,B11111000,B00011111,B00111111,B00011111,B10011111,B11111111,B01111100,B01111110, + B01111100,B00000111,B11011111,B00000001,B11110000,B00001111,B10000000,B01111101,B11111000,B00011111,B10111111,B00001111,B11011111,B11111111,B01111100,B00111111, + B01111100,B00000111,B11111111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00001111,B11111110,B00000011,B11110000,B00011111,B11111000,B00111111,B11111111,B10000111,B11111000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00001111,B11111111,B00000011,B11110000,B00011111,B11111110,B00111111,B11111111,B10011111,B11111110,B00000000, + B01111100,B00000111,B11111111,B00000001,B11100000,B00001111,B11111111,B10000111,B11111000,B00011111,B11111111,B00111111,B11111111,B10011111,B11111110,B00000000, + B00111100,B00001111,B11111111,B10000001,B11100000,B00001111,B11111111,B11000111,B11111000,B00011111,B11111111,B10111111,B11111111,B10111111,B11111110,B00000000, + B00111100,B00001111,B11111111,B10000001,B11100000,B00001111,B11111111,B11000111,B11111000,B00011111,B11111111,B10111111,B11111111,B10111111,B00111100,B00000000, + B00011110,B00001111,B11111111,B10000011,B11000000,B00001111,B10000111,B11001111,B11111100,B00011111,B00001111,B11000001,B11110000,B00111110,B00000000,B00000000, + B00011110,B00001111,B11111111,B10000011,B11000000,B00001111,B10000011,B11001111,B11111100,B00011111,B00000111,B11000001,B11110000,B00111111,B11000000,B00000000, + B00001111,B00001111,B11111111,B10000111,B10000000,B00001111,B10000111,B11001111,B00111100,B00011111,B00001111,B10000001,B11110000,B00111111,B11111000,B00000000, + B00001111,B00001111,B11111111,B10000111,B10000000,B00001111,B11111111,B11011111,B00111110,B00011111,B11111111,B10000001,B11110000,B00011111,B11111110,B00000000, + B00000111,B10001111,B11111111,B10001111,B00000000,B00001111,B11111111,B10011111,B00111110,B00011111,B11111111,B10000001,B11110000,B00011111,B11111110,B00000000, + B00000111,B11001111,B11111111,B10011111,B00000000,B00001111,B11111111,B00011111,B00111110,B00011111,B11111111,B00000001,B11110000,B00000111,B11111111,B00000000, + B00000011,B11101111,B11111111,B10111110,B00000000,B00001111,B11111100,B00111111,B11111111,B00011111,B11111110,B00000001,B11110000,B00000000,B01111111,B00000000, + B00000001,B11101111,B11111111,B10111100,B00000000,B00001111,B10000000,B00111111,B11111111,B00011111,B00111110,B00000001,B11110000,B00011000,B00011111,B00000000, + B00000000,B11101111,B11111111,B10111000,B00000000,B00001111,B10000000,B00111111,B11111111,B00011111,B00111111,B00000001,B11110000,B00011110,B00111111,B01111100, + B00000000,B01101111,B11111111,B10110000,B00000000,B00001111,B10000000,B01111111,B11111111,B10011111,B00111111,B00000001,B11110000,B00111111,B11111111,B01111100, + B00000000,B00101111,B11111111,B10100000,B00000000,B00001111,B10000000,B01111111,B11111111,B10011111,B00011111,B10000001,B11110000,B01111111,B11111110,B01111100, + B00000000,B00001111,B11111111,B10000000,B00000000,B00001111,B10000000,B01111100,B00001111,B10011111,B00011111,B10000001,B11110000,B00111111,B11111110,B01111100, + B00000000,B00001111,B11111111,B10000000,B00000000,B00001111,B10000000,B11111100,B00001111,B11011111,B00001111,B11000001,B11110000,B00001111,B11111000,B01111100, + B00000000,B00000111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Malyan/M150/README.md b/config/examples/Malyan/M150/README.md new file mode 100644 index 0000000000..3a5026a4bd --- /dev/null +++ b/config/examples/Malyan/M150/README.md @@ -0,0 +1,55 @@ +# Configuration for Malyan M150 HobbyKing printer + +Config without automatic bed level sensor, or in other words, "as stock" + +## To install: + +1. Install [Arduino](https://www.arduino.cc/en/Main/Software) + +1. Install U8glib + * `Sketch` -> `Include Library` -> `Manage Libraries...` + * Search for and install `U8glib` by oliver + +1. Install Sanguino + * `File` -> `Preferences` + * Add + `https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json` + to `Additional Boards Manager URLs` + +1. Modify Sanguino `boards.txt` + * Close Arduino + * Locate Arduino15 folder + - `C:\Users\\AppData\Local\Arduino15` for Windows + - `~/.arduino15` for Linux + + * Locate `boards.txt` in `packages/Sanguino/hardware/avr/1.0.2` + (version number may change) + * Add the following to the end of `boards.txt` + (note that it is the same as sanguino.menu.cpu.atmega1284p but with + a different name and upload speed) + + ## Malyan M150 W/ ATmega1284P 16MHz + sanguino.menu.cpu.malyan_m150=Malyan M150 + sanguino.menu.cpu.malyan_m150.upload.maximum_size=130048 + sanguino.menu.cpu.malyan_m150.upload.maximum_data_size=16384 + sanguino.menu.cpu.malyan_m150.upload.speed=57600 + sanguino.menu.cpu.malyan_m150.bootloader.file=optiboot/optiboot_atmega1284p.hex + sanguino.menu.cpu.malyan_m150.build.mcu=atmega1284p + sanguino.menu.cpu.malyan_m150.build.f_cpu=16000000L + +1. Configure Marlin + * Copy `_Bootscreen.h`, `Configuration.h`, and `Configuration_adv.h` + from `config/examples/Malyan/M150` to `Marlin` + (overwrite files) + * Read `Configuration.h` and make any necessary changes + +1. Flash Marlin + * Turn on printer while pressing scroll wheel button + * Plug printer in to computer with USB cable + * Open `Marlin/Marlin.ino` with Arduino + * Configure Arduino + - `Tools` -> `Board` -> `Sanguino` + - `Tools` -> `Processor` -> `Malyan M150` + - `Tools` -> `Port` -> Select your port + + * `Sketch` -> `Upload` or click arrow in top right corner diff --git a/config/examples/Malyan/M150/_Bootscreen.h b/config/examples/Malyan/M150/_Bootscreen.h new file mode 100644 index 0000000000..4b106517d5 --- /dev/null +++ b/config/examples/Malyan/M150/_Bootscreen.h @@ -0,0 +1,73 @@ +/** + * 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 "Malyan/M150" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11000000,B00000000,B00001111,B11100000,B01111100,B00000011,B11100000,B01111000,B00011100,B00000111,B10000001,B11100000,B11110000,B00111110,B00001110, + B01111111,B11100000,B00000000,B00111111,B11110000,B01111110,B00000111,B11100000,B11111100,B00011100,B00000011,B10000001,B11000001,B11111000,B00111111,B00001110, + B01111111,B11111000,B00000000,B01111111,B11110000,B01111110,B00000111,B11100000,B11111100,B00011100,B00000011,B11000011,B11000001,B11111000,B00111111,B00001110, + B01111011,B11111110,B00000001,B11111110,B11110000,B01111111,B00001111,B11100001,B11111110,B00011100,B00000001,B11000011,B10000011,B11111100,B00111111,B10001110, + B01111100,B11111111,B10000111,B11111001,B11110000,B01110111,B00001110,B11100001,B11111110,B00011100,B00000001,B11100111,B10000011,B11111100,B00111011,B10001110, + B01111111,B01111111,B11001111,B11110111,B11110000,B01110111,B10011110,B11100001,B11001110,B00011100,B00000000,B11100111,B00000011,B10011100,B00111011,B11001110, + B01111111,B10011111,B11111111,B11001111,B11110000,B01110011,B10011100,B11100011,B11001111,B00011100,B00000000,B11111111,B00000111,B10011110,B00111001,B11001110, + B01111111,B11100111,B11111111,B00111111,B11110000,B01110011,B11111100,B11100011,B10000111,B00011100,B00000000,B01111110,B00000111,B00001110,B00111001,B11101110, + B01111111,B11111011,B11111110,B11111111,B11110000,B01110001,B11111000,B11100011,B10000111,B00011100,B00000000,B01111110,B00001111,B00001111,B00111000,B11101110, + B01111111,B11111100,B11111001,B11111111,B11110000,B01110001,B11111000,B11100111,B11111111,B10011100,B00000000,B00111100,B00001111,B11111111,B00111000,B11111110, + B01111111,B11111111,B00100111,B11111111,B11110000,B01110000,B11110000,B11100111,B11111111,B10011100,B00000000,B00111100,B00001111,B11111111,B00111000,B01111110, + B01111111,B11111111,B11011111,B11111111,B11110000,B01110000,B11110000,B11101111,B11111111,B11011100,B00000000,B00111100,B00011111,B11111111,B10111000,B01111110, + B01111111,B11011111,B11111111,B11011111,B11110000,B01110000,B01100000,B11101111,B00000011,B11011111,B11111000,B00111100,B00011110,B00000111,B10111000,B00111110, + B01111111,B11000111,B11111111,B00011111,B11110000,B01110000,B01100000,B11101110,B00000001,B11011111,B11111000,B00111100,B00011100,B00000011,B10111000,B00111110, + B01111111,B11000011,B11111110,B00011111,B11110000,B01110000,B00000000,B11101110,B00000001,B11011111,B11111000,B00111100,B00011100,B00000011,B10111000,B00011110, + B01111111,B11000011,B11111110,B00011111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111100,B00111111,B11111010,B11111011,B11111111,B11111111,B11111111,B11111101,B01111010,B10111111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111101,B10011111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111101,B10010011,B00011010,B10001010,B00011000,B11100011,B10001100,B01000101,B00011010,B10100010,B11011110, + B00111111,B11000011,B11011110,B00001111,B11110000,B01111100,B00101101,B11001010,B11001010,B11010110,B11101001,B00100100,B11001101,B01101010,B10110110,B10111110, + B00011111,B10000011,B11011110,B00000111,B11100000,B01111101,B10100011,B01101010,B10011010,B11010110,B11101001,B00100110,B01100101,B01101010,B10110110,B00111110, + B00000110,B00000011,B11011110,B00000001,B10000000,B01111101,B10010001,B00001010,B10001010,B11011000,B11100011,B10001100,B01000101,B00011010,B10110011,B01111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111110,B11101111,B11111111,B11111111,B11111111,B11111111,B01111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11110001,B11101111,B11111111,B11111111,B11111111,B11111110,B11111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, +}; diff --git a/config/examples/Malyan/M200/README.md b/config/examples/Malyan/M200/README.md new file mode 100644 index 0000000000..8129650dc7 --- /dev/null +++ b/config/examples/Malyan/M200/README.md @@ -0,0 +1,33 @@ +### Malyan M200 Build Instructions + +Malyan M200 series firmware currently builds using the Arduino IDE. These instructions should +guide you through the configuration and compilation. + +1. Install the Arduino IDE from your favorite source (arduino.cc, windows store, app store) +2. Launch the IDE to add the ST boards manager: + - Open the **Preferences** dialog. + - Add this link in the "*Additional Boards Managers URLs*" field: + https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json + - Select "**Show verbose ouptut during: compilation**." +3. Select **Tools** > **Board** > **Boards Manager**. +4. Type "Malyan" into the Search field. +5. The only board listed will be "**STM32 Cores by STMicroelectronics**." Any version from 1.6.0 up is fine. Choose install. This will download many tools and packages, be patient. +6. Open the **Tools** > **Board** submenu, scroll all the way down, and select **3D Printer Boards**. +7. From the **Tools** menu, select a board part number: + - If you own a M200 V1 or early run (black V2), choose **Malyan M200 V1**. + - If you own a M200 V2 later run (white/black) or V3 (Pro), choose **Malyan M200 V2** (The V2 and V3 both share an STM32F070 MCU). Note that the V3 pinout is not complete (autolevel doesn't work as of this writing). +8. From the **Tools** menu, choose **USB Support** > **CDC No Generic Serial**. +9. Download the latest Marlin source (from the [bugfix-2.0.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.0.x) branch) and unzip it. +10. Look in the `Marlin` subdirectory for the `Configuration.h` and `Configuration_adv.h` files. Replace these files with the configurations in the `config\examples\Malyan\M200` folder. +11. If you have an early-run V2, the steps-per-mm are roughly half. Consult the [mpminipro.com wiki](https://mpminipro.com/) for the steps that apply to your unit. Modify `Configuration.h`. +12. Inverting Axis. There's no pattern to axes will need to be inverted. The only way to know is to test your particular printer. If you *do* know, go ahead and invert the correct axes. +13. Open the `Marlin/Marlin.ino` file in Arduino IDE. +14. From the **Sketch** menu, select **File** > **Export Compiled Binary**. +15. When compilation is done you've built the firmware. The next stage is to flash it to the board. To do this look for a line like this: `"path/to/bin/arm-none-eabi-objcopy" -O binary "/path/to/Marlin.ino.elf" "/path/to/Marlin.ino.bin"` + The file `Marlin.ino.bin` is your firmware binary. M200 (v1-3) and M300 printers require flashing via SD card. Use the SD card that came with the printer if possible. The bootloader is very picky about SD cards. Copy `Marlin.ino.bin` to your SD card under three names: `firmware.bin`, `update.bin`, and `fcupdate.flg`. +16. Insert the SD card into your printer. Make sure the X and Y axes are centered in the middle of the bed. (When X and Y endstops are closed this signals a UI upgrade to the bootloader.) +17. Power-cycle the printer. The first flash may take longer. Don't be surprised if the .99 version number doesn't show up until after the UI has launched the default screen. +18. Remove the SD card and delete the `fcupdate.flg` file from the card to prevent an accidental re-flash. +19. Test the endstops and homing directions, run M303 PID autotune, and verify all features are working correctly. + +Welcome to Marlin 2.x... diff --git a/config/examples/Micromake/C1/basic/README.md b/config/examples/Micromake/C1/basic/README.md new file mode 100644 index 0000000000..0111f6f00a --- /dev/null +++ b/config/examples/Micromake/C1/basic/README.md @@ -0,0 +1,15 @@ +# Micromake C1 + +### In the folder "basic" +Configuration files for Micromake C1 without mods + - English LCD 2X16 Characters + - Motors 16 STEPS + - No heated bed + - No probe, etc. + - Like a standard C1 as shipped by Micromake. + +### In the folder "enhanced" +Configuration files for Micromake C1 with… + - 128 STEPS configured with jumper on the motherboard (all open for 128 Steps). + - Capacitive Probe (Adjust offsets at your convenience) + - French language with no accents for Japanese LCD. diff --git a/config/examples/Micromake/C1/enhanced/README.md b/config/examples/Micromake/C1/enhanced/README.md new file mode 100644 index 0000000000..0111f6f00a --- /dev/null +++ b/config/examples/Micromake/C1/enhanced/README.md @@ -0,0 +1,15 @@ +# Micromake C1 + +### In the folder "basic" +Configuration files for Micromake C1 without mods + - English LCD 2X16 Characters + - Motors 16 STEPS + - No heated bed + - No probe, etc. + - Like a standard C1 as shipped by Micromake. + +### In the folder "enhanced" +Configuration files for Micromake C1 with… + - 128 STEPS configured with jumper on the motherboard (all open for 128 Steps). + - Capacitive Probe (Adjust offsets at your convenience) + - French language with no accents for Japanese LCD. diff --git a/config/examples/Mks/Robin_Lite3/ReadMe.txt b/config/examples/Mks/Robin_Lite3/ReadMe.txt new file mode 100644 index 0000000000..d8919f43cd --- /dev/null +++ b/config/examples/Mks/Robin_Lite3/ReadMe.txt @@ -0,0 +1,5 @@ +1. MKS Robin Lite3 is a powerful 32-bit 3D printer control board with STM32F103RCT6. +2. Support Marlin2.0. +3. Support MKS LCD12864B/MINI12864/LCD2004/12864 and MKS TFT Touch Screens. +4. The main board integrates 5 AXIS interface, BLTOUCH interface, hot bed, 2 heating heads, 3 NTC100K and LCD screen SD card supports firmware update. +https://www.aliexpress.com/item/4000295949948.html?spm=2114.12010615.8148356.1.596183361yB18D diff --git a/config/examples/Mks/Robin_Pro/ReadMe.txt b/config/examples/Mks/Robin_Pro/ReadMe.txt new file mode 100644 index 0000000000..8d5241b5d0 --- /dev/null +++ b/config/examples/Mks/Robin_Pro/ReadMe.txt @@ -0,0 +1,4 @@ +1. MKS Robin Pro is a powerful 32-bit 3D printer control board with STM32F103ZET6. +2. Support Marlin2.0. Support LCD2004/12864 and MKS Robin TFT24/28/32... Screens. +3. The motherboard integrates 6 AXIS interface, BLTOUCH interface, hot bed, 3 heating heads, 4 NTC100K, 2 MAX31855, integrates SPI / UART interface and works with MKS TMC2130/TMC2208 V2.0/TMC +https://www.aliexpress.com/item/4000444286159.html?spm=2114.12010615.8148356.1.4158721an5TnW9 diff --git a/config/examples/Mks/Sbase/README.txt b/config/examples/Mks/Sbase/README.txt new file mode 100644 index 0000000000..1ec5e7fd7a --- /dev/null +++ b/config/examples/Mks/Sbase/README.txt @@ -0,0 +1,38 @@ +The MKS products (all?) have the EXP1 & EXP2 LCD connectors rotated 180 degrees from the ones on the RepRap LCD controllers. + +In order to attach the RepRap Discount Full Graphic Smart Controller you'll need to do something like one of the following for both EXP1 & EXP2: + a. On one end only, shave the keying plug off the cables and plug the cables in backwards. + b. On one end only, carefully pry the housings off the board, rotate them 180 degrees and press them back onto the pins. + c. Make custom cables where one connector is rotated 180 degrees. + + MKS: 1 2 3 4 5 6 7 8 9 10 + RepRap: 10 9 8 7 6 5 4 3 2 1 + + +///////////////////////////////////////////////////////////////////// + +3 DEC 2017 + +The current Marlin 2.0.x firmware cannot properly access some of the pins on the EXP2 connector. In order to use the RepRap Discount Full Graphic Smart Controller you'll need a custom cable that gets three of the signals from a different connector. In that cable move the pin/wire that: + + used to go to P0.8 to J8-3 + " " " " P0.7 to J8-2 + " " " " P0.5 to J8-4 + +If pins different than the J8 ones above are used then the spi_pins.h file will need to be modified. + +An octopus cable something like the Adafruit 1199 will simply the construction of the custom cable. Just plug the Adafruit 1199 into one of the cables that came with the LCD and the individual pins into J8 and EXP2 as needed. + +Adafruit 10-pin IDC Socket Rainbow Breakout Cable [1199] + https://www.adafruit.com/product/1199 + + +///////////////////////////////////////////////////////////////////// + +27 APR 2018 + +If you also want a functional SD_DETECT_PIN then you'll need to also move the following pin: + + used to go to P0.27 to J8-5 + +if you decide to use a different pin then the pins_MKS_SBASE.h file will need to be modified. diff --git a/config/examples/Modix/Big60/_Bootscreen.h b/config/examples/Modix/Big60/_Bootscreen.h new file mode 100644 index 0000000000..f8c7077e4e --- /dev/null +++ b/config/examples/Modix/Big60/_Bootscreen.h @@ -0,0 +1,93 @@ +/** + * 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 "Modix/Big60" + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000,B00000000,B10000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00001100,B00000000,B10000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00001100,B00000000,B10000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000110,B00000000,B10000000,B11100011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000110,B00000000,B10000000,B01101111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011100,B00111000,B00000010,B00000000,B10000000,B00111100,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011111,B00110000,B00000011,B00000000,B11000000,B00111100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01110111,B10110000,B00000010,B11111111,B01100000,B00111100,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11100000,B11111000,B00000110,B11111111,B10110000,B00111100,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11000000,B11011000,B00001101,B10000001,B10011000,B00011100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B10000000,B11011000,B00001001,B10000000,B11011100,B11111100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011000,B00011011,B00000000,B01101111,B11100100,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011111,B11111011,B00000000,B00110111,B00000110,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100111,B11110110,B00000000,B00011000,B00000011,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100000,B00001110,B00000000,B00011000,B00001111,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11000000,B00101110,B00000000,B00011011,B11111111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111100,B00011111,B11110110,B01111101,B10000001,B11100110,B00000000,B00011011,B11000111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111110,B00111111,B11111111,B00011111,B10001111,B11000011,B11111111,B11111111,B11111111,B11111100,B00011111,B11111111,B00111000,B00000011,B11000000, + B11111111,B11111111,B11111111,B11111111,B10001111,B00011111,B11000111,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B00111100,B00000011,B11100000, + B00010000,B00001111,B11110000,B00001111,B10001111,B11111111,B10000011,B11111111,B11110111,B11111111,B11111000,B11111111,B11111100,B00111100,B00000011,B11100000, + B00000000,B00001111,B11110000,B00000111,B11111111,B11111111,B00000001,B10011110,B00100111,B11111100,B11000010,B11111000,B00000000,B00111110,B00000011,B11100000, + B00001111,B11111111,B11110000,B00000011,B11011111,B11111110,B00000001,B11001110,B01101100,B11111100,B01000111,B11111000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B11111111,B11001100,B11111111,B11111111,B11110000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B00001110,B00011100,B11111111,B11111001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11110000,B00001111,B11000111,B11111100,B00000000,B00001110,B00011100,B11111111,B11110001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11111000,B00001111,B10000111,B11111110,B00000000,B00001110,B00001100,B11111000,B11110000,B11110000,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B10111111,B10001111,B00000000,B00111111,B11100110,B11111000,B11100000,B11111100,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B11111111,B00000111,B11000000,B11111111,B11100111,B11111111,B11111100,B11111111,B11111111,B00111100,B00000011,B11100000, + B11111111,B11111111,B11111111,B11111111,B11111110,B00000011,B11100000,B10001110,B00110011,B11111111,B11111100,B00011111,B11111111,B00111100,B00000011,B11100000, + B01111111,B11111100,B00111111,B11110000,B00111100,B00000001,B11110001,B10011110,B00110001,B11111111,B11111001,B00001111,B11111110,B00111100,B00000011,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00011001,B11111111,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00001100,B11100000,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00001100,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000110,B00000001,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000000,B00000110,B00111111,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00001110,B00000000,B00001101,B11111101,B11101110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11100110,B00000000,B00011001,B10000001,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11101111,B11110111,B00000000,B00011011,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11000000,B00110011,B00000000,B00110011,B00000001,B11001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00011011,B00000000,B00110110,B00000001,B10011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00001101,B11111111,B11101100,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B00000000,B00001110,B11111111,B11011000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11110001,B10000000,B00000110,B01100000,B00111000,B00000111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11111101,B10000000,B00000011,B00000000,B00011000,B00000101,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B10001111,B11000000,B00000110,B11111111,B11011100,B00001010,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11100000,B00001100,B11111111,B11001100,B00011111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11110000,B00001101,B10000000,B01101100,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01000000,B11111110,B00011011,B00000000,B01100111,B10001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00100000,B01111111,B11110110,B00000000,B00100000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00010000,B00110000,B01101110,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000100,B00110000,B00001110,B00000000,B11111111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B00110000,B00000110,B00000000,B11100001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11110000,B00000011,B00000011,B11100010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, +}; diff --git a/config/examples/Modix/Big60/_Statusscreen.h b/config/examples/Modix/Big60/_Statusscreen.h new file mode 100644 index 0000000000..b7fbb86fd7 --- /dev/null +++ b/config/examples/Modix/Big60/_Statusscreen.h @@ -0,0 +1,62 @@ +/** + * 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 "Modix/Big60" + +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010000,B00000000, + B00000000,B00000000,B00000110,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000001,B00000000,B00000000,B00000000, + B00001000,B00000000,B00000001,B00000000, + B00000001,B00000000,B01000001,B00000000, + B00000001,B00000000,B00000010,B00000000, + B00000000,B11100000,B00000000,B00000000, + B10000000,B00001000,B00010000,B10000000, + B00000100,B00000000,B00000000,B01000000, + B00001000,B00000000,B00001000,B00000000, + B00010000,B00000100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00110000, + B00000000,B00000000,B00000000,B00100000, + B00000000,B00000001,B11101000,B00100000, + B00000000,B00000000,B00000000,B01100000, + B00000000,B00000000,B00000010,B00000000, + B00000000,B00001000,B00000000,B00000000, + B00000000,B00000000,B00000001,B00100000, + B00000010,B11101000,B00010000,B01100000, + B00000000,B00000000,B00000000,B01000000, + B00000000,B00000011,B11000000,B01100000, + B01100100,B00000000,B00010000,B00000000, + B00000100,B00000011,B11000000,B00000000, + B00000010,B00000000,B00100000,B00000000, + B00000000,B00101000,B00000000,B00000000, + B00000000,B00001000,B00100000,B00000000, + B00000000,B00000000,B01000000,B00000000, + B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Nextion/HMI/Marlin4Nextion.HMI.zip b/config/examples/Nextion/HMI/Marlin4Nextion.HMI.zip new file mode 100644 index 0000000000000000000000000000000000000000..c2157d010269dd68eb7824583e5b92239a6426a2 GIT binary patch literal 10681280 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