Repository: sevmeyer/chrumm-keyboard Branch: master Commit: 0677d499e7c4 Files: 104 Total size: 1.2 MB Directory structure: gitextract_3f6rhsfw/ ├── BUILD.md ├── CHANGELOG.md ├── LICENSE.txt ├── MATERIALS.md ├── README.md ├── body/ │ ├── .flake8 │ ├── .gitignore │ ├── README.md │ ├── chrumm/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── cfg.py │ │ ├── geo/ │ │ │ ├── __init__.py │ │ │ ├── circle.py │ │ │ ├── edge.py │ │ │ ├── epsilon.py │ │ │ ├── face.py │ │ │ ├── line.py │ │ │ ├── matrix.py │ │ │ ├── plane.py │ │ │ ├── segment.py │ │ │ ├── tests/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── helper.py │ │ │ │ ├── test_circle.py │ │ │ │ ├── test_edge.py │ │ │ │ ├── test_face.py │ │ │ │ ├── test_line.py │ │ │ │ ├── test_matrix.py │ │ │ │ ├── test_plane.py │ │ │ │ ├── test_segment.py │ │ │ │ ├── test_triangle.py │ │ │ │ └── test_vector.py │ │ │ ├── triangle.py │ │ │ └── vector.py │ │ ├── make.py │ │ ├── part/ │ │ │ ├── __init__.py │ │ │ ├── arc.py │ │ │ ├── body.py │ │ │ ├── boss.py │ │ │ ├── bracket.py │ │ │ ├── bumper.py │ │ │ ├── cable.py │ │ │ ├── encoder.py │ │ │ ├── floor.py │ │ │ ├── key.py │ │ │ ├── knob.py │ │ │ ├── layout.py │ │ │ ├── palm.py │ │ │ ├── plan.py │ │ │ └── support.py │ │ ├── pcb.py │ │ └── stl.py │ ├── chrumm.json │ └── prusa/ │ ├── chrumm-body.ini │ ├── chrumm-floor.ini │ ├── chrumm-knob.ini │ ├── chrumm-palm.ini │ └── clean-3mf-seam.py ├── firmware/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ └── chrumm/ │ ├── config.h │ ├── encoder.c │ ├── encoder.h │ ├── hid.c │ ├── hid.h │ ├── led.c │ ├── led.h │ ├── main.c │ ├── matrix.c │ ├── matrix.h │ ├── usage.h │ ├── usb.c │ └── usb.h └── pcb/ ├── .gitignore ├── README.md └── chrumm/ ├── chrumm-plot.py ├── chrumm.kicad_dru ├── chrumm.kicad_pcb ├── chrumm.kicad_pro ├── chrumm.kicad_sch ├── chrumm.kicad_sym ├── chrumm.kicad_wks ├── footprints.pretty/ │ ├── Diode_1N4148_P7.6mm.kicad_mod │ ├── Graphic_CHRUMM.kicad_mod │ ├── Graphic_Hi.kicad_mod │ ├── Graphic_OSHW.kicad_mod │ ├── MountingHole_M3.kicad_mod │ ├── MouseBites_1x3_P0.9mm.kicad_mod │ ├── MouseBites_1x3_P1.35mm.kicad_mod │ ├── MouseBites_1x4_P0.9mm.kicad_mod │ ├── MouseBites_1x5_P0.9mm.kicad_mod │ ├── MouseBites_1x5_P1.35mm.kicad_mod │ ├── PinHeader_1x2_P2.54mm_Custom.kicad_mod │ ├── PinHeader_1x3_P2.54mm.kicad_mod │ ├── PinHeader_1x5_P2.54mm.kicad_mod │ ├── RPi_Pico.kicad_mod │ ├── RPi_Pico_Custom.kicad_mod │ ├── RotaryEncoder_PEC11R_Custom.kicad_mod │ ├── Switch_MX.kicad_mod │ ├── Switch_MX_CTRL.kicad_mod │ └── Switch_MX_RefPoints.kicad_mod ├── fp-lib-table └── sym-lib-table ================================================ FILE CONTENTS ================================================ ================================================ FILE: BUILD.md ================================================ Chrumm build advice =================== Printing -------- I printed the parts on a Prusa Mini, with PLA filament, on a smooth PEI sheet. The gcode was generated with [PrusaSlicer] 2.6.0. The 3MF files with the exact print settings and part configurations are available on the [Releases] page. The body halves are printed sideways, with custom supports. In PrusaSlicer, custom supports can be added in the [Object list] (Advanced mode). Right-click on the body object and load the support STL with "Add Part". Right-click on the support object to adjust its print settings. [PrusaSlicer]: https://www.prusa3d.com/prusaslicer/ [Object list]: https://help.prusa3d.com/article/object-list_1758 [Releases]: https://github.com/sevmeyer/chrumm-keyboard/releases Diodes ------ Note that there is not much room between the switch plate and the PCB. Therefore, I soldered the diode legs on the same side as the diode body, and cut the legs reasonably short on the switch-facing side with a [flush cutter]. To hold up the PCB while soldering the diodes, I used standoff jigs that clip into the stem holes (see photos). The diode pads have a common pitch of 7.62mm (300mil). To bend the legs in a uniform way, I used a bender jig. Both jigs are available on the [Releases] page. [flush cutter]: https://en.wikipedia.org/wiki/Diagonal_pliers#Variations Flexstrip --------- The PCB halves are connected via Flexstrip jumpers. To compensate for the default split angle, the strips should be folded in a specific way before installation. Check the image for reference. I wrapped the strips around a thin screwdriver shaft, to maintain a minimum bend radius of about 2mm. ![Fold lines for flexstrip jumpers](images/flexstrip.svg) PCB installation ---------------- To install the PCB, I would first clip the corner switches into the body, e.g. switches 12-64-58, 10-9-6, and 49-48-45. Then align the PCB with the switch pins and push it flat against the switch bottoms. Before soldering any switches, check that the screw mount next to the Pico does not bend the PCB. If the print is misaligned, you might want to sand off a bit of the mount, or extend its height with a washer. When everything fits, the remaining switches can be inserted. Note that the thumb switches are north-facing (upside down). ================================================ FILE: CHANGELOG.md ================================================ Development ----------- body 1.0.2 - Add optional parameters for switches with clips on their side * switch.clipNotch.isSideways (Left-right instead of front-back) * support.relBasePosition (Sideways position relative to top) * support.relBaseInset (From switch hole front to back) * support.relTopInset (From switch hole front to back) body 1.0.1 - Revise Face triangulation for better performance - Remove obsolete draft.json firmware 1.0.2 - Use PID 1209:5E7C as registered on pid.codes firmware 1.0.1 - Add kBOOT keycode to trigger bootloader mode - Remove cRWND and cFFWD from default layout - Revise pin settle time and encoder keypress ticks 1.0 (2023-10-04) ---------------- - First release ================================================ FILE: LICENSE.txt ================================================ https://github.com/sevmeyer/chrumm-keyboard/ ___ _ _ ____ _ _ __ __ __ __ .' __| |_| | _ '| | | | \/ | \/ | | |__| _ | |_) | |_| | |\/| | |\/| | '.___|_| |_|_| \_\.___.|_| |_|_| |_| Copyright 2023 Severin Meyer Licensed under CERN-OHL-W v2 or later CERN Open Hardware Licence Version 2 - Weakly Reciprocal Preamble CERN has developed this licence to promote collaboration among hardware designers and to provide a legal tool which supports the freedom to use, study, modify, share and distribute hardware designs and products based on those designs. Version 2 of the CERN Open Hardware Licence comes in three variants: CERN-OHL-P (permissive); and two reciprocal licences: this licence, CERN-OHL-W (weakly reciprocal) and CERN-OHL-S (strongly reciprocal). The CERN-OHL-W is copyright CERN 2020. Anyone is welcome to use it, in unmodified form only. Use of this Licence does not imply any endorsement by CERN of any Licensor or their designs nor does it imply any involvement by CERN in their development. 1 Definitions 1.1 'Licence' means this CERN-OHL-W. 1.2 'Compatible Licence' means a) any earlier version of the CERN Open Hardware licence, or b) any version of the CERN-OHL-S or the CERN-OHL-W, or c) any licence which permits You to treat the Source to which it applies as licensed under CERN-OHL-S or CERN-OHL-W provided that on Conveyance of any such Source, or any associated Product You treat the Source in question as being licensed under CERN-OHL-S or CERN-OHL-W as appropriate. 1.3 'Source' means information such as design materials or digital code which can be applied to Make or test a Product or to prepare a Product for use, Conveyance or sale, regardless of its medium or how it is expressed. It may include Notices. 1.4 'Covered Source' means Source that is explicitly made available under this Licence. 1.5 'Product' means any device, component, work or physical object, whether in finished or intermediate form, arising from the use, application or processing of Covered Source. 1.6 'Make' means to create or configure something, whether by manufacture, assembly, compiling, loading or applying Covered Source or another Product or otherwise. 1.7 'Available Component' means any part, sub-assembly, library or code which: a) is licensed to You as Complete Source under a Compatible Licence; or b) is available, at the time a Product or the Source containing it is first Conveyed, to You and any other prospective licensees i) with sufficient rights and information (including any configuration and programming files and information about its characteristics and interfaces) to enable it either to be Made itself, or to be sourced and used to Make the Product; or ii) as part of the normal distribution of a tool used to design or Make the Product. 1.8 'External Material' means anything (including Source) which: a) is only combined with Covered Source in such a way that it interfaces with the Covered Source using a documented interface which is described in the Covered Source; and b) is not a derivative of or contains Covered Source, or, if it is, it is solely to the extent necessary to facilitate such interfacing. 1.9 'Complete Source' means the set of all Source necessary to Make a Product, in the preferred form for making modifications, including necessary installation and interfacing information both for the Product, and for any included Available Components. If the format is proprietary, it must also be made available in a format (if the proprietary tool can create it) which is viewable with a tool available to potential licensees and licensed under a licence approved by the Free Software Foundation or the Open Source Initiative. Complete Source need not include the Source of any Available Component, provided that You include in the Complete Source sufficient information to enable a recipient to Make or source and use the Available Component to Make the Product. 1.10 'Source Location' means a location where a Licensor has placed Covered Source, and which that Licensor reasonably believes will remain easily accessible for at least three years for anyone to obtain a digital copy. 1.11 'Notice' means copyright, acknowledgement and trademark notices, Source Location references, modification notices (subsection 3.3(b)) and all notices that refer to this Licence and to the disclaimer of warranties that are included in the Covered Source. 1.12 'Licensee' or 'You' means any person exercising rights under this Licence. 1.13 'Licensor' means a natural or legal person who creates or modifies Covered Source. A person may be a Licensee and a Licensor at the same time. 1.14 'Convey' means to communicate to the public or distribute. 2 Applicability 2.1 This Licence governs the use, copying, modification, Conveying of Covered Source and Products, and the Making of Products. By exercising any right granted under this Licence, You irrevocably accept these terms and conditions. 2.2 This Licence is granted by the Licensor directly to You, and shall apply worldwide and without limitation in time. 2.3 You shall not attempt to restrict by contract or otherwise the rights granted under this Licence to other Licensees. 2.4 This Licence is not intended to restrict fair use, fair dealing, or any other similar right. 3 Copying, Modifying and Conveying Covered Source 3.1 You may copy and Convey verbatim copies of Covered Source, in any medium, provided You retain all Notices. 3.2 You may modify Covered Source, other than Notices, provided that You irrevocably undertake to make that modified Covered Source available from a Source Location should You Convey a Product in circumstances where the recipient does not otherwise receive a copy of the modified Covered Source. In each case subsection 3.3 shall apply. You may only delete Notices if they are no longer applicable to the corresponding Covered Source as modified by You and You may add additional Notices applicable to Your modifications. 3.3 You may Convey modified Covered Source (with the effect that You shall also become a Licensor) provided that You: a) retain Notices as required in subsection 3.2; b) add a Notice to the modified Covered Source stating that You have modified it, with the date and brief description of how You have modified it; c) add a Source Location Notice for the modified Covered Source if You Convey in circumstances where the recipient does not otherwise receive a copy of the modified Covered Source; and d) license the modified Covered Source under the terms and conditions of this Licence (or, as set out in subsection 8.3, a later version, if permitted by the licence of the original Covered Source). Such modified Covered Source must be licensed as a whole, but excluding Available Components contained in it or External Material to which it is interfaced, which remain licensed under their own applicable licences. 4 Making and Conveying Products 4.1 You may Make Products, and/or Convey them, provided that You either provide each recipient with a copy of the Complete Source or ensure that each recipient is notified of the Source Location of the Complete Source. That Complete Source includes Covered Source and You must accordingly satisfy Your obligations set out in subsection 3.3. If specified in a Notice, the Product must visibly and securely display the Source Location on it or its packaging or documentation in the manner specified in that Notice. 4.2 Where You Convey a Product which incorporates External Material, the Complete Source for that Product which You are required to provide under subsection 4.1 need not include any Source for the External Material. 4.3 You may license Products under terms of Your choice, provided that such terms do not restrict or attempt to restrict any recipients' rights under this Licence to the Covered Source. 5 Research and Development You may Convey Covered Source, modified Covered Source or Products to a legal entity carrying out development, testing or quality assurance work on Your behalf provided that the work is performed on terms which prevent the entity from both using the Source or Products for its own internal purposes and Conveying the Source or Products or any modifications to them to any person other than You. Any modifications made by the entity shall be deemed to be made by You pursuant to subsection 3.2. 6 DISCLAIMER AND LIABILITY 6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products are provided 'as is' and any express or implied warranties, including, but not limited to, implied warranties of merchantability, of satisfactory quality, non-infringement of third party rights, and fitness for a particular purpose or use are disclaimed in respect of any Source or Product to the maximum extent permitted by law. The Licensor makes no representation that any Source or Product does not or will not infringe any patent, copyright, trade secret or other proprietary right. The entire risk as to the use, quality, and performance of any Source or Product shall be with You and not the Licensor. This disclaimer of warranty is an essential part of this Licence and a condition for the grant of any rights granted under this Licence. 6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to the maximum extent permitted by law, have no liability for direct, indirect, special, incidental, consequential, exemplary, punitive or other damages of any character including, without limitation, procurement of substitute goods or services, loss of use, data or profits, or business interruption, however caused and on any theory of contract, warranty, tort (including negligence), product liability or otherwise, arising in any way in relation to the Covered Source, modified Covered Source and/or the Making or Conveyance of a Product, even if advised of the possibility of such damages, and You shall hold the Licensor(s) free and harmless from any liability, costs, damages, fees and expenses, including claims by third parties, in relation to such use. 7 Patents 7.1 Subject to the terms and conditions of this Licence, each Licensor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in subsections 7.2 and 8.4) patent licence to Make, have Made, use, offer to sell, sell, import, and otherwise transfer the Covered Source and Products, where such licence applies only to those patent claims licensable by such Licensor that are necessarily infringed by exercising rights under the Covered Source as Conveyed by that Licensor. 7.2 If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Covered Source or a Product constitutes direct or contributory patent infringement, or You seek any declaration that a patent licensed to You under this Licence is invalid or unenforceable then any rights granted to You under this Licence shall terminate as of the date such process is initiated. 8 General 8.1 If any provisions of this Licence are or subsequently become invalid or unenforceable for any reason, the remaining provisions shall remain effective. 8.2 You shall not use any of the name (including acronyms and abbreviations), image, or logo by which the Licensor or CERN is known, except where needed to comply with section 3, or where the use is otherwise allowed by law. Any such permitted use shall be factual and shall not be made so as to suggest any kind of endorsement or implication of involvement by the Licensor or its personnel. 8.3 CERN may publish updated versions and variants of this Licence which it considers to be in the spirit of this version, but may differ in detail to address new problems or concerns. New versions will be published with a unique version number and a variant identifier specifying the variant. If the Licensor has specified that a given variant applies to the Covered Source without specifying a version, You may treat that Covered Source as being released under any version of the CERN-OHL with that variant. If no variant is specified, the Covered Source shall be treated as being released under CERN-OHL-S. The Licensor may also specify that the Covered Source is subject to a specific version of the CERN-OHL or any later version in which case You may apply this or any later version of CERN-OHL with the same variant identifier published by CERN. You may treat Covered Source licensed under CERN-OHL-W as licensed under CERN-OHL-S if and only if all Available Components referenced in the Covered Source comply with the corresponding definition of Available Component for CERN-OHL-S. 8.4 This Licence shall terminate with immediate effect if You fail to comply with any of its terms and conditions. 8.5 However, if You cease all breaches of this Licence, then Your Licence from any Licensor is reinstated unless such Licensor has terminated this Licence by giving You, while You remain in breach, a notice specifying the breach and requiring You to cure it within 30 days, and You have failed to come into compliance in all material respects by the end of the 30 day period. Should You repeat the breach after receipt of a cure notice and subsequent reinstatement, this Licence will terminate immediately and permanently. Section 6 shall continue to apply after any termination. 8.6 This Licence shall not be enforceable except by a Licensor acting as such, and third party beneficiary rights are specifically excluded. ================================================ FILE: MATERIALS.md ================================================ Chrumm Bill Of Materials ======================== Mechanical ---------- - 12x Threaded insert, M3, 4mm hole diameter, max 5.7mm length - 12x Countersunk screw, M3, 8mm total length, ISO 10642 - 7x Hex nut with nylon insert, M3, ISO 10511 - 2x Hex nut with nylon insert, M2 - 7x Socket head cap screw, M3, 8mm thread length, ISO 4762 (*) - 2x Socket head cap screw, M2, 6mm thread length, ISO 4762 - 2x Ziptie, 2mm width, 1mm thickness - 14x 3M Bumpon SJ5302, hemispherical, 8mm diameter, 2mm height - 2x Artificial leather, ~190x130mm, max 1.2mm thickness - Glue for artificial leather on printed filament - Keycaps (in photo: Akko WOB Building Blocks, MDA profile) (*) Some of the screws are difficult to reach and require a ball-point driver, or a short-armed key. Electronic ---------- - 2x PCB - 1x Raspberry Pi Pico, SC0915, without pre-soldered headers - 1x USB cable, A to micro-B with small head, shielded, max 4mm diameter - 64x Diode, 1N4148, DO-35 through-hole format - 64x MX switch - 1x Bourns PEC11R-4215F-N0024 rotary encoder, M7 nut mount, 15mm flatted D-shaft - 1x TE Flexstrip FSN-22A-8, 0.1" pitch, 2" length, 8 conductors (**) - 1x TE Flexstrip FSN-22A-5, 0.1" pitch, 2" length, 5 conductors (**) - 1x TE Flexstrip FSN-23A-3, 0.1" pitch, 3" length, 3 conductors (**) (**) It might be cheaper to buy strips with more conductors and cut them apart as needed. 3D-printed ---------- - 2x Body half (left, right) - 2x Floor half (left, right) - 2x Palm rest (left, right) - 1x Rotary encoder knob - 1x Diode bender jig, 7.62mm pitch (300mil) - 12x Diode standoff jig ================================================ FILE: README.md ================================================ Chrumm keyboard =============== Chrumm is an open-hardware ergonomic keyboard, made of a 3D-printable body, a bendable PCB, and custom firmware for the Raspberry Pi Pico. This repository contains all relevant source files. I share these files in the hope that they are useful, or at least interesting to others. Keep in mind that this is a free, do-it-yourself project. What you see is what you get. Make sure to check the license. ![Front view of the finished keyboard](images/front.jpg) ![Inside view with installed electronics](images/inside.jpg) Files ----- - [Releases] - Download page for STL, 3MF, GBR, UF2 files - [BUILD.md](BUILD.md) - Build advice - [MATERIALS.md](MATERIALS.md) - Bill Of Materials - [pcb/README.md](pcb/README.md) - PCB production details - [body/README.md](body/README.md) - Body generator parameters - [firmware/README.md](firmware/README.md) - Firmware overview and installation [Releases]: https://github.com/sevmeyer/chrumm-keyboard/releases/ Features -------- Chrumm features a column staggered layout with simple thumb clusters. The right side has an additional column, to better approximate the standard ANSI layout, and to provide dedicated arrow keys. A central encoder allows for rotational input. The body is a robust monoblock without visible screws. It has integrated split, tent, and tilt angles, similar to commercial ergonomic boards. The palm rests and the USB cable are firmly attached, so that everything can be moved around without hassle. The STL files are generated programmatically, with a pure Python package that has no dependencies. They are optimized for FFF 3D printing. Most parts are printed sideways, to produce a smooth surface without the need of post-processing. Custom supports minimize the print time and filament cost. The body houses two reversible, bendable, interconnected PCBs. They are powered by a Raspberry Pi Pico. Layout ------ ![Default logical layout with two layers](images/layout.svg) Credit ------ Chrumm would not exist without the shared knowledge of the mechanical keyboard community. I found inspiration on [Reddit], [KBD.news], [geekhack], and learned a lot from the [PCB guides] by ai03 and Ruiqi Mao, the [Keyboard posts] by Masterzen, and the [Matrix Help] by Dave Dribin. The layout and body is influenced by projects like the [Ergodox], [Dactyl], [Sofle], [Pteron], and everything from [Bastardkb]. I also used established open hardware repositories for reference, including the [UHK60], [Skeletyl], [Sofle], [Corne], and [Torn]. [Reddit]: https://old.reddit.com/r/ErgoMechKeyboards+MechanicalKeyboards/ [KBD.news]: https://kbd.news/ [geekhack]: https://geekhack.org [PCB guides]: https://wiki.ai03.com/books/pcb-design [Keyboard posts]: https://www.masterzen.fr/tag/#mechanical-keyboards [Matrix Help]: https://www.dribin.org/dave/keyboard/one_html/ [Ergodox]: https://www.ergodox.io/ [Dactyl]: https://github.com/adereth/dactyl-keyboard [Sofle]: https://github.com/josefadamcik/SofleKeyboard [Pteron]: https://github.com/FSund/pteron-keyboard [Bastardkb]: https://bastardkb.com/ [UHK60]: https://github.com/UltimateHackingKeyboard/uhk60v1-electronics [Skeletyl]: https://github.com/Bastardkb/Skeletyl-PCB-plate [Corne]: https://github.com/foostan/crkbd [Torn]: https://github.com/rtitmuss/torn Gallery ------- ![Print and assembly of the body](images/body.jpg) ![Palm rests wrapped with artificial leather](images/palms.jpg) ![Preparation and installation of the PCB](images/pcb.jpg) ================================================ FILE: body/.flake8 ================================================ [flake8] max-line-length = 99 ================================================ FILE: body/.gitignore ================================================ __pycache__/ *.py[cod] *.3mf *.stl *.kicad_mod ================================================ FILE: body/README.md ================================================ Chrumm STL generator ==================== The STL files are generated with the `chrumm` package for Python 3.7+. It has no dependencies and does not need to be compiled or installed. Run it as a command-line tool from this directory: python3 -m chrumm --help To generate the default STL files: python3 -m chrumm chrumm.json Parameters ---------- The configuration parameters are provided via JSON files. If a parameter appears multiple times, then its latest value is used. Distances are given in millimeters, angles in degrees. #### PCB compatibility Unlike the body, the PCB is manually edited and not programmatic. Changes to the body parameters may not be compatible with the PCB. A flattened KiCad footprint (.kicad_mod) is generated to help with the placement of the switches and screws on the PCB. #### Parameter validation The generator does not validate all of the parameters. Most importantly, chamfers and switch notches are not taken into account when placing the walls. Make sure that the switch margin parameter provides enough room. The generator should produce reasonable results for split, tent, and tilt angles up to about 20 degrees. Results may vary for more extreme angles. #### Layout The `layout.fingerStaggers` matrix represents the offset of each key relative to its ortholinear position. The matrix is a list of rows. Each row contains four sublists, to represent the sections of the keyboard (left pinky, left alnum, right alnum, right pinky). Each section contains key offset coordinates. A coordinate can be an empty list (key omitted), a single number (y offset), or a list of two numbers (x and y offset). Each section must have at least two key coordinates. All rows must have the same column structure. #### Omit items Chamfers can be turned off by setting them to `0`. The value of the following parameters can be set to `false` in order to omit them from the output: bracket bumper cable encoder floor.hexHoles knob palm pcb pcb.mount support switch.clipNotch ================================================ FILE: body/chrumm/__init__.py ================================================ r"""Chrumm keyboard STL generator ___ _ _ ____ _ _ __ __ __ __ .' __| |_| | _ '| | | | \/ | \/ | | |__| _ | |_) | |_| | |\/| | |\/| | '.___|_| |_|_| \_\.___.|_| |_|_| |_| Copyright 2023 Severin Meyer Licensed under CERN-OHL-W v2 or later """ __version__ = "1.0.2" from .make import make __all__ = ["make"] ================================================ FILE: body/chrumm/__main__.py ================================================ """ Generate Chrumm keyboard STL files, based on JSON configuration files. If a configuration parameter appears multiple times, then its latest value is used. STL files are written to the current working directory. Usage: chrumm [--help] [--version] [--log LEVEL] [--threads N] [--knob] JSON... Options: -h, --help Print this help and exit --version Print program version and exit --log LEVEL Either DEBUG, INFO, WARNING, or ERROR (default: INFO) --threads N Number of threads to use (default: 8) --knob Generate the rotary encoder knob only """ import getopt import json import logging import pathlib import sys import time import traceback import chrumm logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.INFO) log = logging.getLogger() def main(): try: threads = 8 isKnob = False options, jsonFiles = getopt.getopt( sys.argv[1:], "h", "help version log= threads= knob".split()) for name, arg in options: if name == "-h" or name == "--help": print(__doc__) sys.exit(0) elif name == "--version": print(chrumm.__version__) sys.exit(0) elif name == "--log": logging.getLogger().setLevel(arg) elif name == "--threads": threads = int(arg) elif name == "--knob": isKnob = True if not jsonFiles: raise getopt.GetoptError("Missing JSON argument.") jsonPaths = [pathlib.Path(f) for f in jsonFiles] jsonStrings = [p.read_text() for p in jsonPaths] jsonStem = jsonPaths[-1].stem log.info(r" ___ _ _ ____ _ _ __ __ __ __ ") log.info(r".' __| |_| | _ '| | | | \/ | \/ |") log.info(r"| |__| _ | |_) | |_| | |\/| | |\/| |") log.info(r"'.___|_| |_|_| \_\.___.|_| |_|_| |_|") log.info("") log.info("This is chrumm %s", chrumm.__version__) seconds = time.perf_counter() files = chrumm.make(jsonStrings, threads, isKnob) for name, data in files.items(): path = pathlib.Path(f"{jsonStem}-{name}") log.info('Writing "%s"...', path) if isinstance(data, str): path.write_text(data) else: path.write_bytes(data) seconds = time.perf_counter() - seconds log.info("Done after %.3f seconds.", seconds) except json.decoder.JSONDecodeError as e: log.error("Could not parse JSON: %s", e) log.debug(traceback.format_exc().strip()) sys.exit(1) except ZeroDivisionError: log.error( "Encountered a division by zero.\n" " This can be caused by overlapping points or malformed geometry.\n" " Make sure to use sensible parameters, especially for margins and chamfers.") log.debug(traceback.format_exc().strip()) sys.exit(1) except Exception as e: log.error(e) log.debug(traceback.format_exc().strip()) sys.exit(1) if __name__ == "__main__": main() ================================================ FILE: body/chrumm/cfg.py ================================================ def _init(jsonStrings): """Make JSON values available as native module attributes.""" # Imports are done in local scope because # all public names in globals() get deleted. import json import math import types def mergeDicts(source, target): for key, value in source.items(): if key.isidentifier() and not key.startswith("_"): if isinstance(value, dict): obj = target.setdefault(key, types.SimpleNamespace()) mergeDicts(value, obj.__dict__) else: if key.lower().endswith("angle"): value = math.radians(value) target[key] = value # Delete old attributes from globals() for key in list(globals()): if not key.startswith("_"): del globals()[key] # Add new attributes to globals() for string in jsonStrings: mergeDicts(json.loads(string), globals()) ================================================ FILE: body/chrumm/geo/__init__.py ================================================ from .circle import Circle from .edge import Edge from .face import Face from .line import Line from .matrix import Matrix from .plane import Plane from .segment import Segment from .triangle import Triangle from .vector import Vector __all__ = [ "Circle", "Edge", "Face", "Line", "Matrix", "Plane", "Segment", "Triangle", "Vector"] ================================================ FILE: body/chrumm/geo/circle.py ================================================ from .epsilon import isZero from .line import Line class Circle: __slots__ = "center", "radius" def __init__(self, center, radius): self.center = center self.radius = radius def intersect2D(self, other): """Return a list of 0, 1, or 2 vectors""" if isinstance(other, Circle): return self._intersectCircle2D(other) if isinstance(other, Line): return self._intersectLine2D(other) raise NotImplementedError() def _intersectLine2D(self, line): # Intersection of a Line and a Sphere (or circle) - Paul Bourke # http://paulbourke.net/geometry/circlesphere/ center = self.center.xy linePos = line.pos.xy lineDir = line.dir.normalized2D() b = 2*lineDir.dot(linePos - center) c = (center.magSquared2D() + linePos.magSquared2D() - 2*center.dot(linePos) - self.radius**2) exp = b**2 - 4*c if isZero(exp): return [linePos + lineDir*(-b/2)] if exp < 0: return [] uNeg = (-b - exp**0.5) / 2 uPos = (-b + exp**0.5) / 2 return [linePos + lineDir*uNeg, linePos + lineDir*uPos] def _intersectCircle2D(self, other): # Intersection of two circles - Paul Bourke # http://paulbourke.net/geometry/circlesphere/ a = self.center.xy b = other.center.xy pitch = (b - a).magnitude2D() isSeparate = pitch > self.radius + other.radius isInside = pitch < abs(self.radius - other.radius) if isZero(pitch) or isSeparate or isInside: return [] midDir = (b - a).normalized() midDist = (self.radius**2 - other.radius**2 + pitch**2) / (2*pitch) midPos = a + midDir*midDist chordHalf = (self.radius**2 - midDist**2)**0.5 if isZero(chordHalf): return [midPos] chordOffset = midDir.ortho2D() * chordHalf return [midPos + chordOffset, midPos - chordOffset] ================================================ FILE: body/chrumm/geo/edge.py ================================================ import collections import math from .segment import Segment from .triangle import Triangle from .vector import Vector class Edge(collections.UserList): """A flat list of Vectors with additional convenience functions.""" def __init__(self, *args): super().__init__() self.add(*args) @staticmethod def fromConvexHull2D(vectors): # Another efficient algorithm for convex hulls in two dimensions - A. M. Andrew # https://wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain vectors = sorted(v.xy for v in vectors) lower = [] upper = [] for v in vectors: while len(lower) >= 2 and (lower[-2] - v).cross(lower[-1] - v).z <= 0: lower.pop() lower.append(v) for v in reversed(vectors): while len(upper) >= 2 and (upper[-2] - v).cross(upper[-1] - v).z <= 0: upper.pop() upper.append(v) return Edge(lower[:-1], upper[:-1]) def toSegments(self, isClosed=False): vecCount = len(self.data) segCount = vecCount - 1 + bool(isClosed) return [Segment(self.data[i], self.data[(i+1) % vecCount]) for i in range(segCount)] def add(self, *args): for arg in args: if isinstance(arg, Vector): self.data.append(arg) else: self.add(*arg) @property def xy(self): return Edge(v.xy for v in self.data) @property def xz(self): return Edge(v.xz for v in self.data) @property def yz(self): return Edge(v.yz for v in self.data) def mirroredX(self): return Edge(v.mirroredX() for v in self.data) def mirroredY(self): return Edge(v.mirroredY() for v in self.data) def mirroredZ(self): return Edge(v.mirroredZ() for v in self.data) def reversed(self): return Edge(reversed(self.data)) def scaled(self, scalar, center=Vector()): return Edge((v - center)*scalar + center for v in self.data) def translated(self, vector): return Edge(v + vector for v in self.data) def transformed(self, matrix): return Edge(v.transformed(matrix) for v in self.data) def snapped(self): return Edge(p.snapped() for p in self.data) def collapsed(self, threshold=1e-3): """Remove segments that are shorter than the threshold.""" return Edge(s.a for s in self.toSegments(True) if s.magnitude() >= threshold) def meshPairwise(self, other, isClosed=False): """Triangulate each pair of edge segments in order. Edges may overlap. If one edge has more segments than the other, its remaining segments are connected to the last point of the shorter edge. """ triangles = [] selfLen = len(self.data) otherLen = len(other.data) selfEnd = selfLen - 1 + int(isClosed) otherEnd = otherLen - 1 + int(isClosed) for i in range(max(otherEnd, selfEnd)): a = self.data[min(selfEnd, i) % selfLen] b = self.data[min(selfEnd, i+1) % selfLen] c = other.data[min(otherEnd, i+1) % otherLen] d = other.data[min(otherEnd, i) % otherLen] # There are two possible pairs of triangles: # --d----c-> --d----c-> other # |1 / | | \ 3| # | / 0| |2 \ | # --a----b-> --a----b-> self abc = Triangle(a, b, c) cda = Triangle(c, d, a) abd = Triangle(a, b, d) dbc = Triangle(d, b, c) # Lookup table to determine which triangles # to use, based on which are valid valid = bool(dbc)*8 + bool(abd)*4 + bool(cda)*2 + bool(abc) table = ( 0b0000, 0b0000, 0b0000, 0b0001, 0b0000, 0b0001, 0b0010, 0b0011, 0b0000, 0b0001, 0b0010, 0b0011, 0b0100, 0b1100, 0b1100, 0b0011) bits = table[valid] if valid == 0b1111: # https://en.wikipedia.org/wiki/Delaunay_triangulation abcAngle = (a - b).angleBetween(c - b) cdaAngle = (c - d).angleBetween(a - d) # The epsilon is not necessary, but it prevents # irregular quad diagonals due to rounding errors. if abcAngle + cdaAngle > math.pi + 1e-6: bits = 0b1100 if bits & 0b0001: triangles.append(abc) if bits & 0b0010: triangles.append(cda) if bits & 0b0100: triangles.append(abd) if bits & 0b1000: triangles.append(dbc) return triangles def meshParallel(self, other, isClosed=False): """Triangulate reasonably parallel, non-intersecting edges Minimize the normal deviation between subsequent triangles. In the case of multiple candidates, prioritize equilaterality. """ triangles = [] selfLen = len(self.data) otherLen = len(other.data) selfEnd = selfLen - 1 + int(isClosed) otherEnd = otherLen - 1 + int(isClosed) i = 0 j = 0 while i < selfEnd or j < otherEnd: a = self.data[min(selfEnd, i) % selfLen] b = self.data[min(selfEnd, i+1) % selfLen] c = other.data[min(otherEnd, j+1) % otherLen] d = other.data[min(otherEnd, j) % otherLen] abd = Triangle(a, b, d) acd = Triangle(a, c, d) if i >= selfEnd: triangles.append(acd) j += 1 continue if j >= otherEnd: triangles.append(abd) i += 1 continue # Choose the triangle with the smaller normal deviation, # if the difference is significant enough. if triangles: prevNorm = triangles[-1].normal() abdDev = abd.normal().angleBetween(prevNorm) acdDev = acd.normal().angleBetween(prevNorm) if abdDev < acdDev - math.tau/16: triangles.append(abd) i += 1 continue if acdDev < abdDev - math.tau/16: triangles.append(acd) j += 1 continue # Otherwise, choose the most equilateral triangle, # based on the circumcircle (Delaunay). if abd.circumradius() < acd.circumradius() + 1e-6: triangles.append(abd) i += 1 else: triangles.append(acd) j += 1 return triangles def contains2D(self, vector): """Check if the vector is inside the simple closed edge. Vectors on the exact edge may or may not be considered inside. """ # Point Inclusion in Polygon Test - W. Randolph Franklin # https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html isIn = False for i in range(len(self.data)): a = self.data[i-1] b = self.data[i] if (a.y > vector.y) != (b.y > vector.y): if vector.x < (b.x - a.x) * (vector.y - a.y) / (b.y - a.y) + a.x: isIn = not isIn return isIn def distance2D(self, vector): """Return the minimum distance to the simple closed edge.""" if self.contains2D(vector): return 0 return min(s.distance2D(vector) for s in self.toSegments(True)) ================================================ FILE: body/chrumm/geo/epsilon.py ================================================ """Provide float comparisons with an epsilon threshold.""" # Comparing floats is notoriously cumbersome. To keep it # simple, this project uses an absolute epsilon of 1e-6. # # Considerations: # - The base unit is 1mm. # - The maximum expected workspace scale is 1m (1e+3). # - The minimum expected parameter scale is 1um (1e-3). # - STL stores 32bit floats with a machine epsilon of ~1e-7. # Points that are considered separate during construction # should not collapse to identical coordinates in STL. # - Geometric comparisons should be consistent across the # workspace. Whether two points are considered separate # should not depend on their proximity to the origin. # Therefore, relative tolerances are problematic: # math.isclose(100.0000001, 100.0000002) -> False # math.isclose(101.0000001, 101.0000002) -> True # # References: # https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ # https://peps.python.org/pep-0485/ # https://numpy.org/doc/stable/reference/generated/numpy.isclose.html def isZero(n): return abs(n) < 1e-6 ================================================ FILE: body/chrumm/geo/face.py ================================================ import math from .matrix import Matrix from .triangle import Triangle from .vector import Vector class Face: """Coplanar 3D polygon with deferred triangulation.""" def __init__(self, edge, holes=[]): """Store polygon data for deferred triangulation. Requirements: No duplicate points No intersections No nested holes Opposite point order for edge and holes Reasonably coplanar points Args: edge (list[Vector]) holes (list[list[Vector]]) """ self.edge = edge self.holes = holes def triangulate(self): """Triangulate the stored polygon. Returns: list[Triangle] """ realPoints = list(self.edge) polyIndexes = list(range(len(realPoints))) holeIndexes = [] for hole in self.holes: if hole: holeStart = len(realPoints) holeEnd = holeStart + len(hole) holeIndexes.append(list(range(holeStart, holeEnd))) realPoints.extend(hole) surfaceNormal = Vector.fromSurfaceNormal(self.edge) uprightMatrix = Matrix.fromAlignment(surfaceNormal, Vector(0, 0, 1)) uprightPoints = [p.transformed(uprightMatrix).xy for p in realPoints] Face._mergeHoles(uprightPoints, polyIndexes, holeIndexes) triangles = Face._cutEars(uprightPoints, polyIndexes) Face._flipTriangles(uprightPoints, triangles) return [Triangle( realPoints[i], realPoints[j], realPoints[k]) for i, j, k in triangles] @staticmethod def _mergeHoles(points, polyIndexes, holeIndexes): # Triangulation by Ear Clipping - David Eberly # https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf # Reorder each hole to start at the rightmost point orderedHoles = [] for hole in holeIndexes: start = max(range(len(hole)), key=lambda i: points[hole[i]]) orderedHoles.append(hole[start:] + hole[:start]) # Sort holes from right to left orderedHoles.sort(key=lambda h: points[h[0]], reverse=True) # Connect each hole to a visible point on the right for hole in orderedHoles: vis = None # Determine rightward search triangle abc # .c # _____ .'/ # | .' / # hole |.' / # _____a---b--> ray # / # polygon a = points[hole[0]] # Rightward ray origin b = Vector(math.inf) # Ray intersection with polygon c = Vector(math.inf) # Rightmost end of intersected segment for i in range(len(polyIndexes)): j = (i + 1) % len(polyIndexes) p = points[polyIndexes[i]] # Polygon segment start q = points[polyIndexes[j]] # Polygon segment end if p.y == a.y == q.y: if a.x < p.x and a.x < q.x: if p.x < q.x and p.x < b.x: b, c, vis = p, p, i elif q.x < b.x: b, c, vis = q, q, j elif p.y <= a.y <= q.y: x = p.x - (p.y - a.y)*(q.x - p.x)/(q.y - p.y) if a.x < x < b.x: b = Vector(x, a.y) if p.x > q.x: c, vis = p, i else: c, vis = q, j # Check for better point inside search triangle if b != c: # Ensure triangle is counterclockwise if c.y < b.y: b, c = c, b aDir = (b - a).normalized2D() bDir = (c - b).normalized2D() cDir = (a - c).normalized2D() minDist = math.inf for i in range(len(polyIndexes)): p = points[polyIndexes[i]] isInside = ( aDir.x*(a.y - p.y) - aDir.y*(a.x - p.x) < -1e-6 and bDir.x*(b.y - p.y) - bDir.y*(b.x - p.x) < -1e-6 and cDir.x*(c.y - p.y) - cDir.y*(c.x - p.x) < -1e-6) if isInside: o = points[polyIndexes[(i - 1) % len(polyIndexes)]] q = points[polyIndexes[(i + 1) % len(polyIndexes)]] isReflex = (p.x - o.x)*(q.y - p.y) - (q.x - p.x)*(p.y - o.y) < 0 if isReflex: dist = (p.x - a.x)*(p.x - a.x) + (p.y - a.y)*(p.y - a.y) if dist < minDist: minDist = dist vis = i # Merge hole (vis -> hole -> hole[0] -> vis) polyIndexes.insert(vis, polyIndexes[vis]) polyIndexes.insert(vis+1, hole[0]) polyIndexes[vis+1:vis+1] = hole @staticmethod def _cutEars(points, polyIndexes): remaining = list(polyIndexes) cache = [None] * len(remaining) ears = [] for _ in range(len(remaining) - 2): for i in range(len(remaining)): # Cache reusable calculations if cache[i] is None: ear = [ remaining[i - 1], remaining[i], remaining[(i + 1) % len(remaining)]] a = points[ear[0]] b = points[ear[1]] c = points[ear[2]] aDir = (b - a).normalized2D() bDir = (c - b).normalized2D() cDir = (a - c).normalized2D() aDot = aDir.y*a.x - aDir.x*a.y + 1e-6 bDot = bDir.y*b.x - bDir.x*b.y + 1e-6 cDot = cDir.y*c.x - cDir.x*c.y + 1e-6 earHeight = cDir.x*b.y - cDir.y*b.x + cDot cache[i] = ear, aDir, bDir, cDir, aDot, bDot, cDot, earHeight else: ear, aDir, bDir, cDir, aDot, bDot, cDot, earHeight = cache[i] if earHeight < 0: continue # Check if any point is inside ear isInside = False for j in remaining: if j in ear: continue p = points[j] isInside = ( cDir.y*p.x - cDir.x*p.y < cDot and bDir.y*p.x - bDir.x*p.y < bDot and aDir.y*p.x - aDir.x*p.y < aDot) if isInside: break # Cut empty ear if not isInside: ears.append(ear) del remaining[i] del cache[i] cache[i - 1] = None cache[i % len(cache)] = None break return ears @staticmethod def _flipTriangles(points, triangles): # Map counterclockwise edges to triangles for a fast lookup lookup = {(t[i-1], t[i]): t for t in triangles for i in (0, 1, 2)} remaining = set(lookup.keys()) while remaining: a, b = remaining.pop() # c<---- b # \ 0 // \ # \ // 1 \ # a ---->d try: tri0 = lookup[(a, b)] tri1 = lookup[(b, a)] except KeyError: continue c = tri0[tri0.index(a) - 1] d = tri1[tri1.index(b) - 1] da = points[a] - points[d] db = points[b] - points[d] dc = points[c] - points[d] # https://en.wikipedia.org/wiki/Delaunay_triangulation isDelaunay = ( (da.x*da.x + da.y*da.y) * (db.x*dc.y-dc.x*db.y) - (db.x*db.x + db.y*db.y) * (da.x*dc.y-dc.x*da.y) + (dc.x*dc.x + dc.y*dc.y) * (da.x*db.y-db.x*da.y)) < 1e-6 if isDelaunay: continue # Flip triangles in-place tri0[tri0.index(b)] = d tri1[tri1.index(a)] = c # Remap edges del lookup[(a, b)] del lookup[(b, a)] lookup[(d, c)] = tri0 lookup[(c, a)] = tri0 lookup[(a, d)] = tri0 lookup[(c, d)] = tri1 lookup[(d, b)] = tri1 lookup[(b, c)] = tri1 # Revisit neighboring edges remaining.add((c, a)) remaining.add((a, d)) remaining.add((d, b)) remaining.add((b, c)) ================================================ FILE: body/chrumm/geo/line.py ================================================ from .epsilon import isZero class Line: __slots__ = "pos", "dir" def __init__(self, pos, direction): self.pos = pos self.dir = direction.normalized() def translated(self, vector): return Line(self.pos + vector, self.dir) def transformed(self, matrix): return Line( self.pos.transformed(matrix), self.dir.transformedNormal(matrix)) def distance(self, vector): """Return the absolute distance to the line.""" # Distance from point to line 3d formula - Rabbid76 # https://stackoverflow.com/a/52792014 closest = self.pos + self.dir * self.dir.dot(vector - self.pos) return (closest - vector).magnitude() def distance2D(self, vector): """Return the signed distance to the line. The distance is positive on the clockwise side of the line and negative on the other. """ # https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line dir2D = self.dir.normalized2D() return dir2D.x*(self.pos.y - vector.y) - dir2D.y*(self.pos.x - vector.x) def intersect(self, other): # The shortest line between two lines in 3D - Paul Bourke # http://paulbourke.net/geometry/pointlineplane/ delta = (self.pos - other.pos) do = delta.dot(other.dir) ds = delta.dot(self.dir) os = other.dir.dot(self.dir) oo = other.dir.dot(other.dir) ss = self.dir.dot(self.dir) numer = do * os - ds * oo denom = ss * oo - os * os if isZero(denom): raise ZeroDivisionError("Cannot find intersection of parallel lines.") muA = numer / denom muB = (do + muA*os) / oo a = self.pos + self.dir*muA b = other.pos + other.dir*muB return (a + b) / 2 ================================================ FILE: body/chrumm/geo/matrix.py ================================================ import math class Matrix: __slots__ = "data" def __init__(self, data=( 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0)): self.data = data @staticmethod def fromAlignment(sourceDir, targetDir): """Return a rotation matrix that aligns the source to the target vector.""" # Calculate Rotation Matrix to align Vector A to Vector B - Jur van den Berg # https://math.stackexchange.com/a/476311 sourceDir = sourceDir.normalized() targetDir = targetDir.normalized() if sourceDir.isClose(targetDir): return Matrix() if sourceDir.isClose(-targetDir): return Matrix().mirroredX() c = sourceDir.cross(targetDir) d = sourceDir.dot(targetDir) skew = Matrix(( 0.0, c.z, -c.y, 0.0, -c.z, 0.0, c.x, 0.0, c.y, -c.x, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)) return Matrix() + skew + skew*skew*(1 / (1 + d)) def __add__(self, other): return Matrix(tuple(a + b for a, b in zip(self.data, other.data))) def __sub__(self, other): return Matrix(tuple(a - b for a, b in zip(self.data, other.data))) def __mul__(self, other): if not isinstance(other, Matrix): return Matrix(tuple(a * other for a in self.data)) # https://en.wikipedia.org/wiki/Matrix_multiplication s = self.data o = other.data return Matrix(( s[0]*o[0] + s[1]*o[4] + s[2]*o[8] + s[3]*o[12], s[0]*o[1] + s[1]*o[5] + s[2]*o[9] + s[3]*o[13], s[0]*o[2] + s[1]*o[6] + s[2]*o[10] + s[3]*o[14], s[0]*o[3] + s[1]*o[7] + s[2]*o[11] + s[3]*o[15], s[4]*o[0] + s[5]*o[4] + s[6]*o[8] + s[7]*o[12], s[4]*o[1] + s[5]*o[5] + s[6]*o[9] + s[7]*o[13], s[4]*o[2] + s[5]*o[6] + s[6]*o[10] + s[7]*o[14], s[4]*o[3] + s[5]*o[7] + s[6]*o[11] + s[7]*o[15], s[8]*o[0] + s[9]*o[4] + s[10]*o[8] + s[11]*o[12], s[8]*o[1] + s[9]*o[5] + s[10]*o[9] + s[11]*o[13], s[8]*o[2] + s[9]*o[6] + s[10]*o[10] + s[11]*o[14], s[8]*o[3] + s[9]*o[7] + s[10]*o[11] + s[11]*o[15], s[12]*o[0] + s[13]*o[4] + s[14]*o[8] + s[15]*o[12], s[12]*o[1] + s[13]*o[5] + s[14]*o[9] + s[15]*o[13], s[12]*o[2] + s[13]*o[6] + s[14]*o[10] + s[15]*o[14], s[12]*o[3] + s[13]*o[7] + s[14]*o[11] + s[15]*o[15])) def mirroredX(self): return self * Matrix(( -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0)) def mirroredY(self): return self * Matrix(( 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0)) def mirroredZ(self): return self * Matrix(( 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0)) def rotatedX(self, angle, center=None): # https://en.wikipedia.org/wiki/Rotation_matrix cos = math.cos(angle) sin = math.sin(angle) rotation = Matrix(( 1.0, 0.0, 0.0, 0.0, 0.0, cos, sin, 0.0, 0.0, -sin, cos, 0.0, 0.0, 0.0, 0.0, 1.0)) if center is None: return self * rotation return self.translated(-center).__mul__(rotation).translated(center) def rotatedY(self, angle, center=None): # https://en.wikipedia.org/wiki/Rotation_matrix cos = math.cos(angle) sin = math.sin(angle) rotation = Matrix(( cos, 0.0, -sin, 0.0, 0.0, 1.0, 0.0, 0.0, sin, 0.0, cos, 0.0, 0.0, 0.0, 0.0, 1.0)) if center is None: return self * rotation return self.translated(-center).__mul__(rotation).translated(center) def rotatedZ(self, angle, center=None): # https://en.wikipedia.org/wiki/Rotation_matrix cos = math.cos(angle) sin = math.sin(angle) rotation = Matrix(( cos, sin, 0.0, 0.0, -sin, cos, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0)) if center is None: return self * rotation return self.translated(-center).__mul__(rotation).translated(center) def translated(self, vector): return self * Matrix(( 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, vector.x, vector.y, vector.z, 1.0)) ================================================ FILE: body/chrumm/geo/plane.py ================================================ from .epsilon import isZero from .line import Line from .vector import Vector class Plane: __slots__ = "pos", "normal" def __init__(self, pos, normal): self.pos = pos self.normal = normal.normalized() @staticmethod def fromX(x): return Plane(Vector(x, 0, 0), Vector(1, 0, 0)) @staticmethod def fromY(y): return Plane(Vector(0, y, 0), Vector(0, 1, 0)) @staticmethod def fromZ(z): return Plane(Vector(0, 0, z), Vector(0, 0, 1)) @staticmethod def fromPoints(a, b, c): return Plane(b, (b - a).cross(c - a)) @staticmethod def fromLine2D(line): """Return vertical plane along the line.""" return Plane(line.pos.xy, line.dir.ortho2D()) def translated(self, vector): return Plane(self.pos + vector, self.normal) def transformed(self, matrix): return Plane( self.pos.transformed(matrix), self.normal.transformedNormal(matrix)) def distance(self, vector): """Return signed distance in the direction of the normal.""" return (vector - self.pos).dot(self.normal) def projectNormal(self, vector): return self._intersectLine(Line(vector, self.normal)) def projectX(self, vector): if isZero(self.normal.x): raise ZeroDivisionError("Plane is parallel to the x axis.") xDist = self.normal.dot(self.pos - vector) / self.normal.x return Vector(vector.x + xDist, vector.y, vector.z) def projectY(self, vector): if isZero(self.normal.y): raise ZeroDivisionError("Plane is parallel to the y axis.") yDist = self.normal.dot(self.pos - vector) / self.normal.y return Vector(vector.x, vector.y + yDist, vector.z) def projectZ(self, vector): if isZero(self.normal.z): raise ZeroDivisionError("Plane is parallel to the z axis.") zDist = self.normal.dot(self.pos - vector) / self.normal.z return Vector(vector.x, vector.y, vector.z + zDist) def intersect(self, other1, other2=None): if isinstance(other1, Plane) and isinstance(other2, Plane): return self._intersectPlanes(other1, other2) if isinstance(other1, Line): return self._intersectLine(other1) raise NotImplementedError() def _intersectPlanes(self, other1, other2): # Intersection of three planes - Paul Bourke # http://paulbourke.net/geometry/pointlineplane/ dot1 = other1.normal.dot(other1.pos) dot2 = other2.normal.dot(other2.pos) dot3 = self.normal.dot(self.pos) cross23 = other2.normal.cross(self.normal) cross31 = self.normal.cross(other1.normal) cross12 = other1.normal.cross(other2.normal) numer = cross23*dot1 + cross31*dot2 + cross12*dot3 denom = other1.normal.dot(cross23) if isZero(denom): raise ZeroDivisionError("Cannot find intersection of parallel planes.") return numer / denom def _intersectLine(self, line): # Intersection of a plane and a line - Paul Bourke # http://paulbourke.net/geometry/pointlineplane/ numer = self.normal.dot(self.pos - line.pos) denom = self.normal.dot(line.dir) if isZero(denom): raise ZeroDivisionError("Cannot find intersection of parallel line.") return line.pos + line.dir*(numer / denom) ================================================ FILE: body/chrumm/geo/segment.py ================================================ from .epsilon import isZero from .vector import Vector class Segment: __slots__ = "a", "b" def __init__(self, a, b): self.a = a self.b = b def magnitude(self): return (self.b - self.a).magnitude() def offset2D(self, distance): offset = (self.a - self.b).ortho2D().normalized2D() * distance return Segment(self.a.xy + offset, self.b.xy + offset) def magnitude2D(self): return (self.a - self.b).magnitude2D() def distance2D(self, vector): # Minimum Distance between a Point and a Line - Paul Bourke # http://paulbourke.net/geometry/pointlineplane/ a = self.a b = self.b # OPTIMIZED: Inline calculations to avoid function overhead numer = (vector.x - a.x)*(b.x - a.x) + (vector.y - a.y)*(b.y - a.y) denom = (b.x - a.x)**2 + (b.y - a.y)**2 u = max(0, min(numer / denom, 1)) if denom != 0 else 0 return ((a.x + u*(b.x - a.x) - vector.x)**2 + (a.y + u*(b.y - a.y) - vector.y)**2)**0.5 def intersect2D(self, other, asLine=0): """Return intersection of segments, or None if they do not intersect. Args: asLine (int): Treat neither segment (0), the other segment (1), or both segments (2) as infinite lines. """ # Intersection point of two line segments in 2 dimensions - Paul Bourke # http://paulbourke.net/geometry/pointlineplane/ assert 0 <= asLine <= 2 a = self.a b = self.b c = other.a d = other.b # OPTIMIZED: Inline calculations to avoid function overhead denom = (d.y - c.y)*(b.x - a.x) - (d.x - c.x)*(b.y - a.y) if not isZero(denom): abPos = ((d.x - c.x)*(a.y - c.y) - (d.y - c.y)*(a.x - c.x)) / denom if (asLine == 2 or 0 <= abPos <= 1): cdPos = ((b.x - a.x)*(a.y - c.y) - (b.y - a.y)*(a.x - c.x)) / denom if (asLine >= 1 or 0 <= cdPos <= 1): return Vector(a.x + (b.x - a.x)*abPos, a.y + (b.y - a.y)*abPos) return None ================================================ FILE: body/chrumm/geo/tests/README.md ================================================ Run the tests from the parent directory of the chrumm package: python3 -m unittest discover ================================================ FILE: body/chrumm/geo/tests/__init__.py ================================================ ================================================ FILE: body/chrumm/geo/tests/helper.py ================================================ def findTriangulationProblems(triangles, outerSegments): """Check if triangles make reasonable sense (inefficient).""" # Triangles are valid # -> Non-zero area # -> Not collinear for tri in triangles: if not tri: return "Triangle is not valid." # Triangle vertexes match segment vertexes # -> No rounding errors # -> No new points vertexes = [] for segment in outerSegments: for vertex in segment.a, segment.b: if vertex not in vertexes: vertexes.append(vertex) for tri in triangles: if tri.a not in vertexes or tri.b not in vertexes or tri.c not in vertexes: return "Triangle vertex does not match outer segments." # Segments are used an expected number of times # -> Unique triangles # -> No holes outerSortedSegs = [sorted((s.a, s.b)) for s in outerSegments] innerSortedSegs = [] outerCounts = [0]*len(outerSortedSegs) innerCounts = [] for tri in triangles: for seg in (tri.a, tri.b), (tri.b, tri.c), (tri.c, tri.a): sortedSeg = sorted(seg) isOuterSeg = False for i, outerSeg in enumerate(outerSortedSegs): if sortedSeg == outerSeg: outerCounts[i] += 1 isOuterSeg = True isInnerSeg = False for i, innerSeg in enumerate(innerSortedSegs): if sortedSeg == innerSeg: innerCounts[i] += 1 isInnerSeg = True if not isOuterSeg and not isInnerSeg: innerSortedSegs.append(sortedSeg) innerCounts.append(1) for count in outerCounts: if count > 1: return "Outer segment is used more than once." for count in innerCounts: if count != 2: return "Inner segment is not used exactly twice." return None ================================================ FILE: body/chrumm/geo/tests/test_circle.py ================================================ import unittest from ..circle import Circle from ..line import Line from ..vector import Vector CIRCLE_ZERO = Circle(Vector(0, 0, 0), 0) CIRCLE_UNIT = Circle(Vector(0, 0, 0), 1) class CircleTest(unittest.TestCase): def test_intersectLine2D(self): # Separate line = Line(Vector(0, 2, 3), Vector(1, 1, 1)) points = CIRCLE_UNIT.intersect2D(line) self.assertEqual(len(points), 0) # Zero tangent line = Line(Vector(), Vector(1, 1, 1)) points = CIRCLE_ZERO.intersect2D(line) self.assertEqual(len(points), 1) self.assertEqual(points[0], Vector()) # Tangent line = Line(Vector(1, 0, 4), Vector(0, 1, 2)) points = CIRCLE_UNIT.intersect2D(line) self.assertEqual(len(points), 1) self.assertEqual(points[0], Vector(1, 0, 0)) # Intersection line = Line(Vector(), Vector(1, 1, 1)) points = CIRCLE_UNIT.intersect2D(line) self.assertEqual(len(points), 2) self.assertTrue(points[0].isClose(Vector(-0.5**0.5, -0.5**0.5))) self.assertTrue(points[1].isClose(Vector(0.5**0.5, 0.5**0.5))) def test_intersectCircle2D(self): points = CIRCLE_ZERO.intersect2D(CIRCLE_ZERO) self.assertEqual(len(points), 0) # Inside circle = Circle(Vector(0, 0, 3), 2) points = CIRCLE_UNIT.intersect2D(circle) self.assertEqual(len(points), 0) # Separate circle = Circle(Vector(4, 4, 3), 2) points = CIRCLE_UNIT.intersect2D(circle) self.assertEqual(len(points), 0) # Tangent circle = Circle(Vector(4.5**0.5, 4.5**0.5, 3), 2) points = CIRCLE_UNIT.intersect2D(circle) self.assertEqual(len(points), 1) self.assertTrue(points[0].isClose(Vector(0.5**0.5, 0.5**0.5))) # Intersection circle = Circle(Vector(1, 1, 3), 1) points = CIRCLE_UNIT.intersect2D(circle) self.assertEqual(len(points), 2) self.assertTrue(points[0].isClose(Vector(0, 1, 0))) self.assertTrue(points[1].isClose(Vector(1, 0, 0))) ================================================ FILE: body/chrumm/geo/tests/test_edge.py ================================================ import unittest from ..edge import Edge from ..matrix import Matrix from ..vector import Vector from .helper import findTriangulationProblems EDGE_EMPTY = Edge() EDGE_SQUARE = Edge( Vector(0, 0, 0), Vector(1, 0, 1), Vector(1, 1, 2), Vector(0, 1, 3)) class EdgeTest(unittest.TestCase): def test_fromConvexHull2D(self): vectors = [ Vector(0.5, 0, 1), Vector(1, 1, 2), Vector(1, 0, 3), Vector(0.5, 0.5, 4), Vector(0, 1, 5), Vector(0, 0.5, 6), Vector(0, 0, 7)] edge = Edge.fromConvexHull2D(vectors) self.assertEqual(edge, EDGE_SQUARE.xy) def test_toSegments(self): # Open segs = Edge().toSegments() self.assertEqual(len(segs), 0) segs = Edge(Vector()).toSegments() self.assertEqual(len(segs), 0) segs = Edge(Vector(), Vector(1, 2, 3)).toSegments() self.assertEqual(len(segs), 1) self.assertEqual(segs[0].a, Vector(0, 0, 0)) self.assertEqual(segs[0].b, Vector(1, 2, 3)) # Closed segs = Edge().toSegments(True) self.assertEqual(len(segs), 0) segs = Edge(Vector()).toSegments(True) self.assertEqual(len(segs), 1) self.assertEqual(segs[0].a, Vector()) self.assertEqual(segs[0].b, Vector()) segs = Edge(Vector(), Vector(1, 2, 3)).toSegments(True) self.assertEqual(len(segs), 2) self.assertEqual(segs[0].a, Vector(0, 0, 0)) self.assertEqual(segs[0].b, Vector(1, 2, 3)) self.assertEqual(segs[1].a, Vector(1, 2, 3)) self.assertEqual(segs[1].b, Vector(0, 0, 0)) def test_add(self): edge = Edge() self.assertEqual(len(edge), 0) edge.add([]) self.assertEqual(len(edge), 0) edge.add(Vector(1)) self.assertEqual(len(edge), 1) self.assertEqual(edge[0], Vector(1)) edge.add([Vector(2)]) self.assertEqual(len(edge), 2) self.assertEqual(edge[0], Vector(1)) self.assertEqual(edge[1], Vector(2)) edge.add(Edge(Vector(3))) self.assertEqual(len(edge), 3) self.assertEqual(edge[0], Vector(1)) self.assertEqual(edge[1], Vector(2)) self.assertEqual(edge[2], Vector(3)) edge.add([Edge(Vector(4)), Edge(Vector(5))]) self.assertEqual(len(edge), 5) self.assertEqual(edge[0], Vector(1)) self.assertEqual(edge[1], Vector(2)) self.assertEqual(edge[2], Vector(3)) self.assertEqual(edge[3], Vector(4)) self.assertEqual(edge[4], Vector(5)) def test_mirroredX(self): edge = EDGE_SQUARE.mirroredX() for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[i].mirroredX()) def test_mirroredY(self): edge = EDGE_SQUARE.mirroredY() for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[i].mirroredY()) def test_mirroredZ(self): edge = EDGE_SQUARE.mirroredZ() for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[i].mirroredZ()) def test_reversed(self): edge = EDGE_SQUARE.reversed() for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[len(EDGE_SQUARE)-1-i]) def test_scaled(self): edge = EDGE_SQUARE.scaled(0) for i in range(len(edge)): self.assertEqual(edge[i], Vector()) edge = EDGE_SQUARE.scaled(1) self.assertEqual(edge, EDGE_SQUARE) edge = EDGE_SQUARE.scaled(2) for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[i]*2) def test_translated(self): edge = EDGE_SQUARE.translated(Vector(1, 2, 3)) for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[i] + Vector(1, 2, 3)) def test_transformed(self): matrix = Matrix().rotatedX(2**0.5) edge = EDGE_SQUARE.transformed(matrix) for i in range(len(edge)): self.assertEqual(edge[i], EDGE_SQUARE[i].transformed(matrix)) def test_collapsed(self): edge = Edge() self.assertEqual(edge.collapsed(), Edge()) edge = Edge(Vector()) self.assertEqual(edge.collapsed(), Edge()) edge = Edge(Vector(), Vector()) self.assertEqual(edge.collapsed(), Edge()) edge = Edge(Vector(), Vector(1, 2, 3)) self.assertEqual(edge.collapsed(), edge) edge = Edge(Vector(), Vector(), Vector(1, 2, 3), Vector(1, 2, 3)) expected = Edge(Vector(), Vector(1, 2, 3)) self.assertEqual(edge.collapsed(), expected) edge = Edge(Vector(), Vector(1, 2, 3), Vector(1, 2, 3), Vector()) expected = Edge(Vector(), Vector(1, 2, 3)) self.assertEqual(edge.collapsed(), expected) def test_meshPairwise(self): tris = Edge().meshPairwise(Edge()) self.assertEqual(len(tris), 0) tris = Edge().meshPairwise(Edge(Vector())) self.assertEqual(len(tris), 0) tris = Edge().meshPairwise(Edge(Vector(1, 2, 3))) self.assertEqual(len(tris), 0) tris = Edge(Vector()).meshPairwise(Edge(Vector(1, 2, 3))) self.assertEqual(len(tris), 0) tris = Edge(Vector()).meshPairwise(Edge(Vector(1, 2, 3), Vector(1, 2, 3))) self.assertEqual(len(tris), 0) tris = Edge(Vector()).meshPairwise(Edge(Vector(1, 2, 3), Vector(2, 4, 6))) self.assertEqual(len(tris), 0) tris = Edge(Vector()).meshPairwise(Edge(Vector(1, 3, 4), Vector(-1, 3, 4))) self.assertEqual(len(tris), 1) self.assertAlmostEqual(tris[0].area(), 5) # Closed edge0 = Edge( Vector(0, 0, 0), Vector(1, 0, 0), Vector(1, 1, 0), Vector(0, 1, 0)) edge1 = Edge( Vector(0, 0, 1), Vector(1, 0, 1), Vector(1, 1, 1), Vector(0, 1, 1)) tris = edge0.meshPairwise(edge1, isClosed=True) segs = edge0.toSegments(True) + edge1.toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 8) self.assertAlmostEqual(area, 4) self.assertIsNone(findTriangulationProblems(tris, segs)) # Fanning edge0 = Edge( Vector(1, 1, 4), Vector(2, 1, 4)) edge1 = Edge( Vector(1, 0, 4), Vector(2, 0, 4), Vector(3, 1, 4), Vector(2, 2, 4), Vector(1, 2, 4)) tris = edge0.meshPairwise(edge1) segs = Edge(edge0, reversed(edge1)).toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 5) self.assertAlmostEqual(area, 2.5) self.assertIsNone(findTriangulationProblems(tris, segs)) # Overlapping and collinear segments edge0 = Edge( Vector(2, 1, 2), Vector(3, 1, 2), Vector(4, 2, 2), Vector(5, 3, 2), Vector(6, 3, 2)) edge1 = Edge( Vector(2, 1, 3), Vector(3, 1, 2), Vector(4, 2, 2), Vector(5, 3, 2), Vector(6, 3, 3)) tris = edge0.meshPairwise(edge1) segs = Edge(edge0, reversed(edge1)).toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 2) self.assertAlmostEqual(area, 1) self.assertIsNone(findTriangulationProblems(tris, segs)) # Crossing edges edge0 = Edge( Vector(1, 1, 5), Vector(2, 2, 5), Vector(3, 1, 5)) edge1 = Edge( Vector(1, 2, 5), Vector(2, 1, 5), Vector(3, 2, 5)) tris = edge0.meshPairwise(edge1) segs = Edge(edge0, reversed(edge1)).toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 4) self.assertAlmostEqual(area, 2) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_meshParallel(self): tris = Edge().meshParallel(Edge()) self.assertEqual(len(tris), 0) tris = Edge().meshParallel(Edge(Vector())) self.assertEqual(len(tris), 0) tris = Edge().meshParallel(Edge(Vector(1, 2, 3))) self.assertEqual(len(tris), 0) tris = Edge(Vector()).meshParallel(Edge(Vector(1, 2, 3))) self.assertEqual(len(tris), 0) tris = Edge(Vector()).meshParallel(Edge(Vector(1, 3, 4), Vector(-1, 3, 4))) self.assertEqual(len(tris), 1) self.assertAlmostEqual(tris[0].area(), 5) # Closed edge0 = Edge( Vector(0, 0, 0), Vector(1, 0, 0), Vector(1, 1, 0), Vector(0, 1, 0)) edge1 = Edge( Vector(0, 0, 1), Vector(1, 0, 1), Vector(1, 1, 1), Vector(0, 1, 1)) tris = edge0.meshParallel(edge1, isClosed=True) segs = edge0.toSegments(True) + edge1.toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 8) self.assertAlmostEqual(area, 4) self.assertIsNone(findTriangulationProblems(tris, segs)) # Fanning at end edge0 = Edge( Vector(1, 1, 4), Vector(2, 1, 4)) edge1 = Edge( Vector(1, 0, 4), Vector(2, 0, 4), Vector(3, 1, 4), Vector(2, 2, 4), Vector(1, 2, 4)) tris = edge0.meshParallel(edge1) segs = Edge(edge0, reversed(edge1)).toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 5) self.assertAlmostEqual(area, 2.5) self.assertIsNone(findTriangulationProblems(tris, segs)) # Fanning in middle edge0 = Edge( Vector(0, 0, 0), Vector(8, 6, 0), Vector(16, 0, 0)) edge1 = Edge( Vector(0, 0, 6), Vector(4, 3, 6), Vector(8, 6, 6), Vector(12, 3, 6), Vector(16, 0, 6)) tris = edge0.meshParallel(edge1) segs = Edge(edge0, reversed(edge1)).toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 6) self.assertAlmostEqual(area, 120) self.assertIsNone(findTriangulationProblems(tris, segs)) normL = Vector(3, -4).normalized() normR = Vector(-3, -4).normalized() self.assertTrue(tris[0].normal().isClose(normL)) self.assertTrue(tris[1].normal().isClose(normL)) self.assertTrue(tris[2].normal().isClose(normL)) self.assertTrue(tris[3].normal().isClose(normR)) self.assertTrue(tris[4].normal().isClose(normR)) self.assertTrue(tris[5].normal().isClose(normR)) def test_contains2D(self): eps = 1e-9 self.assertTrue(EDGE_SQUARE.contains2D(Vector(eps, eps, 9))) self.assertTrue(EDGE_SQUARE.contains2D(Vector(0.5, eps, 9))) self.assertTrue(EDGE_SQUARE.contains2D(Vector(eps, 0.5, 9))) self.assertTrue(EDGE_SQUARE.contains2D(Vector(1-eps, 1-eps, 9))) self.assertFalse(EDGE_SQUARE.contains2D(Vector(-eps, -eps, 9))) self.assertFalse(EDGE_SQUARE.contains2D(Vector(0.5, -eps, 9))) self.assertFalse(EDGE_SQUARE.contains2D(Vector(-eps, 0.5, 9))) self.assertFalse(EDGE_SQUARE.contains2D(Vector(1+eps, 1+eps, 9))) def test_distance2D(self): self.assertEqual(EDGE_SQUARE.distance2D(Vector(0, 0, 9)), 0) self.assertEqual(EDGE_SQUARE.distance2D(Vector(0.5, 0.5, 9)), 0) self.assertEqual(EDGE_SQUARE.distance2D(Vector(1, 1, 9)), 0) self.assertEqual(EDGE_SQUARE.distance2D(Vector(-1, 0, 9)), 1) self.assertEqual(EDGE_SQUARE.distance2D(Vector(0, -1, 9)), 1) self.assertEqual(EDGE_SQUARE.distance2D(Vector(2, 1, 9)), 1) self.assertEqual(EDGE_SQUARE.distance2D(Vector(1, 2, 9)), 1) self.assertAlmostEqual(EDGE_SQUARE.distance2D(Vector(-1, -1, 9)), 2**0.5) self.assertAlmostEqual(EDGE_SQUARE.distance2D(Vector(2, 2, 9)), 2**0.5) ================================================ FILE: body/chrumm/geo/tests/test_face.py ================================================ import unittest from ..edge import Edge from ..face import Face from ..vector import Vector from .helper import findTriangulationProblems class FaceTest(unittest.TestCase): def test_triangulate_simple(self): # 9--------8 # | | # 11------10 .3 | # .-' | | # 1--2 2' | 7 # | | '. | | # 0 3 1 | | # | | | # 2--3 0 4 6 # | | .' # 0--1 4--------5 edge = Edge( Vector(10, 10), Vector(20, 10), Vector(20, 20), Vector(30, 20), Vector(30, 10), Vector(60, 10), Vector(70, 20), Vector(70, 40), Vector(70, 60), Vector(40, 60), Vector(40, 50), Vector(10, 50)) hole0 = Edge( Vector(20, 30), Vector(20, 40), Vector(30, 40), Vector(30, 30)) hole1 = Edge( Vector(50, 20), Vector(50, 30), Vector(40, 40), Vector(60, 50), Vector(60, 20)) # Without holes tris = Face(edge).triangulate() segs = edge.toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 10) self.assertAlmostEqual(area, 2550) self.assertIsNone(findTriangulationProblems(tris, segs)) # With holes tris = Face(edge, [hole0, hole1]).triangulate() segs = edge.toSegments(True) + hole0.toSegments(True) + hole1.toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 23) self.assertAlmostEqual(area, 2100) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_triangulate_vertical(self): edge = Edge( Vector(-10, 0, -10), Vector(10, 0, -10), Vector(10, 0, 10), Vector(-10, 0, 10)) tris = Face(edge).triangulate() segs = edge.toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 2) self.assertAlmostEqual(area, 400) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_triangulate_flipDelaunay(self): # 3 # \ Prefer diagonal # \ (0, 2) over (1, 3) # \ # 0 2 # '. .' # 1 edge = Edge( Vector(10, 20), Vector(20, 10), Vector(30, 20), Vector(20, 50)) tris = Face(edge).triangulate() segs = edge.toSegments(True) areas = sorted(t.area() for t in tris) self.assertEqual(len(tris), 2) self.assertAlmostEqual(areas[0], 100) self.assertAlmostEqual(areas[1], 300) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_triangulate_sliverEar(self): # 2--1 # .' | Avoid sliver # 4--3 | ear (2, 3, 5) # | | # 5 | # | # 0 edge = Edge( Vector(50, 10), Vector(50, 50), Vector(40, 50), Vector(29.999, 40), Vector(20, 40), Vector(20, 30)) tris = Face(edge).triangulate() segs = edge.toSegments(True) for tri in tris: self.assertGreater(tri.area(), 25) self.assertEqual(len(tris), 4) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_triangulate_alignedHoles(self): # 3--------------2 # | # 0--1 0--1 | # h2| h3| | # 3--2 3--2 | # | # 0--1 0--1 | # h0| h1| | # 3--2 3--2 | # | # 0--------------1 edge = Edge(Vector(10, 10), Vector(60, 10), Vector(60, 60), Vector(10, 60)) hole0 = Edge(Vector(20, 30), Vector(30, 30), Vector(30, 20), Vector(20, 20)) hole1 = Edge(Vector(40, 30), Vector(50, 30), Vector(50, 20), Vector(40, 20)) hole2 = Edge(Vector(20, 50), Vector(30, 50), Vector(30, 40), Vector(20, 40)) hole3 = Edge(Vector(40, 50), Vector(50, 50), Vector(50, 40), Vector(40, 40)) tris = Face(edge, [hole0, hole1, hole2, hole3]).triangulate() segs = ( edge.toSegments(True) + hole0.toSegments(True) + hole1.toSegments(True) + hole2.toSegments(True) + hole3.toSegments(True)) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 26) self.assertAlmostEqual(area, 2100) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_triangulate_holeBridgeOrder(self): # 2 # '. # '. # '. # 1 '. # |'. '. # 0 2 '. # 1 '. # |'. 1 '. # 0 2 |'. '. # 0 2 '. # 0--------------------1 edge = Edge(Vector(10, 10), Vector(80, 10), Vector(10, 80)) hole0 = Edge(Vector(20, 40), Vector(20, 50), Vector(30, 40)) hole1 = Edge(Vector(35, 25), Vector(35, 35), Vector(45, 25)) hole2 = Edge(Vector(50, 20), Vector(50, 30), Vector(60, 20)) tris = Face(edge, [hole0, hole1, hole2]).triangulate() segs = ( edge.toSegments(True) + hole0.toSegments(True) + hole1.toSegments(True) + hole2.toSegments(True)) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 16) self.assertAlmostEqual(area, 2300) self.assertIsNone(findTriangulationProblems(tris, segs)) def test_triangulate_collinearDiagonalHoles(self): # Data based on fixed bug # 3 # | # .3 | # 2' | # 0 .3 \ .0 2 # \ 2' 1' .-' # \ \ .0 .-' # \ 1' .-' # \ .-' # 1' edge = Edge( Vector(10, -83), Vector(28, -137), Vector(129, -114), Vector(131, -55)) hole0 = Edge( Vector(85.940795579, -103.214712478), Vector(72.494488685, -106.319037028), Vector(69.390164135, -92.872730134), Vector(82.836471029, -89.768405584)) hole1 = Edge( Vector(104.453826809, -98.940642445), Vector(91.007519915, -102.044966995), Vector(87.903195366, -88.598660101), Vector(101.349502260, -85.494335551)) tris = Face(edge, [hole0, hole1]).triangulate() segs = edge.toSegments(True) + hole0.toSegments(True) + hole1.toSegments(True) area = sum(t.area() for t in tris) self.assertEqual(len(tris), 14) self.assertAlmostEqual(area, 6094.62) self.assertIsNone(findTriangulationProblems(tris, segs)) ================================================ FILE: body/chrumm/geo/tests/test_line.py ================================================ import unittest from ..line import Line from ..matrix import Matrix from ..vector import Vector LINE = Line(Vector(1, 2, 3), Vector(1, 1, 1)) class LineTest(unittest.TestCase): def test_translated(self): line = LINE.translated(Vector()) self.assertEqual(line.pos, LINE.pos) self.assertEqual(line.dir, LINE.dir) line = LINE.translated(Vector(4, 5, 6)) self.assertEqual(line.pos, Vector(5, 7, 9)) self.assertEqual(line.dir, LINE.dir) def test_transformed(self): line = LINE.transformed(Matrix()) self.assertEqual(line.pos, LINE.pos) self.assertEqual(line.dir, LINE.dir) line = LINE.transformed(Matrix().mirroredX()) self.assertEqual(line.pos, LINE.pos.mirroredX()) self.assertEqual(line.dir, LINE.dir.mirroredX()) def test_distance(self): line = Line(Vector(1, 2, 3), Vector(1, 0, 0)) self.assertEqual(line.distance(Vector(1, 2, 3)), 0) self.assertEqual(line.distance(Vector(1, 1, 3)), 1) self.assertEqual(line.distance(Vector(1, 3, 3)), 1) self.assertEqual(line.distance(Vector(1, 2, 1)), 2) self.assertEqual(line.distance(Vector(1, 2, 5)), 2) def test_distance2D(self): self.assertEqual(LINE.distance2D(Vector(1, 2, 1)), 0) self.assertAlmostEqual(LINE.distance2D(Vector(3, 2, 1)), 2**0.5) self.assertAlmostEqual(LINE.distance2D(Vector(1, 4, 1)), -2**0.5) def test_intersect(self): with self.assertRaises(ZeroDivisionError): lineX = Line(Vector(), Vector(1, 0, 0)) lineX.intersect(lineX) lineX = Line(Vector(), Vector(1, 0, 0)) lineY = Line(Vector(), Vector(0, 1, 0)) self.assertEqual(lineX.intersect(lineY), Vector()) lineX = Line(Vector(0, 2, 2), Vector(1, 0, 1)) lineY = Line(Vector(1, 1, 3), Vector(0, 1, 0)) self.assertEqual(lineX.intersect(lineY), Vector(1, 2, 3)) # Skew lineX = Line(Vector(0, 0, 0), Vector(1, 0, 0)) lineY = Line(Vector(0, 0, 2), Vector(0, 1, 0)) self.assertEqual(lineX.intersect(lineY), Vector(0, 0, 1)) ================================================ FILE: body/chrumm/geo/tests/test_matrix.py ================================================ import unittest from math import pi as PI from ..matrix import Matrix from ..vector import Vector MAT_ZERO = Matrix((0,)*16) MAT_EVEN = Matrix(tuple(range(2, 33, 2))) MAT_ODD = Matrix(tuple(range(1, 32, 2))) class MatrixTest(unittest.TestCase): def test_fromAlignment(self): a = Vector(1, 9, 2).normalized() b = Vector(3, 8, 7).normalized() matrix = Matrix.fromAlignment(a, a) self.assertTrue(a.transformed(matrix).isClose(a)) matrix = Matrix.fromAlignment(a, b) self.assertTrue(a.transformed(matrix).isClose(b)) def test_add(self): expected = tuple(a+b for a, b in zip(MAT_ODD.data, MAT_EVEN.data)) self.assertEqual((MAT_ODD + MAT_ZERO).data, MAT_ODD.data) self.assertEqual((MAT_ODD + MAT_EVEN).data, expected) def test_sub(self): expected = (-1,)*16 self.assertEqual((MAT_ODD - MAT_ZERO).data, MAT_ODD.data) self.assertEqual((MAT_ODD - MAT_EVEN).data, expected) def test_mulScalar(self): expected = tuple(n*2 for n in MAT_ODD.data) self.assertEqual((MAT_ODD * 0).data, MAT_ZERO.data) self.assertEqual((MAT_ODD * 2).data, expected) def test_mulMatrix(self): oddMulEven = ( 304, 336, 368, 400, 752, 848, 944, 1040, 1200, 1360, 1520, 1680, 1648, 1872, 2096, 2320) self.assertEqual((Matrix() * Matrix()).data, Matrix().data) self.assertEqual((MAT_ODD * MAT_ZERO).data, MAT_ZERO.data) self.assertEqual((MAT_ODD * MAT_EVEN).data, oddMulEven) def test_mirroredX(self): matrix = Matrix().mirroredX() self.assertEqual(Vector(1, 2, 3).transformed(matrix), Vector(-1, 2, 3)) def test_mirroredY(self): matrix = Matrix().mirroredY() self.assertEqual(Vector(1, 2, 3).transformed(matrix), Vector(1, -2, 3)) def test_mirroredZ(self): matrix = Matrix().mirroredZ() self.assertEqual(Vector(1, 2, 3).transformed(matrix), Vector(1, 2, -3)) def test_rotatedX(self): matrix = Matrix().rotatedX(0) vector = Vector(1, 2, 3).transformed(matrix) self.assertEqual(vector, Vector(1, 2, 3)) matrix = Matrix().rotatedX(PI/2, Vector(1, 2, 3)) vector = Vector(1, 2, 3).transformed(matrix) self.assertAlmostEqual(vector.x, 1) self.assertAlmostEqual(vector.y, 2) self.assertAlmostEqual(vector.z, 3) vector = Vector(2, 3, 4).transformed(matrix) self.assertAlmostEqual(vector.x, 2) self.assertAlmostEqual(vector.y, 1) self.assertAlmostEqual(vector.z, 4) def test_rotatedY(self): matrix = Matrix().rotatedY(0) vector = Vector(1, 2, 3).transformed(matrix) self.assertEqual(vector, Vector(1, 2, 3)) matrix = Matrix().rotatedY(PI/2, Vector(1, 2, 3)) vector = Vector(1, 2, 3).transformed(matrix) self.assertAlmostEqual(vector.x, 1) self.assertAlmostEqual(vector.y, 2) self.assertAlmostEqual(vector.z, 3) vector = Vector(2, 3, 4).transformed(matrix) self.assertAlmostEqual(vector.x, 2) self.assertAlmostEqual(vector.y, 3) self.assertAlmostEqual(vector.z, 2) def test_rotatedZ(self): matrix = Matrix().rotatedZ(0) vector = Vector(1, 2, 3).transformed(matrix) self.assertEqual(vector, Vector(1, 2, 3)) matrix = Matrix().rotatedZ(PI/2, Vector(1, 2, 3)) vector = Vector(1, 2, 3).transformed(matrix) self.assertAlmostEqual(vector.x, 1) self.assertAlmostEqual(vector.y, 2) self.assertAlmostEqual(vector.z, 3) vector = Vector(2, 3, 4).transformed(matrix) self.assertAlmostEqual(vector.x, 0) self.assertAlmostEqual(vector.y, 3) self.assertAlmostEqual(vector.z, 4) def test_translated(self): matrix = Matrix().translated(Vector(1, 2, 3)) self.assertEqual(Vector(1, 2, 3).transformed(matrix), Vector(2, 4, 6)) ================================================ FILE: body/chrumm/geo/tests/test_plane.py ================================================ import unittest from ..line import Line from ..matrix import Matrix from ..plane import Plane from ..vector import Vector PLANE = Plane(Vector(1, 2, 3), Vector(1, 1, 1)) class PlaneTest(unittest.TestCase): def test_fromPoints(self): a = Vector(1, 2, 4) b = Vector(1, 2, 3) c = Vector(2, 3, 3) plane = Plane.fromPoints(a, b, c) self.assertEqual(plane.pos, b) self.assertEqual(plane.normal, Vector(1, -1, 0).normalized()) def test_fromLine2D(self): line = Line(Vector(1, 2, 3), Vector(1, 1, 1)) plane = Plane.fromLine2D(line) self.assertEqual(plane.pos, Vector(1, 2, 0)) self.assertTrue(plane.normal.isClose(Vector(-1, 1).normalized())) def test_translated(self): plane = PLANE.translated(Vector()) self.assertEqual(plane.pos, PLANE.pos) self.assertEqual(plane.normal, PLANE.normal) plane = PLANE.translated(Vector(4, 5, 6)) self.assertEqual(plane.pos, Vector(5, 7, 9)) self.assertEqual(plane.normal, PLANE.normal) def test_transformed(self): plane = PLANE.transformed(Matrix()) self.assertEqual(plane.pos, PLANE.pos) self.assertEqual(plane.normal, PLANE.normal) plane = PLANE.transformed(Matrix().mirroredX()) self.assertEqual(plane.pos, PLANE.pos.mirroredX()) self.assertEqual(plane.normal, PLANE.normal.mirroredX()) def test_distance(self): plane = Plane(Vector(1, 2, 3), Vector(0, 0, 1)) self.assertEqual(plane.distance(Vector(0, 0, 3)), 0) self.assertEqual(plane.distance(Vector(4, 5, 6)), 3) self.assertEqual(plane.distance(Vector(-4, -5, -6)), -9) def test_projectNormal(self): self.assertTrue(PLANE.projectNormal(Vector(0, 1, 2)).isClose(PLANE.pos)) self.assertTrue(PLANE.projectNormal(Vector(4, 5, 6)).isClose(PLANE.pos)) def test_projectX(self): plane = Plane(Vector(2, 3, 4), Vector(1, 0, 0)) self.assertEqual(plane.projectX(Vector(1, 1, 1)), Vector(2, 1, 1)) plane = Plane(Vector(4, 2, 2), Vector(1, 1, 1)) self.assertEqual(plane.projectX(Vector(1, 1, 1)), Vector(6, 1, 1)) plane = Plane(Vector(2, 3, 4), Vector(0, 1, 0)) with self.assertRaises(ZeroDivisionError): plane.projectX(Vector(1, 1, 1)) def test_projectY(self): plane = Plane(Vector(2, 3, 4), Vector(0, 1, 0)) self.assertEqual(plane.projectY(Vector(1, 1, 1)), Vector(1, 3, 1)) plane = Plane(Vector(2, 4, 2), Vector(1, 1, 1)) self.assertEqual(plane.projectY(Vector(1, 1, 1)), Vector(1, 6, 1)) plane = Plane(Vector(2, 3, 4), Vector(0, 0, 1)) with self.assertRaises(ZeroDivisionError): plane.projectY(Vector(1, 1, 1)) def test_projectZ(self): plane = Plane(Vector(2, 3, 4), Vector(0, 0, 1)) self.assertEqual(plane.projectZ(Vector(1, 1, 1)), Vector(1, 1, 4)) plane = Plane(Vector(2, 2, 4), Vector(1, 1, 1)) self.assertEqual(plane.projectZ(Vector(1, 1, 1)), Vector(1, 1, 6)) plane = Plane(Vector(2, 3, 4), Vector(1, 0, 0)) with self.assertRaises(ZeroDivisionError): plane.projectZ(Vector(1, 1, 1)) def test_intersectPlanes(self): planeX = Plane(Vector(1, 0, 0), Vector(1, 0, 0)) planeY = Plane(Vector(0, 2, 0), Vector(0, 1, 0)) planeZ = Plane(Vector(0, 0, 3), Vector(0, 0, 1)) self.assertEqual(planeX.intersect(planeY, planeZ), Vector(1, 2, 3)) with self.assertRaises(ZeroDivisionError): planeX.intersect(planeX, planeY) def test_intersectLine(self): line = Line(Vector(2, 3, 4), Vector(1, 1, 1)) self.assertEqual(PLANE.intersect(line), Vector(1, 2, 3)) line = Line(Vector(2, 3, 4), Vector(1, -1, 0)) with self.assertRaises(ZeroDivisionError): PLANE.intersect(line) ================================================ FILE: body/chrumm/geo/tests/test_segment.py ================================================ import unittest from ..segment import Segment from ..vector import Vector SEG_ZERO = Segment(Vector(0, 0, 0), Vector(0, 0, 0)) SEG_DIAG = Segment(Vector(1, 2, 3), Vector(3, 4, 5)) class SegmentTest(unittest.TestCase): def test_magnitude(self): self.assertEqual(SEG_ZERO.magnitude(), 0) self.assertAlmostEqual(SEG_DIAG.magnitude(), 12**0.5) def test_offset2D(self): seg = Segment(Vector(1, 2, 3), Vector(1, 3, 4)) off = seg.offset2D(0) self.assertEqual(off.a, Vector(1, 2, 0)) self.assertEqual(off.b, Vector(1, 3, 0)) off = seg.offset2D(2) self.assertEqual(off.a, Vector(3, 2, 0)) self.assertEqual(off.b, Vector(3, 3, 0)) off = seg.offset2D(-2) self.assertEqual(off.a, Vector(-1, 2, 0)) self.assertEqual(off.b, Vector(-1, 3, 0)) with self.assertRaises(ZeroDivisionError): SEG_ZERO.offset2D(0) def test_magnitude2D(self): self.assertEqual(SEG_ZERO.magnitude2D(), 0) seg = Segment(Vector(1, 2, 3), Vector(1, 2, 5)) self.assertEqual(seg.magnitude2D(), 0) seg = Segment(Vector(1, 2, 3), Vector(2, 3, 5)) self.assertAlmostEqual(seg.magnitude2D(), 2**0.5) seg = Segment(Vector(2, 3, 5), Vector(1, 2, 3)) self.assertAlmostEqual(seg.magnitude2D(), 2**0.5) def test_distance2D(self): self.assertEqual(SEG_ZERO.distance2D(Vector()), 0) self.assertAlmostEqual(SEG_ZERO.distance2D(Vector(1, 1, 1)), 2**0.5) # On segment except z self.assertEqual(SEG_DIAG.distance2D(Vector(1, 2, 1)), 0) self.assertEqual(SEG_DIAG.distance2D(Vector(2, 3, 1)), 0) self.assertEqual(SEG_DIAG.distance2D(Vector(3, 4, 1)), 0) # On segment self.assertEqual(SEG_DIAG.distance2D(Vector(1, 2, 3)), 0) self.assertEqual(SEG_DIAG.distance2D(Vector(2, 3, 4)), 0) self.assertEqual(SEG_DIAG.distance2D(Vector(3, 4, 5)), 0) # Extended self.assertEqual(SEG_DIAG.distance2D(Vector(0, 2, 3)), 1) self.assertEqual(SEG_DIAG.distance2D(Vector(1, 1, 3)), 1) self.assertEqual(SEG_DIAG.distance2D(Vector(4, 4, 5)), 1) self.assertEqual(SEG_DIAG.distance2D(Vector(3, 5, 5)), 1) self.assertAlmostEqual(SEG_DIAG.distance2D(Vector(0, 1, 2)), 2**0.5) self.assertAlmostEqual(SEG_DIAG.distance2D(Vector(4, 5, 6)), 2**0.5) def test_intersect2D(self): self.assertEqual(SEG_ZERO.intersect2D(SEG_ZERO), None) self.assertEqual(SEG_DIAG.intersect2D(SEG_ZERO), None) # Intersecting seg = Segment(Vector(3, 2, 1), Vector(1, 4, 3)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=0), Vector(2, 3, 0)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=1), Vector(2, 3, 0)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=2), Vector(2, 3, 0)) # Touching ends seg = Segment(Vector(3, 4, 5), Vector(5, 2, 1)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=0), Vector(3, 4, 0)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=1), Vector(3, 4, 0)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=2), Vector(3, 4, 0)) # Separate seg = Segment(Vector(3, 2, 1), Vector(5, 0, 4)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=0), None) self.assertEqual(seg.intersect2D(SEG_DIAG, asLine=1), None) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=1), Vector(2, 3, 0)) self.assertEqual(SEG_DIAG.intersect2D(seg, asLine=2), Vector(2, 3, 0)) ================================================ FILE: body/chrumm/geo/tests/test_triangle.py ================================================ import unittest from ..matrix import Matrix from ..triangle import Triangle from ..vector import Vector TRI_ZERO = Triangle(Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0)) TRI_AXIS = Triangle(Vector(1, 0, 0), Vector(0, 1, 0), Vector(0, 0, 1)) TRI_DIAG = Triangle(Vector(1, 2, 3), Vector(6, 5, 4), Vector(7, 8, 9)) class TriangleTest(unittest.TestCase): def test_bool(self): tri = Triangle( Vector(1, 0, 0), Vector(2, 0, 0), Vector(3, 0, 0)) self.assertFalse(tri) self.assertFalse(TRI_ZERO) self.assertTrue(TRI_AXIS) def test_mirroredX(self): tri = TRI_DIAG.mirroredX() self.assertEqual(tri.a, Vector(-1, 2, 3)) self.assertEqual(tri.b, Vector(-6, 5, 4)) self.assertEqual(tri.c, Vector(-7, 8, 9)) def test_mirroredY(self): tri = TRI_DIAG.mirroredY() self.assertEqual(tri.a, Vector(1, -2, 3)) self.assertEqual(tri.b, Vector(6, -5, 4)) self.assertEqual(tri.c, Vector(7, -8, 9)) def test_mirroredZ(self): tri = TRI_DIAG.mirroredZ() self.assertEqual(tri.a, Vector(1, 2, -3)) self.assertEqual(tri.b, Vector(6, 5, -4)) self.assertEqual(tri.c, Vector(7, 8, -9)) def test_reversed(self): tri = TRI_AXIS.reversed() self.assertEqual(tri.c, TRI_AXIS.a) self.assertEqual(tri.b, TRI_AXIS.b) self.assertEqual(tri.a, TRI_AXIS.c) def test_translated(self): tri = TRI_DIAG.translated(Vector()) self.assertEqual(tri.a, TRI_DIAG.a) self.assertEqual(tri.b, TRI_DIAG.b) self.assertEqual(tri.c, TRI_DIAG.c) tri = TRI_DIAG.translated(Vector(10, 20, 30)) self.assertEqual(tri.a, Vector(11, 22, 33)) self.assertEqual(tri.b, Vector(16, 25, 34)) self.assertEqual(tri.c, Vector(17, 28, 39)) def test_transformed(self): matrix = Matrix().translated(Vector(10, 20, 30)) tri = TRI_DIAG.transformed(matrix) self.assertEqual(tri.a, Vector(11, 22, 33)) self.assertEqual(tri.b, Vector(16, 25, 34)) self.assertEqual(tri.c, Vector(17, 28, 39)) def test_area(self): tri = Triangle( Vector(0, 0, 0), Vector(3, 0, 0), Vector(0, 4, 0)) self.assertEqual(tri.area(), 6) self.assertEqual(TRI_ZERO.area(), 0) self.assertAlmostEqual(TRI_AXIS.area(), 3**0.5 / 2) def test_circumradius(self): self.assertEqual(TRI_ZERO.circumradius(), 0) self.assertAlmostEqual(TRI_AXIS.circumradius(), 2**0.5 / 3**0.5) self.assertAlmostEqual(TRI_DIAG.circumradius(), 27**0.5 * 35 / 864**0.5) def test_normal(self): with self.assertRaises(ZeroDivisionError): TRI_ZERO.normal() tri = Triangle( Vector(0, 0, 0), Vector(0, 2, 0), Vector(0, 0, 2)) self.assertEqual(tri.normal(), Vector(1, 0, 0)) tri = Triangle( Vector(0, 0, 0), Vector(0, 0, 2), Vector(0, 2, 0)) self.assertEqual(tri.normal(), Vector(-1, 0, 0)) tri = Triangle( Vector(0, 0, 0), Vector(0, 0, 3), Vector(3, 0, 0)) self.assertEqual(tri.normal(), Vector(0, 1, 0)) tri = Triangle( Vector(0, 0, 0), Vector(3, 0, 0), Vector(0, 0, 3)) self.assertEqual(tri.normal(), Vector(0, -1, 0)) tri = Triangle( Vector(0, 0, 0), Vector(4, 0, 0), Vector(0, 4, 0)) self.assertEqual(tri.normal(), Vector(0, 0, 1)) tri = Triangle( Vector(0, 0, 0), Vector(0, 4, 0), Vector(4, 0, 0)) self.assertEqual(tri.normal(), Vector(0, 0, -1)) ================================================ FILE: body/chrumm/geo/tests/test_vector.py ================================================ import unittest from math import pi as PI from ..matrix import Matrix from ..vector import Vector # Based on considerations in chrumm.geo.epsilon EPS_NONZERO = 1e-5 EPS_ZERO = 1e-7 MAT_ZERO = Matrix((0,)*16) MAT_DIAG = Matrix(tuple(range(1, 17))) class VectorTest(unittest.TestCase): def test_init(self): self.assertEqual(Vector(), Vector(0, 0, 0)) self.assertEqual(Vector(1), Vector(1, 0, 0)) self.assertEqual(Vector(1, 2), Vector(1, 2, 0)) self.assertEqual(Vector(1, 2, 3), Vector(1, 2, 3)) def test_fromSurfaceNormal(self): with self.assertRaises(ZeroDivisionError): Vector.fromSurfaceNormal([]) with self.assertRaises(ZeroDivisionError): Vector.fromSurfaceNormal([Vector()]) with self.assertRaises(ZeroDivisionError): Vector.fromSurfaceNormal([Vector(), Vector(1, 2, 3)]) with self.assertRaises(ZeroDivisionError): Vector.fromSurfaceNormal([Vector(), Vector(1, 1, 1), Vector(2, 2, 2)]) vectors = [Vector(0, 0, 0), Vector(1, 0, 0), Vector(0, 1, 0)] self.assertEqual(Vector.fromSurfaceNormal(vectors), Vector(0, 0, 1)) vectors = [Vector(0, 0, 0), Vector(0, 1, 0), Vector(1, 0, 0)] self.assertEqual(Vector.fromSurfaceNormal(vectors), Vector(0, 0, -1)) vectors = [Vector(1, 2, 3), Vector(2, 3, 4), Vector(1, 2, 5)] normal = Vector.fromSurfaceNormal(vectors) self.assertAlmostEqual(normal.x, 0.5**0.5) self.assertAlmostEqual(normal.y, -0.5**0.5) self.assertEqual(normal.z, 0) vectors = [Vector(1, 2, 3), Vector(1, 2, 5), Vector(2, 3, 4)] normal = Vector.fromSurfaceNormal(vectors) self.assertAlmostEqual(normal.x, -0.5**0.5) self.assertAlmostEqual(normal.y, 0.5**0.5) self.assertEqual(normal.z, 0) def test_eq(self): self.assertTrue(Vector(1, 2, 3) == Vector(1, 2, 3)) self.assertFalse(Vector(1, 1, 1) == Vector(0, 1, 1)) self.assertFalse(Vector(1, 1, 1) == Vector(1, 0, 1)) self.assertFalse(Vector(1, 1, 1) == Vector(1, 1, 0)) def test_lt(self): self.assertTrue(Vector(1, 3, 3) < Vector(2, 2, 2)) self.assertTrue(Vector(1, 1, 3) < Vector(1, 2, 2)) self.assertTrue(Vector(1, 1, 1) < Vector(1, 1, 2)) self.assertFalse(Vector(2, 2, 2) < Vector(1, 3, 3)) self.assertFalse(Vector(1, 2, 2) < Vector(1, 1, 3)) self.assertFalse(Vector(1, 1, 2) < Vector(1, 1, 1)) def test_neg(self): self.assertEqual(-Vector(), Vector()) self.assertEqual(-Vector(1, 2, 3), Vector(-1, -2, -3)) def test_add(self): self.assertEqual(Vector(1, 2, 3) + Vector(), Vector(1, 2, 3)) self.assertEqual(Vector(1, 2, 3) + Vector(4, 5, 6), Vector(5, 7, 9)) def test_sub(self): self.assertEqual(Vector(1, 2, 3) - Vector(), Vector(1, 2, 3)) self.assertEqual(Vector(1, 2, 3) - Vector(4, 5, 6), Vector(-3, -3, -3)) def test_mul(self): self.assertEqual(Vector(1, 2, 3) * 0, Vector(0, 0, 0)) self.assertEqual(Vector(1, 2, 3) * 0.5, Vector(0.5, 1, 1.5)) self.assertEqual(Vector(1, 2, 3) * 2, Vector(2, 4, 6)) self.assertEqual(Vector(1, 2, 3) * -2, Vector(-2, -4, -6)) def test_truediv(self): with self.assertRaises(ZeroDivisionError): Vector(1, 2, 3) / 0 self.assertEqual(Vector(1, 2, 3) / 0.5, Vector(2, 4, 6)) self.assertEqual(Vector(1, 2, 3) / 1, Vector(1, 2, 3)) self.assertEqual(Vector(1, 2, 3) / 2, Vector(0.5, 1, 1.5)) self.assertEqual(Vector(1, 2, 3) / -2, Vector(-0.5, -1, -1.5)) def test_transformed(self): self.assertEqual(Vector(1, 2, 3).transformed(Matrix()), Vector(1, 2, 3)) self.assertEqual(Vector(1, 2, 3).transformed(MAT_ZERO), Vector()) self.assertEqual(Vector(1, 2, 3).transformed(MAT_DIAG), Vector(51, 58, 65)) def test_transformedNormal(self): with self.assertRaises(ZeroDivisionError): Vector(1, 2, 3).transformedNormal(MAT_ZERO) vector = Vector(2, 3, 6).transformedNormal(Matrix()) self.assertAlmostEqual(vector.x, 2 / 7) self.assertAlmostEqual(vector.y, 3 / 7) self.assertAlmostEqual(vector.z, 6 / 7) vector = Vector(1, 2, 3).transformedNormal(MAT_DIAG) self.assertAlmostEqual(vector.x, 38 / 5880**0.5) self.assertAlmostEqual(vector.y, 44 / 5880**0.5) self.assertAlmostEqual(vector.z, 50 / 5880**0.5) def test_snapped(self): self.assertEqual(Vector().snapped(), Vector()) vector = Vector(EPS_NONZERO, -EPS_NONZERO, EPS_NONZERO) self.assertEqual(vector.snapped(), vector) vector = Vector(EPS_ZERO, -EPS_ZERO, EPS_ZERO) self.assertEqual(vector.snapped(), Vector(0, 0, 0)) def test_normalized(self): with self.assertRaises(ZeroDivisionError): Vector().normalized() self.assertEqual(Vector(2, 3, 6).normalized(), Vector(2/7, 3/7, 6/7)) def test_cross(self): self.assertEqual(Vector().cross(Vector()), Vector()) self.assertEqual(Vector(1, 2, 3).cross(Vector()), Vector()) self.assertEqual(Vector(1, 2, 3).cross(Vector(4, 5, 6)), Vector(-3, 6, -3)) def test_dot(self): self.assertEqual(Vector().dot(Vector()), 0) self.assertEqual(Vector(1, 2, 3).dot(Vector()), 0) self.assertEqual(Vector(1, 2, 3).dot(Vector(4, 5, 6)), 32) def test_magnitude(self): self.assertEqual(Vector().magnitude(), 0) self.assertEqual(Vector(2, 3, 6).magnitude(), 7) def test_magSquared(self): self.assertEqual(Vector().magSquared(), 0) self.assertEqual(Vector(2, 3, 6).magSquared(), 49) def test_angleBetween(self): with self.assertRaises(ZeroDivisionError): Vector().angleBetween(Vector()) start = Vector(1, 1, 0) self.assertAlmostEqual(start.angleBetween(start), 0) self.assertAlmostEqual(start.angleBetween(Vector(1, 1, 2**0.5)), PI*0.25) self.assertAlmostEqual(start.angleBetween(Vector(0, 0, 1)), PI*0.5) self.assertAlmostEqual(start.angleBetween(Vector(-1, -1, 2**0.5)), PI*0.75) self.assertAlmostEqual(start.angleBetween(Vector(-1, -1, 0)), PI) self.assertAlmostEqual(start.angleBetween(Vector(-1, -1, -2**0.5)), PI*0.75) self.assertAlmostEqual(start.angleBetween(Vector(0, 0, -1)), PI*0.5) self.assertAlmostEqual(start.angleBetween(Vector(1, 1, -2**0.5)), PI*0.25) def test_isClose(self): self.assertTrue(Vector().isClose(Vector())) eps = EPS_ZERO self.assertTrue(Vector(1, 20, 300).isClose(Vector(1+eps, 20, 300))) self.assertTrue(Vector(1, 20, 300).isClose(Vector(1, 20-eps, 300))) self.assertTrue(Vector(1, 20, 300).isClose(Vector(1, 20, 300+eps))) self.assertTrue(Vector(1, 20, 300).isClose(Vector(1-eps, 20+eps, 300-eps))) eps = EPS_NONZERO self.assertFalse(Vector(1, 20, 300).isClose(Vector(1+eps, 20, 300))) self.assertFalse(Vector(1, 20, 300).isClose(Vector(1, 20-eps, 300))) self.assertFalse(Vector(1, 20, 300).isClose(Vector(1, 20, 300+eps))) self.assertFalse(Vector(1, 20, 300).isClose(Vector(1-eps, 20+eps, 300-eps))) def test_ortho2D(self): self.assertEqual(Vector().ortho2D(), Vector()) self.assertEqual(Vector(1, 2, 3).ortho2D(), Vector(-2, 1, 0)) def test_normalized2D(self): with self.assertRaises(ZeroDivisionError): Vector().normalized2D() self.assertEqual(Vector(3, 4, 6).normalized2D(), Vector(3/5, 4/5, 0)) def test_magnitude2D(self): self.assertEqual(Vector().magnitude2D(), 0) self.assertEqual(Vector(3, 4, 6).magnitude2D(), 5) def test_magSquared2D(self): self.assertEqual(Vector().magSquared2D(), 0) self.assertEqual(Vector(3, 4, 6).magSquared2D(), 25) def test_angle2D(self): self.assertAlmostEqual(Vector(1, 0, 0).angle2D(), 0) self.assertAlmostEqual(Vector(1, 1, 1).angle2D(), PI*0.25) self.assertAlmostEqual(Vector(0, 2, 2).angle2D(), PI*0.5) self.assertAlmostEqual(Vector(-3, 3, 3).angle2D(), PI*0.75) self.assertAlmostEqual(Vector(-4, 0, 4).angle2D(), PI) self.assertAlmostEqual(Vector(-5, -5, 5).angle2D(), -PI*0.75) self.assertAlmostEqual(Vector(0, -6, 6).angle2D(), -PI*0.5) self.assertAlmostEqual(Vector(7, -7, 7).angle2D(), -PI*0.25) ================================================ FILE: body/chrumm/geo/triangle.py ================================================ from .epsilon import isZero class Triangle: __slots__ = "a", "b", "c" def __init__(self, a, b, c): self.a = a self.b = b self.c = c def __bool__(self): return not isZero(self.area()) def mirroredX(self): return Triangle( self.a.mirroredX(), self.b.mirroredX(), self.c.mirroredX()) def mirroredY(self): return Triangle( self.a.mirroredY(), self.b.mirroredY(), self.c.mirroredY()) def mirroredZ(self): return Triangle( self.a.mirroredZ(), self.b.mirroredZ(), self.c.mirroredZ()) def reversed(self): return Triangle(self.c, self.b, self.a) def translated(self, vector): return Triangle( self.a + vector, self.b + vector, self.c + vector) def transformed(self, matrix): return Triangle( self.a.transformed(matrix), self.b.transformed(matrix), self.c.transformed(matrix)) def area(self): # https://en.wikipedia.org/wiki/Triangle#Using_vectors ab = self.b - self.a ac = self.c - self.a return ab.cross(ac).magnitude() / 2 def circumradius(self): # https://en.wikipedia.org/wiki/Circumcenter#Higher_dimensions ca = self.a - self.c cb = self.b - self.c numer = ca.magnitude() * cb.magnitude() * (ca - cb).magnitude() denom = 2 * ca.cross(cb).magnitude() return 0 if isZero(denom) else numer/denom def normal(self): ab = self.b - self.a ac = self.c - self.a return ab.cross(ac).normalized() ================================================ FILE: body/chrumm/geo/vector.py ================================================ import math from .epsilon import isZero class Vector: __slots__ = "x", "y", "z" def __init__(self, x=0, y=0, z=0): self.x = x self.y = y self.z = z @staticmethod def fromSurfaceNormal(vectors): # Calculating a Surface Normal - Newell's Method # https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal x, y, z = 0, 0, 0 for i in range(len(vectors)): p = vectors[i] q = vectors[(i+1) % len(vectors)] x += (p.y - q.y) * (p.z + q.z) y += (p.z - q.z) * (p.x + q.x) z += (p.x - q.x) * (p.y + q.y) return Vector(x, y, z).normalized() def __repr__(self): x = f"{self.x:.6f}".rstrip("0").rstrip(".") y = f"{self.y:.6f}".rstrip("0").rstrip(".") z = f"{self.z:.6f}".rstrip("0").rstrip(".") return f"Vector({x}, {y}, {z})" def __eq__(self, other): return self.x == other.x and self.y == other.y and self.z == other.z def __lt__(self, other): if self.x != other.x: return self.x < other.x if self.y != other.y: return self.y < other.y return self.z < other.z def __neg__(self): return Vector(-self.x, -self.y, -self.z) def __add__(self, other): return Vector(self.x + other.x, self.y + other.y, self.z + other.z) def __sub__(self, other): return Vector(self.x - other.x, self.y - other.y, self.z - other.z) def __mul__(self, scalar): return Vector(self.x*scalar, self.y*scalar, self.z*scalar) def __truediv__(self, scalar): return Vector(self.x/scalar, self.y/scalar, self.z/scalar) @property def xy(self): return Vector(self.x, self.y, 0) @property def xz(self): return Vector(self.x, 0, self.z) @property def yz(self): return Vector(0, self.y, self.z) def mirroredX(self): return Vector(-self.x, self.y, self.z) def mirroredY(self): return Vector(self.x, -self.y, self.z) def mirroredZ(self): return Vector(self.x, self.y, -self.z) def translated(self, vector): return self + vector def transformed(self, matrix): m = matrix.data return Vector( self.x*m[0] + self.y*m[4] + self.z*m[8] + m[12], self.x*m[1] + self.y*m[5] + self.z*m[9] + m[13], self.x*m[2] + self.y*m[6] + self.z*m[10] + m[14]) def transformedNormal(self, matrix): m = matrix.data return Vector( self.x*m[0] + self.y*m[4] + self.z*m[8], self.x*m[1] + self.y*m[5] + self.z*m[9], self.x*m[2] + self.y*m[6] + self.z*m[10]).normalized() def snapped(self): """Snap almost-zero coordinates to positive zero exactly.""" return Vector( 0 if isZero(self.x) else self.x, 0 if isZero(self.y) else self.y, 0 if isZero(self.z) else self.z) def normalized(self): return self / self.magnitude() def cross(self, other): return Vector( self.y*other.z - self.z*other.y, self.z*other.x - self.x*other.z, self.x*other.y - self.y*other.x) def dot(self, other): return self.x*other.x + self.y*other.y + self.z*other.z def magnitude(self): return (self.x*self.x + self.y*self.y + self.z*self.z)**0.5 def magSquared(self): return self.x*self.x + self.y*self.y + self.z*self.z def angleBetween(self, other): """Return angle difference to other vector, between 0 and pi.""" cos = self.normalized().dot(other.normalized()) return math.acos(max(-1, min(cos, 1))) def isClose(self, other): return ( isZero(self.x - other.x) and isZero(self.y - other.y) and isZero(self.z - other.z)) def ortho2D(self): """Return counterclockwise orthogonal vector.""" return Vector(-self.y, self.x) def normalized2D(self): # OPTIMIZED: Inline calculations to avoid function overhead magnitude = (self.x*self.x + self.y*self.y)**0.5 return Vector(self.x/magnitude, self.y/magnitude) def magnitude2D(self): return (self.x*self.x + self.y*self.y)**0.5 def magSquared2D(self): return self.x*self.x + self.y*self.y def angle2D(self): """Return angle difference to x axis, between -pi and pi.""" return math.atan2(self.y, self.x) ================================================ FILE: body/chrumm/make.py ================================================ import logging import multiprocessing from chrumm import __version__ from chrumm import cfg from chrumm import pcb from chrumm import stl from chrumm.part import Body from chrumm.part import Floor from chrumm.part import Knob from chrumm.part import Palm from chrumm.part import Plan from chrumm.part import Support log = logging.getLogger(__name__) def make(jsonStrings, threads, isKnobOnly): """Generate files, based on JSON configuration strings. Args: jsonStrings (list[str]): List of JSON strings. threads (int): Number of threads to use. isKnobOnly (bool): Generate the encoder knob only. Returns: dict[str, bytes|str]: A dict of file names and data. """ files = {} # Parse parameters log.info("Parsing configuration parameters...") cfg._init(jsonStrings) if cfg.maker != "chrumm " + __version__: log.warning("The parameters are intended for %s", cfg.maker) if hasattr(cfg.quality, "bumpscosity"): responses = { 0: "Where did all of the bumpscosity go?", 1: "Only a single bumpscosit. It will have to do.", 12: "Just a light breeze of bumpscosity, not bad.", 50: "Ah, quite a pleasant amount of bumpscosity.", 76: "The bumpscosity is really getting up there, isn't it?", 100: "Who turned up the bumpscosity so high?", 1000: "A thousand?! How can you stand this much bumpscosity?"} if cfg.quality.bumpscosity in responses: log.debug(responses[cfg.quality.bumpscosity]) # Generate knob if cfg.knob: files["rotary-knob.stl"] = stl.toBytes(Knob().triangles) if isKnobOnly: return files # Generate parts log.info("Constructing reference points...") planR = Plan("right") planL = Plan("left") log.info("Constructing keyboard parts...") parts = {} parts["body-right"] = Body(planR) parts["body-left"] = Body(planL) parts["floor-right"] = Floor(planR, parts["body-right"]) parts["floor-left"] = Floor(planL, parts["body-left"]) if cfg.palm: parts["palm-right"] = Palm(planR) parts["palm-left"] = Palm(planL) if cfg.support: parts["support-right"] = Support(planR) parts["support-left"] = Support(planL) if cfg.pcb: files["pcb-positions.kicad_mod"] = pcb.toKiCadFootprint(planR, planL) # Triangulate faces # The face objects are accumulated in a flat list, so that # they can be passed to Pool and triangulated in parallel. faces = [face for part in parts.values() for face in part.faces] if threads <= 1: log.info("Triangulating %i faces without multithreading...", len(faces)) faceTriangles = [face.triangulate() for face in faces] else: log.info("Triangulating %i faces with %i threads...", len(faces), threads) with multiprocessing.Pool(processes=threads) as pool: faceTriangles = pool.map(type(faces[0]).triangulate, faces) # Combine triangles triangles = {} for name, part in parts.items(): triangles[name] = list(part.triangles) for face in part.faces: triangles[name].extend(faceTriangles.pop(0)) if "left" in name: triangles[name] = [t.mirroredX().reversed() for t in triangles[name]] # Generate files for name in parts.keys(): files[name + ".stl"] = stl.toBytes(triangles[name]) return files ================================================ FILE: body/chrumm/part/__init__.py ================================================ from .body import Body from .floor import Floor from .knob import Knob from .palm import Palm from .plan import Plan from .support import Support __all__ = [ "Body", "Floor", "Knob", "Palm", "Plan", "Support"] ================================================ FILE: body/chrumm/part/arc.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Vector def arc2D(radius, startAngle=0, spanAngle=math.tau, center=Vector()): if radius < 1e-6: return Edge(center) # https://en.wikipedia.org/wiki/Sagitta_(geometry) maxChordHeight = cfg.quality.maxChordHeight maxHeightAngle = math.acos(1 - maxChordHeight/radius) * 2 maxChordAngle = min(cfg.quality.maxChordAngle, maxHeightAngle) spanAngle = max(-math.tau, min(spanAngle, math.tau)) chordCount = math.ceil(abs(spanAngle) / maxChordAngle) chordAngle = spanAngle / chordCount pointCount = chordCount # Avoid duplicate start and end points of a full circle if abs(abs(spanAngle) - math.tau) > 1e-6: pointCount += 1 edge = Edge() for i in range(pointCount): angle = startAngle + i*chordAngle x = center.x + radius*math.cos(angle) y = center.y + radius*math.sin(angle) edge.add(Vector(x, y)) return edge def cornerArc2D(radius, a, b, c): # a # / # b( # \ # c aDir = (a - b).normalized2D() cDir = (c - b).normalized2D() sign = 1 if cDir.cross(aDir).z > 0 else -1 cornerAngle = math.acos(aDir.dot(cDir)) arcAngle = (math.pi - cornerAngle)*sign startAngle = (aDir.ortho2D()*sign).angle2D() centerDist = radius / math.sin(cornerAngle/2) centerDir = (aDir + cDir).normalized2D() centerPos = b.xy + centerDir*centerDist return arc2D(radius, startAngle, arcAngle, centerPos) def uprightHole2D(radius): """Return hole sketch intended for upright FFF 3D printing.""" # _____ <- Clean top bridge # / \ <- Straight tangent # : + : <- Circular bottom # : : # '-...-' if cfg.support: angle = cfg.support.holeTaperAngle if angle > 0: arc = arc2D(radius, math.tau/4 + angle, math.tau - 2*angle) top = Vector(-radius * math.sin(angle/2) / math.cos(angle/2), radius) return Edge(top, arc, top.mirroredX()) return arc2D(radius, 0, math.tau) def uprightHalfHole2D(radius): """Return upper hole sketch intended for upright FFF 3D printing.""" # _____ <- Clean top bridge # / \ <- Straight tangent # : + : <- Circular sides if cfg.support: angle = cfg.support.holeTaperAngle if angle > 0: arc = arc2D(radius, 0, math.tau/8) arc.add(Vector(radius * math.sin(angle/2) / math.cos(angle/2), radius)) return Edge(arc, arc.mirroredX().reversed()) return arc2D(radius, 0, math.pi) ================================================ FILE: body/chrumm/part/body.py ================================================ import logging from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Line from chrumm.geo import Plane from chrumm.geo import Vector from chrumm.geo import Triangle from .arc import cornerArc2D from .bracket import CornerBracket from .bracket import RoofBracket from .cable import Cable from .encoder import Encoder log = logging.getLogger(__name__) class Body: def __init__(self, plan): self.outlineI = Edge() self.outlineO = Edge() self.bracketF = None self.bracketB = None self.faces = [] self.triangles = [] wallThickness = cfg.body.wallThickness innerChamfer = cfg.body.innerChamfer outerChamfer = cfg.body.outerChamfer outerCornerRadius = cfg.body.outerCornerRadius innerCornerRadius = outerCornerRadius - wallThickness floorLipHeight = cfg.floor.lipHeight + cfg.floor.lipMargin if innerChamfer >= innerCornerRadius: raise ValueError(f"body.innerChamfer must be less than: {innerCornerRadius:.3f}") if innerChamfer >= cfg.boss.innerWallFillet: raise ValueError("body.innerChamfer must be less than boss.innerWallFillet.") if outerChamfer >= outerCornerRadius: raise ValueError("body.outerChamfer must be less than body.outerCornerRadius.") # Reference points alnumILB = plan.points.alnumILB alnumIRB = plan.points.alnumIRB pinkyIRB = plan.points.pinkyIRB pinkyIRF = plan.points.pinkyIRF thumbILF = plan.points.thumbILF thumbILB = plan.points.thumbILB thumbIRF = plan.points.thumbIRF alnumILF = plan.points.alnumILF alnumIRF = plan.points.alnumIRF ridgeIRF = plan.points.ridgeIRF alnumOLB = plan.points.alnumOLB alnumORB = plan.points.alnumORB pinkyORB = plan.points.pinkyORB pinkyORF = plan.points.pinkyORF thumbOLF = plan.points.thumbOLF thumbORF = plan.points.thumbORF thumbOLB = plan.points.thumbOLB alnumOLF = plan.points.alnumOLF alnumORF = plan.points.alnumORF ridgeORF = plan.points.ridgeORF bossLB = plan.bosses.alnumB bossRB = plan.bosses.pinkyB bossRF = plan.bosses.pinkyF bossLF = plan.bosses.thumbF alnumNorm = plan.planes.alnumOT.normal pinkyNorm = plan.planes.pinkyOT.normal thumbNorm = plan.planes.thumbOT.normal alnumKeys = plan.layout.alnum(plan.side) thumbKeys = plan.layout.thumb(plan.side) pinkyKeys = plan.layout.pinky(plan.side) # Rounded corner edges cornerILFG = cornerArc2D(innerCornerRadius, thumbIRF, thumbILF, thumbILF.yz) cornerIRFG = cornerArc2D(innerCornerRadius, pinkyIRB, pinkyIRF, thumbILF) cornerIRBG = cornerArc2D(innerCornerRadius, alnumIRB, pinkyIRB, pinkyIRF) cornerOLFG = cornerArc2D(outerCornerRadius, thumbOLF.yz, thumbOLF, thumbORF) cornerORFG = cornerArc2D(outerCornerRadius, thumbOLF, pinkyORF, pinkyORB) cornerORBG = cornerArc2D(outerCornerRadius, pinkyORF, pinkyORB, alnumORB) cornerILFT = Edge(plan.planes.thumbIT.projectZ(p) for p in cornerILFG) cornerIRFT = Edge(plan.planes.pinkyIT.projectZ(p) for p in cornerIRFG) cornerIRBT = Edge(plan.planes.pinkyIT.projectZ(p) for p in cornerIRBG) cornerOLFT = Edge(plan.planes.thumbOT.projectZ(p) for p in cornerOLFG) cornerORFT = Edge(plan.planes.pinkyOT.projectZ(p) for p in cornerORFG) cornerORBT = Edge(plan.planes.pinkyOT.projectZ(p) for p in cornerORBG) bossEdgeLBT = Edge(plan.planes.alnumIT.projectZ(p) for p in bossLB.wallEdge) bossEdgeRBT = Edge(plan.planes.pinkyIT.projectZ(p) for p in bossRB.wallEdge) bossEdgeRFT = Edge(plan.planes.pinkyIT.projectZ(p) for p in bossRF.wallEdge) bossEdgeLFT = Edge(plan.planes.thumbIT.projectZ(p) for p in bossLF.wallEdge) if (bossEdgeRBT[-1].x >= cornerIRBT[0].x or bossEdgeRFT[-1].x <= thumbIRF.x or bossEdgeLFT[-1].x <= cornerILFT[0].x): raise ValueError( "A screw boss is overlapping a wall corner.\n" " Try to decrease the boss size,\n" " support.minOverhangAngle, or body.splitAngle.") # Alnum front wall (step) stepDir = (thumbOLB - alnumOLF).normalized() stepCornerRadiusO = outerCornerRadius if outerChamfer > 0 else 0 stepCornerRadiusI = outerCornerRadius + wallThickness if innerChamfer > 0 else 0 # Because the chamfer tapers off, its end is scaled up for visual balance. alnumILF = _chamfer(ridgeIRF, alnumILF, alnumIRF, alnumNorm, innerChamfer*1.25) alnumOLF = _chamfer(ridgeORF, alnumOLF, alnumORF, alnumNorm, outerChamfer*1.25) stepChamferPlaneI = Plane.fromPoints(alnumIRF, alnumILF, ridgeIRF) stepChamferPlaneO = Plane.fromPoints(alnumORF, alnumOLF, ridgeORF) stepCornerArcI = cornerArc2D(stepCornerRadiusI, ridgeIRF, thumbILB, alnumIRF) stepCornerArcO = cornerArc2D(stepCornerRadiusO, alnumORF, thumbOLB, ridgeORF) stepCornerIG = Edge(plan.planes.thumbIT.projectZ(p) for p in stepCornerArcI) stepCornerOG = Edge(plan.planes.thumbOT.projectZ(p) for p in stepCornerArcO) stepCornerIT = Edge(stepChamferPlaneI.intersect(Line(p, stepDir)) for p in stepCornerIG) stepCornerOT = Edge(stepChamferPlaneO.intersect(Line(p, stepDir)) for p in stepCornerOG) stepEdgeIG = Edge(ridgeIRF, stepCornerIG, alnumIRF) stepEdgeIT = Edge(ridgeIRF, stepCornerIT, alnumIRF) stepEdgeOG = Edge(alnumORF, stepCornerOG, ridgeORF) stepEdgeOT = Edge(alnumORF, stepCornerOT, ridgeORF) self.triangles.extend(stepEdgeIT.meshPairwise(stepEdgeIG)) self.triangles.extend(stepEdgeOT.meshPairwise(stepEdgeOG)) self.triangles.extend(Edge(alnumILF).meshPairwise(stepEdgeIT)) self.triangles.extend(Edge(alnumOLF).meshPairwise(stepEdgeOT)) # Outer chamfer chamferDownO = Vector(0, 0, -outerChamfer) cornerOLFC = cornerOLFT.translated(chamferDownO) cornerORFC = cornerORFT.translated(chamferDownO) cornerORBC = cornerORBT.translated(chamferDownO) thumbORFC = thumbORF + chamferDownO alnumORBC = alnumORB + chamferDownO alnumOLBC = alnumOLB + chamferDownO cornerOLFT = _cornerChamfer(thumbOLF.yz, cornerOLFT, thumbORF, thumbNorm, outerChamfer) cornerORFT = _cornerChamfer(thumbORF, cornerORFT, pinkyORB, pinkyNorm, outerChamfer) cornerORBT = _cornerChamfer(pinkyORF, cornerORBT, alnumORB, pinkyNorm, outerChamfer) thumbORFT = _parallelChamfer(pinkyORF, thumbORF, alnumORF, cornerORFT[0]) alnumORBT = _parallelChamfer(pinkyORB, alnumORB, alnumORF, cornerORBT[-1]) alnumOLBT = _parallelChamfer(alnumORB, alnumOLB, alnumOLF, alnumORBT) alnumILBG = alnumILB.xy alnumOLBG = alnumOLB.xy # Inner chamfer chamferDownI = Vector(0, 0, -innerChamfer) bossEdgeLBC = bossEdgeLBT.translated(chamferDownI) bossEdgeRBC = bossEdgeRBT.translated(chamferDownI) bossEdgeRFC = bossEdgeRFT.translated(chamferDownI) bossEdgeLFC = bossEdgeLFT.translated(chamferDownI) cornerIRBC = cornerIRBT.translated(chamferDownI) cornerIRFC = cornerIRFT.translated(chamferDownI) cornerILFC = cornerILFT.translated(chamferDownI) alnumILBC = alnumILB + chamferDownI alnumIRBC = alnumIRB + chamferDownI thumbIRFC = thumbIRF + chamferDownI bossEdgeLBT = _cornerChamfer(alnumILB, bossEdgeLBT, alnumIRB, -alnumNorm, innerChamfer) bossEdgeRBT = _cornerChamfer(alnumIRB, bossEdgeRBT, pinkyIRB, -pinkyNorm, innerChamfer) bossEdgeRFT = _cornerChamfer(pinkyIRF, bossEdgeRFT, thumbIRF, -pinkyNorm, innerChamfer) bossEdgeLFT = _cornerChamfer(thumbIRF, bossEdgeLFT, thumbILF, -thumbNorm, innerChamfer) cornerIRBT = _cornerChamfer(alnumIRB, cornerIRBT, pinkyIRF, -pinkyNorm, innerChamfer) cornerIRFT = _cornerChamfer(pinkyIRB, cornerIRFT, thumbIRF, -pinkyNorm, innerChamfer) cornerILFT = _cornerChamfer(thumbIRF, cornerILFT, thumbILF.yz, -thumbNorm, innerChamfer) if cfg.body.thumbTentAngle == cfg.body.pinkyTentAngle: alnumIRBT = _parallelChamfer(pinkyIRB, alnumIRB, alnumIRF, cornerIRBT[0]) alnumILBT = _parallelChamfer(alnumIRB, alnumILB, alnumILF, alnumIRBT) thumbIRFT = _parallelChamfer(pinkyIRF, thumbIRF, alnumIRF, cornerIRFT[-1]) else: alnumIRBT = _parallelChamfer(pinkyIRB, alnumIRB, thumbIRF, cornerIRBT[0]) alnumILBT = _parallelChamfer(alnumIRB, alnumILB, alnumILF, alnumIRBT) thumbIRFT = _parallelChamfer(pinkyIRF, thumbIRF, alnumIRB, cornerIRFT[-1]) # Key plates alnumEdgeI = Edge(bossEdgeLBT, alnumIRBT, alnumIRF, alnumILF, alnumILBT) pinkyEdgeI = Edge(alnumIRBT, bossEdgeRBT, cornerIRBT, cornerIRFT, bossEdgeRFT, thumbIRFT) thumbEdgeI = Edge(thumbIRFT, bossEdgeLFT, cornerILFT, ridgeIRF, stepCornerIG, alnumIRF) alnumEdgeO = Edge(alnumOLF, alnumORF, alnumORBT, alnumOLBT) pinkyEdgeO = Edge(cornerORFT, cornerORBT, alnumORBT, alnumORF, thumbORFT) thumbEdgeO = Edge(cornerOLFT, thumbORFT, alnumORF, stepCornerOG, ridgeORF) self.faces.append(Face(alnumEdgeI, [k.roofHoleI for k in alnumKeys])) self.faces.append(Face(pinkyEdgeI, [k.roofHoleI for k in pinkyKeys])) self.faces.append(Face(thumbEdgeI, [k.roofHoleI for k in thumbKeys])) self.faces.append(Face(alnumEdgeO, [k.roofHoleO for k in alnumKeys])) self.faces.append(Face(pinkyEdgeO, [k.roofHoleO for k in pinkyKeys])) self.faces.append(Face(thumbEdgeO, [k.roofHoleO for k in thumbKeys])) self.triangles.append(Triangle(alnumIRF, alnumIRBT, thumbIRFT)) for key in alnumKeys + pinkyKeys + thumbKeys: self.triangles.extend(key.triangles) # Encoder hole splitEdgeF = Edge() splitEdgeB = Edge() encoderEdgeI = Edge(alnumILF.yz, alnumILF, ridgeIRF, ridgeIRF.yz) encoderEdgeO = Edge(ridgeORF.yz, ridgeORF, alnumOLF, alnumOLF.yz) if cfg.encoder: encoderRelPos = cfg.encoder.relPosition encoderPos = ridgeORF.yz*(1-encoderRelPos) + alnumOLF.yz*encoderRelPos encoderPlaneI = Plane.fromPoints(ridgeIRF, alnumILF, ridgeIRF.yz) encoderPlaneO = Plane.fromPoints(ridgeORF, alnumOLF, ridgeORF.yz) encoder = Encoder(Plane(encoderPos, encoderPlaneO.normal), encoderPlaneI) for p in encoder.roofEdgeI: if p.x > 0 and not encoderEdgeI.contains2D(p): raise ValueError( "The encoder does not fit inside the ridge.\n" " Try to adjust the encoder cfg, or increase the ridge size.") splitEdgeF.add(encoder.splitEdgeF) splitEdgeB.add(encoder.splitEdgeB) encoderEdgeI.add(encoder.roofEdgeI) encoderEdgeO.add(encoder.roofEdgeO) self.triangles.extend(encoder.triangles) else: splitEdgeF.add(ridgeORF, ridgeIRF) splitEdgeB.add(ridgeIRF, ridgeORF) self.faces.append(Face(encoderEdgeI)) self.faces.append(Face(encoderEdgeO)) # Ridge and brackets ridgeEdgeIT = Edge(alnumILBT, alnumILF, alnumILF.yz) ridgeEdgeIB = Edge(alnumILBG.yz, alnumILBG, alnumILBC) ridgeEdgeOB = Edge(alnumOLBC.yz, alnumOLBC, alnumOLBG, alnumOLBG.yz) ridgeEdgeORF = Edge(cornerOLFG[0], cornerOLFC[0], cornerOLFT[0], ridgeORF) ridgeEdgeORB = Edge(alnumOLBC, alnumOLBT, alnumOLF) ridgeEdgeIRF = Edge( cornerILFG[-1].yz, cornerILFG[-1], cornerILFC[-1], cornerILFT[-1], ridgeIRF, ridgeIRF.yz) ridgeEdgeILF = ridgeEdgeIRF.yz splitEdgeF = Edge(cornerILFG[-1], ridgeEdgeORF, splitEdgeF, ridgeIRF) splitEdgeB = Edge(alnumILF, splitEdgeB, alnumOLF, alnumOLBT, alnumOLBC) splitHolesF = [] splitHolesB = [] if cfg.bracket: bracketF = CornerBracket(cornerILFT[-1], ridgeIRF, cornerILFC[-1], plan.side) bracketB = CornerBracket(alnumILBT, alnumILF, alnumILBC, plan.side) bracketT = RoofBracket(alnumILBT, alnumILF, plan.layout.pinky()[0].matrix, plan.side) # Check if brackets fit thumbLineL = Line(ridgeIRF, cornerILFT[-1] - ridgeIRF) bracketGapFB = ridgeIRF.y - max(p.y for p in bracketF.splitEdge) bracketGapFR = min(thumbLineL.distance2D(p) for p in bracketF.roofEdge) bracketGapFG = min(p.z for p in bracketF.splitEdge) - floorLipHeight if bracketGapFB < 1e-3 or bracketGapFR < 1e-3 or bracketGapFG < 1e-3: raise ValueError("The front bracket does not fit.") bracketGapBR = alnumILBC.x - bracketB.wallEdge[-1].x bracketGapBG = min(p.z for p in bracketB.splitEdge) - floorLipHeight if bracketGapBR < 1e-3 or bracketGapBG < 1e-3: raise ValueError("The back bracket does not fit.") # Cable hole if cfg.cable: cable = Cable(bracketB.wallEdge[0], alnumOLBG.y - alnumILBG.y) if cable.splitEdgeG[-1].z < 1e-3 or cable.splitEdgeG[0].z < floorLipHeight: raise ValueError("The cable hole does not fit.") splitEdgeB.add(cable.splitEdgeT) ridgeEdgeOB.add(cable.wallEdgeB) ridgeEdgeIB = Edge(cable.wallEdgeF, ridgeEdgeIB) splitEdgeBG = Edge(alnumOLBG.yz, alnumILBG.yz, cable.splitEdgeG) self.faces.append(Face(splitEdgeBG)) self.triangles.extend(cable.triangles) else: splitEdgeB.add(alnumOLBG.yz, alnumILBG.yz) # Ridge edges ridgeEdgeIT.add(bracketT.roofEdge) ridgeEdgeIT.add(reversed(bracketB.roofEdge)) ridgeEdgeIB.add(reversed(bracketB.wallEdge)) ridgeEdgeILF = Edge(bracketF.wallEdge, bracketF.roofEdge) splitEdgeF.add(bracketF.splitEdge) splitEdgeB.add(bracketB.splitEdge) splitEdgeB.add(bracketT.splitEdge) splitHolesB.extend(bracketB.splitHoles) splitHolesB.append(bracketT.splitHole) splitHolesF.extend(bracketF.splitHoles) self.triangles.extend(bracketB.triangles) self.triangles.extend(bracketF.triangles) self.triangles.extend(bracketT.triangles) self.bracketF = bracketF self.bracketB = bracketB else: ridgeEdgeIT.add(alnumILBT.yz) ridgeEdgeIB.add(alnumILBC.yz) splitEdgeB.add(alnumOLBG.yz, alnumILBG.yz, alnumILBC, alnumILBT) splitEdgeF.add(cornerILFT[-1], cornerILFC[-1]) self.faces.append(Face(splitEdgeF.yz.collapsed(), splitHolesF)) self.faces.append(Face(splitEdgeB.yz.collapsed(), splitHolesB)) self.faces.append(Face(ridgeEdgeOB)) self.faces.append(Face(ridgeEdgeIT)) self.faces.append(Face(ridgeEdgeIB.collapsed())) self.triangles.extend(ridgeEdgeORF.meshPairwise(ridgeEdgeORF.yz)) self.triangles.extend(ridgeEdgeORB.yz.meshPairwise(ridgeEdgeORB)) self.triangles.extend(ridgeEdgeILF.meshPairwise(ridgeEdgeIRF)) # Chamfer chamferIC = Edge( bracketB.wallEdge[-1] if cfg.bracket else alnumILBC.yz, alnumILBC, bossEdgeLBC, alnumIRBC, bossEdgeRBC, cornerIRBC, cornerIRFC, bossEdgeRFC, thumbIRFC, bossEdgeLFC, cornerILFC) chamferIT = Edge( bracketB.roofEdge[0] if cfg.bracket else alnumILBT.yz, alnumILBT, bossEdgeLBT, alnumIRBT, bossEdgeRBT, cornerIRBT, cornerIRFT, bossEdgeRFT, thumbIRFT, bossEdgeLFT, cornerILFT) chamferOC = Edge(cornerOLFC, thumbORFC, cornerORFC, cornerORBC, alnumORBC, alnumOLBC) chamferOT = Edge(cornerOLFT, thumbORFT, cornerORFT, cornerORBT, alnumORBT, alnumOLBT) self.triangles.extend(chamferOC.meshPairwise(chamferOT)) self.triangles.extend(chamferIC.meshPairwise(chamferIT)) # Walls wallEdgeOC = Edge( cornerOLFC, thumbORFC, cornerORFC, cornerORBC, alnumORBC, alnumOLBC) wallEdgeIC = Edge( alnumILBC, bossEdgeLBC, alnumIRBC, bossEdgeRBC, cornerIRBC, cornerIRFC, bossEdgeRFC, thumbIRFC, bossEdgeLFC, cornerILFC) self.triangles.extend(wallEdgeOC.xy.meshPairwise(wallEdgeOC)) self.triangles.extend(wallEdgeIC.xy.meshPairwise(wallEdgeIC)) # Boss threads self.triangles.extend(bossLB.threadTriangles) self.triangles.extend(bossRB.threadTriangles) self.triangles.extend(bossRF.threadTriangles) self.triangles.extend(bossLF.threadTriangles) # Floor face floorEdge = Edge( alnumOLBG, alnumOLBG.yz, alnumILBG.yz, alnumILBG, bossEdgeLBC, alnumIRB, bossEdgeRBC, cornerIRBG, cornerIRFG, bossEdgeRFC, thumbIRF, bossEdgeLFC, cornerILFG, thumbILF.yz, thumbOLF.yz, cornerOLFG, thumbORF, cornerORFG, cornerORBG, alnumORB) self.faces.append(Face(floorEdge.xy.collapsed().reversed(), [ bossLB.threadHole, bossRB.threadHole, bossRF.threadHole, bossLF.threadHole])) # Floor outlines self.outlineO.add(thumbOLF.yz, cornerOLFG) self.outlineI.add( alnumILB.yz, alnumILB, bossEdgeLBC, bossEdgeRBC, cornerIRBG, cornerIRFG, bossEdgeRFC, bossEdgeLFC, cornerILFG, thumbILF.yz) if cfg.palm: hitchRadius = cfg.palm.hitchCornerRadius hitchOLB = plan.points.hitchOLB hitchORB = plan.points.hitchORB hitchOLF = plan.points.hitchOLF hitchORF = plan.points.hitchORF self.outlineO.add( cornerArc2D(hitchRadius, thumbOLF, hitchOLB, hitchOLF), cornerArc2D(hitchRadius, hitchOLB, hitchOLF, hitchORF), cornerArc2D(hitchRadius, hitchOLF, hitchORF, hitchORB), cornerArc2D(hitchRadius, hitchORF, hitchORB, cornerORFG[0])) self.outlineO.add(cornerORFG, cornerORBG, alnumOLB, alnumOLB.yz) self.outlineO = self.outlineO.xy.collapsed() self.outlineI = self.outlineI.xy.collapsed().reversed() def _chamfer(a, b, c, normal, chamferSize): """Project points onto normal plane and return chamfer offset.""" # c # / # b-->? # \ # a # Project lines onto normal plane plane = Plane(b, normal) ab = Line(b, b - plane.projectNormal(a)) bc = Line(b, plane.projectNormal(c) - b) # Move lines inward ab = ab.translated(normal.cross(ab.dir).normalized()*chamferSize) bc = bc.translated(normal.cross(bc.dir).normalized()*chamferSize) try: return ab.intersect(bc) except ZeroDivisionError: return ab.pos def _parallelChamfer(a, b, c, prevChamfer): """Extend existing chamfer to coplanar edge.""" # c # / # ?<----prevChamfer # b-----a parallel = Line(prevChamfer, b - a) cutoff = Line(b, c - b) return parallel.intersect(cutoff) def _cornerChamfer(prevPoint, corner, nextPoint, normal, chamferSize): """Return chamfered corner edge""" edge = Edge() for i, b in enumerate(corner): a = corner[i-1] if i > 0 else prevPoint c = corner[i+1] if i < len(corner)-1 else nextPoint edge.add(_chamfer(a, b, c, normal, chamferSize)) return edge ================================================ FILE: body/chrumm/part/boss.py ================================================ import logging import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Matrix from chrumm.geo import Plane from chrumm.geo import Vector from .arc import arc2D from .arc import uprightHole2D log = logging.getLogger(__name__) class Boss: def __init__(self, pos, printDirection, wallDirection=None, roofPlane=None): self.pos = pos self.wallEdge = Edge() self.headHole = Edge() self.threadHole = Edge() self.clearanceHole = Edge() self.headTriangles = [] self.threadTriangles = [] self._initWall(pos, wallDirection) self._initHead(pos) self._initThread(pos, printDirection, roofPlane) def _initWall(self, pos, wallDirection): wallThickness = cfg.body.wallThickness bossRadius = cfg.boss.diameter/2 bossFillet = cfg.boss.innerWallFillet wallMargin = cfg.boss.outerWallMargin protrusion = bossRadius*2 + wallMargin - wallThickness if wallDirection is None or protrusion < wallThickness/10: return taperAngleR = 0 taperAngleL = 0 if cfg.support: overhangAngle = cfg.support.minOverhangAngle if wallDirection.x < 0: taperAngleR = overhangAngle - (-wallDirection).angle2D() else: taperAngleL = overhangAngle + wallDirection.angle2D() self.wallEdge.add(_smoothTransition( protrusion, bossRadius, bossFillet, taperAngleR)) self.wallEdge.add(_smoothTransition( protrusion, bossRadius, bossFillet, taperAngleL).mirroredX().reversed()) matrix = Matrix().rotatedZ(wallDirection.angle2D()).translated(pos) self.wallEdge = self.wallEdge.collapsed().transformed(matrix) def _initHead(self, pos): outerHeight = cfg.floor.outerHeight sinkRadius = cfg.boss.countersinkDiameter/2 clearRadius = cfg.boss.clearanceHoleDiameter/2 clearLength = cfg.boss.clearanceHoleLength sinkLength = min(outerHeight, clearLength + (sinkRadius - clearRadius)) sinkRadius = min(sinkRadius, clearRadius + (outerHeight - clearLength)) # Head profile # ___0 z=0 # | | # |___1 -clearLength # / \ # /_______2 -sinkLength # | | # |_______3 -outerHeight arcs = [] profile = [ (clearRadius, 0), (clearRadius, -clearLength), (sinkRadius, -sinkLength), (sinkRadius, -outerHeight)] protoArc = arc2D(clearRadius, 0, math.tau).scaled(1 / clearRadius) for scale, z in profile: arcPos = Vector(pos.x, pos.y, z) arcs.append(protoArc.scaled(scale).translated(arcPos)) for i in range(len(arcs) - 1): self.headTriangles.extend(arcs[i].meshPairwise(arcs[i+1], True)) self.clearanceHole = arcs[0].reversed() self.headHole = arcs[-1] def _initThread(self, pos, printDirection, roofPlane): radius = cfg.boss.threadDiameter/2 minLength = cfg.boss.minThreadLength maxLength = cfg.boss.maxThreadLength roofMargin = cfg.boss.threadRoofMargin chamfer = cfg.boss.threadChamfer # Trim parallel to roof if roofPlane: marginPlane = roofPlane.translated(roofPlane.normal * -roofMargin) tipZ = min(maxLength, marginPlane.projectZ(pos).z) if tipZ < minLength: raise ValueError( f"A boss thread overlaps the roof margin by: {minLength - tipZ:.3f}\n" " Try to decrease boss.minThreadLength, boss.threadRoofMargin,\n" " or increase body.minRoofHeight.") if tipZ < maxLength: log.debug("Excess length of trimmed boss thread: %.3f", tipZ - minLength) tipPlane = Plane(Vector(pos.x, pos.y, tipZ), roofPlane.normal) else: tipPlane = Plane(Vector(pos.x, pos.y, maxLength), Vector(0, 0, 1)) # Thread profile # ___2 tip # | | # |___1 chamfer # / \ # /_______0 z=0 arcs = [] profile = [ (radius + chamfer/2, 0), (radius, chamfer)] rotation = Matrix().rotatedZ(printDirection.angle2D() - math.tau/4) protoArc = uprightHole2D(radius).scaled(1/radius).transformed(rotation) for scale, z in profile: arcPos = Vector(pos.x, pos.y, z) arcs.append(protoArc.scaled(scale).translated(arcPos)) arcs.append(Edge(tipPlane.projectZ(p) for p in arcs[-1])) arcs.append(Edge(tipPlane.pos)) for i in range(len(arcs) - 1): self.threadTriangles.extend(arcs[i+1].meshPairwise(arcs[i], True)) self.threadHole = arcs[0] def _smoothTransition(protrusion, bossRadius, bossFillet, minTaperAngle): # <--.. \ --------protrusion-- # '.\ ^ # boss o | # \'. fillet | # \ ''--o --wall-- # tangent filletCenterY = bossRadius - protrusion + bossFillet filletCenterX = max(0, (bossRadius + bossFillet)**2 - filletCenterY**2)**0.5 filletCenter = Vector(filletCenterX, filletCenterY) tangentAngle = min(max(0, minTaperAngle, filletCenter.angle2D()), math.radians(89)) arcAngle = math.tau/4 - tangentAngle filletArc = arc2D(bossFillet, -math.tau/4, -arcAngle, filletCenter) bossArc = arc2D(bossRadius, tangentAngle, arcAngle) gapY = bossArc[0].y - filletArc[-1].y gapX = gapY / math.cos(tangentAngle) * math.sin(tangentAngle) offset = Vector(gapX - (filletArc[-1].x - bossArc[0].x)) return Edge(filletArc.translated(offset), bossArc).collapsed() ================================================ FILE: body/chrumm/part/bracket.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Line from chrumm.geo import Matrix from chrumm.geo import Vector from .arc import arc2D from .arc import cornerArc2D from .arc import uprightHole2D class CornerBracket: """Bracket between wall and roof, snapped to the yz plane.""" def __init__(self, a, b, c, side): # b<---------a # \ \ ( ) c # \ (\_____| z # \___/ | xy a = a.yz b = b.yz c = c.yz self.wallEdge = Edge() self.roofEdge = Edge() self.splitEdge = Edge() self.splitHoles = [] self.triangles = [] nutAcross = cfg.bracket.nutAcrossFlats nutRadius = nutAcross / 3**0.5 boreRadius = cfg.bracket.counterboreDiameter/2 boreLength = cfg.bracket.counterboreLength holeLength = cfg.bracket.holeLength taperAngle = cfg.bracket.taperAngle taperMargin = cfg.bracket.taperMargin wallMargin = cfg.bracket.wallMargin baseMargin = cfg.bracket.baseMargin apexMargin = cfg.bracket.apexMargin extraMargin = cfg.bracket.backCornerExtraMargin cornerRadius = cfg.bracket.cornerRadius cableInset = cfg.cable.bracketInset if cfg.cable else 0 # Always construct from back to front isBackward = a.y < b.y if isBackward: a = a.mirroredY() b = b.mirroredY() c = c.mirroredY() extraMargin = 0 cableInset = 0 # Sketch on yz plane wallDir = Vector(0, 0, 1) wallOrtho = Vector(0, 1, 0) roofDir = (b - a).normalized() roofOrtho = Vector(0, roofDir.z, -roofDir.y) roofAngle = Vector(-roofDir.y, -roofDir.z).angle2D() taperDir = Vector(0, -math.sin(taperAngle), math.cos(taperAngle)) taperOrtho = Vector(0, -taperDir.z, taperDir.y) nutRoofDist = _hexTangentDist(nutRadius, roofAngle) nutTaperDist = _hexTangentDist(nutRadius, taperAngle - math.pi/2) roofOffset = max(boreRadius, nutRoofDist) + baseMargin + extraMargin wallOffset = max(boreRadius, nutRadius) + wallMargin + extraMargin apexOffset = max(boreRadius, nutAcross/2) + apexMargin taperOffset = max(boreRadius, nutTaperDist) + taperMargin + cableInset wallOffsetLine = Line(c - wallOrtho*wallOffset, wallDir) roofOffsetLine = Line(a - roofOrtho*roofOffset, roofDir) screwCenter = roofOffsetLine.intersect(wallOffsetLine) wallLine = Line(c, wallDir) roofLine = Line(a, roofDir) apexLine = Line(screwCenter - Vector(0, 0, apexOffset), Vector(0, 1)) taperLine = Line(screwCenter + taperOrtho*taperOffset, taperDir) # Edges and triangles archLBG = wallLine.intersect(apexLine) archLFG = taperLine.intersect(apexLine) archLFT = taperLine.intersect(roofLine) arcL = _archCorner(cornerRadius, archLBG, archLFG, archLFT) archL = Edge(archLBG, arcL, archLFT) moveR = Vector(holeLength + boreLength) archR = archL.translated(moveR) self.wallEdge = Edge(archL[0], archR[0], c + moveR) self.roofEdge = Edge(a + moveR, archR[-1], archL[-1]) self.splitEdge = archL holeTriangles, holeL, holeR = _screwHole(screwCenter, side, False) edgeR = Edge(archR, self.roofEdge[0], self.wallEdge[-1]) faceR = Face(edgeR.collapsed().reversed(), [holeR]) self.triangles.extend(holeTriangles) self.triangles.extend(faceR.triangulate()) self.splitHoles.append(holeL.reversed()) # Ziptie if cfg.cable and not isBackward: cableDiameter = cfg.cable.diameter zipWidth = cfg.cable.ziptieWidth zipHeight = cfg.cable.ziptieHeight humpWidth = cfg.cable.gripHumpWidth humpHeight = cfg.cable.gripHumpHeight humpRadius = cfg.cable.minBendRadius humpInset = humpRadius - humpHeight # Ziptie hump humpCenterF = taperLine.translated(taperOrtho*(zipHeight + taperMargin - humpRadius)) humpCenterT = apexLine.translated(Vector(0, 0, humpInset)) humpCenter = humpCenterF.intersect(humpCenterT) bumpCenter = archLBG - Vector(0, 0, cableDiameter + humpRadius) maxCableDiameter = (humpCenter - bumpCenter).magnitude() - 2*humpRadius if cableDiameter > maxCableDiameter: raise ValueError( "The cable does not fit between the wall bump and grip hump.\n" " Try to decrease cable.minBendRadius, cable.gripHumpHeight,\n" " or increase cable.bracketInset.") minHumpTaper = math.asin(humpInset / humpRadius) humpSpan = math.pi - taperAngle - max(minHumpTaper, taperAngle) humpArcXY = arc2D(humpRadius, taperAngle, humpSpan) humpArc = Edge(Vector(0, -p.x, -p.y) + humpCenter for p in humpArcXY) humpLineF = Line(humpArc[0], taperLine.dir) humpLineB = Line(humpArc[-1], taperLine.dir.mirroredY()) humpLineG = Line(apexLine.pos - Vector(0, 0, humpHeight), Vector(0, 1)) humpLFT = humpLineF.intersect(roofLine) humpLBT = humpLineB.intersect(apexLine) humpLFG = humpLineG.intersect(humpLineF) humpRBT = archLFT + Vector(humpWidth/2) humpArchL = Edge(humpLFT, humpArc, humpLBT).collapsed() humpArchR = humpArchL.translated(Vector(humpWidth/2)) # Ziptie hole zipArcCenterXY = Vector(0, zipHeight/2 - zipWidth/2) zipArcXY = arc2D(zipHeight/2, 0, -math.pi, zipArcCenterXY) zipHoleXY = zipArcXY.transformed(Matrix().rotatedZ(taperAngle)) zipHoleXY.add(zipHoleXY.mirroredX().mirroredY()) zipCenter = humpLFT*0.4 + humpLFG*0.6 - taperOrtho*(zipHeight/2 + taperMargin) zipHoleL = Edge(Vector(0, p.x, p.y) + zipCenter for p in zipHoleXY) zipHoleR = zipHoleL.translated(Vector(humpWidth/2)) if zipHoleL[0].z <= arcL[-1].z: overlap = taperDir*(zipHoleL[0] - arcL[-1]).magnitude() zipHoleL = zipHoleL.translated(overlap) zipHoleR = zipHoleL.translated(Vector(humpWidth/2)) arcR = arcL.translated(Vector(humpWidth/2)) humpEdgeR = Edge(humpArchR, arcR, zipHoleR, humpRBT).collapsed() self.triangles.extend(Face(humpEdgeR).triangulate()) self.triangles.extend(zipHoleL.meshPairwise(zipHoleR, True)) self.triangles.extend(humpArchL.meshPairwise(humpArchR)) self.splitHoles.append(zipHoleL.reversed()) # Adjust bracket edges archR = Edge(archL[0], archR) archL = Edge(humpArchL[-1], humpArchR[-1], arcR, zipHoleR[0], zipHoleR[-1], humpRBT) self.splitEdge = Edge(humpArchL, archR[0]).reversed() self.roofEdge = Edge(a + moveR, archR[-1], archL[-1], humpArchR[0], humpArchL[0]) self.triangles.extend(archR.meshPairwise(archL)) if isBackward: self.wallEdge = self.wallEdge.mirroredY() self.roofEdge = self.roofEdge.mirroredY() self.splitEdge = self.splitEdge.mirroredY().reversed() self.splitHoles = [h.mirroredY().reversed() for h in self.splitHoles] self.triangles = [t.mirroredY().reversed() for t in self.triangles] class RoofBracket: """Bracket on roof with optional PCB mount, snapped to the yz plane.""" def __init__(self, a, b, refMatrix, side): # b<------------a z # \ ( )| |/ xy # ----| | # |_| a = a.yz b = b.yz ab = b - a self.roofEdge = Edge() self.splitEdge = Edge() self.splitHole = Edge() self.triangles = [] nutAcross = cfg.bracket.nutAcrossFlats nutRadius = nutAcross / 3**0.5 boreRadius = cfg.bracket.counterboreDiameter/2 boreLength = cfg.bracket.counterboreLength holeLength = cfg.bracket.holeLength taperAngle = cfg.bracket.taperAngle taperMargin = cfg.bracket.taperMargin wallMargin = cfg.bracket.wallMargin baseMargin = cfg.bracket.baseMargin apexMargin = cfg.bracket.apexMargin cornerRadius = cfg.bracket.cornerRadius # Sketch on yz plane taperDir = Vector(0, math.sin(taperAngle), math.cos(taperAngle)) taperOrtho = Vector(0, taperDir.z, -taperDir.y) nutTaperDist = _hexTangentDist(nutRadius, taperAngle - math.pi/2) roofOffset = max(boreRadius, nutAcross/2) + baseMargin apexOffset = max(boreRadius, nutAcross/2) + apexMargin taperOffset = max(boreRadius, nutTaperDist) + taperMargin lineB = Line(taperOrtho*taperOffset, taperDir) lineF = Line(lineB.pos.mirroredY(), lineB.dir.mirroredY()) lineG = Line(Vector(0, 0, -apexOffset), Vector(0, 1)) lineT = Line(Vector(0, 0, roofOffset), Vector(0, 1)) archLFT = lineF.intersect(lineT) archLFG = lineF.intersect(lineG) archLBG = lineB.intersect(lineG) archLBT = lineB.intersect(lineT) archLF = Edge(archLFT, _archCorner(cornerRadius, archLFT, archLFG, archLBG)) archLB = Edge(_archCorner(cornerRadius, archLFG, archLBG, archLBT), archLBT) # Placement roofDir = ab.normalized() roofOrtho = Vector(0, -roofDir.z, roofDir.y) roofAngle = Vector(-ab.y, -ab.z).angle2D() roofAlign = Matrix().translated(-lineT.pos).rotatedX(roofAngle) moveR = Vector(boreLength + holeLength) if cfg.pcb and cfg.pcb.mount: bossFG, bossFT, bossBG, bossBT = self._makeBoss(refMatrix) bossDir = (bossFT.yz - bossFG.yz).normalized() bossOrtho = Vector(0, -bossDir.z, bossDir.y) roofLine = Line(a, roofDir) apexLine = Line(a + roofOrtho*(lineT.pos - lineG.pos).z, roofDir) armLineF = Line(bossFT.yz, bossDir) armLineB = Line(bossBT.yz, bossDir) armOffset = max(boreRadius, nutRadius) + wallMargin armOffsetLine = Line(bossFT.yz + bossOrtho*armOffset, bossDir) roofPos = roofLine.intersect(armOffsetLine) roofAlign = roofAlign.translated(roofPos) archLF = archLF.transformed(roofAlign) archLB = archLB.transformed(roofAlign) armR = Edge(bossBT, bossBG, bossFG, bossFT) armL = Edge( roofLine.intersect(armLineB), apexLine.intersect(armLineB), apexLine.intersect(armLineF), roofLine.intersect(armLineF)).translated(moveR) archLB = archLB.translated(armL[1].yz - archLB[0]) archRF = archLF.translated(moveR) archRB = archLB.translated(moveR) archL = Edge(archLF, armL[2].yz, archLB) archR = Edge(archRF, armL[2], archRB) faceR = Edge(archRF, armL[2:]) self.triangles.extend(armR.meshPairwise(armL, True)) self.triangles.extend(armL[:2].meshPairwise(archRB.reversed())) self.roofEdge = Edge(archL[0], archR[0], armL[-1], armL[0], archR[-1], archL[-1]) else: archD = (archLF[0] - archLB[-1]).magnitude() roofPos = a + roofDir*(0.85*(ab.magnitude() - archD) + archD/2) roofAlign = roofAlign.translated(roofPos) archL = Edge(archLF, archLB).transformed(roofAlign) archR = archL.translated(moveR) faceR = archR self.roofEdge = Edge(archL[0], archR[0], archR[-1], archL[-1]) holeTriangles, holeL, holeR = _screwHole(Vector(), side, False) holeTriangles = [t.transformed(roofAlign) for t in holeTriangles] holeL = holeL.transformed(roofAlign) holeR = holeR.transformed(roofAlign) self.triangles.extend(holeTriangles) self.triangles.extend(Face(faceR, [holeR]).triangulate()) self.triangles.extend(archL.meshPairwise(archR)) self.splitEdge = archL.reversed() self.splitHole = holeL.reversed() def _makeBoss(self, refMatrix): splitAngle = cfg.body.splitAngle bossHeight = cfg.pcb.mount.bossHeight bossRadius = cfg.pcb.mount.bossDiameter/2 threadRadius = cfg.pcb.mount.threadDiameter/2 nutRadius = cfg.pcb.mount.nutDiameter/2 xOffset = cfg.pcb.mount.xDistToFirstPinky yOffset = cfg.pcb.mount.yDistToFirstPinky zOffset = cfg.switch.innerHeight holeG = uprightHole2D(threadRadius) holeT = holeG.translated(Vector(0, 0, bossHeight)) edgeG = arc2D(bossRadius, 0, math.pi) edgeT = edgeG.translated(Vector(0, 0, bossHeight)) armFG = Vector(bossRadius, -bossRadius) armBG = Vector(-bossRadius, -bossRadius) armFT = Vector(bossRadius, -nutRadius, bossHeight) armBT = Vector(-bossRadius, -nutRadius, bossHeight) rotMatrix = Matrix().rotatedZ(-math.tau/4 - splitAngle) holeG = holeG.transformed(rotMatrix) holeT = holeT.transformed(rotMatrix) edgeG = Edge(armFG, edgeG, armBG).transformed(rotMatrix) edgeT = Edge(armFT, edgeT, armBT).transformed(rotMatrix) offset = Vector(-xOffset, -yOffset, -zOffset) holeG = holeG.translated(offset).transformed(refMatrix) holeT = holeT.translated(offset).transformed(refMatrix) edgeG = edgeG.translated(offset).transformed(refMatrix) edgeT = edgeT.translated(offset).transformed(refMatrix) self.triangles.extend(holeT.meshPairwise(holeG, True)) self.triangles.extend(edgeG.meshPairwise(edgeT)) self.triangles.extend(Face(edgeT, [holeT.reversed()]).triangulate()) self.triangles.extend(Face(edgeG.reversed(), [holeG]).triangulate()) return edgeG[0], edgeT[0], edgeG[-1], edgeT[-1] class FloorBracket: """Bracket between lip and floor, snapped to the yz plane.""" def __init__(self, a, b, c, d, e, side): # _____ # / \ # e_d \ # | ( ) \ # c \ z # a------->b xy a = a.yz b = b.yz c = c.yz d = d.yz e = e.yz self.taperEdge = Edge() self.splitEdge = Edge() self.splitHole = Edge() self.triangles = [] nutAcross = cfg.bracket.nutAcrossFlats nutRadius = nutAcross / 3**0.5 boreRadius = cfg.bracket.counterboreDiameter/2 boreLength = cfg.bracket.counterboreLength holeLength = cfg.bracket.holeLength cornerRadius = cfg.bracket.cornerRadius taperAngle = cfg.bracket.taperAngle taperMargin = cfg.bracket.taperMargin wallMargin = cfg.bracket.wallMargin baseMargin = cfg.bracket.baseMargin apexMargin = cfg.bracket.apexMargin extraMargin = cfg.bracket.frontFloorExtraMargin # Always construct from front to back isBackward = a.y > b.y if isBackward: a = a.mirroredY() b = b.mirroredY() c = c.mirroredY() d = d.mirroredY() e = e.mirroredY() extraMargin = 0 # Sketch on yz plane taperDir = Vector(0, math.sin(taperAngle), math.cos(taperAngle)) taperOrtho = Vector(0, -taperDir.z, taperDir.y) nutTaperDist = _hexTangentDist(nutRadius, taperAngle - math.pi/2) wallOffset = max(boreRadius, nutRadius) + wallMargin + extraMargin baseOffset = max(boreRadius, nutAcross/2) + baseMargin apexOffset = max(boreRadius, nutAcross/2) + apexMargin taperOffset = max(boreRadius, nutTaperDist) + taperMargin lipT = d.z bracketG = a.z bracketT = bracketG + max(baseOffset + apexOffset, lipT) centerZ = bracketG + baseOffset lineF = Line(Vector(0, 0, centerZ) + taperOrtho*taperOffset, taperDir) lineB = Line(lineF.pos.mirroredY(), lineF.dir.mirroredY()) lineG = Line(Vector(0, 0, bracketG), Vector(0, 1)) lineT = Line(Vector(0, 0, bracketT), Vector(0, 1)) lineLip = Line(Vector(0, 0, lipT), Vector(0, 1)) archLFG = lineF.intersect(lineLip) archLFT = lineF.intersect(lineT) archLBT = lineB.intersect(lineT) archLBG = lineB.intersect(lineG) if bracketT <= lipT: raise ValueError("The floor bracket must be taller than the floor lip.") cornerRadiusF = min(cornerRadius, bracketT - lipT) cornerF = _archCorner(cornerRadiusF, archLBT, archLFT, archLFG) cornerB = _archCorner(cornerRadius, archLBG, archLBT, archLFT) archL = Edge(archLBG, cornerB, cornerF, archLFG).collapsed() # Center position centerY = e.y - archL[-1].y if centerY - d.y < wallOffset: # Avoid e.y < archL[-1].y < d.y centerY = max(d.y + wallOffset, centerY + d.y - e.y) screwCenter = Vector(0, centerY, centerZ) # Edges and triangles moveR = Vector(boreLength + holeLength) archL = archL.translated(screwCenter.xy) archR = archL.translated(moveR) faceEdge = Edge(archL, d, c, a).translated(moveR) holeTriangles, holeL, holeR = _screwHole(screwCenter, side, True) if not archL[-1].isClose(e): archL.add(e) archR.add(d + moveR, e + moveR) self.splitEdge = archL.reversed() self.splitHole = holeL.reversed() self.taperEdge = Edge(archL[0], archR[0]) self.lipEdge = Edge(e, d, c, a).translated(moveR) self.triangles.extend(archL.meshPairwise(archR)) self.triangles.extend(Face(faceEdge.collapsed(), [holeR]).triangulate()) self.triangles.extend(holeTriangles) if isBackward: self.lipEdge = self.lipEdge.mirroredY() self.taperEdge = self.taperEdge.mirroredY().reversed() self.splitEdge = self.splitEdge.mirroredY().reversed() self.splitHole = self.splitHole.mirroredY().reversed() self.triangles = [t.mirroredY().reversed() for t in self.triangles] def _hexTangentDist(outerRadius, tangentAngle): """Return the distance of an angled tangent to the hexagon center.""" # .' # .'__ )angle # .'/ \ # \___/ return outerRadius * math.cos(abs(tangentAngle) % (math.pi/3) - math.pi/6) def _archCorner(radius, a, b, c): return Edge(Vector(0, p.x, p.y) for p in cornerArc2D( radius, Vector(a.y, a.z), Vector(b.y, b.z), Vector(c.y, c.z))) def _screwHole(centerL, side, isUpright): boreRadius = cfg.bracket.counterboreDiameter/2 boreLength = cfg.bracket.counterboreLength holeRadius = cfg.bracket.holeDiameter/2 holeLength = cfg.bracket.holeLength # +--- # | Counterbore # ---+ # Hole # ---+ # | z # +--- yx holeXY = uprightHole2D(holeRadius) if isUpright else arc2D(holeRadius) holeYZ = Edge(Vector(0, -p.x, p.y) for p in holeXY) centerR = centerL + Vector(holeLength) holeL = holeYZ.translated(centerL) holeR = holeYZ.translated(centerR) if side == cfg.bracket.nutSide: nutAcross = cfg.bracket.nutAcrossFlats nutRadius = nutAcross / 3**0.5 boreXY = Edge( Vector(-nutRadius/2, nutAcross/2), Vector(-nutRadius), Vector(-nutRadius/2, -nutAcross/2), Vector(nutRadius/2, -nutAcross/2), Vector(nutRadius), Vector(nutRadius/2, nutAcross/2)) else: boreXY = uprightHole2D(boreRadius) if isUpright else arc2D(boreRadius) boreL = Edge(Vector(0, -p.x, p.y) + centerR for p in boreXY) boreR = boreL.translated(Vector(boreLength)) triangles = Face(boreL.reversed(), [holeR]).triangulate() triangles.extend(boreL.meshPairwise(boreR, True)) triangles.extend(holeL.meshPairwise(holeR, True)) return triangles, holeL, boreR ================================================ FILE: body/chrumm/part/bumper.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Vector from .arc import arc2D class Bumper: def __init__(self, pos, isHalf=False): self.triangles = [] self.floorEdge = Edge() self.splitEdge = Edge() floorHeight = cfg.floor.outerHeight radius = cfg.bumper.diameter/2 height = cfg.bumper.height arc = arc2D(radius, -math.pi/2, math.pi).snapped() if isHalf else arc2D(radius) edgeG = arc.translated(pos.xy - Vector(0, 0, floorHeight)) edgeT = arc.translated(pos.xy - Vector(0, 0, floorHeight - height)) self.triangles.extend(edgeT[:1].meshPairwise(edgeT)) self.triangles.extend(edgeT.meshPairwise(edgeG, not isHalf)) self.floorEdge.add(edgeG) if isHalf: self.splitEdge.add(edgeG[-1], edgeT[-1], edgeT[0], edgeG[0]) ================================================ FILE: body/chrumm/part/cable.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Vector from .arc import arc2D from .arc import uprightHalfHole2D class Cable: def __init__(self, pos, wallThickness): # .-+-. # / pos \ # \ / z # '---' yx self.triangles = [] self.wallEdgeF = Edge() self.wallEdgeB = Edge() self.splitEdgeG = Edge() self.splitEdgeT = Edge() cableRadius = cfg.cable.diameter/2 filletRadius = cfg.cable.wallExitFillet bendRadius = cfg.cable.minBendRadius bumpRadius = cfg.cable.wallBumpRadius taperAngle = cfg.cable.wallBumpTaperAngle bracketWidth = cfg.bracket.holeLength + cfg.bracket.counterboreLength bumpWidth = bracketWidth*0.6 + cableRadius*0.4 # Hole filletArcXY = arc2D(filletRadius, 0, math.tau/4) filletArcYZ = Edge(Vector(0, p.y, p.x) for p in filletArcXY) filletCenter = pos + Vector(0, wallThickness - filletRadius, -cableRadius) holeArcXY = uprightHalfHole2D(cableRadius) holeArcXZ = Edge(Vector(p.y, 0, p.x) for p in holeArcXY) holeArcs = [holeArcXZ.translated(pos + Vector(0, 0, -cableRadius))] holeEdgeT = holeArcs[0][:len(holeArcs[0])//2 + 1] holeEdgeG = holeArcs[0][len(holeArcs[0])//2:].reversed() for p in filletArcYZ: arcScale = 1 + (filletRadius - p.z)/cableRadius arcCenter = filletCenter + Vector(0, p.y) holeArcs.append(holeArcXZ.scaled(arcScale).translated(arcCenter)) for i in range(len(holeArcs) - 1): self.triangles.extend(holeArcs[i+1].meshPairwise(holeArcs[i])) # Bump # minBendRadius # +--.. # | /. bendArc # |---/--)-- # |45/ .' taperArc # | /.' # |/' wallBumpTaperAngle tipCenterXY = Vector(1, 1).normalized() * (bendRadius - bumpRadius) bendArcXY = arc2D(bendRadius, math.tau/4, -math.tau/8) bendArcXY.add(arc2D(bumpRadius, math.tau/8, -math.tau/8, tipCenterXY)[1:]) bendArcYZ = Edge(Vector(0, -p.x, p.y) for p in bendArcXY) bendArcYZ = bendArcYZ.translated(holeArcs[0][-1] - bendArcYZ[0]) taperFactor = math.sin(taperAngle) / math.cos(taperAngle) taperArcXY = arc2D(bumpRadius, 0, -(math.tau/4 - taperAngle), tipCenterXY) taperArcXY.add(Vector(0, taperArcXY[-1].y - taperArcXY[-1].x*taperFactor)) taperArcYZ = Edge(Vector(0, -p.x, p.y) for p in taperArcXY) grooveArcs = [bendArcYZ.translated(p - bendArcYZ[0]) for p in holeEdgeG] grooveWidth = grooveArcs[-1][-1].x - pos.x grooveArcs.append(grooveArcs[-1].translated(Vector(bumpWidth - grooveWidth))) taperEdgeL = taperArcYZ.translated(grooveArcs[0][-1] - taperArcYZ[0]) taperEdgeR = taperEdgeL.translated(Vector(bumpWidth)) bumpEdgeR = Edge(grooveArcs[-1], taperEdgeR) bendEdgeB = Edge(arc[-1] for arc in reversed(grooveArcs)) self.triangles.extend(taperEdgeL.meshPairwise(taperEdgeR)) self.triangles.extend(bendEdgeB.meshPairwise(taperEdgeR[:1])) self.triangles.extend(bumpEdgeR.meshPairwise(bumpEdgeR[:1])) for i in range(len(grooveArcs) - 1): self.triangles.extend(grooveArcs[i].meshPairwise(grooveArcs[i+1])) # Edges self.wallEdgeF = Edge(holeEdgeT, bumpEdgeR[0], bumpEdgeR[-1], taperEdgeL[-1]) self.wallEdgeB = holeArcs[-1].reversed() self.splitEdgeT = Edge(arc[0] for arc in reversed(holeArcs)) self.splitEdgeG = Edge( reversed(taperEdgeL), reversed(grooveArcs[0]), (arc[-1] for arc in holeArcs)).collapsed() ================================================ FILE: body/chrumm/part/encoder.py ================================================ from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Line from chrumm.geo import Matrix from chrumm.geo import Vector from .arc import uprightHalfHole2D class Encoder: def __init__(self, roofPlaneO, roofPlaneI): """Place at roofPlaneO.pos and align to roofPlaneO.normal""" self.triangles = [] self.roofEdgeI = Edge() self.roofEdgeO = Edge() self.splitEdgeF = Edge() self.splitEdgeB = Edge() width = cfg.encoder.width depth = cfg.encoder.depth holeRadius = cfg.encoder.holeDiameter/2 holeHeight = cfg.encoder.holeHeight holeChamfer = cfg.encoder.holeChamfer notchDepth = cfg.encoder.pinNotchDepth pos = roofPlaneO.pos normal = roofPlaneO.normal align = Matrix.fromAlignment(Vector(0, 0, 1), normal).translated(pos) # Hole # __| |__ z # |Box | xy holeArc = Edge(Vector(p.y, p.x) for p in uprightHalfHole2D(holeRadius)) holeEdgeT = holeArc.scaled(1 + holeChamfer/holeRadius).transformed(align) holeEdgeC = holeArc.translated(Vector(0, 0, -holeChamfer)).transformed(align) holeEdgeG = holeArc.translated(Vector(0, 0, -holeHeight)).transformed(align) # Box # 0---1 # :\ # y : 2 # zx : | Notch boxEdgeT = Edge( Vector(0, depth/2, -holeHeight), Vector(width/2, depth/2, -holeHeight), Vector(width/2 + notchDepth, depth/2 - notchDepth, -holeHeight)) boxEdgeT.add(boxEdgeT.mirroredY().reversed()) boxEdgeT = boxEdgeT.transformed(align) boxEdgeG = Edge(roofPlaneI.intersect(Line(p, normal)) for p in boxEdgeT) # Chamfered notch boxEdgeT[2] = boxEdgeT[1] boxEdgeT[3] = boxEdgeT[4] boxFaceEdge = Edge( boxEdgeT[0], boxEdgeT[1], boxEdgeT[4], boxEdgeT[5], reversed(holeEdgeG)) edges = [boxEdgeG, boxEdgeT, holeEdgeG, holeEdgeC, holeEdgeT] self.splitEdgeF.add(e[-1] for e in reversed(edges)) self.splitEdgeB.add(e[0] for e in edges) self.roofEdgeI.add(boxEdgeG.collapsed().reversed()) self.roofEdgeO.add(holeEdgeT) self.triangles.extend(holeEdgeC.meshPairwise(holeEdgeT)) self.triangles.extend(holeEdgeG.meshPairwise(holeEdgeC)) self.triangles.extend(boxEdgeG.meshPairwise(boxEdgeT)) self.triangles.extend(Face(boxFaceEdge).triangulate()) ================================================ FILE: body/chrumm/part/floor.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Segment from chrumm.geo import Vector from .arc import cornerArc2D from .bracket import FloorBracket from .bumper import Bumper class Floor: def __init__(self, plan, body): self.faces = [] self.triangles = [] outerHeight = cfg.floor.outerHeight innerHeight = cfg.floor.innerHeight innerChamfer = cfg.floor.innerChamfer lipThickness = cfg.floor.lipThickness lipHeight = cfg.floor.lipHeight lipMargin = cfg.floor.lipMargin lipT = Vector(0, 0, lipHeight) floorOG = Vector(0, 0, -outerHeight) floorIG = Vector(0, 0, floorOG.z + innerHeight) chamferT = Vector(0, 0, floorIG.z + innerChamfer) lipSketchI = _naiveOffset2D(body.outlineI, -lipMargin - lipThickness) lipSketchO = _naiveOffset2D(body.outlineI, -lipMargin) chamferSketch = _naiveOffset2D(body.outlineI, -lipMargin - lipThickness - innerChamfer) # Wall profile edges # # 4-3 # | | # | 2--1 # 5 | # / | # 6 | # 0 profile = [ body.outlineO.translated(floorOG), body.outlineO, lipSketchO, lipSketchO.translated(lipT), lipSketchI.translated(lipT), lipSketchI.translated(chamferT), chamferSketch.translated(floorIG)] # Face edges floorEdge = profile[0].reversed() innerEdge = Edge() splitEdge = Edge() bodyEdge = Edge() lipEdge = Edge() floorHoles = [] innerHoles = [] splitHoles = [] bodyHoles = [] # Optional parts if cfg.bracket: bracketF = FloorBracket( profile[6][0], profile[6][-1], profile[5][0], profile[4][0], profile[3][0], plan.side) bracketB = FloorBracket( profile[6][-1], profile[6][0], profile[5][-1], profile[4][-1], profile[3][-1], plan.side) # Check if front brackets overlap sketchFG = Edge(Vector(p.y, p.z) for p in bracketF.splitEdge) sketchFT = Edge(Vector(p.y, p.z) for p in body.bracketF.splitEdge) for point in sketchFT: if sketchFG.contains2D(point): raise ValueError( "The front brackets overlap.\n" " Try to increase bracket.frontFloorExtraMargin, or\n" " raise the front with a more negative body.tiltAngle.") # Check if cable overlaps if cfg.cable: sketchBG = Edge(Vector(p.y, p.z) for p in bracketB.splitEdge) sketchBT = Edge(Vector(p.y, p.z) for p in body.bracketB.splitEdge) for point in _naiveOffset2D(sketchBT, -cfg.cable.diameter): if sketchBG.contains2D(point): raise ValueError( "The cable overlaps the back floor brackets.\n" " Try to decrease cable.gripHumpHeight, or\n" " increase the body or floor height.") # Integrate brackets for i, edge in enumerate(profile[3:7]): profile[-(i+1)][0] = bracketF.lipEdge[-(i+1)] profile[-(i+1)][-1] = bracketB.lipEdge[-(i+1)] innerEdge.add(bracketB.taperEdge) innerEdge.add(bracketF.taperEdge) splitEdge.add(e[0] for e in profile[:3]) splitEdge.add(bracketF.splitEdge) splitEdge.add(bracketB.splitEdge) splitEdge.add(e[-1] for e in reversed(profile[:3])) splitHoles.append(bracketF.splitHole) splitHoles.append(bracketB.splitHole) self.triangles.extend(bracketF.triangles) self.triangles.extend(bracketB.triangles) else: splitEdge.add(e[0] for e in profile) splitEdge.add(e[-1] for e in reversed(profile)) if cfg.floor.hexHoles: hexMargin = cfg.floor.hexHoles.wallMargin hexBorder = _naiveOffset2D(profile[-1], -hexMargin, True) hexagons = _hexGrid2D(hexBorder) hexagonsI = [h.translated(floorIG) for h in hexagons] hexagonsO = [h.translated(floorOG) for h in hexagons] innerHoles.extend(h.reversed() for h in hexagonsI) floorHoles.extend(hexagonsO) for hexI, hexO in zip(hexagonsI, hexagonsO): self.triangles.extend(hexI.meshPairwise(hexO, True)) if cfg.bumper: bumperInset = cfg.bumper.margin + cfg.bumper.diameter/2 thumbOLF = plan.points.thumbORF pinkyORF = plan.points.pinkyORF pinkyORB = plan.points.pinkyORB alnumOLB = plan.points.alnumOLB bumperRF = _cornerBumper(alnumOLB, pinkyORB, pinkyORF, bumperInset) bumperRB = _cornerBumper(pinkyORB, pinkyORF, thumbOLF, bumperInset) bumperLF = Bumper(profile[0][0] + Vector(0, bumperInset), True) bumperLB = Bumper(profile[0][-1] - Vector(0, bumperInset), True) floorHoles.append(bumperRF.floorEdge) floorHoles.append(bumperRB.floorEdge) splitEdge.add(bumperLB.splitEdge) splitEdge.add(bumperLF.splitEdge) floorEdge.add(bumperLF.floorEdge) floorEdge.add(bumperLB.floorEdge) self.triangles.extend(bumperRF.triangles) self.triangles.extend(bumperRB.triangles) self.triangles.extend(bumperLF.triangles) self.triangles.extend(bumperLB.triangles) # Bosses bosses = [ plan.bosses.alnumB, plan.bosses.thumbF, plan.bosses.pinkyB, plan.bosses.pinkyF] if cfg.palm: bosses.append(plan.bosses.hitchL) bosses.append(plan.bosses.hitchR) for boss in bosses: bodyHoles.append(boss.clearanceHole) floorHoles.append(boss.headHole) self.triangles.extend(boss.headTriangles) # Triangles innerEdge.add(profile[-1]) bodyEdge.add(profile[1], reversed(profile[2])) lipEdge.add(profile[3], reversed(profile[4])) # HACK: Fill gaps caused by brackets profile[2] = Edge(profile[2][0].yz, profile[2], profile[2][-1].yz) profile[3] = Edge(profile[3][0].yz, profile[3], profile[3][-1].yz) for i in 0, 2, 4, 5: self.triangles.extend(profile[i].meshPairwise(profile[i+1])) self.faces.append(Face(splitEdge.collapsed(), splitHoles)) self.faces.append(Face(floorEdge, floorHoles)) self.faces.append(Face(bodyEdge, bodyHoles)) self.faces.append(Face(lipEdge.collapsed())) self.faces.append(Face(innerEdge, innerHoles)) def _cornerBumper(a, b, c, bumperInset): """Place bumper into rounded corner with the correct margin.""" cornerRadius = cfg.body.outerCornerRadius aDir = (a - b).normalized2D() cDir = (c - b).normalized2D() cornerAngle = math.acos(aDir.dot(cDir)) cornerDiag = cornerRadius / math.sin(cornerAngle/2) bumperDiag = bumperInset / math.sin(cornerAngle/2) diagOverlap = (cornerDiag - cornerRadius) - (bumperDiag - bumperInset) bumperDiag += max(0, diagOverlap) bumperDir = (aDir + cDir).normalized2D() return Bumper(b + bumperDir*bumperDiag) def _naiveOffset2D(edge, distance, isClosed=False, minSegLength=1e-3): """Grow or shrink a simple polygon edge by the given distance. Note that the robust offsetting of arbitrary polygons is non-trivial and out of scope for this function. Avoid overly sharp angles. Avoid offset distances that cause a fundamental change of the topology. One simple polygon is returned. """ def connect(segments): """Connect segments at their intersections as lines.""" for i in range(len(segments)): seg0 = segments[i-1] seg1 = segments[i] middle = seg0.intersect2D(seg1, asLine=2) if middle is None: middle = (seg0.b + seg1.a) / 2 seg0.b = middle seg1.a = middle if abs(distance) < 1e-6: return edge # Offset segments segments = edge.toSegments(True) offset = [s.offset2D(distance) for s in segments] if not isClosed: offset[-1] = segments[-1].offset2D(0) # Extend and reconnect offset segments. # In case of a sharp angle, the intersection # will be far away from the original point. connect(offset) # Reorder segments to start at a point that # is not part of a self-intersecting loop startIndex = 0 for i, startSegment in enumerate(offset): isTooClose = False for segment in segments: if segment.distance2D(startSegment.a) < abs(distance) - 1e-6: isTooClose = True break if not isTooClose: startIndex = i break offset = offset[startIndex:] + offset[:startIndex] # Cut off self-intersecting loops i = 0 while i < len(offset): segment = offset[i] cutPos = None cutDist = None cutIndex = None for j in range(i+2, len(offset) - int(i == 0)): pos = segment.intersect2D(offset[j]) if pos is not None: dist = (pos - segment.a).magSquared() if cutDist is None or dist < cutDist: cutPos = pos cutDist = dist cutIndex = j if cutIndex is not None: del offset[i+1:cutIndex] offset[i].b = cutPos offset[i+1].a = cutPos i += 1 # Remove segments that are too short offset = [s for s in offset if s.magnitude2D() >= minSegLength] connect(offset) # Reorder segments to start near the original start point distances = [(s.a - edge[0]).magSquared() for s in offset] minIndex = distances.index(min(distances)) offset = offset[minIndex:] + offset[:minIndex] return Edge(s.a for s in offset) def _hexGrid2D(edge): """Fill polygon edge with a hexagon grid. If a hexagon does not fit completely, then scale it down toward the vertex that is furthest inside the polygon. """ minDiameter = cfg.floor.hexHoles.minDiameter maxDiameter = cfg.floor.hexHoles.maxDiameter cornerRadius = cfg.floor.hexHoles.cornerRadius xOffset = cfg.floor.hexHoles.xOffset yOffset = cfg.floor.hexHoles.yOffset holeMargin = cfg.floor.hexHoles.holeMargin hexagons = [] segments = edge.toSegments(True) minX = min(p.x for p in edge) maxX = max(p.x for p in edge) minY = min(p.y for p in edge) maxY = max(p.y for p in edge) maxRadius = maxDiameter/2 minRadius = maxRadius/2 * 3**0.5 xPitch = 3*maxRadius + holeMargin * 3**0.5 yPitch = 2*minRadius + holeMargin xStart = minX + maxRadius + xOffset yStart = minY + minRadius + yOffset - yPitch row = 0 x = xStart y = yStart while y < maxY + minRadius: while x < maxX + maxRadius: center = Vector(x, y) hexagon = Edge( Vector(x - maxRadius, y), Vector(x - maxRadius/2, y - minRadius), Vector(x + maxRadius/2, y - minRadius), Vector(x + maxRadius, y), Vector(x + maxRadius/2, y + minRadius), Vector(x - maxRadius/2, y + minRadius)) # Increment before possible continue statments x += xPitch # Check if hexagon is completely inside or outside (cheap) centerDist = min(s.distance2D(center) for s in segments) if centerDist >= maxRadius: if edge.contains2D(center): hexagons.append(hexagon) continue # Scale down partially contained hexagon (expensive) bestFactor = 0.0 bestCenter = None pointsInHex = [p for p in edge if hexagon.contains2D(p)] for i, scaleCenter in enumerate(hexagon): if not edge.contains2D(scaleCenter): continue minFactor = 1.0 # Find scale factor to exclude all polygon points # _____ # / \. ray # / p'\ # \ .' / # \.' / # c---- scaleCenter if pointsInHex: for point in pointsInHex: if point.isClose(scaleCenter): continue ray = Segment(scaleCenter, point) for j in range(1, len(hexagon) - 1): hexSegment = Segment(hexagon[i-j-1], hexagon[i-j]) rayIntersect = hexSegment.intersect2D(ray, asLine=1) if rayIntersect is None: continue pointDist = (point - scaleCenter).magnitude() rayDist = (rayIntersect - scaleCenter).magnitude() minFactor = min(pointDist / rayDist, minFactor) # Find scale factor to exclude all polygon segments # _____ diag # / /\ # -/----p--\-- segment # \ / / # \ / / # c---- scaleCenter for j in range(1, len(hexagon)): diag = Segment(scaleCenter, hexagon[i-j]) for segment in segments: point = diag.intersect2D(segment) if point is None: continue pointDist = (point - scaleCenter).magnitude() diagDist = diag.magnitude2D() minFactor = min(pointDist / diagDist, minFactor) if minFactor > bestFactor: bestFactor = minFactor bestCenter = scaleCenter # Add scaled hexagon if maxDiameter*bestFactor >= minDiameter: hexagons.append(hexagon.scaled(bestFactor, bestCenter)) row += 1 x = xStart + xPitch/2*(row % 2) y = yStart + yPitch/2*row if cornerRadius > 0: hexagons = [Edge(cornerArc2D( cornerRadius, hexagon[i-2], hexagon[i-1], hexagon[i]) for i in range(6)) for hexagon in hexagons] return hexagons ================================================ FILE: body/chrumm/part/key.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Matrix from chrumm.geo import Vector class KeyFactory: """Construct and cache the geometry of keys.""" def __init__(self): self.boundsI = Edge() self.boundsO = Edge() self.roofHoleI = Edge() self.roofHoleO = Edge() self.triangles = [] holeW = cfg.switch.width holeD = cfg.switch.depth holeH = cfg.body.roofThickness pinH = cfg.switch.pinHeight innerH = cfg.switch.innerHeight innerMargin = cfg.switch.innerMargin outerMargin = cfg.switch.outerMargin entryChamfer = cfg.switch.entryChamfer hasClip = cfg.switch.clipNotch and cfg.switch.clipNotch.height < holeH isSideways = hasClip and getattr(cfg.switch.clipNotch, "isSideways", False) if isSideways: holeW, holeD = holeD, holeW holeL = -holeW/2 holeR = holeW/2 holeF = -holeD/2 holeB = holeD/2 # Bounds self.boundsO.add( Vector(holeL - outerMargin, holeF - outerMargin), Vector(holeL - outerMargin, holeB + outerMargin), Vector(holeR + outerMargin, holeB + outerMargin), Vector(holeR + outerMargin, holeF - outerMargin)) self.boundsI.add( Vector(holeL - innerMargin, holeF - innerMargin, -holeH), Vector(holeL - innerMargin, holeB + innerMargin, -holeH), Vector(holeR + innerMargin, holeB + innerMargin, -holeH), Vector(holeR + innerMargin, holeF - innerMargin, -holeH), Vector(holeL, holeF, -innerH - pinH), Vector(holeL, holeB, -innerH - pinH), Vector(holeR, holeB, -innerH - pinH), Vector(holeR, holeF, -innerH - pinH)) # Left side entryEdge = Edge( Vector(holeL, holeF - entryChamfer), Vector(holeL - entryChamfer, holeF)) chamferEdge = Edge( Vector(holeL, holeF, -entryChamfer), Vector(holeL, holeF, -entryChamfer)) exitEdge = Edge( Vector(holeL, holeF, -holeH), Vector(holeL, holeF, -holeH)) for edge in [entryEdge, chamferEdge, exitEdge]: edge.add(edge.mirroredY().reversed()) self.triangles.extend(exitEdge.meshPairwise(chamferEdge)) self.triangles.extend(chamferEdge.meshPairwise(entryEdge)) # Back clip notch if hasClip: clipW = cfg.switch.clipNotch.width clipD = cfg.switch.clipNotch.depth clipH = cfg.switch.clipNotch.height clipAngle = cfg.switch.clipNotch.taperAngle clipTaper = clipD / math.cos(clipAngle) * math.sin(clipAngle) clipEdgeG = Edge( Vector(-clipW/2, holeB, -holeH), Vector(-clipW/2 + clipTaper, holeB + clipD, -holeH), Vector(clipW/2 - clipTaper, holeB + clipD, -holeH), Vector(clipW/2, holeB, -holeH)) clipEdgeT = clipEdgeG.translated(Vector(0, 0, holeH - clipH)) clipEdgeF = Edge(clipEdgeG[0], clipEdgeT[0], clipEdgeT[-1], clipEdgeG[-1]) entryEdgeB = Edge(entryEdge[-1], entryEdge[-1].mirroredX()) chamferEdgeB = Edge(chamferEdge[-1], chamferEdge[-1].mirroredX()) wallEdgeB = Edge(exitEdge[-1], chamferEdgeB, exitEdge[-1].mirroredX()) exitEdge.add(clipEdgeG) self.triangles.extend(chamferEdgeB.meshPairwise(entryEdgeB)) self.triangles.extend(clipEdgeF.meshPairwise(wallEdgeB)) self.triangles.extend(clipEdgeG.meshPairwise(clipEdgeT)) self.triangles.extend(clipEdgeT[:2].meshPairwise(clipEdgeT[2:].reversed())) else: wallEdgeLB = Edge(exitEdge[-1], chamferEdge[-1], entryEdge[-1]) wallEdgeRB = wallEdgeLB.mirroredX() self.triangles.extend(wallEdgeRB.meshPairwise(wallEdgeLB)) # Opposite half entryEdge = entryEdge.collapsed() entryEdge.add(entryEdge.mirroredX().mirroredY()) exitEdge = exitEdge.collapsed().reversed() exitEdge.add(exitEdge.mirroredX().mirroredY()) self.roofHoleO = entryEdge self.roofHoleI = exitEdge self.triangles.extend([t.mirroredX().mirroredY() for t in self.triangles]) if isSideways: rotate = Matrix().rotatedZ(math.tau/4) self.boundsI = self.boundsI.transformed(rotate) self.boundsO = self.boundsO.transformed(rotate) self.roofHoleI = self.roofHoleI.transformed(rotate) self.roofHoleO = self.roofHoleO.transformed(rotate) self.triangles = [t.transformed(rotate) for t in self.triangles] def make(self, units=1): return Key(self, units) class Key: def __init__(self, factory, units): self.matrix = Matrix() pitchX = cfg.layout.columnPitch pitchY = cfg.layout.rowPitch marginX = pitchX - cfg.layout.capWidth marginY = pitchY - cfg.layout.capDepth capW = pitchX*units - marginX capD = pitchY - marginY self._factory = factory self._capPivotL = Vector(-capW/2 - marginX/2, -capD/2) self._capPivotR = Vector(capW/2 + marginX/2, -capD/2) self._capBounds = Edge( Vector(-capW/2 - marginX, -capD/2 - marginY), Vector(capW/2 + marginX, -capD/2 - marginY), Vector(capW/2 + marginX, capD/2 + marginY), Vector(-capW/2 - marginX, capD/2 + marginY)) def translate(self, vector): self.matrix = self.matrix.translated(vector) def transform(self, matrix): self.matrix = self.matrix * matrix @property def position(self): return Vector().transformed(self.matrix) @property def capPivotL(self): return self._capPivotL.transformed(self.matrix) @property def capPivotR(self): return self._capPivotR.transformed(self.matrix) @property def boundsI(self): return self._factory.boundsI.transformed(self.matrix) @property def boundsO(self): return (self._factory.boundsO + self._capBounds).transformed(self.matrix) @property def bounds(self): return self.boundsI + self.boundsO @property def roofHoleI(self): return self._factory.roofHoleI.transformed(self.matrix) @property def roofHoleO(self): return self._factory.roofHoleO.transformed(self.matrix) @property def triangles(self): return [t.transformed(self.matrix) for t in self._factory.triangles] ================================================ FILE: body/chrumm/part/knob.py ================================================ import logging import math from chrumm import cfg from chrumm.geo import Circle from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Line from chrumm.geo import Matrix from chrumm.geo import Vector from .arc import arc2D log = logging.getLogger(__name__) class Knob: def __init__(self): self.triangles = [] outerRadius = cfg.knob.outerDiameter/2 outerChamfer = cfg.knob.outerChamfer roofThickness = cfg.knob.roofThickness shaftHeight = cfg.knob.shaftHeight skirtThickness = cfg.knob.skirtThickness skirtHeight = cfg.knob.skirtHeight # Upside down construction # # skirtEdgeG _ grooveEdgeG # | | | # skirtEdgeT |_ _| | # shaftEdgeG | | | # shaftEdgeT |_| | grooveEdgeT # ______/ chamferEdge radiusT = outerRadius - outerChamfer centerG = Vector(0, 0, skirtHeight + shaftHeight + roofThickness) shaftG = Vector(0, 0, roofThickness + shaftHeight) shaftT = Vector(0, 0, roofThickness) grooveSketch = Knob._grooveSketch2D() grooveEdgeG = grooveSketch.translated(centerG) grooveEdgeT = Edge(Vector(p.x, p.y, p.magnitude() - radiusT) for p in grooveSketch) chamferEdge = Edge(p.normalized()*radiusT for p in grooveSketch) shaftSketch = Knob._shaftSketch2D() shaftEdgeG = shaftSketch.translated(shaftG) shaftEdgeT = shaftSketch.translated(shaftT) skirtSketch = arc2D(outerRadius - skirtThickness, 0, math.tau) skirtEdgeG = skirtSketch.translated(centerG) skirtEdgeT = skirtSketch.translated(shaftG) self.triangles.extend(Edge(Vector()).meshPairwise(chamferEdge, True)) self.triangles.extend(chamferEdge.meshPairwise(grooveEdgeT, True)) self.triangles.extend(grooveEdgeT.meshPairwise(grooveEdgeG, True)) self.triangles.extend(skirtEdgeG.meshPairwise(skirtEdgeT, True)) self.triangles.extend(shaftEdgeG.meshPairwise(shaftEdgeT, True)) self.triangles.extend(Face(shaftEdgeT).triangulate()) self.triangles.extend(Face(skirtEdgeT, [shaftEdgeG.reversed()]).triangulate()) self.triangles.extend(Face(grooveEdgeG, [skirtEdgeG.reversed()]).triangulate()) @staticmethod def _grooveSketch2D(): outerRadius = cfg.knob.outerDiameter/2 outerChamfer = cfg.knob.outerChamfer grooveCount = cfg.knob.grooveCount grooveRadius = cfg.knob.grooveDiameter/2 grooveInset = cfg.knob.grooveInset cornerRadius = cfg.knob.grooveCornerRadius if grooveCount <= 0: return arc2D(outerRadius, 0, math.tau) # Check if inset causes overlapping geometry tangentHypot = (outerRadius**2 + grooveRadius**2)**0.5 tangentInset = grooveRadius - (tangentHypot - outerRadius) if grooveInset >= tangentInset: raise ValueError("knob.grooveInset is too big in relation to knob.grooveDiameter.") if grooveInset >= outerChamfer: raise ValueError("knob.grooveInset must be less than knob.outerChamfer.") # Construct right half of backmost groove segment # # corner # .--. # /| |\ outer # __.-' '--' \ # groove . start grooveCenter = Vector(0, outerRadius + grooveRadius - grooveInset) shrunkOuterCircle = Circle(Vector(), outerRadius - cornerRadius) grownGrooveCircle = Circle(grooveCenter, grooveRadius + cornerRadius) cornerCenter = shrunkOuterCircle.intersect2D(grownGrooveCircle)[1] segmentSpan = math.tau / grooveCount cornerStart = cornerCenter.angle2D() grooveStart = (cornerCenter - grooveCenter).angle2D() outerStart = math.tau/4 - segmentSpan/2 outerSpan = -(outerStart - cornerStart) grooveSpan = -(math.tau/4 + grooveStart) cornerSpan = (grooveCenter - cornerCenter).angle2D() - cornerStart segment = Edge( arc2D(outerRadius, outerStart, outerSpan), arc2D(cornerRadius, cornerStart, cornerSpan, cornerCenter), arc2D(grooveRadius, grooveStart, grooveSpan, grooveCenter)) # Mirror left segment half and repeat around circle segment.add(segment.mirroredX().reversed()) edge = Edge(segment) for i in range(1, grooveCount): rotation = Matrix().rotatedZ(segmentSpan*i) edge.add(segment.transformed(rotation)) return edge.snapped().collapsed() @staticmethod def _shaftSketch2D(): shaftAcrossFlat = cfg.knob.shaftAcrossFlat shaftRadius = cfg.knob.shaftDiameter/2 prongRadius = cfg.knob.prongDiameter/2 prongAngle = math.radians(15) relProngPitch = 1/3 relNotchSize = 2/3 # Construct right half # # -. notch # ) # (_.-''. hinge # prong | # / # ___.-' shaft # Prong and notch center flatY = shaftAcrossFlat - shaftRadius flatX = (shaftRadius**2 - flatY**2)**0.5 flatVertex = Vector(flatX, flatY) prongX = flatX * relProngPitch prongY = flatY + prongRadius prongCenter = Vector(prongX, prongY) notchRadius = prongX - prongRadius*(1 - relNotchSize) notchOffset = ((prongRadius + notchRadius)**2 - prongX**2)**0.5 notchCenter = Vector(0, prongY + notchOffset) # Rounded hinge flatDiagonal = Line(Vector(), flatVertex) shaftTangent = Line(flatVertex, flatDiagonal.dir.ortho2D()) prongDir = Vector(math.cos(prongAngle), math.sin(prongAngle)) prongTouch = prongCenter - prongDir.ortho2D()*prongRadius prongTangent = Line(prongTouch, prongDir) bisectPos = shaftTangent.intersect(prongTangent) bisectDir = shaftTangent.dir + prongTangent.dir hingeBisect = Line(bisectPos, bisectDir) hingeCenter = flatDiagonal.intersect(hingeBisect) hingeRadius = (hingeCenter - flatVertex).magnitude2D() # Arc angles notchStart = (prongCenter - notchCenter).angle2D() notchSpan = math.pi/2 - notchStart prongStart = math.pi/2*3 + prongAngle prongSpan = math.pi + notchStart - prongStart hingeStart = hingeCenter.angle2D() hingeSpan = math.pi/2 + prongAngle - hingeStart shaftStart = math.pi/2*3 shaftSpan = math.pi/2 + hingeStart half = Edge( arc2D(shaftRadius, shaftStart, shaftSpan), arc2D(hingeRadius, hingeStart, hingeSpan, hingeCenter), arc2D(prongRadius, prongStart, prongSpan, prongCenter), arc2D(notchRadius, notchStart, notchSpan, notchCenter)) return (half + half.mirroredX().reversed()).snapped().collapsed() ================================================ FILE: body/chrumm/part/layout.py ================================================ import math from chrumm import cfg from chrumm.geo import Matrix from chrumm.geo import Vector from .key import KeyFactory class Layout: """Arrange keys and provide access to named key groups.""" def __init__(self): self._fingersL = [] self._fingersR = [] self._thumbL = [] self._thumbR = [] colPitch = cfg.layout.columnPitch rowPitch = cfg.layout.rowPitch staggers = cfg.layout.fingerStaggers thumbUnits = cfg.layout.thumbUnits thumbAngles = cfg.layout.thumbAngles thumbOffsets = cfg.layout.thumbOffsets factory = KeyFactory() # Sanity check for row in staggers: if len(row) != 4 or any(len(row[i]) != len(staggers[0][i]) for i in range(4)): raise ValueError("Malformed layout.fingerStaggers.") if (len(thumbUnits) != 2 or len(thumbAngles) != 2 or len(thumbUnits[0]) != len(thumbAngles[0]) or len(thumbUnits[1]) != len(thumbAngles[1])): raise ValueError("Malformed layout.thumbUnits or layout.thumbAngles.") # Fingers def initFingers(target, sign): row = 0 while row < len(staggers): target.append([]) col = 0 for group in staggers[row][::sign][2:]: target[-1].append([]) for stagger in group[::sign]: key = None if type(stagger) != list: stagger = [stagger] if stagger: dx = stagger[0]*sign if len(stagger) > 1 else 0 dy = stagger[1] if len(stagger) > 1 else stagger[0] pos = Vector(col*colPitch + dx, -row*rowPitch + dy) key = factory.make() key.translate(pos) target[-1][-1].append(key) col += 1 row += 1 initFingers(self._fingersR, 1) initFingers(self._fingersL, -1) # Thumbs def initThumb(target, side, index, sign): units = thumbUnits[index][::sign] angles = thumbAngles[index][::sign] offset = thumbOffsets[index] startPos = self.alnumCol(-1, side)[-1].capPivotR pivotPos = startPos - Vector(offset[0], rowPitch + offset[1]) for unit, angle in zip(units, angles): key = factory.make(unit) key.transform(Matrix().rotatedZ(math.radians(angle))) key.translate(pivotPos - key.capPivotR) target.insert(0, key) pivotPos = key.capPivotL initThumb(self._thumbL, "left", 0, 1) initThumb(self._thumbR, "right", 1, -1) def all(self, side="both"): return self.alnum(side) + self.pinky(side) + self.thumb(side) def alnum(self, side="both"): return self._group(0, side) def pinky(self, side="both"): return self._group(1, side) def alnumCol(self, index, side="both"): return self._col(0, index, side) def pinkyCol(self, index, side="both"): return self._col(1, index, side) def perAlnumCol(self, index, side="both"): return self._perCol(0, index, side) def perPinkyCol(self, index, side="both"): return self._perCol(1, index, side) def maxAlnum(self, side="both"): return max(self.alnum(side), key=lambda k: k.position) def minPinky(self, side="both"): return min(self.pinky(side), key=lambda k: k.position) def thumb(self, side="both"): keys = [] if side != "left": keys += self._thumbR if side != "right": keys += self._thumbL return [key for key in keys if key] def _halves(self, side="both"): halves = [] if side != "left": halves.append(self._fingersR) if side != "right": halves.append(self._fingersL) return halves def _group(self, group, side): keys = [] for half in self._halves(side): keys.extend(key for row in half for key in row[group] if key) return keys def _col(self, group, index, side): keys = [] for half in self._halves(side): keys.extend(row[group][index] for row in half if row[group][index]) return keys def _perCol(self, group, index, side): keys = [] for half in self._halves(side): cols = len(half[0][group]) keys.extend(self._col(group, c, side)[index] for c in range(cols)) return keys ================================================ FILE: body/chrumm/part/palm.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Line from chrumm.geo import Matrix from chrumm.geo import Plane from chrumm.geo import Vector from .arc import arc2D from .arc import cornerArc2D from .bumper import Bumper class Palm: def __init__(self, plan): self.faces = [] self.triangles = [] floorHeight = cfg.floor.outerHeight taperAngle = cfg.palm.taperAngle bodyMargin = cfg.palm.bodyMargin palmHeight = cfg.palm.height floorFillet = cfg.palm.floorFillet floorContact = cfg.palm.floorContactWidth hitchDepth = cfg.palm.hitchDepth hitchRadius = cfg.palm.hitchCornerRadius thumbLF = plan.points.thumbOLF.xy pinkyRF = plan.points.pinkyORF.xy hitchLB = plan.points.hitchOLB hitchRB = plan.points.hitchORB bossL = plan.bosses.hitchL bossR = plan.bosses.hitchR # Roof edges planeNormal = Vector(math.cos(taperAngle), -math.sin(taperAngle)) planeOutset = (pinkyRF - thumbLF).magnitude() / 2 planeL = Plane(Vector(-planeOutset), planeNormal.mirroredX()) planeR = Plane(Vector(planeOutset), planeNormal) roofSpine = Palm._roofSpine() roofL = Edge(planeL.intersect(r) for r in roofSpine) roofR = Edge(planeR.intersect(r) for r in roofSpine) palmBG = Vector(0, roofL[0].y, -floorHeight) palmFG = Vector(0, roofL[-1].y, -floorHeight) # Final height roofRaise = Vector(0, 0, palmHeight - floorHeight - max(p.z for p in roofL)) roofL = roofL.translated(roofRaise) roofR = roofR.translated(roofRaise) minRoofZ = min(p.z for p in roofL + roofR) minPalmHeight = palmHeight - minRoofZ - floorHeight + floorFillet if palmHeight <= minPalmHeight: raise ValueError(f"palm.height must be greater than: {minPalmHeight:.3f}") # Front ground fillet filletCenterF = Vector(0, palmFG.y + floorFillet, -floorHeight + floorFillet) filletSketchF = arc2D(floorFillet, math.tau/2, math.tau/4) filletSketchF = Edge(Vector(0, p.x, p.y) + filletCenterF for p in filletSketchF) filletLinesF = [Line(p, Vector(1)) for p in filletSketchF] roofL.add(planeL.intersect(f) for f in filletLinesF) roofR.add(planeR.intersect(f) for f in filletLinesF) # Back ground fillet filletCenterB = Vector(0, palmBG.y - floorFillet, filletCenterF.z) filletSketchB = arc2D(floorFillet, math.tau*0.75, math.tau/4) filletSketchB = Edge(Vector(0, p.x, p.y) + filletCenterB for p in filletSketchB) filletLinesB = [Line(p, Vector(1)) for p in filletSketchB] filletLB = Edge(planeL.intersect(f) for f in filletLinesB) filletRB = Edge(planeR.intersect(f) for f in filletLinesB) # Hitch notch notchY = palmFG.y + floorContact notchBT = Line(Vector(0, -bodyMargin, 0), Vector(1)) notchBG = Line(Vector(0, -bodyMargin, -floorHeight), Vector(1)) notchFT = Line(Vector(0, notchY + floorHeight, 0), Vector(1)) notchFG = Line(Vector(0, notchY, -floorHeight), Vector(1)) floorOffset = Vector(0, 0, floorHeight) notchTaperOffset = floorOffset - planeR.normal*floorHeight notchFloorOffset = floorOffset + planeR.normal*floorContact notchRG = Line(planeR.pos - notchFloorOffset, planeR.normal.ortho2D()) notchRT = notchRG.translated(notchTaperOffset) notchRFT = notchFT.intersect(notchRT) notchRFG = notchFG.intersect(notchRG) notchRBT = notchBT.intersect(notchRT) notchRBG = notchBG.intersect(notchRG) notchTaperNormal = notchTaperOffset.normalized() notchTaperPlaneR = Plane(notchRBG, notchTaperNormal - planeR.normal) notchFilletRG = Edge(notchTaperPlaneR.intersect(f) for f in filletLinesB) notchFilletRT = notchFilletRG.translated(notchRBT - notchRBG) notchFilletLT = notchFilletRT.mirroredX() notchFilletLG = notchFilletRG.mirroredX() notchCornerRT = cornerArc2D(hitchRadius, notchRBT, notchRFT, notchRFT.yz) notchCornerRG = ( notchCornerRT .translated(-notchRFT) .scaled(1 + floorHeight/hitchRadius) .translated(notchRFG)) notchEdgeT = Edge(notchFilletRT[0], notchCornerRT) notchEdgeG = Edge(notchFilletRG[0], notchCornerRG) notchEdgeT.add(notchEdgeT.mirroredX().reversed()) notchEdgeG.add(notchEdgeG.mirroredX().reversed()) backEdgeT = Edge(filletLB[-1], roofL[0], roofR[0], filletRB[-1]) backEdgeG = Edge( notchFilletLG[-1], notchFilletLT[-1], notchFilletRT[-1], notchFilletRG[-1]) maxNotchW = notchRBT.x * 2 maxHitchW = (hitchLB - hitchRB).magnitude() + hitchRadius maxNotchY = notchRFT.y minHitchY = -(hitchDepth + bodyMargin) if maxNotchW <= maxHitchW or maxNotchY >= minHitchY: raise ValueError("The palm hitch overlaps the palm notch.") self.triangles.extend(roofL.meshPairwise(roofR)) self.triangles.extend(backEdgeT.meshPairwise(backEdgeG)) self.triangles.extend(notchEdgeG.meshPairwise(notchEdgeT)) self.triangles.extend(filletLB.meshPairwise(notchFilletLG)) self.triangles.extend(notchFilletLG.meshPairwise(notchFilletLT)) self.triangles.extend(notchFilletLT.meshPairwise(notchFilletRT)) self.triangles.extend(notchFilletRT.meshPairwise(notchFilletRG)) self.triangles.extend(notchFilletRG.meshPairwise(filletRB)) # Groove grooveLT = Edge() grooveLG = Edge() grooveRT = Edge() grooveRG = Edge() if cfg.palm.groove: grooveWidth = cfg.palm.groove.width grooveHeight = cfg.palm.groove.height grooveMargin = cfg.palm.groove.roofMargin relClampSize = cfg.palm.groove.relClampSize if grooveHeight <= floorFillet: raise ValueError("palm.floorFillet must be less than palm.groove.height.") grooveSpineT = Palm._roofSpine(grooveMargin) grooveSpineG = Palm._roofSpine(grooveMargin + grooveHeight) grooveSpineT = [g.translated(roofRaise) for g in grooveSpineT] grooveSpineG = [g.translated(roofRaise) for g in grooveSpineG] grooveLTO = Edge(planeL.intersect(g) for g in grooveSpineT) grooveLGO = Edge(planeL.intersect(g) for g in grooveSpineG) grooveRTO = Edge(planeR.intersect(g) for g in grooveSpineT) grooveRGO = Edge(planeR.intersect(g) for g in grooveSpineG) planeLI = Plane(planeL.pos - planeL.normal*grooveWidth, planeL.normal) planeRI = Plane(planeR.pos - planeR.normal*grooveWidth, planeR.normal) grooveLTI = Edge(planeLI.intersect(g) for g in grooveSpineT) grooveLGI = Edge(planeLI.intersect(g) for g in grooveSpineG) grooveRTI = Edge(planeRI.intersect(g) for g in grooveSpineT) grooveRGI = Edge(planeRI.intersect(g) for g in grooveSpineG) for edge in ( grooveLTO, grooveLGO, grooveRTO, grooveRGO, grooveLTI, grooveLGI, grooveRTI, grooveRGI): edge.insert(0, edge[0].xy - floorOffset) edge.append(edge[-1].xy - floorOffset) def addClamp(a, b, c, d): clampSize = grooveHeight * relClampSize clampOut = (d - a).ortho2D().normalized() * clampSize clampUp = Vector(0, 0, clampSize) clampA = a*0.8 + d*0.2 + clampOut + clampUp clampD = a*0.2 + d*0.8 + clampOut + clampUp self.triangles.extend(Edge(a, b, c, d).meshPairwise( Edge(clampA, clampA, clampD, clampD), True)) if relClampSize > 0: addClamp(grooveLGO[0], grooveLGO[1], grooveLGI[1], grooveLGI[0]) addClamp(grooveRGI[0], grooveRGI[1], grooveRGO[1], grooveRGO[0]) addClamp(grooveLGI[-1], grooveLGI[-2], grooveLGO[-2], grooveLGO[-1]) addClamp(grooveRGO[-1], grooveRGO[-2], grooveRGI[-2], grooveRGI[-1]) self.triangles.extend(grooveLGO[1:-1].meshPairwise(grooveLGI[1:-1])) self.triangles.extend(grooveRGI[1:-1].meshPairwise(grooveRGO[1:-1])) else: self.triangles.extend(grooveLGO.meshPairwise(grooveLGI)) self.triangles.extend(grooveRGI.meshPairwise(grooveRGO)) self.triangles.extend(grooveLTI.meshPairwise(grooveLTO)) self.triangles.extend(grooveRTO.meshPairwise(grooveRTI)) self.faces.append(Face(grooveLGI + grooveLTI.reversed())) self.faces.append(Face(grooveRTI + grooveRGI.reversed())) self.faces.append(Face(grooveLGO.reversed())) self.faces.append(Face(grooveRGO)) grooveLT = grooveLTO.reversed() grooveRT = grooveRTO.reversed() grooveLG = Edge( grooveLTO[-1], grooveLTI[-1], grooveLGI[-1], grooveLGO[-1], grooveLGO[0], grooveLGI[0], grooveLTI[0], grooveLTO[0]) grooveRG = Edge( grooveRTO[0], grooveRTI[0], grooveRGI[0], grooveRGO[0], grooveRGO[-1], grooveRGI[-1], grooveRTI[-1], grooveRTO[-1]) # Bumpers floorHoles = [] if cfg.bumper: bumperInset = cfg.bumper.margin + cfg.bumper.diameter/2 if cfg.palm.groove: bumperInset += grooveMargin + grooveHeight bumperInset = max(bumperInset, floorContact/2) bumperLineF = Line(Vector(0, palmFG.y + bumperInset), Vector(1)) bumperLineB = Line(Vector(0, palmBG.y - bumperInset), Vector(1)) bumperLinePos = planeL.pos - planeL.normal*(floorContact/2) bumperLineDir = planeL.normal.ortho2D() bumperLineL = Line(bumperLinePos, bumperLineDir) bumperLF = bumperLineL.intersect(bumperLineF) bumperLB = bumperLineL.intersect(bumperLineB) bumperRF = bumperLF.mirroredX() bumperRB = bumperLB.mirroredX() for bumperCenter in bumperLF, bumperLB, bumperRF, bumperRB: bumper = Bumper(bumperCenter) self.triangles.extend(bumper.triangles) floorHoles.append(bumper.floorEdge) # Final placement placeDelta = (thumbLF + pinkyRF)/2 placeAngle = (pinkyRF - thumbLF).angle2D() placeMatrix = Matrix().rotatedZ(placeAngle).translated(placeDelta) self.triangles = [t.transformed(placeMatrix) for t in self.triangles] self.triangles.extend(bossL.threadTriangles) self.triangles.extend(bossR.threadTriangles) # Faces floorHoles = [h.transformed(placeMatrix) for h in floorHoles] floorEdge = Edge( notchEdgeG.reversed(), filletRB[0], grooveRG, roofR[-1], roofL[-1], grooveLG, filletLB[0]) self.faces.append(Face(floorEdge, floorHoles)) self.faces.append(Face(Edge(filletRB, roofR, grooveRT).collapsed())) self.faces.append(Face(Edge(filletLB, roofL, grooveLT).collapsed().reversed())) self.faces.append(Face(notchEdgeT, [bossL.threadHole, bossR.threadHole])) for face in self.faces: face.edge = face.edge.transformed(placeMatrix) @staticmethod def _roofSpine(inset=0): """Return list of lines that describe the roof profile.""" bodyMargin = cfg.palm.bodyMargin tentAngle = cfg.palm.tentAngle tiltAngle = cfg.palm.tiltAngle palmDepth = cfg.palm.depth - 2*inset roundness = cfg.palm.relRoofRoundness roofFillet = max(0, cfg.palm.roofFillet - inset) # Construct separate 2D arcs roofAngle = math.tau/4 * max(0, min(roundness, 1)) endAngleB = math.tau/4 - roofAngle/2 + tiltAngle endAngleF = math.tau/4 - roofAngle/2 - tiltAngle endArcB = arc2D(roofFillet, 0, endAngleB) endArcF = arc2D(roofFillet, math.pi - endAngleF, endAngleF) endWidthB = endArcB[0].x - endArcB[-1].x endWidthF = endArcF[0].x - endArcF[-1].x roofWidth = palmDepth - endWidthB - endWidthF chordLength = roofWidth / math.cos(tiltAngle) if roofAngle > 0: # https://en.wikipedia.org/wiki/Circular_segment roofRadius = chordLength / (2 * math.sin(roofAngle/2)) # Scale the radius for a smoother segmentation roofArc = arc2D(roofRadius*2, endAngleB, roofAngle).scaled(0.5) else: roofHeight = chordLength * math.sin(tiltAngle) roofArc = Edge(Vector(), Vector(-roofWidth, -roofHeight)) # Join arcs sketchOffset = Vector(bodyMargin + roofFillet + inset, roofFillet + inset) sketch = endArcB.translated(-sketchOffset) sketch.add(roofArc[1:].translated(sketch[-1] - roofArc[0])) sketch.add(endArcF[1:].translated(sketch[-1] - endArcF[0])) # Use sketch to position 3D lines tentMatrix = Matrix().rotatedY(tentAngle) spine = Edge(Vector(0, p.x, p.y) for p in sketch) return [Line(p, Vector(1)).transformed(tentMatrix) for p in spine] ================================================ FILE: body/chrumm/part/plan.py ================================================ import logging import math import types from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Line from chrumm.geo import Matrix from chrumm.geo import Plane from chrumm.geo import Vector from .boss import Boss from .layout import Layout log = logging.getLogger(__name__) # Orientation # # .---------. # |\ HEIGHT \ # | \top \ # DEPTH | +z --------. # back +y | | # \ | | # \|left |right # front O------- +x WIDTH # ground # # I'm using the name "ground" instead of "bottom", # so that each location starts with a unique letter. # This allows for distinct abbreviations in code. class Plan: """Determine the arrangement of keys, bosses, and reference points. The geometry is always constructed on the right side, regardless of the side argument. Otherwise, each part would need to be implemented twice. The triangles of the left side are mirrored after construction. """ def __init__(self, side): self.side = side self.points = types.SimpleNamespace() self.planes = types.SimpleNamespace() self.bosses = types.SimpleNamespace() self.layout = Layout() # Shorthand points = self.points planes = self.planes splitAngle = cfg.body.splitAngle tiltAngle = cfg.body.tiltAngle alnumTentAngle = cfg.body.alnumTentAngle thumbTentAngle = cfg.body.thumbTentAngle pinkyTentAngle = cfg.body.pinkyTentAngle alnumBackAngle = cfg.body.alnumBackAngle alnumFrontAngle = cfg.body.alnumFrontAngle thumbFrontAngle = cfg.body.thumbFrontAngle minRoofHeight = cfg.body.minRoofHeight minRidgeWidth = cfg.body.minRidgeWidth relRidgeTaper = cfg.body.relRidgeTaper wallThickness = cfg.body.wallThickness roofThickness = cfg.body.roofThickness alnumFrontThickness = cfg.body.alnumFrontThickness if thumbTentAngle >= alnumTentAngle: raise ValueError("body.thumbTentAngle must be less than body.alnumTentAngle") # Tent pivot creaseOffset = Plan._tentCreaseOffset() for key in self.layout.alnum() + self.layout.thumb(): key.translate(creaseOffset) alnumMax = self.layout.maxAlnum().position pinkyMin = self.layout.minPinky().position pivotPos = (alnumMax + pinkyMin) / 2 # Alnum tent alnumPivotAngle = pinkyTentAngle + (alnumTentAngle - pinkyTentAngle)/2 alnumPivotMatrix = Matrix().rotatedY(alnumPivotAngle, pivotPos) alnumTentMatrix = Matrix().rotatedY(alnumTentAngle, pivotPos) planes.alnumIT = Plane.fromZ(-roofThickness).transformed(alnumTentMatrix) planes.alnumOT = Plane.fromZ(0).transformed(alnumTentMatrix) planes.pivotIB = Plane.fromX(pivotPos.x).transformed(alnumPivotMatrix) planes.pivotOB = Plane.fromX(pivotPos.x).transformed(alnumPivotMatrix) for key in self.layout.alnum(): key.transform(alnumTentMatrix) # Thumb tent thumbPivotAngle = pinkyTentAngle + (thumbTentAngle - pinkyTentAngle)/2 thumbPivotMatrix = Matrix().rotatedY(thumbPivotAngle, pivotPos) thumbTentMatrix = Matrix().rotatedY(thumbTentAngle, pivotPos) planes.thumbIT = Plane.fromZ(-roofThickness).transformed(thumbTentMatrix) planes.thumbOT = Plane.fromZ(0).transformed(thumbTentMatrix) planes.pivotIF = Plane.fromX(pivotPos.x).transformed(thumbPivotMatrix) planes.pivotOF = Plane.fromX(pivotPos.x).transformed(thumbPivotMatrix) for key in self.layout.thumb(): key.transform(thumbTentMatrix) # Pinky tent pinkyTentMatrix = Matrix().rotatedY(pinkyTentAngle, pivotPos) planes.pinkyIT = Plane.fromZ(-roofThickness).transformed(pinkyTentMatrix) planes.pinkyOT = Plane.fromZ(0).transformed(pinkyTentMatrix) for key in self.layout.pinky(): key.transform(pinkyTentMatrix) # Alnum walls alnumMinX = min(p.x for key in self.layout.alnum() for p in key.bounds) planes.alnumIL = Plane.fromX(alnumMinX) planes.alnumOL = Plane.fromX(alnumMinX) alnumLinesF = Plan._wallLines2D(self.layout.alnum(), alnumFrontThickness, alnumFrontAngle) planes.alnumIF = Plane.fromLine2D(alnumLinesF[0]) planes.alnumOF = Plane.fromLine2D(alnumLinesF[1]) # Move thumb cluster against alnum wall thumbBounds = [p for key in self.layout.thumb() for p in key.boundsO] alnumSlope = alnumLinesF[1].dir.y / alnumLinesF[1].dir.x alnumIntercept = alnumLinesF[1].pos.y - alnumLinesF[1].pos.x*alnumSlope thumbIntercept = max(p.y - p.x*alnumSlope for p in thumbBounds) thumbDelta = Vector(0, alnumIntercept - thumbIntercept) if thumbDelta.y < 0: log.debug("The %s thumb cluster is moved forward by: %.3f", side, -thumbDelta.y) for key in self.layout.thumb(): key.translate(thumbDelta) # Pinky walls pinkyLinesR = Plan._wallLines2D(self.layout.pinky(side), wallThickness, math.tau/4) planes.pinkyIR = Plane.fromLine2D(pinkyLinesR[0]) planes.pinkyOR = Plane.fromLine2D(pinkyLinesR[1]) # Tilt and split tiltSplitMatrix = Matrix().rotatedX(tiltAngle).rotatedZ(splitAngle) for key in self.layout.all(): key.transform(tiltSplitMatrix) for attr in planes.__dict__: setattr(planes, attr, getattr(planes, attr).transformed(tiltSplitMatrix)) # Vertical walls wallAngleB = alnumBackAngle + splitAngle + math.pi wallAngleF = thumbFrontAngle + splitAngle alnumLinesB = Plan._wallLines2D(self.layout.all(), wallThickness, wallAngleB) thumbLinesF = Plan._wallLines2D(self.layout.all(), wallThickness, wallAngleF) # Screw boss positions def fitBosses(side): pinkyKeysB = self.layout.perPinkyCol(0, side) pinkyKeysF = self.layout.perPinkyCol(-1, side) thumbKeysF = self.layout.thumb(side) alnumKeysB = Plan._alnumBossKeys( self.layout.perAlnumCol(0, side), Plane.fromX(0), planes.pivotOF, Plane.fromLine2D(alnumLinesB[1]), planes.alnumOT) # Some boss placements are repeated to account for moved walls. bossAlnumB = Plan._fitBoss2D(alnumLinesB, alnumKeysB[0], alnumKeysB[1]) bossPinkyB = Plan._fitBoss2D(alnumLinesB, pinkyKeysB[-1], pinkyKeysB[-2]) bossAlnumB = Plan._fitBoss2D(alnumLinesB, alnumKeysB[0], alnumKeysB[1]) bossThumbF = Plan._fitBoss2D(thumbLinesF, thumbKeysF[0], thumbKeysF[1]) bossPinkyF = Plan._fitBoss2D(thumbLinesF, pinkyKeysF[-1], pinkyKeysF[-2]) bossThumbF = Plan._fitBoss2D(thumbLinesF, thumbKeysF[0], thumbKeysF[1]) return bossAlnumB, bossPinkyB, bossPinkyF, bossThumbF # The walls must remain symmetric in order to match in the middle. # Because the walls are influenced by the bosses, and the bosses are # influenced by the layout, all bosses must be placed for either side. fitBosses("right" if side == "left" else "left") # Discard opposite bossAlnumB, bossPinkyB, bossPinkyF, bossThumbF = fitBosses(side) planes.alnumIB = Plane.fromLine2D(alnumLinesB[0]) planes.alnumOB = Plane.fromLine2D(alnumLinesB[1]) planes.pinkyIF = Plane.fromLine2D(thumbLinesF[0]) planes.pinkyOF = Plane.fromLine2D(thumbLinesF[1]) # Final x position alnumILB = planes.alnumIL.intersect(planes.alnumIB, planes.alnumIT) alnumOLB = planes.alnumOL.intersect(planes.alnumOB, planes.alnumOT) boundsDeltaX = -min(p.x for key in self.layout.all() for p in key.bounds) splitDeltaX = -min(alnumOLB.x, alnumILB.x) + minRidgeWidth/2 delta = Vector(max(boundsDeltaX, splitDeltaX)) for key in self.layout.all(): key.translate(delta) for attr in planes.__dict__: setattr(planes, attr, getattr(planes, attr).translated(delta)) alnumLinesB = [line.translated(delta) for line in alnumLinesB] thumbLinesF = [line.translated(delta) for line in thumbLinesF] bossAlnumB = bossAlnumB + delta bossPinkyB = bossPinkyB + delta bossThumbF = bossThumbF + delta bossPinkyF = bossPinkyF + delta # Thumb left front corner thumbBounds = [p for key in self.layout.thumb() for p in key.bounds] thumbDirL = Vector(0, 1).transformedNormal(self.layout.thumb("left")[0].matrix) thumbDirR = Vector(0, 1).transformedNormal(self.layout.thumb("right")[0].matrix) thumbLine = Line(Vector(), thumbDirL.xy + thumbDirR.xy) thumbOffset = min(thumbLine.distance2D(p) for p in thumbBounds) thumbLine = thumbLine.translated(thumbLine.dir.ortho2D()*-thumbOffset) thumbPlanePos = thumbLinesF[0].intersect(thumbLine) thumbPlaneNorm = thumbLinesF[0].dir + Vector(1, 0) planes.thumbIL = Plane(thumbPlanePos, thumbPlaneNorm) planes.thumbOL = Plane(thumbPlanePos, thumbPlaneNorm) # Ridge front slope thumbLB = planes.alnumOL.intersect(planes.alnumOF, planes.thumbOT).xy thumbLF = planes.thumbIL.intersect(planes.pinkyIF, planes.thumbIT).xy thumbOLB = planes.alnumOL.intersect(planes.alnumOF, planes.thumbOT) thumbILB = planes.alnumIL.intersect(planes.alnumIF, planes.thumbIT) slopeLB = Vector(0, thumbLB.y) slopeRF = Vector(thumbLB.x, thumbLF.y) slopeMid = slopeRF + (slopeLB - slopeRF)*relRidgeTaper sweepLine = Line(thumbLB, slopeMid - thumbLB) for point in thumbBounds: if sweepLine.distance2D(point) > 0: sweepLine = Line(sweepLine.pos, point.xy - sweepLine.pos) sweepIntersect = sweepLine.intersect(thumbLine) ridgeRF = planes.thumbOT.projectZ(min(sweepIntersect, slopeMid)) points.ridgeIRF = ridgeRF + (thumbILB - thumbOLB) points.ridgeORF = ridgeRF if points.ridgeORF.x < 0 or points.ridgeIRF.x < 0: raise ValueError( "The tapered front of the ridge is overlapping itself.\n" " Try to increase body.minRidgeWidth, body.splitAngle,\n" " or decrease body.relRidgeTaper.") # Body reference points points.alnumILF = planes.alnumIL.intersect(planes.alnumIF, planes.alnumIT) points.alnumILB = planes.alnumIL.intersect(planes.alnumIB, planes.alnumIT) points.alnumIRF = planes.thumbIT.intersect(planes.alnumIF, planes.alnumIT) points.alnumIRB = planes.pivotIB.intersect(planes.alnumIB, planes.alnumIT) points.pinkyIRF = planes.pinkyIR.intersect(planes.pinkyIF, planes.pinkyIT) points.pinkyIRB = planes.pinkyIR.intersect(planes.alnumIB, planes.pinkyIT) points.thumbILF = planes.thumbIL.intersect(planes.pinkyIF, planes.thumbIT) points.thumbILB = planes.alnumIL.intersect(planes.alnumIF, planes.thumbIT) points.thumbIRF = planes.pivotIF.intersect(planes.pinkyIF, planes.thumbIT) points.alnumOLF = planes.alnumOL.intersect(planes.alnumOF, planes.alnumOT) points.alnumOLB = planes.alnumOL.intersect(planes.alnumOB, planes.alnumOT) points.alnumORF = planes.thumbOT.intersect(planes.alnumOF, planes.alnumOT) points.alnumORB = planes.pivotOB.intersect(planes.alnumOB, planes.alnumOT) points.pinkyORF = planes.pinkyOR.intersect(planes.pinkyOF, planes.pinkyOT) points.pinkyORB = planes.pinkyOR.intersect(planes.alnumOB, planes.pinkyOT) points.thumbOLF = planes.thumbOL.intersect(planes.pinkyOF, planes.thumbOT) points.thumbOLB = planes.alnumOL.intersect(planes.alnumOF, planes.thumbOT) points.thumbORF = planes.pivotOF.intersect(planes.pinkyOF, planes.thumbOT) # Final z position minKeyZ = min(key.position.z for key in self.layout.all()) delta = Vector(0, 0, minRoofHeight - minKeyZ) for key in self.layout.all(): key.translate(delta) for obj in planes, points: for attr in obj.__dict__: setattr(obj, attr, getattr(obj, attr).translated(delta)) # Check z overlaps minBodyZ = min(p.z for p in points.__dict__.values()) minPinZ = min(p.z for key in self.layout.all(side) for p in key.boundsI) lipGap = minBodyZ - cfg.floor.lipHeight - cfg.body.innerChamfer pinGap = minPinZ + cfg.floor.outerHeight - cfg.floor.innerHeight - cfg.switch.floorMargin if lipGap < 0: raise ValueError(f"The body overlaps the floor lip by: {-lipGap:.3f}") if pinGap < 0: raise ValueError(f"The switches overlap the floor by: {-pinGap:.3f}") log.debug("Gap between %s body and floor lip: %.3f", side, lipGap) log.debug("Gap between %s switches and floor: %.3f", side, pinGap) # Bosses self.bosses.alnumB = Boss(bossAlnumB, Vector(1), alnumLinesB[0].dir, planes.alnumOT) self.bosses.pinkyB = Boss(bossPinkyB, Vector(1), alnumLinesB[0].dir, planes.pinkyOT) self.bosses.pinkyF = Boss(bossPinkyF, Vector(1), thumbLinesF[0].dir, planes.pinkyOT) self.bosses.thumbF = Boss(bossThumbF, Vector(1), thumbLinesF[0].dir, planes.thumbOT) # Palm hitch if cfg.palm: hitchD = cfg.palm.hitchDepth hitchPitch = cfg.palm.hitchScrewPitch hitchMargin = cfg.palm.bodyMargin hitchTaperAngle = cfg.palm.taperAngle pinkyRFG = points.pinkyORF.xy thumbLFG = points.thumbOLF.xy wallDir = (thumbLFG - pinkyRFG).normalized() wallOrtho = wallDir.ortho2D() hitchDirL = wallOrtho.transformed(Matrix().rotatedZ(hitchTaperAngle)) hitchDirR = -wallOrtho.transformed(Matrix().rotatedZ(-hitchTaperAngle)) hitchOrthoL = hitchDirL.ortho2D() hitchOrthoR = hitchDirR.ortho2D() hitchB = (thumbLFG + pinkyRFG)/2 hitchM = hitchB + wallOrtho*(hitchMargin + hitchD/2) hitchF = hitchB + wallOrtho*(hitchMargin + hitchD) hitchBossL = hitchM + wallDir*hitchPitch/2 hitchBossR = hitchM - wallDir*hitchPitch/2 hitchLineB = Line(hitchB, wallDir) hitchLineF = Line(hitchF, wallDir) hitchLineL = Line(hitchBossL - hitchOrthoL*hitchD/2, hitchDirL) hitchLineR = Line(hitchBossR - hitchOrthoR*hitchD/2, hitchDirR) points.hitchOLB = hitchLineB.intersect(hitchLineL) points.hitchORB = hitchLineB.intersect(hitchLineR) points.hitchOLF = hitchLineF.intersect(hitchLineL) points.hitchORF = hitchLineF.intersect(hitchLineR) self.bosses.hitchL = Boss(hitchBossL, hitchOrthoL) self.bosses.hitchR = Boss(hitchBossR, hitchOrthoL) @staticmethod def _tentCreaseOffset(): """Additional width to retain the cap top pitch across the tent crease.""" capHeight = cfg.layout.capTopToPlate halfPitch = cfg.layout.columnPitch/2 halfAngle = (cfg.body.alnumTentAngle - cfg.body.pinkyTentAngle)/2 pitchHypot = halfPitch / math.cos(halfAngle) heightOppo = capHeight / math.cos(halfAngle) * math.sin(halfAngle) return Vector(-2*(pitchHypot + heightOppo - halfPitch)) @staticmethod def _wallLines2D(keys, thickness, angle): """Return inner and outer wall lines against the key bounds.""" boundsI = [p.xy for key in keys for p in key.boundsI] boundsO = [p.xy for key in keys for p in key.boundsO] baseLine = Line(Vector(), Vector(math.cos(angle), math.sin(angle))) forward = baseLine.dir outward = -forward.ortho2D() maxBound = max(boundsI, key=lambda p: baseLine.distance2D(p)) lineI = Line(maxBound, forward) lineO = lineI.translated(outward * thickness) overlap = max(lineO.distance2D(p) for p in boundsO) if overlap > 0: offset = outward*overlap lineI = lineI.translated(offset) lineO = lineO.translated(offset) return [lineI, lineO] @staticmethod def _alnumBossKeys(keys, planeL, planeR, planeB, planeT): """Return key pair closest to the middle of the alnum back plane.""" pointL = planeL.intersect(planeB, planeT) pointR = planeR.intersect(planeB, planeT) middle = (pointL + pointR) / 2 distances = [] for i, key in enumerate(keys): line = Line(Vector(), Vector(0, 1)).transformed(key.matrix) intersect = planeB.intersect(line) distance = (middle - intersect).magSquared() distances.append((distance, i)) distances.sort() return [keys[i] for d, i in distances[:2]] @staticmethod def _fitBoss2D(wallLines, key0, key1): """Find a reasonable boss position between key0 and key1. If the boss does not fit, move wallLines to make room. """ # This is a simple brute-force approach. The result # is not mathematically perfect, but good enough. bossPlacingResolution = 0.5 wallPlacingResolution = 0.25 radius = cfg.boss.diameter/2 margin = cfg.boss.outerWallMargin hull0 = Edge.fromConvexHull2D(key0.boundsI) hull1 = Edge.fromConvexHull2D(key1.boundsI) line0 = Line(Vector(), Vector(0, 1)).transformed(key0.matrix) line1 = Line(Vector(), Vector(0, 1)).transformed(key1.matrix) line0 = Line(line0.pos.xy, line0.dir.xy) line1 = Line(line1.pos.xy, line1.dir.xy) forward = wallLines[1].dir outward = -forward.ortho2D() bossDelta = -outward*(radius + margin) wallDelta = outward*wallPlacingResolution # Look for a valid boss position parallel to the wall. # If no positions is valid, move the wall outward and repeat. while True: bossLine = wallLines[1].translated(bossDelta) intersect0 = bossLine.intersect(line0) intersect1 = bossLine.intersect(line1) bossMiddle = (intersect0 + intersect1)/2 # Oscillate around the middle to find a valid position for i in range(int(radius / bossPlacingResolution) + 1): for step in i, -i: bossPos = bossMiddle + forward*(step*bossPlacingResolution) dist0 = hull0.distance2D(bossPos) dist1 = hull1.distance2D(bossPos) if dist0 >= radius and dist1 >= radius: return bossPos wallLines[0] = wallLines[0].translated(wallDelta) wallLines[1] = wallLines[1].translated(wallDelta) ================================================ FILE: body/chrumm/part/support.py ================================================ import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Face from chrumm.geo import Vector from .arc import arc2D class SupportFactory: """Construct and cache the geometry of key hole supports.""" def __init__(self): self.triangles = [] holeW = cfg.switch.width holeD = cfg.switch.depth holeH = cfg.body.roofThickness # Support parameters in print orientation baseW = cfg.support.baseWidth baseD = cfg.support.baseDepth sideGap = cfg.support.sideGap baseGap = cfg.support.baseGap topGap = cfg.support.topGap topD = cfg.support.topDepth topW = holeD - 2*sideGap legacyBaseInset = 1 - sideGap/(holeH - baseD) legacyTopInset = 1 - sideGap/(holeH - topD) relBasePos = getattr(cfg.support, "relBasePosition", 0) relBaseInset = getattr(cfg.support, "relBaseInset", legacyBaseInset) relTopInset = getattr(cfg.support, "relTopInset", legacyTopInset) # Construction in standard orientation # # holeW # .-----------. # | .-------. | # | |support| | holeD # | '.. | | # | ''..| | y # | base top | zx baseInset = baseD/2 + (holeH - baseD)*relBaseInset topInset = topD/2 + (holeH - topD)*relTopInset centerL = Vector(-holeW/2 + baseGap, baseW/2 - baseD/2, -baseInset) centerR = Vector(holeW/2 - topGap, topW/2 - topD/2, -topInset) arc = Edge(Vector(0, p.y, -p.x) for p in arc2D(topD/2, 0, math.pi)) edgeL = arc.scaled(baseD/topD).translated(centerL) edgeR = arc.translated(centerR) edgeL.add(edgeL.mirroredY().reversed()) edgeR.add(edgeR.mirroredY().reversed()) baseMove = Vector(0, (topW - baseW)/2 - (topW - baseW)*relBasePos) edgeL = edgeL.translated(baseMove) self.triangles.extend(edgeL.meshPairwise(edgeR, True)) self.triangles.extend(Face(edgeL.reversed()).triangulate()) self.triangles.extend(Face(edgeR).triangulate()) def make(self, key): angle = abs(Vector(1, 0).transformedNormal(key.matrix).angle2D()) if angle <= cfg.support.minOverhangAngle: return [t.transformed(key.matrix) for t in self.triangles] return [] class Support: def __init__(self, plan): self.faces = [] self.triangles = [] supportFactory = SupportFactory() for key in plan.layout.all(plan.side): self.triangles.extend(supportFactory.make(key)) ================================================ FILE: body/chrumm/pcb.py ================================================ import copy import io import logging import math from chrumm import cfg from chrumm.geo import Edge from chrumm.geo import Line from chrumm.geo import Matrix from chrumm.geo import Vector log = logging.getLogger(__name__) def toKiCadFootprint(planR, planL): """Return switch position markers in the KiCad 7 footprint format.""" layoutR = copy.deepcopy(planR.layout) layoutL = copy.deepcopy(planL.layout) _flattenLayout(layoutR) _flattenLayout(layoutL) for key in layoutR.all() + layoutL.all(): if abs(key.position.z) > 1e-6: log.warning("Could not flatten layout for KiCad footprint.") return "" with io.StringIO() as stream: stream.write( '(footprint "" (generator chrumm)\n' ' (attr board_only exclude_from_pos_files exclude_from_bom)\n' ' (fp_text reference "" (at 0 0) (layer "F.Fab") hide)\n' ' (fp_text value "" (at 0 0) (layer "F.Fab") hide)\n') _writeKeys(stream, layoutR.all("right"), "F") _writeKeys(stream, layoutL.all("left"), "B") if cfg.pcb.mount: _writeMounts(stream, layoutR, "F") _writeMounts(stream, layoutL, "B") stream.write(')\n') return stream.getvalue() def _flattenLayout(layout): splitAngle = cfg.body.splitAngle tiltAngle = cfg.body.tiltAngle pinkyTentAngle = cfg.body.pinkyTentAngle alnumTentAngle = cfg.body.alnumTentAngle switchHeight = cfg.switch.innerHeight pcbThickness = cfg.pcb.thickness # Rotate layout to align the pinky with the xy plane pinkyAlign = Matrix() pinkyAlign = pinkyAlign.rotatedZ(-splitAngle) pinkyAlign = pinkyAlign.rotatedX(-tiltAngle) pinkyAlign = pinkyAlign.rotatedY(-pinkyTentAngle) for key in layout.all(): key.transform(pinkyAlign) # Unfold alnum and align with the xy plane alnumAngle = alnumTentAngle - pinkyTentAngle maxAlnum = layout.maxAlnum().position minPinky = layout.minPinky().position midPos = (maxAlnum + minPinky)/2 midDir = Vector(math.sin(alnumAngle/2), 0, math.cos(alnumAngle/2)) pcbPos = minPinky - Vector(0, 0, switchHeight + pcbThickness) pcbDir = Vector(1, 0, 0) midLine = Line(midPos, midDir) pcbLine = Line(pcbPos, pcbDir) alnumPivot = pcbLine.intersect(midLine) alnumAlign = Matrix().rotatedY(-alnumAngle, alnumPivot) for key in layout.alnum(): key.transform(alnumAlign) # Set origin to the first pinky key originDelta = -layout.pinky()[0].position for key in layout.all(): key.translate(originDelta) def _writeKeys(stream, keys, layer): width = cfg.switch.width depth = cfg.switch.depth for key in keys: _writeKiCadMarker(stream, key.matrix, width, depth, layer) def _writeMounts(stream, layout, layer): diameter = cfg.pcb.mount.threadDiameter xDist = cfg.pcb.mount.xDistToFirstPinky yDist = cfg.pcb.mount.yDistToFirstPinky matrix = layout.pinky()[0].matrix.translated(Vector(-xDist, -yDist)) _writeKiCadMarker(stream, matrix, diameter, diameter, layer) def _writeKiCadMarker(stream, matrix, width, height, layer): def pretty(num): return f"{num:.3f}".rstrip("0").rstrip(".") marker = Edge( Vector(-width/2, -height/2), Vector(width/2, -height/2), Vector()).transformed(matrix) coords = [f'{pretty(-p.x)} {pretty(-p.y)}' for p in marker] angle = pretty(math.degrees((marker[1] - marker[0]).angle2D())) for i in range(3): stream.write( f' (fp_line (start {coords[i-1]}) (end {coords[i]})' f' (layer "{layer}.Cu") (width 0.05))\n') if angle != "0": stream.write( f' (fp_text user "-{angle}°" (at {coords[-1]}) (layer "{layer}.Fab")\n' f' (effects (font (size 3 3) (thickness 0.3)) (justify left)))\n') ================================================ FILE: body/chrumm/stl.py ================================================ import io import struct from chrumm import __version__ def toBytes(triangles): """Encode a list of triangles in the binary STL format.""" # https://en.wikipedia.org/wiki/STL_(file_format) header = f" Made with chrumm {__version__} ".encode() with io.BytesIO() as stream: stream.write(header.rjust(80, b"\0")) stream.write(struct.pack(" #if defined(ENCODER_A_PIN) && defined(ENCODER_B_PIN) static void report(uint32_t usage); void encoder_init() { gpio_init(ENCODER_A_PIN); gpio_set_dir(ENCODER_A_PIN, GPIO_IN); gpio_pull_up(ENCODER_A_PIN); gpio_init(ENCODER_B_PIN); gpio_set_dir(ENCODER_B_PIN, GPIO_IN); gpio_pull_up(ENCODER_B_PIN); } void encoder_tick() { // The signal is decoded with a simple state machine, // using a lookup table to determine the next state. // Rotation events are only reported if the signal goes // through the correct sequence of states. This filters out // contact bounces, without the need for extra hardware. // // EC11 quadrature signal // // _|_ | | _|___ A pin // | \_|___|_/ | // _|___|_ | | _ B pin // | | \_|___|_/ // 11 01 00 10 AB // // Signal state machine // // .---. <-01.---. <-00.---. <-10.---.01-> .---.00-> .---.10-> .---. // |001| |000| |010| | | |101| |100| |110| // '---'00-> '---'10-> '---'11-> |011| <-11'---' <-01'---' <-00'---' // 11 | | 11 // '-------------CCW EVENT-----> '---' <-----CW EVENT--------------' static const uint8_t next[28] = { 0b000, 0b001, 0b010, 0b000, // 000AB 0b000, 0b001, 0b001, 0b011, // 001AB 0b000, 0b010, 0b010, 0b011, // 010AB 0b011, 0b101, 0b010, 0b011, // 011AB 0b100, 0b101, 0b110, 0b100, // 100AB 0b100, 0b101, 0b101, 0b011, // 101AB 0b100, 0b110, 0b110, 0b011}; // 110AB static uint8_t state = 0b011; state = state<<1 | gpio_get(ENCODER_A_PIN); state = state<<1 | gpio_get(ENCODER_B_PIN); switch (state) { case 0b00111: report(ENCODER_CCW_USAGE); break; case 0b11011: report(ENCODER_CW_USAGE); break; default: report(kNONE); break; } state = next[state]; } static void report(uint32_t usage) { static uint32_t current = kNONE; static uint32_t timeout = 0; if (timeout) --timeout; else { if (current != kNONE) { hid_remove(current); current = kNONE; } if (usage != kNONE) { hid_add(usage); current = usage; timeout = ENCODER_KEYPRESS_TICKS; } } } #else void encoder_init() {} void encoder_tick() {} #endif ================================================ FILE: firmware/chrumm/encoder.h ================================================ #pragma once void encoder_init(); void encoder_tick(); ================================================ FILE: firmware/chrumm/hid.c ================================================ #include "chrumm/hid.h" #include "chrumm/led.h" #include "chrumm/usb.h" #include static uint8_t keycodes[6] = {0}; static uint8_t modifiers = 0; static uint16_t consumer = 0; static bool isKeyboardStale = false; static bool isConsumerStale = false; static void addKeycode(uint8_t code); static void removeKeycode(uint8_t code); static void addConsumer(uint16_t code); // Device to host // -------------- void hid_tick() { if (isKeyboardStale && tud_hid_n_ready(ITF_KEYBOARD)) isKeyboardStale = !tud_hid_n_keyboard_report(ITF_KEYBOARD, 0, modifiers, keycodes); if (isConsumerStale && tud_hid_n_ready(ITF_CONSUMER)) isConsumerStale = !tud_hid_n_report(ITF_CONSUMER, 0, &consumer, 2); } void hid_add(uint32_t usage) { if (tud_suspended()) { tud_remote_wakeup(); return; } switch (usage >> 16) { case HID_USAGE_PAGE_KEYBOARD: addKeycode(usage); break; case HID_USAGE_PAGE_CONSUMER: addConsumer(usage); break; } } void hid_remove(uint32_t usage) { switch (usage >> 16) { case HID_USAGE_PAGE_KEYBOARD: removeKeycode(usage); break; case HID_USAGE_PAGE_CONSUMER: addConsumer(0); break; } } static void addKeycode(uint8_t code) { if (0xE0 <= code && code <= 0xE7) { const uint8_t old = modifiers; modifiers |= 1u << (code - 0xE0); isKeyboardStale = modifiers != old; return; } for (uint i = 0; i < 6; ++i) { if (keycodes[i] == code) return; } for (uint i = 0; i < 6; ++i) { if (keycodes[i] == 0) { keycodes[i] = code; isKeyboardStale = true; return; } } } static void removeKeycode(uint8_t code) { if (code == 0) return; if (0xE0 <= code && code <= 0xE7) { const uint8_t old = modifiers; modifiers &= ~(1u << (code - 0xE0)); isKeyboardStale = modifiers != old; return; } for (uint i = 0; i < 6; ++i) { if (keycodes[i] == code) { keycodes[i] = 0; isKeyboardStale = true; return; } } } static void addConsumer(uint16_t code) { if (consumer == code) return; consumer = code; isConsumerStale = true; } uint16_t tud_hid_get_report_cb(uint8_t itf, uint8_t id, hid_report_type_t type, uint8_t* buffer, uint16_t size) { // Send host a report via the Control pipe. // Irrelevant callback required by TinyUSB. (void) itf; (void) id; (void) type; (void) buffer; (void) size; return 0; // STALL } // Host to device // -------------- void tud_hid_set_report_cb(uint8_t itf, uint8_t id, hid_report_type_t type, const uint8_t* buffer, uint16_t size) { // Set keyboard LEDs if (itf == ITF_KEYBOARD && id == 0 && type == HID_REPORT_TYPE_OUTPUT && size == 1) { // Bit 4:Kana 3:Compose 2:ScrollLock 1:CapsLock 0:NumLock switch (buffer[0] & 0b11) { case 0b00: led_blink(0b00000001); break; case 0b01: led_blink(0b00000000); break; case 0b10: led_blink(0b11111110); break; case 0b11: led_blink(0b11111111); break; } } } ================================================ FILE: firmware/chrumm/hid.h ================================================ #pragma once #include void hid_tick(); void hid_add(uint32_t usage); void hid_remove(uint32_t usage); ================================================ FILE: firmware/chrumm/led.c ================================================ #include "chrumm/led.h" #include "chrumm/config.h" #include static uint8_t blinkPattern = 0; static uint8_t blinkIndex = 0; static uint32_t blinkTicks = LED_BLINK_TICKS; void led_init() { gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); } void led_tick() { static bool blinkState = false; if (!blinkPattern && !blinkState) return; if (++blinkTicks < LED_BLINK_TICKS) return; blinkTicks = 0; blinkIndex = (blinkIndex + 1) & 0b111; blinkState = blinkPattern & (1u << blinkIndex); gpio_put(LED_PIN, blinkState); } void led_blink(uint8_t pattern) { if (pattern == blinkPattern) return; blinkPattern = pattern; blinkTicks = LED_BLINK_TICKS; blinkIndex = 7; } ================================================ FILE: firmware/chrumm/led.h ================================================ #pragma once #include void led_init(); void led_tick(); void led_blink(uint8_t pattern); ================================================ FILE: firmware/chrumm/main.c ================================================ // Chrumm keyboard firmware // ___ _ _ ____ _ _ __ __ __ __ // .' __| |_| | _ '| | | | \/ | \/ | // | |__| _ | |_) | |_| | |\/| | |\/| | // '.___|_| |_|_| \_\.___.|_| |_|_| |_| // // Copyright 2023 Severin Meyer // Licensed under CERN-OHL-W v2 or later #include "chrumm/config.h" #include "chrumm/encoder.h" #include "chrumm/hid.h" #include "chrumm/led.h" #include "chrumm/matrix.h" #include #include #include #include int main() { set_sys_clock_48mhz(); clock_stop(clk_peri); clock_stop(clk_adc); clock_stop(clk_rtc); matrix_init(); encoder_init(); led_init(); tud_init(0); watchdog_enable(WATCHDOG_TIMEOUT_MS, false); while (true) { absolute_time_t timeout = make_timeout_time_us(TICK_INTERVAL_US); matrix_tick(); encoder_tick(); hid_tick(); led_tick(); tud_task(); watchdog_update(); sleep_until(timeout); } } ================================================ FILE: firmware/chrumm/matrix.c ================================================ #include "chrumm/matrix.h" #include "chrumm/config.h" #include "chrumm/hid.h" #include "chrumm/usage.h" #include #include static_assert(MATRIX_DEBOUNCE_TICKS <= UINT8_MAX/2); static const uint rowPins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const uint colPins[MATRIX_COLS] = MATRIX_COL_PINS; static void debounce(uint key, bool signal); static void report(uint key, bool signal); void matrix_init() { // Pullup // Switch .--[ R ]-- V+ // Diode __|__ | // Row ---|<|---O O---+--------- Column for (uint r = 0; r < MATRIX_ROWS; ++r) { const uint pin = rowPins[r]; gpio_init(pin); gpio_set_dir(pin, GPIO_OUT); gpio_put(pin, 1); } for (uint c = 0; c < MATRIX_COLS; ++c) { const uint pin = colPins[c]; gpio_init(pin); gpio_set_dir(pin, GPIO_IN); gpio_pull_up(pin); } } void matrix_tick() { // The columns are pulled up and therefore read 1 by default. // All rows are set to 1. During the scan, one row at a time // is set to 0. If a switch is pressed, the connected column // is grounded and reads 0 as well. for (uint r = 0; r < MATRIX_ROWS; ++r) { gpio_put(rowPins[r], 0); sleep_us(PIN_SETTLE_TIME_US); for (uint c = 0; c < MATRIX_COLS; ++c) { const uint key = r*MATRIX_COLS + c; const bool signal = gpio_get(colPins[c]); debounce(key, signal); } gpio_put(rowPins[r], 1); } } static void debounce(uint key, bool signal) { // EvenOdd debounce algorithm // Based on the integrator algorithm by Kenneth A. Kuhn // https://www.kennethkuhn.com/electronics/debounce.c // // The progress is maintained in one byte per switch. // The lowest bit represents the inverse of the current // switch state. It is inverted so that the starting // value is zero and can be auto-initalized in an array. // The remaining bits are used as a hysterisis counter. // // .-------------.-. // |7 6 5 4 3 2 1|0| // '-------------'-' // Hysterisis Inverted // counter switch state static uint8_t states[MATRIX_ROWS*MATRIX_COLS] = {0}; uint8_t state = states[key]; // The hysterisis counter reflects how often the signal // has matched the state bit in recent history. We add // or subtract a value of 2 to jump over the state bit. // .-. // .-' '-. .- Counter // .-. .-' '-' // ---' '-' // ! ! = ! = = = ! ! = Signal if (signal == state % 2) state += 2; else if (state >= 2) state -= 2; // When the signal has fully saturated the counter, // invert the state bit and reset the counter. if (state >= MATRIX_DEBOUNCE_TICKS * 2) { report(key, signal); state = !signal; } states[key] = state; } static void report(uint key, bool signal) { static const uint32_t layers[2][MATRIX_ROWS*MATRIX_COLS] = { MATRIX_BASE_LAYER, MATRIX_FN_LAYER }; static bool layer = 0; static uint fnTaps = 0; static uint bootTaps = 0; const uint32_t active = layers[layer][key]; const uint32_t inactive = layers[!layer][key]; if (active == cFN || inactive == cFN) { if (signal) { if (fnTaps != FN_KEY_TAPS) layer = 0; if (fnTaps > FN_KEY_TAPS) fnTaps = 0; } else { ++fnTaps; layer = 1; } } else if (signal) { // Remove both codes, because the layer could // have changed between key press and release. hid_remove(active); hid_remove(inactive); } else if (active == kBOOT) { if (++bootTaps >= BOOT_KEY_TAPS) reset_usb_boot(0, 0); } else { hid_add(active); fnTaps = 0; bootTaps = 0; } } ================================================ FILE: firmware/chrumm/matrix.h ================================================ #pragma once void matrix_init(); void matrix_tick(); ================================================ FILE: firmware/chrumm/usage.h ================================================ #pragma once // HID Usage Tables for USB // https://usb.org/document-library/hid-usage-tables-14 #define kBOOT 0x000000 // Keyboard Page (0x07) // -------------------- #define kNONE 0x070000 #define kA 0x070004 #define kB 0x070005 #define kC 0x070006 #define kD 0x070007 #define kE 0x070008 #define kF 0x070009 #define kG 0x07000A #define kH 0x07000B #define kI 0x07000C #define kJ 0x07000D #define kK 0x07000E #define kL 0x07000F #define kM 0x070010 #define kN 0x070011 #define kO 0x070012 #define kP 0x070013 #define kQ 0x070014 #define kR 0x070015 #define kS 0x070016 #define kT 0x070017 #define kU 0x070018 #define kV 0x070019 #define kW 0x07001A #define kX 0x07001B #define kY 0x07001C #define kZ 0x07001D #define k1 0x07001E #define k2 0x07001F #define k3 0x070020 #define k4 0x070021 #define k5 0x070022 #define k6 0x070023 #define k7 0x070024 #define k8 0x070025 #define k9 0x070026 #define k0 0x070027 #define kENTER 0x070028 #define kESC 0x070029 #define kBKSP 0x07002A #define kTAB 0x07002B #define kSPACE 0x07002C #define kMINUS 0x07002D #define kEQUAL 0x07002E #define kLBRAC 0x07002F #define kRBRAC 0x070030 #define kBKSL 0x070031 #define kRISO 0x070032 #define kCOLON 0x070033 #define kQUOTE 0x070034 #define kTILDE 0x070035 #define kCOMMA 0x070036 #define kDOT 0x070037 #define kSLASH 0x070038 #define kCAPLK 0x070039 #define kF1 0x07003A #define kF2 0x07003B #define kF3 0x07003C #define kF4 0x07003D #define kF5 0x07003E #define kF6 0x07003F #define kF7 0x070040 #define kF8 0x070041 #define kF9 0x070042 #define kF10 0x070043 #define kF11 0x070044 #define kF12 0x070045 #define kPRINT 0x070046 #define kSCRLK 0x070047 #define kPAUSE 0x070048 #define kINS 0x070049 #define kHOME 0x07004A #define kPGUP 0x07004B #define kDEL 0x07004C #define kEND 0x07004D #define kPGDN 0x07004E #define kRIGHT 0x07004F #define kLEFT 0x070050 #define kDOWN 0x070051 #define kUP 0x070052 #define kNUMLK 0x070053 #define kpDIV 0x070054 #define kpMUL 0x070055 #define kpSUB 0x070056 #define kpADD 0x070057 #define kpENT 0x070058 #define kp1 0x070059 #define kp2 0x07005A #define kp3 0x07005B #define kp4 0x07005C #define kp5 0x07005D #define kp6 0x07005E #define kp7 0x07005F #define kp8 0x070060 #define kp9 0x070061 #define kp0 0x070062 #define kpDOT 0x070063 #define kLISO 0x070064 #define kAPP 0x070065 #define kPOWER 0x070066 #define kpEQ 0x070067 #define kF13 0x070068 #define kF14 0x070069 #define kF15 0x07006A #define kF16 0x07006B #define kF17 0x07006C #define kF18 0x07006D #define kF19 0x07006E #define kF20 0x07006F #define kF21 0x070070 #define kF22 0x070071 #define kF23 0x070072 #define kF24 0x070073 #define kEXEC 0x070074 #define kHELP 0x070075 #define kMENU 0x070076 #define kSEL 0x070077 #define kSTOP 0x070078 #define kAGAIN 0x070079 #define kUNDO 0x07007A #define kCUT 0x07007B #define kCOPY 0x07007C #define kPASTE 0x07007D #define kFIND 0x07007E #define kMUTE 0x07007F #define kVOLUP 0x070080 #define kVOLDN 0x070081 #define kINT1 0x070087 #define kINT2 0x070088 #define kINT3 0x070089 #define kINT4 0x07008A #define kINT5 0x07008B #define kINT6 0x07008C #define kINT7 0x07008D #define kINT8 0x07008E #define kINT9 0x07008F #define kLANG1 0x070090 #define kLANG2 0x070091 #define kLANG3 0x070092 #define kLANG4 0x070093 #define kLANG5 0x070094 #define kLANG6 0x070095 #define kLANG7 0x070096 #define kLANG8 0x070097 #define kLANG9 0x070098 #define kpLPAR 0x0700B6 #define kpRPAR 0x0700B7 #define kLCTRL 0x0700E0 #define kLSHFT 0x0700E1 #define kLALT 0x0700E2 #define kLGUI 0x0700E3 #define kRCTRL 0x0700E4 #define kRSHFT 0x0700E5 #define kRALT 0x0700E6 #define kRGUI 0x0700E7 // Consumer Page (0x0C) // -------------------- #define cNONE 0x0C0000 #define cFN 0x0C0097 // Multimedia #define cPLAY 0x0C00B0 #define cPAUSE 0x0C00B1 #define cREC 0x0C00B2 #define cFFWD 0x0C00B3 #define cRWND 0x0C00B4 #define cNEXT 0x0C00B5 #define cPREV 0x0C00B6 #define cSTOP 0x0C00B7 #define cEJECT 0x0C00B8 #define cRANDM 0x0C00B9 #define cRPEAT 0x0C00BC #define cMUTE 0x0C00E2 #define cVOLUP 0x0C00E9 #define cVOLDN 0x0C00EA // Application Launch #define cWORD 0x0C0184 #define cTEXT 0x0C0185 #define cSHEET 0x0C0186 #define cGRAPH 0x0C0187 #define cPRES 0x0C0188 #define cDATAB 0x0C0189 #define cEMAIL 0x0C018A #define cNEWS 0x0C018B #define cVOICE 0x0C018C #define cADDR 0x0C018D #define cCALEN 0x0C018E #define cTASK 0x0C018F #define cLOG 0x0C0190 #define cFIN 0x0C0191 #define cCALC 0x0C0192 #define cFILE 0x0C0194 #define cWWW 0x0C0196 #define cCHAT 0x0C0199 #define cLOGOF 0x0C019C #define cLOCK 0x0C019E #define cCTRL 0x0C019F #define cHELP 0x0C01A6 #define cDOCS 0x0C01A7 #define cSPELL 0x0C01AB #define cSCRSV 0x0C01B1 #define cIMG 0x0C01B6 #define cAUDIO 0x0C01B7 #define cVIDEO 0x0C01B8 #define cMSNGR 0x0C01BC ================================================ FILE: firmware/chrumm/usb.c ================================================ #include "chrumm/usb.h" #include "chrumm/config.h" #include "chrumm/led.h" #include #include // This ID combination is registered on // for the Chrumm keyboard. Do not use it for other firmware. // Otherwise, you could mess up the host's driver selection. #define USB_VID 0x1209 #define USB_PID 0x5E7C // Device Descriptor // ----------------- const tusb_desc_device_t deviceDesc = { .bLength = sizeof(tusb_desc_device_t), .bDescriptorType = TUSB_DESC_DEVICE, .bcdUSB = 0x0200, .bDeviceClass = 0, .bDeviceSubClass = 0, .bDeviceProtocol = 0, .bMaxPacketSize0 = CFG_TUD_ENDPOINT0_SIZE, .idVendor = USB_VID, .idProduct = USB_PID, .bcdDevice = 0x0100, .iManufacturer = 1, .iProduct = 2, .iSerialNumber = 3, .bNumConfigurations = 1}; const uint8_t* tud_descriptor_device_cb() { return (const uint8_t*) &deviceDesc; } // HID Report Descriptor // --------------------- const uint8_t hidKeyboardDesc[] = { TUD_HID_REPORT_DESC_KEYBOARD() }; const uint8_t hidConsumerDesc[] = { TUD_HID_REPORT_DESC_CONSUMER() }; const uint8_t* tud_hid_descriptor_report_cb(uint8_t itf) { switch (itf) { case ITF_KEYBOARD: return hidKeyboardDesc; case ITF_CONSUMER: return hidConsumerDesc; default: return NULL; } } // Configuration Descriptor // ------------------------ const uint8_t configurationDesc[] = { TUD_CONFIG_DESCRIPTOR( /* CFG bConfigurationValue */ 1, /* CFG bNumInterfaces */ 2, /* CFG iConfiguration */ 0, /* CFG wTotalLength */ TUD_CONFIG_DESC_LEN + 2*TUD_HID_DESC_LEN, /* CFG bmAttributes */ TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP, /* CFG bMaxPower*2 (mA) */ 100), TUD_HID_DESCRIPTOR( /* ITF bInterfaceNumber */ ITF_KEYBOARD, /* ITF iInterface */ 0, /* ITF bInterfaceProtocol */ HID_ITF_PROTOCOL_KEYBOARD, /* HID wDescriptorLength */ sizeof(hidKeyboardDesc), /* EP bEndpointAddress */ 0x81, /* EP wMaxPacketSize */ CFG_TUD_HID_EP_BUFSIZE, /* EP bInterval (ms) */ 1), TUD_HID_DESCRIPTOR( /* ITF bInterfaceNumber */ ITF_CONSUMER, /* ITF iInterface */ 0, /* ITF bInterfaceProtocol */ HID_ITF_PROTOCOL_NONE, /* HID wDescriptorLength */ sizeof(hidConsumerDesc), /* EP bEndpointAddress */ 0x82, /* EP wMaxPacketSize */ CFG_TUD_HID_EP_BUFSIZE, /* EP bInterval (ms) */ 10)}; const uint8_t* tud_descriptor_configuration_cb(uint8_t index) { (void) index; return configurationDesc; } // String Descriptors // ------------------ #define SERIAL_DIGITS (2*PICO_UNIQUE_BOARD_ID_SIZE_BYTES) #pragma pack(push, 1) const struct { uint8_t length; uint8_t type; uint16_t string[1]; } languageString = { sizeof(languageString), TUSB_DESC_STRING, {0x0409} }; // US English const struct { uint8_t length; uint8_t type; uint16_t string[7]; } manufactString = { sizeof(manufactString), TUSB_DESC_STRING, {'s','e','v','.','d','e','v'} }; const struct { uint8_t length; uint8_t type; uint16_t string[15]; } productString = { sizeof(productString), TUSB_DESC_STRING, {'C','h','r','u','m','m',' ','k','e','y','b','o','a','r','d'} }; uint16_t serialString[SERIAL_DIGITS + 1] = { TUSB_DESC_STRING<<8 | sizeof(serialString) }; #pragma pack(pop) const uint16_t* tud_descriptor_string_cb(uint8_t index, uint16_t lang) { (void) lang; switch (index) { case 0: return (const uint16_t*) &languageString; case 1: return (const uint16_t*) &manufactString; case 2: return (const uint16_t*) &productString; case 3: char ascii[SERIAL_DIGITS + 1]; pico_get_unique_board_id_string(ascii, sizeof(ascii)); // Convert to UTF-16 for(int i = 0; i < SERIAL_DIGITS; ++i) serialString[i+1] = ascii[i]; return (const uint16_t*) &serialString; default: return NULL; } } // Device state // ------------ void tud_suspend_cb(bool remote_wakeup_en) { // TODO: Reduce power draw during suspend. // // According to the [USB spec] (7.2.3), suspended devices are // limited to a current of 0.5mA. If the device is a remote // wakeup source, it may draw up to 2.5mA during suspend. // // I don't know how to achieve this with the Pico and TinyUSB. // None of the example projects reduce power during suspend. // It does not seem possible to use the USB resume signal to // wake up from dormant mode. It does not seem possible to slow // down or pause the clocks without killing the USB connection. // // According to [USB in a NutShell], "[...] if you drain maybe 5mA // or even 10mA you should still be fine, bearing in mind that at // the end of the day, your device violates the USB specification." // // The current implementation draws about 8mA. // // [USB spec]: https://www.usb.org/document-library/usb-20-specification // [USB in a NutShell]: https://www.beyondlogic.org/usbnutshell/usb2.shtml (void) remote_wakeup_en; led_blink(0); } //void tud_mount_cb(void) { } //void tud_umount_cb(void) { } //void tud_resume_cb(void) { } ================================================ FILE: firmware/chrumm/usb.h ================================================ #pragma once // Reference: // https://github.com/hathach/tinyusb/tree/master/examples/device/hid_multiple_interface // https://github.com/raspberrypi/pico-examples/tree/master/usb/device/dev_hid_composite #define CFG_TUD_ENABLED 1 #define CFG_TUD_HID 2 #define CFG_TUD_CDC 0 #define CFG_TUD_MSC 0 #define CFG_TUD_MIDI 0 #define CFG_TUD_VENDOR 0 #define CFG_TUD_HID_EP_BUFSIZE 8 #define ITF_KEYBOARD 0 #define ITF_CONSUMER 1 ================================================ FILE: pcb/.gitignore ================================================ fp-info-cache *.kicad_prl *.bak *.zip ================================================ FILE: pcb/README.md ================================================ Chrumm PCB ========== The PCB is made with [KiCad], version 7. The PCB is reversible. It covers half of the keyboard, and is flipped over for the other half. It is intended to slightly bend between the pinky and ring finger, therefore the board thickness should not exceed 0.8mm. All connections are through-hole (or castelated), so that they can be soldered with basic hobby equipment. The switch pin holes are implemented as slots, to provide a snug fit for the flat pins, and thus minimize the required amount of solder. [KiCad]: https://www.kicad.org/ Teardrops --------- The teardrops are generated with a custom [KiCad plugin], using the following settings: PTH arc radius: 250% SMD arc radius: 250% Via arc radius: 350% [KiCad plugin]: https://github.com/sevmeyer/kicad-arc-teardrops Production ---------- I ordered the prototypes from [PCBWay] (no affiliation). Other manufacturers are available, check for example [PCBShopper] or [Manufacturing Reports]. Here are some of the relevant specifications, use them at your own discretion: - Standard PCB (not flex) - Single pieces (not panelized) - Layers: 2 - Material: FR4 TG 150-160 - Thickness: 0.8mm (at most) - Surface finish: HASL (lead free) - Copper thickness: 1oz [PCBWay]: https://pcbway.com/ [PCBShopper]: https://pcbshopper.com/ [Manufacturing Reports]: https://manufacturingreports.com/category/electronics/rigid-pcb-fabrication/ ================================================ FILE: pcb/chrumm/chrumm-plot.py ================================================ # Generate Gerber files and pack them into # a zip archive in the current directory. # # Usage: python3 chrumm-plot.py # # Written for KiCad 7, based on fab plugins (Jan 2023): # Aisler https://github.com/AislerHQ/PushForKiCad # PCBWay https://github.com/pcbway/PCBWay-Plug-in-for-Kicad # JLCPCB https://github.com/bennymeg/JLC-Plugin-for-KiCad import shutil import tempfile import pcbnew as pcb layerNames = ( "F_Cu", "B_Cu", "F_Mask", "B_Mask", "F_SilkS", "B_SilkS", "Edge_Cuts") def getRealSize(board): # The native board.GetBoardEdgesBoundingBox() # returns rendering bounds, not mechanical bounds. # https://forum.kicad.info/t/pcbnew-getboardedgesboundingbox-anomaly/28313 minX = float("inf") minY = float("inf") maxX = float("-inf") maxY = float("-inf") for drawing in board.GetDrawings(): if drawing.GetLayer() == pcb.Edge_Cuts and type(drawing) is pcb.PCB_SHAPE: box = drawing.GetBoundingBox() line = drawing.GetWidth() minX = min(minX, box.GetOrigin().x + line/2) minY = min(minY, box.GetOrigin().y + line/2) maxX = max(maxX, box.GetEnd().x - line/2) maxY = max(maxY, box.GetEnd().y - line/2) return maxX - minX, maxY - minY with tempfile.TemporaryDirectory() as tempDir: board = pcb.LoadBoard("chrumm.kicad_pcb") # Settings settings = board.GetDesignSettings() settings.m_SolderMaskMargin = 0 settings.m_SolderMaskMinWidth = 0 # Layers plotter = pcb.PLOT_CONTROLLER(board) options = plotter.GetPlotOptions() options.SetOutputDirectory(tempDir) options.SetUseGerberX2format(True) options.SetUseGerberAttributes(True) options.SetUseGerberProtelExtensions(False) options.SetIncludeGerberNetlistInfo(True) options.SetDisableGerberMacros(False) options.SetScale(1) options.SetAutoScale(False) options.SetMirror(False) options.SetUseAuxOrigin(True) options.SetPlotFrameRef(False) options.SetPlotViaOnMaskLayer(False) options.SetSubtractMaskFromSilk(False) options.SetSketchPadLineWidth(pcb.FromMM(0.1)) options.SetDrillMarksType(pcb.DRILL_MARKS_NO_DRILL_SHAPE) for name in layerNames: layer = getattr(pcb, name) if board.IsLayerEnabled(layer): plotter.SetLayer(layer) plotter.OpenPlotfile(name, pcb.PLOT_FORMAT_GERBER, "") plotter.PlotLayer() plotter.ClosePlot() # Drills drillMetric = False drillMirror = False drillMinHeader = True drillOffset = board.GetDesignSettings().GetAuxOrigin() drillMergeNPTH = False drillExcellonFile = True drillMapFile = False driller = pcb.EXCELLON_WRITER(board) driller.SetFormat(drillMetric) driller.SetOptions(drillMirror, drillMinHeader, drillOffset, drillMergeNPTH) driller.CreateDrillandMapFilesSet(tempDir, drillExcellonFile, drillMapFile) # Zip rev = board.GetTitleBlock().GetRevision() size = getRealSize(board) width = f"{pcb.ToMM(size[0]):.3f}".rstrip("0").rstrip(".") height = f"{pcb.ToMM(size[1]):.3f}".rstrip("0").rstrip(".") zipName = f"chrumm-gerber-{rev}-{width}x{height}mm" shutil.make_archive(zipName, "zip", tempDir) print("Wrote", zipName + ".zip") ================================================ FILE: pcb/chrumm/chrumm.kicad_dru ================================================ (version 1) (rule "Ignore mousebite edge clearance" (condition "A.Pad_Type == 'NPTH, mechanical' && A.Size_X == 0.5mm") (constraint edge_clearance (min -1mm))) ================================================ FILE: pcb/chrumm/chrumm.kicad_pcb ================================================ (kicad_pcb (version 20221018) (generator pcbnew) (general (thickness 0.8) ) (paper "A4") (title_block (title "CHRUMM KEYBOARD") (rev "1.0.0") (comment 1 "https://github.com/sevmeyer/chrumm-keyboard") (comment 2 "Licensed under CERN-OHL-W v2 or later") ) (layers (0 "F.Cu" signal) (31 "B.Cu" signal) (36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen") (38 "B.Mask" user) (39 "F.Mask" user) (40 "Dwgs.User" user "User.Drawings") (41 "Cmts.User" user "User.Comments") (44 "Edge.Cuts" user) (45 "Margin" user) (46 "B.CrtYd" user "B.Courtyard") (47 "F.CrtYd" user "F.Courtyard") (48 "B.Fab" user) (49 "F.Fab" user) ) (setup (stackup (layer "F.SilkS" (type "Top Silk Screen")) (layer "F.Mask" (type "Top Solder Mask") (thickness 0.01)) (layer "F.Cu" (type "copper") (thickness 0.035)) (layer "dielectric 1" (type "core") (thickness 0.71) (material "FR4") (epsilon_r 4.5) (loss_tangent 0.02)) (layer "B.Cu" (type "copper") (thickness 0.035)) (layer "B.Mask" (type "Bottom Solder Mask") (thickness 0.01)) (layer "B.SilkS" (type "Bottom Silk Screen")) (copper_finish "None") (dielectric_constraints no) ) (pad_to_mask_clearance 0) (pcbplotparams (layerselection 0x0000000_7fffffff) (plot_on_all_layers_selection 0x0000000_00000000) (disableapertmacros false) (usegerberextensions false) (usegerberattributes true) (usegerberadvancedattributes true) (creategerberjobfile true) (dashed_line_dash_ratio 12.000000) (dashed_line_gap_ratio 3.000000) (svgprecision 6) (plotframeref true) (viasonmask false) (mode 1) (useauxorigin false) (hpglpennumber 1) (hpglpenspeed 20) (hpglpendiameter 15.000000) (dxfpolygonmode true) (dxfimperialunits true) (dxfusepcbnewfont true) (psnegative false) (psa4output false) (plotreference true) (plotvalue true) (plotinvisibletext false) (sketchpadsonfab false) (subtractmaskfromsilk false) (outputformat 1) (mirror false) (drillshape 0) (scaleselection 1) (outputdirectory "gerber/") ) ) (net 0 "") (net 1 "/row0") (net 2 "/row1") (net 3 "/row2") (net 4 "/row3") (net 5 "/row4") (net 6 "/col6") (net 7 "/col0") (net 8 "/col1") (net 9 "/col5") (net 10 "/col4") (net 11 "/col3") (net 12 "/col2") (net 13 "/rotB") (net 14 "/rotA") (net 15 "/rotC") (net 16 "Net-(E1-PadA)") (net 17 "Net-(E1-PadC)") (net 18 "Net-(E1-PadB)") (net 19 "Net-(D0-A)") (net 20 "Net-(D1-A)") (net 21 "Net-(D2-A)") (net 22 "Net-(D3-A)") (net 23 "Net-(D4-A)") (net 24 "Net-(D5-A)") (net 25 "Net-(D12-A)") (net 26 "Net-(E1-Pad1)") (net 27 "Net-(E1-Pad2)") (net 28 "Net-(D13-A)") (net 29 "Net-(D14-A)") (net 30 "Net-(D15-A)") (net 31 "Net-(D16-A)") (net 32 "Net-(D17-A)") (net 33 "Net-(D18-A)") (net 34 "Net-(D25-A)") (net 35 "Net-(D26-A)") (net 36 "Net-(D27-A)") (net 37 "Net-(D28-A)") (net 38 "Net-(D29-A)") (net 39 "Net-(D30-A)") (net 40 "Net-(D31-A)") (net 41 "Net-(D38-A)") (net 42 "Net-(D39-A)") (net 43 "Net-(D40-A)") (net 44 "Net-(D41-A)") (net 45 "Net-(D42-A)") (net 46 "Net-(D43-A)") (net 47 "Net-(D44-A)") (net 48 "Net-(D51-A)") (net 49 "Net-(D52-A)") (net 50 "Net-(D53-A)") (net 51 "Net-(D54-A)") (net 52 "Net-(D55-A)") (net 53 "Net-(D56-A)") (net 54 "Net-(D57-A)") (net 55 "Net-(D64-A)") (net 56 "unconnected-(E1-MountPin-PadMP)") (net 57 "Net-(U1-GND-Pad13)") (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 05dcf8b1-a720-4a03-8991-cb3522144dc0) (at 180.2 74.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/fcf19f1e-dfbe-47c1-b3be-7f9056068244") (attr through_hole allow_missing_courtyard) (fp_text reference "S17" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 419d6208-0906-4210-b4dd-e3ae29bb9d92) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a5f9d606-b84d-4146-914c-790fadf38024) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp fef79b83-5561-45f9-8bf8-498809e58674) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b0a254e5-cdaa-4c9d-9f7a-98e14f55241c)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3176ea87-9a22-4cda-9008-f53dfe29d448)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1477daef-162c-4ee2-b24d-0eb741f7e4ef)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d1b1a735-57f3-4ca4-8c7a-d2293bf80e1f)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3e990fbe-b2a7-4b8d-b74c-4fc27d33f457)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 03eb29b7-6431-4075-933d-1b413a5e747b)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 23dbd38b-276b-43c2-a504-915026bb5ed3)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 251fd314-c2f5-423f-b860-cd778b1955d4)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ddbf68e1-49a6-4ccc-9942-fd34c29f16c3)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 740e8d29-4cd8-4bd6-91ff-7a8e73118fd0)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp bd0895fb-f30f-4204-b9f3-c3d3760bb335)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f8ad3db2-54be-4af3-9163-073af0ebee25)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 11f077b3-46b0-4f7e-a1b8-adfa9943fc59)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e36a0a23-3f05-4f18-a89c-393260a39f3c)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6c2b057f-0d28-4919-a0e2-f485c563d74e)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1f2936cf-c49b-4cfa-b1e8-70a98befc012)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c3bd98fc-fa76-4efe-998c-8a89ef9c0d4e)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f20b11a5-ca9f-40d0-a5fb-4182fa9e4b97)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 227532ff-17ef-40f9-b7f5-498116b36fbf)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5d5571a5-2051-4fde-9019-8bd0ca6096de)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7960dffe-7497-41e3-89ca-50a214fb0d39)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b04cbb4c-1856-4ced-947a-4567762caf4f)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp ffe42f87-bbfe-41e8-a11a-9d6da4cce777)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp dfb79b8f-d6d6-42db-a91f-7076cc3ca241)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 91f62f97-2a8b-4c30-b3b5-24172d99a892)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp cf083f56-702a-4f37-aa75-380eaf73b4cc)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 0a790dbd-420a-4132-9000-94ad90da8513)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 113a0037-a0db-4370-908d-9cc40dbc71e7)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 446899fb-83e9-4ea5-9cdd-b87c4863191f)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp d786c47a-6826-43f0-9c1b-bab944e892eb)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp 49e6ce39-d260-4de2-a707-4c9b6cbdea1e)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 32 "Net-(D17-A)") (pintype "passive") (tstamp 33e5e8bf-945d-4bbd-b6e7-b9eda9dd7350)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 32 "Net-(D17-A)") (pintype "passive") (tstamp 6c9d2adf-4ef8-4693-8f2e-5f0b672b004a)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 06fd8730-846d-43de-afb5-4f6ff50994d1) (at 111.625 137.26 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/407801f9-1e13-40d9-a719-feb462df800e") (attr through_hole) (fp_text reference "D52" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f0e7c54a-7b98-48e8-9998-b24385aa3ea0) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp c6906a9f-44b4-4d98-a968-0863b8841a56) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a22c228d-bd8a-4c94-b0fb-e8293a6af377)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 52851f0b-b1f4-4ada-a1c1-ef1a45dce946)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp ef37f6d6-8d53-4e06-9a00-d7b08ab609b3)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3d0511f8-72f6-4829-989d-c01afdd2a51b)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 55860b72-be17-4188-8cb0-d317da315e9b)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9c62abb6-6898-4b65-b300-89f6f0b5f1ff)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 619b3ef5-b0fc-4f2e-828d-82061b62d262)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 95a9a26b-824b-4655-af9b-cbdae78330d6)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9e384b61-910a-4eb6-a634-29ccfa458095)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp e26b1d7c-c5b2-45c4-90d8-7e5552c818e0)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 70bfbe9e-d455-44a5-9de1-a373f65e438f)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e0965958-9c2b-4f7d-8312-84d549a00907)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 40667845-004f-4f24-9804-14614093fb15)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp 25dcf4d3-b8ff-4ef5-8b61-c733de646ab9)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 49 "Net-(D52-A)") (pinfunction "A") (pintype "passive") (tstamp b8e23923-835c-4113-b14f-51200ac23e93)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 07738c2b-c7a9-4d26-9ad8-0d4442b39fff) (at 171.95 113.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/079f66ca-8386-4b94-b61b-957b6ae06453") (attr through_hole) (fp_text reference "D43" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 09406cda-2660-4af9-b198-2d56e40bdf27) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 4e3f3f8a-6a03-406e-b7df-21b0afb3c28e) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0ecccdb9-8d30-4490-a9ae-071382a8f9f6)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f4e52d77-593d-4e5d-8445-3af64d6dd337)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 8f462022-7609-4d5f-ba03-4f70bfd23193)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 564c455e-bc43-4579-b854-b373f1b17c5b)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp bf98cc17-05cd-48ca-b86c-40864de69112)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1069d170-be85-452f-948e-1e51dd8a27d8)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8c1ac7ad-c5ba-4d10-8e99-282ef0f905be)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 6b0a1999-cb34-4701-b0ee-d9e2cf3e0031)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b3922747-9c53-4614-832c-e169cda25b89)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 68f67013-b92a-4b1c-b97b-ce698b66722e)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 038d95f7-6b5e-4444-b4af-ab2d19c77d03)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8101d0f0-f387-4aa6-8ad7-b11bb960d062)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 0779c398-36e8-4b14-8feb-5208432c1ccf)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp e84f8db1-c461-4ea6-94ed-c2e0b822eb1f)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 46 "Net-(D43-A)") (pinfunction "A") (pintype "passive") (tstamp 95351b02-18e7-492a-8a12-eabf9fa744ef)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 08066cfe-99f9-4e96-bfe0-69322e74d798) (at 82.75 70.75 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/4de0da89-c42c-4aec-ac48-24e19f628b60") (attr through_hole) (fp_text reference "D25" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 3d57fab1-1d21-4c22-8189-234ebc205c48) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 5086a31d-ee19-4dd5-9392-b3fd93eec1b8) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6f7fb737-791b-4889-abf3-820c06dd537a)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0dd1610a-83db-4493-9961-58843b4d6a54)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp aa09b391-7c74-46f4-86a4-2f3bea5d4240)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a3d42a3f-049f-49a8-a335-8be7a761f886)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp c9c062be-06f7-4679-9b73-5abc691aa9ec)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 95e086df-884a-441a-afb0-8d1c0f900f03)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 19bc926d-ee81-4c4c-8a6a-fcf4532dae00)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 98eba140-b738-45d0-80d6-d75ed4b09db7)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a7b8be17-b8cc-44b3-8118-d618021fcf33)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp db792cac-18de-4a80-b55c-e09e52b32e91)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp cf2764de-95fa-4bc7-9d64-e6efea22ca6f)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 14f3faa6-df86-430f-8c49-d82de518d77c)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 179bc8d1-d598-46a2-84de-8377feda2775)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp 71ecbc6d-cb08-43c7-b933-4576505ef9dd)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 34 "Net-(D25-A)") (pinfunction "A") (pintype "passive") (tstamp 96170118-7206-42c7-a85b-2065f249a5f8)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 082430e0-daa6-423b-8523-4f876798bb7c) (at 180.2 112.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/2b57ce25-6880-45af-a6a1-0c5a0b8aa111") (attr through_hole allow_missing_courtyard) (fp_text reference "S43" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f8814616-d0bd-4d14-bc59-bef65be2832c) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 15d93354-8f95-41b8-a5cf-edf0f4ef54ba) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 10beedec-61f0-45f8-a245-bfa7dfde7e51) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 9d9810be-f865-4a10-9b3b-abd8d755c509)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f1f7d96d-ac71-4bf7-9fb5-a0ad08bb1691)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 23948f10-16cd-4c30-acbd-7f5a5b152010)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 86d0179f-bd18-4649-a403-491decc0b360)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 090d3cbe-2be0-440e-b43d-423a5038b4f6)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ffd51e29-c625-4c22-901c-b034f2590e88)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fcaf7d8c-7d6e-4722-8649-e125f933cffc)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 935ce5b9-520d-458a-b718-996cb3710241)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp fe38106a-bdcc-4d9f-bfe6-791593db2938)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f2181518-2f4f-4351-8d01-2f8a394c2798)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp fe43ac6d-87d0-49ef-8f97-b81a69f5c848)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 88f2e997-6c4d-44ff-bd93-9eb95ff1c697)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 35142934-1f7c-4494-b257-59b382393f3e)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ff7ca379-390e-4be7-8c98-724884721348)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c3bcc7c7-8ac2-4a0b-88c2-735fb38bce7f)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bc7c5353-bfba-4edc-9dc9-3e8bbbb5b17d)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 21b9e517-b1a9-4a05-aa05-51b414fafc48)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7bfd0d0f-14b3-40d4-b5af-5b4d96a4d937)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e790c398-ee7e-4d72-8fee-8a4dda8b4b4f)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp dba1ce9d-98c2-475b-9a82-5240ae220938)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 43cec5c5-56c7-4046-b58d-2bca127b3155)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp f78a4849-26de-4d30-9044-fb919c95bca3)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 100897c1-53c6-4288-95e9-841596747d69)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b4cd2905-9b72-43f6-a22f-f155d3ddb9bd)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 5b2a6896-1543-45d9-a66c-4162c03a8591)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 07bf2f03-1b12-469a-9ae2-f94de0f51d7d)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp d52e5fa3-dfb2-4890-a4a4-52ce4fef69ed)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 8f9c8ecd-7a6a-4f81-81ef-3e47c17fdfea)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 08f19e95-0adf-44da-ac12-09e34dc5fc4c)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp ae0d582e-d23f-4526-a109-eb3c25489b2e)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp 5655d6bc-bb8e-43d7-87fb-1bcb980a3082)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 46 "Net-(D43-A)") (pintype "passive") (tstamp 43f55d32-b8e5-48fe-88f4-4fb12ea5f95a)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 46 "Net-(D43-A)") (pintype "passive") (tstamp 3d46aba0-d265-4269-b1e1-c88d446f95af)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 0b7f8ae7-8e13-42d9-b1b0-36bbd86d7a24) (at 101 98) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/53ef5604-bcfa-4fa4-a8de-cb9a5019562d") (attr through_hole allow_missing_courtyard) (fp_text reference "S26" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 1a17472a-2dbc-41b3-bc03-52fe1c8b92b6) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cb33463e-4672-4818-8bf1-5692017a9bf4) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 6257d38c-70d9-48db-8514-e66c511d2b1f) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 38199c01-7914-40fb-9948-61d7531db278)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 63787aa4-a471-4d58-820b-1da2df0b0a2e)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2f8ea686-478d-4707-9569-0b67ff5e0bfc)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 62d5a676-5b79-4134-80e6-900ffc4a90a4)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7bf75b0d-0ad3-471e-b416-4f3ec71669b7)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8e984a61-1a23-44fe-be23-f99e32e474de)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f028192e-52f0-4ae6-9ca0-84f6d0b0fa78)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 52b5d57d-1f99-441c-85fa-49da8d4118b9)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp d81b8091-c585-458b-a5a7-ede9d91538fc)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 3660e9f6-c222-4a47-a751-d030a3f821ce)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp aff7585f-a6c9-4083-8db2-059101c63322)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp cd6c188d-3c15-4786-a317-e164aebffeee)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a4aac822-1fd6-46c9-8124-1c6bd11f291a)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a1d77f80-ea39-4ab3-b238-83aeb6fdf9e6)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1c8d99c4-9377-40f5-a93e-01324e90519f)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6691587f-f304-4962-adb9-9e0f79df72cb)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cedf6571-19e2-48f9-b47a-c1c749228ce8)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 01b102d7-0f7b-47fb-8198-dfe7ec131664)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e6f3c1ea-08df-4677-ad43-3ba62fe0086d)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b932803c-ee85-4463-ad6d-a4c0c692a803)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 51990019-2234-4086-a21b-b4d3179b7d23)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7154073f-54c1-4104-af1a-281801440541)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp cdb2005a-760e-40dd-8c26-c9e2f554ce57)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7d5bb5ab-3042-4bde-a7da-5669d41806e7)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 400a709f-a3c8-4e12-bc55-dc1892f5c42e)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp e8f8474d-b637-4606-a719-26aa708aa3e8)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp b49f4776-988b-4b0b-8291-0cbf56a4cf1e)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 13c3b053-24f5-44cd-9a55-61295f951feb)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 700749b4-8330-46d7-a2f4-9ff71e00e3ed)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 8d3bdb37-4a4b-48ff-bd41-06427e370d1c)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp e80062f3-a741-4c20-9cae-4706db3b82fd)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 35 "Net-(D26-A)") (pintype "passive") (tstamp ed78f577-ddc8-4c3b-95d5-2218afb95006)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 35 "Net-(D26-A)") (pintype "passive") (tstamp 3d58f065-30c5-46f8-a64a-6b32c97de0c1)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 0d252dda-f353-4d45-87cf-d5db8854cdb8) (at 213.55 72.6) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp bc05fa3d-2e5f-40f2-9ea0-2b470a68232b) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 757a159c-945a-4d3b-ab5d-8d64b38153d7) ) (pad "" np_thru_hole circle (at -1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp b6a2dbf5-1fbe-4658-969f-789b26b6f28f)) (pad "" np_thru_hole circle (at -0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 5804ddbe-485a-44a8-9c11-85f863651c8b)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 7449ff3b-784f-4bff-aa96-7d326477ce97)) (pad "" np_thru_hole circle (at 0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp caddd7c4-5bf6-42f3-9bbd-62b1f1d257c4)) (pad "" np_thru_hole circle (at 1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 3c955053-ec6c-44a8-a60b-47e31045ce83)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 1029f301-a504-4898-8195-86c44fa915aa) (at 196.790579 142.704059 -108) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/46d79714-f75b-4123-a83a-ddba4549f4d6") (attr through_hole) (fp_text reference "D56" (at 0.5 0 -108 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 27bb243f-13f9-4bf0-b7c2-1e12c287466d) ) (fp_text value "Diode" (at 0 0 -108) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 67463f13-b945-45b0-8ce3-a727fb8ef0c8) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4456909c-7735-464b-afa6-43f5e2572946)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 17148ce3-5b43-4dcd-a32f-3dadb5ac9f13)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 190598ec-794b-405f-bab9-f9b4aba9f7fa)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 9216b90e-e1e0-449b-b92c-c3970a09d3a7)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp f7e89a22-6898-419b-83df-e2dbc17e3c90)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 202e11c1-0cfb-45eb-a658-6a6fc8cd1952)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp eebfd683-a330-4624-9688-c0ab738923e8)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 0feb3963-5605-4f1a-a260-653c9c3b35b9)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2aa0e0b2-dcbf-4f49-a60b-d32526306017)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 126a98fd-977d-4420-963b-298014ae9bd4)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 3cd4d536-0f2d-421d-8f3b-38c10d739655)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e8aebe77-50fa-4f7c-af83-34a1ab9c30a0)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp f794b95a-cbe5-41cf-832e-71604adf7501)) (pad "1" thru_hole roundrect (at -3.8 0 252) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp 02fab047-ff07-4b7c-901e-11653d0a4ae3)) (pad "2" thru_hole circle (at 3.8 0 252) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 53 "Net-(D56-A)") (pinfunction "A") (pintype "passive") (tstamp 89c9f408-00b5-4385-b79c-8b7e63da78fd)) ) (footprint "footprints:MouseBites_1x4_P0.9mm" (layer "F.Cu") (tstamp 10869512-2585-492a-9aae-755656df3ece) (at 132.1 109 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 6579ff55-749d-4c30-b573-cfbaf812f876) ) (fp_text value "MouseBites_1x4_P0.9mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 55ee34b8-d21f-4347-b2a0-aa87dd93f1bc) ) (pad "" np_thru_hole circle (at -1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp be523e03-89e0-45a1-ab74-407a5b65a00e)) (pad "" np_thru_hole circle (at -0.45 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 13e18e8b-ccc8-49da-8a57-370a77c428d3)) (pad "" np_thru_hole circle (at 0.45 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 27cba4fe-f6ed-4c2e-9349-7d3e0f26a3db)) (pad "" np_thru_hole circle (at 1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 5477995f-0590-4222-b733-e9f541dfca94)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 118f72f4-15c8-4169-b771-cb3aab4277b5) (at 101.75 68.25 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/764719d1-ff5f-410d-ae83-26e5e054c2f0") (attr through_hole) (fp_text reference "D0" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 3f73235b-df98-469c-91a4-7575019dab08) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 33857ea2-fa27-4eb5-9e01-cd7cef54cf83) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 533647fd-0c72-4795-8017-99c3781fae59)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 87e1e942-8799-4775-be29-f530620f6d1a)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 4e731263-a816-4967-901f-9ee9057f5bdb)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6980d9cf-7dcb-4d62-849c-d98ceb0b9973)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 9f9bd56b-4694-41b5-9ad1-5d38c5029ddf)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 78a4180f-1af6-4304-a4fc-9753e6910006)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fa91ab91-f4d8-476f-9895-6d2a52f2dfa4)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 8f38bc8f-01b3-460f-b11e-ad4331c40cae)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a0a294f4-1c85-479b-8dba-ad3f8e3e268e)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp df7e72bb-d542-4fe8-93a7-058a5a824006)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 214c6506-d200-44b3-88d2-b1af46500da2)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 4645cad7-b4c9-4347-b755-f37c9d5e836b)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 84d29991-8a0c-48ef-bf67-cfcc02bd1d29)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp c9566f71-b685-4e36-8b55-4a0715f91365)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 19 "Net-(D0-A)") (pinfunction "A") (pintype "passive") (tstamp f10930c4-57cc-44f6-b221-929f25fcc17a)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 1281642b-783b-4569-a7e9-8e33d4a5f0a1) (at 169.45 75.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/5ed87483-c5ac-4b41-9860-8af6b1fc0f58") (attr through_hole) (fp_text reference "D16" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 5c7f0cf4-6249-479b-9f3c-437fabdc88a1) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e997fb1e-366e-4642-aa50-6025681ff147) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fc90837f-2130-43c2-a528-01fa430f0a73)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 875ec471-6043-41c1-8a91-792c361a8670)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 8b1f6db1-d532-4cb4-9fa5-56c0fc0b3e8f)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7f37e0fd-4bdb-4c88-8362-e9a1eb99565f)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 8fb7d402-723d-4bc8-8e37-d0b3422c181e)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f19fbb16-f307-40b1-89cb-72d0662f4366)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3033c306-11e5-40d2-a4b5-db2f74c5f36e)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 2b5a5e6c-692d-49a9-90e9-ee673bc2f544)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 33334612-fe56-40c9-b39b-3f9e41aa98bd)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 8a7eb464-35fc-4667-b640-7c276d932928)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp e01906d7-f64e-42fb-a20d-54e9eddf1175)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e7baf545-0f2e-45a8-be77-f38d1e0eb284)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 183eb135-bbd6-4463-ad25-6dc1157225f9)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp 9bd31638-cca2-4b73-898f-d9989b1f75fc)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 31 "Net-(D16-A)") (pinfunction "A") (pintype "passive") (tstamp 4868047b-e68b-4ecd-9811-86482f32b645)) ) (footprint "footprints:PinHeader_1x3_P2.54mm" (layer "F.Cu") (tstamp 132baab3-497a-4aae-afa0-cbe02c8a50b6) (at 211.55 80.05 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/e680d220-7737-42a5-95df-82335e4fe039") (attr through_hole board_only exclude_from_pos_files allow_missing_courtyard) (fp_text reference "J2" (at 0 -4.74) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d4fb61f8-2854-431d-ad7d-07d608b866d6) ) (fp_text value "PinHeader_1x3" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp d6b3b3d1-8050-4601-8b88-3e4e5c3ee2e1) ) (fp_line (start -1.27 -1.27) (end 1.27 -1.27) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 18f66966-ca5f-4e47-9334-016dedad1d77)) (fp_poly (pts (arc (start -1.27 3.302) (mid -1.12121 3.66121) (end -0.762 3.81)) (arc (start 0.762 3.81) (mid 1.12121 3.66121) (end 1.27 3.302)) (arc (start 1.27 -3.302) (mid 1.12121 -3.66121) (end 0.762 -3.81)) (arc (start -0.762 -3.81) (mid -1.12121 -3.66121) (end -1.27 -3.302)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 4d1e5d6d-6b7c-43d4-8bee-4bbe886c7afb)) (fp_poly (pts (xy 1.27 -3.81) (xy 1.27 3.81) (xy -1.27 3.81) (xy -1.27 -3.175) (xy -0.635 -3.81) ) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp d71fa5ab-e613-4cfa-ada1-9da55fcd3f99)) (pad "1" thru_hole roundrect (at 0 -2.54 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 14 "/rotA") (pintype "passive") (tstamp 7844f532-38cf-4cd9-89b1-956ec1c2be7b)) (pad "2" thru_hole circle (at 0 0 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 15 "/rotC") (pintype "passive") (tstamp 780f0533-5745-4c0e-a2f4-4bc8c2a2b9ed)) (pad "3" thru_hole circle (at 0 2.54 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 13 "/rotB") (pintype "passive") (tstamp 5157f2cb-8302-4b42-a770-d1dfa6bf2f2b)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 137e4569-51c1-465a-abe2-bcba6f8de54e) (at 169.45 94.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/237d569d-691f-4524-993b-ae638d4ec462") (attr through_hole) (fp_text reference "D29" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp e1784aa9-086e-4d4c-a7fa-2c8e94ef784b) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a9801180-6677-4409-a7c1-e44e5cd52f91) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b55030ea-e8a9-4390-9714-44c48b5ac576)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ce291329-ed8f-4739-adae-93d4f1913b4d)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 5cd9cb3a-5693-4c22-bcfb-f3c60a53ea86)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b320f15d-adc3-4b44-a29a-1b218fd8e9b8)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 2763b86b-a4c5-478b-b521-fff163feb658)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 654a70ea-33e5-47bf-bc46-3a91cfc74ccc)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ec81a4e1-0c58-4003-af39-0b082ad92439)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 331d6f97-250f-413e-b7a1-909895d9ae3b)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 896f217e-5a20-4549-b409-61c74576eff2)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 91ba3105-71ba-4c43-80ac-9efa9abce545)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 2db3f3b5-f700-4318-8761-a8670d968919)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 51b4b2a4-debd-409f-a74f-09d964ee40c6)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp ebe9f909-4c74-49e8-885d-5c1c97a2dfca)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp 7e0df9ba-42b4-4389-b7ca-e42c071734b3)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 38 "Net-(D29-A)") (pinfunction "A") (pintype "passive") (tstamp abce3f17-6b71-4372-bd57-8c40af5ce225)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 165f64ee-623c-4a7b-a629-a13c4604c113) (at 211.965 153.281 144) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/d0140624-0a84-476b-b1e2-a1d94760041d") (attr through_hole allow_missing_courtyard) (fp_text reference "S57" (at 0 0 144 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 800c37fc-772c-46c0-aa76-3508a57e139c) ) (fp_text value "Switch" (at 0 0 144) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 1e6b373b-b3d4-4b96-bd6a-8413a91bf547) ) (fp_text user "${REFERENCE}" (at 0 0 144 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 17f875c2-f866-4de1-8cf4-8017d3015d7e) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 16c3e28f-5f22-46d8-b170-503af82daef6)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b50f639e-ea52-49bf-9a54-0fafdd4670a3)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp dd89cfa3-4e08-4a9a-87c9-12d2d13dcf67)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bce277db-c911-46cd-971b-ce4e86dcf607)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ef929a9e-7895-49af-8457-5c88a4bf6136)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a35c8761-bdcb-40e5-8f57-f55ace3140a1)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 733fc749-c4ad-4fc5-a40e-b1fd272f382f)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 52169b90-dc27-4760-a04b-87170ad4b568)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 666413c7-d113-482e-a934-59870089ad74)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp d293058f-81e1-4dbb-a1bf-1fc4936c35ea)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 64b118b5-1f18-4bb5-8dfb-74facc08d399)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ca4f57c0-2635-4c6f-9286-b285df66f87b)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9538cb68-30f7-4526-8d24-e969c084ee98)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 83b51edf-f92c-413b-b06a-c99435c7757d)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7d7ca37c-e35a-45e2-8c14-c16b6e9d2169)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8991389d-aa0d-469e-a1f6-92b59b729ca0)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 06699af9-744c-4639-b5dd-676b92c3f6b0)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9b9c02e3-a182-48b6-8438-3289eecfe56d)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1ad07d09-40d3-4671-b06b-4ba7886daf67)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 537dc80f-da2f-48c3-9a31-6b3942460243)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 12e0aceb-9dcc-46cd-952e-46ed91f13f76)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c2c2d8f9-9c45-468c-8287-87277ee5561f)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b158bf0c-f9c4-4ade-9dfb-6c0d5a8a66af)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1af0fd64-b368-4f8d-8c20-61c31be629bd)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp b2af6cf2-5c28-49fc-a06d-4ec5663c3b4f)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 2cc41a68-1d34-4351-a75a-4a64f3927fc0)) (pad "" np_thru_hole circle locked (at -5.08 0 144) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp fded44c1-1abc-41d8-9f51-2d37a0dd096c)) (pad "" np_thru_hole circle locked (at 0 0 144) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp fe3a84cb-4399-498e-b30a-c2617fada373)) (pad "" np_thru_hole circle locked (at 5.08 0 144) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 8feba541-fa2f-404a-8555-6d8d18a20899)) (pad "1" thru_hole oval locked (at 2.54 -5.08 144) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 16fb3c2a-6c3c-46d2-bbc1-5d595f74ef84)) (pad "1" thru_hole oval locked (at 3.81 -2.54 144) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp d9f37df5-76c5-464b-963b-6bbf3ee08eab)) (pad "2" thru_hole oval locked (at -3.81 -2.54 144) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 54 "Net-(D57-A)") (pintype "passive") (tstamp 8f1db0f4-7cb2-4e88-bab5-5f8d278c314d)) (pad "2" thru_hole oval locked (at -2.54 -5.08 144) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 54 "Net-(D57-A)") (pintype "passive") (tstamp 5a55eff5-2a41-4d6a-a6d2-37a4e535057c)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 1880443a-cd54-4bd2-a810-828d09e0b45c) (at 169.45 113.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/a0e0c2ab-893f-480f-be52-989b2fe80245") (attr through_hole) (fp_text reference "D42" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d970bde8-46af-4848-a602-55b2800b3348) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp d16e6697-e52c-4d8b-9fa0-99bb09137fa6) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 56340565-cab5-4375-a4ec-7734d967c01a)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ba546b5e-a6a8-4932-ab31-01b86fa3cd24)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 1c13bd92-d240-4154-b7a6-5020d989ad26)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0c00e24e-bd5e-4e20-89e1-cb621daaf165)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp ff959630-4f5f-4175-b8e4-238134a3fcb1)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c9f82a83-332d-4c99-a5b8-b5909d50c50a)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 62f2fd29-5da3-44a8-8fdd-1db6653b4960)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 7d372eef-8b79-4bd1-8da8-650dd6f0c670)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp eac48288-4503-4f6d-8749-67be8a6f89d2)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 99e3179a-d74a-412a-a655-6ca1788b9133)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp c12108c9-b06a-4ecf-8f25-045121f3125b)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp fe1235a4-94fe-4629-895c-0b77beeaf653)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp f8851176-9e93-4bdf-9ec9-2fbeaca9d678)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp 49608253-611d-4ad3-a105-081fd9240c2c)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 45 "Net-(D42-A)") (pinfunction "A") (pintype "passive") (tstamp f02d32d9-1b12-4ac1-a13d-67c4428f8167)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 1a017243-bdc1-4d4b-b586-0cb618b26069) (at 120 98) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/c74c460e-f20d-48ff-bd9c-7144fbab5e54") (attr through_hole allow_missing_courtyard) (fp_text reference "S27" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 6baa3778-a613-47f9-bc14-b7e91062937b) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 54d4d2fe-c95b-4941-8534-970a72fcc256) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 110ebc29-85e6-4ed6-aa73-478dc4ac9135) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 17adc70a-761b-476c-9863-c65774c8ad88)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5cbc8b94-a278-4403-8dbb-b3e30ffd782d)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 20c4edf4-661e-44c3-9a95-2cca9434a424)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0e28107b-5614-4109-a6dd-12c114aeb478)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7c788c49-ae0d-424a-9fd0-ea2aaec5d7e2)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 22bf1c04-5222-417b-9106-a9bc6982ee01)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d31f5f2e-2569-409d-9625-defbe892a05f)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 21db5b70-ef66-473f-be36-0c03b724cffb)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp e7e3b786-cf32-4b57-8323-f2c6f8ee3926)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 84f58f6c-1d13-4d98-aec7-e836fe2f5593)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 34fe4b64-3ef4-468e-9ba9-3ee8a35d09fd)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7fcab49f-40dc-4227-8699-69c67ad531ab)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b477df4e-b11c-4a85-a68f-0b06f53d1630)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f8ca610f-7abf-4e30-a620-6a3cdfcad75d)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f8b609ff-346b-45bd-becc-85d751176de2)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bdb80061-9a75-4937-8c46-98af1728e5b2)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 96aed7f7-5ecf-4456-bb94-29a565da5a58)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2eba4a2a-19c1-4217-9a9f-5f016803cdd0)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e7759cc5-66fe-44cd-83bc-2aa245f4d420)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3d093e45-1c86-4702-98d8-5b5abe50fc7e)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7cd2f116-e72b-4487-97eb-c87d8dd9e240)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 2788120f-866c-41d5-8913-e1a21161c30b)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 9d03e319-6feb-4fc2-93c9-0dae027277f8)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1c96c08a-6aa4-4d65-9f83-098eabd1cc93)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 75126107-f5e7-461f-9c79-b2aaa9c7467e)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 6ccd7540-e11d-478e-88dc-956d5f763b15)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp cfb05e0b-8982-48f2-9b8c-0c78447a47bd)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 5b05de87-af0c-4817-a9ac-4e21a61659b7)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 8aa14780-1904-41a7-809b-071bb42aa0bd)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 53d26acd-9752-4045-99e6-3dd11dbcd937)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp e716b06d-02bc-46b8-bcf2-88d6dfbeb1e6)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 36 "Net-(D27-A)") (pintype "passive") (tstamp bab79d7a-b739-4fd0-a66c-6a504bf860f2)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 36 "Net-(D27-A)") (pintype "passive") (tstamp 4b5fe184-463c-4c0d-99d2-40d9b3c7390c)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 1d00f467-37ed-4d64-aaa4-370c1c9a6225) (at 190.95 75.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/9a8a2776-8a61-42ea-a3d7-7d2a2015cf22") (attr through_hole) (fp_text reference "D18" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp cc39b102-dc24-42ac-8619-53515c2a2a58) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 0705c080-489e-4194-b9f7-ea3ba1d71ad0) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b8c3d23e-23a7-42df-b7d6-012a721d85d5)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fcbc8b8d-52ea-4235-817b-bb523e32ae48)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 840d6a62-85db-4548-8e56-4273677580ba)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7fc739e4-c745-4c18-8be8-b3769baaa498)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 2ccab919-8676-44e8-be85-40e0f4a218b5)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e700a9f5-18a7-43e3-8179-acc0de71f208)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d81326bc-156e-41ac-a05e-e9f670e01b26)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 312e4ede-7713-4535-825a-e0c1034ae47b)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8ff0e8cb-5483-4399-915f-74d44a9a6625)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 8ace6069-a419-4d35-abef-760c434384f8)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 2f090792-0a52-47f3-997d-7f38b09a280f)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 993a26a0-823b-4cac-9d9b-d119e4f298ff)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp f5d3996d-c6a9-44f3-8f7f-c89941439e8f)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp 49351d72-5d71-4eff-b7e4-bc3af6ae240d)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 33 "Net-(D18-A)") (pinfunction "A") (pintype "passive") (tstamp e3b54cd9-5ea0-4db3-94eb-6374ceaccb9a)) ) (footprint "footprints:MouseBites_1x4_P0.9mm" (layer "F.Cu") (tstamp 1e93ae93-7742-458b-9ac2-94e03bce6a84) (at 132.1 71 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 7db257a7-0438-43a9-81ec-935b2d45d6fe) ) (fp_text value "MouseBites_1x4_P0.9mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 9c1821ee-e536-453f-b860-d16788c239ea) ) (pad "" np_thru_hole circle (at -1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp c8bc3176-77f4-406a-bf69-bfc58803a62f)) (pad "" np_thru_hole circle (at -0.45 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 826d0a8e-f3c7-405a-be07-4d5bce5bb062)) (pad "" np_thru_hole circle (at 0.45 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 3fe81d9f-c7ce-4782-9962-69f0d94fa569)) (pad "" np_thru_hole circle (at 1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f681194d-c3a9-4bf2-9ac0-bc9726dac242)) ) (footprint "footprints:RPi_Pico_Custom" locked (layer "F.Cu") (tstamp 242dd44e-6bb2-48b5-b2bc-b75682f1ac0e) (at 225.84 99.1) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/80801f83-29e9-4494-858e-ce0091481c6a") (attr smd allow_missing_courtyard) (fp_text reference "U1" (at 0 0) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp c8f02bbd-513e-4276-b7bf-e51eca377848) ) (fp_text value "RPi_Pico_Custom" (at 0.2 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 061c6592-cf70-4045-a930-7e069fcbd395) ) (fp_text user "RaspberryPi" (at 0 9) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d3ef7ac3-959c-4dff-8e75-197d9969d105) ) (fp_text user "Pico" (at 0 13) (layer "F.Fab") (effects (font (size 3 3) (thickness 0.3))) (tstamp ec3e364e-90e0-4810-82cc-4979062932fd) ) (fp_poly (pts (arc (start -10.16 22.479) (mid -10.048408 22.748408) (end -9.779 22.86)) (arc (start -8.001 22.86) (mid -7.731592 22.748408) (end -7.62 22.479)) (arc (start -7.62 2.921) (mid -7.731592 2.651592) (end -8.001 2.54)) (arc (start -9.779 2.54) (mid -10.048408 2.651592) (end -10.16 2.921)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 964533ca-7de3-4dd6-80b1-f85759194eea)) (fp_line (start -11.86 -24.892) (end -11.86 24.892) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp ca9d15a4-971f-427d-8e39-25f78412ed83)) (fp_line (start -11.811 -22.86) (end -7.747 -22.86) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 994314ad-82d2-4438-863d-2fe3df0983d2)) (fp_line (start -11.352 -25.4) (end -4.2 -25.4) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 78dd5d87-42d2-4412-a9b0-e9779579b8e2)) (fp_line (start -11.352 25.4) (end -4.2 25.4) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 8de6fc4a-0ff3-4151-b1d8-8a4691956032)) (fp_line (start -7.747 -25.4) (end -7.747 -22.86) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 968156aa-2b2d-4c72-b5fc-a3a9fccc0ed3)) (fp_arc (start -11.86 -24.892) (mid -11.71121 -25.25121) (end -11.352 -25.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 72ebb18a-fb06-4a07-9786-37c3858a5654)) (fp_arc (start -11.352 25.4) (mid -11.71121 25.25121) (end -11.86 24.892) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fc5baf03-72c2-43b8-a828-2cae2ff18109)) (fp_rect (start -10.5 -25.5) (end 10.5 25.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 64a30f96-3b86-4178-963e-603019906801)) (fp_rect (start -9.69 -7.15) (end -8.09 -5.55) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp 05aaf556-bec0-4ca2-8c3b-70b9c4103bc2)) (fp_rect (start -4 -26.8) (end 4 -21) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 53803be8-0bdf-407f-960d-a9e92e6d7d61)) (fp_rect (start -3.5 -3.5) (end 3.5 3.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b5ad6be8-8bc5-49ba-b611-3bc0a6d2ac54)) (fp_circle (center -8.89 -3.81) (end -8.09 -3.81) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp e2149638-068e-44d8-a7b4-bb37de8840d5)) (fp_circle (center -8.89 -1.27) (end -8.09 -1.27) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp 188cbf9b-6f05-4fbd-aff2-b0bb99d1a858)) (fp_circle (center -5.7 -23.5) (end -3.8 -23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 8761d263-58da-48ab-86a6-6c7856d44305)) (fp_circle (center -5.7 23.5) (end -3.8 23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 6884a060-a580-4826-a553-6565bdbcab7b)) (pad "" np_thru_hole circle locked (at -5.7 -23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 903cf1f2-fa6b-4a21-bb6c-d1b32cc16060)) (pad "" np_thru_hole circle locked (at -5.7 23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 128ddf1e-4c53-4206-8d51-f9f66f91e903)) (pad "1" smd oval locked (at -9.74 -24.13) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 14 "/rotA") (pinfunction "GP0") (pintype "bidirectional") (tstamp 473e91c2-f6b2-44a7-aa8e-4fc88b63093c)) (pad "1" thru_hole circle locked (at -8.89 -24.13) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 14 "/rotA") (pinfunction "GP0") (pintype "bidirectional") (tstamp a8894a2f-0161-451f-bc5e-b34f432d0a5e)) (pad "2" smd oval locked (at -9.74 -21.59) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 13 "/rotB") (pinfunction "GP1") (pintype "bidirectional") (tstamp c43de67b-53c7-483b-b786-2ca533b3e6e6)) (pad "2" thru_hole circle locked (at -8.89 -21.59) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 13 "/rotB") (pinfunction "GP1") (pintype "bidirectional") (tstamp aeed4619-c8de-4c0f-b662-a5d200eedb24)) (pad "3" smd oval locked (at -9.74 -19.05) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 15 "/rotC") (pinfunction "GND") (pintype "bidirectional") (tstamp e01f4af7-6bcc-4fc7-9f5d-9218dea06b40)) (pad "3" thru_hole roundrect locked (at -8.89 -19.05) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 15 "/rotC") (pinfunction "GND") (pintype "bidirectional") (tstamp 25a3e731-f1ed-462b-8c64-9667054da015)) (pad "4" smd oval locked (at -9.74 -16.51) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 1 "/row0") (pinfunction "GP2") (pintype "bidirectional") (tstamp 6f8f5cc3-b4bf-40e4-b93d-729e0ef43f17)) (pad "4" thru_hole circle locked (at -8.89 -16.51) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 1 "/row0") (pinfunction "GP2") (pintype "bidirectional") (tstamp 5d15b5a1-ed6b-49fa-aaa8-f852f71c14fb)) (pad "5" smd oval locked (at -9.74 -13.97) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 2 "/row1") (pinfunction "GP3") (pintype "bidirectional") (tstamp e7e43fb9-13e2-4260-8bbd-95b2f217034b)) (pad "5" thru_hole circle locked (at -8.89 -13.97) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 2 "/row1") (pinfunction "GP3") (pintype "bidirectional") (tstamp 0b6ab9f2-17c4-49f4-bad8-42c310c7dd64)) (pad "6" smd oval locked (at -9.74 -11.43) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 3 "/row2") (pinfunction "GP4") (pintype "bidirectional") (tstamp 6fa25f93-8508-46d4-8b60-ac02e56d6ede)) (pad "6" thru_hole circle locked (at -8.89 -11.43) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 3 "/row2") (pinfunction "GP4") (pintype "bidirectional") (tstamp ed689315-d272-43d8-a62b-fa9b292b7927)) (pad "7" smd oval locked (at -9.74 -8.89) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 4 "/row3") (pinfunction "GP5") (pintype "bidirectional") (tstamp 105dca06-b2ca-493d-9140-0a40219aa995)) (pad "7" thru_hole circle locked (at -8.89 -8.89) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 4 "/row3") (pinfunction "GP5") (pintype "bidirectional") (tstamp fae1df11-d46a-41c8-9516-e8bb10fc9650)) (pad "11" smd oval locked (at -9.74 1.27) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 5 "/row4") (pinfunction "GP8") (pintype "bidirectional") (tstamp d2602b59-6163-445e-8024-384da1cbe980)) (pad "11" thru_hole circle locked (at -8.89 1.27) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 5 "/row4") (pinfunction "GP8") (pintype "bidirectional") (tstamp a82fcb65-7a37-499c-81e2-3a3c3253d312)) (pad "12" smd oval locked (at -9.74 3.81) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 9 "/col5") (pinfunction "GP9") (pintype "bidirectional") (tstamp c89929ff-f265-418d-a9a1-78d22f92b4e0)) (pad "12" thru_hole circle locked (at -8.89 3.81) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pinfunction "GP9") (pintype "bidirectional") (tstamp 179b6f66-c426-494f-948a-8c3b1269f62d)) (pad "13" smd oval locked (at -9.74 6.35) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 57 "Net-(U1-GND-Pad13)") (pinfunction "GND") (pintype "bidirectional") (tstamp 47995673-302f-4b2c-8f1a-4cb02b051bae)) (pad "13" thru_hole roundrect locked (at -8.89 6.35) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 57 "Net-(U1-GND-Pad13)") (pinfunction "GND") (pintype "bidirectional") (tstamp 0ab4b366-89ce-4034-b8db-e4c62c4fadbf)) (pad "14" smd oval locked (at -9.74 8.89) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 10 "/col4") (pinfunction "GP10") (pintype "bidirectional") (tstamp 584ea8d6-69b9-4dab-b0dc-ca6708e97b0a)) (pad "14" thru_hole circle locked (at -8.89 8.89) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pinfunction "GP10") (pintype "bidirectional") (tstamp 8f52e822-044e-4d9e-9306-cff9588eddbe)) (pad "15" smd oval locked (at -9.74 11.43) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 11 "/col3") (pinfunction "GP11") (pintype "bidirectional") (tstamp a30916ba-0ed2-4b0d-9d01-92bc340606c8)) (pad "15" thru_hole circle locked (at -8.89 11.43) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pinfunction "GP11") (pintype "bidirectional") (tstamp 9a4e19b9-0176-4764-8ed2-85679552ee02)) (pad "16" smd oval locked (at -9.74 13.97) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 12 "/col2") (pinfunction "GP12") (pintype "bidirectional") (tstamp 1f96b333-3078-4e26-acf7-c633f31b2b9a)) (pad "16" thru_hole circle locked (at -8.89 13.97) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pinfunction "GP12") (pintype "bidirectional") (tstamp f943f9f8-5d0e-4d85-a907-98d60cb5a7b0)) (pad "17" smd oval locked (at -9.74 16.51) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 8 "/col1") (pinfunction "GP13") (pintype "bidirectional") (tstamp 81825f00-5cd6-47f6-ab25-6623da065280)) (pad "17" thru_hole circle locked (at -8.89 16.51) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pinfunction "GP13") (pintype "bidirectional") (tstamp 2dd79a16-7f70-495b-8b58-a68e674c80e6)) (pad "18" smd oval locked (at -9.74 19.05) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 57 "Net-(U1-GND-Pad13)") (pinfunction "GND") (pintype "bidirectional") (tstamp 0bf4f70a-e508-44c0-88ca-ea0885d863f4)) (pad "18" thru_hole roundrect locked (at -8.89 19.05) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 57 "Net-(U1-GND-Pad13)") (pinfunction "GND") (pintype "bidirectional") (tstamp 5988c4a8-420a-4347-beec-7d117d1d7eab)) (pad "19" smd oval locked (at -9.74 21.59) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 7 "/col0") (pinfunction "GP14") (pintype "bidirectional") (tstamp 647f18b9-36ee-4eb7-82f9-966744758fe3)) (pad "19" thru_hole circle locked (at -8.89 21.59) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pinfunction "GP14") (pintype "bidirectional") (tstamp b06ffebf-599c-45af-b336-da7789fd2be1)) (pad "20" smd oval locked (at -9.74 24.13) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (net 6 "/col6") (pinfunction "GP15") (pintype "bidirectional") (tstamp af482442-a049-4fdf-a22c-2101cf9b71ea)) (pad "20" thru_hole circle locked (at -8.89 24.13) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pinfunction "GP15") (pintype "bidirectional") (tstamp c57dc197-6fc2-4b61-8ee0-e4259f8a9df6)) ) (footprint "footprints:Graphic_OSHW" (layer "F.Cu") (tstamp 27c90fa3-a769-4b38-a6a3-44cc05df2fd4) (at 120 88.5) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp f9f0131b-0444-4838-a893-5c53a808a568) ) (fp_text value "Graphic_OSHW" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 316c2945-e994-4631-86ec-b4e777680335) ) (fp_poly (pts (arc (start -0.287 0.693) (mid 0 -0.75) (end 0.287 0.693)) (xy 0.711 1.717) (xy 0.938 1.624) (xy 1.522 1.983) (xy 1.983 1.522) (xy 1.624 0.938) (xy 1.811 0.485) (xy 2.479 0.326) (xy 2.479 -0.326) (xy 1.811 -0.485) (xy 1.624 -0.937) (xy 1.983 -1.522) (xy 1.522 -1.983) (xy 0.938 -1.624) (xy 0.485 -1.811) (xy 0.326 -2.479) (xy -0.326 -2.479) (xy -0.485 -1.811) (xy -0.937 -1.624) (xy -1.522 -1.983) (xy -1.983 -1.522) (xy -1.624 -0.937) (xy -1.811 -0.485) (xy -2.479 -0.326) (xy -2.479 0.326) (xy -1.811 0.485) (xy -1.624 0.938) (xy -1.983 1.522) (xy -1.522 1.983) (xy -0.937 1.624) (xy -0.711 1.717) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 888eda3b-e8e6-4183-bd33-d4e0f129f2b0)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 2888557a-f846-4efa-8457-c88c1dbabeec) (at 180.2 55.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/6708a860-b37f-42fd-877e-c564a8e65593") (attr through_hole allow_missing_courtyard) (fp_text reference "S4" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 014b755b-7f61-45b5-bc24-aea5c2ec9762) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 60790e40-6e3a-4218-9037-ffb9ac6b8471) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 70b317c2-4b79-4c5b-bfda-16e8dc16a252) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6f3e52ba-a55d-4e0b-a2b6-b29a86ac0ce5)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 38568170-509b-4ddc-afb2-ab7b63ba6a69)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0e36e1d5-ce7f-4977-8971-30322f19bf02)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4d4dfb87-6ffb-4ea6-a59e-3f7cc07fa679)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 73e1c0ae-f970-4215-9dd7-26ee4fad6a22)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 680872c8-f857-4589-8541-89aaee4977bf)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ed461e9e-fff0-47c3-93d1-75c3e9f012e3)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 087b04ee-a6c4-4f86-8102-056a97236809)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp fe646e64-2048-42a6-bf48-e232b7f4e413)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 8a838528-90fa-4525-8113-4ac4b68128c7)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 316d409f-893e-4dc6-b3eb-9bd4b14506b7)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ddb324ca-5d44-43f9-abf9-2ead63365030)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 96e5a8bf-20b6-42e5-ac83-89fa84c6709f)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4be24226-8b63-4adc-920b-609e58269517)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c2a858fa-2c14-4464-bd41-f199a930a80d)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 649cbb81-33f6-4457-ac3d-a53d84b66333)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp deca2a9d-53a2-4734-a2ec-98108dfa9f05)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e7ab8cba-4b8c-4c26-b5ee-8b256c7e95c0)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 31ed090f-9b4a-4d3c-92ee-4c5c0651604d)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ec809d77-3899-438f-a7ca-f9351791faa4)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 3c99931a-8af9-47be-b7d7-152d5735f7ba)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 21383684-9c3f-47c1-830a-b5dcc8fba9bc)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp cf5644b5-ca21-4bde-818a-ad563e4d0c48)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 233902cb-790c-4aae-af23-57fb3b592308)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 4f6f64a0-5a47-4820-88c4-10a7a75542dc)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp aba04f37-419d-4418-8f94-779d37e00a4c)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 469a8928-4c4a-4cec-ac1c-30f840b10ff6)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 3da18560-3148-4edf-9347-abe830f31e13)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 4413a076-9f08-46b9-8e02-11c91c1d4a54)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp 77613b09-03ad-4dd8-ade7-00f191f4c426)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp 577e736d-580e-4053-a05c-78b09497d496)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 23 "Net-(D4-A)") (pintype "passive") (tstamp 69b36962-8f3d-477e-b422-8aeb7cb0fc1b)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 23 "Net-(D4-A)") (pintype "passive") (tstamp 14989121-59bf-4a76-bedd-b076eb69d157)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 29a0b54e-eb6e-4d62-ba5c-54ea9a3b2ef7) (at 101 60) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/bc0101dd-e2ba-460c-a973-2b0d146c175b") (attr through_hole allow_missing_courtyard) (fp_text reference "S0" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 4e8c3a4f-7707-46fd-93b8-1f7e0dcf8a79) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 1fae7d19-f65f-45e5-b4ac-f77dabf41bdc) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp da8d100c-9eba-4974-a039-429881bc6d7a) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp faa966e9-211e-46b6-9dc5-9babfd22bc44)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a04edb58-5cfd-4165-99cb-d6b7e9280f39)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 087694f2-f603-4520-951c-01ccfe28ea4d)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 540659b4-2bff-4db1-889b-a1e821bbfb3c)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f4befb85-14fc-4ef5-ae50-2a672e798285)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp be5b7cfc-627e-4273-851d-4a5e174f6bba)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4afb5f98-6cb0-435c-96c7-0b5725070e5e)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 85f4398b-e45b-4059-b1bf-e886906434f4)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f6a0b8b3-d211-4103-9bed-ff697c4ae950)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 2a15a7ee-c69e-4ff7-9108-ee0746b6e8c4)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp e2299361-331c-4c2d-ab4a-bf8185883b0b)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a8d32059-d0ef-4c3d-b9c2-ca28e47c6cec)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 186bffed-3594-49e6-af97-efe3d35aa1db)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 53cb3ea2-13b3-4d39-8032-24f54de14fd2)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5711a565-f0d1-4484-b481-1992405669b6)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0dc67ac1-9aba-48d2-8cfa-2b132354c5ef)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0b86c6f5-a030-4ff5-a540-69f4a94556f6)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 63c92fc9-08c1-4d61-be74-72b23da7b783)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e1653202-73c8-4f12-aeb4-e4a168565e16)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cbee7d40-9ed5-448c-b6a8-11f1f9424e11)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 10753014-7a4f-4bf0-b341-c340f8b90042)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5e1728b3-8f9d-46e9-981a-b1f0bce3f434)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b24be721-60e6-4039-8dfb-65a15f28e07e)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp ec813961-8a6a-480e-9e67-5fec00a44f1a)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 0a082cc2-e7c4-4fe2-9f56-9cec2048eacf)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp bbd5ffd0-d69f-44fb-96be-d9dc9abf519e)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 05a6f52b-3435-47a1-aa35-01a484830269)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 2a74a58c-b0cc-409e-b83d-bf4345832787)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 9f9a32d1-0934-4188-a1c5-36db3b6f2f1f)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 9354e9a7-26d2-4743-9da6-0b3f33d5a1fb)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 0448ce9f-2ea5-47da-9d3f-36555943d93d)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 19 "Net-(D0-A)") (pintype "passive") (tstamp 7119bb41-61eb-4f4b-9161-49b81d87b218)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 19 "Net-(D0-A)") (pintype "passive") (tstamp 88dbd817-127d-4891-ac07-97208824297f)) ) (footprint "footprints:Graphic_CHRUMM" (layer "F.Cu") (tstamp 2bb1f396-b160-40c8-ac2e-9208e9fe6b19) (at 198.2 129.875) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp b8b74810-54b2-4c37-9621-c493111afb69) ) (fp_text value "Graphic_CHRUMM" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp bc5cadeb-a3d0-4296-a90e-7a782884669f) ) (fp_text user "${REVISION}" (at 0 2.9 unlocked) (layer "F.SilkS") (effects (font (size 1.8 1.8) (thickness 0.25))) (tstamp c258d7dc-6206-4496-91fb-794e4555e99c) ) (fp_line (start -9.01 -2.22) (end -9.41 0.98) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp ad3e00f1-245c-42b0-a716-b189e5c89319)) (fp_line (start -8 -0.6) (end -8 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 837fb601-121d-4c8e-971d-ebbb3cda629a)) (fp_line (start -5.3 -1.6) (end -5.3 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 02902a4a-77f9-4fbf-ac7d-865bd91470b7)) (fp_line (start -5.3 -0.4) (end -3.7 -0.4) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 5ce4eac7-e29e-4c29-93b0-cd5e88bf1a7c)) (fp_line (start -4.8 -3.1) (end -8.02 -3.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 8e4b64ac-7271-4508-9a2a-3b91b3043b2b)) (fp_line (start -4.26 3.18) (end -8.66 2.08) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp ed7bc94d-5d50-4a5f-bd53-6dd41839844e)) (fp_line (start -3.7 -1.6) (end -3.7 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 2f65b8b3-5ece-42bc-8ddf-50ecc397c54b)) (fp_line (start -3.5 -3.75) (end -3.15 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6ce0c874-4e2e-433e-9f2a-6b7c4a58c30a)) (fp_line (start -3.5 -3.25) (end -3.3 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 821b1629-4db1-40db-94e8-b800c2fb904d)) (fp_line (start -3.3 -2.75) (end -3.7 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp aedb028f-0cb7-4393-88eb-3c77db0dec24)) (fp_line (start -2.6 -1.6) (end -2.6 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 5ff81f05-b2cf-42d1-b08a-734c3eab1d91)) (fp_line (start -2.6 -0.2) (end -1.7 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp cec65841-1ede-4cbe-87a9-df674ee6369e)) (fp_line (start -2.55 -3.5) (end -2.55 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4f337e65-92e4-4922-8de9-97d22710de89)) (fp_line (start -2.55 -3.25) (end -1.8 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e55fc042-3e34-4753-92c2-399b659de350)) (fp_line (start -2.3 -3.75) (end -2.05 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ff0ed30a-57b8-45f9-924a-e1fed1ca8a10)) (fp_line (start -2.3 -2.75) (end -1.85 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 651185a3-b6b4-412d-8bb9-04ede6a9952a)) (fp_line (start -1.8 -3.5) (end -1.8 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 13caea6b-ff94-48b4-8cd8-e48043d33140)) (fp_line (start -1.7 -1.6) (end -2.6 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f1954eba-cc6e-4859-88a2-173f2c0db547)) (fp_line (start -1.7 -0.2) (end -1 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 6cdc7376-4d5c-45a5-b820-a8e24dc42851)) (fp_line (start -1.35 -3.75) (end -1 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 59d94878-410a-433f-a6f3-de776f9bbb0b)) (fp_line (start -1 -2.75) (end -0.9 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9a3e87a4-b29c-4a53-9e75-8b3aac93682b)) (fp_line (start -0.9 -2.75) (end -0.55 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8cfe31f5-9442-4c90-b6d2-8555fc038b12)) (fp_line (start 0 -1.6) (end 0 0) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp e58b91d4-63f6-4be4-b5cd-718e77145b2d)) (fp_line (start 0.5 -3.5) (end 0.5 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d6b2342f-c318-40c9-b683-167d258063a3)) (fp_line (start 0.75 -3.75) (end 1.25 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8d653c80-9445-4b9f-b62c-abf4d11f69e7)) (fp_line (start 1.25 -4.25) (end 1.25 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 03202957-778b-42b5-8bdf-0ace2a7e5dac)) (fp_line (start 1.25 -2.75) (end 0.75 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 64c8c6bb-0706-44af-8e94-0834b290fce7)) (fp_line (start 1.6 -1.6) (end 1.6 0) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 864e9fb3-9eff-4225-953e-8e076efb5be0)) (fp_line (start 1.85 -3.5) (end 1.85 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0638a18f-43d4-44bc-b832-a1eca427c66b)) (fp_line (start 1.85 -3.25) (end 2.6 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 74c0fb74-3ebf-4fcd-93de-46bfc4d8c8f7)) (fp_line (start 2.1 -3.75) (end 2.35 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4a73813f-17a5-47d2-a49c-21cc48be744e)) (fp_line (start 2.1 -2.75) (end 2.55 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 55e03d1a-4cb6-4fed-993d-438c9efd42b0)) (fp_line (start 2.6 -3.5) (end 2.6 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 89d76c42-c8a4-4100-b0df-48b8a534967d)) (fp_line (start 2.7 -1.6) (end 2.7 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f2cfbdf9-6c70-4888-823f-e41428e536df)) (fp_line (start 3.05 -3.75) (end 3.4 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 371db3f2-8e37-4e70-994a-e4df3c8393b5)) (fp_line (start 3.4 -2.75) (end 3.5 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9d151b8e-e578-46f3-bc41-255e45b28797)) (fp_line (start 3.5 -2.75) (end 3.85 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp eaf57cc0-3b9b-44af-a509-670324cbd525)) (fp_line (start 3.7 -0.1) (end 2.7 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 949e6588-0638-47a2-8338-029c33417f1b)) (fp_line (start 4.26 3.18) (end 8.66 2.08) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 9505c1e9-7e96-4120-b274-4e1076b16715)) (fp_line (start 4.7 -1.6) (end 3.7 -0.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp bb3a88a7-7bb9-40f3-81b4-ad486ac0f824)) (fp_line (start 4.7 0.8) (end 4.7 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp e2565547-86ec-4717-89a0-8de681c0b499)) (fp_line (start 4.8 -3.1) (end 8.02 -3.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 98b20a2e-2750-4329-a9ed-e864687831ee)) (fp_line (start 5.8 -1.6) (end 5.8 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 014cad58-e76e-4f3d-bd56-b499babe1ff8)) (fp_line (start 6.8 -0.1) (end 5.8 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 13c9a626-54c1-46d3-b2f0-1ac6a035d227)) (fp_line (start 7.8 -1.6) (end 6.8 -0.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 29e81e4f-a125-4f10-b4b9-9aa202b84b2d)) (fp_line (start 7.8 0.8) (end 7.8 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 25998a07-6bf6-4a69-923d-6912f706acb7)) (fp_line (start 9.01 -2.22) (end 9.41 0.98) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 9500c86d-83b1-4db3-a66f-3b532df788d1)) (fp_arc (start -9.01 -2.22) (mid -8.681124 -2.84689) (end -8.02 -3.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f043a538-5791-491a-95e6-33a91962ab0a)) (fp_arc (start -8.66 2.08) (mid -9.243767 1.672341) (end -9.41 0.98) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 46e2538d-cc96-4be8-960d-89a866335fa0)) (fp_arc (start -8 -0.6) (mid -7.382819 -1.524075) (end -6.293 -1.307) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp cdac5c4a-ca7b-4a79-907a-222c8aa166ee)) (fp_arc (start -6.293 0.507) (mid -7.382819 0.724075) (end -8 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 0c847838-f73d-4c6b-ae49-582e31251df1)) (fp_arc (start -3.5 -3.25) (mid -3.75 -3.5) (end -3.5 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0d840fb4-69be-44fc-84db-66c09ad4b6ea)) (fp_arc (start -3.3 -3.25) (mid -3.05 -3) (end -3.3 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 41736736-d9cb-4544-b0df-f8a5b039f4fd)) (fp_arc (start -2.55 -3.5) (mid -2.477 -3.677) (end -2.3 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0b08ca22-d234-44b1-b209-210ded293843)) (fp_arc (start -2.3 -2.75) (mid -2.477 -2.823) (end -2.55 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 13064c61-d55d-4b74-a39a-beee2636930a)) (fp_arc (start -2.05 -3.75) (mid -1.873 -3.677) (end -1.8 -3.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 103e8181-5697-43bb-a44d-a6dbaaf91794)) (fp_arc (start -1.7 -1.6) (mid -1 -0.9) (end -1.7 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp a1a21686-f376-4efe-9b31-bac2474e11ee)) (fp_arc (start 0.5 -3.5) (mid 0.573 -3.677) (end 0.75 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6fe52ad5-a3e0-4042-82d0-fdc775e2bffc)) (fp_arc (start 0.75 -2.75) (mid 0.573 -2.823) (end 0.5 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 43b83c7c-d37a-4624-bf89-0593320b8338)) (fp_arc (start 1.6 0) (mid 0.8 0.8) (end 0 0) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp eb11489c-8c8b-4d68-988b-227fe23250fc)) (fp_arc (start 1.85 -3.5) (mid 1.923 -3.677) (end 2.1 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 87f0f480-8199-4d91-92b8-c898844051ef)) (fp_arc (start 2.1 -2.75) (mid 1.923 -2.823) (end 1.85 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2919a260-71d0-4737-a3e5-284f4db13088)) (fp_arc (start 2.35 -3.75) (mid 2.527 -3.677) (end 2.6 -3.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 374ad1cc-55cd-43e7-bd5f-a277c9003d4c)) (fp_arc (start 8.02 -3.1) (mid 8.681127 -2.846891) (end 9.01 -2.22) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 30ed223d-d379-4bb8-a4af-60a72d8c1f81)) (fp_arc (start 9.41 0.98) (mid 9.243767 1.67234) (end 8.66 2.08) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 02501f39-dcbd-4073-9561-51fd05f132b0)) (fp_circle (center -0.1 -2.8) (end 0.08 -2.8) (stroke (width 0) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 2226e4d9-bc20-4da1-98bd-2a92edd6d203)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 2dce130e-12b1-440c-82a4-9dce65a1e26d) (at 82 79) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/0226cc37-2500-4038-b483-786d1f73d24b") (attr through_hole allow_missing_courtyard) (fp_text reference "S25" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 2bc2ffb0-dd09-4f60-9c44-41cb911f7388) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 597a3283-2fdd-4fe6-b045-2bec7eb1948f) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 6bcc590a-ffb8-4ff7-b410-d6a64de09481) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e36c141b-45ea-41ee-9f00-a7e9d0f56cbe)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 75f76783-d9c9-4028-bb24-fbc3d9c7316a)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ad263434-9597-4668-8f23-5a5f2634ca3d)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 109fa200-da54-4f73-b3b2-29e09d3c905a)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4f3362d2-878a-40f3-8f14-75464358926f)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4d83d9c0-2ecf-4602-af9b-cf44b66d111b)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp decec822-8965-4ff5-95fb-5b0f1c68d17a)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3a83f610-86c7-4b6d-96a5-a1a334c7830d)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 5663e6b0-4d50-48c7-b216-95b66362c91c)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7d13dcea-c311-437c-98d7-b34c2da2cac2)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp eb0ed1ab-0f34-4816-96ec-67ed1a53ac7b)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 9247928b-67dd-4736-80f1-8eca17e47320)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a46a699b-855e-4507-9116-3dd893c5458a)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 937a44de-6ab5-41ae-898e-433a902e508b)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6c32533e-0a8a-40e9-ac7c-2feb77f5165b)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ba9e4f86-f778-433f-bbe6-67aebe7ec08c)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8d939549-2ac5-476b-81c2-ac91cce55564)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5384d143-ca47-4991-a3ef-cb7cc1236c4c)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7b692e4b-a2f9-4103-8bfd-d3863d8c6c1f)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4e8c621e-ab85-4bf0-9c8a-b837e8c575a9)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 536bcc2f-0ae3-4539-9170-da87bd0daa73)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b14872e3-6eba-4e8b-9bb5-154d785deeac)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5cf46eb3-eb2e-404d-91c2-7d0407c61379)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d78ec239-ece7-43aa-b02f-8e2e87a8f183)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 147c2582-2883-4015-be7a-34e5a3e8b498)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 68565589-7d6c-4029-8b44-ad3cd0acc46e)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 317c77db-86a6-41e7-9a84-b02833faa1b4)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 885b75d5-ed59-426d-9d5e-8c888353d282)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 3877369a-37b2-472f-8c28-6a092cada3d3)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 7c124c1e-bd44-446a-93d5-72478847fe29)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 040e0108-38aa-4ccd-a9b5-df69b0159748)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 34 "Net-(D25-A)") (pintype "passive") (tstamp f4fcd9c1-7ccc-44a5-8301-d20975d81250)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 34 "Net-(D25-A)") (pintype "passive") (tstamp 0ca5ade9-9b3d-423d-bc27-df852bc52f3b)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 2ef04f52-2160-419e-975c-ee62cda2ae6d) (at 142.2 93.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/4fc9d620-af3f-4282-88b5-607193e15aa2") (attr through_hole allow_missing_courtyard) (fp_text reference "S28" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 495b7dc7-644e-4357-8c43-9ebd280ea9e0) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 64dd7573-7483-40b4-8afe-3121498e5935) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp d25f3f2f-b35f-45a0-a358-6b18dce204bf) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f8c409d4-73f1-4217-a063-ef0f66f3098e)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f30ef4fb-8ee3-4ffb-afeb-574da9d1040f)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d5d3a17c-f513-4405-8033-ab6cc53a6567)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4f4acca0-ff0b-4766-8c8e-e8b12ddfc5aa)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e611d44a-b6a1-4c8c-944b-b023e3ef177d)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6ab35e20-a02f-4905-81dd-695f1eed0c88)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6324ee14-df6e-408b-b302-925e3c92576a)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 890dfae0-d79c-49ac-995a-eaf14a517198)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 09db190e-3d3e-4756-b2c4-e6a1b3039a92)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 252df697-f293-47db-9c1a-410ba8f96dab)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 404960fb-4536-434f-ad97-84d44a4aec5b)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 2af5e104-7353-4f3e-89c8-6157fbe5ce9b)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 225f2513-cc5d-4b24-beee-41afc868310f)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 667e3a7b-4ac7-4247-b929-09e87b817fbf)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 641692fb-2822-461a-94db-e774bd525451)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bac1c23a-6f11-44e0-be00-d62b4364baca)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b97413ce-af74-4d90-be6e-cd62f8476a81)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 610410b0-feac-4207-abab-7c701c2bd194)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 359747e4-cc2f-4e3d-ab08-97f8145e3e27)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e4fe4146-3c5f-4171-bb3c-7792d97b11f1)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7a826b53-9a98-43a8-ac97-6d289a10aa6b)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 87c37cab-8525-4bb6-ae2a-52943187e889)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 66a71827-b0ab-4f35-8e3a-44fb517b2a9d)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 96b0d5d5-55fc-4e37-b4e9-f0fd8591d8fd)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp fdeb756c-a043-4ad4-9e21-eae782bc9ae4)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 8d13cc6c-ff86-4b0d-aef8-887d21a6c8c3)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp e47f1a8b-c64b-4c08-86d3-ca0409553f6c)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp dfef08ac-29eb-4d09-8c56-177dc598f4fc)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 1f98943b-2b27-4afa-a996-1810af922726)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 769c0925-d009-4f23-9a2b-b9110126e63e)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp fdf07541-034c-4db2-9d47-e929ef01ce5c)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 37 "Net-(D28-A)") (pintype "passive") (tstamp 3171f814-bf97-4c45-800b-4510c2dce07f)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 37 "Net-(D28-A)") (pintype "passive") (tstamp 61513a7f-1deb-425a-b6e1-a3bbff8fd750)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 398c65f2-bb67-4b5a-9b9a-e7d2723d2802) (at 111.75 99.26 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/82ab17f2-3688-4861-be79-7c27176ecfaf") (attr through_hole) (fp_text reference "D27" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f1a44702-ff93-460b-b2a0-7ff3d9dbdc7f) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp bd6ff118-b04a-4b12-93d7-63ab7ced5845) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b2769d1b-34a0-404d-ba15-18c0d0814545)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 25649876-5198-4617-addb-be4c06902125)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 5abad3a3-e1e4-44f2-9931-3206df485d1d)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d3c5b230-8896-40c0-9da3-c4f99f68fc70)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp f210cccc-60d6-4ce9-a9fa-c7b46b014b74)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 965b7d5e-2184-4180-ad68-4f26e32408f4)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 31103a79-59a9-4ea4-8901-24097be6df8c)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 8eaed014-032e-4b1d-a29d-4dda88a0be70)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e1afbcff-447e-4fdc-9309-27bfda34dd9e)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 0a144e48-d671-4074-bd15-9f0ac771aa00)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 8bd23d60-8792-463b-bc18-dafbaebfbc51)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2735499a-f237-41e5-9697-f44a94ed5793)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 784ff1ad-dbc5-4331-a783-3ebd283ead31)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp ef0c8339-5264-4eff-b8a4-fba04e30710a)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 36 "Net-(D27-A)") (pinfunction "A") (pintype "passive") (tstamp e718a3d6-07e9-4bd7-b940-25af1a182949)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 3a7cbbb9-dd75-4ab1-8f0e-ee999b4b0495) (at 205.9 81.35 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 808ec163-55be-4b3b-86b4-13b79e90a6d9) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e71ff392-f286-448f-99e1-b591370f76e6) ) (pad "" np_thru_hole circle (at -1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 16823e5a-6fac-4a48-b14a-cb2be6d322f4)) (pad "" np_thru_hole circle (at -0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 591a4a48-7291-41a1-a248-9741022d7e2e)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 863de431-c9bf-4a44-93a2-b6fd54a13004)) (pad "" np_thru_hole circle (at 0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 6734298c-97fa-4485-8028-e3e63093d625)) (pad "" np_thru_hole circle (at 1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp dfa4fa51-df2c-4b98-a6c2-d867abe852d9)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 3e025294-4494-4b86-843b-d6a3790e2f4e) (at 101.75 108.75 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/26acd12c-735b-44ae-947b-a8dba4f1c6aa") (attr through_hole) (fp_text reference "D39" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp e5e0be36-045c-4903-8dc9-76f6f45ef796) ) (fp_text value "Diode" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cc2713c8-f5dd-4bea-8343-73a97cda8ec4) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b3205994-cd39-4037-93c4-9f08b8d7fe1e)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3fdf0186-ae88-41e5-9a85-5657cba4714a)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp e239cfa1-51cb-4e86-96aa-d245a64c2428)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ee7b8408-5a94-4c89-aa5c-2e2022148c7a)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 39343c2f-3afb-4b08-91a1-38e1ec2365e0)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0c8c27a9-ded0-47fa-b7d7-6d5a3821e693)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c1d548b0-2bff-480c-bf57-894f4091daff)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 6ec0e42e-f13f-4d06-a892-8d45f24f441e)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1e722f50-a187-48f4-ab5b-e18107296748)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 376903ca-e47d-4a4e-930c-c6b4c18952d5)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 89c26a9a-20e2-46a8-9f0f-1c0afe0de944)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp ab081916-7eb6-4ab4-a91f-9688b4a4beaa)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b1d6fbbd-dfab-42fd-9f87-09764b5c7fb9)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp bf60c1cf-2ec2-4d2b-b0df-eea2eb4503f7)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 42 "Net-(D39-A)") (pinfunction "A") (pintype "passive") (tstamp bef442a7-f7ca-45b8-bd12-230c497b50db)) ) (footprint "footprints:MouseBites_1x5_P1.35mm" (layer "F.Cu") (tstamp 4187c045-e4f5-4b17-bc85-7d1063d1692b) (at 216.735821 96.569847 -66) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 -66 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 4f634c91-21d1-42c7-b5e7-62f094ba6699) ) (fp_text value "MouseBites_1x5_P1.35mm" (at 0 0 -66 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp fe91ce8f-97da-4e5c-916a-4f1ac217ecb2) ) (pad "" np_thru_hole circle (at -2.7 0 294) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f5a8d714-daf3-4af7-a92d-caacc93186c2)) (pad "" np_thru_hole circle (at -1.35 0 294) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 07142cce-fa2c-46b9-9b22-e8cfed95046b)) (pad "" np_thru_hole circle (at 0 0 294) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp d9a089e9-6bd4-47bf-a7ac-6707109b1da9)) (pad "" np_thru_hole circle (at 1.35 0 294) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp af7cce48-3f0d-449c-b517-a54882aa8531)) (pad "" np_thru_hole circle (at 2.7 0 294) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp d0a627c8-fc02-42d2-921a-8dadffe7b262)) ) (footprint "footprints:MouseBites_1x3_P1.35mm" (layer "F.Cu") (tstamp 48638cef-109c-4a45-a74b-750d5fc0bc95) (at 93.5 132.835 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 9e399a3c-2ef0-4f43-bd02-f2f52387978e) ) (fp_text value "MouseBites_1x3_P1.35mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 99638b33-ca1f-48f4-8ecb-ce4dd93ffe21) ) (pad "" np_thru_hole circle (at -1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 8be70623-989e-4338-98ad-9582627f6f4e)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f267ab9c-cb84-4c65-b5d2-9a24db96cbf8)) (pad "" np_thru_hole circle (at 1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f2584418-6442-45a8-8a13-1575eb5f429e)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 4eeaef91-e005-4e89-918a-8f1d13ff9545) (at 180.2 119.2) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 5f813bbd-bac7-42d4-aa38-e063734aff09) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp bc53fce7-93b0-4fc1-9f6d-9f9893d6f1a0) ) (pad "" np_thru_hole circle (at -1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp faf249c3-63f7-4e78-8444-cacdfe2ed12a)) (pad "" np_thru_hole circle (at -0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp ff3b6d6f-e801-4870-8dac-b598ceb51266)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp c411c829-3711-4774-8f59-bd46780b3f6d)) (pad "" np_thru_hole circle (at 0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 867e4604-124b-4c02-885d-decec12772e6)) (pad "" np_thru_hole circle (at 1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 205f8397-f45d-4cf8-9ff7-faacbd420cba)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 4f159eae-1b4d-48b7-ba3a-8050c88c315a) (at 207.9 61.25 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp ab55d89e-4435-4f95-ba0c-56fd5bd158ba) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 5a2893b3-8591-404c-ac5c-24dd7a75de19) ) (pad "" np_thru_hole circle (at -1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp c497a9fd-d28e-470e-9457-ceef2eacdf95)) (pad "" np_thru_hole circle (at -0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 3c4d3b5a-13b6-4ebd-93ad-64863c22a758)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 0c8dfcbb-2242-4b75-a1da-5746c65b8f5f)) (pad "" np_thru_hole circle (at 0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 8d63766e-1a76-4365-b2d5-cd19d0a1eaad)) (pad "" np_thru_hole circle (at 1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f694a45e-1f90-43cc-864a-80ddcbb9cc56)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 5c200b40-8273-4405-b43e-5f2e36428816) (at 213.55 70.6) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e7355a33-b70b-4bfd-aa32-32bc079a16aa) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 5f5722e6-edf7-4a04-960f-9939d2af9b75) ) (pad "" np_thru_hole circle (at -1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 619faef7-fcba-4cc4-a7b1-dfc3cf69b708)) (pad "" np_thru_hole circle (at -0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp adf62e18-91b1-4a1b-8553-4cb23ac1c128)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp e33d1eca-1132-4172-adbc-3fe86b850756)) (pad "" np_thru_hole circle (at 0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp ebdd9222-4434-43df-bbf2-14f01b5b9a15)) (pad "" np_thru_hole circle (at 1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 49145019-dafb-4ea2-b744-2d68a4c78ad8)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 60648e32-dccc-415a-8743-a2a2c29d7e91) (at 207.9 81.35 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cf6e7a68-71d2-4518-9dce-fb55651c6e01) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 83a2059f-633d-4d86-81a8-871be0420356) ) (pad "" np_thru_hole circle (at -1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 09335048-2243-4267-9a36-21ed24817f5d)) (pad "" np_thru_hole circle (at -0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 37bc3354-9a4f-483a-8ae3-b93d54b07c37)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp bea5f1f0-0b79-45b2-bf1a-713b51e47ce9)) (pad "" np_thru_hole circle (at 0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp a2e55399-9b11-4e21-aac9-1d232f02f260)) (pad "" np_thru_hole circle (at 1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 0df3b20f-fe8a-442f-85af-f8d57bdc7cf7)) ) (footprint "footprints:MouseBites_1x3_P1.35mm" (layer "F.Cu") (tstamp 619405d7-468d-4ecf-93f6-df867bc0af8d) (at 93.5 107.5 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 54d82c4c-d5f0-4d37-bddf-f48fe3032331) ) (fp_text value "MouseBites_1x3_P1.35mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 9d09e431-45a6-48a9-b013-a55935ed3efd) ) (pad "" np_thru_hole circle (at -1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp ff337129-d111-41dd-bbbc-d5dff6e5fefd)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 60e915a9-9add-45d8-aa1b-4e815af1d7a4)) (pad "" np_thru_hole circle (at 1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp d08b33d4-7f6f-4138-9d55-535ec75e87ae)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 61d5277b-9dd2-4e22-bea0-85cc8f0ea75c) (at 171.95 75.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/f9833a1d-c43b-4717-bf43-1817029f6343") (attr through_hole) (fp_text reference "D17" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp bc74f256-b5ce-4231-b940-a7909e6e9e32) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 3c2b2f77-6eed-4a0a-9097-3591d12d2428) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7deff0d0-f018-43df-acd6-2567a30027a8)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a4475708-dc25-46ab-b55b-058d505e3f12)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 09cc9a0d-bed6-4c3c-8933-a4827226d118)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a809a92b-0727-4458-9263-e6c97d850e3d)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp b32e9b2f-7bb4-47b8-b471-c27b4f5e5260)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6dc5841f-d894-44d3-a553-9b174b745c34)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1010bc32-8cb4-4cba-8d8f-7f00b11f792b)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 4a0ed9a1-f9c5-4d46-b81b-7ff0fe459041)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a2736522-f0a7-4371-9ce9-b71d6c028ee0)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 7f6f2f2d-533d-43ba-86dd-a757318017f9)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 16df980f-4cf5-4e70-b411-2040ba37666a)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8c4f8544-f798-438c-9613-cff3b3d2aa3a)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 59338285-bb75-4760-8834-7dd6ff5b42f9)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp 05acd67b-7348-4736-b11f-98132f58d510)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 32 "Net-(D17-A)") (pinfunction "A") (pintype "passive") (tstamp 2334a0c8-3fda-493d-a10d-bba31ad108ab)) ) (footprint "footprints:Graphic_Hi" (layer "F.Cu") (tstamp 64368bdc-2ca4-430e-b451-3a380aece271) (at 170.8 85.1) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 565a880f-4a34-4048-a565-783ee601a5b7) ) (fp_text value "Graphic_Hi" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e0ef967a-8431-444e-8ed7-808458ea9e28) ) (fp_line (start -1.4 0.7) (end -1.4 -0.8) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 96c653cc-d290-4499-8841-5d00428d2f3b)) (fp_line (start -1.4 0.7) (end -1.1 1.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 695dffc4-e4f1-4606-b8ff-f18822457a36)) (fp_line (start -0.9 -0.1) (end -0.9 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8a1821af-9995-41bc-8604-993d359b545a)) (fp_line (start -0.3 -0.3) (end -0.3 -1.6) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fdac7461-9a04-471d-abe3-9d2f60590bcd)) (fp_line (start 0.3 -0.3) (end 0.3 -1.6) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bbcf0124-4c7c-40d9-b247-e6cb97d6468e)) (fp_line (start 0.9 0.55) (end 0.9 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 507c1845-22c7-4a0f-8610-aba6665705b9)) (fp_line (start 0.9 0.55) (end 1.26 -0.17) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bfe65f62-be49-45df-9a20-930cee44a5e4)) (fp_line (start 1.1 1.5) (end -1.1 1.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 36f5368d-7004-4a67-b432-9691c5b76c99)) (fp_line (start 1.1 1.5) (end 1.8 0.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9f44b439-efc4-4a2c-9c35-b72f963f719e)) (fp_line (start 1.9 -2.6) (end 1.9 -1.2) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c4229925-4b70-4dc6-9099-935bc9e9000a)) (fp_line (start 2.8 -2.6) (end 2.8 -1.2) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 49606f6a-2705-4578-80de-a1cbb4879382)) (fp_line (start 2.8 -1.9) (end 1.9 -1.9) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b7e07e4e-6c60-4da4-93ab-69f4596d2322)) (fp_line (start 3.5 -2) (end 3.5 -1.2) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a44ba367-fa6b-43bc-936f-86c47cce126b)) (fp_arc (start -1.4 -0.8) (mid -1.15 -1.05) (end -0.9 -0.8) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b61e1fbc-122e-4ebb-995e-929b7392d134)) (fp_arc (start -0.9 -1.4) (mid -0.6 -1.7) (end -0.3 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bdeead51-d8f8-4d4c-9a50-173b511401d2)) (fp_arc (start -0.3 -1.6) (mid 0 -1.9) (end 0.3 -1.6) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a19c39d3-5758-4c48-badb-70f90462b1bd)) (fp_arc (start 0.3 -1.4) (mid 0.6 -1.7) (end 0.9 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5f8032bc-ffc1-4705-880f-211d7b7d286a)) (fp_arc (start 1.26 -0.17) (mid 1.665 -0.305) (end 1.8 0.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 41fe0f9f-8876-4f57-97df-de4c3e68ad8a)) (fp_circle (center 3.5 -2.55) (end 3.65 -2.55) (stroke (width 0) (type solid)) (fill solid) (layer "F.SilkS") (tstamp abd3a6d4-e27e-4e97-8eed-eb97a6d6577e)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 6479f00b-ee01-4f54-8050-992cb2b1dadc) (at 82 98) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/10df7671-6815-4e0a-8393-fa708174f37b") (attr through_hole allow_missing_courtyard) (fp_text reference "S38" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 210570b5-7508-429f-96d2-938501f3f856) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a49bbd7d-bc40-43a9-9851-9efe9fa989d1) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp ee6b7a6b-55a7-4692-b5ab-3059d12dd1e8) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7b4c7e26-bc66-4631-a8c2-0d2355b0a74f)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 80866ea6-fc68-4bf5-ab71-8a6f265b9c73)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e56b87b3-aaf9-4d38-93bd-4bc955a6f0ab)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp dfe8c9c3-34a0-4146-a30a-f2dfbf6c3b8e)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 076b313b-0d8e-404a-8ac5-32e99caa4de2)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 18780545-15fd-4bc8-80b7-ce73b860b8d0)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5021bbbd-a0e3-4aa9-9380-55827d59c4c2)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0cbe079b-35fc-44c2-b158-a9d4670763a2)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 9cfe5493-8d8a-42ae-a88b-0c3b4e6d992e)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 1006d28d-2d39-48b6-acd5-5a73d0ee23de)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp eff7aa5a-2cf3-4dea-be8d-d5882479b2b8)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp e4aa4f01-6e5d-4d80-b522-ddb6d704acdf)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f99d0696-7424-48e7-b0cd-8412c1fab3c1)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5e7b1414-1142-4396-beb6-f3df740970be)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 45afc3bc-3f1a-44bf-893d-1119aeb80097)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 18289980-1442-474f-aa3d-fe67f3dd9bdc)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bdc34bda-88cf-4205-b1ee-5dcf85de0869)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fbf115e0-a0d9-419a-b32a-df8184455236)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f07d6b46-49c7-42cb-8335-7510ba3aa33b)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 897ac60f-94dd-4e3f-ac76-14bdf0e1deea)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp f109dbfd-a439-4f8c-9b47-e46e2d1d1fd4)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 608afd0e-06cf-4a1d-acd3-f3f011eb60e9)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1cbe4b9d-ec2e-4fad-b18d-9963e7d73689)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c6b9c2d1-1862-4b4a-a179-8e3464ba0d0a)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 87cc3c4c-6554-40c6-816c-dc6c955a99e8)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp be8327b9-b7be-4ca4-8d55-137caaf7a386)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 28ff2201-d0ec-4cf6-b65c-66d0a93cd4c5)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp bcc15ccf-137d-4d2d-b783-041c8fdd1d4a)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp a2e16da8-2e89-4052-82d2-756299208640)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 9c214953-f1dd-44ae-aa4c-dc6ab0008488)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp dff43616-94bd-403a-98b0-72fa147b2abb)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 41 "Net-(D38-A)") (pintype "passive") (tstamp 7fd9d80b-12d3-4b25-9151-6b627cc509a8)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 41 "Net-(D38-A)") (pintype "passive") (tstamp 89528cdf-bbec-4b39-b230-8cd940b26f26)) ) (footprint "footprints:MountingHole_M3" (layer "F.Cu") (tstamp 64d54ca2-80c2-4597-82b1-87807633b756) (at 210.9 93.4) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 54e1a92a-8458-411c-b7d8-d1edf73ef09d) ) (fp_text value "MountingHole_M3" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp ce5f9863-0523-4da4-9b27-428941c1504a) ) (fp_circle (center 0 0) (end 3 0) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp d6585668-31d3-467d-9935-50ae173a6c93)) (pad "" np_thru_hole circle (at 0 0) (size 3.2 3.2) (drill 3.2) (layers "*.Cu" "*.Mask") (tstamp 76c83c04-f55e-4812-97c4-2ef1345e6a88)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 65e65c9a-027f-45fc-951b-1d0562e15956) (at 199.2 95.6) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/c184e113-0178-4e52-a307-02914a11aed4") (attr through_hole allow_missing_courtyard) (fp_text reference "S31" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp cd7461f7-9214-4135-b381-92d1b9fed349) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 319a5e78-beb0-4df8-972d-5928621b512a) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 1edde2f5-6143-45ef-8578-0acc74abe045) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d9175586-4e33-457a-9ed2-c8d7941663dd)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4a131a30-4bf7-45fd-ab25-c7dbd1f85b3e)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8cfb2f4e-e805-4c29-a3e5-b08a8bf7ef4f)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2bad7002-3a50-4ca9-8342-9586b2e77775)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 59a05279-7695-4241-a090-e2fa732f423c)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a91432ff-f097-4229-93e1-0fdd9433a969)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp edeb8ad7-e66a-40b7-a47d-de24ad82f5e5)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 028aac67-ac82-4b5e-bcae-a5df36d9044a)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp af765e5a-fa1f-4b57-a901-64595aef6b36)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 80a89533-954e-41fa-a49f-86e89a46fa60)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ae85d3c6-74c9-4c40-992c-3d72beb7f827)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 358d5439-59a2-43b9-b6f4-2622aa49f0f2)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8e22a4ee-02ea-4646-8bce-2cae289c4271)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c8bc1981-8cc9-410d-893d-ad4125b049aa)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4b869a04-4027-4908-93ad-8f7275938216)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp dc915f47-2f31-4c14-98ab-c395191b7a99)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 29abb342-9858-48d2-9b0d-d8757ea4e881)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp db8e0504-6c44-40fe-be01-d70bbbf92862)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b98ab859-fef6-4f4c-b344-1cbdd9e5b49c)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ce0ccd7d-1168-4db6-b112-4028084abb5e)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 207a4552-73a4-4189-b457-53f8ea3d812f)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e67e2467-00eb-4af6-863d-d12226b6e9de)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 66fd4cb5-2d7c-4c9b-bbab-44aac04fe9ba)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d234bc51-9f5b-45b1-88ae-b4880ede65c1)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 30a32ce2-0d36-475d-87d1-07235b75a0a8)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 4dd6fd31-cbbe-4690-a87d-a92c28bb26e8)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp a5e6fa68-4e39-4987-aabc-b208cebaf9aa)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp eb25d708-a02c-45ba-ae09-e5ad2f1f0390)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp afe24bd9-ea41-4f6e-9557-8e253662c946)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 46815ee4-e253-4f58-81ed-f68f4835d48e)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 0210a874-862a-4c11-8eee-762a780e4a78)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 40 "Net-(D31-A)") (pintype "passive") (tstamp 31e857f7-b09f-4fb5-91ef-8d6b7f9df0d1)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 40 "Net-(D31-A)") (pintype "passive") (tstamp b278525f-f63d-4f70-bfa7-456300af01eb)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 663a1661-cb0b-4e20-9c86-43c41f8d57cc) (at 150.45 111.325 -90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/398648bd-5e3e-4236-a45f-c245d059df9d") (attr through_hole) (fp_text reference "D41" (at 0.5 0 -90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 3bb5f8d5-0be5-4c57-914d-d30d80853e36) ) (fp_text value "Diode" (at 0 0 -90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 2bdbe2e2-dd22-470c-820f-cc9709ca683f) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c582c9de-98ae-4d35-b2e1-be2ec5cee97d)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e80ff477-b176-49e7-891f-3644ebd0755a)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 8183cbf1-3b21-49d5-843d-7bf4dc7866ff)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 115f75ef-1206-4f7a-95d3-dcfda61bf67e)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp c9dd2559-9c16-4cf5-82be-4db2af87ea47)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 758904c2-d1fc-4b6c-bf88-30876216ce58)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 43ce9547-977f-4fee-86a5-03b211e13199)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp ad421a93-d926-4c03-b0e0-757b749f73a4)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3fc585e7-ed41-4842-9f88-098ec61db160)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 4cc43abc-f90c-4aa6-98b4-b22727e57cf0)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 852be185-ecf6-46ee-aed9-88810d844e48)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 556a3600-ea02-4710-a5a3-7f1f82226867)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 17822993-d7f3-4070-a507-77265b4d4c46)) (pad "1" thru_hole roundrect (at -3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp 0b6595be-7aad-400b-964f-b817d4ca6d6b)) (pad "2" thru_hole circle (at 3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 44 "Net-(D41-A)") (pinfunction "A") (pintype "passive") (tstamp 335d20a0-8134-4d39-b76a-778001ec301b)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 67136c86-d08f-4102-8cde-a61917c4b063) (at 82 117) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/ae25119a-9eea-498b-bc1d-67fc4fedf7a2") (attr through_hole allow_missing_courtyard) (fp_text reference "S51" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d8cce553-0920-4509-a88b-a13da23b753b) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e330420d-9165-4850-b3bb-1930b2917d1b) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp a9c47595-bd21-45d1-92b2-99f9571ec5f8) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3d8129e7-6b2d-4f4d-aeb0-2cf9bdb10277)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bda2d7e5-76cb-471d-89d5-60bc026b0efc)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 517940b2-77e5-459b-90fa-8e54b88c326e)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a587715d-8f8d-4332-8fa3-5fe3969443b2)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1438e589-c193-4989-a9aa-71070928ccd8)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a65ee67f-9b30-4dfe-847e-e9ada84fe211)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8b6f2871-f5d5-431a-810b-a960eaa9c6d9)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cc6abc39-e8c3-4fcc-8335-2d546e8c1829)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 8f6492a7-73b3-4564-bd7a-409dd1d3e61a)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 8ef9e62c-2018-49ea-ad24-76668b7b9010)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp e3487372-413a-4fae-84e6-0d7a9423f699)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 94ec4f6e-e6cf-46bf-81a6-16989815c5ac)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 862f7749-4f4f-49e6-bc52-6194eb45a8fc)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 115d9b8f-26b4-400f-b48d-e7ebc8e45500)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 816e01dd-f098-47e2-ad72-e83053f5ad91)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 10ddbf2a-2041-4e83-a27c-89c56114a0f7)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 06c80333-abdb-42db-a9f5-bb7f1d1cbf3f)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5de4df40-3fee-483c-8098-e610f123e3d6)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 45cc0333-ec7f-444e-82b8-870b5ef15f40)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7e874695-36ce-4855-9c31-189930e55f55)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7c014a3c-6afc-4e09-8a92-9bf2500916fa)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp be48725d-1d3e-4f0e-a7cf-876a54515e3d)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 9666bbb1-e62d-4ea1-87c4-a3e0030fb1df)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d35a637f-4980-41a6-84bb-f5457ab624ea)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp d02156cc-0e51-4ae0-a37e-29144ec17b8f)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 7ebf9b1a-fda5-4e86-a8cc-0d68a87c4b50)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 589400d7-2500-4489-a891-b24cfb80ddde)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp fd5b6aeb-1f12-4e68-8ce0-8a73b3f3e4f4)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp cfad1c79-1db4-4ba2-89a1-69e1134d7964)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 00833561-ac32-41b6-88cc-81aa9e9b78a9)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp e2dc5c2a-c496-45cd-9e9f-3d9664b76b80)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 48 "Net-(D51-A)") (pintype "passive") (tstamp 088d8ed8-cfdc-4731-a380-d247c78e092e)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 48 "Net-(D51-A)") (pintype "passive") (tstamp 09d29236-48cb-4256-bc3f-78fea78c60cc)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 6ce52ed1-f7b7-4236-86b6-0274aa443fed) (at 199.2 57.6) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/9d36865d-becd-4c1a-836a-e5cae8d02a36") (attr through_hole allow_missing_courtyard) (fp_text reference "S5" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 00c61d4c-b808-41b6-bc4d-e746e241593a) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cd2bd642-28c7-473f-aa41-3eedc1ac1cae) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp aa43543d-f2c0-4c36-a68c-7c63d928e5d9) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 18e421cf-ba27-4841-a90e-308560f692cd)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7b012648-00e6-412c-8c99-c0b10897edac)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 47fa9ddb-dbd8-4247-a445-75bc2f308a7d)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fb698560-7954-4cbd-8502-bacb3cff5109)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5165a772-0a95-4b82-985f-04c77252628b)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fcb90b92-6aa9-423d-b08c-9435b1d82f24)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 468cdb2d-74e1-4dc2-83b3-34e6eae9006a)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ff74606f-82bd-4bd7-9c46-544abc52a040)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp be2c87e5-30e2-4156-9484-77e5aa121be1)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp eb6ded51-f31b-466f-a6a7-5b702cacbe87)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a1ae62c3-1bfd-4c30-9af5-5b2d7285ff50)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 276e1ff9-ef32-47f8-9bc9-1cf76aa993f6)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a2b72d1d-0b06-49b1-a3fe-6980250c9a8f)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3158d831-8521-4fa5-8fcc-6239adc17d41)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f5e07f04-d1f9-43af-8c02-ce5211a10dc2)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b7a207ea-6d3c-4195-a902-1af03a968a2b)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a4ee084e-5450-482d-a614-0fcffc204206)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a349dc34-c608-46d7-9743-6e5bd8eeb14b)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 69f8597a-97b6-4658-ad4e-843089482027)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e88dcb3d-9e64-481f-9bbf-76019822c19a)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 3eb71fed-aca3-4870-94c9-b7b085fb12b0)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b3c84edb-9a71-4dce-bfb9-99d1c8a8defe)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 6a80a1e9-c621-4c08-9936-bf59f178e346)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp fe1ef7c7-ccc4-44fd-b860-6ceb68e62a1a)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 5149f1df-4365-4a2d-b9a4-ea63324d2c55)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 60d158a1-0429-44a0-b19b-a3e38e425c35)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 5038e743-6c88-4c2e-8725-93f1af93e93a)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 73923f04-4dec-4bfa-9cff-3240190fe9d2)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp aa58a374-0536-495f-ae6d-a5582fcec35f)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 430882fe-11b3-41aa-941e-98d7296c59a5)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 2d0eea31-cc48-4bda-94bf-ab9298f4ca10)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 24 "Net-(D5-A)") (pintype "passive") (tstamp c07d334e-ce34-4c26-a4fd-04f5cdafe72b)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 24 "Net-(D5-A)") (pintype "passive") (tstamp 8a240c9d-3f8f-46a4-8efe-aa3e28e7f2ee)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 6d632dfd-ae9d-4196-b6a7-daaaa5f8c5dc) (at 82 60) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/36093d1a-a17f-4660-8232-054a5074086a") (attr through_hole allow_missing_courtyard) (fp_text reference "S12" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp c33c74e0-8c51-4655-9fe6-4745a6549b0b) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cc3823c8-907d-4b51-86b1-485d2a83616d) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 50c8219d-771f-46f0-ae95-abf9a2a1804f) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a05cf9e4-7059-4a65-bf4b-f1c4e0a63cfb)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b14c9a85-c88d-4a2c-bd76-d33ac7589c42)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0426f5c3-e055-48dd-9b1f-29a859574bb5)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 03211da5-42e9-431e-a13e-93120a660800)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4bb4f892-f662-4d38-9c70-7b9b59fac6da)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ae8fda2f-6be1-4b99-9ea2-c06f739e1999)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f8b03860-0201-4519-9170-a5ca0a3290d0)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0bb04125-5452-4330-9f80-fcf2f0003acb)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ef7f31bf-0123-448d-a0ad-9d3ff0919ae8)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 6906a280-fe12-46cc-974d-a10f1cdb3a2d)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b14d23b0-d3c0-4384-aba3-89eff1d3e5f2)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 5ad92380-0c69-4dbf-9eeb-d86d21186ebc)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6d187ee8-dace-4817-8125-c823c62f74ea)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2dff1b6f-b2bb-4156-a001-0ddef263f095)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp eee0dc59-4839-49a5-8519-9f5f1efbbb4a)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 95e0fc95-a60d-480f-bd14-bcae9081b548)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7629a857-7bab-4ee4-aa89-bcdc6fc6add2)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp abd3e00e-6637-4e0a-b20c-bc44639cad88)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fe98f623-ff51-4fa1-bad9-4f2e49d229bf)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c7de6c84-ed01-4eb3-bed6-b803d90a148b)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 57c5636f-775f-4413-b14c-c1983120dc10)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 973b2a53-3443-4088-afb4-83d3a5ddaaae)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 0d9fa03d-0b05-4fb0-985f-6713c682fe7e)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1177d62f-b91c-4b9f-88f6-75d3f1c98090)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp adb4f87e-e022-4aa8-bc55-646f2e5063b5)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp e8539409-c9ae-4e6e-965f-a4e326e8a2db)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp fb9b49d3-69cc-4a47-8ff1-d54aa1cdd6a7)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 6a50d0bd-a4ee-486c-8f8f-f716dee43d7a)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 3e169262-0764-4314-9a1a-6edbb8255974)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp abf34fe7-73c5-47f8-99d1-6dcde4762423)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 76f060c2-e02f-4108-b8c1-4985baf4bf8b)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 25 "Net-(D12-A)") (pintype "passive") (tstamp 007e599e-a313-4b9f-8365-05e71a72850d)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 25 "Net-(D12-A)") (pintype "passive") (tstamp e93eea52-c774-4bae-8fa1-ab34ea7e83b8)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 7652aa9d-089a-4c7a-a68d-fde0f54fff5b) (at 205.9 61.25 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 909e89d3-70b2-4d11-b663-202f9560f6cc) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 021dc901-7205-4f68-8d9c-0d420ca47dd8) ) (pad "" np_thru_hole circle (at -1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 76a79d7f-41fc-4098-9cee-f331179710ae)) (pad "" np_thru_hole circle (at -0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp e177c3cd-e6c3-4f10-b192-fb2f23cb1ea9)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 30b423f7-9fb8-497b-9aaf-4b2838eeda71)) (pad "" np_thru_hole circle (at 0.9 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp fb814510-1dcc-4701-b9ba-733baeb97a5c)) (pad "" np_thru_hole circle (at 1.8 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 31fbdf4e-bfe6-4cb3-bc13-f4833c6af8e5)) ) (footprint "footprints:MouseBites_1x3_P1.35mm" (layer "F.Cu") (tstamp 777c2be6-4cb2-4bcf-83c5-e405a92dc588) (at 208.992173 91.05649 36) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 36 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp f1738437-da09-449d-9dda-b70a41484ac0) ) (fp_text value "MouseBites_1x3_P1.35mm" (at 0 0 36 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a63e1b44-b0ad-4ddf-a348-b50de63aa289) ) (pad "" np_thru_hole circle (at -1.35 0 36) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 4408a217-367e-42b0-a854-9e056a1122f2)) (pad "" np_thru_hole circle (at 0 0 36) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp e65bdc27-6498-494f-8eed-304c3609b548)) (pad "" np_thru_hole circle (at 1.35 0 36) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 0e5abb93-c5f0-4c32-bf27-fdd751ea70c6)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 77da6e0d-e8e8-4a20-b368-deb7a886226a) (at 190.95 94.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/48c9932e-f400-4bf2-b497-ec0b87dc9cf8") (attr through_hole) (fp_text reference "D31" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 36fb739f-28f7-4ac3-9857-3e29df42d4cf) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp eeca1e64-c0b1-47d4-92c6-01c225e0be48) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6e5825ff-840e-4098-a93f-47c37edcc1d5)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e9047020-1d77-4638-9e1c-e2dd98aff251)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 5756db4d-313f-4082-ab23-1e046e768c41)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 9f2b44ca-b028-479e-8483-7d7c10a44464)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 9f50ddc1-9bf1-474b-b39d-4424a6b4c307)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9de6570a-4e19-4303-9fd4-35533a72f310)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ee7caa2f-2f3b-407e-b97b-fd5de7e8e371)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f7681f0a-ab57-499f-bdf9-af6ee63bce6b)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 59864483-b155-4ba1-9032-72ce39f872c6)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 0674d69d-1764-4dbd-a83b-307d89ab402e)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp cc3b6324-f9c8-4e6b-bf8e-0b2adc6dc6e1)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 607ae0b8-0e11-46ab-a96c-4de4a5807fb0)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 4c4867bb-d86b-468a-be98-777b200016cf)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp 3159a793-b117-4031-9cff-761c98c584a2)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 40 "Net-(D31-A)") (pinfunction "A") (pintype "passive") (tstamp b962b7b9-9e68-494d-afb4-d89326b5e5cc)) ) (footprint "footprints:MouseBites_1x3_P1.35mm" (layer "F.Cu") (tstamp 805a3cbb-be87-4a92-b008-c932bbad95d5) (at 93.5 69.5 90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 6f5858b8-e820-4376-9b9e-00ff2f6f5e1f) ) (fp_text value "MouseBites_1x3_P1.35mm" (at 0 0 90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 23596c1a-fee6-49a0-987f-cc56b8a81edb) ) (pad "" np_thru_hole circle (at -1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp e05b946a-8aeb-4da2-9127-929306b58bd7)) (pad "" np_thru_hole circle (at 0 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 00daa26d-78a4-4ac4-bdd6-4a9e6efb1b3e)) (pad "" np_thru_hole circle (at 1.35 0 90) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp a3d155bc-8c97-4da5-aedd-f1029535d80e)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 879c9459-effe-4b4d-8568-036b80857308) (at 101 117) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/6dba677d-5b5e-4747-adc1-f09ecca77609") (attr through_hole allow_missing_courtyard) (fp_text reference "S39" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 468be4ae-e5f5-4f5e-8f45-23623cec47cb) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 9a9acfe9-2e97-4e23-9f92-45b0da63c100) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 4863e7a2-5457-467a-a43a-139f799d66c4) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 118db4f1-7b7c-450a-bf7b-67aaa53ab784)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp aa66f247-5dbe-4236-b7cd-50f58d59168d)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b5b02ec9-943b-4c85-9ac8-2a1027827c27)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f16ec10c-005d-4ddf-b11a-b4315ae9b720)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ade1aaab-5788-4890-9005-699ec1388690)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a4b52cde-86d2-46fb-9d5d-f7aea090d1c8)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 55dfa3b9-e0df-473e-a295-71efad4e0549)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e2246815-3ab9-47db-aa9e-689fd66da09f)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp fd972b16-3edf-4ea8-9cbc-770fedd0a57d)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 97e13f24-ee7d-480f-b468-4798db37a219)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 203730f5-819e-4f79-8302-4b7a4213957d)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 34a16b60-dac7-45eb-9f11-750b70e80754)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c2405a71-f05d-4712-80d0-31389b30ba7e)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fc6eef5f-11bb-4a7d-8f04-d723c6d34fed)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 519a276b-a5b9-4fec-935d-526ec38f164c)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 396a997c-00fe-4ffe-85a0-300de0a062fa)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6b6509f0-a3d4-48c3-9966-e44c987272c1)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f1fff35f-a1d9-429a-b8ce-5ce37e540f2e)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fdb643c3-b21a-429b-bbb6-42dacb1837b8)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4ec3d63c-66a2-4210-adb9-4db1929ca5eb)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e8e1d570-a85b-4b7f-8001-74537e6da9d3)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c4fc72e4-e70b-483b-94d2-23b3998dc126)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 4dfd412d-55bb-4a10-9680-29927b306fce)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp eede665b-26ae-4bc3-9c9b-27cb27feea5c)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 837e0bcb-0812-46ff-b6f3-88cef42a4eb2)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 1e53d708-7270-41db-852d-ea77c20d0e08)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 5eadb32c-7ebb-4551-b329-4dc9f809d3dd)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp f4d34db2-ba51-4e16-937f-a4438da27d61)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 9d34be15-06fd-4976-99c2-204f87bbfd8e)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 9097cd25-a426-47ac-9576-c53698d3e4a6)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 08bca9c2-d5cd-40ba-a334-544f460a22f1)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 42 "Net-(D39-A)") (pintype "passive") (tstamp e3c5937e-186d-49b2-9f1a-74c53bf4175a)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 42 "Net-(D39-A)") (pintype "passive") (tstamp c7860be1-5735-43df-92e4-6972a0246c4f)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 88c53d9d-a852-4c2a-b6a6-9c059ea92196) (at 199.2 114.6) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/c2bf704e-106c-4294-ae89-8a002e6cb829") (attr through_hole allow_missing_courtyard) (fp_text reference "S44" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 2dde0fe2-b4b0-46b3-9232-41a10368101f) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp c05034ba-98f0-45fa-bfef-d71e13c13c0a) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp f9b8b920-5c43-4450-ac86-5e892b1cd076) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 0ed1d345-f853-4a3d-a134-e29765a928a1)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 742d96c1-c959-423b-b68a-1ffe2aafd101)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8eb8c338-6f4f-43e2-9cb7-575f12418ada)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 81c111a2-c196-41cf-ac10-f17f17c06e05)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b58ae887-44ea-4dbc-9dbf-ccc017078fb0)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a477938d-5968-4cad-8118-1e24ac258acd)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 20af9222-5fc6-43eb-a1b3-b69d28935025)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 97eb6fda-fb4a-414d-8298-2e6e776c084c)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 76199d8b-700c-4f79-99d1-5d4589e8687a)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7826933e-e3cc-4469-87f0-337d83e6e619)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7dd554a6-3886-4ee2-ab16-bb2d73bdf311)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b401311d-1d78-49be-bad7-6d7f39be973c)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a5e8b6c6-8f66-467b-8562-ef061d35a415)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bf0feb8f-1d87-4022-a02d-81f46701a2ba)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fa60cbca-9f0c-4d53-aa01-4b84455c7466)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3a640ef0-1678-4e37-97c2-758b49aeca14)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 00f3abe2-37a9-4fdf-a4ee-b3f8c398b245)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e33c3583-169c-4aab-b777-971b705d32af)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cea711de-cb8e-483b-bd40-52a1b9899842)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f929d506-c692-41ba-9c7e-317415c9c620)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 4f9b42de-a16a-4280-9ac0-8694572450f1)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 11abd0c2-b38d-4e52-a180-a2307a3855be)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 6dcd09dd-7256-4f7e-9030-64d8af978c9f)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7698bdcf-b79e-4a43-ab91-ce12612a9c68)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 6528d95b-8e39-4916-a769-db26db14b507)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 8f0b269e-1901-41f5-94bb-a9469b399b3c)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 48b4ee07-a3e8-4b27-b2b9-1bf223e6f348)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 8d5a0972-243e-4c22-aeb8-af7d8ff8fd70)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 57fb37b8-9139-45ff-876f-28b1419bc774)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp f4b6c4e3-ba86-4dcc-82f6-48ae6880e32b)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 460cd82f-f251-4545-92a6-9983f80be03e)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 47 "Net-(D44-A)") (pintype "passive") (tstamp d8f688fa-1e3c-40f1-87e5-d4ae5ab8cfff)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 47 "Net-(D44-A)") (pintype "passive") (tstamp f26a0f4d-f21a-43e5-a432-cebf594fd1d2)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 891737dd-42f2-489c-a39b-526c474383b7) (at 199.2 76.6) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/b9d7faa5-5068-491f-871a-fc22de261872") (attr through_hole allow_missing_courtyard) (fp_text reference "S18" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 76cd6c30-553b-48ed-a333-6a4ccb8f141c) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 3e850bca-a993-4782-82dd-09e458cea3a8) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 0c59242c-1b41-4385-ac3f-821827e837f8) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fb15d1f7-7ab5-4f57-81e7-d527acf0d975)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c4cd039f-4c22-4cc2-9eb7-eadd269c3465)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7c15a8e8-d627-403a-8b33-d9462a518611)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1ecb255b-bf8d-424a-a1c0-3ed5d00066ed)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 450768d3-8a24-4a78-b227-3676c32bbb18)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d368e550-2d5c-4e0e-9cc2-7116c30b1f9c)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8b7f5f39-5674-47a6-b45c-5936d085c8e5)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 609f5ffa-087d-4828-a14b-3b0843fb334e)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b41147e9-ce0c-4b24-868e-4b6be7b2f706)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp cb9cb39a-8d12-471f-8b10-6cd2cc666324)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 2829ecae-c989-4eda-881a-b18f01b7e5ba)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp c52dd18f-744c-4e75-8954-0fa53c156179)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 691aa0e0-b4f3-4bd9-aeb8-4bb74d5ee8c9)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8ff461fb-03ca-413f-8979-7016c5aa883a)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2e3ed059-fda4-48f7-b99c-96d667174146)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 223357d6-137d-40c3-ad2c-fdb7539c4ba8)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cd953e17-bb34-453a-bc2c-89f97ccfce37)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cdf8381b-d31c-49dd-ba7c-572e5a53cb6f)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b38e6cd6-56f3-40d7-93fa-5f1fc0dc92e3)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6c203c3c-7f2f-43bf-9048-54604bea3ab2)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp a1a0ea65-b774-4ee7-823b-b84b4cfc0a0f)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5e3ba7bd-c8d9-43b6-a622-5e8b223258de)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp ed8395c7-accd-4d30-b376-0ad6af919593)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 30f2c92c-0f3e-4423-bcad-14e23e81bc2d)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 6c35d8d8-af16-484e-9e61-5d389c2b334d)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp a1d115d5-26f0-451f-b957-32cbec747757)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 3c112423-1fef-4cc8-9902-df333a44ef5f)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp fc2c8e7d-dc27-4da5-b716-08c8d1249e0a)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp bf252bc8-78f1-416d-ada9-ba21817b3941)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp c8761cd8-2237-4cf6-8dc3-8506b91abfd9)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 9 "/col5") (pintype "passive") (tstamp 554a147b-d611-47a4-b422-9a4bd7877c8b)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 33 "Net-(D18-A)") (pintype "passive") (tstamp a4a63f18-f84b-4f1c-8f8e-73925f854f8c)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 33 "Net-(D18-A)") (pintype "passive") (tstamp db7214aa-5e06-4e0c-ae57-12e082c060c9)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 89260446-ee33-48b6-8246-04e70d380ed7) (at 111.75 61.26 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/909f63df-4189-4f20-9095-5c5955c87efa") (attr through_hole) (fp_text reference "D1" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f6325f48-de13-4da6-be93-401643c0d5b2) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e6e7bd5f-cf17-49ec-8c78-52ebb0deb8a1) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 564be698-c6f6-4ced-a180-b6c7a3936914)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 31a20bff-de94-4bd9-abdc-d5679805c478)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 37dad618-2910-4990-90d3-84782b98ad29)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3c1a5cc3-deb0-4e78-a652-c8030854bbb7)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp f2c07f14-55aa-48c1-b5ba-363b3542fafa)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8ca4b8b8-bc11-4394-a1ef-3cff792e3c1c)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7c0a22ec-2dc7-4086-8887-b8f633e784d7)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 75a08122-6c92-4d94-ac68-ac39f2ccd4d5)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8bc248f5-af36-461c-beec-9dfad5049518)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 3b3bb146-bbbb-41d5-9946-f83822293328)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp b0949c38-6b15-415b-ac93-62da8c1afd9e)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp fb5fd2f4-da9a-42a5-92d9-f18c6a37f599)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 0d9e9011-2fb1-451e-ba45-e04614325c16)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp 2144ca81-5154-4f49-b9d5-e20d7f5cb09b)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 20 "Net-(D1-A)") (pinfunction "A") (pintype "passive") (tstamp 80c0ee47-79c6-4846-82e8-585820858c40)) ) (footprint "footprints:MouseBites_1x3_P0.9mm" (layer "F.Cu") (tstamp 8baa522c-23b5-4621-8256-612797ccbb4c) (at 129.4 110.1 -45) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 -45 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 03e874d5-06d7-4a49-8aee-cf2950bb5e5b) ) (fp_text value "MouseBites_1x3_P0.9mm" (at 0 0 -45 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 82c0642c-0949-493d-9f6f-9699961973fd) ) (pad "" np_thru_hole circle (at -0.9 0 315) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f3824d15-45e5-46d9-9aa2-fb021e8f481d)) (pad "" np_thru_hole circle (at 0 0 315) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 441ccaa8-74f1-407d-b0c3-71827ecfe321)) (pad "" np_thru_hole circle (at 0.9 0 315) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 27ac19c3-5617-4bd6-9983-4b1e4230a816)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 9366261f-4899-4aa5-9d32-fc741eb8a7bf) (at 150.45 73.325 -90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/e25dfdc1-be87-4fdb-9259-d74cdc0e7c51") (attr through_hole) (fp_text reference "D15" (at 0.5 0 -90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 3e25d4cc-a78e-4cbb-b696-2ec420b00343) ) (fp_text value "Diode" (at 0 0 -90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 22dddfe7-8974-4bb1-abce-8af4b35303ad) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cdce862a-1d17-4596-835f-41579eed824a)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ad025665-0dec-4dc6-9b99-3528e28d26f5)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp bf43c70a-f357-4fc0-8e15-fcda2dc45bd2)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 60a71b8e-cd3b-4eab-9119-e60cc41dae35)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 60e57b24-ba97-442a-bb7e-def06adbb4e1)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d4cee56a-0cfd-456f-9dc6-1a33289dee2b)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2380d6aa-bc6e-4f17-a455-63540f434ac1)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp daacb478-f82a-4525-9c10-34b91a75b9fe)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp dd148a3c-5721-4861-9029-679c53c7ae36)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp b2aa72d2-5ab9-4c79-aa18-9666e263e5f1)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp b6d46631-fbfb-4f60-85a5-001225c507fe)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e74a294b-0285-4b86-bb7e-cb60daecfcf9)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 07ce908d-e72a-4176-a4fa-1b21f2f1a5e4)) (pad "1" thru_hole roundrect (at -3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp bb79dbea-be6d-41b2-920c-4a86401ae37d)) (pad "2" thru_hole circle (at 3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 30 "Net-(D15-A)") (pinfunction "A") (pintype "passive") (tstamp 9c22f733-fb94-4f5a-9dda-7df4cfe61fae)) ) (footprint "footprints:MouseBites_1x3_P0.9mm" (layer "F.Cu") (tstamp 9372a7db-7bab-414f-8445-0b0a3f675c70) (at 129.4 72.1 -45) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 -45 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp e87392b0-aea7-493e-8be7-c0323ef60cc2) ) (fp_text value "MouseBites_1x3_P0.9mm" (at 0 0 -45 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 7481975a-c2b0-4b2d-99d1-81483bb26122) ) (pad "" np_thru_hole circle (at -0.9 0 315) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f2e0867a-4929-4226-8800-fca937a4e0ed)) (pad "" np_thru_hole circle (at 0 0 315) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 8639cb47-d10b-4ff3-b6c9-78bb6d3f4df6)) (pad "" np_thru_hole circle (at 0.9 0 315) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp db58aa9e-f5e8-496b-b2ca-eed494a5fbff)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp 95cc7de8-6311-432e-a12a-3bbaedffe951) (at 171.95 94.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/c321e94e-895e-49ad-9de6-b0b02c4f83c9") (attr through_hole) (fp_text reference "D30" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 9defbef9-4d72-43d8-b55f-282643f42a58) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp abe4683c-2ff0-4fde-82f6-f4ede6a6a39b) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 67ce2000-e337-4750-8bee-c1652af342dc)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 21003205-93db-4d25-b14e-a8163a98367e)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp c6dd344a-2d6f-4172-9821-6c85b7992eba)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3561a7e5-c167-4bdf-9d75-99fce71ec2a3)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 5cf45fcc-a32a-493c-9c34-172b5a218e66)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e21876b3-edf0-4f30-bacd-d6998aca42e6)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4d0cd5d1-2039-4dff-a617-18a38017c68a)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 2a5db825-8550-4e16-94ae-bb77dce81f46)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1a32124c-b2bd-4e7b-a9b9-0fe96aa36ee5)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp f08da9b5-1969-40e1-9050-75a4e1986c1e)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp bffeff42-a678-4efc-a3bf-22fa0c01acda)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp ae035f6b-7752-4be8-969e-f870fee66436)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 4a537a85-1ff5-4c43-9c31-2519158ebd67)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp 5f5a3021-44d2-4a3f-8444-64fb3cbdd112)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 39 "Net-(D30-A)") (pinfunction "A") (pintype "passive") (tstamp 762ee595-62bb-4d67-a7ee-8ec4de14b8d8)) ) (footprint "footprints:MouseBites_1x5_P0.9mm" (layer "F.Cu") (tstamp 99f547c6-bb42-48bc-985d-b75a97edd9ea) (at 180.2 121.2) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 071e8cff-a772-4b19-9b36-4024dbb76761) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 37781502-fa0b-44d8-b8a9-e8d656e74bf3) ) (pad "" np_thru_hole circle (at -1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 23886964-2eab-4151-96fc-2c5353b7917a)) (pad "" np_thru_hole circle (at -0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp a71eb345-802b-41b6-b23a-33305cbf8ad0)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 9d8457ba-3620-4534-929a-2ab7fd579808)) (pad "" np_thru_hole circle (at 0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f6169411-2e47-4d1a-85a2-46ff781138d5)) (pad "" np_thru_hole circle (at 1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp a2852e84-b553-40ae-b597-81cdd811c4fd)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp 9a611674-f50d-4e2f-bcef-4506c3501dcb) (at 120 60) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/6a8715e6-7521-4343-9726-bb7fa2debdd9") (attr through_hole allow_missing_courtyard) (fp_text reference "S1" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp fa663608-f27a-480c-b656-0c942b8d23d7) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp be83e63e-2dc6-4be9-9c5a-07b3afd5eef5) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp b2bdc91b-bf92-4e91-813c-7f27bdaae658) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a6f3b867-e3e9-40a1-911b-21e5ae77cdaa)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 9793284a-12d2-43f1-b3ce-818757589a48)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 769b9ea8-b249-4f13-8254-acd9dbcf8731)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 206060d0-5546-4ddb-8db2-4e4750eb1422)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 17102f73-23c3-4f40-a001-fe231a6b9cd5)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3d536682-9261-4682-bbd4-4c8d9aba51ce)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c0db2293-3edb-4c36-b69a-be02e272218e)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ba6ae51e-7be8-40a1-8aa5-ae7d71336d0f)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 56627934-fc4b-4a44-b67f-4df21c5c1f4b)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ba22cdcf-e0f2-4fc0-b8c2-8b302adb528a)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 27f6e119-1895-43f8-968c-15c2b53fa489)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f0d609cb-a728-4126-9af2-c2d00a945f8f)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp abfdf56f-2b3d-457b-bd72-16cde33089ed)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b7fa38af-63e8-4fbc-936f-2548f61093a5)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp aedaa3fe-8d1a-436d-ade8-2a1e8495c545)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cda1fcf7-c61e-421b-a614-1d24e3ee0de9)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8a7cdfb6-e72c-4406-9295-ec46cc2f2a7b)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0961bac3-1b42-4bfb-979f-b4d2b5023b38)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c35fbe1a-2e9f-4d0a-b5b4-7223cabc26ed)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1fa51d6a-cee6-4982-b656-739eccff0409)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 422c3150-225a-4e25-a977-6e45c0d2e778)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 238fdec4-ce90-400b-9e0b-3cfe8be3fc58)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 8e908383-95c5-44f7-aa0c-e01b05b2dd9d)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp f3690864-8491-4d3b-9486-6e001ca32974)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp f0239fd3-4ef8-4bd5-b108-d186f1e992aa)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp c6f39c52-e7e1-470c-b07c-61041b4fb566)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 60bdb0aa-d5d7-4dc5-b0b5-819e5738abca)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 7160285a-3723-4829-915f-fabc855df38f)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 02f245cc-bb4b-4801-b09f-9600d07e5e92)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 61529998-bcf5-4680-8cc0-cddec8c2a3df)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 270236b7-1412-47a1-8c97-42cacb11d38f)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 20 "Net-(D1-A)") (pintype "passive") (tstamp 857cf0cb-c261-4eaa-8027-36e30f863004)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 20 "Net-(D1-A)") (pintype "passive") (tstamp 6562524c-34a3-4aa3-97f2-9592c39ecb78)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp a0edb94f-be3a-4e62-b71b-1625b97abef9) (at 82.75 127.75 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/21d26ef7-3fab-4d92-a868-22fd7ba07fbd") (attr through_hole) (fp_text reference "D64" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp db2bd853-f937-4299-b41c-066c803a754a) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 96ba5815-6275-49de-a589-235f8dba60d4) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6b49dd98-4774-43e0-97c2-5923792574bd)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7b198f20-27ad-4d71-bb88-248350c233c0)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 400f5b5c-0ee2-45be-a08b-e0484ca290b1)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 818a9b07-0033-47fa-921a-3dc7ce05c3d2)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 39f017d1-f06d-4c62-9d95-7997bdae25dd)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ce4a5c84-2039-4e0a-ae8d-68ecc26b5140)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0848a6ac-b92b-4661-b7bb-1526b34ed802)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp c970a1b3-937d-451c-a48b-825c28788207)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8a95c085-c9c1-480f-ab36-978b97bcaae9)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 2fccdb3f-c6c2-46d0-b802-39f0b739d72c)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp b34b350d-53b8-4d59-b09e-b02fa308e2c8)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d330513f-8c78-4bfe-9cba-b14bf491634e)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp be87cb11-d02e-4241-8bf7-aa043f783663)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp b78f366a-bbdc-4b41-8680-3aba276cdeb5)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 55 "Net-(D64-A)") (pinfunction "A") (pintype "passive") (tstamp 82cdbf27-e1f8-4238-84f7-d7dc47f7c32b)) ) (footprint "footprints:MouseBites_1x4_P0.9mm" (layer "F.Cu") (tstamp a365942d-0d4e-468f-a28e-b81117ceeb8f) (at 130.1 63.2 -90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 -90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 40634b1a-1fdb-462b-a17d-dbdd4a406fce) ) (fp_text value "MouseBites_1x4_P0.9mm" (at 0 0 -90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp dd3ab47f-2587-4d72-90eb-d349622668b1) ) (pad "" np_thru_hole circle (at -1.35 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2e1fc05a-b7a9-4a65-be16-63f5409c671c)) (pad "" np_thru_hole circle (at -0.45 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 0482441f-eadb-4da8-ab9b-b92f58d9e5a3)) (pad "" np_thru_hole circle (at 0.45 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp c61013bc-bdab-461f-8f11-7c775d51faf0)) (pad "" np_thru_hole circle (at 1.35 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 4bee13b7-cc9b-40a8-913b-5a497ce21bfe)) ) (footprint "footprints:MouseBites_1x3_P0.9mm" (layer "F.Cu") (tstamp a5cd864a-f0e6-49bd-b914-c9c64e35d223) (at 132.8 100.1 135) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 135 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 30a303cc-a6d7-4e8a-8c9d-af8c45519c11) ) (fp_text value "MouseBites_1x3_P0.9mm" (at 0 0 135 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp f59d58cd-9de4-4c32-810b-d44dbb5045b1) ) (pad "" np_thru_hole circle (at -0.9 0 135) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 500a6add-617a-4383-a7ec-b1977b531440)) (pad "" np_thru_hole circle (at 0 0 135) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 7f55b9d0-afce-4ada-bd68-2413526d219a)) (pad "" np_thru_hole circle (at 0.9 0 135) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 0c35de2a-e3cb-45b5-b350-e826b1454301)) ) (footprint "footprints:PinHeader_1x5_P2.54mm" (layer "F.Cu") (tstamp b1627927-09bd-4fd2-917c-44c5b2ad67ca) (at 211.55 104.18) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/6c511771-d074-4b6b-bfbc-72291d595095") (attr through_hole allow_missing_courtyard) (fp_text reference "J1" (at 0 -7.28) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp cdddbadf-1f57-4dd8-a833-5317febc2532) ) (fp_text value "PinHeader_1x5" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 6b71e28b-2a13-4c74-a6b4-703b807b0878) ) (fp_line (start 1.27 -3.81) (end -1.27 -3.81) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b05e7c4d-2dfc-407a-a7bd-cf2826975957)) (fp_poly (pts (arc (start 1.27 -5.842) (mid 1.12121 -6.20121) (end 0.762 -6.35)) (arc (start -0.762 -6.35) (mid -1.12121 -6.20121) (end -1.27 -5.842)) (arc (start -1.27 5.842) (mid -1.12121 6.20121) (end -0.762 6.35)) (arc (start 0.762 6.35) (mid 1.12121 6.20121) (end 1.27 5.842)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 60118bf1-c39e-46ac-a835-0d6e9c3e63f2)) (fp_line (start -1.27 -3.81) (end 1.27 -3.81) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp a8323b18-0680-4b83-802c-e7b46b67dbae)) (fp_poly (pts (arc (start 1.27 -5.842) (mid 1.12121 -6.20121) (end 0.762 -6.35)) (arc (start -0.762 -6.35) (mid -1.12121 -6.20121) (end -1.27 -5.842)) (arc (start -1.27 5.842) (mid -1.12121 6.20121) (end -0.762 6.35)) (arc (start 0.762 6.35) (mid 1.12121 6.20121) (end 1.27 5.842)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp e6d99db1-781b-41d1-9385-ba0d88f95293)) (fp_poly (pts (xy 1.27 -6.35) (xy 1.27 6.35) (xy -1.27 6.35) (xy -1.27 -5.715) (xy -0.635 -6.35) ) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 8741e6b4-446b-4c20-b931-c381fd41116a)) (pad "1" thru_hole roundrect (at 0 -5.08) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pintype "passive") (tstamp a52364dc-fcad-44d9-9a38-f776626ffa86)) (pad "2" thru_hole circle (at 0 -2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 3 "/row2") (pintype "passive") (tstamp 6e148d9e-eefd-4a4c-915a-888ef64343f3)) (pad "3" thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 2 "/row1") (pintype "passive") (tstamp 33168e41-a49e-4a3f-ad26-b4b38517b473)) (pad "4" thru_hole circle (at 0 2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 1 "/row0") (pintype "passive") (tstamp f261f592-9e6d-4c40-8c6a-0d2f8440cb2b)) (pad "5" thru_hole circle (at 0 5.08) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 5 "/row4") (pintype "passive") (tstamp ce642c58-d3f4-4647-b6a8-c1d88a4da28b)) ) (footprint "footprints:Switch_MX_CTRL" locked (layer "F.Cu") (tstamp b6332ce1-e309-48b9-945d-f17af1842a38) (at 101 136) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/c25679e5-56a0-4d04-9084-edbbbf04bd71") (attr smd allow_missing_courtyard) (fp_text reference "S52" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 9aeae229-ffe6-4eb4-8d82-c5a70e90a7c5) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp d03c68f3-d93d-4312-868f-614c301c52d1) ) (fp_text user "1U" (at -5.25 5.207 270 unlocked) (layer "B.SilkS") (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left bottom mirror)) (tstamp 860e6b21-c944-493e-8173-f90636d78350) ) (fp_text user "1.25" (at -2.85 5.207 270 unlocked) (layer "B.SilkS") (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left bottom mirror)) (tstamp e20171a5-3bcb-4a6e-919a-92bb70904bec) ) (fp_text user "${REFERENCE}" (at 2.375 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp b7af8901-0f26-4e08-b3ad-a6450f81b2a5) ) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b4034788-a361-4655-abc1-8e352cd43d67)) (fp_line (start -5 5.7) (end -4 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 525f0caa-0608-4eca-9abb-132745c64825)) (fp_line (start -3.325 1.1) (end -3.325 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cc6e1da4-f61e-4bef-a1ce-cc83dcb6c0cb)) (fp_line (start -2.625 5.7) (end 7.375 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 87e554ea-eeba-45e1-853c-7590a4938406)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3c178792-bdbb-4877-bdf9-fb59ed3ba678)) (fp_line (start 7.375 -5.7) (end 6.425 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8707a8a1-dad8-44f7-a408-0ebe3247fa68)) (fp_line (start 8.075 -5) (end 8.075 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 720c6411-9e4f-4048-b73a-dadca8a37fac)) (fp_line (start 8.075 1.1) (end 8.075 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8e44e807-c617-400c-9d70-49315c8c1c2b)) (fp_arc (start -5 5.7) (mid -5.494974 5.494974) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f5a971b3-b7ea-46bf-8980-d0a67d0b4540)) (fp_arc (start -2.625 5.7) (mid -3.119974 5.494974) (end -3.325 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp fe5ab745-726f-4bd8-bb4f-2e4f2eff1909)) (fp_arc (start 7.375 -5.7) (mid 7.869975 -5.494975) (end 8.075 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7445b765-2085-4a87-bc9e-7808a16ccec8)) (fp_arc (start 8.075 5) (mid 7.869975 5.494975) (end 7.375 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp deb2c798-f4da-4556-9009-0331530d991f)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a2bdb386-da8f-4c4e-8154-945885bc6976)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a647b8e0-35f4-4a33-91db-b4a24c5a49b7)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 35992161-98dc-4f39-a6ab-5127515456e0)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 85b5b0d0-8faf-4ff3-98f9-f79289935a01)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp aca1b87f-053e-4290-83f1-4ddff7f16a0a)) (fp_line (start 5.7 -3.9) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 857d08f3-77c2-4c0e-8597-fa8235dd4c9c)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 243291fa-683e-452f-b122-69c010772b45)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp dfdca774-5220-4bb7-9f4f-477a03c3f5aa)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 13c81b9c-3be3-430d-a827-ddf950b8043d)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp cdb0e1b0-34eb-4512-b2e5-548ce56a8167)) (fp_line (start -2.705 -0.85) (end -1.810387 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 4420f696-3399-469c-b01d-a76134653cbb)) (fp_line (start -1.810387 0.85) (end -2.705 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp cc34ae58-644a-4153-ac4e-af7eed113b42)) (fp_line (start 0 2) (end 2.375 2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp ebe86132-c9da-4d95-a163-d0428be33c50)) (fp_line (start 2.375 -2) (end 0 -2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 35961128-de36-48d0-b9c3-8535c2ad99c4)) (fp_line (start 4.185387 -0.85) (end 5.08 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 8a1ce84c-4c8f-4fc4-a0f7-760e43475c9f)) (fp_line (start 5.08 0.85) (end 4.185387 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b55cdf70-aa96-44d6-8d0d-e0710643a099)) (fp_arc (start -2.705 0.85) (mid -3.555 0) (end -2.705 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a8be12da-0219-48fd-a2a6-dcdc1082f0a0)) (fp_arc (start -1.810387 -0.85) (mid -1.072381 -1.688195) (end 0 -2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c27b91d0-cfbd-4a33-81be-05a3cdd4cb12)) (fp_arc (start 0 2) (mid -1.07238 1.688194) (end -1.810387 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 621e434a-e07c-4392-bc70-197a86ee1337)) (fp_arc (start 2.375 -2) (mid 3.447381 -1.688194) (end 4.185387 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp eed9074c-6ee1-41d9-af47-1db7aa7c85a1)) (fp_arc (start 4.185387 0.85) (mid 3.447381 1.688194) (end 2.375 2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp cbafedfb-c2ef-487f-826b-91fff4762f42)) (fp_arc (start 5.08 -0.85) (mid 5.93 0) (end 5.08 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 57348099-043a-4b8f-9b6a-dce6e813bf21)) (fp_rect (start -7 -7) (end 9.375 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 9b86a107-5f52-4e97-8eba-27d97a70afb9)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp d9d664bd-5b21-4c8f-a23c-99f0a9892e9c)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp ec995a02-bb1f-4cda-9ffb-be4b3c0762f6)) (pad "" np_thru_hole circle locked (at 7.455 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp d9b6d68a-0e70-488a-9b2c-a83ffe2869be)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 4bc79392-fa2d-41d6-985c-323ba24c8664)) (pad "1" smd custom locked (at 3.36 -2.54) (size 0.8 0.8) (layers "F.Cu" "F.Mask") (net 7 "/col0") (pintype "passive") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start 0.9 -0.7) (mid 1.6 0) (end 0.9 0.7)) (arc (start 0.484838 0.7) (mid -0.058545 0.37489) (end -0.668907 0.206311)) (arc (start -0.668907 0.20631) (mid -0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp aff507db-9882-44aa-9ff3-0a36a2d70125)) (pad "1" smd custom locked (at 3.36 -2.54) (size 0.8 0.8) (layers "B.Cu" "B.Mask") (net 7 "/col0") (pintype "passive") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start 0.9 -0.7) (mid 1.6 0) (end 0.9 0.7)) (arc (start 0.484838 0.7) (mid -0.058545 0.37489) (end -0.668907 0.206311)) (arc (start -0.668907 0.20631) (mid -0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp 7d789d13-79ec-43c5-9b0a-f27703a4649e)) (pad "1" smd oval locked (at 3.7275 -5.08) (size 4.875 1.6) (layers "F.Cu" "F.Mask") (net 7 "/col0") (pintype "passive") (tstamp 724e19d7-7b86-49b9-b9c4-e3a638ae194b)) (pad "1" smd oval locked (at 3.7275 -5.08) (size 4.875 1.6) (layers "B.Cu" "B.Mask") (net 7 "/col0") (pintype "passive") (tstamp 11c0097d-67c7-41df-80d3-5dd03a01308e)) (pad "1" thru_hole oval locked (at 3.84 -2.59) (size 1.9 1.1) (drill oval 1.6 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp a2828d02-60f5-4ffb-bed7-2901ee6c8edb)) (pad "1" thru_hole oval locked (at 4.915 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 51e8c9ba-4c7b-4413-b88c-bd9f7084cd34)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 49 "Net-(D52-A)") (pintype "passive") (tstamp 1e4249d2-0ddf-41b5-9443-6bb2ee137002)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 49 "Net-(D52-A)") (pintype "passive") (tstamp b64fbb07-3b3b-4944-aa3e-723883d9aaee)) (pad "2" thru_hole oval locked (at -1.465 -2.59) (size 1.9 1.1) (drill oval 1.6 0.8) (layers "*.Cu" "*.Mask") (net 49 "Net-(D52-A)") (pintype "passive") (tstamp 40e94d8b-4b57-4cd7-b125-831f126a2bc1)) (pad "2" smd custom locked (at -0.985 -2.54) (size 0.8 0.8) (layers "F.Cu" "F.Mask") (net 49 "Net-(D52-A)") (pintype "passive") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start -3.275 -0.7) (mid -3.975 0) (end -3.275 0.7)) (arc (start -0.484838 0.7) (mid 0.058545 0.37489) (end 0.668907 0.206311)) (arc (start 0.668907 0.20631) (mid 0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp ab6550df-102e-4ffa-ada1-a50c10244568)) (pad "2" smd custom locked (at -0.985 -2.54) (size 0.8 0.8) (layers "B.Cu" "B.Mask") (net 49 "Net-(D52-A)") (pintype "passive") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start -3.275 -0.7) (mid -3.975 0) (end -3.275 0.7)) (arc (start -0.484838 0.7) (mid 0.058545 0.37489) (end 0.668907 0.206311)) (arc (start 0.668907 0.20631) (mid 0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp 53a746ff-eed6-484a-83e9-4118e71fcc1e)) ) (footprint "footprints:MouseBites_1x3_P0.9mm" (layer "F.Cu") (tstamp b84aa310-1e2d-412b-b10d-e4e9b28ae903) (at 132.8 62.1 135) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 135 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 19732cf5-d877-4d0e-8b77-c2d7148771a4) ) (fp_text value "MouseBites_1x3_P0.9mm" (at 0 0 135 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 92682847-76f7-44bf-a826-f41605ce81fd) ) (pad "" np_thru_hole circle (at -0.9 0 135) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp f5287c4a-e202-45d0-8095-ec7d79d3a7f5)) (pad "" np_thru_hole circle (at 0 0 135) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp c422a0af-f7e8-45e0-8b63-96fe75f84cb3)) (pad "" np_thru_hole circle (at 0.9 0 135) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 3d7c9b84-a568-4771-8642-c133e972e1d0)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp bd63b737-210a-4c8b-ae0f-af5d0652025c) (at 190.95 113.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/25a23b2c-f932-4a86-b122-ed89bd657a99") (attr through_hole) (fp_text reference "D44" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 9ae775d8-53f9-4f06-b7eb-ee6e401ee503) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp c5a0da5a-2eba-40a0-8c2f-31c8e6c07e5f) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d1b8bced-6bed-4dc8-82e2-2c6586e87130)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 516253fb-dafb-4f2c-9755-c82412772014)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp e792d98c-f30e-4ee2-a7ef-01725a4c0611)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b9a41ba5-caca-44a1-ac1b-ec4041562bc4)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp b73f9d08-d46b-47fc-98da-a031271782fc)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fc982b20-a50e-4ac5-b641-de6ecfa83b47)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 233a61db-ad82-4a7f-91ff-7296f0a5eada)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp fb65752d-7e94-4232-94ae-e8a4a6389af2)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 09c575cb-0bb9-4dd7-81f0-b573d8f1a6a7)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 7323fcea-5df6-4aec-99f1-dea672cbbc50)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 609fbca5-0e03-41fa-ba4f-fa434161005b)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6bd75467-6b1a-44a5-8850-c091d7f4a980)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 928e30f6-b945-4fe3-8ab4-3f4a7b1b35c0)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp f09c2d6d-f580-43c2-a523-ed5b2b41ef72)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 47 "Net-(D44-A)") (pinfunction "A") (pintype "passive") (tstamp 9d0456e5-e6d7-491c-8521-b8d3109f0673)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp be8ffbc1-9b99-48e5-8596-18989a1f2d86) (at 150.45 94.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/7a7dd932-d51c-42b8-9a9d-af8ca97a528d") (attr through_hole) (fp_text reference "D28" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 77972c54-e7c8-46d3-a7ba-d9269e78c04a) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 143ded83-5331-41e9-a388-73aa8fa11b75) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 723a207d-5249-4f85-97e8-2740708f986c)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ab973b55-3d89-4031-a0d5-8f2c56321f8b)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 54d0c003-50b9-4b4f-a7fd-02b1b4276756)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cf35b634-f7df-4c08-a697-740508ba366b)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp f62dc199-8831-4cc1-8832-168f07dfa0a9)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4b063c1a-f904-479e-80c5-4f09e11c6199)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 126f84ee-1ea3-4f98-a7d9-2e47feef202d)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f3871aa3-c7f9-4e23-9fe3-186459fdea20)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f3514ad0-dfb2-45fc-8e0e-ecbd2a2253ac)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp e0c15bbb-2811-40f9-8910-29f77c44cb76)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp e400205a-0f24-475e-9700-b2206b3f1563)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp f7c1b912-3f49-4f66-aeef-7edf26ca3b07)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp dbf45577-23a2-475f-9e24-6652489b2481)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp 6f51aeb5-924b-4e43-9842-60d410cdca3d)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 37 "Net-(D28-A)") (pinfunction "A") (pintype "passive") (tstamp 6e0be864-eeb2-4ac0-9722-a40269babb7b)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp bfd710d3-45bc-424f-be2c-d4bda0b19236) (at 142.2 74.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/23d6557d-4220-4dba-a3af-fa32c114a36c") (attr through_hole allow_missing_courtyard) (fp_text reference "S15" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 316c56f5-1999-4d73-b401-90cc17bfa794) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 0c6ba7b0-f4e5-4b8c-a719-db1f622468fc) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp f7bd642c-3414-4254-a7d1-675c2a68a102) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a0a4101b-d223-4e63-9944-72fcec0ec11b)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 56e947a0-c85d-4cd0-b91f-2be80d969a19)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3a4f5db6-873d-46b3-a6de-f617c22c3dc6)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3b4c2b8b-eec2-47b2-8f54-7f2d13acc6a9)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5ae75dd6-a6bb-4fd2-9b05-32f8e18264f6)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 31f052f6-d840-4ed4-84b6-189e7fb492cd)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8852510c-744e-4bba-9315-9150f8a0c73e)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 98a3c829-572d-48b4-be2b-b591b3ba280c)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7f143e30-ba8e-4dc2-8722-0eefc07ae60c)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp d9a1d43b-db13-4b91-88ce-b7c8dea230c7)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a92af242-0887-42c0-a458-74b61171f889)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 0a5979fb-e086-4c0e-afe5-d1b56b916d64)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9ad301b6-f598-4d45-9d93-5f2c5c0c5ac2)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 763ded81-e3ad-45b6-9f96-ccc67c8f7fc5)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 59ee47eb-cf52-4d26-ae4c-3f0858c161b5)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8d9fe6b1-ab8e-493f-b059-ff65a2072a67)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fbadd95e-1eb9-4b48-81ba-fbfd1488ac0b)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d16a4053-3217-4d9a-824a-94a137b7334a)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0921f35b-8950-49a4-a7bb-f03086ef392f)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 267ef7a3-0df2-4676-bc87-2aea6a7fcc38)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b39c54f5-8962-4652-966c-c0fbdaa80ada)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1d12ef3b-3290-48d1-9dff-191caeec6883)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b277392e-831a-4343-ab2f-379d3bca3f60)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c337b2e5-8e42-444c-848a-ad05b752f2fa)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 7d11c6ed-492b-4b88-b719-43541f9c11f0)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 36e4e8ee-7048-451c-8200-aad417e17917)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 0d20853b-fe54-4410-b120-b150d3141976)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp c500b560-13ac-46db-8aad-b8c6b265d7fd)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp ab7bf790-b3fb-4660-9c4e-5acbe5498402)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp a7db11df-883e-4285-99ac-c4b18289d47a)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 359733a3-7c3f-4441-83f5-1355e6adca58)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 30 "Net-(D15-A)") (pintype "passive") (tstamp 673f1db4-122b-46b9-b0e9-f814858fd1a3)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 30 "Net-(D15-A)") (pintype "passive") (tstamp 25b8a8f1-dbaa-4daf-9b7f-42270e02dd11)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp c28d4589-7299-420d-92ee-42d9f74d3f4b) (at 171.95 56.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/ffba129e-9b68-485f-9070-aefc0e7aff3e") (attr through_hole) (fp_text reference "D4" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 2e232a90-ee97-42b1-8f82-cafcbf919a29) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 38bb7106-6cd7-4a47-ae86-8c96390649ff) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fbe18389-8a52-47b5-8f98-ba7c3f65dd47)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4f99145f-1ca2-4a14-8c67-6660580d547d)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 0b028937-4dc7-4edd-a782-b16825243588)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cbfb905e-f14d-4d46-93d2-0ad8cd001f3a)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp a03b0d1d-77f0-4a4e-8006-92f44df9649d)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 369ae75b-5bb1-4980-9275-a1c2111f70f6)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d0658743-aa43-45e3-ad94-3087235c6482)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp a39c9dbf-d697-4b35-803c-fbbfdf748b66)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b799fa31-e609-438d-878a-dc1d869cad2b)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 065a3946-81ab-4715-b8b0-1334f4a60737)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 3897586d-4387-4171-bdec-4e126f743f1e)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 18131941-47cc-4f7c-be02-e8bbc2115faf)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 7e87733b-3b2c-44c7-93b5-aee69a4bbc22)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp a2b6c765-449a-40f3-95c4-826a5eaf57dc)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 23 "Net-(D4-A)") (pinfunction "A") (pintype "passive") (tstamp 15306cdb-3931-4931-9b6b-44a1736d76e7)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp c319a7e5-3495-4b2f-b3a3-2b72662796d8) (at 128.25 118.45 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/6e61b591-8e54-4017-8f6a-673a406d451d") (attr through_hole) (fp_text reference "D40" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 086971a7-82fc-4739-8f43-9118358430dc) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 86074fe4-66da-4911-9356-4ddb6ef5b026) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ebf8c85e-2d2b-4ef2-bcf1-e069739473a5)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 810236c9-568a-4903-81a8-a638bba610f1)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp d1457c24-71ad-4fa4-b82d-18d606c159f5)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ffbc6552-dace-49d4-bc0b-11ce52b6d092)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 5e7a1eec-1cf9-4034-86a1-6dcf4dd22f87)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9125846f-29d0-4bd9-a88c-eabffc6a5a85)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b1a79891-bd9a-413c-940c-eb575afaa0ee)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 8f66b45d-32be-453a-a9b7-f7d23d3f9088)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f3e7a3ff-4153-4f35-acbf-1cee7efc036b)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 1dcbf751-7a80-4905-8427-fe624484ec65)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp f97a3c8b-13e4-4748-aa05-c0f59fee4e5a)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 82e2746f-c9c1-473e-b6df-ca34bc811c82)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 17b00679-0093-4389-805f-b64ea64d074f)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp c488d823-f352-40b3-8ec0-fae8ecedfea6)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 43 "Net-(D40-A)") (pinfunction "A") (pintype "passive") (tstamp 86d0cda6-2caa-415b-a448-71e9c1c0f164)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp c42ad88e-90c3-4dc4-bbc2-cd0e56d98aea) (at 82.75 68.25 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/2fda0bd8-d566-4a81-8344-ad89e8876755") (attr through_hole) (fp_text reference "D12" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 601a0b5c-9fce-4fd5-8495-b80dabada324) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 3a2d629e-0609-472f-b598-f5b1a9dfd68b) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2fea84ec-a249-40ac-8de3-5a40b1a64cb6)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 435804b5-7906-42e3-bb75-f5a8229f79f0)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp ee339fb3-e44e-435a-ab4c-c84419ea1f49)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 92f23200-a89c-4a13-b572-578a9be2849e)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 3a0498a1-b29d-40b5-9d0c-9f7082db4233)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5d67e43f-be20-417f-ae4c-557b1a83a913)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 45f64249-0f0f-46cd-9039-7847d3a28e7c)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 0306bcd0-091f-4562-a7b5-f6b9ccd768ff)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9b67c5b3-429d-4765-bd53-7d0d3fbbae87)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp e7ebf50d-7c76-44cc-b7cc-948654e76b27)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp cab722e4-b867-40fc-b908-eca460e89e64)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 4f90ad68-e5e9-49ae-b2f9-462af2521999)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 7cb678b9-ca49-461b-a433-63d4560e5c5b)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp 6d9c8637-9d47-4847-a54b-4fe50b9e6c42)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 25 "Net-(D12-A)") (pinfunction "A") (pintype "passive") (tstamp 74577ace-6ef9-408e-aeeb-1f86fc08920a)) ) (footprint "footprints:RotaryEncoder_PEC11R_Custom" (layer "F.Cu") (tstamp c6532134-8733-4a98-91e4-2e67386822a4) (at 211.95 61.25 -90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/4aa62459-3370-4ea5-bedf-0bff6cecbe2e") (attr through_hole allow_missing_courtyard) (fp_text reference "E1" (at 0 0 90) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d213016e-853e-406c-af88-9445fd772d7f) ) (fp_text value "RotaryEncoder_Switch" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a9054c95-3ada-45a6-9796-7f6afd9861c7) ) (fp_line (start 1.6 1.6) (end -1.6 1.6) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp bc8505f8-6020-4753-b86f-8f548fa3cf82)) (fp_arc (start -1.6 1.6) (mid 0 -2.262742) (end 1.6 1.6) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp e00a655f-bb94-4b87-9bcb-058ca4ef9be7)) (fp_circle (center 0 0) (end 3 0) (stroke (width 0.2) (type default)) (fill none) (layer "B.SilkS") (tstamp ce1f9471-95e3-4d2b-a0e0-3187bed8f527)) (fp_rect (start -6.7 -6.25) (end 6.7 6.25) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp a8d62d37-32d6-4a2d-829f-3b76b612a211)) (fp_circle (center 0 0) (end 3.5 0) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 9f2563dd-4fe2-4dff-a330-901e2252fa2f)) (pad "1" thru_hole circle (at 7 -2.5 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 26 "Net-(E1-Pad1)") (pinfunction "1") (pintype "passive") (tstamp be7df696-d456-4470-a300-ae4e22413977)) (pad "2" thru_hole circle (at 7 2.5 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 27 "Net-(E1-Pad2)") (pinfunction "2") (pintype "passive") (tstamp 040862f2-a718-4577-a02d-a249e38e86b8)) (pad "A" thru_hole circle (at -7.5 -2.5 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 16 "Net-(E1-PadA)") (pinfunction "A") (pintype "passive") (tstamp c35c0d95-583c-43b5-b581-d2c3b4db39dd)) (pad "B" thru_hole circle (at -7.5 2.5 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 18 "Net-(E1-PadB)") (pinfunction "B") (pintype "passive") (tstamp 39048e41-bbba-4c8a-a4b6-f66f06d57801)) (pad "C" thru_hole circle (at -7.5 0 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 17 "Net-(E1-PadC)") (pinfunction "C") (pintype "passive") (tstamp 1f00d80b-14fb-4e22-ba13-fdce9523cecf)) (pad "MP" thru_hole oval (at 0 -5.7 270) (size 3.8 2.3) (drill oval 3 1.5) (layers "*.Cu" "*.Mask") (net 56 "unconnected-(E1-MountPin-PadMP)") (pinfunction "MountPin") (pintype "no_connect") (tstamp 677402cf-c625-44c6-a90b-54ad4e720a4a)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp c67366e9-f329-4e36-b162-1d447de79f99) (at 82.75 106.25 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/df6ac8df-e707-4eae-a41c-ed9d2ce1f30c") (attr through_hole) (fp_text reference "D38" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp fb9fdcda-449c-47ab-87f0-3ecc90ce195b) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 17a2c543-9a25-42b0-8bb6-fb2502fa929e) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b073c116-2409-4d89-9d80-5fdb23871d85)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 422e4648-cea0-4ea6-9314-34575139a5a7)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp b2edd9c2-0e92-4d24-9775-78502e38d0b3)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1ff702be-3192-497a-bfb0-c420aca8658a)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 8d6300a3-004e-4844-94e9-83a3df553371)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3a20379a-e299-4935-bb97-c03cf8a420fc)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b3f1faa3-b4d1-4a21-856f-cd6dcbf33a69)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 3bdbb7b3-5096-4b43-9ac5-6bb086709a99)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5f2aae40-128a-4155-b73d-1d294f518e59)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 7ea2bb26-f140-48c1-aafe-b1696a1c50be)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 17a8f925-ef13-4945-9742-786c1bb4ab5b)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp ca4ce0e8-9ebe-4012-b8c9-e822f3a6b40f)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 8b0590bb-2493-4058-a4d4-83adc62e97f8)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp ac9be705-1e35-4ec8-8283-12dfef2b9dc9)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 41 "Net-(D38-A)") (pinfunction "A") (pintype "passive") (tstamp 5c34b32c-1092-4e76-a70a-f2bf8810894c)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp c9cb3630-3000-4713-9eb8-53455df8aa06) (at 82 136) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/90d902ec-b0bc-46f4-abc0-43b1a7fe53f7") (attr through_hole allow_missing_courtyard) (fp_text reference "S64" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp e622b1b8-2641-4e6e-bcaf-6812ac3df6f2) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 50352aa1-a02c-486a-b60e-3a3cbaa049d6) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 910883e1-aefe-4eab-9265-50ea3d864fa5) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a016b743-09c0-416f-89da-c329b17640b5)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 73c9e0f3-29d7-40b2-be11-9e72e7d1e640)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 156f472b-e74f-4fb3-9b77-e3af6a27219e)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp af77a066-a1ed-4cec-a64a-f895f11dec3a)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f5285f26-c10c-4b7c-9c4a-740f1b16aec5)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 47c58b7a-5320-4ade-ae8d-0bd2406f1af6)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 975a2ece-66ec-4351-a58a-0901e719ebdc)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 40c6bff9-0104-4ab5-8607-5285d579b970)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ce4005e6-77b3-4f8d-9e41-c83d44e34bbd)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 49b2f7fe-3889-4661-8d1b-795905888277)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 87ff7bce-1963-454b-83e9-e56f0693be28)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b0f8ce73-a491-4abc-8089-3895640f43d2)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 35ced955-b042-4d13-9514-b666954773c3)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cc35d52a-f75a-47ee-8f30-36575c337a29)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2c32d2ca-020b-437b-84ff-a504f41b3499)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c356903c-6378-425b-9873-58ca2b9403ac)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 63871b5e-3c2a-4f1a-8e13-2ef0922ae904)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 76b079b2-dce2-48e8-857e-b5faf509006c)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f5277874-f6a9-47f0-8053-bfb4056a7273)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 20601c10-1ee8-4881-8e18-25dd95918b48)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp dc8276f1-50b1-4693-a203-6ce74e9a3aff)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5b096b8c-da9e-4c17-90db-9d55b258af53)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d589608b-43b3-4954-919f-fd002e4bfd02)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp feeb80ac-fc8a-4623-98d9-204155a9ebab)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 3048af46-0f9a-485b-86d4-7e850be8d896)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 800ddc45-4fde-4c53-8ab8-8b239335170d)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 556d57e4-d8fa-4832-bd14-b7abe461ee78)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 4448b6d2-f4b4-4c19-8850-004f12caa2ed)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp eb655d90-2abe-4a32-b7ff-f2c356c9bc9e)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 45c705d5-4548-4d54-9354-9215b2e65281)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 6 "/col6") (pintype "passive") (tstamp 4d9831e1-7e62-4c19-ae51-179f54af9c84)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 55 "Net-(D64-A)") (pintype "passive") (tstamp 6ae2d227-cb0c-42bc-aabf-20a540c92e7b)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 55 "Net-(D64-A)") (pintype "passive") (tstamp 1480870d-6e57-4ba7-8ccc-0ab6a4396819)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp ca496aff-300a-4ea2-abf0-f0dacbc34171) (at 111.75 77.74 -90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/a9a43153-3edc-4f78-9650-ddbd5f7585ff") (attr through_hole) (fp_text reference "D14" (at 0.5 0 -90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp ef99f8dc-3549-483c-b741-481a70352fb7) ) (fp_text value "Diode" (at 0 0 -90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp aa43e299-a1c9-41b7-b87d-89bdd7abfe32) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cd5c3d30-1073-4dde-a3b8-b95b21cfef67)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 50a17ed7-9f3a-46a5-abcf-1ebafe60a269)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 3e27f303-fd10-46c3-82ff-a0dad5e46ad2)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3a2e72a8-09b8-4aad-a17d-ec1e25fa927b)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp c8cbf39e-ecae-4298-b794-d097e90ac06a)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 28821cae-7ff0-4439-9ebf-71bdc0998beb)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 50e18286-18aa-43dc-a163-0caaf151e9ac)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp d92e66d3-5a3d-45a4-b18c-eef634ad877d)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9dad0e09-6075-42f2-93a5-f336533af1d7)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 841cd04b-e443-447e-b3db-89c11242af3d)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp fa952eef-65d6-47c7-9646-bbe69ace5863)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7c8c2f28-fc7e-4c2e-970a-867a249d1da8)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 912cff56-dd83-4c1f-b8fd-cde17db00ff8)) (pad "1" thru_hole roundrect (at -3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp 5b8c31ed-7eb7-40f3-ad63-5ecb6b99db3d)) (pad "2" thru_hole circle (at 3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 29 "Net-(D14-A)") (pinfunction "A") (pintype "passive") (tstamp 6b47f277-b10a-41bf-b173-6a4f6fc33d58)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp cd12f92d-f53f-4af6-9d37-26c235ce574b) (at 169.45 56.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/a919d856-159e-4a04-b6af-270266bf3b78") (attr through_hole) (fp_text reference "D3" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp e56e9daa-0104-4887-b45a-c40f3e2bcd9b) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 094eb1e6-b70f-406a-b796-e23f4c690df2) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8a37f210-d87c-4bf1-93eb-344826f2cc26)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 63507a70-3316-4b17-8907-a3618afe635a)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 85aab07d-e6fb-4cbd-9134-8f7d943b918c)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e088124d-c6f6-4a39-aff3-c21b85d0cab2)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp f1afb1f3-4e38-4141-9489-abf815338e0a)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3e70a96c-db14-48c5-a15d-53ec0fa32c58)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d0931a50-57b6-4659-8145-99c49c758918)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 1a3b395e-0ea2-4029-9a82-e15105bded6a)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 075bdb1a-bc6f-4b5d-8b4d-cae295901a48)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 04363855-9dca-4b36-b5ab-6b2200c5f689)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp d9f547b8-39f5-4039-9656-09d3e98c6305)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 13dcc296-20e4-4648-978b-26aa692650a8)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 655a0832-e03f-4dc5-aa08-f19c707c85b9)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp 41390395-8988-4b42-a78a-1e4b2cca56b9)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 22 "Net-(D3-A)") (pinfunction "A") (pintype "passive") (tstamp e6bde0d2-1373-46ec-9dc7-b32e6a1a86b7)) ) (footprint "footprints:MouseBites_1x4_P0.9mm" (layer "F.Cu") (tstamp d096b004-469d-463e-b9c6-ab999c970e86) (at 130.1 101.2 -90) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 -90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp abf5ad03-c082-4f45-aa77-0bdd56b9817a) ) (fp_text value "MouseBites_1x4_P0.9mm" (at 0 0 -90 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 68011e2a-ae5c-411f-ad22-6e1fd387d275) ) (pad "" np_thru_hole circle (at -1.35 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 62c38064-e94e-406c-8260-7f56e1cdbec0)) (pad "" np_thru_hole circle (at -0.45 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 4546e376-7a23-4896-b707-c04c51f1334a)) (pad "" np_thru_hole circle (at 0.45 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2c6a75bf-df3c-4f25-8ff2-4d4b33330a41)) (pad "" np_thru_hole circle (at 1.35 0 270) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp c96241c8-5923-41aa-9898-908692519b82)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp d204389e-7748-44ce-8afa-99749d28de40) (at 101.75 70.75 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/e5e5d73b-7eff-4618-891d-71076f1fa186") (attr through_hole) (fp_text reference "D13" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 593d1b66-d08b-4cf7-8eab-63ee9e4f7278) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp fd2a2dba-05ba-4d09-8aac-17b0196d3472) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 508f307a-58d2-4c53-943e-50cf251c0116)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f6de850a-a90a-4730-853e-80b4fa696379)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp a22d09d8-80c4-40f0-a266-2b4da514184b)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ce7cb3b9-a5de-4ebf-b211-6a96deaabd83)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 2c332bfd-7511-4524-ac03-35f877c40ffe)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 07500a84-de8c-4e41-b40f-1d63d17ad880)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4c2e7714-3c28-42a6-bde0-e26b6e99f006)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 64205878-6191-41d4-a134-1be37058a77a)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0d805da7-4a59-4486-9dc7-82f0dadfd49c)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 23ed022d-5c43-4c5f-a1d8-eed7b3b9889a)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 7f356b8e-6c30-4975-a12f-d9268dc1bdaf)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b445061e-ac71-40a6-abf6-3a210802d7db)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 3eeff608-26a1-4a7a-873e-e324fabe41d0)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 2 "/row1") (pinfunction "K") (pintype "passive") (tstamp b211c832-bee8-43e9-8e24-cee0d8ab534d)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 28 "Net-(D13-A)") (pinfunction "A") (pintype "passive") (tstamp e1b13311-512d-4c85-b395-30059ac4db3b)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp d770d2ac-021e-4efb-9938-f05ca04d0890) (at 101.75 106.25 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/eff3cd1a-6506-41e8-97ad-7a126fe81f17") (attr through_hole) (fp_text reference "D26" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp b7917362-8e4e-4b66-864b-a972da466afe) ) (fp_text value "Diode" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 5ee17819-44a3-48ee-bfde-e2dc8260cc6e) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 19038c07-1566-42b9-a47e-3e91f6d061fb)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8bed9b5e-d733-4d50-bbad-6905c2e0fad7)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp e3d78a42-3738-46fe-a0e3-b5c81fb4cdb5)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ff3073a7-1b3e-49ea-8c5e-928ce7c5f70c)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 2b9bb031-cf2c-49f8-9068-b98a5b57c08e)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4961232a-319a-42be-8a40-785d3af4e9b2)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d9b43c4e-f118-4034-b6ca-0b3012c5a18f)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp e2f50676-1ba6-4a2e-a6c3-b78c698eced9)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 65358a36-4abd-4889-a039-f38a9da96ca0)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 6d9134dd-4071-4329-b6fc-e820d3a24631)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp ebdfff82-a9fb-4c39-bceb-9d4c4f00a2a4)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e1d0839f-7f62-4de8-bc59-28af7bb86d3b)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b780b316-89f3-4db3-9e4e-be0ce4aa892d)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 3 "/row2") (pinfunction "K") (pintype "passive") (tstamp 021c606e-29ce-4e58-882e-e993a5fba9b2)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 35 "Net-(D26-A)") (pinfunction "A") (pintype "passive") (tstamp f4145b72-5c67-44ae-9f52-705d4d58ea57)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp d83201af-aed0-4f90-9a37-ff1a247cf220) (at 101 79) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/f8c2febf-adc9-49bb-b797-1d0ffcd53719") (attr through_hole allow_missing_courtyard) (fp_text reference "S13" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d624ad7d-5d0d-4b27-8c7f-1b6648df1c3b) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cd27b5e3-639a-4814-9b68-4593c3606db4) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp ef6496d1-a6c6-48c4-ae81-ad5ff305ed71) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8f0e8c0c-b1bc-4992-98e1-ae49980fbd0a)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a59851e7-74fa-48fa-ab52-5beaadc32387)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 49fcef6f-13b6-47f5-a477-86eac6dd3376)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1cec8eac-1a3d-4084-acfa-437cb26166fe)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 237f714d-c858-41b1-923e-0afd7ee5ab45)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 950bdc29-b696-47af-9fa4-e44e0e40dcbf)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6dbac63c-c66e-4a53-b5e5-16b881ba9134)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d69f30e2-508a-4ef9-9d76-eec314015621)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 3a7f0139-f8c1-4b55-bbb9-59939963f5b8)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 5cb521cb-7504-4be5-98d1-073ec201e473)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7e558b03-6737-4006-9f37-0371b2e0ce6e)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 2906c292-a4d4-457b-b002-f9ddadcdc717)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a299db72-df2d-413d-b629-6fc971496e09)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ce6cc5a8-2f25-4ea0-ad4d-ad3f5475b561)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 55b3b509-2a26-445e-b770-1730aafa54d5)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d2c86efe-2bf3-449d-8e8f-8e55a9e67da8)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2fea041f-eb96-4371-bf08-c5c0b0f46657)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cd6cc71d-376f-4c04-b9fd-63e2c11d305c)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cf94ece0-ee1a-4933-a7c5-b62b89a2cbf0)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 680041e6-398a-4ed2-b02b-9e065acb1c88)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 3acdb0aa-8c33-43f2-9d80-a9b5b322d8af)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5e066ad0-da4b-468f-b776-2c216ef4ee5b)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d00387a5-f883-4cd1-9ea6-5b61127ef4f5)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 0056a648-d698-44e3-8cf1-827ede5517f2)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp e2ff09be-f6b5-41e5-8d7d-262b86e52240)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 18758b69-6e0f-4486-a803-087abea6f3ac)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp c176979a-e949-4705-9950-01e9e9568fae)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 96fb3358-5b78-4910-a769-b02a633eff34)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 20eb61e6-0a35-4b44-a192-1b3e8c1e79f3)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp 5300d0dd-f02e-454e-9294-909468eac02b)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 7 "/col0") (pintype "passive") (tstamp d96dd579-8e5a-4739-81a7-4db0bcfbf57e)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 28 "Net-(D13-A)") (pintype "passive") (tstamp 88f1ab48-99be-45a7-94ca-c85e2cb6f323)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 28 "Net-(D13-A)") (pintype "passive") (tstamp 6abf15fb-1203-4c37-aa4d-3785c88463a6)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp d9ad7994-53ca-4f23-a701-39e4c38fa662) (at 149.512 135.55 -90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/c959ccc4-a8c3-483c-a958-8b8eaf10a506") (attr through_hole) (fp_text reference "D54" (at 0.5 0 -90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 917f9785-78b0-4229-8ab5-5a96e7d5a0ae) ) (fp_text value "Diode" (at 0 0 -90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp c8917d8d-9941-429a-bf75-45e6cbc229f8) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7a5386ed-bbe7-48d5-8dbd-c9ffcd5267c7)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2df1e8c3-8b27-4d94-b460-2d5635ec3ed6)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 0515c7b7-684b-4758-9045-cd28278394bf)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 020eab9f-d8b9-4167-a394-e6b32e86bae1)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 7317f89c-18c7-46ed-b43f-02e370d2a926)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4eff7750-b663-486c-b299-ff5be98e7172)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e823fc78-4654-4d7a-b39d-e35f7f72033a)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 1985e230-406b-4f75-97d7-67c98435b8ec)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ed537910-f075-4d0d-83c1-3daabe44f673)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 3482a9e7-3660-46b2-ae75-cab5b5fd0b85)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 1b49ba2b-e3f9-42a1-bacd-722c63799cda)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d11bc182-8aa6-493b-a4b2-35fa3140639b)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 106a9389-89ac-4f0a-a4ed-83267fa7f12d)) (pad "1" thru_hole roundrect (at -3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp 3ce6b210-0346-415d-940a-429e7ff02c6f)) (pad "2" thru_hole circle (at 3.8 0 270) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 51 "Net-(D54-A)") (pinfunction "A") (pintype "passive") (tstamp 3f31ace5-4188-45ed-8854-8012faf7d6e4)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp dac66f50-75fa-4320-bb72-da1528cfb226) (at 188.555 141.353 162) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/7bd086fe-8398-4489-8602-b833ca4ee28c") (attr through_hole allow_missing_courtyard) (fp_text reference "S56" (at 0 0 162 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 99a7c29c-30f0-460d-a268-1d33f5ea0433) ) (fp_text value "Switch" (at 0 0 162) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp de26aa93-3f6d-49f3-97ba-73aee90eb7b8) ) (fp_text user "${REFERENCE}" (at 0 0 162 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp e17905b8-5f2b-49a7-9e5e-56d84043510a) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bab8338c-1040-43fa-adaa-8c65cf27f3e0)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5e1d2274-94f6-4072-87fa-08d10fc9d6a0)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 80c5ec55-b910-4d62-9fb3-994e19fa4825)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8cb9a0f5-7713-4aae-a9ec-1b05f2559fcf)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b31d1b55-ee0e-4772-ac6d-f2e45641860b)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c353def7-f41f-4243-af7b-910f739ad401)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bc5bfef9-6e73-43ae-9872-d1dbe6f0c23f)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 12f8a502-0677-4dcd-8cfb-745ca3c97fbf)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 15f7387b-cd1e-4781-b618-41c0656ec583)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 6c650804-c8be-4ea6-8fc2-f404c572c131)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494974) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 6daf3c3f-e427-4cd4-a899-86e87fdecc5d)) (fp_arc (start 5.7 5) (mid 5.494974 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp bc1e755e-83b2-47f9-844b-ee51f035dd47)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 47f0fdef-7f00-4592-8dd3-669873159790)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 36c412b7-c18c-4a8d-b422-315c8fa7dce2)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 35a7eaaf-15fa-4c5a-b6b1-657b9e696906)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2b17aa22-0967-4c50-86c7-a5ca89488236)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp aeff8954-0dcd-422e-ad25-1cab0b8061eb)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f2aead0e-c059-4702-ab25-ed41c2a73b07)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cfdb0088-9e0f-43ff-aad3-65006bfaf9b7)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp dfcacced-a24b-4048-a038-fa9b5394dc39)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d1f434f0-7c18-4fd1-8aa6-e84da60b1acc)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 8a5bcae4-670e-49cb-83c9-1a1895ccc069)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494974) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 89b7c074-bd0f-492e-9fc0-4a24b0888644)) (fp_arc (start 5.7 5) (mid 5.494974 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 10a5bae8-5636-49bb-aeca-e854a0df9dae)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 28f33ab2-19e8-4fed-94b3-3cc7d567a9e5)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp a6b2d59c-7698-4b52-a450-18daf24727c4)) (pad "" np_thru_hole circle locked (at -5.08 0 162) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp e8168fa1-3766-45fb-aee2-21c3401c2819)) (pad "" np_thru_hole circle locked (at 0 0 162) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 5df40714-7354-4166-afb9-fe34bb7b3f1b)) (pad "" np_thru_hole circle locked (at 5.08 0 162) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 1cf39085-6632-43aa-9ba5-335906a32640)) (pad "1" thru_hole oval locked (at 2.54 -5.08 162) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp 46b93408-657c-4506-aab5-b9b220530503)) (pad "1" thru_hole oval locked (at 3.81 -2.54 162) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp dd13aa81-8c53-424e-bb40-cef697201d11)) (pad "2" thru_hole oval locked (at -3.81 -2.54 162) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 53 "Net-(D56-A)") (pintype "passive") (tstamp c83a6b78-b695-45fb-9a87-2601dfa0665f)) (pad "2" thru_hole oval locked (at -2.54 -5.08 162) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 53 "Net-(D56-A)") (pintype "passive") (tstamp 11b8a9c3-1635-4219-b1fe-329713ee060d)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp dadc1693-f254-4ded-8d05-8b03ed497b72) (at 180.2 93.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/18471bab-3b30-499b-aaa6-a1757ff24b3d") (attr through_hole allow_missing_courtyard) (fp_text reference "S30" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 9f611a43-bb68-4e58-a2c7-0c7f8c0528de) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a59d8702-a8e4-4c89-841c-084a0a72da3f) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 8df205a1-47e8-4f32-be3a-d15a42615b34) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1b4c5a7e-7236-446b-9bc6-fbe35fffb6dd)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 69ec0d89-823a-45fb-9cf8-39eb0343f311)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d2127b69-8d22-4223-9247-792014b7ae0f)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3d7113aa-549f-4402-8fb7-3a424624ef25)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a41bf81b-8673-41a9-a328-c4ceeb3b5309)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 08009756-b950-45f0-a0f7-78d87808ed51)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b8b6e156-fa80-4ed6-8839-6e6d3c15c8f9)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5c8aed11-7501-4748-86e4-c032eb20b406)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ef4cede8-d284-4f20-adfb-abecc6987cc3)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b5945c82-0018-404d-afee-dd0a66e98043)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f766625f-f25a-4299-b7a0-c5970874dce7)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 302182a9-2dc2-464b-8b76-767bfbb46caa)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1d41d2e4-95c4-4ca0-97d4-4779fc7b8f5e)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b0523c83-135f-470b-9845-be45600a7397)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8b320127-b74b-4338-a5e9-a6cfb1a0066b)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f5a405fc-d401-49ef-9513-665ef1a321d7)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ef8b9581-80ae-42c8-97a3-b903126b2008)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 297ca2d3-53bc-44b4-9f3d-d30dca47016c)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0068b215-3069-4cb1-8a2f-215c66d02a6e)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 37719edc-f361-49dd-ab8c-e7e5fcf45c86)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 45d6d501-98c4-4ea3-8603-5bc3b587b88a)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e320cfd9-2c47-416a-bd9f-f514cfbe0e38)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5176125f-cba5-43e7-b5de-6a5260182a93)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp fdc007df-8560-46c7-b825-68c6bebdf518)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 057759fc-c543-4b8f-b2f6-5772a5f5df1e)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 57d1e3b8-b17a-4836-bd5e-ab66ddb8ceb7)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 61acda85-90a6-41c7-9f52-de237934acd5)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 36eefe59-b543-4b50-945e-dbb26c6feeb6)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 7fcb9051-354a-4056-abf9-6e91da1a3bdb)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp 28852858-c30c-4456-a379-d922c87df032)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 10 "/col4") (pintype "passive") (tstamp d0f67829-26ff-44d2-a508-726bb09721d6)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 39 "Net-(D30-A)") (pintype "passive") (tstamp d7fcd28a-4df1-45ba-969e-3bf08495e92c)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 39 "Net-(D30-A)") (pintype "passive") (tstamp 41847e30-328a-45a7-9241-8e54840027d4)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp dd979f33-e79a-437f-a61a-28946a31947c) (at 171.396637 135.807498 -93) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/baa22193-0b64-4e75-b7c3-b6d8f6a9c806") (attr through_hole) (fp_text reference "D55" (at 0.5 0 -93 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp bc6ed21c-dad1-4518-ab12-5a38b8269ccd) ) (fp_text value "Diode" (at 0 0 -93) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp cde70e9f-6e64-42de-8082-0f50a90c4b5c) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d61fc08d-7286-48f6-8b57-5a4e903a8549)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 91b48e6c-0a38-45c0-ba70-a0a42315f2a2)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 7da233ce-cd2d-4ec3-bf54-70dc0283d8ab)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 146dcd06-4c2f-4bcb-9b59-93562820f429)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 67250035-9134-4cf6-87b0-448766a428d7)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 481a8279-e9a6-40db-8b99-0d1286fa5fe8)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9bf3ace4-c44c-4086-8566-ba652246d86d)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 70383cb7-e864-46b5-a3fc-59f24acabf3e)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e87046c6-0e36-4c13-a9e7-1cb020dac103)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 11f4e318-4866-4838-b4f4-03f8b35c1ce8)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp a18ab3f6-bb99-4285-a22d-9d488d0bb832)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a0202d28-7a96-4a8f-aa24-74eeb98345ee)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 69e406aa-88f0-429c-ac1f-a3687ec52272)) (pad "1" thru_hole roundrect (at -3.8 0 267) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp 56558d48-6b65-47c4-b523-d25f0aacef5d)) (pad "2" thru_hole circle (at 3.8 0 267) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 52 "Net-(D55-A)") (pinfunction "A") (pintype "passive") (tstamp 3be328a0-91d8-434a-a965-a6863139c643)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp df4c4db1-c6b5-4c10-a772-bc5612aecc29) (at 141.262 136 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/6e1daab3-acb1-4ed6-97f5-b050771793ad") (attr through_hole allow_missing_courtyard) (fp_text reference "S54" (at 0 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 384206d7-91c5-4aa0-b669-e4ea005a39ca) ) (fp_text value "Switch" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 84388acd-eb5d-4dc6-b40a-17e4cd7cfd52) ) (fp_text user "${REFERENCE}" (at 0 0 180 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 0a3d5219-5f53-4c8f-84f1-545294ba27f1) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ff0fc7a2-8bda-438b-9480-266437c4a0f8)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f979edc1-0b82-433e-82fb-3f627295c7ad)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b5a06e88-b66b-4056-8216-99f78599241d)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ed83d987-c153-4d95-be6b-8073b59ab615)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 59fa43d5-b225-477f-8372-67e9d99de761)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8677f96f-7c52-4d30-ab7a-1f024613852a)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8767cfd9-c7a0-4624-a13d-370f9c1f0b76)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 9b80eb35-3b9c-403b-a80f-935c6957a887)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp aefa4ab1-6564-44cf-bf52-119d0af514a7)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b5852c10-3eab-4aed-b748-733892b85db6)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 5ec54a78-b599-4a89-8ad8-ec16b717a76b)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 70477d2f-ab15-4ae8-a2b1-acc1a4581341)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 11fb0b29-f5d2-4b35-acb4-6d4fdeb51ab0)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d26bb4d1-9b92-40af-959a-f8affb5970e9)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c1e08928-30da-4e49-9cff-276006d3b2e4)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 61006031-d3f6-4cf5-980d-9d086a4a0e1d)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fee60d40-beaf-4345-95d8-b1b6970bbb76)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 09ababd7-5f4f-4d7f-86a8-cd73e53703c7)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp af66acee-6650-4eef-8a39-0bd009901ff2)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cbdae24a-2104-47af-afa9-9938ecdeb92b)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e06ae8c0-ecfc-42b2-bc0f-00084e014b53)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7125f072-0bc0-40ee-a785-8ec6d7ef835b)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 96f9194d-3551-416f-92db-0c0291acd745)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 3bda48b9-c0ab-4681-8f88-5e8b4d2a5cdb)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 104cbe8b-2a10-4cf2-a593-e25977281df0)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 9dc7e42d-a95a-45b3-92c7-4f67972c8c28)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 67d4a3b5-a80d-4355-a87f-f50021c5d3da)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp b72d9bdd-bd4f-4ee4-8167-5d75293cd2b7)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 5da04b28-a2e3-48ed-80fe-f76d5d946c94)) (pad "1" thru_hole oval locked (at 2.54 -5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 09736745-fa12-4fdf-a2a4-7a6d357aa958)) (pad "1" thru_hole oval locked (at 3.81 -2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 8465596e-af05-4f60-87bd-14907948a73e)) (pad "2" thru_hole oval locked (at -3.81 -2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 51 "Net-(D54-A)") (pintype "passive") (tstamp 3b9fe584-5cf2-4247-9c5c-2c1de906112c)) (pad "2" thru_hole oval locked (at -2.54 -5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 51 "Net-(D54-A)") (pintype "passive") (tstamp a7f22215-6548-4317-a6dc-8b79dfda7c57)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp e8e89f8b-e01c-46e4-8898-bc164e2e4063) (at 142.2 112.2) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/627a2807-b53a-49ee-b1de-c1be06d6bfb3") (attr through_hole allow_missing_courtyard) (fp_text reference "S41" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d1e18f3a-6e7a-431b-b082-e091e1a33526) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp af1e69fa-7562-45e3-bdf8-b10c3b4e5879) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 6964462e-1d8d-4dc7-8b43-4af49d4f2fd6) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5ec435df-cd66-45bb-9a78-94d92aaec4d2)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e81299dc-c7e4-4df0-898d-d72b8ef6ce6e)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 12676288-60e5-413e-84db-a57e5cf442ae)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fc848f3e-0c30-4c52-bf42-74a0f25fd3d8)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bb83ea6c-8494-42b6-b7dc-e1048647ad76)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ecc49b42-4c4c-4972-b980-f95dfcebea17)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ef0b359a-aeed-4175-a2b4-d510867671af)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 9a600dd2-5c7c-4ad8-b3d9-b96a9ab2bfb5)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 73b0f900-10a1-4d4e-837a-387482f606ba)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp c1f3ed13-0b40-4976-a8e7-ff8587642868)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 653268b4-8366-483c-8e04-0556f1c81886)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp dda22e60-bc27-4f26-9cf7-04cc98ec3604)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6aae117f-81bd-4ca0-af61-950249c21cc2)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2408c2a6-cf3c-4f94-a39e-82b276258224)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 95f1f5fc-106f-42f1-9ba2-1c1f7ad893ab)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e8059bd8-9e93-460a-a066-0f84ede4a672)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6e00bc44-552e-45fe-86f2-edcce90391b0)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 901d67a2-93db-42e8-bebb-687d12c5f6f0)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 581d0f20-e5c1-4da0-bc9f-81b1379f8249)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 35b226f9-cdd2-4dc5-924e-efe6df3ff953)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 4e8878f3-51da-47d3-98ca-9d81222d81e4)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b2a6544f-9251-4544-a603-eb5e792d5459)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c9966626-8874-477c-ac6c-fcb0b6db9ecd)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b9111ef7-1842-46ae-9c77-9f434a2dfe39)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp b5a31f0e-ee6e-4b0a-9872-c6e957b2326f)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 6e5e505d-4de2-453b-a298-9f99b9e6ab81)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp f547ae94-9f23-4dec-bdbc-fc4331bae2e4)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 548e7b02-779a-48ef-9bf3-ec21b05b06b8)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 423ffd07-1c44-4708-a21a-908b96ed1eff)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 69a1bdd2-d69d-4136-b551-1941d19a47f5)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 5b017042-c91d-42ac-abb0-76c46bd316b9)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 44 "Net-(D41-A)") (pintype "passive") (tstamp 5f6df2c1-2a2e-4863-8702-256d191b88c5)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 44 "Net-(D41-A)") (pintype "passive") (tstamp e14c5924-ca6a-4d0a-8d2e-1d8d6f236b57)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp ed7dc520-febc-4dfd-b952-1dcbca182530) (at 150.45 56.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/ebc96ed9-631f-4dde-b3ce-b137deb60c44") (attr through_hole) (fp_text reference "D2" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 060947be-f11b-4a6e-b324-713d2848b4d1) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp c23cd537-44fd-4361-81f9-62fd34f583c4) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 21d4f1a7-ea5e-4204-a202-b2f0896b0388)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3d1d08df-ef29-4e13-80f8-3a6eac067e49)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 71b9a8b6-8c8a-424a-b373-0436ba4bc6a6)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 824fafbd-0a65-48af-b697-f4b7944182d6)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 0cee5a1d-197a-4daa-aa7e-0da5c8a0c686)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9b142348-a389-41f8-bfc9-6c99a46e969a)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8d05ee9c-1e07-4e6b-ac42-dc745cd2998c)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 7e6e62c2-34a3-4fbc-b4e5-4087a3f73a79)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ba5956ed-ec90-4a05-9948-c75290ae4ad4)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp e182bb1b-e419-46b1-b118-fae084fddd4d)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 36a023e3-0115-45d3-a072-f963ae4b9475)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d45f2fbc-784e-484f-887f-cabc224386b7)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 34502982-90e1-4c4b-8cb9-5c6afe2c2301)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp bb3cafa0-4ba6-44bf-b8dd-48bc73ce2d72)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 21 "Net-(D2-A)") (pinfunction "A") (pintype "passive") (tstamp dac78157-b443-4e6d-a74d-42e06fc420a1)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp ef7af887-6aed-4398-96fa-ee4eeec510e6) (at 216.35 146.25 -36) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/f12fe510-3f57-4a18-9983-38fdb3e38aba") (attr through_hole) (fp_text reference "D57" (at 0.5 0 -36 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 8411bc67-568f-45be-9bc1-8031f1357f56) ) (fp_text value "Diode" (at 0 0 -36) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 6aa7f42b-a094-42e5-97d0-05a9c2769d76) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b35eaf57-6add-46dc-8966-90ca742ff709)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ef68f1ab-d677-4bbf-a534-e0cb7bb1c4b3)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp ff795a68-c8f2-46f3-a40f-1a99cca9e5b7)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4f0fc996-0304-4b3a-84dc-6d2806f14295)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp dea43d7b-2ddd-4b02-8882-33dbfaa27752)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9bcefaf8-01e0-4825-8d20-92739c8f7423)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fa994d5c-c63b-46de-ac2b-4c825ac8b8b6)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 3eaa4dcc-256c-416e-8ce0-22cb71bf1b60)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1b840539-203d-4546-ad73-c1f0d369d1df)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 553b956e-4d96-45e2-a20d-1a9d97466455)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 6d7aadfe-df7f-477b-b598-40e3823a0f85)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 1dc7b80a-5ef6-46ff-b52c-61fcce35d1aa)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp e31fcf81-d5ac-4cd1-ac35-0b2cd547e97b)) (pad "1" thru_hole roundrect (at -3.8 0 324) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp f8885a0f-dd85-41de-a620-822960e86f5a)) (pad "2" thru_hole circle (at 3.8 0 324) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 54 "Net-(D57-A)") (pinfunction "A") (pintype "passive") (tstamp 526822c5-87c5-45d7-b059-f5734f8de91f)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp f47634c3-e2f0-476f-86ce-59c22f56d31d) (at 163.092 136.634 177) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/f6964d40-d601-4c90-b873-dfc2fbc22836") (attr through_hole allow_missing_courtyard) (fp_text reference "S55" (at 0 0 177 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp cf967295-2cd4-4457-a1cc-377aa9b2a2fd) ) (fp_text value "Switch" (at 0 0 177) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 358db6e9-9ec5-45e5-b25f-1335a97cf94b) ) (fp_text user "${REFERENCE}" (at 0 0 177 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp db628d52-2b81-4cf6-9527-72908db8caed) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8154eac1-6ee5-4ea2-84ed-7d236a5f20d7)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7fa41254-fd31-471a-a291-f02a81fb46a0)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d7644b51-a1c0-4213-a63f-5594b7d5d7c4)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3c3d835f-9bf3-4deb-9f51-e741afdf3780)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cbed46f4-7d38-4a74-af05-a0721cb83ce5)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 71e7c9d1-0972-4ac7-9c9a-5206d58f4913)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7ceae3d1-4917-44e2-974b-8597ab331efc)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 17613948-32de-4b73-9486-27a256077872)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a8f3d40d-d183-4f74-8088-4972043c02d5)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ba5ad6ae-2f44-46c3-8491-188926ca7e3d)) (fp_arc (start 5 -5.7) (mid 5.494974 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp bfb6de35-106f-4003-a4d6-25d781b1a2ff)) (fp_arc (start 5.7 5) (mid 5.494975 5.494974) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 1c572f2f-271c-48eb-ab3e-8a046465a760)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9c59ff6c-ae27-4681-adaa-17a34a6f3846)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b46434f7-a55e-4081-adca-78b725eb8e99)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 86ac6ed6-ed5c-47ab-a350-29feb3043b6d)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 19680abb-c3c6-48e3-ae59-eaf7fb5ebabe)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f9c6c6f5-5420-4fbe-88cd-4d6587b5e0ea)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f826aaef-3fc6-4811-ba27-52107795b68d)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a4478d3a-efa1-48d5-8fa2-590bfc2135da)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3b2a0f66-94f8-472a-b5b1-81398cc26ac9)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 058771dd-1850-4d5d-9793-5a2a8b551aea)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 82d9ce88-723c-4bcd-838f-60d27c7e749c)) (fp_arc (start 5 -5.7) (mid 5.494974 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 496c77d9-8aac-4ad3-b024-f5ad8601ae68)) (fp_arc (start 5.7 5) (mid 5.494975 5.494974) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp a7de213c-aac6-4536-bda8-1bfd96d47857)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp b1a3e5c1-1a23-4161-8998-ee40dbab9b1b)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 1c17bd37-d21f-4682-8abe-b6ec2c9992e0)) (pad "" np_thru_hole circle locked (at -5.08 0 177) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 1e9e2c68-cd20-48a6-8a1d-d40154438cd5)) (pad "" np_thru_hole circle locked (at 0 0 177) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 3fd5f898-9a3a-419a-aa62-f6fade2aa807)) (pad "" np_thru_hole circle locked (at 5.08 0 177) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp e5509a33-7f7d-4e48-bb8c-99961a60327a)) (pad "1" thru_hole oval locked (at 2.54 -5.08 177) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 099cf750-3d25-4c64-8f37-9c5cba6495e5)) (pad "1" thru_hole oval locked (at 3.81 -2.54 177) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp df0ef8e3-7998-4546-a18a-fca82b844d58)) (pad "2" thru_hole oval locked (at -3.81 -2.54 177) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 52 "Net-(D55-A)") (pintype "passive") (tstamp 422b77ff-dd21-4c71-9721-2f0870ee0167)) (pad "2" thru_hole oval locked (at -2.54 -5.08 177) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 52 "Net-(D55-A)") (pintype "passive") (tstamp a36912fa-cc12-488b-bb00-a66f030f96d3)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp f76027e4-e0f7-4893-9836-e47cf94afe45) (at 82.75 108.75 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/299a310b-3dc1-4583-b761-64ac94dbe6d8") (attr through_hole) (fp_text reference "D51" (at 0.5 0 180 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d73f759a-0b12-4d01-98ca-42dc98834f4f) ) (fp_text value "Diode" (at 0 0 180) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp caf378e7-ec91-4b4a-a11e-221ee8360f11) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f159485c-e833-49a1-80f0-748e856765da)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c9e6aec4-9143-4120-8934-6df439033921)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp fe8b3852-3840-4c01-8ef8-cb8d4da5e0b3)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fecfc40a-7c78-4262-812c-9ba92b5ceecc)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 12fe7061-6b56-4893-800c-dbe58c7a2233)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3be97925-8ad4-4a85-81c4-788ba6195c7d)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2b3aad3e-0ea0-4ddd-a671-6274725f0f0a)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 8f35c75d-58ba-475f-9fc8-1bafefc33fd3)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 13ab9254-d565-45fe-8ad1-cbc56880ab38)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 7c76e5ef-5762-4fbd-a603-e746ebe673a4)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp f7cb3739-b928-42d7-9492-5c81a682a1d6)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp c2f95cba-8f8a-4ae2-a244-821fa72a22c7)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp a2cfcb97-47ed-41ee-9f17-317e81a2648d)) (pad "1" thru_hole roundrect (at -3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 4 "/row3") (pinfunction "K") (pintype "passive") (tstamp 9b4499c0-8976-4291-b020-d73d82f3eb49)) (pad "2" thru_hole circle (at 3.8 0 180) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 48 "Net-(D51-A)") (pinfunction "A") (pintype "passive") (tstamp 58e074d8-5ece-4ebf-ab1f-acc2e2204619)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp f7c9e502-8ea3-4d1c-bda1-20444b009594) (at 190.95 56.46 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/18504136-6b78-4b14-bc73-4a684af3ba9d") (attr through_hole) (fp_text reference "D5" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 3ba768b3-d17f-4eee-bc88-749041a02664) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 1057e5bc-c367-41c7-8378-1b788c8f7f71) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e39fb73c-06d9-4dd3-8646-ad1ee994ca8b)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4526faf4-c982-4be6-9b8b-2695cc2ba052)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp d6180b68-5cf9-473a-b6f4-75581f936642)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 632af50a-a290-4e7f-b037-f228b72c086a)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp c930936c-b7c8-4c27-a448-ebabbf79ad98)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 56076916-15fe-4581-9d81-01f5239793e3)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 49eb0938-8f18-4321-afc8-d75db72f8a02)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 1aee6feb-27f2-4e19-858f-c2103a41f7e3)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7f7e876c-adcf-43b2-ac69-2fffe47e4cd0)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 609b8175-f928-4bd3-862a-e9d21820e4c1)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 3fc751d2-c51d-453a-b963-1b9c45aada94)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7d65a2d2-93a1-4156-a143-32c1f9f9792b)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b1741043-0608-48a9-8925-f46f7676f191)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 1 "/row0") (pinfunction "K") (pintype "passive") (tstamp a19a059c-b2f1-4b9b-941d-4db0951a2fb1)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 24 "Net-(D5-A)") (pinfunction "A") (pintype "passive") (tstamp bbcb54a5-aaa7-459b-8611-cd2c22a64a68)) ) (footprint "footprints:Diode_1N4148_P7.6mm" (layer "F.Cu") (tstamp fdfa7f6f-eb0c-4215-99f9-0ee7c6859efc) (at 128.25 137.26 90) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/f350615a-eec9-4027-9858-77f5dc2357e9") (attr through_hole) (fp_text reference "D53" (at 0.5 0 90 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f1ef61ae-8472-4855-9cbd-2a773278d347) ) (fp_text value "Diode" (at 0 0 90) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp be34292c-12ae-4a02-be3d-9f8770112f84) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5ec9ecb8-2112-4a86-adb9-942715688e96)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c995db1e-7b8f-449f-8949-0a1ad113d1d2)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 36ddb86a-34d1-4f64-bc11-bce11564a4c1)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 89797f20-00eb-4199-a4c5-360d1edd3b82)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp e1395a17-92c1-4c98-bfa8-6349fff146f2)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3e28204d-6f04-45ea-a394-88933e902f79)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b25cde4d-9b75-4a61-bf8d-e3eedd062b1f)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 3bfcf6b9-c8e9-4137-9b15-724931200774)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8c42d4d6-91b6-44e7-91f5-e8a0f100dc8d)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp b311c154-5c45-477e-b7c7-582631be8f8b)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp aa487dd4-6240-41b5-9dd1-7d5189f5c71e)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 823002ab-447e-47c6-8a48-cfe2467bbd73)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 482281a3-651e-4628-9d0a-4aef76076a34)) (pad "1" thru_hole roundrect (at -3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 5 "/row4") (pinfunction "K") (pintype "passive") (tstamp 231ce7bd-3bb7-4d5b-8315-dff9c8cca45d)) (pad "2" thru_hole circle (at 3.8 0 90) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (net 50 "Net-(D53-A)") (pinfunction "A") (pintype "passive") (tstamp a9e5728a-fa81-47cd-a7d3-df0be5a2e6d5)) ) (footprint "footprints:Switch_MX" locked (layer "F.Cu") (tstamp fe5e5233-8cd3-4eb6-9cfd-a7707a6bbd4e) (at 120 79) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/eccc1b09-0ace-4a18-a22d-ff0f4e02ea42") (attr through_hole allow_missing_courtyard) (fp_text reference "S14" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 918eb42e-d587-40bf-9e61-4a453df18f30) ) (fp_text value "Switch" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 4f96034d-12fc-48b5-87c7-8ca35ceae4d8) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 21904ecc-7d99-40ad-8e13-a22dd3725627) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 94121076-35a9-41f7-acb3-666cc36b534e)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f276f8c6-1685-49b2-97d9-7a6a83cfc168)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 526f07a6-b793-4a0e-820c-5464fb2b1ebe)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cebdf0a6-0b84-49d2-b500-140b38675d13)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp eff97d02-e3b2-4f2a-8261-7cd680154cdc)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6e70c12d-484d-45db-a2fd-6b74e3fd3eab)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 71f81839-7748-4165-b643-6e9d3280b28d)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f4e779ab-a2ac-4f1f-a73b-800b551ba60f)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7c1d3b96-220a-469b-9b40-9f562e1145fc)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b81bdd90-82fc-4f2b-8eb4-914ecec6a1a4)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp cee75cbf-b111-45e5-a51d-fc67a3f4fb9a)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 4d11fe57-82ee-4125-b355-7051be9fb92b)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 241dc34e-ecb5-403a-81f3-0a7cb326ca22)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3be4f84d-e4b5-41c1-9b29-168aaf168643)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1515dafa-47e1-491b-9685-dffb36c3569c)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9c00eb0a-7703-4fd1-a687-f1e59b9ccd48)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6465797d-82e0-405d-8461-66f5e539d5fc)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3c127a16-2a7b-48d8-83fc-e971b0715826)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8fe77f9b-4b0b-424b-9181-34fcf25f1c18)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0dc88049-0240-4df0-8c4b-04a03743dd05)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 937121db-1425-4229-b23c-8b47a0e716f7)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 3b7239fd-ff0b-4ec1-9ad8-33eebbcc76bf)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e7989a8e-ec45-4cfa-bb3a-4f490d2b99e6)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp bc5cdcab-6b26-48e3-a06e-1e0754c7ecb1)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 045e19a6-38b1-4802-9a91-ec761f5b95b8)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 2bf95592-6083-4eeb-84ae-d9afcade6212)) (pad "" np_thru_hole circle locked (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 6c5ccb3f-ac3f-4326-9dde-96242052aa06)) (pad "" np_thru_hole circle locked (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 53898836-a6b2-411a-8c46-0c3afcebceab)) (pad "" np_thru_hole circle locked (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp ecd26b0e-5010-47f0-bfaa-7a272bd713c7)) (pad "1" thru_hole oval locked (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 17a72520-8b99-4b04-b6ee-25f011f6035f)) (pad "1" thru_hole oval locked (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp f94ec2d4-680a-449e-bade-eaad328abf0e)) (pad "2" thru_hole oval locked (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 29 "Net-(D14-A)") (pintype "passive") (tstamp cb9bdd73-1509-4705-a2c5-6b86c305b9f9)) (pad "2" thru_hole oval locked (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 29 "Net-(D14-A)") (pintype "passive") (tstamp 55a541a9-9c8c-41c9-84a8-02e36b986714)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp 2a2544bf-55f0-4013-a6e5-4aab77462295) (at 161.2 109.8 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/97135508-3301-40ef-8cc6-463de204183c") (attr through_hole allow_missing_courtyard) (fp_text reference "S42" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 58359f38-b127-4bb2-8d55-e4522d4cb380) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp b8395028-41e7-4131-9c72-881992b86431) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 19b4e6c4-896e-466b-b12f-32d3453a5b8f) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4667bdad-b43a-42de-95f2-c69a87b32045)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2f57b193-ea33-40e9-ba3a-73c8e2a95ac8)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5bda2879-cede-47c0-a235-969940d14669)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5d483e63-45f8-46d7-8634-557c3e6d465f)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4ca15f26-fca1-4d51-82dc-3a622e655ffb)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5e8ad942-c965-4119-abb4-29bed51457ec)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5df64a44-8c0d-494e-809e-1c2b693ba502)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8f74b631-525b-48b1-bca8-c10d134232f7)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp f3f2b327-95d4-4507-a83e-e69ead53548d)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp c7b602f2-41c2-4c56-9799-083c5aea2d08)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 16d4dc9a-29ee-4606-8195-f9e7180a103d)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 90ca7ae9-ed9a-4848-a92e-a682bdfb1e61)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9bece06d-7a8c-4ad7-b064-989dd3b6004a)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b5057dae-51d3-4edd-9c01-5fa23c1f6e0e)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5ba98def-a8e4-49f9-8824-0e652933c97d)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 66a78dc8-ad07-478f-9005-89c55a16e5f4)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 456b2c68-8e87-43c9-bde8-5389bf29fd77)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6d72bf8b-d1d0-42e8-b45f-e26135b4aa7b)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 37b7166f-6330-47b6-ab96-1739eb01b3a3)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1610a700-e94c-4083-b6f2-6fdf2c5c4621)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp a3d463ed-c618-4dcf-9b0f-7f02ec4853f9)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 9470600f-a082-4990-825e-73103c3b8d69)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c9b36da4-cc0a-43b5-9c06-b01e11f59357)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp ab91d807-2799-4839-95c9-b26bebf704c1)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 94ba118a-a8d4-4bc0-9835-0c50df5e0afd)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 1b7c7eef-92c4-4d4e-b2e0-79ddb5271b96)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp e0662d6d-1c37-4a9d-a0bd-6405c8d67022)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 3ebbc526-009b-484f-b933-dc32f7deccfa)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp fc81a208-63eb-48e0-aea4-cd7071a9e745)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 07615641-8fa9-4ae0-a06c-84e885aa4f8a)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 34532e2a-113a-4b66-bcd9-3703ef69cca6)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 45 "Net-(D42-A)") (pintype "passive") (tstamp 4fad0af2-fd2e-4c76-a2c5-399c1a80b034)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 45 "Net-(D42-A)") (pintype "passive") (tstamp 13fcf15f-0d3c-465a-bb50-49f8778b49aa)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp 422cf00f-a696-4611-ae25-c7ca6c320c10) (at 142.2 55.2 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/e40244e3-def9-42a8-9b1d-61b1998ba5b5") (attr through_hole allow_missing_courtyard) (fp_text reference "S2" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 0c24dcf5-65db-47fe-a0ce-1a268c69f0a8) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 777300c6-d99f-4d89-9c2f-d75de59dccda) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f93704cb-f9f1-456d-8a60-755e487c8384) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f23cee7c-bf4d-417d-a021-f5175a5331cb)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 194d8116-d74e-4c1c-8671-6afc06e1ba50)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7efbfbd3-9eef-4638-b1a3-027145c17885)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 19b9e239-bbf2-4762-a5ed-3afba10eae6b)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3917ef96-6528-49f7-a4c3-c0b171a3af64)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c848e8fa-a7f8-4583-9d29-374a18995f84)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 946ddb3d-8520-41de-aee7-7c846d729186)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6def9f8d-d9e3-4587-8438-1d1a4e1fed99)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a1d5cfd9-dfab-4b52-9a4a-1f3c19d709bf)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 18b98628-b8ed-4001-815b-c70892771389)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 6398d436-5bfd-4ac0-bd36-ccc7c86acc3d)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 4c1bdc76-cb7a-4c2d-9ddd-cc27e5ac68e3)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 69e0cb5b-5d4c-4191-b53e-09c363cf08a6)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e0460a53-4c54-4a3d-b932-24d05424c2bd)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 72993bdb-414f-4337-b4fc-7c61d2f318ac)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6d6a021c-79f0-4b0a-a23c-aafae4abf2c0)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4e305c68-0dc1-479d-af38-79aab9460b03)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3f6ca902-d6d4-4dd0-934c-3d915b5e5fab)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f827cd7d-0f54-4ada-843c-714a38979eee)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4b01a5f1-500e-4121-ba4a-b889a23b8192)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7b18d3ca-12e4-40be-98fe-ebfdb202602d)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 415c9f49-65d6-4695-b998-444f0e976bf1)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7a42f9f8-2f08-4fef-8a8e-49035c131199)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp db588b7f-a39d-4971-a78b-75895c076fdc)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 23555c1b-6b9e-43ae-bf05-0b4e5f32ae05)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp eb8eb6f8-f471-4fff-a416-b5ede9297841)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 8392b284-9c71-4f2f-8d5a-ce95bbbdc241)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp a2ff6ba3-dc74-4d26-a7ba-849da6da0855)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 1ff81176-16da-49aa-a13d-3c4dab50d72b)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp b15e87ae-5b02-4653-b611-10a855a1fe41)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 12 "/col2") (pintype "passive") (tstamp 7d4f7f88-82e6-4fd5-b788-12099594ef12)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 21 "Net-(D2-A)") (pintype "passive") (tstamp da4974a0-7023-47fb-a731-d2b84c428369)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 21 "Net-(D2-A)") (pintype "passive") (tstamp 6c2b86e5-b061-416d-ae79-03befe9478b6)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp 567d4001-69a3-443a-a737-cde429d54ec9) (at 161.2 71.8 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/a75fc727-0bb1-4740-9f7f-20a737c953ef") (attr through_hole allow_missing_courtyard) (fp_text reference "S16" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp a7d3ce18-e454-4992-ba91-5bf18ba68953) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 003b0f12-3aaf-4902-9294-8c4346f3b3ea) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 57891ab0-0c24-4c48-a330-127e49bac8f7) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2304a22c-ffff-4ff3-9d8c-b90cebe5f912)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp fcf90f6a-398a-46d3-b469-14c5735da27e)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 33d515d4-97b4-44c5-9e38-12e94b8bcb4d)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2bb8899b-69b1-41e9-92c6-03d1ce07b5b0)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e45bc196-38c5-4117-bbd3-1b1b2c146e13)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2d358a07-95ef-4303-97e6-63e8f4901d02)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c2abaae9-c079-4cc0-b16e-66ab7090e17c)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 72e10e41-041f-4b52-8b26-53fc5b3090a2)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 17bd5e23-e44a-4ef0-b879-8b7f51db667b)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 010c74a0-8808-44bf-89cb-36958afee131)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp abd477c1-180d-44ab-bd04-607bde390cae)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 5e8c0401-84bd-4e88-b56d-d3aef1e9a15e)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp aeb266db-aaef-402d-9836-8315045529b8)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b402d434-e362-4a44-86e2-57ec33cc60cb)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4ce4c30f-9720-404e-855b-ddc6166456db)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5f16d68b-393d-4485-baa3-75ce2a4c1fa4)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 59dc643e-b091-40e2-b92d-7ad5395cd950)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6457d7b5-3ba7-4306-9939-d999f3b13c1e)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 802c8f90-2bee-4002-b5bf-b6dc5b881001)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6eb75d54-14a4-42f0-b810-427ba43fa8df)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 5bc2ce47-2c5d-483e-a76a-13fedb1592d9)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 0853919c-f8b2-4b2e-bb91-7b6a62a55980)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1aaf3c3f-2dc0-4487-a3ca-2ca6b11324b6)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 8b86b11a-2d8a-4ce9-a539-2192f295a6a3)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 44bd5122-5994-4d0f-8c92-83d63b839ad5)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 72da73fc-bedb-4a9a-9f71-ecd3fbcdff10)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 4cf08757-d7e0-4921-8e50-c9dca062dd44)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp dd1526a5-53fb-4832-952b-67a50a21e2cb)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 1c2600c3-1639-4923-bd9c-6ed5b321de2e)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 56127d33-dd5d-4074-b9d4-1fb66d807830)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp b90f8885-f2c7-4209-abe6-71b5302d8749)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 31 "Net-(D16-A)") (pintype "passive") (tstamp f2a33c09-2f04-4669-9d71-f0185a55ac19)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 31 "Net-(D16-A)") (pintype "passive") (tstamp 3fa49d9f-4f70-4e5a-9bfb-df474f620b15)) ) (footprint "footprints:PinHeader_1x2_P2.54mm_Custom" (layer "B.Cu") (tstamp 7edbeced-00e6-431d-9e97-077574018ff1) (at 178.93 64.7 180) (attr through_hole board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 3.47) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 37ec2360-b045-413f-8f69-f8bd5ecaea11) ) (fp_text value "PinHeader_1x2_P2.54mm_Custom" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 1cd2bf20-9e11-40b8-bc21-49c6266d48cf) ) (fp_poly (pts (arc (start 0.762 -2.54) (mid 1.12121 -2.39121) (end 1.27 -2.032)) (arc (start 1.27 2.032) (mid 1.12121 2.39121) (end 0.762 2.54)) (arc (start -0.762 2.54) (mid -1.12121 2.39121) (end -1.27 2.032)) (arc (start -1.27 -2.032) (mid -1.12121 -2.39121) (end -0.762 -2.54)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp c3ffc258-b103-453f-8233-1fdd0931dceb)) (fp_rect (start -1.27 2.54) (end 1.27 -2.54) (stroke (width 0.1) (type default)) (fill none) (layer "B.Fab") (tstamp aa515aa3-0bfa-487e-938d-19deaa065225)) (pad "1" thru_hole circle (at 0 1.27 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp c4472149-9051-4850-9385-5bece6f0e5b6)) (pad "2" thru_hole circle (at 0 -1.27 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 45202566-3efc-4fb5-bfbe-01baa1a49c1d)) ) (footprint "footprints:Graphic_OSHW" (layer "B.Cu") (tstamp a3b8c276-ac12-4446-b175-58dd1efcb4ed) (at 120 88.5 180) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp a115b9ee-7e25-4bba-ba44-82587537badf) ) (fp_text value "Graphic_OSHW" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp aa743c30-f964-4fb5-bf88-738bd651d32a) ) (fp_poly (pts (arc (start -0.287 -0.693) (mid 0 0.75) (end 0.287 -0.693)) (xy 0.711 -1.717) (xy 0.938 -1.624) (xy 1.522 -1.983) (xy 1.983 -1.522) (xy 1.624 -0.938) (xy 1.811 -0.485) (xy 2.479 -0.326) (xy 2.479 0.326) (xy 1.811 0.485) (xy 1.624 0.937) (xy 1.983 1.522) (xy 1.522 1.983) (xy 0.938 1.624) (xy 0.485 1.811) (xy 0.326 2.479) (xy -0.326 2.479) (xy -0.485 1.811) (xy -0.937 1.624) (xy -1.522 1.983) (xy -1.983 1.522) (xy -1.624 0.937) (xy -1.811 0.485) (xy -2.479 0.326) (xy -2.479 -0.326) (xy -1.811 -0.485) (xy -1.624 -0.938) (xy -1.983 -1.522) (xy -1.522 -1.983) (xy -0.937 -1.624) (xy -0.711 -1.717) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 35e73c03-4626-442a-8231-5f69b17f6b2a)) ) (footprint "footprints:PinHeader_1x2_P2.54mm_Custom" (layer "B.Cu") (tstamp a7bf8e3d-58eb-45d3-86fe-2c66c180ea4f) (at 220.45 66.98) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/0df87356-05ef-435a-95fd-c284b850cfc0") (attr through_hole board_only exclude_from_pos_files allow_missing_courtyard) (fp_text reference "J4" (at 0 3.47) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp bd5eb289-6a01-4e73-98ec-59e980be055e) ) (fp_text value "PinHeader_1x2" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 4ad5cbb7-f3e6-4ad3-96b1-5c5900f38825) ) (fp_poly (pts (arc (start 0.762 -2.54) (mid 1.12121 -2.39121) (end 1.27 -2.032)) (arc (start 1.27 2.032) (mid 1.12121 2.39121) (end 0.762 2.54)) (arc (start -0.762 2.54) (mid -1.12121 2.39121) (end -1.27 2.032)) (arc (start -1.27 -2.032) (mid -1.12121 -2.39121) (end -0.762 -2.54)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 8e43171c-8d5b-42fd-ae50-ae410fb5d89b)) (fp_rect (start -1.27 2.54) (end 1.27 -2.54) (stroke (width 0.1) (type default)) (fill none) (layer "B.Fab") (tstamp a868a2ac-bb7a-4acc-a23f-f70be3dc9608)) (pad "1" thru_hole circle (at 0 1.27) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 26 "Net-(E1-Pad1)") (pintype "passive") (tstamp 5639341e-e633-4af7-821a-98068d93227b)) (pad "2" thru_hole circle (at 0 -1.27) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 27 "Net-(E1-Pad2)") (pintype "passive") (tstamp 779fd638-de71-46bd-8656-beb04c786853)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp b547b336-ca8d-4a7d-aa46-c3694412443d) (at 161.2 90.8 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/09d6a03c-bab4-467b-99a3-84df6becfa20") (attr through_hole allow_missing_courtyard) (fp_text reference "S29" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 64d7a757-e997-40bf-87ae-30ff8e4e3ba6) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 7cf9c32d-0190-45df-a449-f7613e478bac) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp cbee85b4-13f0-41b4-9cdf-308879f4fc12) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f607916e-4371-4644-8aec-256ff5d04fc0)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 77572a63-a730-4a29-bac6-81b4be51fa45)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2cc3e2b7-cacb-4602-8859-da9071f30dbb)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 65a569d9-4fc7-4c50-816b-61848b4f96f7)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4002c2c0-790a-4ea2-b916-14bba76590a7)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 49bb0b1b-73e0-41c5-961e-1c970c57258d)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e428ada8-0032-4942-8b57-65e179c34517)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b2e3f30d-2367-4497-be36-9625f36cbbb8)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp fc2acf85-c770-4063-9d11-66bcf71ea394)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 3d98a84b-4eed-45e9-9a6a-5ca7c3ca8dc2)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp d174c231-2282-4290-bd9c-791538d33724)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 64d60fc1-ef2c-4010-a7a7-3928ed983c7d)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 020a18ff-9e36-4002-9af8-3e1e97df9cbe)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e82596cf-491e-488e-98b1-48886e33be81)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 80337b2c-0efc-4007-9727-8c0dcbd47d4b)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3fa27dc0-efd5-4af7-9772-bbf48799b9aa)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a24e6eae-b4f2-4e74-af96-6f365bc885c1)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f59897b6-ecdb-47fd-9bc2-e0d0371d20eb)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5c19b221-7252-4e0b-bd4c-29be5d4d466f)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8c4a9a67-a6b2-4c28-8696-ea8b193372a8)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp d1e1cc8e-cfb9-4151-8022-8c26aae4852e)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7ee825d4-8625-44d0-a129-201e7cdb1b40)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e5b6805e-8c6f-4717-b35b-4bd8e749e7a1)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp de14aa3f-2685-4f85-bf60-4b601bd13b19)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp e816d4ee-fb26-400c-9529-b5065aca86e0)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 9090142c-3b3b-44e8-8afb-610c59234e04)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp fed44404-8e0a-4dae-916d-3c8c0994dd8c)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 7dfff19c-4be3-4ff9-b7e5-840ae42693fc)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 74b7acbf-122e-4d9a-90ba-4f953726baff)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 4afa9ffb-75e6-4a62-bf60-2aad1fa8b6f1)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp a7c5c216-0548-4b4a-9463-7ee40effcce3)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 38 "Net-(D29-A)") (pintype "passive") (tstamp a1ece2dd-dd75-48c0-98ba-0a6a73cdfb10)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 38 "Net-(D29-A)") (pintype "passive") (tstamp c24eba90-34d4-4e9c-b878-1f74a0ee708d)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp cb96d9ca-273a-46b9-8855-8ce6575708dc) (at 161.2 52.8 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/8f694c04-ffd9-4cb8-b92c-24c007961984") (attr through_hole allow_missing_courtyard) (fp_text reference "S3" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 71f579c9-43b6-4990-9e21-d40e79d76fdc) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp eb44e6ae-afb1-4d4a-a60d-cea1a50fdde2) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 350c1ffe-4546-474b-9a7f-efbabe586cbc) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bbd85cdc-1c5f-4e37-a852-a6c4beb5ab7b)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1b900dac-b8cf-4bda-bfc5-e046fbc1abd6)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3c548608-e296-48a3-a8d0-51385afc5e6f)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp c7db3726-6c55-422e-a9f0-8765833d1b9b)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5eb673b8-3b3b-49b6-b9ca-9e6cf523578e)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4d94daf5-6793-42e5-8b80-b84828743f82)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 674a24c9-b8cc-4811-914e-f911c0b79456)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ea7be677-9c5c-40cc-8eb4-cd9f7879df25)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp cf198425-f923-44dd-b33e-3a686ae32d2a)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 3b796035-d409-474d-9cd6-a3631c48932b)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 685aa3a1-9e15-416e-9b4d-4e8f49fad7af)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp d4bca146-0dfa-4a28-8b5f-62f7b181b523)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7520df8d-11bf-420b-b520-09ea6d2cc36a)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1e71327f-ee75-405b-8202-679a3b380d20)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1bdbfd81-7d8d-4bff-bc00-7b8cbb7a5b4b)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fd0670e1-44ef-4294-b04a-b2715f7878cb)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4c55d494-759c-40fd-932d-2fb93574c81e)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 92717d1a-7795-45b9-9195-91e581839d4d)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 68a4d272-23aa-4ac8-a35a-b55caeebc022)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4856cb31-2564-4f13-8037-ca269bb2a81c)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 7e800a06-e923-4163-8b2e-5c665ceaa35c)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c0fe8ce3-1348-413e-86c8-7c107512e7a9)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 682419ce-5469-4a24-8ef7-d5ae8dcb8d5b)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp bd6419e8-4106-45d2-8f8e-215eaa13f977)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp df92434f-27a0-4a7d-9e77-861a967aa3f6)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 7559fd99-5df7-4056-9e03-083207ff4ff4)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 61424b77-dabb-4115-ad8b-78261cc129ef)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp c6fb6698-128a-494c-bc7b-06ed705069f5)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 0da0ae8f-6daf-4fc5-b776-57bb61fd69c3)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 19b63577-730d-48bc-b773-91b90334723e)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 11 "/col3") (pintype "passive") (tstamp 813e02bf-9da2-4145-afc0-cc69e33737e4)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 22 "Net-(D3-A)") (pintype "passive") (tstamp 5239e403-4496-4a49-8663-2974e914c7d4)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 22 "Net-(D3-A)") (pintype "passive") (tstamp 20564f21-3ddb-4526-8a81-50589f1c9534)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp cfb22ff1-1cb0-4da3-8be6-d314e755ba3b) (at 120 117 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/88c589d2-179b-4d69-bd35-98452dadb312") (attr through_hole allow_missing_courtyard) (fp_text reference "S40" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp ce68ed6b-29c5-480e-a150-bf6160bb8926) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp d6779cfd-2279-4d31-9d6a-a3c73d34d3f7) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 42286350-308c-4f11-9eda-f8b0e4107498) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e0e5c0b7-0634-48b9-a547-bef4818c3d21)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 6413c57e-744e-4d1c-8170-332e137794af)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2438c28d-dbac-457d-bd4c-38d005d6e6f6)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1dd483be-785a-480d-bf99-2e8cd387129a)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4e3b8505-ea35-43d6-906c-df616088aae9)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp b346facb-ba47-498c-971c-6dcd8c384b44)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7c850b9b-65d1-4fb8-a010-5c452a7c4c17)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 75d18c3a-f858-48d5-8366-a741cdb1d234)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b62a7ae3-b2a9-49e5-9199-107319155feb)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a8447af3-08a8-4e05-a6e8-8c5b3eb3cc68)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ab842979-b768-412d-af45-fc52232d1df2)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 4e6e35d7-d0d7-4234-a2d7-3c94237e620c)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 15973617-c462-47a7-a8e6-4f4e46a96336)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8375dcad-849a-4afa-957e-43c7bb0a763f)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c30f7485-1dd1-4c47-b67b-3f48ab03a69b)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ba3a1c08-5417-48af-a0e8-ac05788ebacd)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9e33992d-df80-4a8e-b3c8-1b60e5df6444)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 66d4f652-17ca-4301-80ec-9c4a15565d3d)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1b794e19-a5a2-4634-9ffd-f5cc326928c3)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp af4ff2b2-53fc-46dd-9ff6-5dbba3033837)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 6fc6ae3a-e37f-4a0a-a21b-5c1d23ce18ed)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 55a7d782-e52d-433a-9816-56b59921fd9b)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 83ef1655-06e0-4b80-8a5b-40f4c10cc254)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1c2d0dd1-1075-4af3-83c5-2557004e57d4)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 67b3e525-4ae2-46c8-b15e-2c0125b2ca81)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp f434f52a-4247-4549-b7cc-c72f2eb732ce)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 75958a41-4804-45e7-86bf-34509929686a)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp 19e6d6bf-82ce-4fac-b394-373da6aafd69)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 285a8570-bea9-48e5-a6b4-06438358972b)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 0667ee70-08da-4f3e-963f-6e01fe07627e)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp c128cb91-d989-4162-9906-dc3e794f2887)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 43 "Net-(D40-A)") (pintype "passive") (tstamp 5c840787-deb8-4440-a861-9eb4fdd0902d)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 43 "Net-(D40-A)") (pintype "passive") (tstamp 3799efcd-cde1-4a6a-afe2-49ca95941dfb)) ) (footprint "footprints:Graphic_CHRUMM" (layer "B.Cu") (tstamp d25873f4-a029-4972-8235-71ecfc62ff80) (at 198.2 129.875 180) (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp a6d20867-4ea6-436f-be95-232ee353e258) ) (fp_text value "Graphic_CHRUMM" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 7504306e-648e-429e-9f55-797c0059f970) ) (fp_text user "${REVISION}" (at 0 -2.9 unlocked) (layer "B.SilkS") (effects (font (size 1.8 1.8) (thickness 0.25)) (justify mirror)) (tstamp 445baada-2c74-49b8-8737-288e484993e6) ) (fp_line (start -9.01 2.22) (end -9.41 -0.98) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 2f92e118-963b-405a-b94f-521476e1e826)) (fp_line (start -8 0.6) (end -8 0.2) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 5bb9c48b-5bde-42a8-a9b8-3ca0a2c35654)) (fp_line (start -5.3 0.4) (end -3.7 0.4) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 667ad5cd-ee30-4de3-8aa5-8fbfbfdfc0c8)) (fp_line (start -5.3 1.6) (end -5.3 -0.8) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 2175c8c4-7e2c-46cb-862f-f032da04a11d)) (fp_line (start -4.8 3.1) (end -8.02 3.1) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 905102f6-027c-444f-a3ee-41363ef8db7c)) (fp_line (start -4.26 -3.18) (end -8.66 -2.08) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 78774833-7b6f-4009-ac90-4cc06e8e4403)) (fp_line (start -3.7 1.6) (end -3.7 -0.8) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp a03ddfd6-a4b0-471e-8057-d4f638046e7f)) (fp_line (start -3.5 3.25) (end -3.3 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 034ed329-ff89-4d25-a077-e7b948ccf135)) (fp_line (start -3.5 3.75) (end -3.15 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 140d8f1d-9a9a-41ad-af09-e3f5eda19fb9)) (fp_line (start -3.3 2.75) (end -3.7 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7b74e1ed-ef74-4fbf-8f2f-e5008f946515)) (fp_line (start -2.6 0.2) (end -1.7 0.2) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 424a345a-504a-4af3-ae17-8b9d3973f1b4)) (fp_line (start -2.6 1.6) (end -2.6 -0.8) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 5d1750a6-b464-4494-a6e0-fa60c795292f)) (fp_line (start -2.55 3.25) (end -1.8 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3a2adfe5-8095-42da-97c1-8e3d488e3ca8)) (fp_line (start -2.55 3.5) (end -2.55 3) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3f019b47-8656-417f-9c14-00385fd887f7)) (fp_line (start -2.3 2.75) (end -1.85 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 06ac3895-1cad-43e5-8bf3-39c331d1ce7c)) (fp_line (start -2.3 3.75) (end -2.05 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e7b376df-d193-4cbc-8f79-5c2bb3f64718)) (fp_line (start -1.8 3.5) (end -1.8 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e9d1c5e7-cf95-47d6-b5e3-f7b41ab8faf8)) (fp_line (start -1.7 0.2) (end -1 -0.8) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp fcf769de-4887-46f0-8775-6882d7cd20ae)) (fp_line (start -1.7 1.6) (end -2.6 1.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp c82f4f53-d292-4db8-b155-cb5f00dcdf4c)) (fp_line (start -1.35 3.75) (end -1 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 94cb536a-a525-476a-b1aa-746a087aa85d)) (fp_line (start -1 2.75) (end -0.9 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d90b517b-191c-402a-aa79-bab0856639a8)) (fp_line (start -0.9 2.75) (end -0.55 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7022014a-9b90-45af-8e16-90c06781145a)) (fp_line (start 0 1.6) (end 0 0) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 02ef5e7e-c4c5-4c5b-8f23-6e8b20bc043d)) (fp_line (start 0.5 3.5) (end 0.5 3) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e1c509cc-c143-4792-a2ca-bb267480be94)) (fp_line (start 0.75 3.75) (end 1.25 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cf879db2-2b2d-4cf3-9c7d-3cfff460e530)) (fp_line (start 1.25 2.75) (end 0.75 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 94c0bff7-9d3c-4d6f-a7be-7774c159dfd3)) (fp_line (start 1.25 4.25) (end 1.25 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5e4a9965-4320-454e-ba9c-fbe6116b8e52)) (fp_line (start 1.6 1.6) (end 1.6 0) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 26ddeb56-6423-4b2f-9118-74781927c8af)) (fp_line (start 1.85 3.25) (end 2.6 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 85402bfb-f62e-4b1c-b4b1-5e209e30a0eb)) (fp_line (start 1.85 3.5) (end 1.85 3) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 740ee89b-a907-4117-a67a-1db1ae8bc349)) (fp_line (start 2.1 2.75) (end 2.55 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f2da5a4a-8eee-4262-92d3-cf3a09aeca61)) (fp_line (start 2.1 3.75) (end 2.35 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 666cb05d-00bb-40c4-8df3-0be1278d477a)) (fp_line (start 2.6 3.5) (end 2.6 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e3f0ffbb-aef1-4ddc-8ef4-670067b559d0)) (fp_line (start 2.7 1.6) (end 2.7 -0.8) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 79a76e04-3e0c-4881-8669-781650add30b)) (fp_line (start 3.05 3.75) (end 3.4 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 91078fea-22b5-4ff9-961f-67452cc8bd3d)) (fp_line (start 3.4 2.75) (end 3.5 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp de0b396d-e0c6-4783-9525-bdc26acefa1e)) (fp_line (start 3.5 2.75) (end 3.85 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f1ead13d-cd94-44f2-9964-9e24909ce68a)) (fp_line (start 3.7 0.1) (end 2.7 1.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 407a8702-7ed0-4720-a664-058261e12d18)) (fp_line (start 4.26 -3.18) (end 8.66 -2.08) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp d8757225-43c3-41ba-b06a-826d60312735)) (fp_line (start 4.7 -0.8) (end 4.7 1.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 340cf9f3-57f6-418e-905e-ef0bf499a1df)) (fp_line (start 4.7 1.6) (end 3.7 0.1) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp c78e2183-8684-4e08-a7e7-1040564d997e)) (fp_line (start 4.8 3.1) (end 8.02 3.1) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp c5a74d1a-e2f4-4a04-bc5c-6133ec2f6dd4)) (fp_line (start 5.8 1.6) (end 5.8 -0.8) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 2de8d031-45d8-48d3-84c6-c74c3bb18528)) (fp_line (start 6.8 0.1) (end 5.8 1.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 74c3ee21-7261-41aa-9f28-e01a8ba9bfbd)) (fp_line (start 7.8 -0.8) (end 7.8 1.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp cecf01e7-65ac-4b05-b923-af72a117069b)) (fp_line (start 7.8 1.6) (end 6.8 0.1) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 2637bc08-b2a1-414c-a57d-7eafb7a8ffa7)) (fp_line (start 9.01 2.22) (end 9.41 -0.98) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp e94140bb-c164-4cdc-ac58-5a3515136ade)) (fp_arc (start -9.41 -0.98) (mid -9.243767 -1.672342) (end -8.66 -2.08) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 00ec13c1-93dc-4a1a-ae23-26921ad5e8f0)) (fp_arc (start -8.02 3.1) (mid -8.681124 2.84689) (end -9.01 2.22) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 47fac994-1d51-47d6-83c2-71de3d353d45)) (fp_arc (start -8 0.2) (mid -7.382819 -0.724075) (end -6.293 -0.507) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp faa45ad6-47b6-43a4-a854-8d8165f0e2f1)) (fp_arc (start -6.293 1.307) (mid -7.382819 1.524075) (end -8 0.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 0e4c3965-91ba-427a-af1a-1770f63c446e)) (fp_arc (start -3.5 3.75) (mid -3.75 3.5) (end -3.5 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 43096f3a-bca2-4a60-a01f-9f5fd1c0b496)) (fp_arc (start -3.3 2.75) (mid -3.05 3) (end -3.3 3.25) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bde6324c-d201-40e9-8abc-8aef1636f81d)) (fp_arc (start -2.55 3) (mid -2.477 2.823) (end -2.3 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8cac193c-d58d-4ac5-b9fb-bd939bcef089)) (fp_arc (start -2.3 3.75) (mid -2.477 3.677) (end -2.55 3.5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 8d33cf27-3674-49f9-b54a-e3fdf410bd67)) (fp_arc (start -1.8 3.5) (mid -1.873 3.677) (end -2.05 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1f32663e-7f12-4b74-83e3-1c1952a70b6f)) (fp_arc (start -1.7 0.2) (mid -1 0.9) (end -1.7 1.6) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 800ae13f-6d58-4d49-be0b-d002b0219313)) (fp_arc (start 0 0) (mid 0.8 -0.8) (end 1.6 0) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 66d7f51b-8548-4004-999b-948a169c1b07)) (fp_arc (start 0.5 3) (mid 0.573 2.823) (end 0.75 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ed65cbdd-0ecd-4560-97d6-dcaf10f9b37e)) (fp_arc (start 0.75 3.75) (mid 0.573 3.677) (end 0.5 3.5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 1cd48711-6edc-4c6f-8365-f14a943ada9d)) (fp_arc (start 1.85 3) (mid 1.923 2.823) (end 2.1 2.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp eb1044e1-99f4-43d9-9cab-3a8af7561b6e)) (fp_arc (start 2.1 3.75) (mid 1.923 3.677) (end 1.85 3.5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 7e27ebc8-dbb6-4e39-bf11-2d4d717946f9)) (fp_arc (start 2.6 3.5) (mid 2.527 3.677) (end 2.35 3.75) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 82acb8dc-1463-4243-9815-954bc98e9df6)) (fp_arc (start 8.66 -2.08) (mid 9.243771 -1.672343) (end 9.41 -0.98) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 1d433726-92a7-4f0d-9b49-8e492bb780a7)) (fp_arc (start 9.01 2.22) (mid 8.681123 2.846887) (end 8.02 3.1) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 59eb27cd-6479-4448-ba8b-c4c748632bbc)) (fp_circle (center -0.1 2.8) (end 0.08 2.8) (stroke (width 0) (type solid)) (fill solid) (layer "B.SilkS") (tstamp 7c311569-73cc-41b4-8177-9bcb416ad31e)) ) (footprint "footprints:PinHeader_1x3_P2.54mm" (layer "B.Cu") (tstamp e81fe644-2896-4d21-86a7-fe5e695bfcae) (at 220.45 56.29 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/f87eb064-1cab-4c81-931f-96ede13e01a7") (attr through_hole board_only exclude_from_pos_files allow_missing_courtyard) (fp_text reference "J3" (at 0 4.74) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp c0e6421e-1736-4d66-9138-2248877403a9) ) (fp_text value "PinHeader_1x3" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp d07051ca-e487-4b58-8e9e-7d3bfba83fb2) ) (fp_line (start -1.27 1.27) (end 1.27 1.27) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 08d67065-2364-4fce-9bdd-cf893050c526)) (fp_poly (pts (arc (start -1.27 -3.302) (mid -1.12121 -3.66121) (end -0.762 -3.81)) (arc (start 0.762 -3.81) (mid 1.12121 -3.66121) (end 1.27 -3.302)) (arc (start 1.27 3.302) (mid 1.12121 3.66121) (end 0.762 3.81)) (arc (start -0.762 3.81) (mid -1.12121 3.66121) (end -1.27 3.302)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp e675c603-3ada-4ca2-bc8a-626586893d79)) (fp_poly (pts (xy 1.27 3.81) (xy 1.27 -3.81) (xy -1.27 -3.81) (xy -1.27 3.175) (xy -0.635 3.81) ) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp 74b0acfe-2df6-48db-8dc2-a11ec949a572)) (pad "1" thru_hole roundrect (at 0 2.54 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (net 16 "Net-(E1-PadA)") (pintype "passive") (tstamp cb2e6546-16a9-456d-b42e-7f772105abec)) (pad "2" thru_hole circle (at 0 0 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 17 "Net-(E1-PadC)") (pintype "passive") (tstamp fd2c025b-02a9-4055-8274-417ef030f0fd)) (pad "3" thru_hole circle (at 0 -2.54 180) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (net 18 "Net-(E1-PadB)") (pintype "passive") (tstamp f9841c82-f40c-4602-8b48-ff8002c034a1)) ) (footprint "footprints:Switch_MX" locked (layer "B.Cu") (tstamp eb347f18-c691-4640-8a73-85344065ad1e) (at 120 136 180) (property "Sheetfile" "chrumm.kicad_sch") (property "Sheetname" "") (path "/8c1ebe62-32c9-475a-852a-126ad80116fa") (attr through_hole allow_missing_courtyard) (fp_text reference "S53" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 82c4f2eb-4b4d-4200-ad8a-cdba990393fc) ) (fp_text value "Switch" (at 0 0) (layer "B.Fab") hide (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp f1f47243-91fc-4bd9-995b-0a52d9168927) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 65ea0e0a-0252-4dac-8512-d1781021dfab) ) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4c7146cb-2e13-468b-85ed-df04dfa79ea0)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 5236ca0c-35cb-41f9-a7b5-2d16fdd8cea6)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 42646e3d-cfcc-4914-9e87-9ad5e30081a8)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cd77fe01-11f6-42ea-ac6d-1ab85c74eed5)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e4066c9e-bd59-4a27-be44-c8bd282019bd)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4227db5b-2d61-4a65-aefe-fba79eba62b2)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 08e28d8a-3056-4b44-add6-b81c362f57c0)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 53aacc8e-c657-4f42-9938-c16eb5da541e)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 4129b216-7f3e-4db2-a4fa-94835de1599d)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 862cb380-5c83-4343-9571-cfce3f22b42f)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ba25d021-d2d3-4d13-aa0b-0a91a5dc9eaf)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp a9698e98-b7e5-4a3b-9120-72b811e51c7e)) (fp_line (start -5.7 -1.1) (end -5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a844fd40-f1f1-4737-831e-439c3f3263e9)) (fp_line (start -5.7 5) (end -5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e8e1f869-ef28-4e8d-951f-dea1ac08fdb0)) (fp_line (start -5 -5.7) (end 5 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b15d4277-c449-4dbd-b0fd-1a5cfe3d4a86)) (fp_line (start -5 5.7) (end -4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 964ef821-07af-414e-84aa-48c8c4f5b60b)) (fp_line (start -1.05 5.7) (end 1.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 25c4f341-059d-44cb-a4d9-999cbc516a37)) (fp_line (start 5 5.7) (end 4.05 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1e7d0890-316d-4f63-9ce9-55907245c2a0)) (fp_line (start 5.7 -1.1) (end 5.7 -5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 71406b46-c571-4e1a-a6a8-999d30bde64b)) (fp_line (start 5.7 5) (end 5.7 1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1c6c1636-70c1-4911-b82d-390358386b07)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 9c8d09b7-141e-41fd-990a-c5ec0d8dc900)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 978d15d9-6367-44ab-8b9b-fbd219854e64)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 577e1db4-66de-425c-8ecd-645405b2af80)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c52e40e9-2875-49ab-a025-25d62684f253)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp c3cd3aae-abf5-4299-a37f-2e7cfd6822a5)) (fp_rect (start -7 7) (end 7 -7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp ea468952-4a96-47dd-8307-199263fb96d8)) (pad "" np_thru_hole circle locked (at -5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp a548978d-c1b1-4c1d-baeb-20f9dc4e11c6)) (pad "" np_thru_hole circle locked (at 0 0 180) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp d967a708-63fb-4696-b1ec-fbab89893e43)) (pad "" np_thru_hole circle locked (at 5.08 0 180) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp 7d7602b9-baee-4473-8c72-0ac769285e4c)) (pad "1" thru_hole oval locked (at 2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 3e4c137c-1323-4075-aa63-d99afec63e59)) (pad "1" thru_hole oval locked (at 3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 8 "/col1") (pintype "passive") (tstamp 14dd2deb-2ace-4813-8fb9-2c37dcc71b10)) (pad "2" thru_hole oval locked (at -3.81 2.54 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 50 "Net-(D53-A)") (pintype "passive") (tstamp d53ba4b5-bfb7-4ad7-b46e-2e944d0a6162)) (pad "2" thru_hole oval locked (at -2.54 5.08 180) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (net 50 "Net-(D53-A)") (pintype "passive") (tstamp 962eb57c-00f0-4d49-82dd-ce1ac9aa9701)) ) (gr_arc (start 174.059723 144.2184) (mid 174.83912 144.310648) (end 175.599809 144.503838) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 017fcc33-284b-44af-8b82-3bc8c283a4c0)) (gr_line (start 127.370959 104.221874) (end 132.204041 101.431493) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 03db8a8a-e38f-400b-9e4e-b2993fe9aa0d)) (gr_arc (start 205.9 63.5) (mid 206.9 62.5) (end 207.9 63.5) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 0628c359-f847-49b6-b62e-7b7ea688e0f8)) (gr_line (start 212.909023 162.1) (end 213.089141 162.1) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 0724f874-cb07-4156-b063-b88c293f0c8c)) (gr_line (start 210.3 85.5) (end 210.3 86.9) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 0916cb33-9073-4d11-8543-a8466bd10ef1)) (gr_line (start 133.3 48.2) (end 152.502944 48.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 0b8d981c-6dc6-414b-b682-1384d4c91fc4)) (gr_line (start 205.9 83.6) (end 205.9 118) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 0c0cd910-ccaf-4a31-884e-4ea4e9c9eadc)) (gr_line (start 127.870959 105.087899) (end 132.704041 102.297518) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 0d7d79d0-a0aa-434b-8279-8e8bef29267a)) (gr_line (start 127.870959 67.087899) (end 132.704041 64.297518) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 0ec20cbf-33b3-4df8-a483-beb3e0177404)) (gr_arc (start 215.8 72.6) (mid 214.8 71.6) (end 215.8 70.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 1104b526-a26f-4754-9e16-7a80c6aee699)) (gr_arc (start 221.1 51.4) (mid 221.948528 51.751472) (end 222.3 52.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 1199b036-4558-4a6f-aa1c-39675d170fcf)) (gr_arc (start 132.204041 101.431493) (mid 134.645998 100.420001) (end 137.266541 100.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 1309a1f3-ae14-46dc-912b-b77d5a1cf0a4)) (gr_line (start 182.45 119.2) (end 204.7 119.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 14734232-68c1-453f-b2f0-1693f51c54a1)) (gr_line (start 218.403442 100.315384) (end 222.092509 108.601165) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 1475a8af-cf22-4559-b53a-399f352c9813)) (gr_line (start 130.1 54.2) (end 130.1 61.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 15cb930d-2542-40d2-b6fe-6103377485e9)) (gr_arc (start 207.9 118) (mid 206.962742 120.262742) (end 204.7 121.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 17affbeb-14cf-4d14-9a9c-068f500da6d4)) (gr_line (start 216.75 68.2) (end 218.15 68.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 1925e0e8-4990-4647-a512-42f16e910535)) (gr_line (start 215.8 70.6) (end 221.1 70.6) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 1a3f94db-cac9-4d07-bbb7-f5fd81b1dc26)) (gr_arc (start 212.909023 162.1) (mid 212.229183 161.992331) (end 211.615896 161.679837) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 1c949cb1-eaa3-44bb-9726-3d3fe4d6f6b9)) (gr_line (start 129.495959 107.902482) (end 134.329041 105.112101) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 208ad869-6638-4d50-865f-d1ccb2602f24)) (gr_arc (start 216.75 69.6) (mid 216.05 68.9) (end 216.75 68.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 23bdf048-fcfc-4236-adff-d5fec035bf32)) (gr_line (start 124.933459 104.875) (end 115.05 104.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 24050dc8-5d70-4909-ae55-c71fb10dd5fe)) (gr_line (start 127.370959 66.221874) (end 132.204041 63.431493) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 247e36ca-d776-4da9-831c-0206b1cbfeea)) (gr_line (start 124.933459 66.875) (end 115.05 66.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 28c2e628-91e8-466e-ac81-f2601b37e5a8)) (gr_arc (start 93.6 54.2) (mid 93.951472 53.351472) (end 94.8 53) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 2973df0d-be13-4825-95ff-69454be5f4a0)) (gr_line (start 222.3 73.8) (end 222.3 96.487672) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 2df801da-be22-4ff3-ab7b-d828535f0578)) (gr_arc (start 90.4 53) (mid 91.248528 53.351472) (end 91.6 54.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 2ed4c0e0-f6a7-408e-a2be-5fd1d02c47ff)) (gr_line (start 205.9 59) (end 205.9 51.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 33839cb9-5597-47b5-8c78-3856fc6c9f25)) (gr_arc (start 208.9 85.5) (mid 209.6 84.8) (end 210.3 85.5) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 344b3bdf-4620-49db-922f-a7a64106cdfe)) (gr_line (start 198.755846 152.336464) (end 211.615896 161.679837) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 348e4b2b-e394-452c-b997-96ae2dda0335)) (gr_line (start 137.266541 101.075) (end 147.15 101.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 356f4bb8-1689-4319-92d1-daf75292bf31)) (gr_line (start 185.502944 48.2) (end 169.897056 48.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 389a2b48-5b89-460a-830a-810ea64d0c4e)) (gr_arc (start 129.495959 107.902482) (mid 127.295183 108.814073) (end 124.933459 109.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 39d85f8e-776b-4552-84e0-9cda2e17b5ed)) (gr_arc (start 222.3 69.4) (mid 221.948528 70.248528) (end 221.1 70.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 3bb9be18-b179-478c-8e04-c9a185fc7ee6)) (gr_line (start 137.266541 104.325) (end 147.15 104.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 3cd134be-d001-4fcf-95f0-fb19098988a0)) (gr_line (start 91.6 72.2) (end 91.6 104.8) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 3fa16066-c915-40d8-b60b-e6fdb126a393)) (gr_line (start 175.599809 144.503838) (end 197.083237 151.484227) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 404d4613-e7a4-4ff3-90c9-6bd96f83f4d3)) (gr_line (start 124.933459 72.125) (end 115.05 72.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 42a92ce5-4858-4c1e-bd44-cf35b6a58370)) (gr_arc (start 115.05 67.875) (mid 114.55 67.375) (end 115.05 66.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 45c75271-5c2f-485d-af53-ef08038faafc)) (gr_arc (start 129.995959 70.768507) (mid 127.554001 71.779989) (end 124.933459 72.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 45f13a58-2ab1-47a1-83e3-941cb002c8b6)) (gr_line (start 186.351472 48.551472) (end 188.048528 50.248528) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 4ba655a7-f4cf-4032-998c-8a55248e84c5)) (gr_line (start 91.6 130.135) (end 91.6 110.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 4f67feac-4ac4-4c60-bd64-0c84e002ac5a)) (gr_arc (start 128.9 53) (mid 129.748528 53.351472) (end 130.1 54.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 51cb972c-049a-4894-baa5-989d44293e34)) (gr_arc (start 197.083237 151.484227) (mid 197.953078 151.844527) (end 198.755846 152.336464) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 51df60e7-62a2-4fde-93e2-54d7c9df0b72)) (gr_line (start 94.8 53) (end 128.9 53) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 52c2fbb4-830e-4e13-ba45-5c9086f118a1)) (gr_arc (start 91.6 72.2) (mid 92.6 71.2) (end 93.6 72.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 532875c8-f454-4342-8911-c544b8d816c3)) (gr_line (start 182.45 121.2) (end 204.7 121.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5622b61d-4e4d-413a-8200-56cb990d2b99)) (gr_line (start 75.3 141.8) (end 75.3 54.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 597bcf7a-e7ae-4d9b-a6d5-e66963fdafd9)) (gr_arc (start 129.495959 69.902482) (mid 127.295182 70.814063) (end 124.933459 71.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5a0773d3-6d8b-4d92-a39f-39ed8edfa6e5)) (gr_arc (start 115.05 72.125) (mid 114.55 71.625) (end 115.05 71.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5a3968d4-a2e3-41fa-820d-71a97393bb13)) (gr_line (start 177.95 119.2) (end 133.3 119.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 5a6b0790-9481-4827-8c28-9f2a4457400b)) (gr_arc (start 218.15 52.4) (mid 218.85 53.1) (end 218.15 53.8) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 5af7de87-4d61-48cc-b60a-9f5e8e645518)) (gr_line (start 129.995959 70.768507) (end 134.829041 67.978126) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5b533b8e-d55b-4b5f-be21-ef4a00d1ec14)) (gr_arc (start 182.45 121.2) (mid 181.45 120.2) (end 182.45 119.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5d390f3a-e611-45ee-8e36-ebc3cf7701fa)) (gr_arc (start 210.4 90.4) (mid 209.9 89.9) (end 210.4 89.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5d453a21-1a29-432c-8f2d-8009193e25a0)) (gr_arc (start 91.6 110.2) (mid 92.6 109.2) (end 93.6 110.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5ec9cc7b-ef34-49b2-b927-7bec49e67a38)) (gr_line (start 130.1 72.8) (end 130.1 99.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 5fddd6bc-7ee7-4063-9d36-f61690e3f4f5)) (gr_line (start 208.9 85.5) (end 208.9 86.9) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 62a94b4a-d4e9-4f45-ab19-58d2e3ba17ae)) (gr_arc (start 210.9 90.4) (mid 212.196257 90.694503) (end 213.238014 91.520189) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 62e90a17-42d6-4d1c-8795-3438110b5415)) (gr_arc (start 210.3 86.9) (mid 209.6 87.6) (end 208.9 86.9) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 65739732-85bd-44e7-b68f-cc4416f8237d)) (gr_line (start 214.017352 90.893585) (end 215.531669 92.777016) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 66d767e7-6215-4eb2-833b-4b202e2f08fc)) (gr_line (start 129.995959 108.768507) (end 134.829041 105.978126) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6886b34c-b3bf-472d-ab5e-d5954cfe6695)) (gr_arc (start 91.6 141.8) (mid 91.248528 142.648528) (end 90.4 143) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6a90ba49-145a-4d7f-8c58-72657478bb4d)) (gr_arc (start 177.95 119.2) (mid 178.95 120.2) (end 177.95 121.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6c32a0c4-8358-4584-8452-f2fb8d61bb90)) (gr_line (start 207.9 59) (end 207.9 52.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6c821720-b955-47da-af6c-c3e4a3b09d7b)) (gr_line (start 205.9 79.1) (end 205.9 63.5) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6d790456-b243-4efb-8cbd-d47c57a3dce3)) (gr_arc (start 205.9 118) (mid 205.548528 118.848528) (end 204.7 119.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6d96425a-b9cd-4787-b98c-38c464cf0ade)) (gr_arc (start 205.9 83.6) (mid 206.9 82.6) (end 207.9 83.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6de095bd-c0a7-4a5e-9b81-a9effc473bba)) (gr_arc (start 218.15 68.2) (mid 218.85 68.9) (end 218.15 69.6) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 6f4bb714-1416-4dc7-8397-70a65493561b)) (gr_line (start 124.933459 109.125) (end 115.05 109.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 719a7f6c-245a-4c55-a0f0-3c1a92deec55)) (gr_arc (start 209.1 70.6) (mid 208.251472 70.248528) (end 207.9 69.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 71a57ec7-903b-445c-a575-2a613e5c6169)) (gr_arc (start 222.3 96.487672) (mid 222.106415 97.14125) (end 221.588084 97.583926) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 7222d296-0a21-4861-9fa8-7b2370c50fb4)) (gr_arc (start 207.9 52.6) (mid 208.251472 51.751472) (end 209.1 51.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 747139b4-1c84-456d-89cc-38472a33af77)) (gr_line (start 209.1 72.6) (end 211.3 72.6) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 74bd6745-2912-4327-8cd1-33e53ab27bef)) (gr_arc (start 93.6 130.135) (mid 92.6 131.135) (end 91.6 130.135) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 75702bbe-aa7c-4bbc-9455-d7083691ca05)) (gr_arc (start 134.829041 105.978126) (mid 136.004799 105.491121) (end 137.266541 105.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 76cb222e-3a38-480e-bfae-a8b7db05a3aa)) (gr_arc (start 147.15 62.075) (mid 147.65 62.575) (end 147.15 63.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 7846d641-3bf2-40d5-85a0-31b0ba5524c4)) (gr_line (start 207.9 79.1) (end 207.9 73.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 78ee49c7-c708-418d-9ab0-26cc17fce175)) (gr_line (start 215.8 72.6) (end 221.1 72.6) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 79df4a74-c96b-4897-8d1a-8d6a6fe12c74)) (gr_line (start 210.9 89.4) (end 210.4 89.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 7b652e7d-01c5-4028-add4-7625301d00a3)) (gr_arc (start 169.897056 48.2) (mid 169.437836 48.108655) (end 169.048528 47.848528) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 7b78add9-7f95-452d-a6b1-adce60a2ae79)) (gr_arc (start 132.704041 64.297518) (mid 134.904818 63.385937) (end 137.266541 63.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 7d22d865-4169-4ea4-82fa-1172d8981ad5)) (gr_line (start 213.238014 91.520189) (end 214.752331 93.40362) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 806d4f5f-393d-4b92-8d34-30d47db3771c)) (gr_arc (start 134.829041 67.978126) (mid 136.004799 67.491121) (end 137.266541 67.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 83344326-a9ad-4132-badc-3fcf128fde55)) (gr_arc (start 214.868978 161.193128) (mid 214.087923 161.860229) (end 213.089141 162.1) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 85443a93-0118-41f0-b507-9cfaf7f9c6f0)) (gr_line (start 93.6 66.8) (end 93.6 54.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 8639a0d8-2358-4f59-ad11-67b705cf8b88)) (gr_arc (start 93.6 66.8) (mid 92.6 67.8) (end 91.6 66.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 8a115d2c-e3fc-43d4-856b-53649d1a172a)) (gr_line (start 132.1 110.8) (end 132.1 118) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 8bc73efb-21d7-4401-ba14-459714fc3824)) (gr_line (start 76.5 143) (end 90.4 143) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 8df67260-c182-4d97-a9d1-404a7a4755b3)) (gr_line (start 207.9 83.6) (end 207.9 118) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 904a3569-24b5-46d5-8bc1-621819fc3fc7)) (gr_line (start 137.266541 63.075) (end 147.15 63.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 90a5f037-7084-4238-9ef0-83b33b866f25)) (gr_line (start 124.933459 110.125) (end 115.05 110.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 915bce51-af85-4b42-a5e1-a4a37fb640e6)) (gr_line (start 132.1 99.4) (end 132.1 72.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 91f4845f-0ea0-4a25-9c95-e67875b6c84f)) (gr_line (start 222.3 52.6) (end 222.3 69.4) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 927561c0-0ef5-4942-a767-d90173751f34)) (gr_arc (start 188.897056 50.6) (mid 188.437836 50.508655) (end 188.048528 50.248528) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 92c6d45e-8a46-4f3f-a541-0ebaf2944d35)) (gr_arc (start 204.7 50.6) (mid 205.548528 50.951472) (end 205.9 51.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 93fa6e41-f113-4f2e-a42f-c2bfa21bc7a5)) (gr_line (start 91.6 135.535) (end 91.6 141.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 94a06528-190b-4953-9cd3-9f03e6d6c9b4)) (gr_arc (start 133.3 119.2) (mid 132.451472 118.848528) (end 132.1 118) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 99f4de47-8973-4b9f-8c83-77de0caae0a6)) (gr_arc (start 115.05 105.875) (mid 114.55 105.375) (end 115.05 104.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 9a67cf9c-13b5-4f17-96dc-682a04124df2)) (gr_line (start 93.6 141.8) (end 93.6 135.535) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 9c2d1959-380e-4680-83b6-81dd63e07537)) (gr_line (start 124.933459 67.875) (end 115.05 67.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 9d808da5-eaf7-4460-90cc-839b95cd39da)) (gr_line (start 214.868978 161.193128) (end 221.841641 151.596082) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 9e9b8e0a-6cfe-470b-9c04-c697f506b9ba)) (gr_arc (start 130.1 72.8) (mid 131.1 71.8) (end 132.1 72.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 9efab15f-bf7c-4460-b99e-1b99ad015ed5)) (gr_arc (start 222.092509 108.601165) (mid 222.247554 109.078345) (end 222.3 109.577333) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 9f71bac1-0d55-41b3-abf5-45b08c740e28)) (gr_arc (start 134.329041 67.112101) (mid 135.74598 66.525196) (end 137.266541 66.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a3ed9bee-2021-4123-9024-a9f902049e75)) (gr_line (start 129.495959 69.902482) (end 134.329041 67.112101) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a429a412-5731-499b-a06c-bc8e5c9f25ed)) (gr_line (start 219.011613 98.731045) (end 221.588084 97.583926) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a6970abd-d9ab-4a11-b306-a689a9edf2cd)) (gr_arc (start 222.3 150.185397) (mid 222.182536 150.927038) (end 221.841641 151.596082) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a7049a4a-40b6-4217-aa27-1de3ed43ad3d)) (gr_arc (start 215.531669 92.777016) (mid 215.455302 93.479987) (end 214.752331 93.40362) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a75f89fa-5ca0-4347-b503-c78b1a6cb547)) (gr_arc (start 127.870959 67.087899) (mid 126.45402 67.674804) (end 124.933459 67.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a8f53d8e-2d08-4705-9580-9ab6276c09c1)) (gr_arc (start 93.6 104.8) (mid 92.6 105.8) (end 91.6 104.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp aa09b4e0-fac8-41c1-8fc7-5276d43d8a01)) (gr_line (start 150.811266 143) (end 174.059723 144.2184) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp ab07de37-2b0b-4db0-85e6-fec12fdd8635)) (gr_arc (start 221.1 72.6) (mid 221.948528 72.951472) (end 222.3 73.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp ab3847f5-6934-41d2-92fb-9eadef8921c6)) (gr_line (start 124.933459 105.875) (end 115.05 105.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp ac6bc76b-e448-4a66-8e92-9610ece99f4d)) (gr_arc (start 210.9 89.4) (mid 212.628343 89.79267) (end 214.017352 90.893585) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp af43c912-a116-4e6d-82c8-7c6dd4be069c)) (gr_line (start 76.5 53) (end 90.4 53) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp b1f5d23a-1ebb-4986-bad7-cf147cf0d5a0)) (gr_arc (start 76.5 143) (mid 75.651472 142.648528) (end 75.3 141.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b1fce0c1-ddfb-4c8a-9601-befaee522b14)) (gr_arc (start 153.351472 47.848528) (mid 152.962167 48.10867) (end 152.502944 48.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b2ac6d73-c763-4bc7-8071-53491a671420)) (gr_line (start 216.75 69.6) (end 218.15 69.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b88bd121-c8c0-47c1-8147-b0cad9c83f36)) (gr_line (start 137.266541 105.325) (end 147.15 105.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b97b072c-2dd7-4527-ab85-a0bd2c498545)) (gr_arc (start 154.748528 46.451472) (mid 155.137833 46.19133) (end 155.597056 46.1) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b97ebc74-c2c3-49cc-9d0a-3113f130a214)) (gr_arc (start 132.1 61.4) (mid 131.1 62.4) (end 130.1 61.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp bd942df0-1335-49c5-bfc6-372f10469d91)) (gr_arc (start 218.403442 100.315384) (mid 218.3794 99.397258) (end 219.011613 98.731045) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp bda96c22-05f6-43a4-a5a8-c2e0a17cfed7)) (gr_arc (start 75.3 54.2) (mid 75.651472 53.351472) (end 76.5 53) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp bf8ef12e-7e67-4995-9c86-9ae78933b4fd)) (gr_arc (start 211.3 70.6) (mid 212.3 71.6) (end 211.3 72.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c69eab77-164d-4512-8828-9aeb8dfebc0a)) (gr_arc (start 115.05 110.125) (mid 114.55 109.625) (end 115.05 109.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c6d73587-34c6-4f7b-abd7-ff2f3f969782)) (gr_arc (start 147.15 66.325) (mid 147.65 66.825) (end 147.15 67.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c7559f9e-3e95-4570-af35-da7b2be87ad1)) (gr_line (start 216.75 53.8) (end 218.15 53.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c8d27b22-579c-4e08-a8af-8e894246caf8)) (gr_line (start 91.6 54.2) (end 91.6 66.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c9fa0322-4b86-4b97-a11b-ce2443ebbba2)) (gr_arc (start 133.3 121.2) (mid 131.037258 120.262742) (end 130.1 118) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp ca242cc6-e8a3-4088-a93f-e7d22836f978)) (gr_line (start 209.1 70.6) (end 211.3 70.6) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp cab9f7ab-9165-458b-9fd0-581804c521bc)) (gr_arc (start 94.8 143) (mid 93.951472 142.648528) (end 93.6 141.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp cf2e6c8b-cb1c-4136-9741-7ecf66fa0dd5)) (gr_line (start 137.266541 66.325) (end 147.15 66.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp cf4f6f48-256d-4123-be82-893be9865386)) (gr_line (start 137.266541 62.075) (end 147.15 62.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp cfb3d7e5-9278-48b8-9cc4-f72d117ec9c7)) (gr_line (start 130.1 118) (end 130.1 110.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp d334b762-110d-4507-918a-32995a30a92f)) (gr_line (start 132.1 61.4) (end 132.1 49.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp d3b42f58-c2bd-4783-b86c-5fec6563a789)) (gr_line (start 209.1 51.4) (end 221.1 51.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp d74565ec-5ebb-4311-bf39-7054590f4ffa)) (gr_line (start 93.6 104.8) (end 93.6 72.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp d825469b-c444-4dcb-b9bf-ffb30610c6c5)) (gr_line (start 167.651472 46.451472) (end 169.048528 47.848528) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp d84f6311-45bf-4da7-9842-9fd8261e8340)) (gr_line (start 155.597056 46.1) (end 166.802944 46.1) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp d936baba-d43a-4602-a416-0dde9e0392f8)) (gr_arc (start 127.870959 105.087899) (mid 126.454021 105.674814) (end 124.933459 105.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp dcb8dba9-3c48-4087-9751-7158be165a14)) (gr_arc (start 207.9 79.1) (mid 206.9 80.1) (end 205.9 79.1) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp dec529a7-8f9e-455b-85dc-2753fd5823a7)) (gr_arc (start 185.502944 48.2) (mid 185.962164 48.291345) (end 186.351472 48.551472) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e03709e8-2ed1-454f-af59-54a46629793f)) (gr_arc (start 147.15 100.075) (mid 147.65 100.575) (end 147.15 101.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e05bd60b-c140-41bb-accb-37a5b9440a82)) (gr_line (start 216.75 52.4) (end 218.15 52.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e14b6da6-8f0c-4ff4-b207-4ba89d6b901e)) (gr_arc (start 132.1 49.4) (mid 132.451472 48.551472) (end 133.3 48.2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e40f9126-4ddf-49a9-90f4-598419549cef)) (gr_arc (start 127.370959 66.221874) (mid 126.195202 66.708889) (end 124.933459 66.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e79199c3-3222-46de-ba64-f5332d4b04f1)) (gr_line (start 177.95 121.2) (end 133.3 121.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp e86881c1-575c-49f3-8bc0-535df8f580fd)) (gr_arc (start 166.802944 46.1) (mid 167.262155 46.191359) (end 167.651472 46.451472) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e872420a-6a72-4109-82da-8b8c5b2165bf)) (gr_arc (start 127.370959 104.221874) (mid 126.195202 104.708889) (end 124.933459 104.875) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp e96b7c9d-6f36-4ccc-8ea5-f46f0968b3e6)) (gr_line (start 93.6 130.135) (end 93.6 110.2) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp ea1233c3-d816-4ab4-b27e-448e6e4682c8)) (gr_line (start 210.9 90.4) (end 210.4 90.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp efaef341-599a-4669-b108-0d20cf0ea26f)) (gr_line (start 153.351472 47.848528) (end 154.748528 46.451472) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp efbfd889-154d-437c-afd2-5ffdf4dd41eb)) (gr_line (start 204.7 50.6) (end 188.897056 50.6) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp f1a79c4d-06fd-478f-936e-f9fd03b92c80)) (gr_arc (start 132.204041 63.431493) (mid 134.645999 62.420011) (end 137.266541 62.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f252a448-c2cc-40da-be43-71545a8e8433)) (gr_arc (start 91.6 135.535) (mid 92.6 134.535) (end 93.6 135.535) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f2648745-64a6-4481-af67-8d61141cefd8)) (gr_arc (start 130.1 110.8) (mid 131.1 109.8) (end 132.1 110.8) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f30d394b-78c5-41a2-9ccd-088d231a887d)) (gr_arc (start 207.9 59) (mid 206.9 60) (end 205.9 59) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f355d238-2e14-4901-98e9-60fb8ff26464)) (gr_line (start 124.933459 71.125) (end 115.05 71.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f4d36837-5c11-435f-a59d-2544efb575bd)) (gr_line (start 137.266541 100.075) (end 147.15 100.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f694199e-0eb7-4639-95d2-b897fb85bd49)) (gr_arc (start 132.704041 102.297518) (mid 134.904817 101.385927) (end 137.266541 101.075) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f6f7f55d-814f-4382-baff-a7f97c5b630b)) (gr_line (start 207.9 69.4) (end 207.9 63.5) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f871f200-891f-4936-98a2-f422a9a47a4d)) (gr_arc (start 216.75 53.8) (mid 216.05 53.1) (end 216.75 52.4) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp f95dd782-d621-494d-bc19-ef7585394e50)) (gr_arc (start 134.329041 105.112101) (mid 135.745979 104.525186) (end 137.266541 104.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fb387b4e-24f3-45de-96af-78e2b3ea22eb)) (gr_line (start 222.3 109.577333) (end 222.3 150.185397) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fca7f619-e07f-4a95-bed4-b764b48845a4)) (gr_arc (start 129.995959 108.768507) (mid 127.554002 109.779999) (end 124.933459 110.125) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fcbed798-2bde-4790-938e-eefbace433a0)) (gr_arc (start 147.15 104.325) (mid 147.65 104.825) (end 147.15 105.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fd29d080-1ebb-40a6-9245-88c022a21b15)) (gr_line (start 137.266541 67.325) (end 147.15 67.325) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fd3d5663-44c1-46c2-9158-d6a924675c51)) (gr_arc (start 132.1 99.4) (mid 131.1 100.4) (end 130.1 99.4) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fe8257eb-1865-4135-85d0-8ea33105f251)) (gr_line (start 94.8 143) (end 150.811266 143) (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp fec936eb-89e1-4d3b-abc2-4f8de83a0bce)) (gr_arc (start 207.9 73.8) (mid 208.251472 72.951472) (end 209.1 72.6) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fedf6cd6-8655-40e7-a085-d520fba47e7c)) (gr_text "28" (at 142.2 97.8) (layer "B.SilkS") (tstamp 0269570c-ca31-46f9-a6c8-903bde00f3cf) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "30" (at 180.2 97.8) (layer "B.SilkS") (tstamp 04a44dd0-6990-4acf-b3fd-ae16bab663e2) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "1" (at 120 64.6) (layer "B.SilkS") (tstamp 091c52f1-790a-4dd5-8c7d-a4dd43ee38bb) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "2" (at 142.2 59.8) (layer "B.SilkS") (tstamp 0fbbf727-09bf-428e-8545-9ca64a865ef1) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "CABLE" (at 180.83 63.43) (layer "B.SilkS") (tstamp 141d1a2d-1bbe-4be4-840a-59341ceb5bc4) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify right mirror)) ) (gr_text "CERN-OHL-W V2 OR LATER" (at 128 87.6 -90) (layer "B.SilkS") (tstamp 1e4dc4a6-b198-4fdc-a965-461a460978e8) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify mirror)) ) (gr_text "REMOVE" (at 89.65 79 270) (layer "B.SilkS") (tstamp 2144ca37-3a36-4aa4-b05c-25bece141964) (effects (font (size 1.95 2.1) (thickness 0.25)) (justify mirror)) ) (gr_text "43" (at 180.2 116.8) (layer "B.SilkS") (tstamp 250e21c5-6027-4e4e-a5d4-7a188f1e1a55) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "18" (at 199.2 81.2) (layer "B.SilkS") (tstamp 27a5613c-35f4-411f-ba30-0142a59d44ac) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "27" (at 215.45 107.99) (layer "B.SilkS") (tstamp 28b85a6c-788f-49cb-bcc9-c93969457c15) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "56" (at 189.451149 138.594936 342) (layer "B.SilkS") (tstamp 2f43ce56-161e-4255-a851-e274b5530668) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "REMOVE" (at 214.25 81.5 270) (layer "B.SilkS") (tstamp 32933473-84ce-496b-822d-1b6018cf5796) (effects (font (size 1.95 2.1) (thickness 0.25)) (justify mirror)) ) (gr_text "15" (at 142.2 78.8) (layer "B.SilkS") (tstamp 390481dd-9334-4c09-b28e-78440e379ac8) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "54" (at 141.262 133.1) (layer "B.SilkS") (tstamp 3b94e836-082b-4217-9a85-317fae8229b0) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "ROWS" (at 211.55 111.28 -90) (layer "B.SilkS") (tstamp 40f06a93-0e6b-466d-83ca-a0c2a1ad6f9a) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify right mirror)) ) (gr_text "REMOVE" (at 89.65 136 270) (layer "B.SilkS") (tstamp 4352f4c3-969c-4504-be09-2df49dad7ab8) (effects (font (size 1.95 2.1) (thickness 0.25)) (justify mirror)) ) (gr_text "5" (at 199.2 62.2) (layer "B.SilkS") (tstamp 4ac0d6af-2458-4f04-89b0-2439668a7d17) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "57" (at 213.669577 150.934851 324) (layer "B.SilkS") (tstamp 4b9d2f7a-f055-40b9-b928-40e59849c31c) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "REMOVE" (at 89.65 60 270) (layer "B.SilkS") (tstamp 53522f28-a916-4896-9a3d-123e562c3dab) (effects (font (size 1.95 2.1) (thickness 0.25)) (justify mirror)) ) (gr_text "17" (at 180.2 78.8) (layer "B.SilkS") (tstamp 5608954b-833f-46ae-8c99-fdd0ebdc827a) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "53" (at 120 140.6) (layer "B.SilkS") (tstamp 59380aa4-e1a9-44ae-b5f1-e71ec91d3536) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "28" (at 215.45 105.45) (layer "B.SilkS") (tstamp 5b64a800-a9ff-4ce8-a394-c8bddb942aee) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "39" (at 101 121.6) (layer "B.SilkS") (tstamp 5ef10dbe-ace5-4f3d-9378-f42d930722e1) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "PICO" (at 214.2 122.7 270) (layer "B.SilkS") (tstamp 6230a875-c3de-49b7-8b39-4cb90db24c8b) (effects (font (size 1.3 1.4) (thickness 0.15)) (justify right mirror)) ) (gr_text "ROT" (at 218.6 56.5 90) (layer "B.SilkS") (tstamp 7128f50e-901a-4fb0-8a06-6e6d65a76585) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "MOUNT" (at 180.83 65.97) (layer "B.SilkS") (tstamp 75ece9f7-71d6-4cbb-b301-5c068a9213d0) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify right mirror)) ) (gr_text "13" (at 101 83.6) (layer "B.SilkS") (tstamp 83df8ede-4851-4b83-a1cc-e53069fa46f3) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "52" (at 103.375 140.6) (layer "B.SilkS") (tstamp 86309d11-11eb-412e-9b5b-761d5a57ec8e) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "4" (at 180.2 59.8) (layer "B.SilkS") (tstamp 86cd6c3c-e278-494b-bd7c-6f7f855c5a41) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "REMOVE" (at 89.65 98 270) (layer "B.SilkS") (tstamp 878edd72-2712-498f-856f-9dc015a73107) (effects (font (size 1.95 2.1) (thickness 0.25)) (justify mirror)) ) (gr_text "COLUMNS" (at 216.8 124.7 270) (layer "B.SilkS") (tstamp 8e1d6a21-0fc0-4efa-b182-c8d7c38258be) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify right mirror)) ) (gr_text "41" (at 142.2 116.8) (layer "B.SilkS") (tstamp 8f7ef228-256d-4528-8d22-b77c88a76cc6) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "29" (at 161.2 95.4) (layer "B.SilkS") (tstamp 92d61fc6-045f-40a0-ab87-f0fa184ad187) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "16" (at 161.2 76.4) (layer "B.SilkS") (tstamp 971950f1-64a0-45cb-b0c1-4bf492151240) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "14" (at 120 83.6) (layer "B.SilkS") (tstamp 9899e3bc-1c75-4aef-9376-42c5f5828982) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "22" (at 215.3 120.69) (layer "B.SilkS") (tstamp a442ce1c-6930-459f-983f-89fc8f3f3ebd) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "0" (at 101 64.6) (layer "B.SilkS") (tstamp a4e746b4-d5d8-4e06-8a25-7e350d929604) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "25" (at 215.45 113.07) (layer "B.SilkS") (tstamp ac91dab6-281c-4f5b-ba5b-cce8aa595f49) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "REMOVE" (at 89.65 117 270) (layer "B.SilkS") (tstamp b03a18f2-d33d-4849-b2c2-f49e7752bf4b) (effects (font (size 1.95 2.1) (thickness 0.25)) (justify mirror)) ) (gr_text "55" (at 163.243775 133.737974 357) (layer "B.SilkS") (tstamp b81dec2d-2df6-4ef3-b7df-08e19cf1711e) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "31" (at 199.2 100.2) (layer "B.SilkS") (tstamp ba4988b2-77c3-4424-abf6-c9f314b5b199) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "3" (at 161.2 57.4) (layer "B.SilkS") (tstamp c22ba045-6735-4c4e-82ec-a31659656c87) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "42" (at 161.2 114.4) (layer "B.SilkS") (tstamp c3617640-6877-4414-a37e-df63518913f7) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "44" (at 199.2 118.7) (layer "B.SilkS") (tstamp c3e0fdea-f745-4c2a-b1d2-4b39e51ee9d1) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "SW" (at 218.6 66.2 90) (layer "B.SilkS") (tstamp d248406d-214a-4ff2-946d-2bf7a00e601b) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "29" (at 215.45 102.91) (layer "B.SilkS") (tstamp d9674c75-cc8b-40ca-b6a2-2c803a0f4dcd) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "40" (at 120 121.6) (layer "B.SilkS") (tstamp dce6f3c0-e86c-4db6-aa02-33f2f8aa6e86) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "26" (at 101 102.6) (layer "B.SilkS") (tstamp ddc73fb2-d942-472a-97fc-e8bfc6a00bdf) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "23" (at 215.45 118.15) (layer "B.SilkS") (tstamp df9c62e4-f9b4-4961-a5c6-212f5277544f) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "27" (at 120 102.6) (layer "B.SilkS") (tstamp e2fe6a0a-b01b-4897-bcad-5be276df5c13) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom mirror)) ) (gr_text "24" (at 215.45 115.61) (layer "B.SilkS") (tstamp eb5c7981-93c9-408e-accd-3919756c3abc) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "26" (at 215.45 110.53) (layer "B.SilkS") (tstamp f15faf12-9464-4507-94b9-ed48303fcb64) (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left mirror)) ) (gr_text "45" (at 199.2 118.7) (layer "F.SilkS") (tstamp 0b965f3e-c9aa-43c3-bb82-db7daf1cf217) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "63" (at 101 140.6) (layer "F.SilkS") (tstamp 0be429e8-4b58-4374-b1fa-49f6fc6beb53) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "47" (at 161.2 114.4) (layer "F.SilkS") (tstamp 10cfeaae-bbf2-48f0-863a-67b3c28a725c) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "11" (at 101 64.6) (layer "F.SilkS") (tstamp 1fc7c4a5-1614-4f74-b982-7a2a53e6a29d) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "20" (at 180.2 78.8) (layer "F.SilkS") (tstamp 29bf20ed-4073-4415-a37d-fbfb3e413c76) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "64" (at 82 140.6) (layer "F.SilkS") (tstamp 2db078e7-1b35-4240-be38-1d0bcd44e0b9) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "24" (at 101 83.6) (layer "F.SilkS") (tstamp 2dbf4255-22f3-45d5-9d14-c36b33a137a5) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "35" (at 142.2 97.8) (layer "F.SilkS") (tstamp 35338519-47e7-4f1c-87ce-531cc9520921) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "10" (at 120 64.6) (layer "F.SilkS") (tstamp 3bdcb21d-1628-486a-aba1-f64565d9461f) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "61" (at 141.262 133.1) (layer "F.SilkS") (tstamp 3cc6b7e4-3afb-422e-b749-a138dd381eb8) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "ROWS" (at 211.55 111.28 90) (layer "F.SilkS") (tstamp 424ac357-ff7a-4a4e-8856-3c4e00713d72) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify right)) ) (gr_text "9" (at 142.2 59.8) (layer "F.SilkS") (tstamp 471d05f7-5f5a-4855-b853-45e612930397) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "23" (at 120 83.6) (layer "F.SilkS") (tstamp 47e4ea59-446f-4749-9ede-4f7a5cde2ed2) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "50" (at 101 121.6) (layer "F.SilkS") (tstamp 5046258d-64ab-4bd9-a98f-0dc145cc1eb8) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "51" (at 82 121.6) (layer "F.SilkS") (tstamp 50a055e3-d9c2-42b6-93c1-f2ca17999eb5) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "33" (at 180.2 97.8) (layer "F.SilkS") (tstamp 7454878e-5d02-4b47-a2a3-da2e95da27aa) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "6" (at 199.2 62.2) (layer "F.SilkS") (tstamp 74cdd3a2-6b60-4685-8b22-a806d03006f3) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "38" (at 82 102.6) (layer "F.SilkS") (tstamp 75ef6ced-27cb-42ed-bea3-c2e7a175abf0) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "59" (at 189.451149 138.594936 342) (layer "F.SilkS") (tstamp 778ea368-f029-412a-8d78-e23795b395e4) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "37" (at 101 102.6) (layer "F.SilkS") (tstamp 793c5aec-c31a-4db3-8032-55e9552a7035) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "CERN-OHL-W V2 OR LATER" (at 128 87.6 90) (layer "F.SilkS") (tstamp 83e332b5-5f50-4c66-81e5-f8ca197aef39) (effects (font (size 1.3 1.4) (thickness 0.2))) ) (gr_text "49" (at 120 121.6) (layer "F.SilkS") (tstamp 84bfa958-3840-427f-ade8-93e2ed5e71f9) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "22" (at 142.2 78.8) (layer "F.SilkS") (tstamp 8720c3ab-aa83-401e-b288-c3bb7090875d) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "25" (at 82 83.6) (layer "F.SilkS") (tstamp 8d10240f-d7c5-49a8-aa66-b296d2d98435) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "32" (at 199.2 100.2) (layer "F.SilkS") (tstamp 8df63e27-994e-4cff-9815-e8b493756a25) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "ROT" (at 211.55 84.61 90) (layer "F.SilkS") (tstamp 911adff3-4365-4ea0-bd0c-b64d12b6a0ff) (effects (font (size 1.3 1.4) (thickness 0.2)) (justify right)) ) (gr_text "34" (at 161.2 95.4) (layer "F.SilkS") (tstamp 9717fe0d-c238-468f-9e84-3ee195aed478) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "7" (at 180.2 59.8) (layer "F.SilkS") (tstamp 9865b0ef-9f0f-4088-85d8-de65d5f8d3bb) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "58" (at 213.669577 150.934851 324) (layer "F.SilkS") (tstamp a96bd691-3977-41d3-9958-67e1d73066b3) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "48" (at 142.2 116.8) (layer "F.SilkS") (tstamp b0c3f194-4b53-4116-a940-0ed6109ca388) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "62" (at 120 140.6) (layer "F.SilkS") (tstamp b4866c89-c1f6-4d60-8762-78ea81f718c7) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "8" (at 161.2 57.4) (layer "F.SilkS") (tstamp bf9f6c8d-0cda-48a0-a8cd-c3a7626ffad3) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "19" (at 199.2 81.2) (layer "F.SilkS") (tstamp c5845976-1e7b-4e5d-b782-00b202c5db79) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "60" (at 163.243775 133.737974 357) (layer "F.SilkS") (tstamp d2bba91b-7fbe-415c-a64f-786bcb960790) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "46" (at 180.2 116.8) (layer "F.SilkS") (tstamp d6677f90-14de-40c9-9a03-719c5d828992) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "RPI PICO" (at 220 85 90) (layer "F.SilkS") (tstamp dbe4ad8b-977d-4f00-a216-b3faba49ac2b) (effects (font (size 1.3 1.4) (thickness 0.2))) ) (gr_text "12" (at 82 64.6) (layer "F.SilkS") (tstamp e50c01a5-76f6-4e7a-a45d-ad4f6448f91e) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "36" (at 120 102.6) (layer "F.SilkS") (tstamp f76c5805-b1f0-457f-9f55-407e9b74ffb6) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (gr_text "21" (at 161.2 76.4) (layer "F.SilkS") (tstamp fd520c96-5c3e-4c86-858e-448c7ee21919) (effects (font (size 1.4 1.4) (thickness 0.2)) (justify bottom)) ) (segment (start 103.615812 66.875) (end 97.95 66.875) (width 0.25) (layer "F.Cu") (net 1) (tstamp 263c9371-5da4-4b86-b14c-9c0ef4247a48)) (segment (start 104.570406 67.270406) (end 105.55 68.25) (width 0.25) (layer "F.Cu") (net 1) (tstamp 3161e3e0-923c-4045-acaf-a5fbf4f81c1d)) (segment (start 169.45 60.26) (end 150.45 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp 8f98c2d6-3dfd-42cc-9c5b-7636e8e730ec)) (segment (start 105.55 68.25) (end 107.375 68.25) (width 0.25) (layer "F.Cu") (net 1) (tstamp 9add566c-ae0b-493f-b137-19c1c640fa90)) (segment (start 212.275 122.875) (end 212.275 118.005) (width 0.25) (layer "F.Cu") (net 1) (tstamp a278ff08-01ed-4066-8b85-c7dd7da15710)) (segment (start 218.175 106.72) (end 211.55 106.72) (width 0.25) (layer "F.Cu") (net 1) (tstamp ad053a27-374d-4bd4-9077-62d4e603d8fb)) (segment (start 213.4 116.88) (end 218.175 116.88) (width 0.25) (layer "F.Cu") (net 1) (tstamp afcadeca-d0d3-4092-a3d1-883afed5e5b2)) (segment (start 114.125 128.125) (end 207.025 128.125) (width 0.25) (layer "F.Cu") (net 1) (tstamp b746fb49-8e45-4263-b9af-27346c182802)) (segment (start 171.95 60.26) (end 190.95 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp b87aa539-46c9-49c4-9eb2-05d21dca0f98)) (segment (start 171.95 60.26) (end 169.45 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp bf5c59ef-6ae2-4314-9072-7b0689883ba2)) (segment (start 95.95 68.875) (end 86.55 68.875) (width 0.25) (layer "F.Cu") (net 1) (tstamp d284e737-a15c-4c65-aa5b-2516c100c4e6)) (segment (start 218.925 116.13) (end 218.925 107.47) (width 0.25) (layer "F.Cu") (net 1) (tstamp e2043027-b52d-4f3b-94e5-8f88099aa3de)) (segment (start 108.875 69.75) (end 108.875 122.875) (width 0.25) (layer "F.Cu") (net 1) (tstamp f6e4b14e-8e0f-46bf-9359-658cb4e0575a)) (arc (start 151.692545 60.26) (mid 151.281653 60.105949) (end 151.073048 59.720043) (width 0.25) (layer "F.Cu") (net 1) (tstamp 03a15904-9281-43b9-9331-bcf2d79aef6d)) (arc (start 96.575 68.25) (mid 96.977728 67.277728) (end 97.95 66.875) (width 0.25) (layer "F.Cu") (net 1) (tstamp 04121b8a-9bc1-413a-9b2e-1ee94a076dea)) (arc (start 106.173048 68.789956) (mid 106.381104 68.403762) (end 106.791664 68.25) (width 0.25) (layer "F.Cu") (net 1) (tstamp 0b2fc931-2464-42d9-9c52-e49890ce77ff)) (arc (start 189.707455 60.26) (mid 190.118347 60.414051) (end 190.326951 60.799956) (width 0.25) (layer "F.Cu") (net 1) (tstamp 1125fd2e-18d6-45ad-8855-abaa9d33d996)) (arc (start 106.792545 68.25) (mid 106.381653 68.095949) (end 106.173048 67.710043) (width 0.25) (layer "F.Cu") (net 1) (tstamp 14d51d27-f2b7-4a9b-b98f-a61ba5548db2)) (arc (start 212.745258 106.72) (mid 212.431801 106.635712) (end 212.202888 106.405588) (width 0.25) (layer "F.Cu") (net 1) (tstamp 21716e39-dc9d-4f9d-bc17-20559655ac51)) (arc (start 207.025 128.125) (mid 210.737311 126.587311) (end 212.275 122.875) (width 0.25) (layer "F.Cu") (net 1) (tstamp 24b6b548-6c95-4786-9274-9adfcaeebafe)) (arc (start 170.707455 60.26) (mid 171.118347 60.414051) (end 171.326951 60.799956) (width 0.25) (layer "F.Cu") (net 1) (tstamp 34382045-a03d-4040-bcdd-55d943fdfe02)) (arc (start 168.207455 60.26) (mid 168.618347 60.414051) (end 168.826951 60.799956) (width 0.25) (layer "F.Cu") (net 1) (tstamp 3cd3c131-1f7b-410f-806f-53e267edec39)) (arc (start 105.183884 67.625) (mid 104.944707 67.577425) (end 104.741942 67.441942) (width 0.25) (layer "F.Cu") (net 1) (tstamp 41e636ed-d748-497d-90ca-ef5e47fe02cd)) (arc (start 168.826951 59.720043) (mid 168.618896 60.106238) (end 168.208336 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp 44fd14bf-e948-4eda-b976-5b8d45b4ac56)) (arc (start 170.073048 60.799956) (mid 170.281104 60.413762) (end 170.691664 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp 71c9c721-79a9-4c2a-8ae3-6576c9eacaac)) (arc (start 107.375 68.25) (mid 108.43566 68.68934) (end 108.875 69.75) (width 0.25) (layer "F.Cu") (net 1) (tstamp 7410d45e-6aef-49de-8719-6f014b6dea47)) (arc (start 212.202888 107.034411) (mid 212.431801 106.804288) (end 212.745258 106.72) (width 0.25) (layer "F.Cu") (net 1) (tstamp 75aae5c1-3c76-438e-b961-b50a363011cd)) (arc (start 103.615812 66.875) (mid 104.132435 66.977763) (end 104.570406 67.270406) (width 0.25) (layer "F.Cu") (net 1) (tstamp 7704efc6-3db6-453f-ae4b-aaec79787d2e)) (arc (start 108.875 122.875) (mid 110.412689 126.587311) (end 114.125 128.125) (width 0.25) (layer "F.Cu") (net 1) (tstamp 831aa2b8-7c60-457e-bddd-155b9f6a863a)) (arc (start 151.073048 60.799956) (mid 151.281104 60.413762) (end 151.691664 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp 8693c78a-fdc1-417a-8904-87f75228fa47)) (arc (start 218.925 107.47) (mid 218.70533 106.93967) (end 218.175 106.72) (width 0.25) (layer "F.Cu") (net 1) (tstamp 86ffaf2b-8bd5-4f42-ba87-08f128bd6479)) (arc (start 104.741942 67.441942) (mid 104.877425 67.644707) (end 104.925 67.883884) (width 0.25) (layer "F.Cu") (net 1) (tstamp 87ab4619-64b0-450c-a8b4-c9f33db78718)) (arc (start 87.8 68.875) (mid 87.358058 68.691942) (end 87.175 68.25) (width 0.25) (layer "F.Cu") (net 1) (tstamp 9a4ea997-ed86-4c85-b682-aeaeae9cc744)) (arc (start 173.192545 60.26) (mid 172.781653 60.105949) (end 172.573048 59.720043) (width 0.25) (layer "F.Cu") (net 1) (tstamp a3fd86c6-dd2f-410a-ba61-faa53b102f5e)) (arc (start 170.692545 60.26) (mid 170.281653 60.105949) (end 170.073048 59.720043) (width 0.25) (layer "F.Cu") (net 1) (tstamp aa2de8d2-055a-4efc-970a-6192a7b3f053)) (arc (start 190.326951 59.720043) (mid 190.118896 60.106238) (end 189.708336 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp c2a4a31a-f8f1-4406-95f4-624e54994060)) (arc (start 96.575 68.25) (mid 96.391942 68.691942) (end 95.95 68.875) (width 0.25) (layer "F.Cu") (net 1) (tstamp ce24a073-4933-4619-9063-d4037072e7a9)) (arc (start 212.275 118.005) (mid 212.604505 117.209505) (end 213.4 116.88) (width 0.25) (layer "F.Cu") (net 1) (tstamp d8881358-c6cc-4ca4-a036-0650d2312c4a)) (arc (start 172.573048 60.799956) (mid 172.781104 60.413762) (end 173.191664 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp d9f2041b-7fbb-489e-aeab-fabcc9879320)) (arc (start 171.326951 59.720043) (mid 171.118896 60.106238) (end 170.708336 60.26) (width 0.25) (layer "F.Cu") (net 1) (tstamp e82c6692-0f4a-4d38-b83e-094653209e20)) (arc (start 218.175 116.88) (mid 218.70533 116.66033) (end 218.925 116.13) (width 0.25) (layer "F.Cu") (net 1) (tstamp ec240dd0-cff0-4f44-85c9-f0837e534486)) (segment (start 106.675 65.06) (end 111.75 65.06) (width 0.25) (layer "B.Cu") (net 1) (tstamp 22127414-645d-4da2-88f9-2fdd3750eb9c)) (segment (start 149.7 64.075) (end 137.26654 64.075) (width 0.25) (layer "B.Cu") (net 1) (tstamp 23f4c0e2-2c53-4df3-a333-273038b502e5)) (segment (start 214.921632 99.594214) (end 220.485105 97.117196) (width 0.25) (layer "B.Cu") (net 1) (tstamp 316781e7-c80e-4c24-8a88-d65f1f9aa80f)) (segment (start 133.20404 65.163544) (end 128.370958 67.953925) (width 0.25) (layer "B.Cu") (net 1) (tstamp 3241978b-4a70-4129-b998-023470cf87f1)) (segment (start 105.55 66.185) (end 105.55 68.25) (width 0.25) (layer "B.Cu") (net 1) (tstamp 454fdd0d-344d-4ea9-9a59-b0a8fe98e683)) (segment (start 220.485105 84.163931) (end 216.95 82.59) (width 0.25) (layer "B.Cu") (net 1) (tstamp 4ea60f0c-26a6-4859-bef9-680456b8867c)) (segment (start 214.625 104.620338) (end 214.625 100.050987) (width 0.25) (layer "B.Cu") (net 1) (tstamp 8a86a88e-2e44-48c8-87db-0c15fba8e162)) (segment (start 221.375 85.534249) (end 221.375 95.746878) (width 0.25) (layer "B.Cu") (net 1) (tstamp a764f59a-b0e7-4398-b130-8c7c5bb58576)) (segment (start 150.45 60.26) (end 150.45 63.325) (width 0.25) (layer "B.Cu") (net 1) (tstamp ce1fce2f-d984-4d00-b48b-24272ff7d9c9)) (segment (start 211.55 106.72) (end 213.957579 105.648077) (width 0.25) (layer "B.Cu") (net 1) (tstamp da798ab1-3323-47fb-a069-a2b0e26c3924)) (segment (start 124.933458 68.875) (end 105.55 68.875) (width 0.25) (layer "B.Cu") (net 1) (tstamp f0c20914-73cb-44ef-ad0d-3a33ce377925)) (arc (start 214.625 104.620338) (mid 214.443504 105.233057) (end 213.957579 105.648077) (width 0.25) (layer "B.Cu") (net 1) (tstamp 04fc1aa4-d69d-494d-8aa6-aeb1d9dec348)) (arc (start 220.485105 97.117196) (mid 221.133006 96.563836) (end 221.375 95.746878) (width 0.25) (layer "B.Cu") (net 1) (tstamp 0781f739-9508-4647-8ddc-616fc5eda09f)) (arc (start 149.7 64.075) (mid 150.23033 63.85533) (end 150.45 63.325) (width 0.25) (layer "B.Cu") (net 1) (tstamp 2ea326a8-d32b-4dc5-b29d-ef28d0ec4e02)) (arc (start 220.485105 84.163931) (mid 221.133006 84.717291) (end 221.375 85.534249) (width 0.25) (layer "B.Cu") (net 1) (tstamp 33b02428-59ae-4629-87c3-3521cf02a6f4)) (arc (start 106.8 68.875) (mid 106.358058 68.691942) (end 106.175 68.25) (width 0.25) (layer "B.Cu") (net 1) (tstamp 4b926418-4c15-420a-81a0-53eec1195d6b)) (arc (start 110.507455 65.06) (mid 110.918347 65.214051) (end 111.126951 65.599956) (width 0.25) (layer "B.Cu") (net 1) (tstamp 4f908c22-7f66-4f97-90f2-742ca7f8c4bf)) (arc (start 105.55 66.185) (mid 105.879505 65.389505) (end 106.675 65.06) (width 0.25) (layer "B.Cu") (net 1) (tstamp 551fb8a9-7d07-4869-8ef5-e6b3ae97f544)) (arc (start 217.401808 83.156556) (mid 217.710674 83.026774) (end 218.041723 83.076067) (width 0.25) (layer "B.Cu") (net 1) (tstamp 622121bc-c0ee-4435-bf17-ab7fa5f1ea8e)) (arc (start 212.271756 106.758607) (mid 212.383934 106.445551) (end 212.640799 106.234345) (width 0.25) (layer "B.Cu") (net 1) (tstamp 646403b4-ba51-4395-b1fa-749b2992dc8f)) (arc (start 111.126951 64.520043) (mid 110.918896 64.906238) (end 110.508336 65.06) (width 0.25) (layer "B.Cu") (net 1) (tstamp 64cc69b3-67cd-4d50-92c6-ada10091e4ce)) (arc (start 128.370958 67.953925) (mid 126.712839 68.64074) (end 124.933458 68.875) (width 0.25) (layer "B.Cu") (net 1) (tstamp 6cb409b1-8e22-4050-a9a1-0c8ac1c6c5ed)) (arc (start 218.040798 83.075655) (mid 217.783934 82.864448) (end 217.671756 82.551392) (width 0.25) (layer "B.Cu") (net 1) (tstamp 99867778-cd94-4c2d-af4a-ab5a422018da)) (arc (start 214.625 100.050987) (mid 214.705665 99.778667) (end 214.921632 99.594214) (width 0.25) (layer "B.Cu") (net 1) (tstamp acf8514f-5cb1-44a8-9585-60286e2b5d08)) (arc (start 149.910043 60.883048) (mid 150.296238 61.091104) (end 150.45 61.501664) (width 0.25) (layer "B.Cu") (net 1) (tstamp b9a2792f-43d4-4420-b9cd-8f912fc1a367)) (arc (start 137.26654 64.075) (mid 135.163635 64.351853) (end 133.20404 65.163544) (width 0.25) (layer "B.Cu") (net 1) (tstamp bb489ba5-47a3-4ee8-9c57-495bf1788bec)) (arc (start 105.55 67.007455) (mid 105.395949 67.418347) (end 105.010043 67.626951) (width 0.25) (layer "B.Cu") (net 1) (tstamp d630a22a-de15-4cac-875a-7ef7602e49a4)) (arc (start 150.45 61.502545) (mid 150.604051 61.091653) (end 150.989956 60.883048) (width 0.25) (layer "B.Cu") (net 1) (tstamp dc62ea98-b686-4e69-a715-b6c799bda7c3)) (arc (start 106.089956 67.626951) (mid 105.703762 67.418896) (end 105.55 67.008336) (width 0.25) (layer "B.Cu") (net 1) (tstamp e7a8330f-4b26-4e16-9479-c38e25d02708)) (arc (start 212.641723 106.233934) (mid 212.310674 106.283227) (end 212.001808 106.153443) (width 0.25) (layer "B.Cu") (net 1) (tstamp ede524ec-26eb-4821-97ed-a86a20fbf502)) (segment (start 219.675 117.92) (end 219.675 105.68) (width 0.25) (layer "F.Cu") (net 2) (tstamp 042ca889-a2b9-460a-9f4b-bbfda352c2f2)) (segment (start 153.74 77.76) (end 153.74 71.025) (width 0.25) (layer "F.Cu") (net 2) (tstamp 1f07001a-2d61-40f1-80b9-e116c1d73835)) (segment (start 104.570406 71.729594) (end 105.55 70.75) (width 0.25) (layer "F.Cu") (net 2) (tstamp 1f49a7c9-abab-485d-8872-a35926416ebb)) (segment (start 105.55 70.75) (end 107.375 70.75) (width 0.25) (layer "F.Cu") (net 2) (tstamp 200e5bd5-40d9-4fcc-b2fc-d2133b294cbb)) (segment (start 171.95 79.26) (end 190.95 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp 2e748e5b-0ba6-4b0b-b495-b91ffa78bd81)) (segment (start 108.125 71.5) (end 108.125 122.875) (width 0.25) (layer "F.Cu") (net 2) (tstamp 36a32ca4-53b2-4c24-8335-4f0c2607bca0)) (segment (start 213.025 122.875) (end 213.025 120.17) (width 0.25) (layer "F.Cu") (net 2) (tstamp 37879b95-7b79-47ef-aa90-6429c0500495)) (segment (start 95.95 70.125) (end 86.55 70.125) (width 0.25) (layer "F.Cu") (net 2) (tstamp 52d3db5b-1ed0-4b40-aacb-00388adebfc7)) (segment (start 114.125 128.875) (end 207.025 128.875) (width 0.25) (layer "F.Cu") (net 2) (tstamp 55b562da-1457-42d3-8439-d435dbfc3607)) (segment (start 171.95 79.26) (end 169.45 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp 5b6d2cae-7078-4d3c-8c80-dbb503a7d4cc)) (segment (start 152.24 69.525) (end 150.45 69.525) (width 0.25) (layer "F.Cu") (net 2) (tstamp 5b92deaf-5f69-4e92-9ffd-4f20ccd3bfba)) (segment (start 103.615812 72.125) (end 97.95 72.125) (width 0.25) (layer "F.Cu") (net 2) (tstamp 717a8ce1-7ff0-405b-9ea4-5d4ea39de48f)) (segment (start 218.175 104.18) (end 211.55 104.18) (width 0.25) (layer "F.Cu") (net 2) (tstamp 7ff067af-267a-47b0-a385-7b0a7bd85ed0)) (segment (start 155.24 79.26) (end 169.45 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp ae00a5ac-0f31-488b-b382-f9a315e6d739)) (segment (start 213.775 119.42) (end 218.175 119.42) (width 0.25) (layer "F.Cu") (net 2) (tstamp e4968a1c-c9cd-4fde-9a93-f29c3710c942)) (arc (start 207.025 128.875) (mid 211.267641 127.117641) (end 213.025 122.875) (width 0.25) (layer "F.Cu") (net 2) (tstamp 0373f363-03f0-4c0e-b352-015f66d7d2c0)) (arc (start 107.375 70.75) (mid 107.90533 70.96967) (end 108.125 71.5) (width 0.25) (layer "F.Cu") (net 2) (tstamp 061edd6c-05f9-4ce9-98b2-768ada72a49b)) (arc (start 108.125 122.875) (mid 109.882359 127.117641) (end 114.125 128.875) (width 0.25) (layer "F.Cu") (net 2) (tstamp 07a62e08-1b9b-4df0-9519-bb7e16278920)) (arc (start 96.575 70.75) (mid 96.391942 70.308058) (end 95.95 70.125) (width 0.25) (layer "F.Cu") (net 2) (tstamp 089cdbba-3f76-4edc-ac20-4925f281d2a0)) (arc (start 218.175 119.42) (mid 219.23566 118.98066) (end 219.675 117.92) (width 0.25) (layer "F.Cu") (net 2) (tstamp 0e3fe847-d64c-4295-a798-bbca0bff0704)) (arc (start 212.745258 104.18) (mid 212.431801 104.095712) (end 212.202888 103.865588) (width 0.25) (layer "F.Cu") (net 2) (tstamp 0f6336d6-8da8-4b37-a26b-e12a6f6a9a31)) (arc (start 96.575 70.75) (mid 96.977728 71.722272) (end 97.95 72.125) (width 0.25) (layer "F.Cu") (net 2) (tstamp 23be7ab3-67be-4add-a1d1-8d5ee9a230a8)) (arc (start 219.675 105.68) (mid 219.23566 104.61934) (end 218.175 104.18) (width 0.25) (layer "F.Cu") (net 2) (tstamp 2dc2782c-8c87-4ef5-a95d-f0fae4aff6fb)) (arc (start 151.073048 70.064956) (mid 151.281104 69.678762) (end 151.691664 69.525) (width 0.25) (layer "F.Cu") (net 2) (tstamp 38246018-f0af-4c9c-8a4a-3ae891b5d23d)) (arc (start 153.74 77.76) (mid 154.17934 78.82066) (end 155.24 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp 45c0e50a-2505-463a-87b6-19751c973b69)) (arc (start 104.741942 71.558058) (mid 104.944707 71.422575) (end 105.183884 71.375) (width 0.25) (layer "F.Cu") (net 2) (tstamp 5f3bd4b1-a21c-4bc6-8479-3d02c5334081)) (arc (start 106.173048 71.289956) (mid 106.381104 70.903762) (end 106.791664 70.75) (width 0.25) (layer "F.Cu") (net 2) (tstamp 62049e8a-c4b0-40b3-a3ac-44323e3eab1e)) (arc (start 104.570406 71.729594) (mid 104.132435 72.022237) (end 103.615812 72.125) (width 0.25) (layer "F.Cu") (net 2) (tstamp 869900d5-961d-4e6c-b78b-e2ff882ba929)) (arc (start 153.74 71.025) (mid 153.30066 69.96434) (end 152.24 69.525) (width 0.25) (layer "F.Cu") (net 2) (tstamp 88557643-67b2-4ce2-9946-89e7d44a02c8)) (arc (start 213.025 120.17) (mid 213.24467 119.63967) (end 213.775 119.42) (width 0.25) (layer "F.Cu") (net 2) (tstamp 8c83d247-359b-4f3f-af91-ffdcb222650f)) (arc (start 171.326951 78.720043) (mid 171.118896 79.106238) (end 170.708336 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp 8f073f62-5356-4e41-b43a-2d49cd6a31e9)) (arc (start 170.073048 79.799956) (mid 170.281104 79.413762) (end 170.691664 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp 8fcc4bcf-5d04-4457-bf2f-7841ad0839da)) (arc (start 172.573048 79.799956) (mid 172.781104 79.413762) (end 173.191664 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp 9afc4de8-4ee0-422e-888e-7e00818e2e71)) (arc (start 104.925 71.116116) (mid 104.877425 71.355293) (end 104.741942 71.558058) (width 0.25) (layer "F.Cu") (net 2) (tstamp a782db46-692d-4237-af1c-3c06cc93cf29)) (arc (start 173.192545 79.26) (mid 172.781653 79.105949) (end 172.573048 78.720043) (width 0.25) (layer "F.Cu") (net 2) (tstamp c07fd8ee-e507-4135-ba7d-ef9b05c52aab)) (arc (start 87.175 70.75) (mid 87.358058 70.308058) (end 87.8 70.125) (width 0.25) (layer "F.Cu") (net 2) (tstamp c97a8b3b-ac65-490f-af65-088687172922)) (arc (start 190.326951 78.720043) (mid 190.118896 79.106238) (end 189.708336 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp d64b6a7f-14d4-4d8e-908b-83c8402cf6c7)) (arc (start 170.707455 79.26) (mid 171.118347 79.414051) (end 171.326951 79.799956) (width 0.25) (layer "F.Cu") (net 2) (tstamp d84f5224-90d3-40bb-a670-6e80050d8045)) (arc (start 106.792545 70.75) (mid 106.381653 70.595949) (end 106.173048 70.210043) (width 0.25) (layer "F.Cu") (net 2) (tstamp eb77364a-b759-4091-b9d3-94e4f16eb5d0)) (arc (start 168.826951 78.720043) (mid 168.618896 79.106238) (end 168.208336 79.26) (width 0.25) (layer "F.Cu") (net 2) (tstamp ec507c9e-cc2d-4c57-bb79-02e1e7afb070)) (arc (start 189.707455 79.26) (mid 190.118347 79.414051) (end 190.326951 79.799956) (width 0.25) (layer "F.Cu") (net 2) (tstamp eec2217c-17d8-4c63-86bc-628331296929)) (arc (start 170.692545 79.26) (mid 170.281653 79.105949) (end 170.073048 78.720043) (width 0.25) (layer "F.Cu") (net 2) (tstamp efaa69b2-4106-4a7d-aca8-718c8389f4fb)) (arc (start 212.202888 104.494411) (mid 212.431801 104.264288) (end 212.745258 104.18) (width 0.25) (layer "F.Cu") (net 2) (tstamp f089aec8-f6bb-4754-8cb9-41b57f7a9436)) (arc (start 168.207455 79.26) (mid 168.618347 79.414051) (end 168.826951 79.799956) (width 0.25) (layer "F.Cu") (net 2) (tstamp f8bff497-dcfd-409b-9dd4-279f87f949e1)) (arc (start 151.692545 69.525) (mid 151.281653 69.370949) (end 151.073048 68.985043) (width 0.25) (layer "F.Cu") (net 2) (tstamp fb41efa7-0461-4d17-a1c3-2e1d17a9c3ed)) (segment (start 106.675 73.94) (end 111.75 73.94) (width 0.25) (layer "B.Cu") (net 2) (tstamp 04b0853e-237f-4e42-8dd6-38449d22f8dc)) (segment (start 214.238721 98.851862) (end 219.354418 95.778042) (width 0.25) (layer "B.Cu") (net 2) (tstamp 0979c60d-27d1-4873-b346-87faf03cc4bf)) (segment (start 213.875 102.358669) (end 213.875 99.494738) (width 0.25) (layer "B.Cu") (net 2) (tstamp 2beb9296-7dcb-4056-b7ee-967c1c0d10f6)) (segment (start 150.45 69.525) (end 150.45 66.075) (width 0.25) (layer "B.Cu") (net 2) (tstamp 51ab2697-a38b-4064-a176-d54b31d7430e)) (segment (start 124.933459 70.125) (end 105.55 70.125) (width 0.25) (layer "B.Cu") (net 2) (tstamp a77847a4-ae28-4d08-abad-e62c2cc27d87)) (segment (start 149.7 65.325) (end 137.266541 65.325) (width 0.25) (layer "B.Cu") (net 2) (tstamp b93eb5da-403e-440e-8de6-fdb81b049ddd)) (segment (start 219.354418 86.57472) (end 216.95 85.13) (width 0.25) (layer "B.Cu") (net 2) (tstamp badb85df-ff64-46a7-9e3e-5383d4e46de7)) (segment (start 219.9 87.539033) (end 219.9 94.813729) (width 0.25) (layer "B.Cu") (net 2) (tstamp ccca1102-f997-421d-9875-432357e09fb2)) (segment (start 211.55 104.18) (end 213.511279 103.001545) (width 0.25) (layer "B.Cu") (net 2) (tstamp e83c363a-0859-4f34-b6db-31a82c254741)) (segment (start 133.829041 66.246075) (end 128.995959 69.036456) (width 0.25) (layer "B.Cu") (net 2) (tstamp eb9f3b7f-1fc2-4d00-a916-fc124867e0fb)) (segment (start 105.55 72.815) (end 105.55 70.75) (width 0.25) (layer "B.Cu") (net 2) (tstamp ed387969-3b80-4115-8918-ffeeb402c6df)) (arc (start 213.511279 103.001545) (mid 213.777767 102.727987) (end 213.875 102.358669) (width 0.25) (layer "B.Cu") (net 2) (tstamp 07789e83-3932-4d9f-b95c-739f758f7259)) (arc (start 212.574732 103.564279) (mid 212.241857 103.653453) (end 211.912322 103.552433) (width 0.25) (layer "B.Cu") (net 2) (tstamp 08245bd7-c47f-46b6-aa8a-4984d09a20cd)) (arc (start 106.675 73.94) (mid 105.879505 73.610495) (end 105.55 72.815) (width 0.25) (layer "B.Cu") (net 2) (tstamp 0ab990ee-c211-43ac-9624-40319ecaedcc)) (arc (start 150.989956 68.901951) (mid 150.603762 68.693896) (end 150.45 68.283336) (width 0.25) (layer "B.Cu") (net 2) (tstamp 0bb75693-dcd2-4ff3-9f2d-24a049cd86a0)) (arc (start 105.010043 71.373048) (mid 105.396238 71.581104) (end 105.55 71.991664) (width 0.25) (layer "B.Cu") (net 2) (tstamp 0e8df5cb-bd6b-47b6-9cb4-a488187a4e92)) (arc (start 137.266541 65.325) (mid 135.48716 65.55926) (end 133.829041 66.246075) (width 0.25) (layer "B.Cu") (net 2) (tstamp 19bd2fa4-49ee-4205-b462-9981911d4fde)) (arc (start 212.272207 104.147415) (mid 212.340361 103.813501) (end 212.573561 103.564982) (width 0.25) (layer "B.Cu") (net 2) (tstamp 3e670d68-7e8b-4f40-91e1-005df60e4a63)) (arc (start 219.354418 86.57472) (mid 219.75415 86.985057) (end 219.9 87.539033) (width 0.25) (layer "B.Cu") (net 2) (tstamp 4c232bc2-cff9-4412-9f46-a40e4c31ed2f)) (arc (start 106.175 70.75) (mid 106.358058 70.308058) (end 106.8 70.125) (width 0.25) (layer "B.Cu") (net 2) (tstamp 68c70d73-878c-4285-9f8c-40d47c9984da)) (arc (start 111.126951 73.400043) (mid 110.918896 73.786238) (end 110.508336 73.94) (width 0.25) (layer "B.Cu") (net 2) (tstamp 702e84c1-d8c8-485f-be25-db0adc3e0e7a)) (arc (start 217.973561 85.745018) (mid 217.740361 85.4965) (end 217.672207 85.162585) (width 0.25) (layer "B.Cu") (net 2) (tstamp 83ccbb0f-efb3-488a-8e8c-0cd50936a520)) (arc (start 124.933459 70.125) (mid 127.036364 69.848147) (end 128.995959 69.036456) (width 0.25) (layer "B.Cu") (net 2) (tstamp 87718eb7-9069-4245-9bb8-714f79a44f26)) (arc (start 217.312322 85.757566) (mid 217.641857 85.656547) (end 217.974732 85.745721) (width 0.25) (layer "B.Cu") (net 2) (tstamp a0b2848c-1bcb-4f95-aafe-2666c7c45613)) (arc (start 219.9 94.813729) (mid 219.75415 95.367705) (end 219.354418 95.778042) (width 0.25) (layer "B.Cu") (net 2) (tstamp a72448aa-c2dc-4d55-9f3b-49b2ba7c53bd)) (arc (start 105.55 71.992545) (mid 105.704051 71.581653) (end 106.089956 71.373048) (width 0.25) (layer "B.Cu") (net 2) (tstamp d38176a0-9341-439f-a23f-c954abd7c395)) (arc (start 150.45 66.075) (mid 150.23033 65.54467) (end 149.7 65.325) (width 0.25) (layer "B.Cu") (net 2) (tstamp d8aa3d72-9fea-41c7-b32d-3ae5d22d9b14)) (arc (start 110.507455 73.94) (mid 110.918347 74.094051) (end 111.126951 74.479956) (width 0.25) (layer "B.Cu") (net 2) (tstamp f121168c-57d3-476c-8ee5-b055be0561ba)) (arc (start 213.875 99.494738) (mid 213.972233 99.12542) (end 214.238721 98.851862) (width 0.25) (layer "B.Cu") (net 2) (tstamp fbd7826e-e3b2-4a8f-9b82-682c95cba7b2)) (arc (start 150.45 68.282455) (mid 150.295949 68.693347) (end 149.910043 68.901951) (width 0.25) (layer "B.Cu") (net 2) (tstamp fe450680-f2a0-42cd-9ccd-95d79e545a98)) (segment (start 171.95 98.26) (end 190.95 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp 60426f45-f68d-4770-a023-52af088186bf)) (segment (start 95.95 106.875) (end 86.55 106.875) (width 0.25) (layer "F.Cu") (net 3) (tstamp 7064ef9e-049e-4502-8059-0dde943485ca)) (segment (start 104.570406 105.270406) (end 105.55 106.25) (width 0.25) (layer "F.Cu") (net 3) (tstamp 74d62e16-97f9-46c7-ac6f-a338f30198b9)) (segment (start 169.45 98.26) (end 150.45 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp 79213116-71de-410f-b8bc-fddcef0306ce)) (segment (start 103.615812 104.875) (end 97.95 104.875) (width 0.25) (layer "F.Cu") (net 3) (tstamp c4e1122b-14aa-459d-850c-e42c836ac19a)) (segment (start 171.95 98.26) (end 169.45 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp feb7e84e-0d2d-406e-9224-8155450235ea)) (arc (start 170.707455 98.26) (mid 171.118347 98.414051) (end 171.326951 98.799956) (width 0.25) (layer "F.Cu") (net 3) (tstamp 2b269c04-e13c-4a51-bb88-c91239d06fac)) (arc (start 172.573048 98.799956) (mid 172.781104 98.413762) (end 173.191664 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp 2c5f5350-a025-4c59-8d25-050346687c99)) (arc (start 168.826951 97.720043) (mid 168.618896 98.106238) (end 168.208336 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp 45724396-f3bf-4647-8b71-04736c2acf08)) (arc (start 96.575 106.25) (mid 96.977728 105.277728) (end 97.95 104.875) (width 0.25) (layer "F.Cu") (net 3) (tstamp 46cd2a81-b653-4615-8614-717ae9d52a56)) (arc (start 96.575 106.25) (mid 96.391942 106.691942) (end 95.95 106.875) (width 0.25) (layer "F.Cu") (net 3) (tstamp 62b391fd-b522-4a39-b6cc-46e0bf3d54a6)) (arc (start 170.692545 98.26) (mid 170.281653 98.105949) (end 170.073048 97.720043) (width 0.25) (layer "F.Cu") (net 3) (tstamp 669abf78-cb3c-499d-aa43-33fb4f4ca54a)) (arc (start 151.073048 98.799956) (mid 151.281104 98.413762) (end 151.691664 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp 6a8ef38f-2f52-4ecf-8886-e4aa0d023453)) (arc (start 173.192545 98.26) (mid 172.781653 98.105949) (end 172.573048 97.720043) (width 0.25) (layer "F.Cu") (net 3) (tstamp 6b4b3588-a0a5-4fcc-8b63-5b073cee5e2e)) (arc (start 189.707455 98.26) (mid 190.118347 98.414051) (end 190.326951 98.799956) (width 0.25) (layer "F.Cu") (net 3) (tstamp 87944518-121c-458e-94b8-43c623905ffa)) (arc (start 171.326951 97.720043) (mid 171.118896 98.106238) (end 170.708336 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp 8efde236-1b1a-4651-80f1-4751fe3489c2)) (arc (start 168.207455 98.26) (mid 168.618347 98.414051) (end 168.826951 98.799956) (width 0.25) (layer "F.Cu") (net 3) (tstamp 9ff4facf-4f57-4a3d-95bb-c48040678fb9)) (arc (start 87.8 106.875) (mid 87.358058 106.691942) (end 87.175 106.25) (width 0.25) (layer "F.Cu") (net 3) (tstamp a90db53c-4e53-43cd-a297-14608345f97f)) (arc (start 170.073048 98.799956) (mid 170.281104 98.413762) (end 170.691664 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp b3b388ed-7af6-49ce-a35f-bcdcdb6d2669)) (arc (start 104.741942 105.441942) (mid 104.877425 105.644707) (end 104.925 105.883884) (width 0.25) (layer "F.Cu") (net 3) (tstamp bb24d602-db18-4dd0-a6b7-fda6f2fe0581)) (arc (start 151.692545 98.26) (mid 151.281653 98.105949) (end 151.073048 97.720043) (width 0.25) (layer "F.Cu") (net 3) (tstamp d54c4c85-4e2f-4a9e-8d5e-65d2cd1d6bc2)) (arc (start 190.326951 97.720043) (mid 190.118896 98.106238) (end 189.708336 98.26) (width 0.25) (layer "F.Cu") (net 3) (tstamp d663cfc7-c257-4dcb-b6a7-2a187a77f2ac)) (arc (start 104.570406 105.270406) (mid 104.132435 104.977763) (end 103.615812 104.875) (width 0.25) (layer "F.Cu") (net 3) (tstamp e018bb3a-2399-48d8-99e1-838eabc4e50a)) (arc (start 105.183884 105.625) (mid 104.944707 105.577425) (end 104.741942 105.441942) (width 0.25) (layer "F.Cu") (net 3) (tstamp f35559e8-ab36-4df1-b15f-055141ee24ed)) (segment (start 206.65 123.625) (end 110.875 123.625) (width 0.25) (layer "B.Cu") (net 3) (tstamp 08868f89-b472-4fee-8365-861fdd0f51c2)) (segment (start 137.26654 102.075) (end 149.7 102.075) (width 0.25) (layer "B.Cu") (net 3) (tstamp 20e3b54f-e1e1-4258-bc1b-3cfb180b5500)) (segment (start 105.55 106.875) (end 124.933458 106.875) (width 0.25) (layer "B.Cu") (net 3) (tstamp 283426d2-7470-4ff6-9105-a73a1da0e8d3)) (segment (start 105.55 104.185) (end 105.55 106.25) (width 0.25) (layer "B.Cu") (net 3) (tstamp 2cd603a8-a6c9-403e-a2c4-d67174e2c06f)) (segment (start 128.370958 105.953925) (end 133.20404 103.163544) (width 0.25) (layer "B.Cu") (net 3) (tstamp 32d11db1-82a4-4034-bb66-7ac952a7dd81)) (segment (start 218.425 89.188195) (end 218.425 94.053174) (width 0.25) (layer "B.Cu") (net 3) (tstamp 347b6916-a06b-4469-a805-6f495555094c)) (segment (start 106.675 103.06) (end 111.75 103.06) (width 0.25) (layer "B.Cu") (net 3) (tstamp 395668fc-5ff8-412a-8f35-316fb5300fa2)) (segment (start 218.136746 94.644182) (end 213.509338 98.259509) (width 0.25) (layer "B.Cu") (net 3) (tstamp 3dc4f26a-f929-4d5c-8bae-f9e4969ea49a)) (segment (start 216.95 87.67) (end 218.136746 88.597187) (width 0.25) (layer "B.Cu") (net 3) (tstamp 5a96daa8-10f7-40ea-a64c-7b3198078dc0)) (segment (start 212.836746 100.634684) (end 211.55 101.64) (width 0.25) (layer "B.Cu") (net 3) (tstamp 634cf1f0-89f2-4377-9862-4687d53a26f3)) (segment (start 104.39467 107.40533) (end 105.55 106.25) (width 0.25) (layer "B.Cu") (net 3) (tstamp 63aa4b45-9d88-411c-9935-4625138b35db)) (segment (start 213.125 99.04752) (end 213.125 100.043676) (width 0.25) (layer "B.Cu") (net 3) (tstamp 7611811a-9845-4652-bb50-c3f3289376f7)) (segment (start 209.65 103.49512) (end 209.65 120.625) (width 0.25) (layer "B.Cu") (net 3) (tstamp 7bee4198-8bc2-4a5a-add8-cd71bb0828a4)) (segment (start 107.875 120.625) (end 107.875 110.875) (width 0.25) (layer "B.Cu") (net 3) (tstamp 8a28b6e9-e807-4df7-87d3-cb9ce71c94e6)) (segment (start 150.45 101.325) (end 150.45 98.26) (width 0.25) (layer "B.Cu") (net 3) (tstamp 8c38f445-cf44-4ebe-9953-719818276aaa)) (segment (start 211.55 101.64) (end 209.942097 102.896232) (width 0.25) (layer "B.Cu") (net 3) (tstamp 98d5fbf9-87d1-44a7-979f-e788d0076cce)) (segment (start 104.175 109.375) (end 104.175 107.93566) (width 0.25) (layer "B.Cu") (net 3) (tstamp a52d6bde-ee14-4459-a898-00365b884efb)) (segment (start 107.125 110.125) (end 104.925 110.125) (width 0.25) (layer "B.Cu") (net 3) (tstamp f794a545-c67f-4e3b-a419-e670ac5a3d22)) (arc (start 105.55 104.185) (mid 105.879505 103.389505) (end 106.675 103.06) (width 0.25) (layer "B.Cu") (net 3) (tstamp 08ae5e2b-6d09-4989-8814-e68aee447c43)) (arc (start 106.8 106.875) (mid 106.358058 106.691942) (end 106.175 106.25) (width 0.25) (layer "B.Cu") (net 3) (tstamp 0a4a3997-38ef-4d0e-9564-e8fddb86f922)) (arc (start 105.55 105.007455) (mid 105.395949 105.418347) (end 105.010043 105.626951) (width 0.25) (layer "B.Cu") (net 3) (tstamp 13cb3b48-8242-4aca-8740-f300a737707d)) (arc (start 111.126951 102.520043) (mid 110.918896 102.906238) (end 110.508336 103.06) (width 0.25) (layer "B.Cu") (net 3) (tstamp 491348d3-e4d6-4108-b701-6c81b2b1f1e4)) (arc (start 104.925 106.616116) (mid 104.877425 106.855293) (end 104.741942 107.058058) (width 0.25) (layer "B.Cu") (net 3) (tstamp 6570c4ef-bb19-4c9c-955c-0a6baa3cecd0)) (arc (start 106.089956 105.626951) (mid 105.703762 105.418896) (end 105.55 105.008336) (width 0.25) (layer "B.Cu") (net 3) (tstamp 6ac2f518-5c45-4425-aca1-6d9b0a03f4f0)) (arc (start 149.7 102.075) (mid 150.23033 101.85533) (end 150.45 101.325) (width 0.25) (layer "B.Cu") (net 3) (tstamp 6f718415-8fe3-4b08-9da0-47c0006768a8)) (arc (start 150.45 99.502545) (mid 150.604051 99.091653) (end 150.989956 98.883048) (width 0.25) (layer "B.Cu") (net 3) (tstamp 72e7f0b9-7d82-4a8c-b168-6a1f507414b9)) (arc (start 107.875 110.875) (mid 107.65533 110.34467) (end 107.125 110.125) (width 0.25) (layer "B.Cu") (net 3) (tstamp 7af35283-0dbe-48f9-ab54-b30939d1bdc2)) (arc (start 209.65 120.625) (mid 208.77132 122.74632) (end 206.65 123.625) (width 0.25) (layer "B.Cu") (net 3) (tstamp 84f5eec5-0aae-4f08-929f-37bea6c378ca)) (arc (start 212.491154 100.90469) (mid 212.173245 101.033594) (end 211.835187 100.975287) (width 0.25) (layer "B.Cu") (net 3) (tstamp 859c5699-31b0-410b-aa67-bedcb6e9e28b)) (arc (start 213.509338 98.259509) (mid 213.226205 98.609149) (end 213.125 99.04752) (width 0.25) (layer "B.Cu") (net 3) (tstamp 88a64235-4c97-4dc3-bf2f-3246c8cc30ce)) (arc (start 218.425 89.188195) (mid 218.349096 88.859417) (end 218.136746 88.597187) (width 0.25) (layer "B.Cu") (net 3) (tstamp 8b928df5-0140-4d6b-966a-71b902f7e07d)) (arc (start 213.125 100.043676) (mid 213.049096 100.372454) (end 212.836746 100.634684) (width 0.25) (layer "B.Cu") (net 3) (tstamp 8c1d2b78-4332-40e4-bb92-a2bbe66617ec)) (arc (start 149.910043 98.883048) (mid 150.296238 99.091104) (end 150.45 99.501664) (width 0.25) (layer "B.Cu") (net 3) (tstamp a2084556-1846-4e5c-9980-9646ce360a41)) (arc (start 217.891934 88.405919) (mid 217.688463 88.124542) (end 217.666556 87.778) (width 0.25) (layer "B.Cu") (net 3) (tstamp a5c865e6-6595-4e5d-94c1-b45ee4c3baed)) (arc (start 104.925 110.125) (mid 104.39467 109.90533) (end 104.175 109.375) (width 0.25) (layer "B.Cu") (net 3) (tstamp a6f872f9-eb14-4dd1-afbb-43c4f22eff22)) (arc (start 217.235187 88.334712) (mid 217.573245 88.276406) (end 217.891154 88.40531) (width 0.25) (layer "B.Cu") (net 3) (tstamp a8d216bc-0ba1-456c-a16c-7e93c360d1c8)) (arc (start 210.833443 101.748) (mid 210.811537 102.094542) (end 210.608067 102.375919) (width 0.25) (layer "B.Cu") (net 3) (tstamp ab5cba30-6eaf-44be-9765-e63f0834091e)) (arc (start 218.136746 94.644182) (mid 218.349095 94.381952) (end 218.425 94.053174) (width 0.25) (layer "B.Cu") (net 3) (tstamp b00e9c70-a54b-4be5-8a80-9f093dba8349)) (arc (start 133.20404 103.163544) (mid 135.163635 102.351853) (end 137.26654 102.075) (width 0.25) (layer "B.Cu") (net 3) (tstamp b6fc9a06-1c01-4abf-a72e-cd787761a456)) (arc (start 110.507455 103.06) (mid 110.918347 103.214051) (end 111.126951 103.599956) (width 0.25) (layer "B.Cu") (net 3) (tstamp b81570f3-a466-46cf-93a6-0f7c1f3b76d1)) (arc (start 212.266556 101.531999) (mid 212.288463 101.185458) (end 212.491933 100.904081) (width 0.25) (layer "B.Cu") (net 3) (tstamp b9118e41-d92c-4a1b-b908-d9ab1293542f)) (arc (start 110.875 123.625) (mid 108.75368 122.74632) (end 107.875 120.625) (width 0.25) (layer "B.Cu") (net 3) (tstamp bb469b41-30e4-4d1a-9944-b4899f83d307)) (arc (start 104.741942 107.058058) (mid 104.944707 106.922575) (end 105.183884 106.875) (width 0.25) (layer "B.Cu") (net 3) (tstamp c34f7b84-da5e-489a-bf49-d1fe43932603)) (arc (start 104.175 107.93566) (mid 104.23209 107.648647) (end 104.39467 107.40533) (width 0.25) (layer "B.Cu") (net 3) (tstamp c8f1c0df-a581-4340-abfe-d1fc80d49d3c)) (arc (start 124.933458 106.875) (mid 126.712839 106.64074) (end 128.370958 105.953925) (width 0.25) (layer "B.Cu") (net 3) (tstamp d0831a6b-548c-4ca4-bc5b-78eb821aedf1)) (arc (start 209.942097 102.896232) (mid 209.726916 103.161958) (end 209.65 103.49512) (width 0.25) (layer "B.Cu") (net 3) (tstamp d44d3aed-cd8c-448f-ad26-3a1ba6e3adfb)) (arc (start 210.608846 102.375311) (mid 210.926756 102.246407) (end 211.264814 102.304713) (width 0.25) (layer "B.Cu") (net 3) (tstamp f4055dc9-2068-4f91-8be8-e9b0bbb366fc)) (segment (start 190.95 116.635) (end 171.95 116.635) (width 0.25) (layer "F.Cu") (net 4) (tstamp 1d1c1786-d95e-4f0d-810a-c21e08ec4e8f)) (segment (start 151.825 107.525) (end 150.45 107.525) (width 0.25) (layer "F.Cu") (net 4) (tstamp 4c5a9965-394c-4c03-8d31-5a60ead56cd0)) (segment (start 95.95 108.125) (end 86.55 108.125) (width 0.25) (layer "F.Cu") (net 4) (tstamp 70d138ec-aaa0-4b01-a6ab-91a05740162a)) (segment (start 104.570406 109.729594) (end 105.55 108.75) (width 0.25) (layer "F.Cu") (net 4) (tstamp d11184f1-4b67-4cd5-9ec9-c634586f6fef)) (segment (start 169.45 116.635) (end 155.575 116.635) (width 0.25) (layer "F.Cu") (net 4) (tstamp dc9c9f62-6ad0-4868-bdec-99de026810d0)) (segment (start 171.95 116.635) (end 169.45 116.635) (width 0.25) (layer "F.Cu") (net 4) (tstamp e57c1155-4dfd-41e6-8352-3aa1a6926199)) (segment (start 103.615812 110.125) (end 97.95 110.125) (width 0.25) (layer "F.Cu") (net 4) (tstamp e8eacc65-c683-4cb7-b5e9-6b09bee5bc3e)) (segment (start 152.575 113.635) (end 152.575 108.275) (width 0.25) (layer "F.Cu") (net 4) (tstamp e92a87d3-79aa-40d9-af21-9e755d85ab58)) (arc (start 96.575 108.75) (mid 96.977728 109.722272) (end 97.95 110.125) (width 0.25) (layer "F.Cu") (net 4) (tstamp 1bf74197-792a-413f-a7c1-3210dc29763a)) (arc (start 170.7 116.635) (mid 171.141942 116.818058) (end 171.325 117.26) (width 0.25) (layer "F.Cu") (net 4) (tstamp 2cc71e0e-bc86-4af1-983a-dc046ab6c207)) (arc (start 151.692545 107.525) (mid 151.281653 107.370949) (end 151.073048 106.985043) (width 0.25) (layer "F.Cu") (net 4) (tstamp 34c3f5ad-fa70-44ab-8f5f-f42d0e431be3)) (arc (start 104.741942 109.558058) (mid 104.944707 109.422575) (end 105.183884 109.375) (width 0.25) (layer "F.Cu") (net 4) (tstamp 38290ec0-fac6-42da-92c7-8fb6e5418a54)) (arc (start 96.575 108.75) (mid 96.391942 108.308058) (end 95.95 108.125) (width 0.25) (layer "F.Cu") (net 4) (tstamp 520ddd82-27e7-4b6c-9f96-e60ed4ef2788)) (arc (start 104.570406 109.729594) (mid 104.132435 110.022237) (end 103.615812 110.125) (width 0.25) (layer "F.Cu") (net 4) (tstamp 54dd4d34-22a9-4f66-b9e6-4eac2a7f72e4)) (arc (start 152.575 108.275) (mid 152.35533 107.74467) (end 151.825 107.525) (width 0.25) (layer "F.Cu") (net 4) (tstamp 5a13c34f-3cd8-4c20-8006-01b24c7cb2d4)) (arc (start 151.073048 108.064956) (mid 151.281104 107.678762) (end 151.691664 107.525) (width 0.25) (layer "F.Cu") (net 4) (tstamp 5a2b09b9-989d-42a1-ac13-2be254491634)) (arc (start 104.925 109.116116) (mid 104.877425 109.355293) (end 104.741942 109.558058) (width 0.25) (layer "F.Cu") (net 4) (tstamp 5ee82cc2-6046-49be-9d04-4cb41d85627e)) (arc (start 87.175 108.75) (mid 87.358058 108.308058) (end 87.8 108.125) (width 0.25) (layer "F.Cu") (net 4) (tstamp 87045658-b378-4af5-8474-30b962b9240e)) (arc (start 189.7 116.635) (mid 190.141942 116.818058) (end 190.325 117.26) (width 0.25) (layer "F.Cu") (net 4) (tstamp 92c5a271-d1b1-40bf-8058-bba448f0a65f)) (arc (start 172.575 117.26) (mid 172.758058 116.818058) (end 173.2 116.635) (width 0.25) (layer "F.Cu") (net 4) (tstamp b3778036-23e1-424e-93d2-ce66cb6ecf13)) (arc (start 170.075 117.26) (mid 170.258058 116.818058) (end 170.7 116.635) (width 0.25) (layer "F.Cu") (net 4) (tstamp c84b6a36-c00b-4274-b807-4c569347f6c0)) (arc (start 155.575 116.635) (mid 153.45368 115.75632) (end 152.575 113.635) (width 0.25) (layer "F.Cu") (net 4) (tstamp df3fda6b-9ea4-40ac-bf14-8b0e8fbd8dce)) (arc (start 168.2 116.635) (mid 168.641942 116.818058) (end 168.825 117.26) (width 0.25) (layer "F.Cu") (net 4) (tstamp f3dfc1d7-9116-4e48-9a39-01adef746bdf)) (segment (start 149.7 103.325) (end 137.266541 103.325) (width 0.25) (layer "B.Cu") (net 4) (tstamp 004d84c7-2a77-4666-9551-8e751c6cac68)) (segment (start 216.620495 94.011601) (end 211.532096 99.1) (width 0.25) (layer "B.Cu") (net 4) (tstamp 1474298b-8176-4da0-b860-58ec34f74c78)) (segment (start 128.25 122.875) (end 110.875 122.875) (width 0.25) (layer "B.Cu") (net 4) (tstamp 2a59ffc4-a54f-4173-8114-3bdb6f109c5e)) (segment (start 150.45 107.525) (end 150.45 104.075) (width 0.25) (layer "B.Cu") (net 4) (tstamp 31364290-5476-4817-9341-ea1373b2c95c)) (segment (start 108.625 110.875) (end 108.625 120.625) (width 0.25) (layer "B.Cu") (net 4) (tstamp 556f96d1-d2b5-4a10-9a47-15ed4ebea09a)) (segment (start 208.9 102.198086) (end 208.9 120.625) (width 0.25) (layer "B.Cu") (net 4) (tstamp 8069334f-a708-4471-bfb8-82336ee19ae6)) (segment (start 107.125 109.375) (end 105.55 109.375) (width 0.25) (layer "B.Cu") (net 4) (tstamp 9df59699-c7b8-4039-a95b-297d6c335689)) (segment (start 206.65 122.875) (end 128.25 122.875) (width 0.25) (layer "B.Cu") (net 4) (tstamp b367bc27-3299-46f7-96cf-f25983ca2eba)) (segment (start 216.95 90.21) (end 216.95 93.216106) (width 0.25) (layer "B.Cu") (net 4) (tstamp c730229b-a6af-4b19-bf09-8fbcc31eefaf)) (segment (start 124.933459 108.125) (end 105.55 108.125) (width 0.25) (layer "B.Cu") (net 4) (tstamp ee50076d-79ff-42a4-a3b1-2725a0127476)) (segment (start 133.829041 104.246075) (end 128.995959 107.036456) (width 0.25) (layer "B.Cu") (net 4) (tstamp f54a4f5a-ab0d-4f1e-be54-7e1da8626685)) (segment (start 211.532096 99.1) (end 209.229505 101.402591) (width 0.25) (layer "B.Cu") (net 4) (tstamp f73810b4-3158-4622-99f7-c24ba5948750)) (arc (start 150.989956 106.901951) (mid 150.603762 106.693896) (end 150.45 106.283336) (width 0.25) (layer "B.Cu") (net 4) (tstamp 04baf459-b0c7-4ce9-a6a8-76662eda2b09)) (arc (start 212.275 98.61598) (mid 212.322575 98.376803) (end 212.458058 98.174038) (width 0.25) (layer "B.Cu") (net 4) (tstamp 05fefe01-bf4a-458c-8495-62c23002bcca)) (arc (start 127.625 122.25) (mid 127.441942 122.691942) (end 127 122.875) (width 0.25) (layer "B.Cu") (net 4) (tstamp 2a46d202-4ac2-4f74-8fbc-bf4f01de0f03)) (arc (start 209.229505 101.402591) (mid 208.985636 101.767567) (end 208.9 102.198086) (width 0.25) (layer "B.Cu") (net 4) (tstamp 2bfd26a4-bca0-48cd-81dc-f167bc2097d6)) (arc (start 124.933459 108.125) (mid 127.036364 107.848147) (end 128.995959 107.036456) (width 0.25) (layer "B.Cu") (net 4) (tstamp 333deeb0-877a-46d0-ae4f-9e9620f292ce)) (arc (start 216.95 91.404765) (mid 217.045797 91.072246) (end 217.303821 90.84166) (width 0.25) (layer "B.Cu") (net 4) (tstamp 38027830-4872-42fd-bcbd-715272c5317f)) (arc (start 150.45 104.075) (mid 150.23033 103.54467) (end 149.7 103.325) (width 0.25) (layer "B.Cu") (net 4) (tstamp 383c5aa2-4cad-42db-acb1-02c2096e0609)) (arc (start 107.125 109.375) (mid 108.18566 109.81434) (end 108.625 110.875) (width 0.25) (layer "B.Cu") (net 4) (tstamp 41bffd66-ea45-4705-83ba-115dbabd62fa)) (arc (start 210.825 99.548212) (mid 210.777425 99.787389) (end 210.641942 99.990154) (width 0.25) (layer "B.Cu") (net 4) (tstamp 4e3642b7-a9e1-444a-a15e-6cec3a9f6a8d)) (arc (start 108.625 120.625) (mid 109.28401 122.21599) (end 110.875 122.875) (width 0.25) (layer "B.Cu") (net 4) (tstamp 5206d3e1-3419-49f0-a036-302251b15a12)) (arc (start 210.624038 100.008058) (mid 210.826803 99.872575) (end 211.06598 99.825) (width 0.25) (layer "B.Cu") (net 4) (tstamp 6b23e94d-6bc7-44ee-9f6a-ddb6c7c79d53)) (arc (start 137.266541 103.325) (mid 135.48716 103.55926) (end 133.829041 104.246075) (width 0.25) (layer "B.Cu") (net 4) (tstamp 7e67a85d-3aac-4737-9849-31bbe3843e56)) (arc (start 208.9 120.625) (mid 208.24099 122.21599) (end 206.65 122.875) (width 0.25) (layer "B.Cu") (net 4) (tstamp ba3ab3d2-823e-4b6a-8385-d89a6305daa1)) (arc (start 129.5 122.875) (mid 129.058058 122.691942) (end 128.875 122.25) (width 0.25) (layer "B.Cu") (net 4) (tstamp bacc9a9f-0f84-4fde-b57c-f6ef76a1e54f)) (arc (start 106.8 109.375) (mid 106.358058 109.191942) (end 106.175 108.75) (width 0.25) (layer "B.Cu") (net 4) (tstamp c2eeb8c1-5bc2-40a4-a412-c16b5ded8fcf)) (arc (start 212.440154 98.191942) (mid 212.237389 98.327425) (end 211.998212 98.375) (width 0.25) (layer "B.Cu") (net 4) (tstamp c52ec9b5-828c-419d-8f3d-70bd001dc725)) (arc (start 150.45 106.282455) (mid 150.295949 106.693347) (end 149.910043 106.901951) (width 0.25) (layer "B.Cu") (net 4) (tstamp ca942f1f-06a4-43b4-bece-a38c3600902a)) (arc (start 216.95 93.216106) (mid 216.864364 93.646625) (end 216.620495 94.011601) (width 0.25) (layer "B.Cu") (net 4) (tstamp d71718b2-5f7c-4301-aa3c-86b0a57ac77a)) (arc (start 216.596179 90.84166) (mid 216.854203 91.072246) (end 216.95 91.404765) (width 0.25) (layer "B.Cu") (net 4) (tstamp ebf5207f-3e06-4469-9363-8e357bd59ccb)) (arc (start 106.175 108.75) (mid 106.358058 108.308058) (end 106.8 108.125) (width 0.25) (layer "B.Cu") (net 4) (tstamp f9bde9b6-08a3-4e05-9f47-da7634e8163d)) (segment (start 154.657084 131.125) (end 149.512 131.125) (width 0.25) (layer "F.Cu") (net 5) (tstamp 33f4b4db-b1b9-448a-8490-328321d5eebd)) (segment (start 171.595514 132.012706) (end 154.657084 131.125) (width 0.25) (layer "F.Cu") (net 5) (tstamp 4eade126-40de-4018-9579-db08d5d6dd27)) (segment (start 111.625 140.435) (end 128.25 140.435) (width 0.25) (layer "F.Cu") (net 5) (tstamp 65871a71-dd96-4c7c-85aa-f221fbd0cb78)) (segment (start 171.595514 132.012706) (end 176.276444 132.258023) (width 0.25) (layer "F.Cu") (net 5) (tstamp 67da4586-a87e-4cd2-b390-af5803b545a0)) (segment (start 177.81653 132.543461) (end 197.964844 139.090044) (width 0.25) (layer "F.Cu") (net 5) (tstamp 69454cc4-fe6d-4801-bb1e-a2b1b3a39896)) (segment (start 149.512 131.125) (end 134.5 131.125) (width 0.25) (layer "F.Cu") (net 5) (tstamp 708513a0-6165-48c4-8216-7d655949d6c3)) (segment (start 197.964844 139.090044) (end 213.275735 144.064854) (width 0.25) (layer "F.Cu") (net 5) (tstamp 965a9fd1-df91-4426-a840-a8a36954df84)) (segment (start 133 132.625) (end 133 137.435) (width 0.25) (layer "F.Cu") (net 5) (tstamp aa4706a9-7851-43c2-8dfb-52221ed3347a)) (segment (start 128.25 140.435) (end 130 140.435) (width 0.25) (layer "F.Cu") (net 5) (tstamp cbb237ff-a910-4527-8bcd-22f3f517d64b)) (arc (start 148.262 131.125) (mid 148.703942 131.308058) (end 148.887 131.75) (width 0.25) (layer "F.Cu") (net 5) (tstamp 05747684-1496-4927-89d0-0eafebf5ccb3)) (arc (start 170.354673 131.947676) (mid 170.756939 132.123019) (end 170.945059 132.519313) (width 0.25) (layer "F.Cu") (net 5) (tstamp 18a59337-a108-4be1-a17d-7a54940a343b)) (arc (start 133 137.435) (mid 132.12132 139.55632) (end 130 140.435) (width 0.25) (layer "F.Cu") (net 5) (tstamp 3aae9ba0-6627-4ec2-95b3-16bdae433990)) (arc (start 199.146573 139.474011) (mid 198.803396 139.200527) (end 198.724253 138.769047) (width 0.25) (layer "F.Cu") (net 5) (tstamp 567f0921-842a-437b-90e3-f380c9a9a30f)) (arc (start 127 140.435) (mid 127.441942 140.618058) (end 127.625 141.06) (width 0.25) (layer "F.Cu") (net 5) (tstamp 6d4e813f-8c77-44f7-a4b1-73bc502a7631)) (arc (start 197.539145 138.383982) (mid 197.221933 138.686983) (end 196.783952 138.706349) (width 0.25) (layer "F.Cu") (net 5) (tstamp 7309b089-c843-439f-848c-0d97d8ecce69)) (arc (start 196.783115 138.706077) (mid 197.126292 138.979561) (end 197.205434 139.41104) (width 0.25) (layer "F.Cu") (net 5) (tstamp 7a9023f7-c181-4c9a-94fa-a1e1d7d54ce5)) (arc (start 172.836355 132.077736) (mid 172.434089 131.902393) (end 172.245968 131.506098) (width 0.25) (layer "F.Cu") (net 5) (tstamp 80e4491d-1bb6-48ec-bcc4-22a58899092c)) (arc (start 176.276444 132.258023) (mid 177.055841 132.350271) (end 177.81653 132.543461) (width 0.25) (layer "F.Cu") (net 5) (tstamp 8d788c00-7b24-4150-bbfc-875aceaeb8af)) (arc (start 134.5 131.125) (mid 133.43934 131.56434) (end 133 132.625) (width 0.25) (layer "F.Cu") (net 5) (tstamp 8e3cb9bc-41b2-4a1e-8db1-d943c0f8cd2a)) (arc (start 212.88917 143.485163) (mid 212.576671 143.712207) (end 212.190399 143.712207) (width 0.25) (layer "F.Cu") (net 5) (tstamp 958495a9-0a6b-4e04-8006-841d4f36ddfe)) (arc (start 171.001577 131.440882) (mid 170.773595 131.815659) (end 170.355551 131.947722) (width 0.25) (layer "F.Cu") (net 5) (tstamp b0036108-b083-43b8-9df0-3854f64670cd)) (arc (start 150.137 131.75) (mid 150.320058 131.308058) (end 150.762 131.125) (width 0.25) (layer "F.Cu") (net 5) (tstamp bb84a06a-0acf-4af1-be6a-4ca7ce8ba194)) (arc (start 198.390542 139.796105) (mid 198.707755 139.493105) (end 199.145736 139.473739) (width 0.25) (layer "F.Cu") (net 5) (tstamp dfebee9d-86df-4e49-92ba-5c54c289a74f)) (arc (start 172.18945 132.584529) (mid 172.417433 132.209753) (end 172.835477 132.07769) (width 0.25) (layer "F.Cu") (net 5) (tstamp e8db4526-2adf-4b8b-b0e5-4cf0261935ae)) (arc (start 212.022552 143.65767) (mid 212.302422 143.843558) (end 212.44504 144.147985) (width 0.25) (layer "F.Cu") (net 5) (tstamp ed523399-3dca-46bc-9bbb-c429e9689726)) (arc (start 112.25 141.06) (mid 112.433058 140.618058) (end 112.875 140.435) (width 0.25) (layer "F.Cu") (net 5) (tstamp fc536c2f-248d-4498-af3b-0dc8b031d062)) (arc (start 128.875 141.06) (mid 129.058058 140.618058) (end 129.5 140.435) (width 0.25) (layer "F.Cu") (net 5) (tstamp ff0303cc-ad1d-40ca-afb1-225d084e38b6)) (segment (start 215.728814 100.743354) (end 216.95 100.37) (width 0.25) (layer "B.Cu") (net 5) (tstamp 04a16ed6-9b5e-45ae-9e65-178717bdf2e2)) (segment (start 211.55 109.26) (end 211.55 142.18938) (width 0.25) (layer "B.Cu") (net 5) (tstamp 49edb05b-497f-4c79-998f-ab7af933871a)) (segment (start 111.625 141.06) (end 95.924161 141.051217) (width 0.25) (layer "B.Cu") (net 5) (tstamp 5fd2d46e-46a3-4793-bf75-115a660d1990)) (segment (start 94.425 139.551217) (end 94.425 132.96) (width 0.25) (layer "B.Cu") (net 5) (tstamp 665bc742-ed64-4313-af8f-0ad4d779e263)) (segment (start 215.375 101.221506) (end 215.375 106.980638) (width 0.25) (layer "B.Cu") (net 5) (tstamp 88e8d021-9b0d-422c-9737-ce079160514f)) (segment (start 93.675221 132.21) (end 88.049785 132.209195) (width 0.25) (layer "B.Cu") (net 5) (tstamp a9ddb6b2-8d1f-4dd4-af11-47b3117bd831)) (segment (start 212.013742 143.099524) (end 213.275735 144.016416) (width 0.25) (layer "B.Cu") (net 5) (tstamp b43a024e-49a3-4e95-9031-8c09cf7270b5)) (segment (start 211.55 109.26) (end 214.313558 108.415096) (width 0.25) (layer "B.Cu") (net 5) (tstamp bec056ba-c754-4077-af7f-b8be6a3295d1)) (segment (start 86.55 127.75) (end 86.55 130.709196) (width 0.25) (layer "B.Cu") (net 5) (tstamp fca9fd14-b7b9-4a08-94da-cff0a0249cea)) (arc (start 215.375 106.980638) (mid 215.080785 107.872872) (end 214.313558 108.415096) (width 0.25) (layer "B.Cu") (net 5) (tstamp 00a9c574-fc80-4c8c-91cb-8e4a48c38614)) (arc (start 86.55 128.992545) (mid 86.704051 128.581653) (end 87.089956 128.373048) (width 0.25) (layer "B.Cu") (net 5) (tstamp 1bc8d66a-b1a3-4048-8421-1a1cd7a825e8)) (arc (start 212.69319 108.910492) (mid 212.367864 108.921317) (end 212.081208 108.767116) (width 0.25) (layer "B.Cu") (net 5) (tstamp 1f837422-84db-4cc9-8ad7-79df99819e35)) (arc (start 215.80681 100.719508) (mid 216.132137 100.708682) (end 216.418791 100.862883) (width 0.25) (layer "B.Cu") (net 5) (tstamp 34514def-bb0c-4c34-81bc-1c70f884e26d)) (arc (start 212.266282 109.369201) (mid 212.417986 109.082599) (end 212.69288 108.910587) (width 0.25) (layer "B.Cu") (net 5) (tstamp 37ea7a7b-47a4-40e9-86c1-9d6665683e39)) (arc (start 212.270496 143.286067) (mid 212.512365 143.652212) (end 212.4543 144.087029) (width 0.25) (layer "B.Cu") (net 5) (tstamp 3e927824-93a2-4765-b495-66252035ee1c)) (arc (start 211.196179 109.89166) (mid 211.454203 110.122246) (end 211.55 110.454765) (width 0.25) (layer "B.Cu") (net 5) (tstamp 3fac22ae-794d-4668-bb4d-a9f63d6c1d25)) (arc (start 94.425 132.96) (mid 94.205408 132.429748) (end 93.675221 132.21) (width 0.25) (layer "B.Cu") (net 5) (tstamp 4a1dd7e5-cc76-45b4-8d97-22a3b825acae)) (arc (start 111.001951 140.520043) (mid 110.793619 140.905901) (end 110.38312 141.059305) (width 0.25) (layer "B.Cu") (net 5) (tstamp 4df97a1b-1ea5-4f0c-bdbd-676f767b6c6d)) (arc (start 215.375 101.221506) (mid 215.473071 100.924095) (end 215.728814 100.743354) (width 0.25) (layer "B.Cu") (net 5) (tstamp 56a495e2-3616-409b-b71f-7d72c0baf6f5)) (arc (start 110.382724 141.059305) (mid 110.793657 141.213698) (end 111.001951 141.599956) (width 0.25) (layer "B.Cu") (net 5) (tstamp 61ec2aa9-b4ee-4c34-9088-46a632dfa8e3)) (arc (start 213.089057 143.213362) (mid 212.693737 143.403509) (end 212.271208 143.286584) (width 0.25) (layer "B.Cu") (net 5) (tstamp 880130b8-5a2c-49b9-b1f9-0e4463f8f4ec)) (arc (start 211.55 110.454765) (mid 211.645797 110.122246) (end 211.903821 109.89166) (width 0.25) (layer "B.Cu") (net 5) (tstamp 8854eb94-0a41-49f3-980c-c7b3cefbec5d)) (arc (start 211.55 142.18938) (mid 211.672618 142.700119) (end 212.013742 143.099524) (width 0.25) (layer "B.Cu") (net 5) (tstamp 9f2b3877-675b-47ff-b7da-d93eb042b10b)) (arc (start 86.010043 128.373048) (mid 86.396238 128.581104) (end 86.55 128.991664) (width 0.25) (layer "B.Cu") (net 5) (tstamp a458cb2e-6167-43b2-bcc5-51911f470840)) (arc (start 88.049785 132.209195) (mid 86.989265 131.769779) (end 86.55 130.709196) (width 0.25) (layer "B.Cu") (net 5) (tstamp acf5352e-3e93-47b2-b48d-20fc41794d7b)) (arc (start 95.924161 141.051217) (mid 94.864043 140.61158) (end 94.425 139.551217) (width 0.25) (layer "B.Cu") (net 5) (tstamp dc7b6a1f-66bc-485c-b88d-6470014ab41f)) (arc (start 216.233717 100.260799) (mid 216.082015 100.547402) (end 215.80712 100.719413) (width 0.25) (layer "B.Cu") (net 5) (tstamp e1f78513-296a-4c04-b6a7-d50c17ab6e4b)) (segment (start 213.713929 126.267379) (end 215.25 123.23) (width 0.25) (layer "F.Cu") (net 6) (tstamp 1373359f-e757-42cb-80e7-6cc3004ab5ed)) (segment (start 85.175 73.92) (end 85.175 76.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp 173e16b8-9a19-4933-b2e3-b7c253678024)) (segment (start 132.25 137.435) (end 132.25 132.625) (width 0.25) (layer "F.Cu") (net 6) (tstamp 18db89a9-b9b1-40e6-9fed-a30558f400e2)) (segment (start 86.26 133.46) (end 93.675 133.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp 21de036c-08ea-4fd4-99d3-9e7a5d7ef5d0)) (segment (start 85.175 92.92) (end 85.175 95.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp 29bfd3d5-d846-4dfb-9f99-6096b086d18e)) (segment (start 94.425 134.21) (end 94.425 138.185) (width 0.25) (layer "F.Cu") (net 6) (tstamp 333065cd-83a2-4b65-b136-8c5232ddb1db)) (segment (start 85.175 95.46) (end 85.175 111.92) (width 0.25) (layer "F.Cu") (net 6) (tstamp 427c7fd2-69a8-454d-9a55-2dc67df70970)) (segment (start 134.5 130.375) (end 207.025 130.375) (width 0.25) (layer "F.Cu") (net 6) (tstamp 6c81f606-5c0b-4cae-a640-0f1e41be67b9)) (segment (start 85.175 76.46) (end 85.175 92.92) (width 0.25) (layer "F.Cu") (net 6) (tstamp 8f7036ad-e981-4eaf-a746-7b6b690f788e)) (segment (start 85.175 57.46) (end 85.175 73.92) (width 0.25) (layer "F.Cu") (net 6) (tstamp 9fd65c75-b2b7-49c7-b8a3-3839ed51b958)) (segment (start 85.175 54.92) (end 85.175 57.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp d7b79d28-6c6c-4daf-97ab-87f355c247d7)) (segment (start 95.925 139.685) (end 130 139.685) (width 0.25) (layer "F.Cu") (net 6) (tstamp ddc4c649-0817-4100-a4cb-4100e1c68fe5)) (segment (start 85.175 114.46) (end 85.175 130.92) (width 0.25) (layer "F.Cu") (net 6) (tstamp eca1df46-fb12-4c54-9fb3-29cb5312fb76)) (segment (start 85.175 111.92) (end 85.175 114.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp f5409d56-bafc-4927-9e6f-e6c42239d959)) (segment (start 85.175 130.92) (end 85.175 133.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp f747fddc-bbc7-46ba-ac09-714a9ecb1491)) (arc (start 84.955908 76.999314) (mid 85.117591 77.212904) (end 85.175 77.474564) (width 0.25) (layer "F.Cu") (net 6) (tstamp 07d9fcbd-eb8b-4732-bce8-cc706457c03c)) (arc (start 93.675 133.46) (mid 94.20533 133.67967) (end 94.425 134.21) (width 0.25) (layer "F.Cu") (net 6) (tstamp 104b7495-74a3-4cfe-90f8-ae9824701573)) (arc (start 132.25 132.625) (mid 132.90901 131.03401) (end 134.5 130.375) (width 0.25) (layer "F.Cu") (net 6) (tstamp 136c38e3-faa1-46e0-b3af-2f64065b50a9)) (arc (start 85.175 93.934564) (mid 85.232409 93.672904) (end 85.394091 93.459313) (width 0.25) (layer "F.Cu") (net 6) (tstamp 177b2679-56fc-484d-8075-57c55da16926)) (arc (start 85.175 94.445436) (mid 85.117591 94.707096) (end 84.955908 94.920685) (width 0.25) (layer "F.Cu") (net 6) (tstamp 18da7392-6120-4154-9ed2-d15560d296b4)) (arc (start 85.8 56.785) (mid 85.358058 56.601942) (end 85.175 56.16) (width 0.25) (layer "F.Cu") (net 6) (tstamp 21026352-6947-4dba-af58-526dbf708cd1)) (arc (start 214.709918 124.297941) (mid 214.940286 124.047594) (end 215.267653 123.955) (width 0.25) (layer "F.Cu") (net 6) (tstamp 2438e326-476d-4de8-9016-0cb8a5a4e248)) (arc (start 84.55 112.595) (mid 84.991942 112.778058) (end 85.175 113.22) (width 0.25) (layer "F.Cu") (net 6) (tstamp 2fd08ca6-78c9-4f4f-9188-b24df1626584)) (arc (start 85.175 115.76) (mid 85.358058 115.318058) (end 85.8 115.135) (width 0.25) (layer "F.Cu") (net 6) (tstamp 360ccc92-ac18-42f0-840b-bb3576d92c39)) (arc (start 85.175 58.76) (mid 85.358058 58.318058) (end 85.8 58.135) (width 0.25) (layer "F.Cu") (net 6) (tstamp 369ffd67-d369-4e5f-a6f0-62472fe39286)) (arc (start 85.8 94.785) (mid 85.358058 94.601942) (end 85.175 94.16) (width 0.25) (layer "F.Cu") (net 6) (tstamp 38316fc0-5f1e-4e18-8595-a90caa1d2f26)) (arc (start 214.650245 123.635006) (mid 214.77557 123.956761) (end 214.710922 124.295956) (width 0.25) (layer "F.Cu") (net 6) (tstamp 3acdaa53-6473-4b70-a244-8e9b6fc0f06d)) (arc (start 87.398782 133.46) (mid 87.089379 133.378042) (end 86.861083 133.153729) (width 0.25) (layer "F.Cu") (net 6) (tstamp 4af9c9ee-7dbe-40d0-8115-7fa91058d0a2)) (arc (start 85.8 113.785) (mid 85.358058 113.601942) (end 85.175 113.16) (width 0.25) (layer "F.Cu") (net 6) (tstamp 5a3df040-4718-490d-a8bb-c899bec4571f)) (arc (start 85.394092 73.380686) (mid 85.232409 73.167096) (end 85.175 72.905436) (width 0.25) (layer "F.Cu") (net 6) (tstamp 6a5ddf6b-0965-4247-8f6b-efed48ca1fff)) (arc (start 85.175 112.934564) (mid 85.232409 112.672904) (end 85.394091 112.459313) (width 0.25) (layer "F.Cu") (net 6) (tstamp 6a85b5d6-6ae8-430f-b1d9-94d80ed3a5ad)) (arc (start 84.55 55.595) (mid 84.991942 55.778058) (end 85.175 56.22) (width 0.25) (layer "F.Cu") (net 6) (tstamp 71bbf0a4-e5fc-42d6-be10-b55ab80dbcc3)) (arc (start 85.175 72.62) (mid 84.991942 73.061942) (end 84.55 73.245) (width 0.25) (layer "F.Cu") (net 6) (tstamp 7570c19f-70da-4e48-b861-66e32b6f7580)) (arc (start 84.955908 57.999314) (mid 85.117591 58.212904) (end 85.175 58.474564) (width 0.25) (layer "F.Cu") (net 6) (tstamp 7829dded-5a45-494e-b849-75248f49f609)) (arc (start 130 139.685) (mid 131.59099 139.02599) (end 132.25 137.435) (width 0.25) (layer "F.Cu") (net 6) (tstamp 7eb1ba12-c7b8-44eb-a74c-5f80db15f845)) (arc (start 85.394092 130.380686) (mid 85.232409 130.167096) (end 85.175 129.905436) (width 0.25) (layer "F.Cu") (net 6) (tstamp 7f50165c-8f02-415e-90a1-5560c70a219c)) (arc (start 84.55 131.595) (mid 84.991942 131.778058) (end 85.175 132.22) (width 0.25) (layer "F.Cu") (net 6) (tstamp 842aab95-523d-423d-9425-0bdd379c4a0f)) (arc (start 84.955908 95.999314) (mid 85.117591 96.212904) (end 85.175 96.474564) (width 0.25) (layer "F.Cu") (net 6) (tstamp 8443dd49-b675-46fb-9d7b-db2ef346a005)) (arc (start 85.175 55.934564) (mid 85.232409 55.672904) (end 85.394091 55.459313) (width 0.25) (layer "F.Cu") (net 6) (tstamp 861cff43-a97a-4a04-8398-8228e5cada76)) (arc (start 85.175 132.445436) (mid 85.117591 132.707096) (end 84.955908 132.920685) (width 0.25) (layer "F.Cu") (net 6) (tstamp 870c06a4-aa51-432f-a6d8-8553e88d5e6b)) (arc (start 85.394092 92.380686) (mid 85.232409 92.167096) (end 85.175 91.905436) (width 0.25) (layer "F.Cu") (net 6) (tstamp 8b2ca953-c425-4f53-8c77-3077b8140d11)) (arc (start 84.55 93.595) (mid 84.991942 93.778058) (end 85.175 94.22) (width 0.25) (layer "F.Cu") (net 6) (tstamp 8f6d00ce-46d2-4930-bcb8-ff4fd9629e67)) (arc (start 207.025 130.375) (mid 210.94974 129.266121) (end 213.713929 126.267379) (width 0.25) (layer "F.Cu") (net 6) (tstamp 9f5121cd-969f-4685-920a-be35441fcd54)) (arc (start 84.955908 114.999314) (mid 85.117591 115.212904) (end 85.175 115.474564) (width 0.25) (layer "F.Cu") (net 6) (tstamp a2a6191f-6011-41ca-9307-8561070e8a77)) (arc (start 85.394092 111.380686) (mid 85.232409 111.167096) (end 85.175 110.905436) (width 0.25) (layer "F.Cu") (net 6) (tstamp a3c734ec-5f6a-48b2-a4a0-846d3fe77c0e)) (arc (start 85.175 129.62) (mid 84.991942 130.061942) (end 84.55 130.245) (width 0.25) (layer "F.Cu") (net 6) (tstamp a4de1aff-57cc-4b77-bef1-1d8c9aa25871)) (arc (start 84.55 74.595) (mid 84.991942 74.778058) (end 85.175 75.22) (width 0.25) (layer "F.Cu") (net 6) (tstamp ad28b6f4-5b4e-4986-9035-b6e93332a72d)) (arc (start 85.175 110.62) (mid 84.991942 111.061942) (end 84.55 111.245) (width 0.25) (layer "F.Cu") (net 6) (tstamp b38ec2bf-496f-44d7-9390-ddef86780f92)) (arc (start 85.175 96.76) (mid 85.358058 96.318058) (end 85.8 96.135) (width 0.25) (layer "F.Cu") (net 6) (tstamp b6491114-de46-47d9-86d7-35f4af99a2e4)) (arc (start 85.175 75.445436) (mid 85.117591 75.707096) (end 84.955908 75.920685) (width 0.25) (layer "F.Cu") (net 6) (tstamp b7dea55a-abe2-4889-92e5-37a0e132f2c6)) (arc (start 86.861083 133.76627) (mid 87.089379 133.541958) (end 87.398782 133.46) (width 0.25) (layer "F.Cu") (net 6) (tstamp b812b50e-fe97-4dda-8e3d-e5b219d095fd)) (arc (start 85.8 75.785) (mid 85.358058 75.601942) (end 85.175 75.16) (width 0.25) (layer "F.Cu") (net 6) (tstamp c25b9c72-897c-4b95-a188-027fbecf608b)) (arc (start 85.175 77.76) (mid 85.358058 77.318058) (end 85.8 77.135) (width 0.25) (layer "F.Cu") (net 6) (tstamp d2bfb63e-7fb0-4f70-809f-e32d54b3abb2)) (arc (start 94.425 138.185) (mid 94.86434 139.24566) (end 95.925 139.685) (width 0.25) (layer "F.Cu") (net 6) (tstamp dc2b87f6-da68-4499-90de-bdf546c2195d)) (arc (start 85.8 132.785) (mid 85.358058 132.601942) (end 85.175 132.16) (width 0.25) (layer "F.Cu") (net 6) (tstamp df63b1ea-b263-4386-975c-66e38db40976)) (arc (start 85.175 91.62) (mid 84.991942 92.061942) (end 84.55 92.245) (width 0.25) (layer "F.Cu") (net 6) (tstamp e0492303-9705-43ea-8858-ba025a806274)) (arc (start 85.175 131.934564) (mid 85.232409 131.672904) (end 85.394091 131.459313) (width 0.25) (layer "F.Cu") (net 6) (tstamp e5f41f2a-5c61-4694-8129-6e96bd6227f4)) (arc (start 85.175 113.445436) (mid 85.117591 113.707096) (end 84.955908 113.920685) (width 0.25) (layer "F.Cu") (net 6) (tstamp ef1be487-74ef-498e-985c-e449b22c890c)) (arc (start 85.175 56.445436) (mid 85.117591 56.707096) (end 84.955908 56.920685) (width 0.25) (layer "F.Cu") (net 6) (tstamp ef44d60f-3dcb-40c8-bdbb-68c08f7ee85f)) (arc (start 85.175 74.934564) (mid 85.232409 74.672904) (end 85.394091 74.459313) (width 0.25) (layer "F.Cu") (net 6) (tstamp feabcc84-eb82-4f3b-9829-54c29e989298)) (segment (start 131.5 132.625) (end 131.5 137.435) (width 0.25) (layer "F.Cu") (net 7) (tstamp 258ece7e-8b2e-40aa-80f3-efcd8e78084c)) (segment (start 215.25 120.69) (end 214.073359 121.411288) (width 0.25) (layer "F.Cu") (net 7) (tstamp 56329fa3-a43f-4b4b-9572-52968e6c28ff)) (segment (start 104.175 130.92) (end 104.175 114.46) (width 0.25) (layer "F.Cu") (net 7) (tstamp 5dc6e4a6-2410-4792-8016-611d86c2af8a)) (segment (start 130 138.935) (end 111.75 138.935) (width 0.25) (layer "F.Cu") (net 7) (tstamp 6f27b148-753d-4d53-8e60-66bd824f2210)) (segment (start 110.25 137.435) (end 110.25 134.96) (width 0.25) (layer "F.Cu") (net 7) (tstamp 719ef9d8-e1e0-41f9-978a-7f7045cd8ee4)) (segment (start 207.025 129.625) (end 134.5 129.625) (width 0.25) (layer "F.Cu") (net 7) (tstamp 73af04a3-9264-4dfc-8989-30d0790e8e8e)) (segment (start 108.75 133.46) (end 105.935 133.46) (width 0.25) (layer "F.Cu") (net 7) (tstamp 91ecd000-8043-4e59-9341-1df7f5f0b504)) (segment (start 104.175 132.785) (end 104.175 130.92) (width 0.25) (layer "F.Cu") (net 7) (tstamp a20b4f75-0704-4eea-b71a-ca6b9a7871fd)) (segment (start 213.775 121.94414) (end 213.775 122.875) (width 0.25) (layer "F.Cu") (net 7) (tstamp abf74e81-5887-414b-ba9b-7f5e8d3ceb6f)) (segment (start 104.175 111.92) (end 104.175 114.46) (width 0.25) (layer "F.Cu") (net 7) (tstamp dc564681-249e-4a6e-b406-07495a388dd3)) (arc (start 104.8 132.785) (mid 104.358058 132.601942) (end 104.175 132.16) (width 0.25) (layer "F.Cu") (net 7) (tstamp 01a214fa-baad-4900-b8d1-0a6efe8e55fd)) (arc (start 214.231222 121.314517) (mid 214.555049 121.222374) (end 214.879697 121.31287) (width 0.25) (layer "F.Cu") (net 7) (tstamp 02f3b9e4-f9b2-4fcc-abba-a47e64c21afe)) (arc (start 105.853877 133.78337) (mid 106.082977 133.546698) (end 106.400556 133.46) (width 0.25) (layer "F.Cu") (net 7) (tstamp 07c9b9db-0c03-4247-a9bb-fceeb16453e3)) (arc (start 103.55 131.595) (mid 103.991942 131.778058) (end 104.175 132.22) (width 0.25) (layer "F.Cu") (net 7) (tstamp 0c6d2ffc-d7fe-43b8-9253-ff458c282454)) (arc (start 104.8 130.245) (mid 104.358058 130.061942) (end 104.175 129.62) (width 0.25) (layer "F.Cu") (net 7) (tstamp 1799ca41-0d3e-44ed-85b8-89b856f4fb09)) (arc (start 104.394092 130.380686) (mid 104.232409 130.167096) (end 104.175 129.905436) (width 0.25) (layer "F.Cu") (net 7) (tstamp 2b0a2f4e-43ef-4229-b611-6ad64e6ed06f)) (arc (start 111.75 138.935) (mid 110.68934 138.49566) (end 110.25 137.435) (width 0.25) (layer "F.Cu") (net 7) (tstamp 50f771fb-d349-403d-a1b8-33b8c43e649d)) (arc (start 214.073359 121.411288) (mid 213.854667 121.638792) (end 213.775 121.94414) (width 0.25) (layer "F.Cu") (net 7) (tstamp 5e2a26b3-46cd-4529-ba70-35fb30b26fe3)) (arc (start 134.5 129.625) (mid 132.37868 130.50368) (end 131.5 132.625) (width 0.25) (layer "F.Cu") (net 7) (tstamp 62feee1e-59b8-4fc7-b398-944a295a9874)) (arc (start 104.175 113.445436) (mid 104.117591 113.707096) (end 103.955908 113.920685) (width 0.25) (layer "F.Cu") (net 7) (tstamp 6c69a493-1b1d-4778-bef8-71241a7b0995)) (arc (start 106.399344 133.46) (mid 106.082696 133.37385) (end 105.854388 133.137369) (width 0.25) (layer "F.Cu") (net 7) (tstamp 70575f8f-5a30-4f02-b6d1-f67163d32132)) (arc (start 214.529549 120.757466) (mid 214.456089 121.076251) (end 214.231649 121.314255) (width 0.25) (layer "F.Cu") (net 7) (tstamp 84a240b1-f75d-4601-9316-5da18d36e3f5)) (arc (start 104.175 115.76) (mid 104.358058 115.318058) (end 104.8 115.135) (width 0.25) (layer "F.Cu") (net 7) (tstamp 85f40ef4-7307-42ed-8f8f-cdc7075593b0)) (arc (start 213.775 122.875) (mid 211.797971 127.647971) (end 207.025 129.625) (width 0.25) (layer "F.Cu") (net 7) (tstamp 871de21c-55ad-4299-b045-c75558e45ae5)) (arc (start 104.175 129.62) (mid 103.991942 130.061942) (end 103.55 130.245) (width 0.25) (layer "F.Cu") (net 7) (tstamp 8cb34778-c633-4935-a7d9-935475e8bf15)) (arc (start 103.55 112.595) (mid 103.991942 112.778058) (end 104.175 113.22) (width 0.25) (layer "F.Cu") (net 7) (tstamp 93a77224-9865-4f5e-b995-3e25224745f9)) (arc (start 104.175 131.934564) (mid 104.232409 131.672904) (end 104.394091 131.459313) (width 0.25) (layer "F.Cu") (net 7) (tstamp 96f32ee4-2d62-4e4e-95d1-aa0479d38735)) (arc (start 131.5 137.435) (mid 131.06066 138.49566) (end 130 138.935) (width 0.25) (layer "F.Cu") (net 7) (tstamp 9f30070e-e83f-493f-9d16-00c458710a28)) (arc (start 104.8 113.785) (mid 104.358058 113.601942) (end 104.175 113.16) (width 0.25) (layer "F.Cu") (net 7) (tstamp a72213d0-83a5-40ac-9a39-54a27285b05e)) (arc (start 103.955908 114.999314) (mid 104.117591 115.212904) (end 104.175 115.474564) (width 0.25) (layer "F.Cu") (net 7) (tstamp b0f978d7-c18d-4ad2-871c-794e08532cdf)) (arc (start 103.55 131.595) (mid 103.991942 131.778058) (end 104.175 132.22) (width 0.25) (layer "F.Cu") (net 7) (tstamp c36650ae-2a04-4f1b-bd20-910672250e0a)) (arc (start 104.175 132.22) (mid 104.358058 131.778058) (end 104.8 131.595) (width 0.25) (layer "F.Cu") (net 7) (tstamp ca6a7eec-9f23-47a0-b136-cd7ec70b0d50)) (arc (start 104.175 129.62) (mid 103.991942 130.061942) (end 103.55 130.245) (width 0.25) (layer "F.Cu") (net 7) (tstamp cffc9e4d-0f27-48dd-b80f-118095809fc0)) (arc (start 104.175 132.445406) (mid 104.116852 132.708663) (end 103.953226 132.922933) (width 0.25) (layer "F.Cu") (net 7) (tstamp dffa8dbf-2af5-4ba7-8b58-c27f352cb159)) (arc (start 110.25 134.96) (mid 109.81066 133.89934) (end 108.75 133.46) (width 0.25) (layer "F.Cu") (net 7) (tstamp f574d908-25dd-49f9-a584-1e365c5d6f17)) (arc (start 104.175 112.934564) (mid 104.232409 112.672904) (end 104.394091 112.459313) (width 0.25) (layer "F.Cu") (net 7) (tstamp fa489756-d707-4ace-8ebf-33e520038d18)) (segment (start 104.175 73.92) (end 104.175 76.46) (width 0.25) (layer "B.Cu") (net 7) (tstamp 2b3cb16e-426c-4c68-b146-b42ed48cade6)) (segment (start 104.175 92.92) (end 104.175 95.46) (width 0.25) (layer "B.Cu") (net 7) (tstamp 42b7d468-3b69-4852-9c1c-42441d37b315)) (segment (start 104.175 54.92) (end 104.175 57.46) (width 0.25) (layer "B.Cu") (net 7) (tstamp 64a5e3bf-d9d5-46b1-b336-eda67096557c)) (segment (start 103.425 107.93566) (end 103.425 111.795) (width 0.25) (layer "B.Cu") (net 7) (tstamp 8bb61084-6961-477c-9fad-ea229846462a)) (segment (start 104.175 76.46) (end 104.175 92.92) (width 0.25) (layer "B.Cu") (net 7) (tstamp 92886b8a-1f43-412d-8d14-6826117caed5)) (segment (start 104.175 57.46) (end 104.175 73.92) (width 0.25) (layer "B.Cu") (net 7) (tstamp 98fba5e7-b73e-43ab-bf2d-a7d9120641f2)) (segment (start 104.175 95.46) (end 104.175 106.124909) (width 0.25) (layer "B.Cu") (net 7) (tstamp af6b601b-88c6-4bc4-a11a-50d1cc8fbdd8)) (arc (start 103.955908 57.999314) (mid 104.117591 58.212904) (end 104.175 58.474564) (width 0.25) (layer "B.Cu") (net 7) (tstamp 00f1f64a-37da-4462-be4f-b4a2e71c8402)) (arc (start 104.394092 73.380686) (mid 104.232409 73.167096) (end 104.175 72.905436) (width 0.25) (layer "B.Cu") (net 7) (tstamp 07b7dec2-4d9e-4d59-a585-8cd7de55b5e8)) (arc (start 103.55 55.595) (mid 103.991942 55.778058) (end 104.175 56.22) (width 0.25) (layer "B.Cu") (net 7) (tstamp 1d07ffe6-326a-4da8-b688-35cb81702d34)) (arc (start 104.8 75.785) (mid 104.358058 75.601942) (end 104.175 75.16) (width 0.25) (layer "B.Cu") (net 7) (tstamp 23130e36-1d7e-4d6f-82bb-16895beba616)) (arc (start 104.175 96.76) (mid 104.358058 96.318058) (end 104.8 96.135) (width 0.25) (layer "B.Cu") (net 7) (tstamp 28e5648c-66bf-4605-a59d-fbe6ec259cd3)) (arc (start 104.175 75.445436) (mid 104.117591 75.707096) (end 103.955908 75.920685) (width 0.25) (layer "B.Cu") (net 7) (tstamp 33e363f3-7fcf-4b35-8d29-0560ad5735ee)) (arc (start 104.000967 111.24625) (mid 103.59105 111.047428) (end 103.425 110.623176) (width 0.25) (layer "B.Cu") (net 7) (tstamp 35006e05-49bc-4bdc-9bed-60cf42bc72b7)) (arc (start 104.8 94.785) (mid 104.358058 94.601942) (end 104.175 94.16) (width 0.25) (layer "B.Cu") (net 7) (tstamp 3744b7af-3a24-48b2-928c-bcc96ff289c9)) (arc (start 104.175 74.934564) (mid 104.232409 74.672904) (end 104.394091 74.459313) (width 0.25) (layer "B.Cu") (net 7) (tstamp 46aa300f-f3ce-4e51-816b-1c4f6f4d81f2)) (arc (start 103.955908 76.999314) (mid 104.117591 77.212904) (end 104.175 77.474564) (width 0.25) (layer "B.Cu") (net 7) (tstamp 4ede3127-8e00-4362-a275-840a441520df)) (arc (start 103.55 74.595) (mid 103.991942 74.778058) (end 104.175 75.22) (width 0.25) (layer "B.Cu") (net 7) (tstamp 6381d55a-643f-4062-8568-aa96c7b2c1df)) (arc (start 104.175 58.76) (mid 104.358058 58.318058) (end 104.8 58.135) (width 0.25) (layer "B.Cu") (net 7) (tstamp 674b7f80-a5f7-4be0-8a4b-a6adb89dded1)) (arc (start 104.175 106.124909) (mid 104.094251 106.530876) (end 103.86434 106.875) (width 0.25) (layer "B.Cu") (net 7) (tstamp 6ccc8b51-ecdb-491c-8564-87a115a05b59)) (arc (start 103.86434 106.875) (mid 103.539181 107.361635) (end 103.425 107.93566) (width 0.25) (layer "B.Cu") (net 7) (tstamp 7288221e-04dc-4a21-b019-6b2502be13fc)) (arc (start 103.55 93.595) (mid 103.991942 93.778058) (end 104.175 94.22) (width 0.25) (layer "B.Cu") (net 7) (tstamp 7bfee334-b1a5-4f2d-96dd-46d4e634d5ce)) (arc (start 104.175 56.445436) (mid 104.117591 56.707096) (end 103.955908 56.920685) (width 0.25) (layer "B.Cu") (net 7) (tstamp 97f7c50b-42ee-4d19-95a8-c5f4dff86271)) (arc (start 104.175 94.445436) (mid 104.117591 94.707096) (end 103.955908 94.920685) (width 0.25) (layer "B.Cu") (net 7) (tstamp 98b1805e-4038-4061-b238-84a257ba935d)) (arc (start 104.394092 92.380686) (mid 104.232409 92.167096) (end 104.175 91.905436) (width 0.25) (layer "B.Cu") (net 7) (tstamp a97f1bb9-bc4c-4ca0-9796-6986e142c4e8)) (arc (start 103.955908 95.999314) (mid 104.117591 96.212904) (end 104.175 96.474564) (width 0.25) (layer "B.Cu") (net 7) (tstamp aa10a29b-196a-4ac8-878f-47f104131dcf)) (arc (start 104.175 93.934564) (mid 104.232409 93.672904) (end 104.394091 93.459313) (width 0.25) (layer "B.Cu") (net 7) (tstamp abaa915e-ae40-44a9-abe3-4ebcdcda4488)) (arc (start 103.425 110.655219) (mid 103.290824 111.042152) (end 102.945904 111.262949) (width 0.25) (layer "B.Cu") (net 7) (tstamp c4f93c97-43b3-43b9-a48e-c60abdc4bb4d)) (arc (start 104.8 56.785) (mid 104.358058 56.601942) (end 104.175 56.16) (width 0.25) (layer "B.Cu") (net 7) (tstamp cd4e8aef-fee8-498c-941a-0411dd7dba63)) (arc (start 104.175 72.62) (mid 103.991942 73.061942) (end 103.55 73.245) (width 0.25) (layer "B.Cu") (net 7) (tstamp d1c106ab-6649-4042-ab8f-0d9e5d9c3175)) (arc (start 104.175 91.62) (mid 103.991942 92.061942) (end 103.55 92.245) (width 0.25) (layer "B.Cu") (net 7) (tstamp d8b35e44-ae92-49bd-ad7c-3615d5c50e95)) (arc (start 104.175 77.76) (mid 104.358058 77.318058) (end 104.8 77.135) (width 0.25) (layer "B.Cu") (net 7) (tstamp eb4391fe-da03-4339-a28b-d26c4263d841)) (arc (start 104.175 55.934564) (mid 104.232409 55.672904) (end 104.394091 55.459313) (width 0.25) (layer "B.Cu") (net 7) (tstamp ed25bebd-24e8-4b59-8f48-defeabdae3c5)) (segment (start 121.675 62.925) (end 111.125 62.925) (width 0.25) (layer "F.Cu") (net 8) (tstamp 02a0d244-b4f3-4f70-a567-a458205d25d5)) (segment (start 109.625 64.425) (end 109.625 100.925) (width 0.25) (layer "F.Cu") (net 8) (tstamp 1b7e61fb-517b-4465-8633-1296f420a174)) (segment (start 109.625 122.875) (end 109.625 114.46) (width 0.25) (layer "F.Cu") (net 8) (tstamp 1e630cbb-5066-475e-8b7a-4a4883b48216)) (segment (start 123.175 57.46) (end 123.175 54.92) (width 0.25) (layer "F.Cu") (net 8) (tstamp 338040f4-60b2-44d0-af57-88db3aec18cb)) (segment (start 211.525 122.875) (end 211.525 117.11) (width 0.25) (layer "F.Cu") (net 8) (tstamp 4130f68e-664a-4489-8b34-7071eba225cb)) (segment (start 114.125 127.375) (end 116.825 127.375) (width 0.25) (layer "F.Cu") (net 8) (tstamp 432bb800-81be-4772-9be8-76bcb7280530)) (segment (start 109.625 114.46) (end 109.625 100.925) (width 0.25) (layer "F.Cu") (net 8) (tstamp 51897031-3379-4af7-afa4-28872c19edbb)) (segment (start 116.825 127.375) (end 207.025 127.375) (width 0.25) (layer "F.Cu") (net 8) (tstamp 8862dcfa-1ab2-439e-9cb4-ec90bb290305)) (segment (start 123.175 57.46) (end 123.175 61.425) (width 0.25) (layer "F.Cu") (net 8) (tstamp ba667198-1d04-4520-9167-234ffd87f126)) (segment (start 213.025 115.61) (end 215.25 115.61) (width 0.25) (layer "F.Cu") (net 8) (tstamp c18c5fd3-83fe-4313-9e01-0f1f71ff3b79)) (via (at 116.825 127.375) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 8) (tstamp c9ff9f7a-52f0-4134-b1a2-b781b3b1bab4)) (via (at 109.625 100.925) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 8) (tstamp e27efab8-d367-464a-a187-e9e4946b36fc)) (via (at 109.625 114.46) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 8) (tstamp fc814ff0-c82a-4225-9348-12721dd06555)) (arc (start 123.175 61.425) (mid 122.73566 62.48566) (end 121.675 62.925) (width 0.25) (layer "F.Cu") (net 8) (tstamp 065e6dad-f7fd-46e8-b3a0-6bcbe2fea33c)) (arc (start 211.525 117.11) (mid 211.96434 116.04934) (end 213.025 115.61) (width 0.25) (layer "F.Cu") (net 8) (tstamp 0f7e8972-9d41-475a-8896-12fe9ccfa713)) (arc (start 117.526536 127.375) (mid 117.236606 127.32557) (end 116.980381 127.180161) (width 0.25) (layer "F.Cu") (net 8) (tstamp 2040aa20-8d6a-4a4c-83c6-6d71653acd40)) (arc (start 123.8 56.785) (mid 123.358058 56.601942) (end 123.175 56.16) (width 0.25) (layer "F.Cu") (net 8) (tstamp 20b805a1-02ec-4bec-aaef-8d63757fbec5)) (arc (start 116.669618 127.180161) (mid 116.413463 127.325591) (end 116.123593 127.375) (width 0.25) (layer "F.Cu") (net 8) (tstamp 275d094e-7fb2-4348-800e-88f45b94e5eb)) (arc (start 109.430161 114.615381) (mid 109.575591 114.871537) (end 109.625 115.161407) (width 0.25) (layer "F.Cu") (net 8) (tstamp 53d721fb-5940-4b0d-9148-8049606a2220)) (arc (start 109.819838 114.304618) (mid 109.674409 114.048463) (end 109.625 113.758593) (width 0.25) (layer "F.Cu") (net 8) (tstamp 56a67f92-b9b6-4318-a106-5caa88fc7155)) (arc (start 116.980381 127.569838) (mid 117.236537 127.424409) (end 117.526407 127.375) (width 0.25) (layer "F.Cu") (net 8) (tstamp 575ddd41-0191-4a6f-93e0-681ada52a3f5)) (arc (start 109.625 113.758464) (mid 109.57557 114.048394) (end 109.430161 114.304618) (width 0.25) (layer "F.Cu") (net 8) (tstamp 63c0d9d0-b127-4c44-806f-59f0f9911417)) (arc (start 122.955908 57.999314) (mid 123.117591 58.212904) (end 123.175 58.474564) (width 0.25) (layer "F.Cu") (net 8) (tstamp 64206d09-ff22-420f-82f8-1bdafe2ff847)) (arc (start 214.056014 115.61) (mid 214.375404 115.697771) (end 214.605087 115.936429) (width 0.25) (layer "F.Cu") (net 8) (tstamp 6653f5b0-b8c4-4c5c-bc85-745a53497085)) (arc (start 214.613402 115.263829) (mid 214.38341 115.516667) (end 214.054845 115.61) (width 0.25) (layer "F.Cu") (net 8) (tstamp 768b2314-7c13-4bc7-b8e2-45c20e443d11)) (arc (start 123.175 58.76) (mid 123.358058 58.318058) (end 123.8 58.135) (width 0.25) (layer "F.Cu") (net 8) (tstamp 81ecf64d-1560-45bf-b7a9-9b97bfc4fb2d)) (arc (start 123.175 55.934564) (mid 123.232409 55.672904) (end 123.394091 55.459313) (width 0.25) (layer "F.Cu") (net 8) (tstamp 94a68b37-4ba6-4732-b1f0-c611a85207b6)) (arc (start 211.525 122.875) (mid 210.206981 126.056981) (end 207.025 127.375) (width 0.25) (layer "F.Cu") (net 8) (tstamp 95630ec6-c76d-4fb7-92e6-d4a72af6c984)) (arc (start 109.625 101.626536) (mid 109.67443 101.336606) (end 109.819838 101.080381) (width 0.25) (layer "F.Cu") (net 8) (tstamp adb61342-17a9-4c92-a02b-283db81eca6b)) (arc (start 109.430161 101.080381) (mid 109.575591 101.336537) (end 109.625 101.626407) (width 0.25) (layer "F.Cu") (net 8) (tstamp b0eb6d6f-1927-4523-a4be-f777f9ccd159)) (arc (start 109.625 122.875) (mid 110.943019 126.056981) (end 114.125 127.375) (width 0.25) (layer "F.Cu") (net 8) (tstamp b8422d91-944a-488c-adbd-19e189c2cc90)) (arc (start 109.625 100.223464) (mid 109.57557 100.513394) (end 109.430161 100.769618) (width 0.25) (layer "F.Cu") (net 8) (tstamp b8c1c5bb-41ec-4982-bc8c-3895fb2c8466)) (arc (start 109.819838 100.769618) (mid 109.674409 100.513463) (end 109.625 100.223593) (width 0.25) (layer "F.Cu") (net 8) (tstamp b99449a6-bac4-4c3e-bb6d-6470b12babdc)) (arc (start 109.625 115.161536) (mid 109.67443 114.871606) (end 109.819838 114.615381) (width 0.25) (layer "F.Cu") (net 8) (tstamp c09ba141-82e5-4f4c-a1ef-0601a7138c98)) (arc (start 111.125 62.925) (mid 110.06434 63.36434) (end 109.625 64.425) (width 0.25) (layer "F.Cu") (net 8) (tstamp c51c115c-08d9-4112-8491-1d6ec582e898)) (arc (start 116.123464 127.375) (mid 116.413394 127.42443) (end 116.669618 127.569838) (width 0.25) (layer "F.Cu") (net 8) (tstamp d243bc74-6ac8-4420-81ee-6a22ed7585dc)) (arc (start 123.175 56.445436) (mid 123.117591 56.707096) (end 122.955908 56.920685) (width 0.25) (layer "F.Cu") (net 8) (tstamp f6cd7e76-d6c6-4086-825d-afeacee7e2b9)) (arc (start 122.55 55.595) (mid 122.991942 55.778058) (end 123.175 56.22) (width 0.25) (layer "F.Cu") (net 8) (tstamp fc466746-12fb-403f-836e-68d5000670cb)) (segment (start 115.74 114.46) (end 109.625 114.46) (width 0.25) (layer "B.Cu") (net 8) (tstamp 0aad691d-e434-41db-aa3f-9be6d991a59f)) (segment (start 123.175 92.92) (end 123.175 76.46) (width 0.25) (layer "B.Cu") (net 8) (tstamp 1fe97b69-0c58-4d84-82c5-5acd4380c591)) (segment (start 123.175 95.46) (end 123.175 99.425) (width 0.25) (layer "B.Cu") (net 8) (tstamp 25b5fcef-73b1-4dc7-b3f8-9b706bb3c3b1)) (segment (start 116.825 111.92) (end 116.825 114.46) (width 0.25) (layer "B.Cu") (net 8) (tstamp 2a704bdd-cad5-4847-a5b0-35cdc8068bc1)) (segment (start 116.825 133.46) (end 116.825 130.92) (width 0.25) (layer "B.Cu") (net 8) (tstamp 3129313b-4bd9-4344-81b8-3321d342cf5f)) (segment (start 123.175 73.92) (end 123.175 76.46) (width 0.25) (layer "B.Cu") (net 8) (tstamp 331758b8-05ff-4381-8bca-d964e1cd73e1)) (segment (start 116.825 130.92) (end 116.825 127.375) (width 0.25) (layer "B.Cu") (net 8) (tstamp b1ac70eb-f370-4145-9348-5904446c6815)) (segment (start 121.675 100.925) (end 109.625 100.925) (width 0.25) (layer "B.Cu") (net 8) (tstamp c3f448a3-d39d-4e90-8d45-cca5256ff067)) (segment (start 123.175 95.46) (end 123.175 92.92) (width 0.25) (layer "B.Cu") (net 8) (tstamp d9106cf4-0f0f-422e-8b6e-e7cd432a998b)) (arc (start 123.175 91.62) (mid 122.991942 92.061942) (end 122.55 92.245) (width 0.25) (layer "B.Cu") (net 8) (tstamp 08b53055-acad-4334-b215-934c8b2016ae)) (arc (start 116.605908 112.459314) (mid 116.767591 112.672904) (end 116.825 112.934564) (width 0.25) (layer "B.Cu") (net 8) (tstamp 1190cfaf-f0a5-43ae-b8a6-349417095e5a)) (arc (start 109.780381 101.119838) (mid 110.036537 100.974409) (end 110.326407 100.925) (width 0.25) (layer "B.Cu") (net 8) (tstamp 15b88503-e298-497b-9795-23df17a3ac17)) (arc (start 122.55 93.595) (mid 122.991942 93.778058) (end 123.175 94.22) (width 0.25) (layer "B.Cu") (net 8) (tstamp 17f2f6b8-ffdc-431b-90c7-476e38aca8bd)) (arc (start 116.825 129.905436) (mid 116.767591 130.167096) (end 116.605908 130.380685) (width 0.25) (layer "B.Cu") (net 8) (tstamp 18c7949d-0c1a-4456-834c-dfcd7b69270e)) (arc (start 116.825 132.22) (mid 117.008058 131.778058) (end 117.45 131.595) (width 0.25) (layer "B.Cu") (net 8) (tstamp 1afd11a4-35ee-4960-b9a5-89d96741898c)) (arc (start 122.55 74.595) (mid 122.991942 74.778058) (end 123.175 75.22) (width 0.25) (layer "B.Cu") (net 8) (tstamp 30c5b9de-21d7-4161-9547-0d2af8be153e)) (arc (start 123.394092 92.380686) (mid 123.232409 92.167096) (end 123.175 91.905436) (width 0.25) (layer "B.Cu") (net 8) (tstamp 36857c83-682a-4a2b-8b98-1d82d19de040)) (arc (start 123.8 75.785) (mid 123.358058 75.601942) (end 123.175 75.16) (width 0.25) (layer "B.Cu") (net 8) (tstamp 37cd9458-a9e1-4e45-9d8f-3ffad9be71a4)) (arc (start 116.825 128.076536) (mid 116.87443 127.786606) (end 117.019838 127.530381) (width 0.25) (layer "B.Cu") (net 8) (tstamp 3f570aa1-318b-4010-bec8-383590734227)) (arc (start 116.825 113.22) (mid 117.008058 112.778058) (end 117.45 112.595) (width 0.25) (layer "B.Cu") (net 8) (tstamp 48b66cdf-0722-44c3-8823-fad8f60d5b18)) (arc (start 123.175 93.934564) (mid 123.232409 93.672904) (end 123.394091 93.459313) (width 0.25) (layer "B.Cu") (net 8) (tstamp 49317908-e8e4-4553-ae7f-223ff747a7d4)) (arc (start 109.780381 114.654838) (mid 110.036537 114.509409) (end 110.326407 114.46) (width 0.25) (layer "B.Cu") (net 8) (tstamp 5775a3f0-544f-46c9-87d3-56cf5089161d)) (arc (start 123.175 94.445436) (mid 123.117591 94.707096) (end 122.955908 94.920685) (width 0.25) (layer "B.Cu") (net 8) (tstamp 5dc1315d-9634-4d55-81d4-1701ac9fd647)) (arc (start 123.8 94.785) (mid 123.358058 94.601942) (end 123.175 94.16) (width 0.25) (layer "B.Cu") (net 8) (tstamp 695a57e5-ef1b-4e5d-9853-d30c79cae356)) (arc (start 110.326536 100.925) (mid 110.036606 100.87557) (end 109.780381 100.730161) (width 0.25) (layer "B.Cu") (net 8) (tstamp 6c451de8-ddb8-4480-bb4b-fe6d112d48b3)) (arc (start 117.45 130.245) (mid 117.008058 130.061942) (end 116.825 129.62) (width 0.25) (layer "B.Cu") (net 8) (tstamp 7bf53026-bdbd-4091-bc04-8eed1dc4e0d0)) (arc (start 122.955908 95.999314) (mid 123.117591 96.212904) (end 123.175 96.474564) (width 0.25) (layer "B.Cu") (net 8) (tstamp 834f69de-c22c-4d32-b86c-9f1217549844)) (arc (start 117.044092 113.920686) (mid 116.882409 113.707096) (end 116.825 113.445436) (width 0.25) (layer "B.Cu") (net 8) (tstamp a62a996e-35c9-441d-ba6c-6a367999bdf6)) (arc (start 117.044092 132.920686) (mid 116.882409 132.707096) (end 116.825 132.445436) (width 0.25) (layer "B.Cu") (net 8) (tstamp a8901caf-a82c-4b6b-be68-8d53fd46c6af)) (arc (start 123.175 75.445436) (mid 123.117591 75.707096) (end 122.955908 75.920685) (width 0.25) (layer "B.Cu") (net 8) (tstamp ad72a888-3181-43ab-b42f-781c1f88ee72)) (arc (start 116.605908 131.459314) (mid 116.767591 131.672904) (end 116.825 131.934564) (width 0.25) (layer "B.Cu") (net 8) (tstamp b132c403-2cc8-42f8-a506-e376c4c7a746)) (arc (start 123.175 99.425) (mid 122.73566 100.48566) (end 121.675 100.925) (width 0.25) (layer "B.Cu") (net 8) (tstamp b1f78e68-91f3-4d44-bffd-7abfa72902f1)) (arc (start 116.825 132.16) (mid 116.641942 132.601942) (end 116.2 132.785) (width 0.25) (layer "B.Cu") (net 8) (tstamp b3c6a9b8-dcd6-479a-9ba6-f67e33bea1d3)) (arc (start 115.138916 114.153729) (mid 114.910621 114.378042) (end 114.601218 114.46) (width 0.25) (layer "B.Cu") (net 8) (tstamp c4f5220b-d7ce-4185-a03d-c37aace76eaf)) (arc (start 123.175 96.76) (mid 123.358058 96.318058) (end 123.8 96.135) (width 0.25) (layer "B.Cu") (net 8) (tstamp cd0c9212-5290-4666-ba47-847fd2b95dd9)) (arc (start 116.630161 127.530381) (mid 116.775591 127.786537) (end 116.825 128.076407) (width 0.25) (layer "B.Cu") (net 8) (tstamp d3b77655-f5ca-4ca7-a39d-fb18683426a5)) (arc (start 110.326536 114.46) (mid 110.036606 114.41057) (end 109.780381 114.265161) (width 0.25) (layer "B.Cu") (net 8) (tstamp e5d16149-15a9-4ada-bdaa-765ccc8135d6)) (arc (start 122.955908 76.999314) (mid 123.117591 77.212904) (end 123.175 77.474564) (width 0.25) (layer "B.Cu") (net 8) (tstamp e973b683-2c02-4987-9c41-52d7f6010246)) (arc (start 116.825 113.16) (mid 116.641942 113.601942) (end 116.2 113.785) (width 0.25) (layer "B.Cu") (net 8) (tstamp ed39b151-13c5-47ca-b185-0f1c9a318768)) (arc (start 123.175 74.934564) (mid 123.232409 74.672904) (end 123.394091 74.459313) (width 0.25) (layer "B.Cu") (net 8) (tstamp f005ceb6-111a-4435-a351-116d8c2db0d9)) (arc (start 114.601218 114.46) (mid 114.910621 114.541958) (end 115.138916 114.76627) (width 0.25) (layer "B.Cu") (net 8) (tstamp f150d05d-9a0f-4d50-8ed2-b0e420b0a0f2)) (arc (start 123.175 77.76) (mid 123.358058 77.318058) (end 123.8 77.135) (width 0.25) (layer "B.Cu") (net 8) (tstamp fa58f13b-e1e1-4b6b-a3e0-ebe114ce6d6a)) (segment (start 137.266541 103.45) (end 151.825 103.45) (width 0.25) (layer "F.Cu") (net 9) (tstamp 4621fdf6-5006-4131-b84a-b66f122ee0ac)) (segment (start 155.575 115.885) (end 191.575 115.885) (width 0.25) (layer "F.Cu") (net 9) (tstamp 6a31d50b-38a9-4c66-bb94-460c345b98bf)) (segment (start 208.525 104.41) (end 208.525 122.875) (width 0.25) (layer "F.Cu") (net 9) (tstamp 7362f399-6d45-4742-af15-9e50ba8d533c)) (segment (start 129.058459 107.14471) (end 133.891541 104.354329) (width 0.25) (layer "F.Cu") (net 9) (tstamp 74937c52-54bb-4ccb-bbcf-654912713756)) (segment (start 202.375 124.375) (end 114.125 124.375) (width 0.25) (layer "F.Cu") (net 9) (tstamp 8d12b176-29f9-443f-9cab-46dc07f33992)) (segment (start 114.125 108.25) (end 124.933459 108.25) (width 0.25) (layer "F.Cu") (net 9) (tstamp 99f8bc60-ac82-417b-bdfc-9e4f1549780f)) (segment (start 112.625 122.875) (end 112.625 109.75) (width 0.25) (layer "F.Cu") (net 9) (tstamp 9a6c5177-4f17-46f8-85b1-427c366faf60)) (segment (start 200.875 117.525) (end 193.214995 117.525) (width 0.25) (layer "F.Cu") (net 9) (tstamp 9fca56d9-3342-4a09-9c25-dddc3b5535e4)) (segment (start 215.25 102.91) (end 210.025 102.91) (width 0.25) (layer "F.Cu") (net 9) (tstamp bd714645-cfcf-45f0-b121-9fa92ea0a2ff)) (segment (start 207.025 124.375) (end 202.375 124.375) (width 0.25) (layer "F.Cu") (net 9) (tstamp e407bdc7-fea6-4589-97ed-2eae3671e2db)) (segment (start 153.325 104.95) (end 153.325 113.635) (width 0.25) (layer "F.Cu") (net 9) (tstamp e52e6e2a-9f4f-437e-aa3d-e1ddd4744b1c)) (segment (start 202.375 112.06) (end 202.375 116.025) (width 0.25) (layer "F.Cu") (net 9) (tstamp e88e4991-e6a3-47ec-b1ce-1af24308eb85)) (via (at 202.375 124.375) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 9) (tstamp 798978a5-75a9-42fa-b31f-bdb0f7359351)) (arc (start 202.375 113.36) (mid 202.558058 112.918058) (end 203 112.735) (width 0.25) (layer "F.Cu") (net 9) (tstamp 0b1ccd4a-2dc7-43af-a671-f5ad8bfbc4da)) (arc (start 210.025 102.91) (mid 208.96434 103.34934) (end 208.525 104.41) (width 0.25) (layer "F.Cu") (net 9) (tstamp 12c900f3-fd0c-46cb-a9f4-52340e11fab4)) (arc (start 208.525 122.875) (mid 208.08566 123.93566) (end 207.025 124.375) (width 0.25) (layer "F.Cu") (net 9) (tstamp 252f7a55-6272-416d-a1af-7a9fc3c47652)) (arc (start 202.155908 112.599314) (mid 202.317591 112.812904) (end 202.375 113.074564) (width 0.25) (layer "F.Cu") (net 9) (tstamp 2be81ac9-7e91-4e6b-91a3-1b0257eca934)) (arc (start 151.825 103.45) (mid 152.88566 103.88934) (end 153.325 104.95) (width 0.25) (layer "F.Cu") (net 9) (tstamp 3a769d01-ad0c-4ba0-9ee0-73ba4f43db12)) (arc (start 203.076536 124.375) (mid 202.786606 124.32557) (end 202.530381 124.180161) (width 0.25) (layer "F.Cu") (net 9) (tstamp 5249e18c-82d9-4e73-859e-2218831d0d18)) (arc (start 191.575 115.885) (mid 192.10533 116.10467) (end 192.325 116.635) (width 0.25) (layer "F.Cu") (net 9) (tstamp 838cb7ed-0b30-45d0-84f0-2fcc898b3068)) (arc (start 153.325 113.635) (mid 153.98401 115.22599) (end 155.575 115.885) (width 0.25) (layer "F.Cu") (net 9) (tstamp 8f9ee061-a9f6-4abe-9db9-c973a64fa8c6)) (arc (start 133.891541 104.354329) (mid 135.519512 103.680001) (end 137.266541 103.45) (width 0.25) (layer "F.Cu") (net 9) (tstamp 9fff1b12-0739-44c1-9b75-ffa5aa7238cc)) (arc (start 124.933459 108.25) (mid 127.068716 107.968888) (end 129.058459 107.14471) (width 0.25) (layer "F.Cu") (net 9) (tstamp a195ff6c-b69b-482c-ba02-1722e140fb0a)) (arc (start 214.613402 102.563829) (mid 214.38341 102.816667) (end 214.054845 102.91) (width 0.25) (layer "F.Cu") (net 9) (tstamp a7f8ec24-d2ca-4e73-afe6-20dd3af694f8)) (arc (start 112.625 109.75) (mid 113.06434 108.68934) (end 114.125 108.25) (width 0.25) (layer "F.Cu") (net 9) (tstamp ae9c340f-4005-4a7f-bfed-13a039710f0a)) (arc (start 214.056014 102.91) (mid 214.375404 102.997771) (end 214.605087 103.236429) (width 0.25) (layer "F.Cu") (net 9) (tstamp ba248b82-0e58-4bec-a98d-412d9ad50f44)) (arc (start 202.375 116.025) (mid 201.93566 117.08566) (end 200.875 117.525) (width 0.25) (layer "F.Cu") (net 9) (tstamp c02b1d01-8e75-4a53-b7c9-9a70c3baee57)) (arc (start 202.219618 124.180161) (mid 201.963463 124.325591) (end 201.673593 124.375) (width 0.25) (layer "F.Cu") (net 9) (tstamp c4cff475-6350-4c31-a9ae-cf6e9362346d)) (arc (start 192.325 116.635) (mid 192.585674 117.264326) (end 193.214995 117.525) (width 0.25) (layer "F.Cu") (net 9) (tstamp f2ddce44-6bf6-46c1-bfc5-33ade2fe6e27)) (arc (start 201.673464 124.375) (mid 201.963394 124.42443) (end 202.219618 124.569838) (width 0.25) (layer "F.Cu") (net 9) (tstamp fabf41c6-6ba3-4f43-a92f-3f7631acd78d)) (arc (start 202.530381 124.569838) (mid 202.786537 124.424409) (end 203.076407 124.375) (width 0.25) (layer "F.Cu") (net 9) (tstamp fd00fe8d-5016-462a-82fd-a4febac146ab)) (arc (start 114.125 124.375) (mid 113.06434 123.93566) (end 112.625 122.875) (width 0.25) (layer "F.Cu") (net 9) (tstamp ff8400f1-a2ab-4cd6-8bf0-3e51ed25cf68)) (segment (start 202.375 90.52) (end 202.375 93.06) (width 0.25) (layer "B.Cu") (net 9) (tstamp 26ab40a5-73df-4338-b1fd-f6d750f3daa9)) (segment (start 202.375 55.06) (end 202.375 71.52) (width 0.25) (layer "B.Cu") (net 9) (tstamp 517cb39b-3faf-43ff-9ee9-9f29822d429a)) (segment (start 207.025613 152.831938) (end 203.302483 150.126926) (width 0.25) (layer "B.Cu") (net 9) (tstamp 67d67c2d-8b35-4b92-b7fa-8b3190510914)) (segment (start 202.375 109.52) (end 202.375 112.06) (width 0.25) (layer "B.Cu") (net 9) (tstamp 6ed5fefc-c951-4bcd-b61f-440cea189847)) (segment (start 202.375 52.52) (end 202.375 55.06) (width 0.25) (layer "B.Cu") (net 9) (tstamp 7b5dab30-af7a-4547-8132-d35d16cb7c45)) (segment (start 202.375 148.306638) (end 202.375 124.375) (width 0.25) (layer "B.Cu") (net 9) (tstamp 8e7b5dad-98b9-4f2b-833b-6973c4539ffa)) (segment (start 202.375 71.52) (end 202.375 74.06) (width 0.25) (layer "B.Cu") (net 9) (tstamp b0155366-882c-49c6-9d32-52aecc92d6b7)) (segment (start 202.375 93.06) (end 202.375 109.52) (width 0.25) (layer "B.Cu") (net 9) (tstamp b3d95bad-660c-4ff8-9807-2b272fcfb240)) (segment (start 206.410422 155.524588) (end 207.903397 153.469685) (width 0.25) (layer "B.Cu") (net 9) (tstamp b42e2e71-e8d8-48d0-bd3c-20e2c4d15c61)) (segment (start 202.375 74.06) (end 202.375 90.52) (width 0.25) (layer "B.Cu") (net 9) (tstamp eafc6013-3d81-4e2a-ad19-914db9cd9e0a)) (arc (start 202.155908 93.599314) (mid 202.317591 93.812904) (end 202.375 94.074564) (width 0.25) (layer "B.Cu") (net 9) (tstamp 09c63386-4262-4e2b-bcc7-d8afa6e4f483)) (arc (start 202.375 91.534564) (mid 202.432409 91.272904) (end 202.594091 91.059313) (width 0.25) (layer "B.Cu") (net 9) (tstamp 12a351da-61a7-4b46-a875-05264467867c)) (arc (start 202.375 75.36) (mid 202.558058 74.918058) (end 203 74.735) (width 0.25) (layer "B.Cu") (net 9) (tstamp 16277817-3bc0-4d8f-9168-10029b6276f3)) (arc (start 207.006767 154.70379) (mid 206.806523 154.881732) (end 206.550174 154.959495) (width 0.25) (layer "B.Cu") (net 9) (tstamp 196facd5-3153-4afe-b06f-ba565c2946b6)) (arc (start 202.375 92.045436) (mid 202.317591 92.307096) (end 202.155908 92.520685) (width 0.25) (layer "B.Cu") (net 9) (tstamp 20df9a9e-df88-4d44-bb79-b4c28b19f6d1)) (arc (start 207.312814 155.345869) (mid 207.062874 154.938005) (end 207.174543 154.472867) (width 0.25) (layer "B.Cu") (net 9) (tstamp 27874bd9-26d7-4b63-9cb5-5922b8118f9e)) (arc (start 202.155908 74.599314) (mid 202.317591 74.812904) (end 202.375 75.074564) (width 0.25) (layer "B.Cu") (net 9) (tstamp 2fb8f551-4d66-4741-b49b-ab3a463a2226)) (arc (start 202.375 54.045436) (mid 202.317591 54.307096) (end 202.155908 54.520685) (width 0.25) (layer "B.Cu") (net 9) (tstamp 33860898-be35-43f0-bc0e-ab31a7002696)) (arc (start 201.75 72.195) (mid 202.191942 72.378058) (end 202.375 72.82) (width 0.25) (layer "B.Cu") (net 9) (tstamp 36887706-b1c5-401d-8540-8fbe595cb83f)) (arc (start 207.307052 154.290483) (mid 207.507297 154.11254) (end 207.763645 154.034776) (width 0.25) (layer "B.Cu") (net 9) (tstamp 3a54332c-f34b-4cbf-b540-29361322f860)) (arc (start 201.75 110.195) (mid 202.191942 110.378058) (end 202.375 110.82) (width 0.25) (layer "B.Cu") (net 9) (tstamp 3f8f0c83-0f62-4610-909c-27211bcfa2cd)) (arc (start 202.375 73.045436) (mid 202.317591 73.307096) (end 202.155908 73.520685) (width 0.25) (layer "B.Cu") (net 9) (tstamp 4bb7174c-89c5-47d6-92ae-08508c3ef73e)) (arc (start 202.180161 124.530381) (mid 202.325591 124.786537) (end 202.375 125.076407) (width 0.25) (layer "B.Cu") (net 9) (tstamp 555c9bfa-814a-434d-9b53-31e87e56617f)) (arc (start 202.594092 108.980686) (mid 202.432409 108.767096) (end 202.375 108.505436) (width 0.25) (layer "B.Cu") (net 9) (tstamp 56b19480-e27f-4160-9e1d-3da3306a760d)) (arc (start 206.104319 152.162579) (mid 206.306457 152.410747) (end 206.359306 152.726406) (width 0.25) (layer "B.Cu") (net 9) (tstamp 5890d3a2-0563-4c56-b41d-15da284b1c84)) (arc (start 203 92.385) (mid 202.558058 92.201942) (end 202.375 91.76) (width 0.25) (layer "B.Cu") (net 9) (tstamp 6313b633-784d-4b89-ae3d-0dd015593592)) (arc (start 202.375 70.22) (mid 202.191942 70.661942) (end 201.75 70.845) (width 0.25) (layer "B.Cu") (net 9) (tstamp 63922d6a-5dd3-4944-82e1-2e929d2e11ab)) (arc (start 202.375 125.076536) (mid 202.42443 124.786606) (end 202.569838 124.530381) (width 0.25) (layer "B.Cu") (net 9) (tstamp 66e1821a-0bf5-4cbb-932b-7ea1037ee773)) (arc (start 202.375 89.22) (mid 202.191942 89.661942) (end 201.75 89.845) (width 0.25) (layer "B.Cu") (net 9) (tstamp 6cd092d0-4f0c-40fd-822a-ca9f0111a433)) (arc (start 203 73.385) (mid 202.558058 73.201942) (end 202.375 72.76) (width 0.25) (layer "B.Cu") (net 9) (tstamp 6fedf0de-1e22-47d7-8ec2-bfb3ba902157)) (arc (start 202.375 72.534564) (mid 202.432409 72.272904) (end 202.594091 72.059313) (width 0.25) (layer "B.Cu") (net 9) (tstamp 89efd06e-b61f-45e8-a8cc-64835990aa2f)) (arc (start 202.375 53.534564) (mid 202.432409 53.272904) (end 202.594091 53.059313) (width 0.25) (layer "B.Cu") (net 9) (tstamp 9033a831-fdf0-44ae-a1eb-e8f88f1e2d5c)) (arc (start 203 54.385) (mid 202.558058 54.201942) (end 202.375 53.76) (width 0.25) (layer "B.Cu") (net 9) (tstamp 932dae17-643a-4466-933b-1a6232fe490f)) (arc (start 203.302483 150.126926) (mid 202.620235 149.328116) (end 202.375 148.306638) (width 0.25) (layer "B.Cu") (net 9) (tstamp 98953e36-1c50-4f5f-94e1-61ace392acd7)) (arc (start 207.001005 153.648405) (mid 207.250945 154.056269) (end 207.139276 154.521407) (width 0.25) (layer "B.Cu") (net 9) (tstamp 98f02fd6-4b72-48d9-8c1b-3460bddfc651)) (arc (start 202.375 110.534564) (mid 202.432409 110.272904) (end 202.594091 110.059313) (width 0.25) (layer "B.Cu") (net 9) (tstamp ab42c9d4-b3de-48a5-9fdf-162396ffe5fa)) (arc (start 202.375 111.045436) (mid 202.317591 111.307096) (end 202.155908 111.520685) (width 0.25) (layer "B.Cu") (net 9) (tstamp b9012002-9e91-4320-9742-96110985353b)) (arc (start 202.375 94.36) (mid 202.558058 93.918058) (end 203 93.735) (width 0.25) (layer "B.Cu") (net 9) (tstamp bcf38251-6bf3-4baa-8ea7-eb16cb8deacb)) (arc (start 203 111.385) (mid 202.558058 111.201942) (end 202.375 110.76) (width 0.25) (layer "B.Cu") (net 9) (tstamp bebfe246-2d33-4ab2-99d3-f6aadb4706dd)) (arc (start 202.375 108.22) (mid 202.191942 108.661942) (end 201.75 108.845) (width 0.25) (layer "B.Cu") (net 9) (tstamp c3db398c-d0c7-44f7-8ae4-6aaa1c3eb2dc)) (arc (start 201.75 91.195) (mid 202.191942 91.378058) (end 202.375 91.82) (width 0.25) (layer "B.Cu") (net 9) (tstamp d423f108-97c0-4e27-ab0c-7cbc68bb2744)) (arc (start 202.155908 55.599314) (mid 202.317591 55.812904) (end 202.375 56.074564) (width 0.25) (layer "B.Cu") (net 9) (tstamp d91122bf-6e8d-44a7-9a90-86a9aad90167)) (arc (start 202.594092 89.980686) (mid 202.432409 89.767096) (end 202.375 89.505436) (width 0.25) (layer "B.Cu") (net 9) (tstamp e0f5e6e0-c180-4432-8129-f73bcdedf75f)) (arc (start 201.75 53.195) (mid 202.191942 53.378058) (end 202.375 53.82) (width 0.25) (layer "B.Cu") (net 9) (tstamp e47e08cb-8428-462d-a402-2d372ef702dd)) (arc (start 202.375 56.36) (mid 202.558058 55.918058) (end 203 55.735) (width 0.25) (layer "B.Cu") (net 9) (tstamp f0d960e7-4a30-4196-8dda-b1d64d69cdb6)) (arc (start 202.594092 70.980686) (mid 202.432409 70.767096) (end 202.375 70.505436) (width 0.25) (layer "B.Cu") (net 9) (tstamp f62f67cb-5206-44a0-bbd3-7e2bb2bfa168)) (arc (start 206.719344 152.230853) (mid 206.402804 152.278136) (end 206.104319 152.162579) (width 0.25) (layer "B.Cu") (net 9) (tstamp fa9b0116-90b4-4622-983d-d93bc0068f72)) (segment (start 210.775 107.99) (end 215.25 107.99) (width 0.25) (layer "F.Cu") (net 10) (tstamp 22f9c71c-6d4d-4f65-ab22-4ad244605c76)) (segment (start 124.933459 107.5) (end 114.125 107.5) (width 0.25) (layer "F.Cu") (net 10) (tstamp 2c8136b5-d466-4fd1-8388-3cf465d2c600)) (segment (start 181.875 115.135) (end 155.575 115.135) (width 0.25) (layer "F.Cu") (net 10) (tstamp 62971d4e-54bc-4af4-aa88-183720c25e40)) (segment (start 183.375 109.66) (end 183.375 113.635) (width 0.25) (layer "F.Cu") (net 10) (tstamp 7398ab0b-1f3c-4f0a-88f0-e93d9f4d917e)) (segment (start 185.535396 125.125) (end 207.025 125.125) (width 0.25) (layer "F.Cu") (net 10) (tstamp 83cd2694-31a9-4dea-8828-48e0617b9085)) (segment (start 133.516541 103.70481) (end 128.683459 106.495191) (width 0.25) (layer "F.Cu") (net 10) (tstamp 8e1b214a-c6c1-427a-b7af-6fc2d11e9f0e)) (segment (start 154.075 113.635) (end 154.075 104.95) (width 0.25) (layer "F.Cu") (net 10) (tstamp 8eb11449-c6f4-438d-b663-63093444e193)) (segment (start 114.125 125.125) (end 185.535396 125.125) (width 0.25) (layer "F.Cu") (net 10) (tstamp a700307e-e50d-4784-8629-28c2b166f091)) (segment (start 111.875 109.75) (end 111.875 122.875) (width 0.25) (layer "F.Cu") (net 10) (tstamp aa81ba5d-0947-484c-9237-81a38581ed75)) (segment (start 151.825 102.7) (end 137.266541 102.7) (width 0.25) (layer "F.Cu") (net 10) (tstamp bd77747d-ff55-4b26-9d7a-b65f2aa4264f)) (segment (start 209.275 122.875) (end 209.275 109.49) (width 0.25) (layer "F.Cu") (net 10) (tstamp d819ca5a-8ce5-457e-ae11-c16a167994dc)) (via (at 185.535396 125.125) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 10) (tstamp 51a86d3d-6fe6-4d3e-af19-8e9dc98f999d)) (arc (start 184.83386 125.125) (mid 185.12379 125.17443) (end 185.380014 125.319838) (width 0.25) (layer "F.Cu") (net 10) (tstamp 05bc0e77-e25c-44b1-bee3-68835a5be856)) (arc (start 128.683459 106.495191) (mid 126.874602 107.244444) (end 124.933459 107.5) (width 0.25) (layer "F.Cu") (net 10) (tstamp 0b0d70c6-2fed-487c-b95e-245b055152f4)) (arc (start 114.125 107.5) (mid 112.53401 108.15901) (end 111.875 109.75) (width 0.25) (layer "F.Cu") (net 10) (tstamp 15b794d9-631f-4a9f-ba70-30473bd76804)) (arc (start 185.380014 124.930161) (mid 185.123859 125.075591) (end 184.833989 125.125) (width 0.25) (layer "F.Cu") (net 10) (tstamp 2c87d2aa-214c-4429-ac58-211e8f100c53)) (arc (start 151.825 102.7) (mid 153.41599 103.35901) (end 154.075 104.95) (width 0.25) (layer "F.Cu") (net 10) (tstamp 661a8f51-eb1a-4f4d-93dd-0d42230c98d5)) (arc (start 183.155908 110.199314) (mid 183.317591 110.412904) (end 183.375 110.674564) (width 0.25) (layer "F.Cu") (net 10) (tstamp 7662e8d5-f64f-40f5-8beb-505842934a0a)) (arc (start 207.025 125.125) (mid 208.61599 124.46599) (end 209.275 122.875) (width 0.25) (layer "F.Cu") (net 10) (tstamp 7c7a5823-4e4d-4628-9e21-4b760205a5b6)) (arc (start 183.375 113.635) (mid 182.93566 114.69566) (end 181.875 115.135) (width 0.25) (layer "F.Cu") (net 10) (tstamp 80dae4a3-528b-49f7-be24-914eb1e88cf3)) (arc (start 209.275 109.49) (mid 209.71434 108.42934) (end 210.775 107.99) (width 0.25) (layer "F.Cu") (net 10) (tstamp 877e410d-0932-40c2-92d3-26e068e93a17)) (arc (start 114.125 125.125) (mid 112.53401 124.46599) (end 111.875 122.875) (width 0.25) (layer "F.Cu") (net 10) (tstamp 9364f8cb-4ea7-4bc2-80e4-138b325aabdf)) (arc (start 214.613402 107.643829) (mid 214.38341 107.896667) (end 214.054845 107.99) (width 0.25) (layer "F.Cu") (net 10) (tstamp a6be1cb3-0e18-48aa-b8fa-b575d90b69e8)) (arc (start 137.266541 102.7) (mid 135.325398 102.955557) (end 133.516541 103.70481) (width 0.25) (layer "F.Cu") (net 10) (tstamp bbfe1ffa-3623-4128-832f-05cc923724d0)) (arc (start 183.375 110.96) (mid 183.558058 110.518058) (end 184 110.335) (width 0.25) (layer "F.Cu") (net 10) (tstamp c1d0cb4e-238c-4980-9248-7c8f94d73509)) (arc (start 185.690777 125.319838) (mid 185.946933 125.174409) (end 186.236803 125.125) (width 0.25) (layer "F.Cu") (net 10) (tstamp c6fd3bd1-51ab-43f3-a6d9-8bc3d293ce62)) (arc (start 186.236932 125.125) (mid 185.947002 125.07557) (end 185.690777 124.930161) (width 0.25) (layer "F.Cu") (net 10) (tstamp cc68429b-4ff3-473f-ab45-b0195c30eb29)) (arc (start 155.575 115.135) (mid 154.51434 114.69566) (end 154.075 113.635) (width 0.25) (layer "F.Cu") (net 10) (tstamp d6559114-31bd-423a-aa20-523e39ec1a0b)) (arc (start 214.056014 107.99) (mid 214.375404 108.077771) (end 214.605087 108.316429) (width 0.25) (layer "F.Cu") (net 10) (tstamp e2570a51-3e6a-41fb-b18b-791d148733d7)) (segment (start 183.375 50.12) (end 183.375 52.66) (width 0.25) (layer "B.Cu") (net 10) (tstamp 05bbd668-cbe4-4c1d-a5a2-71485a93dd60)) (segment (start 183.375 90.66) (end 183.375 107.12) (width 0.25) (layer "B.Cu") (net 10) (tstamp 09555758-0290-482c-910e-e97419b5bd91)) (segment (start 183.375 71.66) (end 183.375 88.12) (width 0.25) (layer "B.Cu") (net 10) (tstamp 09c7913d-013e-4bb9-84d8-efbd82e33e94)) (segment (start 185.535396 139.896718) (end 185.535396 125.125) (width 0.25) (layer "B.Cu") (net 10) (tstamp 1e0ddfd2-0861-4a0a-b316-808d8ed89369)) (segment (start 183.375 69.12) (end 183.375 71.66) (width 0.25) (layer "B.Cu") (net 10) (tstamp 36d14d49-5ae7-4fff-aa1d-749679c8eff5)) (segment (start 184.750492 142.787555) (end 183.965589 145.203238) (width 0.25) (layer "B.Cu") (net 10) (tstamp 59bcddf5-8335-4c72-8bf5-269c6f4e1b38)) (segment (start 183.375 88.12) (end 183.375 90.66) (width 0.25) (layer "B.Cu") (net 10) (tstamp ac4572a9-7bc7-4174-8be7-6f271864eea3)) (segment (start 183.375 107.12) (end 183.375 109.66) (width 0.25) (layer "B.Cu") (net 10) (tstamp cbb383e7-adff-42f9-bc7d-381c3f137a4d)) (segment (start 185.388566 140.823769) (end 184.750492 142.787555) (width 0.25) (layer "B.Cu") (net 10) (tstamp d2e10071-2852-485a-9e23-90aa368f2341)) (segment (start 183.375 52.66) (end 183.375 69.12) (width 0.25) (layer "B.Cu") (net 10) (tstamp d35f90df-eda3-4dff-b3dc-e84e362e0842)) (arc (start 184.436974 143.752464) (mid 184.572431 143.52135) (end 184.792204 143.368175) (width 0.25) (layer "B.Cu") (net 10) (tstamp 04e161e6-5920-4cf7-82a2-8c925a41bbe6)) (arc (start 183.947496 143.236382) (mid 184.311239 143.547048) (end 184.34877 144.023928) (width 0.25) (layer "B.Cu") (net 10) (tstamp 0c9abb9c-fbe5-41cf-a9ee-6fde81a203a4)) (arc (start 182.75 50.795) (mid 183.191942 50.978058) (end 183.375 51.42) (width 0.25) (layer "B.Cu") (net 10) (tstamp 0e28a6bb-fe6f-45b6-a468-e2be12213afd)) (arc (start 183.375 108.134564) (mid 183.432409 107.872904) (end 183.594091 107.659313) (width 0.25) (layer "B.Cu") (net 10) (tstamp 0f47e441-d6aa-4778-9c3d-6c27f76b9179)) (arc (start 183.594092 87.580686) (mid 183.432409 87.367096) (end 183.375 87.105436) (width 0.25) (layer "B.Cu") (net 10) (tstamp 2e985d94-92c3-4a88-bc2d-e98b57043de1)) (arc (start 184 89.985) (mid 183.558058 89.801942) (end 183.375 89.36) (width 0.25) (layer "B.Cu") (net 10) (tstamp 3b8dc705-4f84-4a34-b4de-befaeac315b6)) (arc (start 183.375 70.134564) (mid 183.432409 69.872904) (end 183.594091 69.659313) (width 0.25) (layer "B.Cu") (net 10) (tstamp 3cddb0a3-d599-49b8-917e-01cd66b4d560)) (arc (start 184.279106 144.238331) (mid 184.143648 144.469445) (end 183.923875 144.622618) (width 0.25) (layer "B.Cu") (net 10) (tstamp 3fec48e5-571a-4c05-ba9e-ee10c480202a)) (arc (start 183.375 51.134564) (mid 183.432409 50.872904) (end 183.594091 50.659313) (width 0.25) (layer "B.Cu") (net 10) (tstamp 401c8a34-d813-437c-b85b-608765600282)) (arc (start 183.594092 106.580686) (mid 183.432409 106.367096) (end 183.375 106.105436) (width 0.25) (layer "B.Cu") (net 10) (tstamp 44acd105-f8a2-4078-bf23-0edeaf4fc653)) (arc (start 184 51.985) (mid 183.558058 51.801942) (end 183.375 51.36) (width 0.25) (layer "B.Cu") (net 10) (tstamp 4d27ac51-5632-4214-ac0b-235062593ab8)) (arc (start 183.375 86.82) (mid 183.191942 87.261942) (end 182.75 87.445) (width 0.25) (layer "B.Cu") (net 10) (tstamp 53637489-a77b-4213-b735-d1de5eb2cc59)) (arc (start 185.152215 141.551182) (mid 184.841549 141.914925) (end 184.364669 141.952456) (width 0.25) (layer "B.Cu") (net 10) (tstamp 5c551c80-90e1-410a-930b-2ca668c293ed)) (arc (start 183.375 105.82) (mid 183.191942 106.261942) (end 182.75 106.445) (width 0.25) (layer "B.Cu") (net 10) (tstamp 64549f57-e69c-4109-aca6-912f5a097aa4)) (arc (start 185.340557 125.280381) (mid 185.485987 125.536537) (end 185.535396 125.826407) (width 0.25) (layer "B.Cu") (net 10) (tstamp 674a899d-0ef5-4760-acef-f9a7c41ebc9f)) (arc (start 183.375 51.645436) (mid 183.317591 51.907096) (end 183.155908 52.120685) (width 0.25) (layer "B.Cu") (net 10) (tstamp 690007ed-0e54-45d7-ba0f-cc5ab00f5dc3)) (arc (start 182.75 88.795) (mid 183.191942 88.978058) (end 183.375 89.42) (width 0.25) (layer "B.Cu") (net 10) (tstamp 70cc117b-a92a-4fab-abc1-57e3cfc633b4)) (arc (start 184 108.985) (mid 183.558058 108.801942) (end 183.375 108.36) (width 0.25) (layer "B.Cu") (net 10) (tstamp 728f8819-eb47-4e88-ad2b-3144e10f299b)) (arc (start 184 70.985) (mid 183.558058 70.801942) (end 183.375 70.36) (width 0.25) (layer "B.Cu") (net 10) (tstamp 7d119502-5188-4347-8455-24fff0cf5f26)) (arc (start 183.155908 72.199314) (mid 183.317591 72.412904) (end 183.375 72.674564) (width 0.25) (layer "B.Cu") (net 10) (tstamp 857bc649-53ba-4395-8bab-4c2b93246db3)) (arc (start 183.155908 53.199314) (mid 183.317591 53.412904) (end 183.375 53.674564) (width 0.25) (layer "B.Cu") (net 10) (tstamp 91a92207-59f4-4fa3-b61c-4f5e920ba3ac)) (arc (start 183.375 89.134564) (mid 183.432409 88.872904) (end 183.594091 88.659313) (width 0.25) (layer "B.Cu") (net 10) (tstamp 9b6b0bd0-053f-4c5c-a505-32ff83ba6394)) (arc (start 183.375 53.96) (mid 183.558058 53.518058) (end 184 53.335) (width 0.25) (layer "B.Cu") (net 10) (tstamp a030c24f-3d3e-4201-b49d-bb73a0c64797)) (arc (start 183.375 108.645436) (mid 183.317591 108.907096) (end 183.155908 109.120685) (width 0.25) (layer "B.Cu") (net 10) (tstamp a45c4169-ce02-4e4d-be1e-72f5f5ba40fd)) (arc (start 183.375 91.96) (mid 183.558058 91.518058) (end 184 91.335) (width 0.25) (layer "B.Cu") (net 10) (tstamp a65c9e46-f057-4efb-b792-19fbf2fed5f6)) (arc (start 183.155908 91.199314) (mid 183.317591 91.412904) (end 183.375 91.674564) (width 0.25) (layer "B.Cu") (net 10) (tstamp a9bb773e-72b0-4944-b5c0-3c2b3b83ef34)) (arc (start 182.75 107.795) (mid 183.191942 107.978058) (end 183.375 108.42) (width 0.25) (layer "B.Cu") (net 10) (tstamp b1fcace0-23a6-4c84-b8ef-4627bfb07875)) (arc (start 183.375 89.645436) (mid 183.317591 89.907096) (end 183.155908 90.120685) (width 0.25) (layer "B.Cu") (net 10) (tstamp b410e234-61da-42a6-94c1-066ff92054d1)) (arc (start 184.768585 144.75441) (mid 184.404842 144.443745) (end 184.367311 143.966865) (width 0.25) (layer "B.Cu") (net 10) (tstamp b8934f5c-7c23-4f73-9df8-e2482f5012ae)) (arc (start 185.125518 142.342339) (mid 185.037752 142.089241) (end 185.06401 141.822647) (width 0.25) (layer "B.Cu") (net 10) (tstamp bb9f2ba4-bc5a-49a6-9e63-d78dfc2cffe2)) (arc (start 182.75 69.795) (mid 183.191942 69.978058) (end 183.375 70.42) (width 0.25) (layer "B.Cu") (net 10) (tstamp bccc1df1-9f14-4c9e-a2af-3bf22a3a95a8)) (arc (start 185.535396 125.826536) (mid 185.584826 125.536606) (end 185.730234 125.280381) (width 0.25) (layer "B.Cu") (net 10) (tstamp cca9bfec-4cd4-4c2d-aed3-9beae7f63d00)) (arc (start 183.594092 68.580686) (mid 183.432409 68.367096) (end 183.375 68.105436) (width 0.25) (layer "B.Cu") (net 10) (tstamp cd2d5112-9609-42de-87bc-dfab3bbc7aa7)) (arc (start 183.375 72.96) (mid 183.558058 72.518058) (end 184 72.335) (width 0.25) (layer "B.Cu") (net 10) (tstamp d5bde964-344b-4d52-9aa5-508c35724b71)) (arc (start 183.375 70.645436) (mid 183.317591 70.907096) (end 183.155908 71.120685) (width 0.25) (layer "B.Cu") (net 10) (tstamp d66a1b42-8a10-4b59-b3af-42b08684e1d1)) (arc (start 183.375 67.82) (mid 183.191942 68.261942) (end 182.75 68.445) (width 0.25) (layer "B.Cu") (net 10) (tstamp e4a65f0f-fc44-4d1c-925d-a5542ac11f9a)) (arc (start 185.535396 139.896718) (mid 185.498461 140.366021) (end 185.388566 140.823769) (width 0.25) (layer "B.Cu") (net 10) (tstamp f4a56adc-bced-4dc9-a2ca-825cc6da738d)) (segment (start 133.141541 103.05529) (end 128.308459 105.845671) (width 0.25) (layer "F.Cu") (net 11) (tstamp 0fe3a558-e369-4560-8837-6fc8f3fb28e8)) (segment (start 111.125 109.75) (end 111.125 122.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp 116ff00a-f7e2-49de-900b-4c9b1edf838d)) (segment (start 151.825 101.95) (end 137.266541 101.95) (width 0.25) (layer "F.Cu") (net 11) (tstamp 1e94cf06-99de-4b82-9983-86e0a41881ef)) (segment (start 215.25 110.53) (end 211.525 110.53) (width 0.25) (layer "F.Cu") (net 11) (tstamp 253325f3-7403-42c2-85b0-e98bc269f202)) (segment (start 207.025 125.875) (end 159.921351 125.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp 59cb9c14-bad9-49ab-8cf8-576c15187fb1)) (segment (start 124.933459 106.75) (end 114.125 106.75) (width 0.25) (layer "F.Cu") (net 11) (tstamp 650f8f2d-9363-4842-a550-2a411028a6ab)) (segment (start 154.825 106.51) (end 154.825 104.95) (width 0.25) (layer "F.Cu") (net 11) (tstamp 924baf08-8a41-441b-ab1b-92486e1cc4a5)) (segment (start 155.575 107.26) (end 156.94 107.26) (width 0.25) (layer "F.Cu") (net 11) (tstamp 9de779de-e55a-4ba9-b5c7-2a3ba0ebae16)) (segment (start 210.025 112.03) (end 210.025 122.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp c2209ce6-3840-4a59-b786-f084aeb7e378)) (segment (start 114.125 125.875) (end 159.921351 125.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp f3550c29-266d-481e-9deb-abc401374705)) (via (at 159.921351 125.875) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 11) (tstamp 21b9b7a9-cdaf-4379-abff-3f1ff73323da)) (arc (start 211.525 110.53) (mid 210.46434 110.96934) (end 210.025 112.03) (width 0.25) (layer "F.Cu") (net 11) (tstamp 04df4e82-53c8-4b87-a0e2-05a3f16fd89d)) (arc (start 154.825 104.95) (mid 153.94632 102.82868) (end 151.825 101.95) (width 0.25) (layer "F.Cu") (net 11) (tstamp 127fca77-03e4-430f-933b-5223d6f412af)) (arc (start 207.025 125.875) (mid 209.14632 124.99632) (end 210.025 122.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp 1db4588c-6e02-4139-8eff-eb395727e783)) (arc (start 156.338916 106.953729) (mid 156.110621 107.178042) (end 155.801218 107.26) (width 0.25) (layer "F.Cu") (net 11) (tstamp 2121aced-9f70-4d81-97d3-3b1e32283201)) (arc (start 137.266541 101.95) (mid 135.131284 102.231112) (end 133.141541 103.05529) (width 0.25) (layer "F.Cu") (net 11) (tstamp 22df2b9c-4f88-40db-8ece-0caf5bb275b1)) (arc (start 111.125 122.875) (mid 112.00368 124.99632) (end 114.125 125.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp 2dbee7be-b7ed-4272-b5af-0c1e88b89de3)) (arc (start 114.125 106.75) (mid 112.00368 107.62868) (end 111.125 109.75) (width 0.25) (layer "F.Cu") (net 11) (tstamp 52221434-0548-4a9f-9aa3-c53a86de58c6)) (arc (start 155.801218 107.26) (mid 156.110621 107.341958) (end 156.338916 107.56627) (width 0.25) (layer "F.Cu") (net 11) (tstamp 59741412-b67f-41c3-acc9-786ac6591b68)) (arc (start 160.076732 126.069838) (mid 160.332888 125.924409) (end 160.622758 125.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp 75115627-ed1e-44dd-b7f3-c8fa13eb5eef)) (arc (start 160.622887 125.875) (mid 160.332957 125.82557) (end 160.076732 125.680161) (width 0.25) (layer "F.Cu") (net 11) (tstamp 8237eaca-35c2-4690-97f0-97d610896a55)) (arc (start 154.825 106.51) (mid 155.04467 107.04033) (end 155.575 107.26) (width 0.25) (layer "F.Cu") (net 11) (tstamp 9cd9efd8-2a74-4437-889f-2412f6f7c595)) (arc (start 128.308459 105.845671) (mid 126.680488 106.519999) (end 124.933459 106.75) (width 0.25) (layer "F.Cu") (net 11) (tstamp ad358bac-7f38-4a18-afd6-7040a0f0117d)) (arc (start 214.613402 110.183829) (mid 214.38341 110.436667) (end 214.054845 110.53) (width 0.25) (layer "F.Cu") (net 11) (tstamp b8272f7a-687f-4349-91a6-e88fafa6196c)) (arc (start 159.765969 125.680161) (mid 159.509814 125.825591) (end 159.219944 125.875) (width 0.25) (layer "F.Cu") (net 11) (tstamp d4f7c537-eef4-40b1-b5c2-b62cb14c625a)) (arc (start 214.056014 110.53) (mid 214.375404 110.617771) (end 214.605087 110.856429) (width 0.25) (layer "F.Cu") (net 11) (tstamp df048d2d-3884-4b2e-9284-1786296dbc4e)) (arc (start 159.219815 125.875) (mid 159.509745 125.92443) (end 159.765969 126.069838) (width 0.25) (layer "F.Cu") (net 11) (tstamp edcd9c97-23d7-41f8-b791-73487b66764c)) (segment (start 158.025 104.72) (end 158.025 107.26) (width 0.25) (layer "B.Cu") (net 11) (tstamp 05d2744d-6c5c-40c1-bb68-c1b142b65cfe)) (segment (start 158.025 85.72) (end 158.025 88.26) (width 0.25) (layer "B.Cu") (net 11) (tstamp 4671bbd0-8d54-4915-8032-e615e1725db9)) (segment (start 159.921351 136.467834) (end 159.788418 139.004352) (width 0.25) (layer "B.Cu") (net 11) (tstamp 534061b0-c665-4c77-a392-fe8760d333c3)) (segment (start 158.025 66.72) (end 158.025 69.26) (width 0.25) (layer "B.Cu") (net 11) (tstamp 591233ee-7326-4376-80e7-233386241598)) (segment (start 159.921351 136.467834) (end 159.921351 125.875) (width 0.25) (layer "B.Cu") (net 11) (tstamp 8c475e8a-afed-4b2d-a14c-e97ee146b776)) (segment (start 158.025 47.72) (end 158.025 50.26) (width 0.25) (layer "B.Cu") (net 11) (tstamp 95a149dc-382d-4e26-86ee-248f65114080)) (segment (start 158.025 69.26) (end 158.025 85.72) (width 0.25) (layer "B.Cu") (net 11) (tstamp 96c3fe9c-0bb2-4a54-a7c9-0ac861a0256a)) (segment (start 158.025 88.26) (end 158.025 104.72) (width 0.25) (layer "B.Cu") (net 11) (tstamp b8a31bc7-fab3-4fa6-ac2f-3f25bea3f685)) (segment (start 159.788418 139.004352) (end 159.655485 141.540871) (width 0.25) (layer "B.Cu") (net 11) (tstamp d8081f42-6475-4184-a8f5-dc31f778b327)) (segment (start 158.025 50.26) (end 158.025 66.72) (width 0.25) (layer "B.Cu") (net 11) (tstamp e69025dc-a55c-4445-9f66-517f23d23c19)) (arc (start 158.244092 49.720686) (mid 158.082409 49.507096) (end 158.025 49.245436) (width 0.25) (layer "B.Cu") (net 11) (tstamp 0759c090-03ba-4395-b21f-81ceeb533c5c)) (arc (start 158.65 104.045) (mid 158.208058 103.861942) (end 158.025 103.42) (width 0.25) (layer "B.Cu") (net 11) (tstamp 15e08e4d-8f37-4c3d-9a5c-afba5c5d1653)) (arc (start 158.025 103.705436) (mid 157.967591 103.967096) (end 157.805908 104.180685) (width 0.25) (layer "B.Cu") (net 11) (tstamp 1ac8441a-b51b-4177-a9e5-240ce68d4eef)) (arc (start 158.244092 68.720686) (mid 158.082409 68.507096) (end 158.025 68.245436) (width 0.25) (layer "B.Cu") (net 11) (tstamp 1d5182c1-7bac-4b3b-bf77-6337263a20fb)) (arc (start 158.025 65.705436) (mid 157.967591 65.967096) (end 157.805908 66.180685) (width 0.25) (layer "B.Cu") (net 11) (tstamp 2419e955-1c91-4f05-a49a-d49acee0bc30)) (arc (start 157.4 69.935) (mid 157.841942 70.118058) (end 158.025 70.56) (width 0.25) (layer "B.Cu") (net 11) (tstamp 25d1f7a3-0f03-48fd-89c5-0fdbf8d77304)) (arc (start 159.921351 126.576536) (mid 159.970781 126.286606) (end 160.116189 126.030381) (width 0.25) (layer "B.Cu") (net 11) (tstamp 2f2dba81-3d16-421a-89c6-1b91eee2a8c6)) (arc (start 157.805908 67.259314) (mid 157.967591 67.472904) (end 158.025 67.734564) (width 0.25) (layer "B.Cu") (net 11) (tstamp 3f915b21-965b-4fd2-b223-d58640dc9455)) (arc (start 158.244092 106.720686) (mid 158.082409 106.507096) (end 158.025 106.245436) (width 0.25) (layer "B.Cu") (net 11) (tstamp 4046140c-712e-4387-84dd-f610181b39cc)) (arc (start 157.805908 48.259314) (mid 157.967591 48.472904) (end 158.025 48.734564) (width 0.25) (layer "B.Cu") (net 11) (tstamp 418ee195-8349-49aa-b05c-89cb78b2b330)) (arc (start 157.4 88.935) (mid 157.841942 89.118058) (end 158.025 89.56) (width 0.25) (layer "B.Cu") (net 11) (tstamp 41cbb22a-803e-4d6e-a78e-3ec8d3e275b1)) (arc (start 157.805908 105.259314) (mid 157.967591 105.472904) (end 158.025 105.734564) (width 0.25) (layer "B.Cu") (net 11) (tstamp 41f41d4f-53cd-4631-bf6b-5b3cec782e65)) (arc (start 159.73532 140.017527) (mid 159.806344 139.759231) (end 159.978981 139.554394) (width 0.25) (layer "B.Cu") (net 11) (tstamp 4323a1b2-8fa4-43da-9567-88fe137d05c3)) (arc (start 158.025 67.96) (mid 157.841942 68.401942) (end 157.4 68.585) (width 0.25) (layer "B.Cu") (net 11) (tstamp 4889cf8c-83e0-4103-b34d-73d0b0ac9a7a)) (arc (start 158.025 49.02) (mid 158.208058 48.578058) (end 158.65 48.395) (width 0.25) (layer "B.Cu") (net 11) (tstamp 4beb51c5-5877-4479-8e62-243d41df8f02)) (arc (start 158.025 84.705436) (mid 157.967591 84.967096) (end 157.805908 85.180685) (width 0.25) (layer "B.Cu") (net 11) (tstamp 64157b68-0c31-4020-94eb-9f29424d3300)) (arc (start 158.025 70.274564) (mid 158.082409 70.012904) (end 158.244091 69.799313) (width 0.25) (layer "B.Cu") (net 11) (tstamp 6827150b-c9a6-44da-b167-447f24752ec4)) (arc (start 158.025 89.274564) (mid 158.082409 89.012904) (end 158.244091 88.799313) (width 0.25) (layer "B.Cu") (net 11) (tstamp 6e784ad5-52f7-483f-ac8b-505906b89ebb)) (arc (start 159.856455 137.706133) (mid 159.650519 138.137889) (end 159.199602 138.297567) (width 0.25) (layer "B.Cu") (net 11) (tstamp 82d0f1c8-702d-4650-91f4-0f9664ad317f)) (arc (start 158.025 68.02) (mid 158.208058 67.578058) (end 158.65 67.395) (width 0.25) (layer "B.Cu") (net 11) (tstamp 82f2b94a-27ba-40e6-9154-4ebf84184d59)) (arc (start 158.025 105.96) (mid 157.841942 106.401942) (end 157.4 106.585) (width 0.25) (layer "B.Cu") (net 11) (tstamp 8510c899-f47b-41fa-98a6-d50a4a2277aa)) (arc (start 158.025 87.02) (mid 158.208058 86.578058) (end 158.65 86.395) (width 0.25) (layer "B.Cu") (net 11) (tstamp 8c4ef985-e73e-447f-8c63-7f05d42dba4f)) (arc (start 158.025 51.274564) (mid 158.082409 51.012904) (end 158.244091 50.799313) (width 0.25) (layer "B.Cu") (net 11) (tstamp 9519d9c6-6e34-4545-93bd-3c8728ab743d)) (arc (start 157.805908 86.259314) (mid 157.967591 86.472904) (end 158.025 86.734564) (width 0.25) (layer "B.Cu") (net 11) (tstamp a2c4bc40-ca7c-4421-b9bd-8dcfc861795d)) (arc (start 158.025 86.96) (mid 157.841942 87.401942) (end 157.4 87.585) (width 0.25) (layer "B.Cu") (net 11) (tstamp ad18e862-8204-4f23-a847-7af966fe9054)) (arc (start 159.726512 126.030381) (mid 159.871942 126.286537) (end 159.921351 126.576407) (width 0.25) (layer "B.Cu") (net 11) (tstamp ad7e3c43-147b-45ed-803d-e9fd05d3806d)) (arc (start 158.025 48.96) (mid 157.841942 49.401942) (end 157.4 49.585) (width 0.25) (layer "B.Cu") (net 11) (tstamp b3de049b-046c-4e56-9ecf-6c49c74d2d4b)) (arc (start 160.035432 138.477241) (mid 159.885152 138.255483) (end 159.841516 137.991178) (width 0.25) (layer "B.Cu") (net 11) (tstamp b7f7de3a-c588-4f26-b6fd-9149f16c3736)) (arc (start 157.4 50.935) (mid 157.841942 51.118058) (end 158.025 51.56) (width 0.25) (layer "B.Cu") (net 11) (tstamp c8271f25-5701-46d1-893a-71a49c5eed4f)) (arc (start 158.025 106.02) (mid 158.208058 105.578058) (end 158.65 105.395) (width 0.25) (layer "B.Cu") (net 11) (tstamp de6fd534-2bdf-4747-8bb7-9c938419647d)) (arc (start 160.314955 140.899506) (mid 159.8832 140.69357) (end 159.723522 140.242653) (width 0.25) (layer "B.Cu") (net 11) (tstamp e839a911-af4a-4be7-b3f3-4ee8c5af35d5)) (arc (start 158.244092 87.720686) (mid 158.082409 87.507096) (end 158.025 87.245436) (width 0.25) (layer "B.Cu") (net 11) (tstamp e8839c2d-da79-4a50-92b3-34d2f7bbb22c)) (arc (start 159.128948 139.645717) (mid 159.560704 139.851654) (end 159.720381 140.302571) (width 0.25) (layer "B.Cu") (net 11) (tstamp eb65f8fe-2635-4f44-a55c-347c5c397f46)) (arc (start 158.65 66.045) (mid 158.208058 65.861942) (end 158.025 65.42) (width 0.25) (layer "B.Cu") (net 11) (tstamp f68bcdcf-f78a-4228-a58c-27afba61b5e9)) (arc (start 159.708583 140.527696) (mid 159.637559 140.785992) (end 159.464921 140.990828) (width 0.25) (layer "B.Cu") (net 11) (tstamp f7ac7055-3dea-49eb-a9a6-e2f83219c298)) (arc (start 158.65 85.045) (mid 158.208058 84.861942) (end 158.025 84.42) (width 0.25) (layer "B.Cu") (net 11) (tstamp fb4d3d9e-bad3-4710-a4ca-67afa5024b76)) (segment (start 147.575 69.12) (end 145.375 69.12) (width 0.25) (layer "F.Cu") (net 12) (tstamp 0cbde194-ea05-4592-aa55-909474c88597)) (segment (start 210.775 122.875) (end 210.775 114.57) (width 0.25) (layer "F.Cu") (net 12) (tstamp 1489a17f-9d04-453e-a1e0-3dddfc42b05b)) (segment (start 149.075 59.625) (end 149.075 67.62) (width 0.25) (layer "F.Cu") (net 12) (tstamp 21074e97-7666-4628-a71e-3ff7ad0bee5a)) (segment (start 110.375 122.875) (end 110.375 71) (width 0.25) (layer "F.Cu") (net 12) (tstamp 30d2ed96-2e72-4fab-af8e-7ff5098851d2)) (segment (start 114.125 126.625) (end 138.087 126.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp 3dbd45a3-c894-4906-b9d2-844e17ad2573)) (segment (start 128.683459 68.495191) (end 133.516541 65.70481) (width 0.25) (layer "F.Cu") (net 12) (tstamp 649cf159-e75d-4f47-9b8e-7651ba0ae1f5)) (segment (start 111.875 69.5) (end 124.933459 69.5) (width 0.25) (layer "F.Cu") (net 12) (tstamp 6653a3f1-1d9f-4e14-8afa-8f269220a86d)) (segment (start 139.025 50.12) (end 139.025 52.66) (width 0.25) (layer "F.Cu") (net 12) (tstamp 6e329b3a-45ca-48df-aedb-fb664e6b6f4f)) (segment (start 138.087 126.625) (end 207.025 126.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp b7f7e66e-020d-4cd1-b351-85596f369edc)) (segment (start 137.266541 64.7) (end 149.075 64.7) (width 0.25) (layer "F.Cu") (net 12) (tstamp c381bb5c-e842-49a7-8046-47ea13be2cbb)) (segment (start 139.025 52.66) (end 139.025 56.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp cb22a185-9843-47f4-991a-b54b114395b3)) (segment (start 140.525 58.125) (end 147.575 58.125) (width 0.25) (layer "F.Cu") (net 12) (tstamp cc1ff966-5c33-49ca-8e8b-db65d270acc7)) (segment (start 212.275 113.07) (end 215.25 113.07) (width 0.25) (layer "F.Cu") (net 12) (tstamp e4390e11-00ac-4e55-99bb-f318a51eb4f8)) (via (at 138.087 126.625) (size 0.75) (drill 0.4) (layers "F.Cu" "B.Cu") (net 12) (tstamp 62df936a-3541-44e3-ab6f-21200543e6ce)) (arc (start 138.242381 126.819838) (mid 138.498537 126.674409) (end 138.788407 126.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp 1ae3bf8c-72fc-46de-87b1-5341d266bf8b)) (arc (start 139.025 51.36) (mid 138.841942 51.801942) (end 138.4 51.985) (width 0.25) (layer "F.Cu") (net 12) (tstamp 21c2f7fc-e01e-4ff2-bef5-b757598205ee)) (arc (start 137.931618 126.430161) (mid 137.675463 126.575591) (end 137.385593 126.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp 21c5e333-4715-416d-a42c-62a5dc14c945)) (arc (start 139.244092 52.120686) (mid 139.082409 51.907096) (end 139.025 51.645436) (width 0.25) (layer "F.Cu") (net 12) (tstamp 3700dc1e-b3d4-4330-87d5-078a53fbea88)) (arc (start 210.775 122.875) (mid 209.67665 125.52665) (end 207.025 126.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp 39aa21bc-7446-4e9b-960b-899a8a14c260)) (arc (start 146.328782 69.12) (mid 146.019379 69.038042) (end 145.791083 68.813729) (width 0.25) (layer "F.Cu") (net 12) (tstamp 428b7a47-01f1-4cbe-9500-03293e4d0d46)) (arc (start 138.4 53.335) (mid 138.841942 53.518058) (end 139.025 53.96) (width 0.25) (layer "F.Cu") (net 12) (tstamp 4712104a-4308-42b0-a667-eef6a5959e32)) (arc (start 110.375 71) (mid 110.81434 69.93934) (end 111.875 69.5) (width 0.25) (layer "F.Cu") (net 12) (tstamp 55ed702d-c9ad-4c4a-9f2f-65b6a7354efe)) (arc (start 214.056014 113.07) (mid 214.375404 113.157771) (end 214.605087 113.396429) (width 0.25) (layer "F.Cu") (net 12) (tstamp 565bb17b-10ad-47e6-8fa3-35d2c7a6782c)) (arc (start 149.075 67.62) (mid 148.63566 68.68066) (end 147.575 69.12) (width 0.25) (layer "F.Cu") (net 12) (tstamp 5a0cde87-7fb4-46da-a28f-09ca2ac0d0b4)) (arc (start 138.805908 50.659314) (mid 138.967591 50.872904) (end 139.025 51.134564) (width 0.25) (layer "F.Cu") (net 12) (tstamp 70c85705-2e5d-40c4-8884-385ce7de9b14)) (arc (start 148.45 64.7) (mid 148.891942 64.883058) (end 149.075 65.325) (width 0.25) (layer "F.Cu") (net 12) (tstamp 84a5587f-47b4-4131-b750-b42e842e24d9)) (arc (start 145.791083 69.42627) (mid 146.019379 69.201958) (end 146.328782 69.12) (width 0.25) (layer "F.Cu") (net 12) (tstamp a188303f-4c97-4e52-ba35-bf401aaf40bc)) (arc (start 210.775 114.57) (mid 211.21434 113.50934) (end 212.275 113.07) (width 0.25) (layer "F.Cu") (net 12) (tstamp a1e30161-c7ac-4cd5-b082-c81cb5af2210)) (arc (start 138.788536 126.625) (mid 138.498606 126.57557) (end 138.242381 126.430161) (width 0.25) (layer "F.Cu") (net 12) (tstamp a3a91243-5702-48fe-b87f-a2bcc7b5a528)) (arc (start 147.575 58.125) (mid 148.63566 58.56434) (end 149.075 59.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp ae6dd5cb-5c8f-42bd-bb35-904d33a65f11)) (arc (start 124.933459 69.5) (mid 126.874602 69.244444) (end 128.683459 68.495191) (width 0.25) (layer "F.Cu") (net 12) (tstamp c0372803-9828-47a6-be36-26a5ea798808)) (arc (start 214.613402 112.723829) (mid 214.38341 112.976667) (end 214.054845 113.07) (width 0.25) (layer "F.Cu") (net 12) (tstamp c2cb1608-58d8-4929-a36c-7df11f7925b8)) (arc (start 149.075 64.075) (mid 148.891942 64.516942) (end 148.45 64.7) (width 0.25) (layer "F.Cu") (net 12) (tstamp c97fae79-87f3-419f-a57d-0a9496dfce73)) (arc (start 137.385464 126.625) (mid 137.675394 126.67443) (end 137.931618 126.819838) (width 0.25) (layer "F.Cu") (net 12) (tstamp cce80190-d7c9-444a-83a3-36a292096162)) (arc (start 139.025 53.674564) (mid 139.082409 53.412904) (end 139.244091 53.199313) (width 0.25) (layer "F.Cu") (net 12) (tstamp d7208b05-3001-4713-92f0-0cecab5dca98)) (arc (start 133.516541 65.70481) (mid 135.325398 64.955557) (end 137.266541 64.7) (width 0.25) (layer "F.Cu") (net 12) (tstamp d8ecd60a-9f44-4341-8045-c20ba7dc26eb)) (arc (start 139.025 51.42) (mid 139.208058 50.978058) (end 139.65 50.795) (width 0.25) (layer "F.Cu") (net 12) (tstamp eca60e5e-3f1b-4157-9473-d2c452145052)) (arc (start 140.525 58.125) (mid 139.46434 57.68566) (end 139.025 56.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp fbe58714-5f4e-460c-ad79-2ee017b341d0)) (arc (start 110.375 122.875) (mid 111.47335 125.52665) (end 114.125 126.625) (width 0.25) (layer "F.Cu") (net 12) (tstamp fc0d2db1-c5a1-40a2-ab98-13939f3dde00)) (segment (start 145.375 107.12) (end 145.375 109.66) (width 0.25) (layer "B.Cu") (net 12) (tstamp 247fdf64-e39f-4aec-8848-3d9b8746b05f)) (segment (start 152.325 97.2) (end 152.325 108.535) (width 0.25) (layer "B.Cu") (net 12) (tstamp 33b1b74d-36fb-43e4-a4ef-95a192eb6b21)) (segment (start 145.375 90.66) (end 145.375 88.12) (width 0.25) (layer "B.Cu") (net 12) (tstamp 3bb0ba0d-59ec-4996-8555-6a37f893f2b3)) (segment (start 151.2 109.66) (end 146.46 109.66) (width 0.25) (layer "B.Cu") (net 12) (tstamp 432e4d28-0c41-400d-9a13-14f4092e3106)) (segment (start 145.375 90.66) (end 145.375 94.95) (width 0.25) (layer "B.Cu") (net 12) (tstamp 608acfb2-ce83-48ca-ad4f-1d9f3bc4f597)) (segment (start 145.375 88.12) (end 145.375 71.66) (width 0.25) (layer "B.Cu") (net 12) (tstamp 739bf563-1e82-45d7-b85a-6080c629d192)) (segment (start 138.087 141.08) (end 138.087 138.54) (width 0.25) (layer "B.Cu") (net 12) (tstamp 755405ac-a420-4efc-8979-344dcd9d68c3)) (segment (start 145.375 71.66) (end 145.375 69.12) (width 0.25) (layer "B.Cu") (net 12) (tstamp bac515a8-cc75-42d3-8d3c-2629ac06603c)) (segment (start 138.087 138.54) (end 138.087 126.625) (width 0.25) (layer "B.Cu") (net 12) (tstamp d8a32089-368a-4d1b-844d-8a96417fbcee)) (segment (start 146.5 96.075) (end 151.2 96.075) (width 0.25) (layer "B.Cu") (net 12) (tstamp e52d4d4a-a320-45ad-a500-8e79adfb3672)) (arc (start 145.375 89.645436) (mid 145.317591 89.907096) (end 145.155908 90.120685) (width 0.25) (layer "B.Cu") (net 12) (tstamp 08400c99-d857-4c43-8d74-70bf23deed04)) (arc (start 145.375 89.134564) (mid 145.432409 88.872904) (end 145.594091 88.659313) (width 0.25) (layer "B.Cu") (net 12) (tstamp 0a9d8c15-19f8-431d-a7e9-38a0a4eb2fbe)) (arc (start 146 89.985) (mid 145.558058 89.801942) (end 145.375 89.36) (width 0.25) (layer "B.Cu") (net 12) (tstamp 19508e1d-63f1-4cf2-b08e-3a436631b018)) (arc (start 144.75 69.795) (mid 145.191942 69.978058) (end 145.375 70.42) (width 0.25) (layer "B.Cu") (net 12) (tstamp 1fa23da4-cde4-4220-94a4-8e4bf6316c93)) (arc (start 147.061083 109.96627) (mid 147.289379 109.741958) (end 147.598782 109.66) (width 0.25) (layer "B.Cu") (net 12) (tstamp 1fe9dfc8-a470-43e2-b4d7-d63e947935bd)) (arc (start 145.375 91.96) (mid 145.558058 91.518058) (end 146 91.335) (width 0.25) (layer "B.Cu") (net 12) (tstamp 24cca047-cf64-4f7e-82f7-df4849eeab86)) (arc (start 152.325 108.535) (mid 151.995495 109.330495) (end 151.2 109.66) (width 0.25) (layer "B.Cu") (net 12) (tstamp 2b262423-5ae2-41ed-8924-1e4f6dcef263)) (arc (start 138.087 140.065436) (mid 138.029591 140.327096) (end 137.867908 140.540685) (width 0.25) (layer "B.Cu") (net 12) (tstamp 39f09cff-383a-43bd-8937-4795e5832a32)) (arc (start 145.375 94.95) (mid 145.704505 95.745495) (end 146.5 96.075) (width 0.25) (layer "B.Cu") (net 12) (tstamp 42f668fe-15ec-4e30-aa4d-86359cccb31a)) (arc (start 145.375 70.645436) (mid 145.317591 70.907096) (end 145.155908 71.120685) (width 0.25) (layer "B.Cu") (net 12) (tstamp 44e1ffea-9651-4c82-a787-8e78b535200a)) (arc (start 145.375 108.134564) (mid 145.432409 107.872904) (end 145.594091 107.659313) (width 0.25) (layer "B.Cu") (net 12) (tstamp 4946b859-29bc-4a49-8128-1ddf493ef9b3)) (arc (start 145.375 86.82) (mid 145.191942 87.261942) (end 144.75 87.445) (width 0.25) (layer "B.Cu") (net 12) (tstamp 4c41998a-1c90-41e0-935b-b03fdccda8ab)) (arc (start 138.087 139.554564) (mid 138.144409 139.292904) (end 138.306091 139.079313) (width 0.25) (layer "B.Cu") (net 12) (tstamp 4f8f887c-4700-457c-a3eb-3e343ea7ea76)) (arc (start 145.375 70.134564) (mid 145.432409 69.872904) (end 145.594091 69.659313) (width 0.25) (layer "B.Cu") (net 12) (tstamp 51dc2356-8230-4c3d-8b70-9425596c766d)) (arc (start 145.594092 87.580686) (mid 145.432409 87.367096) (end 145.375 87.105436) (width 0.25) (layer "B.Cu") (net 12) (tstamp 5f58aee1-835a-407a-b381-106f1bf224e1)) (arc (start 145.155908 91.199314) (mid 145.317591 91.412904) (end 145.375 91.674564) (width 0.25) (layer "B.Cu") (net 12) (tstamp 62f85a50-b440-4edc-87f3-172f86884d67)) (arc (start 145.375 108.645436) (mid 145.317591 108.907096) (end 145.155908 109.120685) (width 0.25) (layer "B.Cu") (net 12) (tstamp 74f39c0e-6cb0-43f5-b251-024fdfc9f4d7)) (arc (start 146 108.985) (mid 145.558058 108.801942) (end 145.375 108.36) (width 0.25) (layer "B.Cu") (net 12) (tstamp 891a0e4b-0ea1-41b9-9a27-8fc4f45c0979)) (arc (start 144.75 88.795) (mid 145.191942 88.978058) (end 145.375 89.42) (width 0.25) (layer "B.Cu") (net 12) (tstamp 90ee47c5-e353-4176-8344-73df58e6e0b0)) (arc (start 145.155908 72.199314) (mid 145.317591 72.412904) (end 145.375 72.674564) (width 0.25) (layer "B.Cu") (net 12) (tstamp 932f633d-c0e2-4dd6-a18e-fcd6c1b5c60d)) (arc (start 138.712 140.405) (mid 138.270058 140.221942) (end 138.087 139.78) (width 0.25) (layer "B.Cu") (net 12) (tstamp a41a288e-aa53-4d13-9fcb-12e050ccf083)) (arc (start 146 70.985) (mid 145.558058 70.801942) (end 145.375 70.36) (width 0.25) (layer "B.Cu") (net 12) (tstamp aa991b2a-b321-4787-aa9b-0f43af5fd319)) (arc (start 138.087 127.326536) (mid 138.13643 127.036606) (end 138.281838 126.780381) (width 0.25) (layer "B.Cu") (net 12) (tstamp ae5d232e-039c-4244-be13-34c7350e36a7)) (arc (start 138.087 137.24) (mid 137.903942 137.681942) (end 137.462 137.865) (width 0.25) (layer "B.Cu") (net 12) (tstamp b21ec769-99e6-4ef2-b086-6952bd2e70a7)) (arc (start 137.892161 126.780381) (mid 138.037591 127.036537) (end 138.087 127.326407) (width 0.25) (layer "B.Cu") (net 12) (tstamp b3ba876f-7a63-43dd-a150-94ca16b398e5)) (arc (start 147.598782 109.66) (mid 147.289379 109.578042) (end 147.061083 109.353729) (width 0.25) (layer "B.Cu") (net 12) (tstamp cda39616-3b72-46c3-8b09-771c7cd67e1a)) (arc (start 144.75 107.795) (mid 145.191942 107.978058) (end 145.375 108.42) (width 0.25) (layer "B.Cu") (net 12) (tstamp d562e684-bea0-4c7d-8489-6bf1b0c45d58)) (arc (start 151.2 96.075) (mid 151.995495 96.404505) (end 152.325 97.2) (width 0.25) (layer "B.Cu") (net 12) (tstamp e34c7e8c-ece2-42a5-9498-a2000be1ecd1)) (arc (start 145.375 72.96) (mid 145.558058 72.518058) (end 146 72.335) (width 0.25) (layer "B.Cu") (net 12) (tstamp ec95602b-f6c1-4055-9a95-1dce877f1699)) (arc (start 137.462 139.215) (mid 137.903942 139.398058) (end 138.087 139.84) (width 0.25) (layer "B.Cu") (net 12) (tstamp f2b084c4-4941-42dc-b290-1d0189671888)) (arc (start 138.306092 138.000686) (mid 138.144409 137.787096) (end 138.087 137.525436) (width 0.25) (layer "B.Cu") (net 12) (tstamp fa5544ec-152e-4d57-a3e4-cf3370273e5a)) (segment (start 211.55 77.51) (end 215.6 77.51) (width 0.25) (layer "F.Cu") (net 13) (tstamp 767d680d-8096-489a-9adc-9a5f7cc13d23)) (arc (start 214.613402 77.163829) (mid 214.38341 77.416667) (end 214.054845 77.51) (width 0.25) (layer "F.Cu") (net 13) (tstamp 02215747-9818-4437-b0b2-caa774c8a523)) (arc (start 214.056014 77.51) (mid 214.375404 77.597771) (end 214.605087 77.836429) (width 0.25) (layer "F.Cu") (net 13) (tstamp 1762b106-16c5-4806-b2c4-e80d79cf0388)) (arc (start 212.745258 77.51) (mid 212.431801 77.425712) (end 212.202888 77.195588) (width 0.25) (layer "F.Cu") (net 13) (tstamp c576138f-b395-46bb-8b0e-593e38508544)) (arc (start 212.202888 77.824411) (mid 212.431801 77.594288) (end 212.745258 77.51) (width 0.25) (layer "F.Cu") (net 13) (tstamp c7b3d0cf-84d7-489f-b728-bad37bb497de)) (segment (start 211.55 82.59) (end 210.125 82.59) (width 0.25) (layer "F.Cu") (net 14) (tstamp 7675e567-d8a3-4a03-9832-16f828c73bab)) (segment (start 210.125 74.97) (end 215.6 74.97) (width 0.25) (layer "F.Cu") (net 14) (tstamp 7ed92244-78a3-4f8a-9599-a8f10f54aad0)) (segment (start 209.375 81.84) (end 209.375 75.72) (width 0.25) (layer "F.Cu") (net 14) (tstamp a72ca440-b7e5-4ce5-a6f9-200f8a8cafb1)) (arc (start 214.613402 74.623829) (mid 214.38341 74.876667) (end 214.054845 74.97) (width 0.25) (layer "F.Cu") (net 14) (tstamp 3f0f5413-44d6-4b4d-914e-e13dc1516183)) (arc (start 209.375 75.72) (mid 209.59467 75.18967) (end 210.125 74.97) (width 0.25) (layer "F.Cu") (net 14) (tstamp 47813181-e248-4e06-bb5d-823e53aa79e6)) (arc (start 210.125 82.59) (mid 209.59467 82.37033) (end 209.375 81.84) (width 0.25) (layer "F.Cu") (net 14) (tstamp 85a05455-d984-419c-a54b-0b7410c1a2bb)) (arc (start 210.20089 82.59) (mid 210.629727 82.760331) (end 210.825 83.178296) (width 0.25) (layer "F.Cu") (net 14) (tstamp 90d0236b-6511-410d-acaa-fe262c75b5a5)) (arc (start 210.825 82.001703) (mid 210.629727 82.419669) (end 210.20089 82.59) (width 0.25) (layer "F.Cu") (net 14) (tstamp bc6c5ef8-8251-4e3c-bacd-cbb88022065a)) (arc (start 214.056014 74.97) (mid 214.375404 75.057771) (end 214.605087 75.296429) (width 0.25) (layer "F.Cu") (net 14) (tstamp d222c0bc-a70c-436c-8dfa-dfcfc0261a08)) (segment (start 211.55 80.05) (end 215.6 80.05) (width 0.375) (layer "F.Cu") (net 15) (tstamp cd1d5b29-1fff-4c0c-aab1-eb2ce32672c8)) (arc (start 212.096946 80.422907) (mid 212.426949 80.148256) (end 212.844772 80.05) (width 0.375) (layer "F.Cu") (net 15) (tstamp 412116cc-43cc-4235-8a53-09077ca6d385)) (arc (start 214.723556 79.64871) (mid 214.388816 79.943879) (end 213.955555 80.05) (width 0.375) (layer "F.Cu") (net 15) (tstamp a0f4c05d-967a-43b0-8047-1f6c006cd45c)) (arc (start 213.955924 80.05) (mid 214.37191 80.147344) (end 214.701509 80.419162) (width 0.375) (layer "F.Cu") (net 15) (tstamp acafe943-f281-4e49-bcf8-9316e3054812)) (arc (start 212.844772 80.05) (mid 212.426949 79.951744) (end 212.096946 79.677092) (width 0.375) (layer "F.Cu") (net 15) (tstamp c345b689-9eb4-494f-a859-a6de4c829c37)) (segment (start 215.50033 54.80033) (end 214.45 53.75) (width 0.25) (layer "B.Cu") (net 16) (tstamp 2f875bcc-654c-4fd8-83ac-ac226546f2cb)) (segment (start 220.45 53.75) (end 219.39967 54.80033) (width 0.25) (layer "B.Cu") (net 16) (tstamp 71974643-1484-4268-b295-a7a881b121f4)) (segment (start 218.86934 55.02) (end 216.03066 55.02) (width 0.25) (layer "B.Cu") (net 16) (tstamp 8a1f8008-97ec-43fc-8079-3774316e6f12)) (arc (start 219.39967 54.80033) (mid 219.156353 54.96291) (end 218.86934 55.02) (width 0.25) (layer "B.Cu") (net 16) (tstamp 00480e27-14c5-4ae8-897f-16baab56470e)) (arc (start 219.541942 54.658058) (mid 219.744707 54.522575) (end 219.983884 54.475) (width 0.25) (layer "B.Cu") (net 16) (tstamp 1f7ea650-68f5-4286-a7fa-3e4af932f5b1)) (arc (start 219.725 54.216116) (mid 219.677425 54.455293) (end 219.541942 54.658058) (width 0.25) (layer "B.Cu") (net 16) (tstamp 2f72c026-a8cc-43d0-a298-2442ca1c8bec)) (arc (start 214.668078 54.438951) (mid 215.002746 54.429562) (end 215.294243 54.594243) (width 0.25) (layer "B.Cu") (net 16) (tstamp 4c2068e4-f4fb-4df3-8006-a28fc29d8c06)) (arc (start 215.50033 54.80033) (mid 215.743647 54.96291) (end 216.03066 55.02) (width 0.25) (layer "B.Cu") (net 16) (tstamp 9f42506d-2f08-4bc1-ac2c-acf296064aea)) (arc (start 215.295025 54.595025) (mid 215.129721 54.300994) (end 215.142454 53.963597) (width 0.25) (layer "B.Cu") (net 16) (tstamp f370be69-394b-49d4-9541-888f74376c69)) (segment (start 220.45 56.29) (end 215.11132 56.29) (width 0.375) (layer "B.Cu") (net 17) (tstamp 1dfd6e12-d290-4cd0-8429-e29196acb551)) (segment (start 214.05066 55.85066) (end 211.95 53.75) (width 0.375) (layer "B.Cu") (net 17) (tstamp 488b82e8-4cdd-41b4-900d-5d39f844cd74)) (arc (start 219.155228 56.29) (mid 219.573051 56.388256) (end 219.903053 56.662907) (width 0.375) (layer "B.Cu") (net 17) (tstamp 236569cc-bf84-4a3a-bce3-d1c8eb3f6887)) (arc (start 215.11132 56.29) (mid 214.537295 56.175819) (end 214.05066 55.85066) (width 0.375) (layer "B.Cu") (net 17) (tstamp 2e66ef4c-5270-451a-84a3-d361521a55c5)) (arc (start 212.865037 54.665037) (mid 212.635354 54.288792) (end 212.604579 53.848665) (width 0.375) (layer "B.Cu") (net 17) (tstamp 9839ad22-a88d-45c7-8376-62583819b2e7)) (arc (start 219.903053 55.917092) (mid 219.573051 56.191744) (end 219.155228 56.29) (width 0.375) (layer "B.Cu") (net 17) (tstamp b9956f5f-329d-461d-b805-4f46582f0d5c)) (arc (start 212.062153 54.400675) (mid 212.494916 54.43718) (end 212.864792 54.664792) (width 0.375) (layer "B.Cu") (net 17) (tstamp df402901-4579-4d2e-b392-6c735e71b6e5)) (segment (start 213.88132 57.56) (end 218.86934 57.56) (width 0.25) (layer "B.Cu") (net 18) (tstamp 922008ee-2ce6-4e48-8adf-c28ba1f2b1e3)) (segment (start 219.39967 57.77967) (end 220.45 58.83) (width 0.25) (layer "B.Cu") (net 18) (tstamp e0fa33aa-24fb-4b47-b96f-1274d9c354c5)) (segment (start 212.82066 57.12066) (end 209.45 53.75) (width 0.25) (layer "B.Cu") (net 18) (tstamp f0c8e22f-61da-4aa1-8d06-7801ed3d7fbe)) (arc (start 213.88132 57.56) (mid 213.307295 57.445819) (end 212.82066 57.12066) (width 0.25) (layer "B.Cu") (net 18) (tstamp 12797ce4-6cfa-41a0-bc58-9ade4065b514)) (arc (start 219.604975 57.984975) (mid 219.770279 58.279006) (end 219.757545 58.616402) (width 0.25) (layer "B.Cu") (net 18) (tstamp 537b443b-855a-4700-bc41-55988d3f25c7)) (arc (start 209.668078 54.438951) (mid 210.002746 54.429562) (end 210.294243 54.594243) (width 0.25) (layer "B.Cu") (net 18) (tstamp 7077cb26-d86d-45ca-acb0-d8cfcad0abaf)) (arc (start 210.295025 54.595025) (mid 210.129721 54.300994) (end 210.142454 53.963597) (width 0.25) (layer "B.Cu") (net 18) (tstamp 82bde623-bf1b-44b8-8322-b83dd7607308)) (arc (start 220.231921 58.141047) (mid 219.897254 58.150438) (end 219.605757 57.985757) (width 0.25) (layer "B.Cu") (net 18) (tstamp 8cb1d998-afd8-4cb2-80c3-5a4575538498)) (arc (start 218.86934 57.56) (mid 219.156353 57.61709) (end 219.39967 57.77967) (width 0.25) (layer "B.Cu") (net 18) (tstamp f8308a59-164c-4608-a5bf-e161bcde0931)) (segment (start 97.825 54.92) (end 97.825 57.46) (width 0.25) (layer "B.Cu") (net 19) (tstamp 3fb1b6be-1e5a-4ee0-8b60-1a9370dfcbbd)) (segment (start 97.825 57.46) (end 97.825 68.25) (width 0.25) (layer "B.Cu") (net 19) (tstamp b0e7c57d-b8a4-465f-b35b-60eae2d1602e)) (arc (start 97.2 58.135) (mid 97.641942 58.318058) (end 97.825 58.76) (width 0.25) (layer "B.Cu") (net 19) (tstamp 16accd8c-bd1a-4b74-aaf6-bf1178251baf)) (arc (start 98.044092 56.920686) (mid 97.882409 56.707096) (end 97.825 56.445436) (width 0.25) (layer "B.Cu") (net 19) (tstamp 1d1d27ab-34ce-48c2-a2eb-fab8f2459524)) (arc (start 97.825 56.22) (mid 98.008058 55.778058) (end 98.45 55.595) (width 0.25) (layer "B.Cu") (net 19) (tstamp 2431eb67-98e7-42e7-8142-ec80fcef9a0d)) (arc (start 97.825 56.16) (mid 97.641942 56.601942) (end 97.2 56.785) (width 0.25) (layer "B.Cu") (net 19) (tstamp 6703e566-8902-4667-8c6b-b3952f3a60e0)) (arc (start 98.200886 67.678033) (mid 97.926971 67.448366) (end 97.825 67.106218) (width 0.25) (layer "B.Cu") (net 19) (tstamp 900209c2-67ac-4fe4-ae87-539fa7ff7129)) (arc (start 97.605908 55.459314) (mid 97.767591 55.672904) (end 97.825 55.934564) (width 0.25) (layer "B.Cu") (net 19) (tstamp 947d18f0-13f1-4287-9367-759cfa036b4c)) (arc (start 97.825 67.252992) (mid 97.761496 67.527487) (end 97.583887 67.746202) (width 0.25) (layer "B.Cu") (net 19) (tstamp b2383f5d-1ef1-43aa-ab19-5119fd0c361a)) (arc (start 97.825 58.474564) (mid 97.882409 58.212904) (end 98.044091 57.999313) (width 0.25) (layer "B.Cu") (net 19) (tstamp dd5a252b-4350-4add-8212-e7b7bbb221bd)) (segment (start 111.75 57.46) (end 115.74 57.46) (width 0.25) (layer "B.Cu") (net 20) (tstamp 427aed1d-df94-4314-be15-678e1d27deb9)) (segment (start 116.825 54.92) (end 116.825 57.46) (width 0.25) (layer "B.Cu") (net 20) (tstamp cde9be13-b9d5-42bd-9fc7-6bf6194f8ce6)) (arc (start 115.138916 57.153729) (mid 114.910621 57.378042) (end 114.601218 57.46) (width 0.25) (layer "B.Cu") (net 20) (tstamp 050e7808-6b74-4926-bb58-b5d9577e902a)) (arc (start 116.825 56.22) (mid 117.008058 55.778058) (end 117.45 55.595) (width 0.25) (layer "B.Cu") (net 20) (tstamp 0acd9e98-72da-4bcf-9a66-598ab35cf4f0)) (arc (start 116.825 56.16) (mid 116.641942 56.601942) (end 116.2 56.785) (width 0.25) (layer "B.Cu") (net 20) (tstamp 32439e5d-345a-4583-ab12-5aaba23bc3c1)) (arc (start 117.044092 56.920686) (mid 116.882409 56.707096) (end 116.825 56.445436) (width 0.25) (layer "B.Cu") (net 20) (tstamp 3578fe04-a7e6-4830-8643-091055f3d9f9)) (arc (start 114.601218 57.46) (mid 114.910621 57.541958) (end 115.138916 57.76627) (width 0.25) (layer "B.Cu") (net 20) (tstamp 4d51a9f5-d1e1-4f4d-8324-be9ca74b29de)) (arc (start 112.831129 57.46) (mid 112.526493 57.380731) (end 112.299294 57.162737) (width 0.25) (layer "B.Cu") (net 20) (tstamp 60e93002-82d1-47ae-a182-7343119fdf8a)) (arc (start 112.299294 57.757262) (mid 112.526493 57.539269) (end 112.831129 57.46) (width 0.25) (layer "B.Cu") (net 20) (tstamp 6eb13cc7-3459-4076-9f5e-59ab17df9571)) (arc (start 116.605908 55.459314) (mid 116.767591 55.672904) (end 116.825 55.934564) (width 0.25) (layer "B.Cu") (net 20) (tstamp 84ee6d0a-d36d-4b8d-99fc-a7e5c0684165)) (segment (start 145.375 50.12) (end 145.375 52.66) (width 0.25) (layer "F.Cu") (net 21) (tstamp 6d2cffeb-e50b-47e8-a6f0-4a83a4c67247)) (segment (start 146.46 52.66) (end 150.45 52.66) (width 0.25) (layer "F.Cu") (net 21) (tstamp e1aceb01-9ce1-4d43-a83f-93ea1a03c566)) (arc (start 144.75 50.795) (mid 145.191942 50.978058) (end 145.375 51.42) (width 0.25) (layer "F.Cu") (net 21) (tstamp 1ad1678f-a948-48c1-89e0-ac49bb3fd916)) (arc (start 146 51.985) (mid 145.558058 51.801942) (end 145.375 51.36) (width 0.25) (layer "F.Cu") (net 21) (tstamp 23598b5d-1489-45e4-a35e-937183afc1ee)) (arc (start 145.375 51.645436) (mid 145.317591 51.907096) (end 145.155908 52.120685) (width 0.25) (layer "F.Cu") (net 21) (tstamp 32ed99ed-9134-49a7-bded-74423ebb1516)) (arc (start 147.598782 52.66) (mid 147.289379 52.578042) (end 147.061083 52.353729) (width 0.25) (layer "F.Cu") (net 21) (tstamp 446a11e1-5be5-4f65-be29-60b9f39c6c73)) (arc (start 145.375 51.134564) (mid 145.432409 50.872904) (end 145.594091 50.659313) (width 0.25) (layer "F.Cu") (net 21) (tstamp 50bdc3f5-ad4c-4373-9536-2a811e8ae7fb)) (arc (start 149.368871 52.66) (mid 149.673507 52.739269) (end 149.900705 52.957262) (width 0.25) (layer "F.Cu") (net 21) (tstamp 78e44337-7098-447a-8558-9e4063f8b836)) (arc (start 149.900705 52.362737) (mid 149.673507 52.580731) (end 149.368871 52.66) (width 0.25) (layer "F.Cu") (net 21) (tstamp 8d5c4d1c-6960-4a2c-9d24-c4af84a5bc46)) (arc (start 147.061083 52.96627) (mid 147.289379 52.741958) (end 147.598782 52.66) (width 0.25) (layer "F.Cu") (net 21) (tstamp b935d7c2-1ea2-41f7-b5b6-e00d047f07da)) (segment (start 169.45 51.01) (end 169.45 52.66) (width 0.25) (layer "F.Cu") (net 22) (tstamp 3e6a241e-68c3-4f64-88a0-1b8787f89361)) (segment (start 168.7 50.26) (end 165.46 50.26) (width 0.25) (layer "F.Cu") (net 22) (tstamp 4aed84ba-9a9d-47c0-8c04-5895157089b4)) (segment (start 164.375 47.72) (end 164.375 50.26) (width 0.25) (layer "F.Cu") (net 22) (tstamp d46350a0-8ac0-415c-a78c-744175bf1501)) (arc (start 165 49.585) (mid 164.558058 49.401942) (end 164.375 48.96) (width 0.25) (layer "F.Cu") (net 22) (tstamp 0baf8088-476c-4a85-a046-d564949e44d0)) (arc (start 169.777536 52.129513) (mid 169.538092 51.89977) (end 169.45 51.579841) (width 0.25) (layer "F.Cu") (net 22) (tstamp 15a01cb7-72c3-4e1a-86ee-56a855c23d14)) (arc (start 169.45 51.579841) (mid 169.361908 51.89977) (end 169.122464 52.129513) (width 0.25) (layer "F.Cu") (net 22) (tstamp 2c384ad7-d3fc-4018-a303-3d0a60b83876)) (arc (start 168.7 50.26) (mid 169.23033 50.47967) (end 169.45 51.01) (width 0.25) (layer "F.Cu") (net 22) (tstamp 4eb6e009-dcbb-46cf-a803-065a83b76fcc)) (arc (start 164.375 48.734564) (mid 164.432409 48.472904) (end 164.594091 48.259313) (width 0.25) (layer "F.Cu") (net 22) (tstamp 82ad325d-144f-47ff-93d0-f39b2fe17d49)) (arc (start 166.061083 50.56627) (mid 166.289379 50.341958) (end 166.598782 50.26) (width 0.25) (layer "F.Cu") (net 22) (tstamp 99b7f556-ab65-4536-adf5-453010227e08)) (arc (start 164.375 49.245436) (mid 164.317591 49.507096) (end 164.155908 49.720685) (width 0.25) (layer "F.Cu") (net 22) (tstamp a5df8ce4-c8f2-4e49-9a9f-9f999d8b9ee4)) (arc (start 166.598782 50.26) (mid 166.289379 50.178042) (end 166.061083 49.953729) (width 0.25) (layer "F.Cu") (net 22) (tstamp c8c7db30-a5b2-4e2b-af04-99539182a95d)) (arc (start 163.75 48.395) (mid 164.191942 48.578058) (end 164.375 49.02) (width 0.25) (layer "F.Cu") (net 22) (tstamp ce1b1783-3b65-44f7-9980-5573ae82cca5)) (segment (start 171.95 52.66) (end 175.94 52.66) (width 0.25) (layer "F.Cu") (net 23) (tstamp 3cda1ac0-75eb-4eda-b1fa-839caf33550e)) (segment (start 177.025 50.12) (end 177.025 52.66) (width 0.25) (layer "F.Cu") (net 23) (tstamp 5bc76d7f-61b0-4808-bb19-13662d82c9ed)) (arc (start 176.805908 50.659314) (mid 176.967591 50.872904) (end 177.025 51.134564) (width 0.25) (layer "F.Cu") (net 23) (tstamp 5593c189-b570-46d0-a54a-05c5772ecfd3)) (arc (start 175.338916 52.353729) (mid 175.110621 52.578042) (end 174.801218 52.66) (width 0.25) (layer "F.Cu") (net 23) (tstamp 6b625a06-8356-4bb5-a083-6ccf2f973c45)) (arc (start 174.801218 52.66) (mid 175.110621 52.741958) (end 175.338916 52.96627) (width 0.25) (layer "F.Cu") (net 23) (tstamp 77775b35-7141-4ba3-afe5-e809c185f0b4)) (arc (start 177.025 51.36) (mid 176.841942 51.801942) (end 176.4 51.985) (width 0.25) (layer "F.Cu") (net 23) (tstamp 805be463-974d-4528-bf8f-beb98e56bc9e)) (arc (start 173.031129 52.66) (mid 172.726493 52.580731) (end 172.499294 52.362737) (width 0.25) (layer "F.Cu") (net 23) (tstamp 94efbcda-85dc-487e-af38-6838df43e143)) (arc (start 177.244092 52.120686) (mid 177.082409 51.907096) (end 177.025 51.645436) (width 0.25) (layer "F.Cu") (net 23) (tstamp af950c19-e5b7-4300-b466-3e3075661c89)) (arc (start 172.499294 52.957262) (mid 172.726493 52.739269) (end 173.031129 52.66) (width 0.25) (layer "F.Cu") (net 23) (tstamp db7af4a1-9517-4c11-80e1-16dbe41e4186)) (arc (start 177.025 51.42) (mid 177.208058 50.978058) (end 177.65 50.795) (width 0.25) (layer "F.Cu") (net 23) (tstamp dd341f76-2dfb-4a2e-8b1c-c8923009fe7c)) (segment (start 196.025 52.52) (end 196.025 55.06) (width 0.25) (layer "F.Cu") (net 24) (tstamp 6b44e2cb-879c-497f-99f7-693521bb08d6)) (segment (start 196.025 52.52) (end 190.95 52.52) (width 0.25) (layer "F.Cu") (net 24) (tstamp dc5c123e-5403-49cc-885e-b21a06784930)) (arc (start 196.025 53.82) (mid 196.208058 53.378058) (end 196.65 53.195) (width 0.25) (layer "F.Cu") (net 24) (tstamp 18d80e89-5616-4bef-80e1-c12fe01baf60)) (arc (start 196.244092 54.520686) (mid 196.082409 54.307096) (end 196.025 54.045436) (width 0.25) (layer "F.Cu") (net 24) (tstamp 874dbf2b-5b9c-4843-8014-307f5c39130c)) (arc (start 191.527071 52.893938) (mid 191.757587 52.62177) (end 192.099429 52.52) (width 0.25) (layer "F.Cu") (net 24) (tstamp 93dc5f4e-dffc-40ba-b05b-5bd7f910f70f)) (arc (start 195.071218 52.52) (mid 195.380621 52.601958) (end 195.608916 52.82627) (width 0.25) (layer "F.Cu") (net 24) (tstamp 943a6a1a-2fa9-471e-9478-24c50c13865c)) (arc (start 191.936414 52.52) (mid 191.661217 52.456152) (end 191.442871 52.276375) (width 0.25) (layer "F.Cu") (net 24) (tstamp a11c5028-0aeb-479a-9842-5ef79d5c9968)) (arc (start 196.025 53.76) (mid 195.841942 54.201942) (end 195.4 54.385) (width 0.25) (layer "F.Cu") (net 24) (tstamp cde00a04-b74f-44f9-b38e-889b3d846d7a)) (arc (start 195.805908 53.059314) (mid 195.967591 53.272904) (end 196.025 53.534564) (width 0.25) (layer "F.Cu") (net 24) (tstamp d7d66f43-8e7b-4433-a866-7b7b0106b164)) (arc (start 195.608916 52.213729) (mid 195.380621 52.438042) (end 195.071218 52.52) (width 0.25) (layer "F.Cu") (net 24) (tstamp ffe81579-8e7d-498a-9ab8-d11478edc8e5)) (segment (start 78.825 57.46) (end 78.825 68.25) (width 0.25) (layer "F.Cu") (net 25) (tstamp 61414d6b-11f2-4f8c-a066-0aac10a2bb2d)) (segment (start 78.825 54.92) (end 78.825 57.46) (width 0.25) (layer "F.Cu") (net 25) (tstamp 6cd63e47-0eec-4481-934c-dce4aaad488d)) (arc (start 78.825 67.252992) (mid 78.761496 67.527487) (end 78.583887 67.746202) (width 0.25) (layer "F.Cu") (net 25) (tstamp 0784149d-9ab9-40e9-80c7-be9474140c85)) (arc (start 79.200886 67.678033) (mid 78.926971 67.448366) (end 78.825 67.106218) (width 0.25) (layer "F.Cu") (net 25) (tstamp 0a0aac9b-8924-4bc2-b01b-a1d99e21dbe3)) (arc (start 78.825 56.16) (mid 78.641942 56.601942) (end 78.2 56.785) (width 0.25) (layer "F.Cu") (net 25) (tstamp 30fc63c4-95c0-426d-9f78-b2e99c49aade)) (arc (start 78.825 58.474564) (mid 78.882409 58.212904) (end 79.044091 57.999313) (width 0.25) (layer "F.Cu") (net 25) (tstamp 6849cad7-5249-4b74-8ec9-3669a67cddd7)) (arc (start 78.605908 55.459314) (mid 78.767591 55.672904) (end 78.825 55.934564) (width 0.25) (layer "F.Cu") (net 25) (tstamp bcd1bb3f-054b-4583-af1b-7b9073a0a25b)) (arc (start 79.044092 56.920686) (mid 78.882409 56.707096) (end 78.825 56.445436) (width 0.25) (layer "F.Cu") (net 25) (tstamp cf9c47fe-f1c6-4bac-b4c5-61f114aac2fa)) (arc (start 78.2 58.135) (mid 78.641942 58.318058) (end 78.825 58.76) (width 0.25) (layer "F.Cu") (net 25) (tstamp dad71510-1f3c-43e8-bcb9-e66e75cf31da)) (arc (start 78.825 56.22) (mid 79.008058 55.778058) (end 79.45 55.595) (width 0.25) (layer "F.Cu") (net 25) (tstamp deb2388f-539c-4507-a44b-c321b1a47697)) (segment (start 219.39967 67.19967) (end 220.45 68.25) (width 0.25) (layer "B.Cu") (net 26) (tstamp 1c5d3104-57fc-43b5-a12e-be4ea3819304)) (segment (start 214.45 68.25) (end 215.50033 67.19967) (width 0.25) (layer "B.Cu") (net 26) (tstamp 4885896d-ba82-4164-8394-405ba9f2b01d)) (segment (start 216.03066 66.98) (end 218.86934 66.98) (width 0.25) (layer "B.Cu") (net 26) (tstamp dc292b9d-2229-49f2-9e03-75f8f1cc6305)) (arc (start 219.39967 67.19967) (mid 219.156353 67.03709) (end 218.86934 66.98) (width 0.25) (layer "B.Cu") (net 26) (tstamp 3f2f2c01-0b08-421a-bfc6-9243b8168da5)) (arc (start 215.142454 68.036402) (mid 215.129721 67.699006) (end 215.295025 67.404975) (width 0.25) (layer "B.Cu") (net 26) (tstamp 60aaf432-9cbe-4d20-b71f-65b1089350dd)) (arc (start 219.604975 67.404975) (mid 219.770279 67.699006) (end 219.757545 68.036402) (width 0.25) (layer "B.Cu") (net 26) (tstamp 973541bc-4b1f-4e3c-92ec-40bd5ab60825)) (arc (start 220.231921 67.561047) (mid 219.897254 67.570438) (end 219.605757 67.405757) (width 0.25) (layer "B.Cu") (net 26) (tstamp b2eee1ec-fcbf-4525-a112-0effb432c6b4)) (arc (start 215.50033 67.19967) (mid 215.743647 67.03709) (end 216.03066 66.98) (width 0.25) (layer "B.Cu") (net 26) (tstamp ec1be65e-b525-4cf6-9af2-715fc77f88fc)) (arc (start 215.294243 67.405757) (mid 215.002746 67.570438) (end 214.668079 67.561048) (width 0.25) (layer "B.Cu") (net 26) (tstamp f8926d6a-c7de-446c-b380-d9243938775b)) (segment (start 220.45 65.71) (end 212.61132 65.71) (width 0.25) (layer "B.Cu") (net 27) (tstamp 36543f36-6b65-422f-a1ac-300aebb530ff)) (segment (start 211.55066 66.14934) (end 209.45 68.25) (width 0.25) (layer "B.Cu") (net 27) (tstamp 86613320-c21a-459b-b7f4-65cc0bc2c493)) (arc (start 212.61132 65.71) (mid 212.037295 65.824181) (end 211.55066 66.14934) (width 0.25) (layer "B.Cu") (net 27) (tstamp 0d4963bb-8c24-462e-818d-83c428e2026f)) (arc (start 210.142454 68.036402) (mid 210.129721 67.699006) (end 210.295025 67.404975) (width 0.25) (layer "B.Cu") (net 27) (tstamp 15a08866-c4e1-4f5c-a620-13b63418f328)) (arc (start 210.294243 67.405757) (mid 210.002746 67.570438) (end 209.668079 67.561048) (width 0.25) (layer "B.Cu") (net 27) (tstamp 3a275f50-6080-41dd-bd35-c3f262b4ec35)) (arc (start 219.254742 65.71) (mid 219.568199 65.794288) (end 219.797111 66.024411) (width 0.25) (layer "B.Cu") (net 27) (tstamp f8dd0518-8f55-4932-a829-69d0e220695e)) (arc (start 219.797111 65.395588) (mid 219.568199 65.625712) (end 219.254742 65.71) (width 0.25) (layer "B.Cu") (net 27) (tstamp fdfd47e2-690e-41c1-80f2-56c0534ab9b8)) (segment (start 97.825 73.92) (end 97.825 76.46) (width 0.25) (layer "B.Cu") (net 28) (tstamp 048cc849-a6e5-4062-b388-3542e5261ebe)) (segment (start 97.825 73.92) (end 97.825 70.75) (width 0.25) (layer "B.Cu") (net 28) (tstamp b9f6d8fb-d3d2-43a4-b957-f87564802258)) (arc (start 98.45 73.245) (mid 98.008058 73.061942) (end 97.825 72.62) (width 0.25) (layer "B.Cu") (net 28) (tstamp 036adb89-27a4-473a-a669-7caa87d97c62)) (arc (start 98.044092 75.920686) (mid 97.882409 75.707096) (end 97.825 75.445436) (width 0.25) (layer "B.Cu") (net 28) (tstamp 0e7816ab-51b7-4397-9a86-807ef24b41cb)) (arc (start 97.825 75.16) (mid 97.641942 75.601942) (end 97.2 75.785) (width 0.25) (layer "B.Cu") (net 28) (tstamp 175e80fc-a0dc-4bb7-bf33-195784e24458)) (arc (start 97.583888 71.253798) (mid 97.761496 71.472513) (end 97.825 71.747008) (width 0.25) (layer "B.Cu") (net 28) (tstamp 87d1582d-3cbd-4761-a0fc-c0c3490c9e4d)) (arc (start 97.825 71.893782) (mid 97.926971 71.551634) (end 98.200886 71.321966) (width 0.25) (layer "B.Cu") (net 28) (tstamp b8c934a3-3d8d-4b39-b6f1-2c0e4b25917c)) (arc (start 97.825 72.905436) (mid 97.767591 73.167096) (end 97.605908 73.380685) (width 0.25) (layer "B.Cu") (net 28) (tstamp cd0d3f43-f022-49d9-b14f-00d9f27e05ab)) (arc (start 97.825 75.22) (mid 98.008058 74.778058) (end 98.45 74.595) (width 0.25) (layer "B.Cu") (net 28) (tstamp d095c78c-9ff0-4ac9-b23a-49c1ab4a439c)) (arc (start 97.605908 74.459314) (mid 97.767591 74.672904) (end 97.825 74.934564) (width 0.25) (layer "B.Cu") (net 28) (tstamp f603990f-1d21-44c3-a99b-a68faa2cdb87)) (segment (start 115.7 81.54) (end 111.75 81.54) (width 0.25) (layer "B.Cu") (net 29) (tstamp 30b30631-33ab-4f33-871d-552c2ae6525a)) (segment (start 116.825 80.415) (end 116.825 76.46) (width 0.25) (layer "B.Cu") (net 29) (tstamp 3ab28d28-f35b-476b-ba75-b1c2dd5607b6)) (segment (start 116.825 73.92) (end 116.825 76.46) (width 0.25) (layer "B.Cu") (net 29) (tstamp d53cb482-d1f3-4189-b45f-7ea670705a26)) (arc (start 116.825 75.22) (mid 117.008058 74.778058) (end 117.45 74.595) (width 0.25) (layer "B.Cu") (net 29) (tstamp 05043f1f-30ff-4018-919f-86e2daa86b1a)) (arc (start 116.605908 74.459314) (mid 116.767591 74.672904) (end 116.825 74.934564) (width 0.25) (layer "B.Cu") (net 29) (tstamp 4fc8aa1b-777a-4b16-b2d6-1c55b7a4a693)) (arc (start 115.7 81.54) (mid 116.495495 81.210495) (end 116.825 80.415) (width 0.25) (layer "B.Cu") (net 29) (tstamp 512c029b-1b4d-4af8-8774-b3b6b7fec9b9)) (arc (start 117.044092 75.920686) (mid 116.882409 75.707096) (end 116.825 75.445436) (width 0.25) (layer "B.Cu") (net 29) (tstamp 5a1dd8ba-f374-4df0-8336-200209a40e4a)) (arc (start 112.299294 81.837262) (mid 112.526493 81.619269) (end 112.831129 81.54) (width 0.25) (layer "B.Cu") (net 29) (tstamp 601ffb97-56f0-4a5d-860a-82badcfb5d94)) (arc (start 116.825 77.474564) (mid 116.882409 77.212904) (end 117.044091 76.999313) (width 0.25) (layer "B.Cu") (net 29) (tstamp b921eaa7-85ad-4cc4-aa4a-3f0a44ecb30d)) (arc (start 116.825 75.16) (mid 116.641942 75.601942) (end 116.2 75.785) (width 0.25) (layer "B.Cu") (net 29) (tstamp c91f0b80-eaa8-4583-bc3d-7476b195862c)) (arc (start 116.2 77.135) (mid 116.641942 77.318058) (end 116.825 77.76) (width 0.25) (layer "B.Cu") (net 29) (tstamp e428b7ec-dcfc-4d3d-ba44-bf958056bc10)) (arc (start 112.831129 81.54) (mid 112.526493 81.460731) (end 112.299294 81.242737) (width 0.25) (layer "B.Cu") (net 29) (tstamp f1a22868-c58c-485b-8c42-45d36ae94c07)) (segment (start 150.45 77.125) (end 140.525 77.125) (width 0.25) (layer "F.Cu") (net 30) (tstamp 44d791d0-f743-4e96-a24b-93155c272873)) (segment (start 139.025 71.66) (end 139.025 75.625) (width 0.25) (layer "F.Cu") (net 30) (tstamp 6f3fdf04-3edc-4e88-8bf8-ae7a5250a878)) (segment (start 139.025 69.12) (end 139.025 71.66) (width 0.25) (layer "F.Cu") (net 30) (tstamp bd0ce109-6f44-41c5-86e8-3c8b8bbc111b)) (arc (start 140.525 77.125) (mid 139.46434 76.68566) (end 139.025 75.625) (width 0.25) (layer "F.Cu") (net 30) (tstamp 2021b08f-d906-4c42-8f3e-11d3d3251c7f)) (arc (start 149.368871 77.125) (mid 149.673507 77.204269) (end 149.900705 77.422262) (width 0.25) (layer "F.Cu") (net 30) (tstamp 20ce82b8-1af1-484f-b782-cbaa168472a0)) (arc (start 149.900705 76.827737) (mid 149.673507 77.045731) (end 149.368871 77.125) (width 0.25) (layer "F.Cu") (net 30) (tstamp 5bbd6ba0-6d5b-41c1-bc31-e8c9b7a5473e)) (arc (start 139.244092 71.120686) (mid 139.082409 70.907096) (end 139.025 70.645436) (width 0.25) (layer "F.Cu") (net 30) (tstamp ad56b083-3b49-4563-81b2-ead57510897d)) (arc (start 139.025 72.674564) (mid 139.082409 72.412904) (end 139.244091 72.199313) (width 0.25) (layer "F.Cu") (net 30) (tstamp b28ddb9e-d89d-416d-9845-b04c6110c513)) (arc (start 139.025 70.36) (mid 138.841942 70.801942) (end 138.4 70.985) (width 0.25) (layer "F.Cu") (net 30) (tstamp e4c3f1ee-76f3-4d84-b3e7-5caec2e96139)) (arc (start 138.805908 69.659314) (mid 138.967591 69.872904) (end 139.025 70.134564) (width 0.25) (layer "F.Cu") (net 30) (tstamp e5f68dbd-4274-44bb-8b07-1a5637dc2f3b)) (arc (start 138.4 72.335) (mid 138.841942 72.518058) (end 139.025 72.96) (width 0.25) (layer "F.Cu") (net 30) (tstamp e9db5553-7267-4ec9-a2c8-d4957eb6c51a)) (arc (start 139.025 70.42) (mid 139.208058 69.978058) (end 139.65 69.795) (width 0.25) (layer "F.Cu") (net 30) (tstamp fb7c640a-ab18-46ee-9988-22d72c9fb0f6)) (segment (start 164.375 66.72) (end 164.375 69.26) (width 0.25) (layer "F.Cu") (net 31) (tstamp 30b73ed4-741c-4bf5-9b0e-64570393ae19)) (segment (start 169.45 70.01) (end 169.45 71.66) (width 0.25) (layer "F.Cu") (net 31) (tstamp 3d227b99-1871-4b18-ad34-61aab2749d6f)) (segment (start 168.7 69.26) (end 165.46 69.26) (width 0.25) (layer "F.Cu") (net 31) (tstamp 4d63a623-fdd1-460c-b512-d75bfaca7563)) (arc (start 164.375 67.734564) (mid 164.432409 67.472904) (end 164.594091 67.259313) (width 0.25) (layer "F.Cu") (net 31) (tstamp 24ec2491-cf7c-4bbd-a778-6a80ce9b3be9)) (arc (start 164.375 68.245436) (mid 164.317591 68.507096) (end 164.155908 68.720685) (width 0.25) (layer "F.Cu") (net 31) (tstamp 3337f656-0ca3-4fbd-875f-763683be572d)) (arc (start 168.7 69.26) (mid 169.23033 69.47967) (end 169.45 70.01) (width 0.25) (layer "F.Cu") (net 31) (tstamp 3c92f416-65d0-4a0c-b136-3612d0bafd86)) (arc (start 169.45 70.579841) (mid 169.361908 70.89977) (end 169.122464 71.129513) (width 0.25) (layer "F.Cu") (net 31) (tstamp 5882788c-2ad5-4e2c-b62d-4d1497e580e9)) (arc (start 169.777536 71.129513) (mid 169.538092 70.89977) (end 169.45 70.579841) (width 0.25) (layer "F.Cu") (net 31) (tstamp 8617e294-659a-409c-9633-6ec8fd74e5ec)) (arc (start 166.598782 69.26) (mid 166.289379 69.178042) (end 166.061083 68.953729) (width 0.25) (layer "F.Cu") (net 31) (tstamp aafc7650-fd69-4aca-88bc-f30eb8e45fbb)) (arc (start 163.75 67.395) (mid 164.191942 67.578058) (end 164.375 68.02) (width 0.25) (layer "F.Cu") (net 31) (tstamp b3a82f26-bb53-4096-926b-e230aed8eac3)) (arc (start 166.061083 69.56627) (mid 166.289379 69.341958) (end 166.598782 69.26) (width 0.25) (layer "F.Cu") (net 31) (tstamp c9571bd2-7916-4d40-8666-b877a4ba58dc)) (arc (start 165 68.585) (mid 164.558058 68.401942) (end 164.375 67.96) (width 0.25) (layer "F.Cu") (net 31) (tstamp d3097465-94c4-40b4-ad88-43f855cdad7c)) (segment (start 177.025 71.66) (end 177.025 69.12) (width 0.25) (layer "F.Cu") (net 32) (tstamp 4be2e209-efbb-4344-b7d7-f57c7a955433)) (segment (start 171.95 71.66) (end 175.94 71.66) (width 0.25) (layer "F.Cu") (net 32) (tstamp b8f15a4e-cefe-4fb6-a025-b356ca1f2ca4)) (arc (start 173.031129 71.66) (mid 172.726493 71.580731) (end 172.499294 71.362737) (width 0.25) (layer "F.Cu") (net 32) (tstamp 0a7c44e5-332f-4436-ad92-2123424a01b1)) (arc (start 177.025 70.42) (mid 177.208058 69.978058) (end 177.65 69.795) (width 0.25) (layer "F.Cu") (net 32) (tstamp 4876d343-8d48-4c81-ada3-a154f65e0486)) (arc (start 174.801218 71.66) (mid 175.110621 71.741958) (end 175.338916 71.96627) (width 0.25) (layer "F.Cu") (net 32) (tstamp 70ecba52-7421-4d11-baa8-0536b627e3bf)) (arc (start 176.805908 69.659314) (mid 176.967591 69.872904) (end 177.025 70.134564) (width 0.25) (layer "F.Cu") (net 32) (tstamp a19a7875-7f95-4fc5-9457-6ddc083f67d9)) (arc (start 172.499294 71.957262) (mid 172.726493 71.739269) (end 173.031129 71.66) (width 0.25) (layer "F.Cu") (net 32) (tstamp b7631cd4-1d6c-47d3-9aec-8b9d30aad042)) (arc (start 175.338916 71.353729) (mid 175.110621 71.578042) (end 174.801218 71.66) (width 0.25) (layer "F.Cu") (net 32) (tstamp eb55a5a2-bd75-4071-ab18-8629c5b8dc5a)) (arc (start 177.025 70.36) (mid 176.841942 70.801942) (end 176.4 70.985) (width 0.25) (layer "F.Cu") (net 32) (tstamp f366278c-55c4-4e00-92a7-c3a4d61e0c8f)) (arc (start 177.244092 71.120686) (mid 177.082409 70.907096) (end 177.025 70.645436) (width 0.25) (layer "F.Cu") (net 32) (tstamp f78c6efa-9134-4f3d-beb6-6d5519d311a1)) (segment (start 196.025 71.52) (end 196.025 74.06) (width 0.25) (layer "F.Cu") (net 33) (tstamp 37e117a6-0b77-4c4b-b205-bf8f64cafd1a)) (segment (start 196.025 71.52) (end 190.95 71.52) (width 0.25) (layer "F.Cu") (net 33) (tstamp c71a368c-8690-4dd7-acc6-680df5a96700)) (arc (start 196.025 72.82) (mid 196.208058 72.378058) (end 196.65 72.195) (width 0.25) (layer "F.Cu") (net 33) (tstamp 20d85a1e-08dc-4815-ba0f-adc599abb260)) (arc (start 191.527071 71.893938) (mid 191.757587 71.62177) (end 192.099429 71.52) (width 0.25) (layer "F.Cu") (net 33) (tstamp 7bb9f366-a53a-43e6-a830-0be7d34f8591)) (arc (start 195.071218 71.52) (mid 195.380621 71.601958) (end 195.608916 71.82627) (width 0.25) (layer "F.Cu") (net 33) (tstamp b6a6a75b-4c66-461b-ad5f-505be4b6a223)) (arc (start 196.025 72.76) (mid 195.841942 73.201942) (end 195.4 73.385) (width 0.25) (layer "F.Cu") (net 33) (tstamp bf70d652-4e28-4a35-bb70-2e722cd5c372)) (arc (start 195.805908 72.059314) (mid 195.967591 72.272904) (end 196.025 72.534564) (width 0.25) (layer "F.Cu") (net 33) (tstamp d3e6a9e0-0c7d-4b48-b2a5-f977e5c7533a)) (arc (start 195.608916 71.213729) (mid 195.380621 71.438042) (end 195.071218 71.52) (width 0.25) (layer "F.Cu") (net 33) (tstamp d444d56d-e487-42e0-8d04-4dbe99be4a60)) (arc (start 196.244092 73.520686) (mid 196.082409 73.307096) (end 196.025 73.045436) (width 0.25) (layer "F.Cu") (net 33) (tstamp fb569167-fed0-444a-bb8b-e733a8b00a8a)) (arc (start 191.936414 71.52) (mid 191.661217 71.456152) (end 191.442871 71.276375) (width 0.25) (layer "F.Cu") (net 33) (tstamp fc78408d-b3ac-4301-95ee-aa96ab4c086d)) (segment (start 78.825 73.92) (end 78.825 76.46) (width 0.25) (layer "F.Cu") (net 34) (tstamp 403cfe4e-a72d-48c5-a4da-35f145325a1e)) (segment (start 78.825 70.75) (end 78.825 73.92) (width 0.25) (layer "F.Cu") (net 34) (tstamp 6886bca8-8438-4cfd-bdc4-829b5e67dd69)) (arc (start 78.605908 74.459314) (mid 78.767591 74.672904) (end 78.825 74.934564) (width 0.25) (layer "F.Cu") (net 34) (tstamp 1c33d877-2908-4ddc-8aba-0877955f93fb)) (arc (start 78.583888 71.253798) (mid 78.761496 71.472513) (end 78.825 71.747008) (width 0.25) (layer "F.Cu") (net 34) (tstamp 1dd6d21c-a0c1-42fa-931a-5e2f0c2e4397)) (arc (start 78.825 72.905436) (mid 78.767591 73.167096) (end 78.605908 73.380685) (width 0.25) (layer "F.Cu") (net 34) (tstamp 27fa639d-482c-47d3-bd88-ef55fb4d0633)) (arc (start 79.45 73.245) (mid 79.008058 73.061942) (end 78.825 72.62) (width 0.25) (layer "F.Cu") (net 34) (tstamp 3bd14c59-b415-4183-a830-a6a86cc1c3e3)) (arc (start 78.825 75.16) (mid 78.641942 75.601942) (end 78.2 75.785) (width 0.25) (layer "F.Cu") (net 34) (tstamp 8bfc7770-be74-42f5-943d-379d4c713bf2)) (arc (start 78.825 75.22) (mid 79.008058 74.778058) (end 79.45 74.595) (width 0.25) (layer "F.Cu") (net 34) (tstamp b29f5753-3462-4ef6-a6ea-4df184b48874)) (arc (start 79.044092 75.920686) (mid 78.882409 75.707096) (end 78.825 75.445436) (width 0.25) (layer "F.Cu") (net 34) (tstamp baf35ba0-ed9c-468c-872b-e4c0fd54e1e9)) (arc (start 78.825 71.893782) (mid 78.926971 71.551634) (end 79.200886 71.321966) (width 0.25) (layer "F.Cu") (net 34) (tstamp fdf4c973-9641-46f1-a3e5-7819f082d9ad)) (segment (start 97.825 95.46) (end 97.825 106.25) (width 0.25) (layer "B.Cu") (net 35) (tstamp 0f64b5dc-c8d7-4a93-8b4e-8a6de0e51cf5)) (segment (start 97.825 92.92) (end 97.825 95.46) (width 0.25) (layer "B.Cu") (net 35) (tstamp bf544df4-4dbf-4c4e-8f0a-70f7b83f8c9d)) (arc (start 97.605908 93.459314) (mid 97.767591 93.672904) (end 97.825 93.934564) (width 0.25) (layer "B.Cu") (net 35) (tstamp 203c2ca0-5566-44d0-8238-9392346ab7d5)) (arc (start 98.200886 105.678033) (mid 97.926971 105.448366) (end 97.825 105.106218) (width 0.25) (layer "B.Cu") (net 35) (tstamp 21858c0e-cf5d-45db-920b-3257b4ad2e12)) (arc (start 98.044092 94.920686) (mid 97.882409 94.707096) (end 97.825 94.445436) (width 0.25) (layer "B.Cu") (net 35) (tstamp 23372ab0-839b-42f4-8acd-3cb19675f47c)) (arc (start 97.825 105.252992) (mid 97.761496 105.527487) (end 97.583887 105.746202) (width 0.25) (layer "B.Cu") (net 35) (tstamp 4add8fa8-9f0d-4d5e-80dc-2a420fea8884)) (arc (start 97.825 96.474564) (mid 97.882409 96.212904) (end 98.044091 95.999313) (width 0.25) (layer "B.Cu") (net 35) (tstamp 98b14fd2-bd10-4fdf-a479-483bc102d2c5)) (arc (start 97.825 94.16) (mid 97.641942 94.601942) (end 97.2 94.785) (width 0.25) (layer "B.Cu") (net 35) (tstamp c3c52ed6-aae7-4b3f-96ac-bf3c7b25aaa0)) (arc (start 97.2 96.135) (mid 97.641942 96.318058) (end 97.825 96.76) (width 0.25) (layer "B.Cu") (net 35) (tstamp df0b9a61-e589-4c61-a355-d0d1ec774a7f)) (arc (start 97.825 94.22) (mid 98.008058 93.778058) (end 98.45 93.595) (width 0.25) (layer "B.Cu") (net 35) (tstamp fcbd1bb2-4744-49e1-b504-700b9a504b0d)) (segment (start 115.74 95.46) (end 111.75 95.46) (width 0.25) (layer "B.Cu") (net 36) (tstamp 1cf7da9c-9011-473d-a88c-de87465ab90d)) (segment (start 116.825 92.92) (end 116.825 95.46) (width 0.25) (layer "B.Cu") (net 36) (tstamp b802567a-c0e9-40a9-b3a5-2bfbb02904ea)) (arc (start 114.601218 95.46) (mid 114.910621 95.541958) (end 115.138916 95.76627) (width 0.25) (layer "B.Cu") (net 36) (tstamp 01f1778a-4006-45b5-bd02-130aa2c54582)) (arc (start 116.605908 93.459314) (mid 116.767591 93.672904) (end 116.825 93.934564) (width 0.25) (layer "B.Cu") (net 36) (tstamp 0860211c-4701-4bc5-8e04-dcf18960a8bf)) (arc (start 112.299294 95.757262) (mid 112.526493 95.539269) (end 112.831129 95.46) (width 0.25) (layer "B.Cu") (net 36) (tstamp 08ccddd8-4a7e-4353-b20c-3482be009993)) (arc (start 116.825 94.16) (mid 116.641942 94.601942) (end 116.2 94.785) (width 0.25) (layer "B.Cu") (net 36) (tstamp 15b2eb82-35ef-492d-ae2c-841993161156)) (arc (start 115.138916 95.153729) (mid 114.910621 95.378042) (end 114.601218 95.46) (width 0.25) (layer "B.Cu") (net 36) (tstamp 50b58f42-b2e2-4e31-8602-1abf9b038df1)) (arc (start 112.831129 95.46) (mid 112.526493 95.380731) (end 112.299294 95.162737) (width 0.25) (layer "B.Cu") (net 36) (tstamp a27ff9e7-192a-4206-96a9-853fb4cbf5b8)) (arc (start 116.825 94.22) (mid 117.008058 93.778058) (end 117.45 93.595) (width 0.25) (layer "B.Cu") (net 36) (tstamp b3983982-07b4-4be6-b56e-dc764031a8c2)) (arc (start 117.044092 94.920686) (mid 116.882409 94.707096) (end 116.825 94.445436) (width 0.25) (layer "B.Cu") (net 36) (tstamp d5a5f950-ac8a-46f4-afab-fb67fcad2eb9)) (segment (start 140.15 85.6) (end 148.95 85.6) (width 0.25) (layer "F.Cu") (net 37) (tstamp 3cffa074-7d85-42a4-9981-badbcb8e780b)) (segment (start 139.025 88.12) (end 139.025 86.725) (width 0.25) (layer "F.Cu") (net 37) (tstamp 98acc0c5-d287-498a-a1d5-3188eb7f70fe)) (segment (start 139.025 90.66) (end 139.025 88.12) (width 0.25) (layer "F.Cu") (net 37) (tstamp b33cf147-7fe3-42da-9057-ea5fb49c0fb8)) (segment (start 150.45 87.1) (end 150.45 90.66) (width 0.25) (layer "F.Cu") (net 37) (tstamp c18b7a7e-9caa-449f-b4d0-5073327a3319)) (arc (start 150.45 89.579841) (mid 150.361908 89.89977) (end 150.122464 90.129513) (width 0.25) (layer "F.Cu") (net 37) (tstamp 0158d8e7-2589-43e8-a9f6-e7cf2ba552a6)) (arc (start 139.244092 90.120686) (mid 139.082409 89.907096) (end 139.025 89.645436) (width 0.25) (layer "F.Cu") (net 37) (tstamp 1acf29c1-b4a8-4d36-8947-8d67c177d043)) (arc (start 140.15 85.6) (mid 139.354505 85.929505) (end 139.025 86.725) (width 0.25) (layer "F.Cu") (net 37) (tstamp 1f43c81e-0d44-4c58-babf-a612b777c372)) (arc (start 139.025 87.105436) (mid 138.967591 87.367096) (end 138.805908 87.580685) (width 0.25) (layer "F.Cu") (net 37) (tstamp 25357a8b-27d0-4a42-a6ec-2a14068d4881)) (arc (start 139.025 89.42) (mid 139.208058 88.978058) (end 139.65 88.795) (width 0.25) (layer "F.Cu") (net 37) (tstamp 8a7a3421-4447-45b6-938c-df242dcecce6)) (arc (start 150.777536 90.129513) (mid 150.538092 89.89977) (end 150.45 89.579841) (width 0.25) (layer "F.Cu") (net 37) (tstamp 8e34e91e-51cc-4468-aba1-5b888af5668f)) (arc (start 139.025 89.36) (mid 138.841942 89.801942) (end 138.4 89.985) (width 0.25) (layer "F.Cu") (net 37) (tstamp b2c95a43-bfbf-4b16-a329-ed0ca93b52aa)) (arc (start 148.95 85.6) (mid 150.01066 86.03934) (end 150.45 87.1) (width 0.25) (layer "F.Cu") (net 37) (tstamp b47ab046-8afa-4aea-b099-639553148cd3)) (arc (start 138.805908 88.659314) (mid 138.967591 88.872904) (end 139.025 89.134564) (width 0.25) (layer "F.Cu") (net 37) (tstamp bd7c3fbd-4669-417a-960e-85ab7275f7e6)) (arc (start 139.65 87.445) (mid 139.208058 87.261942) (end 139.025 86.82) (width 0.25) (layer "F.Cu") (net 37) (tstamp c0761548-047e-4639-8529-9117ce65a571)) (segment (start 168.7 88.26) (end 165.46 88.26) (width 0.25) (layer "F.Cu") (net 38) (tstamp 19d37ded-58fd-4f4b-b1f0-32ff49b7efe3)) (segment (start 169.45 89.01) (end 169.45 90.66) (width 0.25) (layer "F.Cu") (net 38) (tstamp 4138c0c7-159a-4225-b396-078f093408e4)) (segment (start 164.375 85.72) (end 164.375 88.26) (width 0.25) (layer "F.Cu") (net 38) (tstamp dcbd14e8-c04c-41d1-b27c-16318c5a2258)) (arc (start 169.777536 90.129513) (mid 169.538092 89.89977) (end 169.45 89.579841) (width 0.25) (layer "F.Cu") (net 38) (tstamp 1d4e9724-cbe7-4d3b-a322-e0533631e9df)) (arc (start 166.061083 88.56627) (mid 166.289379 88.341958) (end 166.598782 88.26) (width 0.25) (layer "F.Cu") (net 38) (tstamp 2580f712-7837-47f9-9441-1f539836a06a)) (arc (start 168.7 88.26) (mid 169.23033 88.47967) (end 169.45 89.01) (width 0.25) (layer "F.Cu") (net 38) (tstamp 6fcdbeda-096d-47ca-bb5f-431561f0956e)) (arc (start 165 87.585) (mid 164.558058 87.401942) (end 164.375 86.96) (width 0.25) (layer "F.Cu") (net 38) (tstamp 83f841f4-a140-41f6-b72c-22cfddad8280)) (arc (start 164.375 86.734564) (mid 164.432409 86.472904) (end 164.594091 86.259313) (width 0.25) (layer "F.Cu") (net 38) (tstamp b7c8ccb3-a00f-471a-a4f9-8989cff70038)) (arc (start 166.598782 88.26) (mid 166.289379 88.178042) (end 166.061083 87.953729) (width 0.25) (layer "F.Cu") (net 38) (tstamp d8552a49-6b54-4a79-8c25-6acf5e1b8edd)) (arc (start 163.75 86.395) (mid 164.191942 86.578058) (end 164.375 87.02) (width 0.25) (layer "F.Cu") (net 38) (tstamp ee65fbbf-d00f-4718-9c14-99ecff308401)) (arc (start 169.45 89.579841) (mid 169.361908 89.89977) (end 169.122464 90.129513) (width 0.25) (layer "F.Cu") (net 38) (tstamp fb4c1ff1-c755-4083-bbcc-3bf3c9950884)) (arc (start 164.375 87.245436) (mid 164.317591 87.507096) (end 164.155908 87.720685) (width 0.25) (layer "F.Cu") (net 38) (tstamp fd5320da-f9ab-42f4-b9e2-baca683e9786)) (segment (start 175.94 90.66) (end 171.95 90.66) (width 0.25) (layer "F.Cu") (net 39) (tstamp 3a4730a0-93ae-4438-b443-256881b91801)) (segment (start 177.025 88.12) (end 177.025 90.66) (width 0.25) (layer "F.Cu") (net 39) (tstamp b6cc03f7-8674-4915-926d-c6077d1b95ad)) (arc (start 177.025 89.36) (mid 176.841942 89.801942) (end 176.4 89.985) (width 0.25) (layer "F.Cu") (net 39) (tstamp 724bf1db-0bd2-4e9e-a575-4a4762d79438)) (arc (start 172.499294 90.957262) (mid 172.726493 90.739269) (end 173.031129 90.66) (width 0.25) (layer "F.Cu") (net 39) (tstamp 9e0cc703-e5a1-496a-be75-4be3038ba9e9)) (arc (start 177.244092 90.120686) (mid 177.082409 89.907096) (end 177.025 89.645436) (width 0.25) (layer "F.Cu") (net 39) (tstamp aabd481c-e3ab-4325-aab5-be1fedad32a8)) (arc (start 176.805908 88.659314) (mid 176.967591 88.872904) (end 177.025 89.134564) (width 0.25) (layer "F.Cu") (net 39) (tstamp c34a47ad-00e1-4a8b-9661-b73d53f9e92f)) (arc (start 177.025 89.42) (mid 177.208058 88.978058) (end 177.65 88.795) (width 0.25) (layer "F.Cu") (net 39) (tstamp e0dc0182-0248-4fa2-8ab7-6fd20286a4fe)) (arc (start 175.338916 90.353729) (mid 175.110621 90.578042) (end 174.801218 90.66) (width 0.25) (layer "F.Cu") (net 39) (tstamp e994504c-913d-4144-850d-4f7bd13e1a43)) (arc (start 174.801218 90.66) (mid 175.110621 90.741958) (end 175.338916 90.96627) (width 0.25) (layer "F.Cu") (net 39) (tstamp f10a296b-46af-4964-bbc1-d0782f893489)) (arc (start 173.031129 90.66) (mid 172.726493 90.580731) (end 172.499294 90.362737) (width 0.25) (layer "F.Cu") (net 39) (tstamp f77935ec-f3e6-4b40-9c38-5dad543daa7b)) (segment (start 196.025 90.52) (end 190.95 90.52) (width 0.25) (layer "F.Cu") (net 40) (tstamp 821dc68e-f846-475c-92ac-76bfa479ef90)) (segment (start 196.025 90.52) (end 196.025 93.06) (width 0.25) (layer "F.Cu") (net 40) (tstamp fde4ac39-4c9f-4042-88c4-000834656ccc)) (arc (start 195.805908 91.059314) (mid 195.967591 91.272904) (end 196.025 91.534564) (width 0.25) (layer "F.Cu") (net 40) (tstamp 36216d7d-d2fc-4903-a373-c8c74a28858f)) (arc (start 195.071218 90.52) (mid 195.380621 90.601958) (end 195.608916 90.82627) (width 0.25) (layer "F.Cu") (net 40) (tstamp 3bd16146-49a3-4856-86ac-e5d59bcfef98)) (arc (start 191.527071 90.893938) (mid 191.757587 90.62177) (end 192.099429 90.52) (width 0.25) (layer "F.Cu") (net 40) (tstamp 44ead0e2-7ab7-402d-aa7c-34b7650a81b7)) (arc (start 196.025 91.76) (mid 195.841942 92.201942) (end 195.4 92.385) (width 0.25) (layer "F.Cu") (net 40) (tstamp 50a049a9-d72e-4e00-a180-9bca57d22579)) (arc (start 196.025 91.82) (mid 196.208058 91.378058) (end 196.65 91.195) (width 0.25) (layer "F.Cu") (net 40) (tstamp 5e1d8471-d2e8-4e19-aa38-e055c67dcc45)) (arc (start 196.244092 92.520686) (mid 196.082409 92.307096) (end 196.025 92.045436) (width 0.25) (layer "F.Cu") (net 40) (tstamp 71f5e210-6149-4112-8edf-7594a4edd1f4)) (arc (start 195.608916 90.213729) (mid 195.380621 90.438042) (end 195.071218 90.52) (width 0.25) (layer "F.Cu") (net 40) (tstamp c45e53d2-04b0-4068-a5af-983fe5401afa)) (arc (start 191.936414 90.52) (mid 191.661217 90.456152) (end 191.442871 90.276375) (width 0.25) (layer "F.Cu") (net 40) (tstamp e790fd03-f973-4c02-94b4-9f99f0cad8eb)) (segment (start 78.825 95.46) (end 78.825 106.25) (width 0.25) (layer "F.Cu") (net 41) (tstamp 15a3fc99-a58f-471e-b37e-8689ee082678)) (segment (start 78.825 92.92) (end 78.825 95.46) (width 0.25) (layer "F.Cu") (net 41) (tstamp 97e5189e-7882-4c08-aefb-a882f723b072)) (arc (start 78.605908 93.459314) (mid 78.767591 93.672904) (end 78.825 93.934564) (width 0.25) (layer "F.Cu") (net 41) (tstamp 0258e1f7-7d90-4a3e-b776-2b058fdd01cb)) (arc (start 78.2 96.135) (mid 78.641942 96.318058) (end 78.825 96.76) (width 0.25) (layer "F.Cu") (net 41) (tstamp 1cc03a20-cbbc-4638-aa9d-5a76373e26ac)) (arc (start 79.200886 105.678033) (mid 78.926971 105.448366) (end 78.825 105.106218) (width 0.25) (layer "F.Cu") (net 41) (tstamp 4669f94a-941c-4730-b0bc-23f550a3c818)) (arc (start 78.825 96.474564) (mid 78.882409 96.212904) (end 79.044091 95.999313) (width 0.25) (layer "F.Cu") (net 41) (tstamp 990643ea-c33f-45bb-a5d8-3acdf1bebc41)) (arc (start 79.044092 94.920686) (mid 78.882409 94.707096) (end 78.825 94.445436) (width 0.25) (layer "F.Cu") (net 41) (tstamp a3c412a2-6886-47c4-b34c-42b1fec5fc9e)) (arc (start 78.825 94.16) (mid 78.641942 94.601942) (end 78.2 94.785) (width 0.25) (layer "F.Cu") (net 41) (tstamp a6a3dd65-66fd-45ec-9d07-6c7f2293ffd7)) (arc (start 78.825 105.252992) (mid 78.761496 105.527487) (end 78.583887 105.746202) (width 0.25) (layer "F.Cu") (net 41) (tstamp cc2ffc2f-76c1-4d5c-91f2-8b85cf3e9faf)) (arc (start 78.825 94.22) (mid 79.008058 93.778058) (end 79.45 93.595) (width 0.25) (layer "F.Cu") (net 41) (tstamp ff97195e-4ea6-4b7d-a810-c5bae4482fd0)) (segment (start 97.825 111.92) (end 97.825 114.46) (width 0.25) (layer "B.Cu") (net 42) (tstamp 715290e9-f710-4552-a58b-86d543ea8fd5)) (segment (start 97.825 111.92) (end 97.825 108.75) (width 0.25) (layer "B.Cu") (net 42) (tstamp f2d36ac1-aee1-4dbb-a2b1-8249a1b69eaa)) (arc (start 97.605908 112.459314) (mid 97.767591 112.672904) (end 97.825 112.934564) (width 0.25) (layer "B.Cu") (net 42) (tstamp 2d81a7bd-560d-4d32-8cb4-aa411b73afb1)) (arc (start 98.044092 113.920686) (mid 97.882409 113.707096) (end 97.825 113.445436) (width 0.25) (layer "B.Cu") (net 42) (tstamp 49202364-fe35-463c-bda5-292bfc77c78c)) (arc (start 97.825 110.905436) (mid 97.767591 111.167096) (end 97.605908 111.380685) (width 0.25) (layer "B.Cu") (net 42) (tstamp 52132bd6-7fb2-46e5-90fe-7cd0610e59b7)) (arc (start 97.825 113.22) (mid 98.008058 112.778058) (end 98.45 112.595) (width 0.25) (layer "B.Cu") (net 42) (tstamp a4a25514-6e1c-43f0-8fcc-b1caf59e1d5d)) (arc (start 97.583888 109.253798) (mid 97.761496 109.472513) (end 97.825 109.747008) (width 0.25) (layer "B.Cu") (net 42) (tstamp bb6d981c-6dfc-4f35-99aa-0e81d60ebbbf)) (arc (start 97.825 113.16) (mid 97.641942 113.601942) (end 97.2 113.785) (width 0.25) (layer "B.Cu") (net 42) (tstamp d449bfc1-4536-470b-abef-05f818d6c15c)) (arc (start 98.45 111.245) (mid 98.008058 111.061942) (end 97.825 110.62) (width 0.25) (layer "B.Cu") (net 42) (tstamp eb3898a4-654d-404e-b0dc-15649475ed28)) (arc (start 97.825 109.893782) (mid 97.926971 109.551634) (end 98.200886 109.321966) (width 0.25) (layer "B.Cu") (net 42) (tstamp f63e7f22-2b67-4724-b4fb-9db0a9aff9ce)) (segment (start 128.25 114.46) (end 124.26 114.46) (width 0.25) (layer "B.Cu") (net 43) (tstamp 0054f68a-c48a-4673-90a4-9ebbcbbb07ce)) (segment (start 123.175 111.92) (end 123.175 114.46) (width 0.25) (layer "B.Cu") (net 43) (tstamp db984e9c-ba2c-4bd5-922a-5294720c0547)) (arc (start 127.079533 114.46) (mid 127.429669 114.567284) (end 127.659268 114.852796) (width 0.25) (layer "B.Cu") (net 43) (tstamp 0481aacf-d3d3-4117-a685-8d2beb295a24)) (arc (start 125.398782 114.46) (mid 125.089379 114.378042) (end 124.861083 114.153729) (width 0.25) (layer "B.Cu") (net 43) (tstamp 67b3555c-7918-4990-8287-b2dce2e53c03)) (arc (start 124.861083 114.76627) (mid 125.089379 114.541958) (end 125.398782 114.46) (width 0.25) (layer "B.Cu") (net 43) (tstamp 94121d22-53f4-4481-8279-e37e3ba7ccf4)) (arc (start 122.55 112.595) (mid 122.991942 112.778058) (end 123.175 113.22) (width 0.25) (layer "B.Cu") (net 43) (tstamp 9e9fb0ed-331e-4ac1-9244-7d9e25226916)) (arc (start 127.764559 114.258303) (mid 127.555792 114.407359) (end 127.304735 114.46) (width 0.25) (layer "B.Cu") (net 43) (tstamp a6c0782a-2e00-4b12-9bdd-b0e88ef3aee0)) (arc (start 123.175 112.934564) (mid 123.232409 112.672904) (end 123.394091 112.459313) (width 0.25) (layer "B.Cu") (net 43) (tstamp b13c454b-6519-4fe9-b28c-ab9d83372bcb)) (arc (start 123.175 113.445436) (mid 123.117591 113.707096) (end 122.955908 113.920685) (width 0.25) (layer "B.Cu") (net 43) (tstamp ceda3cbe-4c6e-4761-a50b-d741efb0472e)) (arc (start 123.8 113.785) (mid 123.358058 113.601942) (end 123.175 113.16) (width 0.25) (layer "B.Cu") (net 43) (tstamp d1705d13-5793-48b8-8364-926eadd5d7e1)) (segment (start 139.025 109.66) (end 139.025 113.625) (width 0.25) (layer "B.Cu") (net 44) (tstamp 99cc1aa4-b845-4804-825e-de69c31a76d1)) (segment (start 139.025 107.12) (end 139.025 109.66) (width 0.25) (layer "B.Cu") (net 44) (tstamp c58caca7-2294-4ce0-a06d-889d81f4d285)) (segment (start 150.45 115.125) (end 140.525 115.125) (width 0.25) (layer "B.Cu") (net 44) (tstamp d4f0fdcd-e3b2-4f85-94f3-30942acfdc59)) (arc (start 139.025 108.42) (mid 139.208058 107.978058) (end 139.65 107.795) (width 0.25) (layer "B.Cu") (net 44) (tstamp 08380b29-6be9-4fb8-b4ce-5ea9302866ed)) (arc (start 138.4 110.335) (mid 138.841942 110.518058) (end 139.025 110.96) (width 0.25) (layer "B.Cu") (net 44) (tstamp 0e423a75-5564-4590-8f86-76149dd8894b)) (arc (start 139.244092 109.120686) (mid 139.082409 108.907096) (end 139.025 108.645436) (width 0.25) (layer "B.Cu") (net 44) (tstamp 0e79ef93-546b-4e5c-9788-aeee9c8f23d2)) (arc (start 138.805908 107.659314) (mid 138.967591 107.872904) (end 139.025 108.134564) (width 0.25) (layer "B.Cu") (net 44) (tstamp 33f25e4f-b3bd-493e-9598-9379848caabb)) (arc (start 139.025 108.36) (mid 138.841942 108.801942) (end 138.4 108.985) (width 0.25) (layer "B.Cu") (net 44) (tstamp 6719e568-18e7-44ba-a5b1-245caf57900d)) (arc (start 139.025 113.625) (mid 139.46434 114.68566) (end 140.525 115.125) (width 0.25) (layer "B.Cu") (net 44) (tstamp 838d252c-1a67-47ca-9c66-6389f9e60098)) (arc (start 149.900705 114.827737) (mid 149.673507 115.045731) (end 149.368871 115.125) (width 0.25) (layer "B.Cu") (net 44) (tstamp 841868dc-11a9-44f6-87a5-e46f0ef4cc1f)) (arc (start 149.368871 115.125) (mid 149.673507 115.204269) (end 149.900705 115.422262) (width 0.25) (layer "B.Cu") (net 44) (tstamp 956fc670-25d2-41eb-b5b3-94cd87d4a38a)) (arc (start 139.025 110.674564) (mid 139.082409 110.412904) (end 139.244091 110.199313) (width 0.25) (layer "B.Cu") (net 44) (tstamp c3671381-e71d-462f-bac4-01cc2713d4e4)) (segment (start 169.45 108.01) (end 169.45 109.66) (width 0.25) (layer "F.Cu") (net 45) (tstamp 5ead9a93-696c-411a-9bb2-80563be04a94)) (segment (start 168.7 107.26) (end 165.46 107.26) (width 0.25) (layer "F.Cu") (net 45) (tstamp ad89cc92-bfc2-42e3-9dac-597e0fed5b10)) (segment (start 164.375 104.72) (end 164.375 107.26) (width 0.25) (layer "F.Cu") (net 45) (tstamp b1b7bb1d-6090-4024-a83f-14545b0a3d1f)) (arc (start 169.777536 109.129513) (mid 169.538092 108.89977) (end 169.45 108.579841) (width 0.25) (layer "F.Cu") (net 45) (tstamp 3727ca09-dd13-4892-be36-597f12a54f07)) (arc (start 168.7 107.26) (mid 169.23033 107.47967) (end 169.45 108.01) (width 0.25) (layer "F.Cu") (net 45) (tstamp 40305f3c-d372-4f36-a168-d91c30248121)) (arc (start 166.598782 107.26) (mid 166.289379 107.178042) (end 166.061083 106.953729) (width 0.25) (layer "F.Cu") (net 45) (tstamp 4030d547-051d-411c-8af3-1a7ec3200210)) (arc (start 164.375 106.245436) (mid 164.317591 106.507096) (end 164.155908 106.720685) (width 0.25) (layer "F.Cu") (net 45) (tstamp 5198ba50-df06-47b5-8f4e-77cca911a219)) (arc (start 163.75 105.395) (mid 164.191942 105.578058) (end 164.375 106.02) (width 0.25) (layer "F.Cu") (net 45) (tstamp 7faec51f-7200-4bdc-bf22-ff6de4042ed7)) (arc (start 164.375 105.734564) (mid 164.432409 105.472904) (end 164.594091 105.259313) (width 0.25) (layer "F.Cu") (net 45) (tstamp 9c93b098-773b-4506-a441-81949b333782)) (arc (start 169.45 108.579841) (mid 169.361908 108.89977) (end 169.122464 109.129513) (width 0.25) (layer "F.Cu") (net 45) (tstamp b36ec1f1-8efc-4554-83c9-bdb9a38720c8)) (arc (start 165 106.585) (mid 164.558058 106.401942) (end 164.375 105.96) (width 0.25) (layer "F.Cu") (net 45) (tstamp c1ae5e55-ecb2-4856-a067-429b25ffc3d8)) (arc (start 166.061083 107.56627) (mid 166.289379 107.341958) (end 166.598782 107.26) (width 0.25) (layer "F.Cu") (net 45) (tstamp e656f145-0c3b-44e1-8b59-d99d6b5a9e16)) (segment (start 177.025 107.12) (end 177.025 109.66) (width 0.25) (layer "F.Cu") (net 46) (tstamp 41b44d3c-1865-4cce-90ec-56f5df19c966)) (segment (start 175.94 109.66) (end 171.95 109.66) (width 0.25) (layer "F.Cu") (net 46) (tstamp b11181f7-602d-46be-ab01-00f5cff7cc3e)) (arc (start 177.244092 109.120686) (mid 177.082409 108.907096) (end 177.025 108.645436) (width 0.25) (layer "F.Cu") (net 46) (tstamp 17b18912-0b51-4dcf-8b7d-144dd103173c)) (arc (start 172.499294 109.957262) (mid 172.726493 109.739269) (end 173.031129 109.66) (width 0.25) (layer "F.Cu") (net 46) (tstamp 1ecfabb0-16b5-4c80-a35c-fdc64396b759)) (arc (start 174.801218 109.66) (mid 175.110621 109.741958) (end 175.338916 109.96627) (width 0.25) (layer "F.Cu") (net 46) (tstamp 41f363e8-75e4-47c2-8da5-649c76f7565c)) (arc (start 173.031129 109.66) (mid 172.726493 109.580731) (end 172.499294 109.362737) (width 0.25) (layer "F.Cu") (net 46) (tstamp 446f12f4-c7d7-4b1b-b3a1-d3d8ac918cac)) (arc (start 177.025 108.36) (mid 176.841942 108.801942) (end 176.4 108.985) (width 0.25) (layer "F.Cu") (net 46) (tstamp 9a4ef48e-77f2-4373-865e-835d3f1423b2)) (arc (start 176.805908 107.659314) (mid 176.967591 107.872904) (end 177.025 108.134564) (width 0.25) (layer "F.Cu") (net 46) (tstamp c43e9879-37f6-4327-9975-561a47163433)) (arc (start 177.025 108.42) (mid 177.208058 107.978058) (end 177.65 107.795) (width 0.25) (layer "F.Cu") (net 46) (tstamp c874eb55-431a-4397-bbb7-7e7a1376e81f)) (arc (start 175.338916 109.353729) (mid 175.110621 109.578042) (end 174.801218 109.66) (width 0.25) (layer "F.Cu") (net 46) (tstamp e2769fb2-5fd8-4ad9-a520-27f250e36402)) (segment (start 196.025 109.52) (end 190.95 109.52) (width 0.25) (layer "F.Cu") (net 47) (tstamp 052613b8-6bee-4b6d-a7c6-8c6717e6c8be)) (segment (start 196.025 109.52) (end 196.025 112.06) (width 0.25) (layer "F.Cu") (net 47) (tstamp 581707a8-0088-4a99-843f-d2c7b1204fe7)) (arc (start 196.025 110.76) (mid 195.841942 111.201942) (end 195.4 111.385) (width 0.25) (layer "F.Cu") (net 47) (tstamp 23cba93a-45a2-4923-80f6-1e5960dc614f)) (arc (start 196.244092 111.520686) (mid 196.082409 111.307096) (end 196.025 111.045436) (width 0.25) (layer "F.Cu") (net 47) (tstamp 46e3b2b7-c2a8-458b-8b41-425f1de4661c)) (arc (start 196.025 110.82) (mid 196.208058 110.378058) (end 196.65 110.195) (width 0.25) (layer "F.Cu") (net 47) (tstamp 47a77da4-1ca4-4351-ac91-cdb74e8d1833)) (arc (start 195.071218 109.52) (mid 195.380621 109.601958) (end 195.608916 109.82627) (width 0.25) (layer "F.Cu") (net 47) (tstamp 782ca812-4a8a-4672-b85d-5a4cc938a3e1)) (arc (start 191.527071 109.893938) (mid 191.757587 109.62177) (end 192.099429 109.52) (width 0.25) (layer "F.Cu") (net 47) (tstamp b4887d8c-8a62-41ff-8bb7-a0ec7ceb5089)) (arc (start 195.608916 109.213729) (mid 195.380621 109.438042) (end 195.071218 109.52) (width 0.25) (layer "F.Cu") (net 47) (tstamp b6714f94-fee3-40ea-a3d6-e97435289ea4)) (arc (start 195.805908 110.059314) (mid 195.967591 110.272904) (end 196.025 110.534564) (width 0.25) (layer "F.Cu") (net 47) (tstamp c56008bb-f397-48cc-b39d-8df5b5743a2f)) (arc (start 191.936414 109.52) (mid 191.661217 109.456152) (end 191.442871 109.276375) (width 0.25) (layer "F.Cu") (net 47) (tstamp e2d0c0d1-01a2-4ad8-9794-04072e98a1d8)) (segment (start 78.825 111.92) (end 78.825 114.46) (width 0.25) (layer "F.Cu") (net 48) (tstamp 4a561f89-181f-4258-a106-d5ced212c18c)) (segment (start 78.825 108.75) (end 78.825 111.92) (width 0.25) (layer "F.Cu") (net 48) (tstamp 6ee3b0f4-246c-41cd-b18a-eba6f0781e76)) (arc (start 78.583888 109.253798) (mid 78.761496 109.472513) (end 78.825 109.747008) (width 0.25) (layer "F.Cu") (net 48) (tstamp 315292f8-e3a7-41ef-be2f-8e243bd7eba9)) (arc (start 78.825 109.893782) (mid 78.926971 109.551634) (end 79.200886 109.321966) (width 0.25) (layer "F.Cu") (net 48) (tstamp 34a49d96-7cce-49d4-8111-e02bad988929)) (arc (start 78.825 113.16) (mid 78.641942 113.601942) (end 78.2 113.785) (width 0.25) (layer "F.Cu") (net 48) (tstamp 3eaf7b08-2dc4-4847-b82b-dc4cbb359d83)) (arc (start 78.825 110.905436) (mid 78.767591 111.167096) (end 78.605908 111.380685) (width 0.25) (layer "F.Cu") (net 48) (tstamp 456d6914-fd5f-4d2c-906e-aade7605e05a)) (arc (start 79.45 111.245) (mid 79.008058 111.061942) (end 78.825 110.62) (width 0.25) (layer "F.Cu") (net 48) (tstamp 4e043e35-81bd-4bdf-b212-6046593032a9)) (arc (start 79.044092 113.920686) (mid 78.882409 113.707096) (end 78.825 113.445436) (width 0.25) (layer "F.Cu") (net 48) (tstamp 6cd830b8-0395-45a4-8992-eba2ece7b0b7)) (arc (start 78.825 113.22) (mid 79.008058 112.778058) (end 79.45 112.595) (width 0.25) (layer "F.Cu") (net 48) (tstamp 73923053-5628-48bf-be70-922e801b03c0)) (arc (start 78.605908 112.459314) (mid 78.767591 112.672904) (end 78.825 112.934564) (width 0.25) (layer "F.Cu") (net 48) (tstamp fd3fbb6c-3836-4890-a420-0a13dad875dd)) (segment (start 98.46 130.92) (end 98.46 132.785) (width 0.25) (layer "B.Cu") (net 49) (tstamp 12babdf1-a428-47cd-a03c-f01824e3b4b2)) (segment (start 111.625 129.9) (end 111.625 133.46) (width 0.25) (layer "B.Cu") (net 49) (tstamp 522fac8b-a181-4b74-8b4d-a911fcb7c2cc)) (segment (start 99.585 128.4) (end 110.125 128.4) (width 0.25) (layer "B.Cu") (net 49) (tstamp 8c6e08b8-e1f3-4285-9684-c19111dade24)) (segment (start 98.46 130.92) (end 98.46 129.525) (width 0.25) (layer "B.Cu") (net 49) (tstamp 8e129e0e-2c7f-423b-bd77-cb18ed5c2d63)) (arc (start 98.46 132.206927) (mid 98.618977 131.790457) (end 99.015536 131.586307) (width 0.25) (layer "B.Cu") (net 49) (tstamp 22b06727-3649-474c-9633-77bc2f39044d)) (arc (start 99.085 132.785) (mid 98.643058 132.601942) (end 98.46 132.16) (width 0.25) (layer "B.Cu") (net 49) (tstamp 323364bf-cdfe-4092-8390-2dcd0d4f7fd8)) (arc (start 111.952536 132.929513) (mid 111.713092 132.69977) (end 111.625 132.379841) (width 0.25) (layer "B.Cu") (net 49) (tstamp 963e2ab0-85b1-4fda-b8d4-65d2c16ce168)) (arc (start 97.904463 131.586307) (mid 98.301023 131.790457) (end 98.46 132.206927) (width 0.25) (layer "B.Cu") (net 49) (tstamp a961629d-fe91-45d6-a765-9e0704b1e731)) (arc (start 110.125 128.4) (mid 111.18566 128.83934) (end 111.625 129.9) (width 0.25) (layer "B.Cu") (net 49) (tstamp ad1119a0-2bfd-4053-b794-1340aef49368)) (arc (start 111.625 132.379841) (mid 111.536908 132.69977) (end 111.297464 132.929513) (width 0.25) (layer "B.Cu") (net 49) (tstamp b11feaa1-1c4a-4ff2-8d5c-7349e14f6e15)) (arc (start 98.46 129.525) (mid 98.789505 128.729505) (end 99.585 128.4) (width 0.25) (layer "B.Cu") (net 49) (tstamp ca941c29-63d6-4ec2-b003-86a54b5bfa9b)) (arc (start 98.46 129.633073) (mid 98.301023 130.049543) (end 97.904463 130.253692) (width 0.25) (layer "B.Cu") (net 49) (tstamp cb18e8f6-5d90-4922-b120-491770cae1ad)) (arc (start 99.015536 130.253692) (mid 98.618977 130.049543) (end 98.46 129.633073) (width 0.25) (layer "B.Cu") (net 49) (tstamp dc875cb0-d25c-4d9b-adac-5ab4bf7fe7b2)) (arc (start 98.46 132.16) (mid 98.276942 132.601942) (end 97.835 132.785) (width 0.25) (layer "B.Cu") (net 49) (tstamp fb639d40-cc84-48ce-815d-ecb166775404)) (segment (start 123.175 130.92) (end 123.175 133.46) (width 0.25) (layer "B.Cu") (net 50) (tstamp dba7cfae-945e-44df-9b1d-9916ec4507d3)) (segment (start 128.25 133.46) (end 124.26 133.46) (width 0.25) (layer "B.Cu") (net 50) (tstamp feee0642-1150-4587-9544-dfdf8c631d2d)) (arc (start 122.55 131.595) (mid 122.991942 131.778058) (end 123.175 132.22) (width 0.25) (layer "B.Cu") (net 50) (tstamp 0cba7b77-cc26-456e-8bdf-06c627199d76)) (arc (start 123.175 131.934564) (mid 123.232409 131.672904) (end 123.394091 131.459313) (width 0.25) (layer "B.Cu") (net 50) (tstamp 18670d49-c66b-4dfa-9c12-cfbc5590179c)) (arc (start 127.700705 133.162737) (mid 127.473507 133.380731) (end 127.168871 133.46) (width 0.25) (layer "B.Cu") (net 50) (tstamp 2a65cae3-1ccd-4a2e-b799-085585ee9b1c)) (arc (start 123.8 132.785) (mid 123.358058 132.601942) (end 123.175 132.16) (width 0.25) (layer "B.Cu") (net 50) (tstamp 5fdcd296-3835-42d2-834d-1c75edf0d279)) (arc (start 124.861083 133.76627) (mid 125.089379 133.541958) (end 125.398782 133.46) (width 0.25) (layer "B.Cu") (net 50) (tstamp 71570fe9-8a69-4065-bedb-578072a83b94)) (arc (start 125.398782 133.46) (mid 125.089379 133.378042) (end 124.861083 133.153729) (width 0.25) (layer "B.Cu") (net 50) (tstamp a197b1ba-968a-4e20-9416-2ef10de143bc)) (arc (start 123.175 132.445436) (mid 123.117591 132.707096) (end 122.955908 132.920685) (width 0.25) (layer "B.Cu") (net 50) (tstamp ae5b7a71-49c5-44a1-92ad-b8adbb576eb7)) (arc (start 127.168871 133.46) (mid 127.473507 133.539269) (end 127.700705 133.757262) (width 0.25) (layer "B.Cu") (net 50) (tstamp d4a6fb66-4e56-40af-9efc-741dd0352544)) (segment (start 144.437 138.54) (end 144.437 141.08) (width 0.25) (layer "F.Cu") (net 51) (tstamp 1fff275f-8255-4f29-b7ef-77d55af63556)) (segment (start 149.512 138.945) (end 145.522 138.945) (width 0.25) (layer "F.Cu") (net 51) (tstamp 29c67931-5e05-49e3-86cc-ebc2ddebfc8e)) (arc (start 148.283159 138.945) (mid 148.681081 139.088043) (end 148.895946 139.4528) (width 0.25) (layer "F.Cu") (net 51) (tstamp 00c458e3-7f7d-4330-8921-0ba770bd5046)) (arc (start 149.170394 138.827127) (mid 148.997621 138.91498) (end 148.806246 138.945) (width 0.25) (layer "F.Cu") (net 51) (tstamp 350ba444-5a44-454a-9e48-38649281b8ba)) (arc (start 144.437 139.84) (mid 144.620058 139.398058) (end 145.062 139.215) (width 0.25) (layer "F.Cu") (net 51) (tstamp 53c5aeb6-9249-4ebc-bbf6-4597231c9c98)) (arc (start 146.8018 138.945) (mid 146.402733 138.80101) (end 146.188307 138.434463) (width 0.25) (layer "F.Cu") (net 51) (tstamp 7c8492a2-4edb-4d5b-bef4-1b46d1561922)) (arc (start 144.437 139.78) (mid 144.253942 140.221942) (end 143.812 140.405) (width 0.25) (layer "F.Cu") (net 51) (tstamp beabde96-9562-4eb3-9a99-7d07137f1683)) (arc (start 144.656092 140.540686) (mid 144.494409 140.327096) (end 144.437 140.065436) (width 0.25) (layer "F.Cu") (net 51) (tstamp e6d0d934-5437-4a7f-a08f-d3c076c29cda)) (arc (start 144.217908 139.079314) (mid 144.379591 139.292904) (end 144.437 139.554564) (width 0.25) (layer "F.Cu") (net 51) (tstamp e7f3c766-0417-4379-b4b1-9805d860784f)) (arc (start 145.918526 139.085775) (mid 146.103789 138.981196) (end 146.313396 138.945) (width 0.25) (layer "F.Cu") (net 51) (tstamp f3b29b39-68a2-4f70-8408-3f7bddde9f13)) (segment (start 171.19776 139.60229) (end 167.213228 139.39347) (width 0.25) (layer "F.Cu") (net 52) (tstamp aed75dbb-4fbd-4380-a8b5-407193cf451d)) (segment (start 165.996782 141.873204) (end 166.129715 139.336685) (width 0.25) (layer "F.Cu") (net 52) (tstamp e3795e90-2b56-424d-a5ce-51e8fb897335)) (arc (start 166.243796 141.346093) (mid 166.093516 141.124335) (end 166.04988 140.86003) (width 0.25) (layer "F.Cu") (net 52) (tstamp 3e2a18e8-2324-4a82-a25b-6f27b01adb56)) (arc (start 170.11826 139.545716) (mid 170.431966 139.649647) (end 170.648465 139.899552) (width 0.25) (layer "F.Cu") (net 52) (tstamp 4235060c-5f4f-42d4-ba20-c18f6f2658aa)) (arc (start 167.797459 139.730776) (mid 168.037182 139.518721) (end 168.35045 139.453069) (width 0.25) (layer "F.Cu") (net 52) (tstamp 49e5f2b5-93b9-43bd-8110-f2466aaaf799)) (arc (start 166.061678 140.634905) (mid 166.267615 140.203149) (end 166.718531 140.04347) (width 0.25) (layer "F.Cu") (net 52) (tstamp 73807a44-777d-44f4-9417-36d02d462bfc)) (arc (start 168.35045 139.453069) (mid 168.045761 139.355032) (end 167.829518 139.11908) (width 0.25) (layer "F.Cu") (net 52) (tstamp 94b6a2ea-e6f9-4fbe-9512-a4f3da136622)) (arc (start 165.882701 139.863797) (mid 166.032982 140.085556) (end 166.076617 140.34986) (width 0.25) (layer "F.Cu") (net 52) (tstamp ae6c0626-9594-4452-89cd-11187570bd09)) (arc (start 166.064819 140.574985) (mid 165.858883 141.006741) (end 165.407966 141.166419) (width 0.25) (layer "F.Cu") (net 52) (tstamp d04bf2ae-f53c-4be0-9f4f-25431477acd9)) (arc (start 170.675603 139.263489) (mid 170.435351 139.478917) (end 170.119665 139.54579) (width 0.25) (layer "F.Cu") (net 52) (tstamp e836e2a5-8fdb-4f65-acc8-a2b54bd50ff5)) (segment (start 190.004799 147.165496) (end 190.789702 144.749813) (width 0.25) (layer "F.Cu") (net 53) (tstamp 133f1528-1910-4ca5-a213-dfaaaae2eba5)) (segment (start 195.616314 146.318074) (end 191.821598 145.085096) (width 0.25) (layer "F.Cu") (net 53) (tstamp ed9854fb-899d-475f-be4f-f2536cc1d50f)) (arc (start 190.406521 145.929123) (mid 190.095855 146.292866) (end 189.618975 146.330397) (width 0.25) (layer "F.Cu") (net 53) (tstamp 0e802b9c-7bd8-4674-827c-171d25e9cb87)) (arc (start 190.379824 146.720281) (mid 190.292058 146.467184) (end 190.318316 146.20059) (width 0.25) (layer "F.Cu") (net 53) (tstamp 2d3aa023-93df-4eeb-9864-517f9c68212a)) (arc (start 190.38798 145.986186) (mid 190.698647 145.622442) (end 191.175527 145.584911) (width 0.25) (layer "F.Cu") (net 53) (tstamp 50f10aea-fea8-4c53-bc03-ecc9b2d8bab1)) (arc (start 192.298619 145.562119) (mid 192.585057 145.419334) (end 192.904643 145.436999) (width 0.25) (layer "F.Cu") (net 53) (tstamp 52183a3c-f996-4afb-ba46-5dbb0929b06d)) (arc (start 190.414675 145.195025) (mid 190.502442 145.448125) (end 190.476184 145.714721) (width 0.25) (layer "F.Cu") (net 53) (tstamp 5a847cf2-8bc2-4ede-a83b-ad1a6a0d5e7d)) (arc (start 192.904642 145.436998) (mid 192.635709 145.263441) (end 192.487903 144.979559) (width 0.25) (layer "F.Cu") (net 53) (tstamp 5ad1a1f5-6ff1-4bc2-96e3-f2d08400f34a)) (arc (start 194.588599 145.984149) (mid 194.851777 146.151472) (end 195.001339 146.425133) (width 0.25) (layer "F.Cu") (net 53) (tstamp 7d9fef01-1081-4efd-86b3-d54718c516cd)) (arc (start 195.193298 145.858566) (mid 194.90748 146.001931) (end 194.588546 145.984132) (width 0.25) (layer "F.Cu") (net 53) (tstamp 874bccf2-62f7-4c46-b684-de8bcf090cee)) (segment (start 213.040654 157.202121) (end 219.392048 148.460177) (width 0.25) (layer "B.Cu") (net 54) (tstamp 10ae7365-930d-4ad2-b9cb-cb05c12050d6)) (segment (start 211.54768 159.257024) (end 213.040654 157.202121) (width 0.25) (layer "B.Cu") (net 54) (tstamp 73acb178-8b0c-49aa-9ef8-1092bc215319)) (arc (start 218.837891 148.696316) (mid 218.886928 149.01442) (end 218.77117 149.314743) (width 0.25) (layer "B.Cu") (net 54) (tstamp 2a2300ce-49da-4b89-abf5-6015d0efe6d4)) (arc (start 212.3118 158.205303) (mid 211.903937 158.455242) (end 211.438799 158.343572) (width 0.25) (layer "B.Cu") (net 54) (tstamp 3e03a939-84a9-4ddd-9868-c497377c84b5)) (arc (start 212.546403 157.509653) (mid 212.551663 157.777488) (end 212.444308 158.022922) (width 0.25) (layer "B.Cu") (net 54) (tstamp 6c18df5b-e320-4554-87e8-9384903efe5a)) (arc (start 212.04193 158.949493) (mid 212.036671 158.681659) (end 212.144026 158.436224) (width 0.25) (layer "B.Cu") (net 54) (tstamp 736feb6a-4009-48e9-bcb9-523d93e46189)) (arc (start 213.636999 156.381323) (mid 213.436755 156.559265) (end 213.180406 156.637028) (width 0.25) (layer "B.Cu") (net 54) (tstamp aacd2a79-6a24-4f6a-a04c-f27c4edc1f4d)) (arc (start 213.943045 157.023401) (mid 213.693105 156.615537) (end 213.804775 156.150399) (width 0.25) (layer "B.Cu") (net 54) (tstamp ca51f43c-1730-47a7-bd04-86bcb21bebff)) (arc (start 218.744242 149.351805) (mid 219.013091 149.140762) (end 219.352754 149.102696) (width 0.25) (layer "B.Cu") (net 54) (tstamp cdd68aca-2d3d-4ce4-acc7-d5c9ee23a626)) (arc (start 212.276533 158.253844) (mid 212.684397 158.003905) (end 213.149535 158.115574) (width 0.25) (layer "B.Cu") (net 54) (tstamp d307d784-970c-4069-9a6a-3a8d6d17e6fe)) (segment (start 78.825 127.75) (end 78.825 130.92) (width 0.25) (layer "B.Cu") (net 55) (tstamp 2e02192e-907b-4033-a96d-8416388cda26)) (segment (start 78.825 130.92) (end 78.825 133.46) (width 0.25) (layer "B.Cu") (net 55) (tstamp c6ceee34-814f-4507-a8bb-02da7df4d46c)) (arc (start 79.044092 132.920686) (mid 78.882409 132.707096) (end 78.825 132.445436) (width 0.25) (layer "B.Cu") (net 55) (tstamp 0e20d245-b1d7-4001-a35c-af13f2dfba2f)) (arc (start 79.45 130.245) (mid 79.008058 130.061942) (end 78.825 129.62) (width 0.25) (layer "B.Cu") (net 55) (tstamp 0f87b5a7-5ba7-4a57-9f65-227dc30312b7)) (arc (start 78.583888 128.253798) (mid 78.761496 128.472513) (end 78.825 128.747008) (width 0.25) (layer "B.Cu") (net 55) (tstamp 14b554ae-c48b-4ff6-9e3f-b48ac9223b43)) (arc (start 78.825 128.893782) (mid 78.926971 128.551634) (end 79.200886 128.321966) (width 0.25) (layer "B.Cu") (net 55) (tstamp 2f004e10-b39f-4f54-9546-ea47a6fb98d4)) (arc (start 78.605908 131.459314) (mid 78.767591 131.672904) (end 78.825 131.934564) (width 0.25) (layer "B.Cu") (net 55) (tstamp 32c44d07-200b-4212-ab69-66a820d0ce87)) (arc (start 78.825 132.16) (mid 78.641942 132.601942) (end 78.2 132.785) (width 0.25) (layer "B.Cu") (net 55) (tstamp 799e04dc-4374-42ef-a6c2-bea592d20ccd)) (arc (start 78.825 132.22) (mid 79.008058 131.778058) (end 79.45 131.595) (width 0.25) (layer "B.Cu") (net 55) (tstamp b0866c2d-5816-4db4-b050-4f63cbce468a)) (arc (start 78.825 129.905436) (mid 78.767591 130.167096) (end 78.605908 130.380685) (width 0.25) (layer "B.Cu") (net 55) (tstamp fd1459de-d3f6-47cd-8d99-ae9bc1ea32d6)) (segment (start 216.95 105.45) (end 218.55 105.45) (width 0.375) (layer "B.Cu") (net 57) (tstamp 49f233e3-d083-40c5-99c2-c04eac614186)) (segment (start 216.95 118.15) (end 218.55 118.15) (width 0.375) (layer "B.Cu") (net 57) (tstamp 95448ba4-a884-44cf-9663-0bb7bbd96736)) (segment (start 219.3 106.2) (end 219.3 117.4) (width 0.375) (layer "B.Cu") (net 57) (tstamp fd855e53-2aa4-43e4-9fec-fd6d7381d5e1)) (arc (start 218.487113 118.15) (mid 217.952434 117.982581) (end 217.608721 117.540118) (width 0.375) (layer "B.Cu") (net 57) (tstamp 45455bab-becd-4cce-9b57-8c19154e258c)) (arc (start 218.487113 105.45) (mid 217.952434 105.282581) (end 217.608721 104.840118) (width 0.375) (layer "B.Cu") (net 57) (tstamp 46aefbfd-2a4b-41a3-abec-3529e6ea0a60)) (arc (start 218.55 105.45) (mid 219.08033 105.66967) (end 219.3 106.2) (width 0.375) (layer "B.Cu") (net 57) (tstamp 5f683ab9-6541-41e0-9d8c-65e333dfe8be)) (arc (start 217.608721 118.759882) (mid 217.952434 118.317419) (end 218.487113 118.15) (width 0.375) (layer "B.Cu") (net 57) (tstamp 74bbd822-8304-417f-86e9-0487133b39bb)) (arc (start 219.3 117.4) (mid 219.08033 117.93033) (end 218.55 118.15) (width 0.375) (layer "B.Cu") (net 57) (tstamp ac0e6d80-33a1-4eb8-af61-b5cdd8ec46f8)) (arc (start 217.608721 106.059882) (mid 217.952434 105.617419) (end 218.487113 105.45) (width 0.375) (layer "B.Cu") (net 57) (tstamp ac518c33-e446-4385-b414-d3467763c999)) (group "ARC-TEARDROPS" (id 07c004f7-48bc-4958-b645-47a7960ec56a) (members 00c458e3-7f7d-4330-8921-0ba770bd5046 00f1f64a-37da-4462-be4f-b4a2e71c8402 0158d8e7-2589-43e8-a9f6-e7cf2ba552a6 01a214fa-baad-4900-b8d1-0a6efe8e55fd 01f1778a-4006-45b5-bd02-130aa2c54582 02215747-9818-4437-b0b2-caa774c8a523 0258e1f7-7d90-4a3e-b776-2b058fdd01cb 02f3b9e4-f9b2-4fcc-abba-a47e64c21afe 036adb89-27a4-473a-a669-7caa87d97c62 03a15904-9281-43b9-9331-bcf2d79aef6d 0481aacf-d3d3-4117-a685-8d2beb295a24 04baf459-b0c7-4ce9-a6a8-76662eda2b09 04e161e6-5920-4cf7-82a2-8c925a41bbe6 05043f1f-30ff-4018-919f-86e2daa86b1a 050e7808-6b74-4926-bb58-b5d9577e902a 05747684-1496-4927-89d0-0eafebf5ccb3 05bc0e77-e25c-44b1-bee3-68835a5be856 05fefe01-bf4a-458c-8495-62c23002bcca 0759c090-03ba-4395-b21f-81ceeb533c5c 0784149d-9ab9-40e9-80c7-be9474140c85 07b7dec2-4d9e-4d59-a585-8cd7de55b5e8 07c9b9db-0c03-4247-a9bb-fceeb16453e3 07d9fcbd-eb8b-4732-bce8-cc706457c03c 08245bd7-c47f-46b6-aa8a-4984d09a20cd 08380b29-6be9-4fb8-b4ce-5ea9302866ed 08400c99-d857-4c43-8d74-70bf23deed04 0860211c-4701-4bc5-8e04-dcf18960a8bf 08b53055-acad-4334-b215-934c8b2016ae 08ccddd8-4a7e-4353-b20c-3482be009993 09c63386-4262-4e2b-bcc7-d8afa6e4f483 0a0aac9b-8924-4bc2-b01b-a1d99e21dbe3 0a4a3997-38ef-4d0e-9564-e8fddb86f922 0a7c44e5-332f-4436-ad92-2123424a01b1 0a9d8c15-19f8-431d-a7e9-38a0a4eb2fbe 0acd9e98-72da-4bcf-9a66-598ab35cf4f0 0b1ccd4a-2dc7-43af-a671-f5ad8bfbc4da 0b2fc931-2464-42d9-9c52-e49890ce77ff 0baf8088-476c-4a85-a046-d564949e44d0 0bb75693-dcd2-4ff3-9f2d-24a049cd86a0 0c6d2ffc-d7fe-43b8-9253-ff458c282454 0c9abb9c-fbe5-41cf-a9ee-6fde81a203a4 0cba7b77-cc26-456e-8bdf-06c627199d76 0e20d245-b1d7-4001-a35c-af13f2dfba2f 0e28a6bb-fe6f-45b6-a468-e2be12213afd 0e423a75-5564-4590-8f86-76149dd8894b 0e7816ab-51b7-4397-9a86-807ef24b41cb 0e79ef93-546b-4e5c-9788-aeee9c8f23d2 0e802b9c-7bd8-4674-827c-171d25e9cb87 0e8df5cb-bd6b-47b6-9cb4-a488187a4e92 0f47e441-d6aa-4778-9c3d-6c27f76b9179 0f6336d6-8da8-4b37-a26b-e12a6f6a9a31 0f87b5a7-5ba7-4a57-9f65-227dc30312b7 1125fd2e-18d6-45ad-8855-abaa9d33d996 1190cfaf-f0a5-43ae-b8a6-349417095e5a 12a351da-61a7-4b46-a875-05264467867c 13cb3b48-8242-4aca-8740-f300a737707d 14b554ae-c48b-4ff6-9e3f-b48ac9223b43 14d51d27-f2b7-4a9b-b98f-a61ba5548db2 15a01cb7-72c3-4e1a-86ee-56a855c23d14 15a08866-c4e1-4f5c-a620-13b63418f328 15b2eb82-35ef-492d-ae2c-841993161156 15b88503-e298-497b-9795-23df17a3ac17 15e08e4d-8f37-4c3d-9a5c-afba5c5d1653 16277817-3bc0-4d8f-9168-10029b6276f3 16accd8c-bd1a-4b74-aaf6-bf1178251baf 175e80fc-a0dc-4bb7-bf33-195784e24458 1762b106-16c5-4806-b2c4-e80d79cf0388 177b2679-56fc-484d-8075-57c55da16926 1799ca41-0d3e-44ed-85b8-89b856f4fb09 17b18912-0b51-4dcf-8b7d-144dd103173c 17f2f6b8-ffdc-431b-90c7-476e38aca8bd 18670d49-c66b-4dfa-9c12-cfbc5590179c 18a59337-a108-4be1-a17d-7a54940a343b 18c7949d-0c1a-4456-834c-dfcd7b69270e 18d80e89-5616-4bef-80e1-c12fe01baf60 18da7392-6120-4154-9ed2-d15560d296b4 19508e1d-63f1-4cf2-b08e-3a436631b018 196facd5-3153-4afe-b06f-ba565c2946b6 1ac8441a-b51b-4177-a9e5-240ce68d4eef 1acf29c1-b4a8-4d36-8947-8d67c177d043 1ad1678f-a948-48c1-89e0-ac49bb3fd916 1ae3bf8c-72fc-46de-87b1-5341d266bf8b 1afd11a4-35ee-4960-b9a5-89d96741898c 1bc8d66a-b1a3-4048-8421-1a1cd7a825e8 1c33d877-2908-4ddc-8aba-0877955f93fb 1cc03a20-cbbc-4638-aa9d-5a76373e26ac 1d07ffe6-326a-4da8-b688-35cb81702d34 1d1d27ab-34ce-48c2-a2eb-fab8f2459524 1d4e9724-cbe7-4d3b-a322-e0533631e9df 1d5182c1-7bac-4b3b-bf77-6337263a20fb 1dd6d21c-a0c1-42fa-931a-5e2f0c2e4397 1ecfabb0-16b5-4c80-a35c-fdc64396b759 1f7ea650-68f5-4286-a7fa-3e4af932f5b1 1f837422-84db-4cc9-8ad7-79df99819e35 1fa23da4-cde4-4220-94a4-8e4bf6316c93 1fe9dfc8-a470-43e2-b4d7-d63e947935bd 203c2ca0-5566-44d0-8238-9392346ab7d5 2040aa20-8d6a-4a4c-83c6-6d71653acd40 20b805a1-02ec-4bec-aaef-8d63757fbec5 20ce82b8-1af1-484f-b782-cbaa168472a0 20d85a1e-08dc-4815-ba0f-adc599abb260 20df9a9e-df88-4d44-bb79-b4c28b19f6d1 21026352-6947-4dba-af58-526dbf708cd1 2121aced-9f70-4d81-97d3-3b1e32283201 21716e39-dc9d-4f9d-bc17-20559655ac51 21858c0e-cf5d-45db-920b-3257b4ad2e12 21c2f7fc-e01e-4ff2-bef5-b757598205ee 21c5e333-4715-416d-a42c-62a5dc14c945 22b06727-3649-474c-9633-77bc2f39044d 23130e36-1d7e-4d6f-82bb-16895beba616 23372ab0-839b-42f4-8acd-3cb19675f47c 23598b5d-1489-45e4-a35e-937183afc1ee 236569cc-bf84-4a3a-bce3-d1c8eb3f6887 23cba93a-45a2-4923-80f6-1e5960dc614f 2419e955-1c91-4f05-a49a-d49acee0bc30 2431eb67-98e7-42e7-8142-ec80fcef9a0d 2438e326-476d-4de8-9016-0cb8a5a4e248 24cca047-cf64-4f7e-82f7-df4849eeab86 24ec2491-cf7c-4bbd-a778-6a80ce9b3be9 25357a8b-27d0-4a42-a6ec-2a14068d4881 2580f712-7837-47f9-9441-1f539836a06a 25d1f7a3-0f03-48fd-89c5-0fdbf8d77304 275d094e-7fb2-4348-800e-88f45b94e5eb 27874bd9-26d7-4b63-9cb5-5922b8118f9e 27fa639d-482c-47d3-bd88-ef55fb4d0633 28e5648c-66bf-4605-a59d-fbe6ec259cd3 2a2300ce-49da-4b89-abf5-6015d0efe6d4 2a46d202-4ac2-4f74-8fbc-bf4f01de0f03 2a65cae3-1ccd-4a2e-b799-085585ee9b1c 2b0a2f4e-43ef-4229-b611-6ad64e6ed06f 2b269c04-e13c-4a51-bb88-c91239d06fac 2be81ac9-7e91-4e6b-91a3-1b0257eca934 2c384ad7-d3fc-4018-a303-3d0a60b83876 2c5f5350-a025-4c59-8d25-050346687c99 2c87d2aa-214c-4429-ac58-211e8f100c53 2cc71e0e-bc86-4af1-983a-dc046ab6c207 2d3aa023-93df-4eeb-9864-517f9c68212a 2d81a7bd-560d-4d32-8cb4-aa411b73afb1 2e985d94-92c3-4a88-bc2d-e98b57043de1 2f004e10-b39f-4f54-9546-ea47a6fb98d4 2f2dba81-3d16-421a-89c6-1b91eee2a8c6 2f72c026-a8cc-43d0-a298-2442ca1c8bec 2fb8f551-4d66-4741-b49b-ab3a463a2226 2fd08ca6-78c9-4f4f-9188-b24df1626584 30c5b9de-21d7-4161-9547-0d2af8be153e 30fc63c4-95c0-426d-9f78-b2e99c49aade 315292f8-e3a7-41ef-be2f-8e243bd7eba9 323364bf-cdfe-4092-8390-2dcd0d4f7fd8 32439e5d-345a-4583-ab12-5aaba23bc3c1 32c44d07-200b-4212-ab69-66a820d0ce87 32ed99ed-9134-49a7-bded-74423ebb1516 3337f656-0ca3-4fbd-875f-763683be572d 33860898-be35-43f0-bc0e-ab31a7002696 33e363f3-7fcf-4b35-8d29-0560ad5735ee 33f25e4f-b3bd-493e-9598-9379848caabb 34382045-a03d-4040-bcdd-55d943fdfe02 34514def-bb0c-4c34-81bc-1c70f884e26d 34a49d96-7cce-49d4-8111-e02bad988929 34c3f5ad-fa70-44ab-8f5f-f42d0e431be3 35006e05-49bc-4bdc-9bed-60cf42bc72b7 350ba444-5a44-454a-9e48-38649281b8ba 3578fe04-a7e6-4830-8643-091055f3d9f9 360ccc92-ac18-42f0-840b-bb3576d92c39 36216d7d-d2fc-4903-a373-c8c74a28858f 36857c83-682a-4a2b-8b98-1d82d19de040 36887706-b1c5-401d-8540-8fbe595cb83f 369ffd67-d369-4e5f-a6f0-62472fe39286 3700dc1e-b3d4-4330-87d5-078a53fbea88 3727ca09-dd13-4892-be36-597f12a54f07 3744b7af-3a24-48b2-928c-bcc96ff289c9 37cd9458-a9e1-4e45-9d8f-3ffad9be71a4 37ea7a7b-47a4-40e9-86c1-9d6665683e39 38027830-4872-42fd-bcbd-715272c5317f 38246018-f0af-4c9c-8a4a-3ae891b5d23d 38290ec0-fac6-42da-92c7-8fb6e5418a54 38316fc0-5f1e-4e18-8595-a90caa1d2f26 39f09cff-383a-43bd-8937-4795e5832a32 3a275f50-6080-41dd-bd35-c3f262b4ec35 3a54332c-f34b-4cbf-b540-29361322f860 3acdaa53-6473-4b70-a244-8e9b6fc0f06d 3b8dc705-4f84-4a34-b4de-befaeac315b6 3bd14c59-b415-4183-a830-a6a86cc1c3e3 3bd16146-49a3-4856-86ac-e5d59bcfef98 3cd3c131-1f7b-410f-806f-53e267edec39 3cddb0a3-d599-49b8-917e-01cd66b4d560 3e03a939-84a9-4ddd-9868-c497377c84b5 3e2a18e8-2324-4a82-a25b-6f27b01adb56 3e670d68-7e8b-4f40-91e1-005df60e4a63 3e927824-93a2-4765-b495-66252035ee1c 3eaf7b08-2dc4-4847-b82b-dc4cbb359d83 3f0f5413-44d6-4b4d-914e-e13dc1516183 3f570aa1-318b-4010-bec8-383590734227 3f8f0c83-0f62-4610-909c-27211bcfa2cd 3f915b21-965b-4fd2-b223-d58640dc9455 3fac22ae-794d-4668-bb4d-a9f63d6c1d25 3fec48e5-571a-4c05-ba9e-ee10c480202a 401c8a34-d813-437c-b85b-608765600282 4030d547-051d-411c-8af3-1a7ec3200210 4046140c-712e-4387-84dd-f610181b39cc 412116cc-43cc-4235-8a53-09077ca6d385 418ee195-8349-49aa-b05c-89cb78b2b330 41cbb22a-803e-4d6e-a78e-3ec8d3e275b1 41e636ed-d748-497d-90ca-ef5e47fe02cd 41f363e8-75e4-47c2-8da5-649c76f7565c 41f41d4f-53cd-4631-bf6b-5b3cec782e65 4235060c-5f4f-42d4-ba20-c18f6f2658aa 428b7a47-01f1-4cbe-9500-03293e4d0d46 4323a1b2-8fa4-43da-9567-88fe137d05c3 446a11e1-5be5-4f65-be29-60b9f39c6c73 446f12f4-c7d7-4b1b-b3a1-d3d8ac918cac 44acd105-f8a2-4078-bf23-0edeaf4fc653 44e1ffea-9651-4c82-a787-8e78b535200a 44ead0e2-7ab7-402d-aa7c-34b7650a81b7 44fd14bf-e948-4eda-b976-5b8d45b4ac56 45455bab-becd-4cce-9b57-8c19154e258c 456d6914-fd5f-4d2c-906e-aade7605e05a 45724396-f3bf-4647-8b71-04736c2acf08 4669f94a-941c-4730-b0bc-23f550a3c818 46aa300f-f3ce-4e51-816b-1c4f6f4d81f2 46aefbfd-2a4b-41a3-abec-3529e6ea0a60 46e3b2b7-c2a8-458b-8b41-425f1de4661c 4712104a-4308-42b0-a667-eef6a5959e32 47a77da4-1ca4-4351-ac91-cdb74e8d1833 4876d343-8d48-4c81-ada3-a154f65e0486 4889cf8c-83e0-4103-b34d-73d0b0ac9a7a 48b66cdf-0722-44c3-8823-fad8f60d5b18 491348d3-e4d6-4108-b701-6c81b2b1f1e4 49202364-fe35-463c-bda5-292bfc77c78c 49317908-e8e4-4553-ae7f-223ff747a7d4 4946b859-29bc-4a49-8128-1ddf493ef9b3 49e5f2b5-93b9-43bd-8110-f2466aaaf799 4add8fa8-9f0d-4d5e-80dc-2a420fea8884 4af9c9ee-7dbe-40d0-8115-7fa91058d0a2 4b926418-4c15-420a-81a0-53eec1195d6b 4bb7174c-89c5-47d6-92ae-08508c3ef73e 4beb51c5-5877-4479-8e62-243d41df8f02 4c2068e4-f4fb-4df3-8006-a28fc29d8c06 4c41998a-1c90-41e0-935b-b03fdccda8ab 4d27ac51-5632-4214-ac0b-235062593ab8 4d51a9f5-d1e1-4f4d-8324-be9ca74b29de 4df97a1b-1ea5-4f0c-bdbd-676f767b6c6d 4e043e35-81bd-4bdf-b212-6046593032a9 4e3642b7-a9e1-444a-a15e-6cec3a9f6a8d 4ede3127-8e00-4362-a275-840a441520df 4f8f887c-4700-457c-a3eb-3e343ea7ea76 4f908c22-7f66-4f97-90f2-742ca7f8c4bf 4fc8aa1b-777a-4b16-b2d6-1c55b7a4a693 50a049a9-d72e-4e00-a180-9bca57d22579 50b58f42-b2e2-4e31-8602-1abf9b038df1 50bdc3f5-ad4c-4373-9536-2a811e8ae7fb 50f10aea-fea8-4c53-bc03-ecc9b2d8bab1 5198ba50-df06-47b5-8f4e-77cca911a219 51dc2356-8230-4c3d-8b70-9425596c766d 52132bd6-7fb2-46e5-90fe-7cd0610e59b7 52183a3c-f996-4afb-ba46-5dbb0929b06d 5249e18c-82d9-4e73-859e-2218831d0d18 53637489-a77b-4213-b735-d1de5eb2cc59 537b443b-855a-4700-bc41-55988d3f25c7 53c5aeb6-9249-4ebc-bbf6-4597231c9c98 53d721fb-5940-4b0d-9148-8049606a2220 555c9bfa-814a-434d-9b53-31e87e56617f 5593c189-b570-46d0-a54a-05c5772ecfd3 565bb17b-10ad-47e6-8fa3-35d2c7a6782c 567f0921-842a-437b-90e3-f380c9a9a30f 56a67f92-b9b6-4318-a106-5caa88fc7155 56b19480-e27f-4160-9e1d-3da3306a760d 575ddd41-0191-4a6f-93e0-681ada52a3f5 5775a3f0-544f-46c9-87d3-56cf5089161d 5882788c-2ad5-4e2c-b62d-4d1497e580e9 5890d3a2-0563-4c56-b41d-15da284b1c84 59741412-b67f-41c3-acc9-786ac6591b68 5a1dd8ba-f374-4df0-8336-200209a40e4a 5a2b09b9-989d-42a1-ac13-2be254491634 5a3df040-4718-490d-a8bb-c899bec4571f 5a847cf2-8bc2-4ede-a83b-ad1a6a0d5e7d 5ad1a1f5-6ff1-4bc2-96e3-f2d08400f34a 5bbd6ba0-6d5b-41c1-bc31-e8c9b7a5473e 5c551c80-90e1-410a-930b-2ca668c293ed 5dc1315d-9634-4d55-81d4-1701ac9fd647 5e1d8471-d2e8-4e19-aa38-e055c67dcc45 5ee82cc2-6046-49be-9d04-4cb41d85627e 5f3bd4b1-a21c-4bc6-8479-3d02c5334081 5f58aee1-835a-407a-b381-106f1bf224e1 5fdcd296-3835-42d2-834d-1c75edf0d279 601ffb97-56f0-4a5d-860a-82badcfb5d94 60aaf432-9cbe-4d20-b71f-65b1089350dd 60e93002-82d1-47ae-a182-7343119fdf8a 61ec2aa9-b4ee-4c34-9088-46a632dfa8e3 62049e8a-c4b0-40b3-a3ac-44323e3eab1e 622121bc-c0ee-4435-bf17-ab7fa5f1ea8e 62f85a50-b440-4edc-87f3-172f86884d67 6313b633-784d-4b89-ae3d-0dd015593592 6381d55a-643f-4062-8568-aa96c7b2c1df 63922d6a-5dd3-4944-82e1-2e929d2e11ab 63c0d9d0-b127-4c44-806f-59f0f9911417 64157b68-0c31-4020-94eb-9f29424d3300 64206d09-ff22-420f-82f8-1bdafe2ff847 64549f57-e69c-4109-aca6-912f5a097aa4 646403b4-ba51-4395-b1fa-749b2992dc8f 64cc69b3-67cd-4d50-92c6-ada10091e4ce 6570c4ef-bb19-4c9c-955c-0a6baa3cecd0 6653f5b0-b8c4-4c5c-bc85-745a53497085 669abf78-cb3c-499d-aa43-33fb4f4ca54a 66e1821a-0bf5-4cbb-932b-7ea1037ee773 6703e566-8902-4667-8c6b-b3952f3a60e0 6719e568-18e7-44ba-a5b1-245caf57900d 674a899d-0ef5-4760-acef-f9a7c41ebc9f 674b7f80-a5f7-4be0-8a4b-a6adb89dded1 67b3555c-7918-4990-8287-b2dce2e53c03 6827150b-c9a6-44da-b167-447f24752ec4 6849cad7-5249-4b74-8ec9-3669a67cddd7 68c70d73-878c-4285-9f8c-40d47c9984da 690007ed-0e54-45d7-ba0f-cc5ab00f5dc3 695a57e5-ef1b-4e5d-9853-d30c79cae356 6a5ddf6b-0965-4247-8f6b-efed48ca1fff 6a85b5d6-6ae8-430f-b1d9-94d80ed3a5ad 6a8ef38f-2f52-4ecf-8886-e4aa0d023453 6ac2f518-5c45-4425-aca1-6d9b0a03f4f0 6b23e94d-6bc7-44ee-9f6a-ddb6c7c79d53 6b4b3588-a0a5-4fcc-8b63-5b073cee5e2e 6b625a06-8356-4bb5-a083-6ccf2f973c45 6c18df5b-e320-4554-87e8-9384903efe5a 6c451de8-ddb8-4480-bb4b-fe6d112d48b3 6c69a493-1b1d-4778-bef8-71241a7b0995 6cd092d0-4f0c-40fd-822a-ca9f0111a433 6cd830b8-0395-45a4-8992-eba2ece7b0b7 6d4e813f-8c77-44f7-a4b1-73bc502a7631 6e784ad5-52f7-483f-ac8b-505906b89ebb 6eb13cc7-3459-4076-9f5e-59ab17df9571 6fedf0de-1e22-47d7-8ec2-bfb3ba902157 702e84c1-d8c8-485f-be25-db0adc3e0e7a 70575f8f-5a30-4f02-b6d1-f67163d32132 7077cb26-d86d-45ca-acb0-d8cfcad0abaf 70c85705-2e5d-40c4-8884-385ce7de9b14 70cc117b-a92a-4fab-abc1-57e3cfc633b4 70ecba52-7421-4d11-baa8-0536b627e3bf 71570fe9-8a69-4065-bedb-578072a83b94 71bbf0a4-e5fc-42d6-be10-b55ab80dbcc3 71c9c721-79a9-4c2a-8ae3-6576c9eacaac 71f5e210-6149-4112-8edf-7594a4edd1f4 724bf1db-0bd2-4e9e-a575-4a4762d79438 728f8819-eb47-4e88-ad2b-3144e10f299b 72e7f0b9-7d82-4a8c-b168-6a1f507414b9 7309b089-c843-439f-848c-0d97d8ecce69 736feb6a-4009-48e9-bcb9-523d93e46189 73807a44-777d-44f4-9417-36d02d462bfc 73923053-5628-48bf-be70-922e801b03c0 74bbd822-8304-417f-86e9-0487133b39bb 74f39c0e-6cb0-43f5-b251-024fdfc9f4d7 75115627-ed1e-44dd-b7f3-c8fa13eb5eef 7570c19f-70da-4e48-b861-66e32b6f7580 75aae5c1-3c76-438e-b961-b50a363011cd 7662e8d5-f64f-40f5-8beb-505842934a0a 768b2314-7c13-4bc7-b8e2-45c20e443d11 77775b35-7141-4ba3-afe5-e809c185f0b4 7829dded-5a45-494e-b849-75248f49f609 782ca812-4a8a-4672-b85d-5a4cc938a3e1 78e44337-7098-447a-8558-9e4063f8b836 799e04dc-4374-42ef-a6c2-bea592d20ccd 7a9023f7-c181-4c9a-94fa-a1e1d7d54ce5 7bb9f366-a53a-43e6-a830-0be7d34f8591 7bf53026-bdbd-4091-bc04-8eed1dc4e0d0 7bfee334-b1a5-4f2d-96dd-46d4e634d5ce 7c8492a2-4edb-4d5b-bef4-1b46d1561922 7d119502-5188-4347-8455-24fff0cf5f26 7d9fef01-1081-4efd-86b3-d54718c516cd 7f50165c-8f02-415e-90a1-5560c70a219c 7faec51f-7200-4bdc-bf22-ff6de4042ed7 805be463-974d-4528-bf8f-beb98e56bc9e 80e4491d-1bb6-48ec-bcc4-22a58899092c 81ecf64d-1560-45bf-b7a9-9b97bfc4fb2d 8237eaca-35c2-4690-97f0-97d610896a55 82ad325d-144f-47ff-93d0-f39b2fe17d49 82bde623-bf1b-44b8-8322-b83dd7607308 82d0f1c8-702d-4650-91f4-0f9664ad317f 82f2b94a-27ba-40e6-9154-4ebf84184d59 834f69de-c22c-4d32-b86c-9f1217549844 83ccbb0f-efb3-488a-8e8c-0cd50936a520 83f841f4-a140-41f6-b72c-22cfddad8280 841868dc-11a9-44f6-87a5-e46f0ef4cc1f 842aab95-523d-423d-9425-0bdd379c4a0f 8443dd49-b675-46fb-9d7b-db2ef346a005 84a240b1-f75d-4601-9316-5da18d36e3f5 84ee6d0a-d36d-4b8d-99fc-a7e5c0684165 8510c899-f47b-41fa-98a6-d50a4a2277aa 857bc649-53ba-4395-8bab-4c2b93246db3 859c5699-31b0-410b-aa67-bedcb6e9e28b 85f40ef4-7307-42ed-8f8f-cdc7075593b0 8617e294-659a-409c-9633-6ec8fd74e5ec 861cff43-a97a-4a04-8398-8228e5cada76 8693c78a-fdc1-417a-8904-87f75228fa47 87045658-b378-4af5-8474-30b962b9240e 870c06a4-aa51-432f-a6d8-8553e88d5e6b 874bccf2-62f7-4c46-b684-de8bcf090cee 874dbf2b-5b9c-4843-8014-307f5c39130c 87944518-121c-458e-94b8-43c623905ffa 87ab4619-64b0-450c-a8b4-c9f33db78718 87d1582d-3cbd-4761-a0fc-c0c3490c9e4d 880130b8-5a2c-49b9-b1f9-0e4463f8f4ec 8854eb94-0a41-49f3-980c-c7b3cefbec5d 891a0e4b-0ea1-41b9-9a27-8fc4f45c0979 89efd06e-b61f-45e8-a8cc-64835990aa2f 8a7a3421-4447-45b6-938c-df242dcecce6 8b2ca953-c425-4f53-8c77-3077b8140d11 8bfc7770-be74-42f5-943d-379d4c713bf2 8c4ef985-e73e-447f-8c63-7f05d42dba4f 8cb1d998-afd8-4cb2-80c3-5a4575538498 8cb34778-c633-4935-a7d9-935475e8bf15 8d5c4d1c-6960-4a2c-9d24-c4af84a5bc46 8e34e91e-51cc-4468-aba1-5b888af5668f 8efde236-1b1a-4651-80f1-4751fe3489c2 8f073f62-5356-4e41-b43a-2d49cd6a31e9 8f6d00ce-46d2-4930-bcb8-ff4fd9629e67 8fcc4bcf-5d04-4457-bf2f-7841ad0839da 900209c2-67ac-4fe4-ae87-539fa7ff7129 9033a831-fdf0-44ae-a1eb-e8f88f1e2d5c 90d0236b-6511-410d-acaa-fe262c75b5a5 90ee47c5-e353-4176-8344-73df58e6e0b0 91a92207-59f4-4fa3-b61c-4f5e920ba3ac 92c5a271-d1b1-40bf-8058-bba448f0a65f 932dae17-643a-4466-933b-1a6232fe490f 932f633d-c0e2-4dd6-a18e-fcd6c1b5c60d 93a77224-9865-4f5e-b995-3e25224745f9 93dc5f4e-dffc-40ba-b05b-5bd7f910f70f 94121d22-53f4-4481-8279-e37e3ba7ccf4 943a6a1a-2fa9-471e-9478-24c50c13865c 947d18f0-13f1-4287-9367-759cfa036b4c 94a68b37-4ba6-4732-b1f0-c611a85207b6 94b6a2ea-e6f9-4fbe-9512-a4f3da136622 94efbcda-85dc-487e-af38-6838df43e143 9519d9c6-6e34-4545-93bd-3c8728ab743d 956fc670-25d2-41eb-b5b3-94cd87d4a38a 958495a9-0a6b-4e04-8006-841d4f36ddfe 963e2ab0-85b1-4fda-b8d4-65d2c16ce168 96f32ee4-2d62-4e4e-95d1-aa0479d38735 973541bc-4b1f-4e3c-92ec-40bd5ab60825 97f7c50b-42ee-4d19-95a8-c5f4dff86271 9839ad22-a88d-45c7-8376-62583819b2e7 98b14fd2-bd10-4fdf-a479-483bc102d2c5 98b1805e-4038-4061-b238-84a257ba935d 98f02fd6-4b72-48d9-8c1b-3460bddfc651 990643ea-c33f-45bb-a5d8-3acdf1bebc41 99867778-cd94-4c2d-af4a-ab5a422018da 99b7f556-ab65-4536-adf5-453010227e08 9a4ea997-ed86-4c85-b682-aeaeae9cc744 9a4ef48e-77f2-4373-865e-835d3f1423b2 9afc4de8-4ee0-422e-888e-7e00818e2e71 9b6b0bd0-053f-4c5c-a505-32ff83ba6394 9c93b098-773b-4506-a441-81949b333782 9e0cc703-e5a1-496a-be75-4be3038ba9e9 9e9fb0ed-331e-4ac1-9244-7d9e25226916 9ff4facf-4f57-4a3d-95bb-c48040678fb9 a030c24f-3d3e-4201-b49d-bb73a0c64797 a0b2848c-1bcb-4f95-aafe-2666c7c45613 a0f4c05d-967a-43b0-8047-1f6c006cd45c a11c5028-0aeb-479a-9842-5ef79d5c9968 a188303f-4c97-4e52-ba35-bf401aaf40bc a197b1ba-968a-4e20-9416-2ef10de143bc a19a7875-7f95-4fc5-9457-6ddc083f67d9 a2084556-1846-4e5c-9980-9646ce360a41 a27ff9e7-192a-4206-96a9-853fb4cbf5b8 a2a6191f-6011-41ca-9307-8561070e8a77 a2c4bc40-ca7c-4421-b9bd-8dcfc861795d a3a91243-5702-48fe-b87f-a2bcc7b5a528 a3c412a2-6886-47c4-b34c-42b1fec5fc9e a3c734ec-5f6a-48b2-a4a0-846d3fe77c0e a3fd86c6-dd2f-410a-ba61-faa53b102f5e a41a288e-aa53-4d13-9fcb-12e050ccf083 a458cb2e-6167-43b2-bcc5-51911f470840 a45c4169-ce02-4e4d-be1e-72f5f5ba40fd a4a25514-6e1c-43f0-8fcc-b1caf59e1d5d a4de1aff-57cc-4b77-bef1-1d8c9aa25871 a5c865e6-6595-4e5d-94c1-b45ee4c3baed a5df8ce4-c8f2-4e49-9a9f-9f999d8b9ee4 a62a996e-35c9-441d-ba6c-6a367999bdf6 a65c9e46-f057-4efb-b792-19fbf2fed5f6 a6a3dd65-66fd-45ec-9d07-6c7f2293ffd7 a6be1cb3-0e18-48aa-b8fa-b575d90b69e8 a6c0782a-2e00-4b12-9bdd-b0e88ef3aee0 a72213d0-83a5-40ac-9a39-54a27285b05e a782db46-692d-4237-af1c-3c06cc93cf29 a7f8ec24-d2ca-4e73-afe6-20dd3af694f8 a8901caf-a82c-4b6b-be68-8d53fd46c6af a8d216bc-0ba1-456c-a16c-7e93c360d1c8 a90db53c-4e53-43cd-a297-14608345f97f a961629d-fe91-45d6-a765-9e0704b1e731 a97f1bb9-bc4c-4ca0-9796-6986e142c4e8 a9bb773e-72b0-4944-b5c0-3c2b3b83ef34 aa10a29b-196a-4ac8-878f-47f104131dcf aa2de8d2-055a-4efc-970a-6192a7b3f053 aa991b2a-b321-4787-aa9b-0f43af5fd319 aabd481c-e3ab-4325-aab5-be1fedad32a8 aacd2a79-6a24-4f6a-a04c-f27c4edc1f4d aafc7650-fd69-4aca-88bc-f30eb8e45fbb ab42c9d4-b3de-48a5-9fdf-162396ffe5fa ab5cba30-6eaf-44be-9765-e63f0834091e abaa915e-ae40-44a9-abe3-4ebcdcda4488 ac518c33-e446-4385-b414-d3467763c999 acafe943-f281-4e49-bcf8-9316e3054812 ad18e862-8204-4f23-a847-7af966fe9054 ad28b6f4-5b4e-4986-9035-b6e93332a72d ad56b083-3b49-4563-81b2-ead57510897d ad72a888-3181-43ab-b42f-781c1f88ee72 ad7e3c43-147b-45ed-803d-e9fd05d3806d adb61342-17a9-4c92-a02b-283db81eca6b ae5b7a71-49c5-44a1-92ad-b8adbb576eb7 ae5d232e-039c-4244-be13-34c7350e36a7 ae6c0626-9594-4452-89cd-11187570bd09 af950c19-e5b7-4300-b466-3e3075661c89 b0036108-b083-43b8-9df0-3854f64670cd b0866c2d-5816-4db4-b050-4f63cbce468a b0eb6d6f-1927-4523-a4be-f777f9ccd159 b0f978d7-c18d-4ad2-871c-794e08532cdf b11feaa1-1c4a-4ff2-8d5c-7349e14f6e15 b132c403-2cc8-42f8-a506-e376c4c7a746 b13c454b-6519-4fe9-b28c-ab9d83372bcb b1fcace0-23a6-4c84-b8ef-4627bfb07875 b21ec769-99e6-4ef2-b086-6952bd2e70a7 b2383f5d-1ef1-43aa-ab19-5119fd0c361a b28ddb9e-d89d-416d-9845-b04c6110c513 b29f5753-3462-4ef6-a6ea-4df184b48874 b2c95a43-bfbf-4b16-a329-ed0ca93b52aa b2eee1ec-fcbf-4525-a112-0effb432c6b4 b36ec1f1-8efc-4554-83c9-bdb9a38720c8 b3778036-23e1-424e-93d2-ce66cb6ecf13 b38ec2bf-496f-44d7-9390-ddef86780f92 b3983982-07b4-4be6-b56e-dc764031a8c2 b3a82f26-bb53-4096-926b-e230aed8eac3 b3b388ed-7af6-49ce-a35f-bcdcdb6d2669 b3ba876f-7a63-43dd-a150-94ca16b398e5 b3c6a9b8-dcd6-479a-9ba6-f67e33bea1d3 b3de049b-046c-4e56-9ecf-6c49c74d2d4b b410e234-61da-42a6-94c1-066ff92054d1 b4887d8c-8a62-41ff-8bb7-a0ec7ceb5089 b6491114-de46-47d9-86d7-35f4af99a2e4 b6714f94-fee3-40ea-a3d6-e97435289ea4 b6a6a75b-4c66-461b-ad5f-505be4b6a223 b7631cd4-1d6c-47d3-9aec-8b9d30aad042 b7c8ccb3-a00f-471a-a4f9-8989cff70038 b7dea55a-abe2-4889-92e5-37a0e132f2c6 b7f7de3a-c588-4f26-b6fd-9149f16c3736 b812b50e-fe97-4dda-8e3d-e5b219d095fd b81570f3-a466-46cf-93a6-0f7c1f3b76d1 b8272f7a-687f-4349-91a6-e88fafa6196c b8934f5c-7c23-4f73-9df8-e2482f5012ae b8c1c5bb-41ec-4982-bc8c-3895fb2c8466 b8c934a3-3d8d-4b39-b6f1-2c0e4b25917c b9012002-9e91-4320-9742-96110985353b b9118e41-d92c-4a1b-b908-d9ab1293542f b921eaa7-85ad-4cc4-aa4a-3f0a44ecb30d b935d7c2-1ea2-41f7-b5b6-e00d047f07da b99449a6-bac4-4c3e-bb6d-6470b12babdc b9956f5f-329d-461d-b805-4f46582f0d5c b9a2792f-43d4-4420-b9cd-8f912fc1a367 ba248b82-0e58-4bec-a98d-412d9ad50f44 bacc9a9f-0f84-4fde-b57c-f6ef76a1e54f baf35ba0-ed9c-468c-872b-e4c0fd54e1e9 bb24d602-db18-4dd0-a6b7-fda6f2fe0581 bb6d981c-6dfc-4f35-99aa-0e81d60ebbbf bb84a06a-0acf-4af1-be6a-4ca7ce8ba194 bb9f2ba4-bc5a-49a6-9e63-d78dfc2cffe2 bc6c5ef8-8251-4e3c-bacd-cbb88022065a bccc1df1-9f14-4c9e-a2af-3bf22a3a95a8 bcd1bb3f-054b-4583-af1b-7b9073a0a25b bcf38251-6bf3-4baa-8ea7-eb16cb8deacb bd7c3fbd-4669-417a-960e-85ab7275f7e6 beabde96-9562-4eb3-9a99-7d07137f1683 bebfe246-2d33-4ab2-99d3-f6aadb4706dd bf70d652-4e28-4a35-bb70-2e722cd5c372 c0761548-047e-4639-8529-9117ce65a571 c07fd8ee-e507-4135-ba7d-ef9b05c52aab c09ba141-82e5-4f4c-a1ef-0601a7138c98 c1ae5e55-ecb2-4856-a067-429b25ffc3d8 c1d0cb4e-238c-4980-9248-7c8f94d73509 c25b9c72-897c-4b95-a188-027fbecf608b c2a4a31a-f8f1-4406-95f4-624e54994060 c2cb1608-58d8-4929-a36c-7df11f7925b8 c2eeb8c1-5bc2-40a4-a412-c16b5ded8fcf c345b689-9eb4-494f-a859-a6de4c829c37 c34a47ad-00e1-4a8b-9661-b73d53f9e92f c34f7b84-da5e-489a-bf49-d1fe43932603 c36650ae-2a04-4f1b-bd20-910672250e0a c3671381-e71d-462f-bac4-01cc2713d4e4 c3c52ed6-aae7-4b3f-96ac-bf3c7b25aaa0 c3db398c-d0c7-44f7-8ae4-6aaa1c3eb2dc c43e9879-37f6-4327-9975-561a47163433 c45e53d2-04b0-4068-a5af-983fe5401afa c4cff475-6350-4c31-a9ae-cf6e9362346d c4f5220b-d7ce-4185-a03d-c37aace76eaf c4f93c97-43b3-43b9-a48e-c60abdc4bb4d c52ec9b5-828c-419d-8f3d-70bd001dc725 c56008bb-f397-48cc-b39d-8df5b5743a2f c576138f-b395-46bb-8b0e-593e38508544 c6fd3bd1-51ab-43f3-a6d9-8bc3d293ce62 c7b3d0cf-84d7-489f-b728-bad37bb497de c8271f25-5701-46d1-893a-71a49c5eed4f c84b6a36-c00b-4274-b807-4c569347f6c0 c874eb55-431a-4397-bbb7-7e7a1376e81f c8c7db30-a5b2-4e2b-af04-99539182a95d c91f0b80-eaa8-4583-bc3d-7476b195862c c9571bd2-7916-4d40-8666-b877a4ba58dc c97a8b3b-ac65-490f-af65-088687172922 ca51f43c-1730-47a7-bd04-86bcb21bebff ca6a7eec-9f23-47a0-b136-cd7ec70b0d50 ca942f1f-06a4-43b4-bece-a38c3600902a cb18e8f6-5d90-4922-b120-491770cae1ad cc2ffc2f-76c1-4d5c-91f2-8b85cf3e9faf cc68429b-4ff3-473f-ab45-b0195c30eb29 cca9bfec-4cd4-4c2d-aed3-9beae7f63d00 cce80190-d7c9-444a-83a3-36a292096162 cd0c9212-5290-4666-ba47-847fd2b95dd9 cd0d3f43-f022-49d9-b14f-00d9f27e05ab cd2d5112-9609-42de-87bc-dfab3bbc7aa7 cd4e8aef-fee8-498c-941a-0411dd7dba63 cda39616-3b72-46c3-8b09-771c7cd67e1a cdd68aca-2d3d-4ce4-acc7-d5c9ee23a626 cde00a04-b74f-44f9-b38e-889b3d846d7a ce1b1783-3b65-44f7-9980-5573ae82cca5 ceda3cbe-4c6e-4761-a50b-d741efb0472e cf9c47fe-f1c6-4bac-b4c5-61f114aac2fa cffc9e4d-0f27-48dd-b80f-118095809fc0 d04bf2ae-f53c-4be0-9f4f-25431477acd9 d095c78c-9ff0-4ac9-b23a-49c1ab4a439c d1705d13-5793-48b8-8364-926eadd5d7e1 d1c106ab-6649-4042-ab8f-0d9e5d9c3175 d222c0bc-a70c-436c-8dfa-dfcfc0261a08 d243bc74-6ac8-4420-81ee-6a22ed7585dc d2bfb63e-7fb0-4f70-809f-e32d54b3abb2 d307d784-970c-4069-9a6a-3a8d6d17e6fe d3097465-94c4-40b4-ad88-43f855cdad7c d38176a0-9341-439f-a23f-c954abd7c395 d3b77655-f5ca-4ca7-a39d-fb18683426a5 d3e6a9e0-0c7d-4b48-b2a5-f977e5c7533a d423f108-97c0-4e27-ab0c-7cbc68bb2744 d444d56d-e487-42e0-8d04-4dbe99be4a60 d449bfc1-4536-470b-abef-05f818d6c15c d4a6fb66-4e56-40af-9efc-741dd0352544 d4f7c537-eef4-40b1-b5c2-b62cb14c625a d54c4c85-4e2f-4a9e-8d5e-65d2cd1d6bc2 d562e684-bea0-4c7d-8489-6bf1b0c45d58 d5a5f950-ac8a-46f4-afab-fb67fcad2eb9 d5bde964-344b-4d52-9aa5-508c35724b71 d630a22a-de15-4cac-875a-7ef7602e49a4 d64b6a7f-14d4-4d8e-908b-83c8402cf6c7 d663cfc7-c257-4dcb-b6a7-2a187a77f2ac d66a1b42-8a10-4b59-b3af-42b08684e1d1 d7208b05-3001-4713-92f0-0cecab5dca98 d7d66f43-8e7b-4433-a866-7b7b0106b164 d84f5224-90d3-40bb-a670-6e80050d8045 d8552a49-6b54-4a79-8c25-6acf5e1b8edd d8b35e44-ae92-49bd-ad7c-3615d5c50e95 d91122bf-6e8d-44a7-9a90-86a9aad90167 d9f2041b-7fbb-489e-aeab-fabcc9879320 dad71510-1f3c-43e8-bcb9-e66e75cf31da db7af4a1-9517-4c11-80e1-16dbe41e4186 dc62ea98-b686-4e69-a715-b6c799bda7c3 dc875cb0-d25c-4d9b-adac-5ab4bf7fe7b2 dd341f76-2dfb-4a2e-8b1c-c8923009fe7c dd5a252b-4350-4add-8212-e7b7bbb221bd de6fd534-2bdf-4747-8bb7-9c938419647d deb2388f-539c-4507-a44b-c321b1a47697 df048d2d-3884-4b2e-9284-1786296dbc4e df0b9a61-e589-4c61-a355-d0d1ec774a7f df402901-4579-4d2e-b392-6c735e71b6e5 df63b1ea-b263-4386-975c-66e38db40976 dfebee9d-86df-4e49-92ba-5c54c289a74f dffa8dbf-2af5-4ba7-8b58-c27f352cb159 e0492303-9705-43ea-8858-ba025a806274 e0dc0182-0248-4fa2-8ab7-6fd20286a4fe e0f5e6e0-c180-4432-8129-f73bcdedf75f e1f78513-296a-4c04-b6a7-d50c17ab6e4b e2570a51-3e6a-41fb-b18b-791d148733d7 e2769fb2-5fd8-4ad9-a520-27f250e36402 e2d0c0d1-01a2-4ad8-9794-04072e98a1d8 e428b7ec-dcfc-4d3d-ba44-bf958056bc10 e47e08cb-8428-462d-a402-2d372ef702dd e4a65f0f-fc44-4d1c-925d-a5542ac11f9a e4c3f1ee-76f3-4d84-b3e7-5caec2e96139 e5d16149-15a9-4ada-bdaa-765ccc8135d6 e5f41f2a-5c61-4694-8129-6e96bd6227f4 e5f68dbd-4274-44bb-8b07-1a5637dc2f3b e656f145-0c3b-44e1-8b59-d99d6b5a9e16 e6d0d934-5437-4a7f-a08f-d3c076c29cda e790fd03-f973-4c02-94b4-9f99f0cad8eb e7a8330f-4b26-4e16-9479-c38e25d02708 e7f3c766-0417-4379-b4b1-9805d860784f e82c6692-0f4a-4d38-b83e-094653209e20 e836e2a5-8fdb-4f65-acc8-a2b54bd50ff5 e839a911-af4a-4be7-b3f3-4ee8c5af35d5 e8839c2d-da79-4a50-92b3-34d2f7bbb22c e8db4526-2adf-4b8b-b0e5-4cf0261935ae e973b683-2c02-4987-9c41-52d7f6010246 e994504c-913d-4144-850d-4f7bd13e1a43 e9db5553-7267-4ec9-a2c8-d4957eb6c51a eb3898a4-654d-404e-b0dc-15649475ed28 eb4391fe-da03-4339-a28b-d26c4263d841 eb55a5a2-bd75-4071-ab18-8629c5b8dc5a eb65f8fe-2635-4f44-a55c-347c5c397f46 eb77364a-b759-4091-b9d3-94e4f16eb5d0 ebf5207f-3e06-4469-9363-8e357bd59ccb ec507c9e-cc2d-4c57-bb79-02e1e7afb070 ec95602b-f6c1-4055-9a95-1dce877f1699 eca60e5e-3f1b-4157-9473-d2c452145052 ed25bebd-24e8-4b59-8f48-defeabdae3c5 ed39b151-13c5-47ca-b185-0f1c9a318768 ed523399-3dca-46bc-9bbb-c429e9689726 edcd9c97-23d7-41f8-b791-73487b66764c ede524ec-26eb-4821-97ed-a86a20fbf502 ee65fbbf-d00f-4718-9c14-99ecff308401 eec2217c-17d8-4c63-86bc-628331296929 ef1be487-74ef-498e-985c-e449b22c890c ef44d60f-3dcb-40c8-bdbb-68c08f7ee85f efaa69b2-4106-4a7d-aca8-718c8389f4fb f005ceb6-111a-4435-a351-116d8c2db0d9 f089aec8-f6bb-4754-8cb9-41b57f7a9436 f0d960e7-4a30-4196-8dda-b1d64d69cdb6 f10a296b-46af-4964-bbc1-d0782f893489 f121168c-57d3-476c-8ee5-b055be0561ba f150d05d-9a0f-4d50-8ed2-b0e420b0a0f2 f1a22868-c58c-485b-8c42-45d36ae94c07 f2b084c4-4941-42dc-b290-1d0189671888 f35559e8-ab36-4df1-b15f-055141ee24ed f366278c-55c4-4e00-92a7-c3a4d61e0c8f f370be69-394b-49d4-9541-888f74376c69 f3b29b39-68a2-4f70-8408-3f7bddde9f13 f3dfc1d7-9116-4e48-9a39-01adef746bdf f4055dc9-2068-4f91-8be8-e9b0bbb366fc f603990f-1d21-44c3-a99b-a68faa2cdb87 f62f67cb-5206-44a0-bbd3-7e2bb2bfa168 f63e7f22-2b67-4724-b4fb-9db0a9aff9ce f68bcdcf-f78a-4228-a58c-27afba61b5e9 f6cd7e76-d6c6-4086-825d-afeacee7e2b9 f77935ec-f3e6-4b40-9c38-5dad543daa7b f78c6efa-9134-4f3d-beb6-6d5519d311a1 f7ac7055-3dea-49eb-a9a6-e2f83219c298 f8926d6a-c7de-446c-b380-d9243938775b f8bff497-dcfd-409b-9dd4-279f87f949e1 f8dd0518-8f55-4932-a829-69d0e220695e f9bde9b6-08a3-4e05-9f47-da7634e8163d fa489756-d707-4ace-8ebf-33e520038d18 fa5544ec-152e-4d57-a3e4-cf3370273e5a fa58f13b-e1e1-4b6b-a3e0-ebe114ce6d6a fa9b0116-90b4-4622-983d-d93bc0068f72 fabf41c6-6ba3-4f43-a92f-3f7631acd78d fb41efa7-0461-4d17-a1c3-2e1d17a9c3ed fb4c1ff1-c755-4083-bbcc-3bf3c9950884 fb4d3d9e-bad3-4710-a4ca-67afa5024b76 fb569167-fed0-444a-bb8b-e733a8b00a8a fb639d40-cc84-48ce-815d-ecb166775404 fb7c640a-ab18-46ee-9988-22d72c9fb0f6 fc466746-12fb-403f-836e-68d5000670cb fc536c2f-248d-4498-af3b-0dc8b031d062 fc78408d-b3ac-4301-95ee-aa96ab4c086d fcbd1bb2-4744-49e1-b504-700b9a504b0d fd00fe8d-5016-462a-82fd-a4febac146ab fd1459de-d3f6-47cd-8d99-ae9bc1ea32d6 fd3fbb6c-3836-4890-a420-0a13dad875dd fd5320da-f9ab-42f4-b9e2-baca683e9786 fdf4c973-9641-46f1-a3e5-7819f082d9ad fdfd47e2-690e-41c1-80f2-56c0534ab9b8 fe450680-f2a0-42cd-9ccd-95d79e545a98 feabcc84-eb82-4f3b-9829-54c29e989298 ff0303cc-ad1d-40ca-afb1-225d084e38b6 ff97195e-4ea6-4b7d-a810-c5bae4482fd0 ffe81579-8e7d-498a-9ab8-d11478edc8e5 ) ) ) ================================================ FILE: pcb/chrumm/chrumm.kicad_pro ================================================ { "board": { "3dviewports": [], "design_settings": { "defaults": { "board_outline_line_width": 0.09999999999999999, "copper_line_width": 0.25, "copper_text_italic": false, "copper_text_size_h": 1.0, "copper_text_size_v": 1.0, "copper_text_thickness": 0.15, "copper_text_upright": false, "courtyard_line_width": 0.049999999999999996, "dimension_precision": 3, "dimension_units": 2, "dimensions": { "arrow_length": 2000000, "extension_offset": 500000, "keep_text_aligned": true, "suppress_zeroes": true, "text_position": 0, "units_format": 1 }, "fab_line_width": 0.09999999999999999, "fab_text_italic": false, "fab_text_size_h": 1.0, "fab_text_size_v": 1.0, "fab_text_thickness": 0.15, "fab_text_upright": false, "other_line_width": 0.09999999999999999, "other_text_italic": false, "other_text_size_h": 1.0, "other_text_size_v": 1.0, "other_text_thickness": 0.15, "other_text_upright": false, "pads": { "drill": 1.0, "height": 1.7, "width": 1.7 }, "silk_line_width": 0.19999999999999998, "silk_text_italic": false, "silk_text_size_h": 1.4, "silk_text_size_v": 1.3, "silk_text_thickness": 0.19999999999999998, "silk_text_upright": false, "zones": { "45_degree_only": false, "min_clearance": 0.0 } }, "diff_pair_dimensions": [ { "gap": 0.0, "via_gap": 0.0, "width": 0.0 } ], "drc_exclusions": [], "meta": { "version": 2 }, "rule_severities": { "annular_width": "error", "clearance": "error", "connection_width": "error", "copper_edge_clearance": "error", "copper_sliver": "error", "courtyards_overlap": "error", "diff_pair_gap_out_of_range": "error", "diff_pair_uncoupled_length_too_long": "error", "drill_out_of_range": "error", "duplicate_footprints": "error", "extra_footprint": "error", "footprint": "error", "footprint_type_mismatch": "error", "hole_clearance": "error", "hole_near_hole": "error", "invalid_outline": "error", "isolated_copper": "error", "item_on_disabled_layer": "error", "items_not_allowed": "error", "length_out_of_range": "error", "lib_footprint_issues": "error", "lib_footprint_mismatch": "error", "malformed_courtyard": "error", "microvia_drill_out_of_range": "error", "missing_courtyard": "error", "missing_footprint": "error", "net_conflict": "error", "npth_inside_courtyard": "error", "padstack": "error", "pth_inside_courtyard": "error", "shorting_items": "error", "silk_edge_clearance": "ignore", "silk_over_copper": "ignore", "silk_overlap": "warning", "skew_out_of_range": "error", "solder_mask_bridge": "error", "starved_thermal": "error", "text_height": "warning", "text_thickness": "warning", "through_hole_pad_without_hole": "error", "too_many_vias": "error", "track_dangling": "error", "track_width": "error", "tracks_crossing": "error", "unconnected_items": "error", "unresolved_variable": "error", "via_dangling": "error", "zones_intersect": "error" }, "rules": { "allow_blind_buried_vias": false, "allow_microvias": false, "max_error": 0.0025, "min_clearance": 0.25, "min_connection": 0.25, "min_copper_edge_clearance": 0.25, "min_hole_clearance": 0.25, "min_hole_to_hole": 0.39999999999999997, "min_microvia_diameter": 0.19999999999999998, "min_microvia_drill": 0.09999999999999999, "min_resolved_spokes": 2, "min_silk_clearance": 0.0, "min_text_height": 1.0, "min_text_thickness": 0.15, "min_through_hole_diameter": 0.39999999999999997, "min_track_width": 0.25, "min_via_annular_width": 0.15, "min_via_diameter": 0.75, "solder_mask_clearance": 0.0, "solder_mask_min_width": 0.0, "solder_mask_to_copper_clearance": 0.0, "use_height_for_length_calcs": true }, "teardrop_options": [ { "td_allow_use_two_tracks": true, "td_curve_segcount": 10, "td_on_pad_in_zone": false, "td_onpadsmd": true, "td_onroundshapesonly": false, "td_ontrackend": false, "td_onviapad": true } ], "teardrop_parameters": [ { "td_curve_segcount": 10, "td_height_ratio": 1.0, "td_length_ratio": 0.33, "td_maxheight": 1.25, "td_maxlen": 1.0, "td_target_name": "td_round_shape", "td_width_to_size_filter_ratio": 1.0 }, { "td_curve_segcount": 10, "td_height_ratio": 1.0, "td_length_ratio": 0.2, "td_maxheight": 1.25, "td_maxlen": 1.0, "td_target_name": "td_rect_shape", "td_width_to_size_filter_ratio": 1.0 }, { "td_curve_segcount": 10, "td_height_ratio": 1.0, "td_length_ratio": 0.2, "td_maxheight": 1.25, "td_maxlen": 1.0, "td_target_name": "td_track_end", "td_width_to_size_filter_ratio": 1.0 } ], "track_widths": [ 0.0, 0.25, 0.375 ], "via_dimensions": [ { "diameter": 0.0, "drill": 0.0 }, { "diameter": 0.75, "drill": 0.4 } ], "zones_allow_external_fillets": false, "zones_use_no_outline": true }, "layer_presets": [], "viewports": [] }, "boards": [], "cvpcb": { "equivalence_files": [] }, "erc": { "erc_exclusions": [], "meta": { "version": 0 }, "pin_map": [ [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2 ], [ 0, 2, 0, 1, 0, 0, 1, 0, 2, 2, 2, 2 ], [ 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 2 ], [ 0, 1, 0, 0, 0, 0, 1, 1, 2, 1, 1, 2 ], [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2 ], [ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 2 ], [ 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 2 ], [ 0, 2, 1, 2, 0, 0, 1, 0, 2, 2, 2, 2 ], [ 0, 2, 0, 1, 0, 0, 1, 0, 2, 0, 0, 2 ], [ 0, 2, 1, 1, 0, 0, 1, 0, 2, 0, 0, 2 ], [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ] ], "rule_severities": { "bus_definition_conflict": "error", "bus_entry_needed": "error", "bus_to_bus_conflict": "error", "bus_to_net_conflict": "error", "conflicting_netclasses": "error", "different_unit_footprint": "error", "different_unit_net": "error", "duplicate_reference": "error", "duplicate_sheet_names": "error", "endpoint_off_grid": "error", "extra_units": "error", "global_label_dangling": "error", "hier_label_mismatch": "error", "label_dangling": "error", "lib_symbol_issues": "error", "missing_bidi_pin": "error", "missing_input_pin": "error", "missing_power_pin": "error", "missing_unit": "error", "multiple_net_names": "error", "net_not_bus_member": "error", "no_connect_connected": "error", "no_connect_dangling": "error", "pin_not_connected": "error", "pin_not_driven": "error", "pin_to_pin": "error", "power_pin_not_driven": "error", "similar_labels": "error", "simulation_model_issue": "error", "unannotated": "error", "unit_value_mismatch": "error", "unresolved_variable": "error", "wire_dangling": "error" } }, "libraries": { "pinned_footprint_libs": [], "pinned_symbol_libs": [] }, "meta": { "filename": "chrumm.kicad_pro", "version": 1 }, "net_settings": { "classes": [ { "bus_width": 12, "clearance": 0.25, "diff_pair_gap": 0.0, "diff_pair_via_gap": 0.25, "diff_pair_width": 0.0, "line_style": 0, "microvia_diameter": 0.0, "microvia_drill": 0.0, "name": "Default", "pcb_color": "rgba(0, 0, 0, 0.000)", "schematic_color": "rgba(0, 0, 0, 0.000)", "track_width": 0.25, "via_diameter": 0.75, "via_drill": 0.4, "wire_width": 6 } ], "meta": { "version": 3 }, "net_colors": null, "netclass_assignments": null, "netclass_patterns": [] }, "pcbnew": { "last_paths": { "gencad": "", "idf": "", "netlist": "", "specctra_dsn": "", "step": "", "vrml": "" }, "page_layout_descr_file": "chrumm.kicad_wks" }, "schematic": { "annotate_start_num": 0, "drawing": { "dashed_lines_dash_length_ratio": 12.0, "dashed_lines_gap_length_ratio": 3.0, "default_line_thickness": 6.0, "default_text_size": 50.0, "field_names": [], "intersheets_ref_own_page": false, "intersheets_ref_prefix": "", "intersheets_ref_short": false, "intersheets_ref_show": false, "intersheets_ref_suffix": "", "junction_size_choice": 3, "label_size_ratio": 0.375, "pin_symbol_size": 25.0, "text_offset_ratio": 0.15 }, "legacy_lib_dir": "", "legacy_lib_list": [], "meta": { "version": 1 }, "net_format_name": "", "ngspice": { "fix_include_paths": true, "fix_passive_vals": false, "meta": { "version": 0 }, "model_mode": 0, "workbook_filename": "" }, "page_layout_descr_file": "chrumm.kicad_wks", "plot_directory": "", "spice_adjust_passive_values": false, "spice_current_sheet_as_root": false, "spice_external_command": "spice \"%I\"", "spice_model_current_sheet_as_root": true, "spice_save_all_currents": false, "spice_save_all_voltages": false, "subpart_first_id": 65, "subpart_id_separator": 0 }, "sheets": [ [ "d33cdf19-4d42-4aea-8152-27b13651402a", "" ] ], "text_variables": {} } ================================================ FILE: pcb/chrumm/chrumm.kicad_sch ================================================ (kicad_sch (version 20230121) (generator eeschema) (uuid d33cdf19-4d42-4aea-8152-27b13651402a) (paper "A4") (title_block (title "CHRUMM KEYBOARD") (rev "1.0.0") (comment 1 "https://github.com/sevmeyer/chrumm-keyboard") (comment 2 "Licensed under CERN-OHL-W v2 or later") ) (lib_symbols (symbol "chrumm:Diode" (pin_numbers hide) (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "D?" (at 1.905 1.27 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 0 -3.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 1.27 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "Diode_0_1" (polyline (pts (xy -1.27 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0 0) (xy -1.27 2.54) (xy 1.27 2.54) (xy 0 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (pin passive line (at 0 -2.54 90) (length 2.54) (name "K" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 0 5.08 270) (length 2.54) (name "A" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "chrumm:PinHeader_1x2" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "J?" (at 0 1.905 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x2" (at 0 -4.445 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 -5.08 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "PinHeader_1x2_0_1" (rectangle (start -1.27 1.27) (end 1.27 -3.81) (stroke (width 0.254) (type default)) (fill (type none)) ) (rectangle (start -0.635 0.635) (end 0.635 -0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -2.54) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -2.54) (xy 1.27 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) ) (symbol "PinHeader_1x2_1_1" (pin passive line (at 3.81 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -2.54 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "chrumm:PinHeader_1x3" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "J?" (at 0 1.905 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x3" (at 0 -6.985 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 -5.08 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "PinHeader_1x3_0_1" (rectangle (start -1.27 1.27) (end 1.27 -6.35) (stroke (width 0.254) (type default)) (fill (type none)) ) (rectangle (start -0.635 0.635) (end 0.635 -0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -5.08) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -2.54) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -5.08) (xy 1.27 -5.08) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -2.54) (xy 1.27 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) ) (symbol "PinHeader_1x3_1_1" (pin passive line (at 3.81 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -2.54 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -5.08 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "chrumm:PinHeader_1x5" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "J?" (at 0 1.905 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x5" (at 0 -12.065 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 -5.08 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "PinHeader_1x5_0_1" (rectangle (start -1.27 1.27) (end 1.27 -11.43) (stroke (width 0.254) (type default)) (fill (type none)) ) (rectangle (start -0.635 0.635) (end 0.635 -0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -10.16) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -7.62) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -5.08) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -2.54) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -10.16) (xy 1.27 -10.16) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -7.62) (xy 1.27 -7.62) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -5.08) (xy 1.27 -5.08) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -2.54) (xy 1.27 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) ) (symbol "PinHeader_1x5_1_1" (pin passive line (at 3.81 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -2.54 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -5.08 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -7.62 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "4" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -10.16 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "5" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "chrumm:RPi_Pico_Custom" (in_bom yes) (on_board yes) (property "Reference" "U?" (at 0 27.305 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RPi_Pico_Custom" (at 0 -27.305 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 90) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "RPi_Pico_Custom_1_0" (text "Pico" (at 0 -1.27 0) (effects (font (size 2.54 2.54))) ) (text "RaspberryPi" (at 0 2.54 0) (effects (font (size 1.27 1.27))) ) ) (symbol "RPi_Pico_Custom_1_1" (rectangle (start -12.7 26.67) (end 12.7 -26.67) (stroke (width 0.254) (type default)) (fill (type none)) ) (pin bidirectional line (at -16.51 24.13 0) (length 3.81) (name "GP0" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -1.27 0) (length 3.81) (name "GP8" (effects (font (size 1.27 1.27)))) (number "11" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -3.81 0) (length 3.81) (name "GP9" (effects (font (size 1.27 1.27)))) (number "12" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "13" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) (name "GP10" (effects (font (size 1.27 1.27)))) (number "14" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) (name "GP11" (effects (font (size 1.27 1.27)))) (number "15" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) (name "GP12" (effects (font (size 1.27 1.27)))) (number "16" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) (name "GP13" (effects (font (size 1.27 1.27)))) (number "17" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "18" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) (name "GP14" (effects (font (size 1.27 1.27)))) (number "19" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 21.59 0) (length 3.81) (name "GP1" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) (name "GP15" (effects (font (size 1.27 1.27)))) (number "20" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 19.05 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 16.51 0) (length 3.81) (name "GP2" (effects (font (size 1.27 1.27)))) (number "4" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 13.97 0) (length 3.81) (name "GP3" (effects (font (size 1.27 1.27)))) (number "5" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 11.43 0) (length 3.81) (name "GP4" (effects (font (size 1.27 1.27)))) (number "6" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 8.89 0) (length 3.81) (name "GP5" (effects (font (size 1.27 1.27)))) (number "7" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "chrumm:RotaryEncoder_Switch" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "E?" (at 0 5.715 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RotaryEncoder_Switch" (at 0 -9.525 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "RotaryEncoder_Switch_1_1" (rectangle (start -5.08 5.08) (end 5.08 -5.08) (stroke (width 0.254) (type default)) (fill (type none)) ) (circle (center -3.81 -2.54) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center -3.81 -1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center -3.81 1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center -3.81 2.54) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -5.08 -2.54) (xy -4.1148 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -5.08 0) (xy -3.81 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -5.08 2.54) (xy -4.1148 2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -3.81 0.9652) (xy -3.81 -0.9652) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -3.556 -1.524) (xy -2.6416 -2.4384) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -3.556 1.524) (xy -2.6416 2.4384) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 3.048 0) (xy 2.54 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 3.048 1.524) (xy 3.048 -1.524) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 5.08 -2.54) (xy 3.81 -2.54) (xy 3.81 -1.5748) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 5.08 2.54) (xy 3.81 2.54) (xy 3.81 1.5748) ) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 0) (radius 1.905) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 3.81 -1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 3.81 1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (pin passive line (at 7.62 2.54 180) (length 2.54) (name "1" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 7.62 -2.54 180) (length 2.54) (name "2" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -7.62 2.54 0) (length 2.54) (name "A" (effects (font (size 1.27 1.27)))) (number "A" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -7.62 -2.54 0) (length 2.54) (name "B" (effects (font (size 1.27 1.27)))) (number "B" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -7.62 0 0) (length 2.54) (name "C" (effects (font (size 1.27 1.27)))) (number "C" (effects (font (size 1.27 1.27)))) ) (pin no_connect line (at 0 -8.89 90) (length 3.81) (name "MountPin" (effects (font (size 1.27 1.27)))) (number "MP" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "chrumm:Switch" (pin_numbers hide) (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "S?" (at 0 3.175 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 0 -1.27 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "Switch_1_1" (circle (center -1.905 0) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0 1.27) (xy 0 2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 2.54 1.27) (xy -2.54 1.27) ) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 1.905 0) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (pin passive line (at 5.08 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -5.08 0 0) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) ) ) ) (junction (at 147.32 119.38) (diameter 0) (color 0 0 0 0) (uuid 00fe2d45-3f25-41d2-86de-42f587d75342) ) (junction (at 86.36 119.38) (diameter 0) (color 0 0 0 0) (uuid 0779bea8-0a09-412a-9c58-93842259513f) ) (junction (at 96.52 111.76) (diameter 0) (color 0 0 0 0) (uuid 0a013e83-58ef-4c93-a6f3-0bbbe63eea1b) ) (junction (at 111.76 111.76) (diameter 0) (color 0 0 0 0) (uuid 0abf3e1f-18bf-4956-8001-9f7d77d5b5fa) ) (junction (at 71.12 147.32) (diameter 0) (color 0 0 0 0) (uuid 0b6183b5-93db-4b57-902a-db8eb6058c78) ) (junction (at 60.96 139.7) (diameter 0) (color 0 0 0 0) (uuid 14cfc3fd-4d4a-446a-b05b-098b7efc3b59) ) (junction (at 147.32 133.35) (diameter 0) (color 0 0 0 0) (uuid 152fcf23-cd85-49ac-bebd-2f28e13675cd) ) (junction (at 132.08 105.41) (diameter 0) (color 0 0 0 0) (uuid 166d7e70-d92d-48c4-8945-37fdf9888069) ) (junction (at 101.6 105.41) (diameter 0) (color 0 0 0 0) (uuid 22d8fde6-8654-4707-911e-bfba2cd68489) ) (junction (at 147.32 105.41) (diameter 0) (color 0 0 0 0) (uuid 25f8e145-a387-4eb5-b159-7a29b8bd405c) ) (junction (at 81.28 97.79) (diameter 0) (color 0 0 0 0) (uuid 2993306e-af2a-43bf-9c8c-3d0f25641e6c) ) (junction (at 111.76 97.79) (diameter 0) (color 0 0 0 0) (uuid 2c968fcf-32b2-44d3-ae14-eb04d6ddade9) ) (junction (at 132.08 133.35) (diameter 0) (color 0 0 0 0) (uuid 2cbe6571-c4e0-422d-a999-86da995437fc) ) (junction (at 96.52 125.73) (diameter 0) (color 0 0 0 0) (uuid 2d691a32-4e84-45c6-a6e2-4fad7cb0b9ac) ) (junction (at 86.36 133.35) (diameter 0) (color 0 0 0 0) (uuid 2e390354-517c-46a0-91e7-ff72abf106dd) ) (junction (at 142.24 125.73) (diameter 0) (color 0 0 0 0) (uuid 30c00307-2437-4ff9-9570-23b985266ab5) ) (junction (at 147.32 147.32) (diameter 0) (color 0 0 0 0) (uuid 36bbaf5b-8b79-4f98-89dc-76f8558008af) ) (junction (at 101.6 119.38) (diameter 0) (color 0 0 0 0) (uuid 371e12b5-d37d-43f3-a092-dfebc700fd3f) ) (junction (at 96.52 97.79) (diameter 0) (color 0 0 0 0) (uuid 3dc1937d-59e6-470d-b9df-588799343f2d) ) (junction (at 86.36 147.32) (diameter 0) (color 0 0 0 0) (uuid 47583a0e-09cf-4994-b52d-73a0a0364ab3) ) (junction (at 96.52 139.7) (diameter 0) (color 0 0 0 0) (uuid 47696f89-7216-4f74-91a5-5f5caabb9f03) ) (junction (at 147.32 91.44) (diameter 0) (color 0 0 0 0) (uuid 4eccce62-af8a-4cad-a14c-883e40545967) ) (junction (at 142.24 139.7) (diameter 0) (color 0 0 0 0) (uuid 4f8c2547-162f-49ed-aad7-037edcecb550) ) (junction (at 71.12 119.38) (diameter 0) (color 0 0 0 0) (uuid 5f1eedcf-4c49-4bd0-860e-552462b66f6c) ) (junction (at 101.6 91.44) (diameter 0) (color 0 0 0 0) (uuid 600cf5c3-8c02-4b88-8c1b-bda010116e19) ) (junction (at 127 111.76) (diameter 0) (color 0 0 0 0) (uuid 6122b74d-1caf-4374-935b-c3d9ab54b2e4) ) (junction (at 86.36 91.44) (diameter 0) (color 0 0 0 0) (uuid 67b849a1-aa52-4bc1-ace1-bd0cba06148d) ) (junction (at 157.48 139.7) (diameter 0) (color 0 0 0 0) (uuid 6dd23fb4-7e76-41be-960e-1e34ce5330c4) ) (junction (at 127 125.73) (diameter 0) (color 0 0 0 0) (uuid 793fe8d4-4eb1-4c43-b81a-2f7833167db6) ) (junction (at 116.84 91.44) (diameter 0) (color 0 0 0 0) (uuid 7f0708c0-758e-474b-bef7-5e79297aac8b) ) (junction (at 116.84 105.41) (diameter 0) (color 0 0 0 0) (uuid 812680f0-6db4-40bd-80c9-1075a144dfbd) ) (junction (at 71.12 105.41) (diameter 0) (color 0 0 0 0) (uuid 81d5aef5-449b-458d-b86b-bf25b6df4799) ) (junction (at 116.84 133.35) (diameter 0) (color 0 0 0 0) (uuid 82634583-9fd6-4215-9f94-164104266496) ) (junction (at 157.48 125.73) (diameter 0) (color 0 0 0 0) (uuid 84ac5a6e-5061-44b2-90a1-fda4742474c8) ) (junction (at 60.96 97.79) (diameter 0) (color 0 0 0 0) (uuid 8a653b5d-4e5f-4c85-9c82-9a10a1f52641) ) (junction (at 81.28 111.76) (diameter 0) (color 0 0 0 0) (uuid 8f0d7980-2d93-4eaf-a852-9a1dca5fe69d) ) (junction (at 132.08 119.38) (diameter 0) (color 0 0 0 0) (uuid 917d4328-cf93-42cc-8023-f45355f61d20) ) (junction (at 71.12 133.35) (diameter 0) (color 0 0 0 0) (uuid 9560d221-3e95-4d46-b768-3f1d7871e98b) ) (junction (at 81.28 125.73) (diameter 0) (color 0 0 0 0) (uuid 95a231ce-0ee1-4c22-bbbd-b1380b56c6e7) ) (junction (at 86.36 105.41) (diameter 0) (color 0 0 0 0) (uuid 95b4152b-1983-422b-9dce-d1fa855af50b) ) (junction (at 127 97.79) (diameter 0) (color 0 0 0 0) (uuid 993575e3-0357-48af-a3eb-5d1751ca3368) ) (junction (at 116.84 147.32) (diameter 0) (color 0 0 0 0) (uuid 9aff930a-1801-4faf-b6ec-d9a16a68ea0e) ) (junction (at 142.24 97.79) (diameter 0) (color 0 0 0 0) (uuid 9e690bc9-0dbc-47a0-94d1-7bf31176f404) ) (junction (at 111.76 139.7) (diameter 0) (color 0 0 0 0) (uuid a43177ec-59ac-4c14-84bc-2b72748621ca) ) (junction (at 60.96 125.73) (diameter 0) (color 0 0 0 0) (uuid a82184a5-b31c-411a-91e8-65a33795530d) ) (junction (at 132.08 147.32) (diameter 0) (color 0 0 0 0) (uuid b45f4a19-1099-4435-92fd-c93a7706fec9) ) (junction (at 81.28 139.7) (diameter 0) (color 0 0 0 0) (uuid bd4b0dc6-b05f-4ffa-8883-27504ef17609) ) (junction (at 101.6 147.32) (diameter 0) (color 0 0 0 0) (uuid c47c40b7-e11e-4454-ba43-104cdc28394b) ) (junction (at 101.6 133.35) (diameter 0) (color 0 0 0 0) (uuid cc8ad487-c655-4378-801a-f320b6a2376d) ) (junction (at 142.24 111.76) (diameter 0) (color 0 0 0 0) (uuid d248cfe7-717b-49f8-8ad0-a64a874380d0) ) (junction (at 71.12 91.44) (diameter 0) (color 0 0 0 0) (uuid e01223ae-1a07-4c0f-8f20-8fd2a2d10f24) ) (junction (at 132.08 91.44) (diameter 0) (color 0 0 0 0) (uuid e7f1ecc0-a1f1-47bb-8bad-50dc4753178b) ) (junction (at 60.96 111.76) (diameter 0) (color 0 0 0 0) (uuid e9b8db63-1da9-40d3-b437-91372c968022) ) (junction (at 157.48 111.76) (diameter 0) (color 0 0 0 0) (uuid ecb4c187-6741-4036-b73a-88fe3a7f8f40) ) (junction (at 157.48 97.79) (diameter 0) (color 0 0 0 0) (uuid f032c119-dea5-4e4e-8d3d-53c2e2863989) ) (junction (at 127 139.7) (diameter 0) (color 0 0 0 0) (uuid f209e78d-3a41-4699-a3df-d0160f2e1fac) ) (junction (at 116.84 119.38) (diameter 0) (color 0 0 0 0) (uuid f26b60f9-e6be-47d8-934b-bd18a6f70f8f) ) (junction (at 111.76 125.73) (diameter 0) (color 0 0 0 0) (uuid f8963240-2aec-4ced-8644-0f4a4d97526f) ) (wire (pts (xy 127 83.82) (xy 127 97.79)) (stroke (width 0) (type default)) (uuid 003a255d-e53a-436c-80dc-82a83e6384d8) ) (wire (pts (xy 190.5 114.3) (xy 208.28 114.3)) (stroke (width 0) (type default)) (uuid 05add608-1342-4243-91f0-76b7e6b9b330) ) (polyline (pts (xy 186.69 72.39) (xy 186.69 87.63)) (stroke (width 0) (type dash)) (uuid 077d56dc-0c95-4e22-82a8-2310f1a33adb) ) (wire (pts (xy 86.36 91.44) (xy 101.6 91.44)) (stroke (width 0) (type default)) (uuid 0a673422-0573-4911-9850-3573dcb84514) ) (wire (pts (xy 203.2 101.6) (xy 220.98 101.6)) (stroke (width 0) (type default)) (uuid 0a844819-1e70-49c0-86ef-40343f7b3125) ) (wire (pts (xy 127 125.73) (xy 127 139.7)) (stroke (width 0) (type default)) (uuid 14f5422e-dd88-4abb-93fe-cb0a1abf52aa) ) (wire (pts (xy 81.28 111.76) (xy 81.28 125.73)) (stroke (width 0) (type default)) (uuid 1731dad7-665c-4bc0-a090-86dbf1e597dc) ) (wire (pts (xy 101.6 147.32) (xy 116.84 147.32)) (stroke (width 0) (type default)) (uuid 1b6ba743-b369-4a4a-ac6d-25a5e7504c1b) ) (wire (pts (xy 190.5 111.76) (xy 220.98 111.76)) (stroke (width 0) (type default)) (uuid 1b7c057a-767e-4fc4-a04f-8782cae7124a) ) (wire (pts (xy 50.8 105.41) (xy 71.12 105.41)) (stroke (width 0) (type default)) (uuid 1c70f65e-875b-48b1-b1a0-aa6a49e90867) ) (wire (pts (xy 208.28 129.54) (xy 220.98 129.54)) (stroke (width 0) (type default)) (uuid 1c744f89-7ea2-4835-9db8-fc84a84728da) ) (wire (pts (xy 116.84 147.32) (xy 132.08 147.32)) (stroke (width 0) (type default)) (uuid 1e58117a-f5aa-444a-b2d8-1f7a95bf0774) ) (polyline (pts (xy 52.705 51.435) (xy 53.34 52.705)) (stroke (width 0.635) (type solid)) (uuid 22acebdf-fe6c-4acf-8d4c-43a7c668658c) ) (wire (pts (xy 220.98 109.22) (xy 208.28 109.22)) (stroke (width 0) (type default)) (uuid 22ccc1e0-9ac0-4164-928e-63afdeb11f1d) ) (polyline (pts (xy 53.34 60.96) (xy 50.8 57.15)) (stroke (width 0.635) (type solid)) (uuid 2380ba73-edfe-4832-b255-61c49f3534d4) ) (wire (pts (xy 127 111.76) (xy 127 125.73)) (stroke (width 0) (type default)) (uuid 25ba37cb-1755-4122-9da3-8f56ec06f638) ) (wire (pts (xy 127 97.79) (xy 127 111.76)) (stroke (width 0) (type default)) (uuid 26b2cd92-0532-49fe-90c4-fb3402dcabc5) ) (wire (pts (xy 208.28 124.46) (xy 220.98 124.46)) (stroke (width 0) (type default)) (uuid 29c90796-a0af-460b-bb88-924319068848) ) (wire (pts (xy 208.28 142.24) (xy 220.98 142.24)) (stroke (width 0) (type default)) (uuid 2b5a0bd6-47bb-4c12-aee2-86be67c25540) ) (wire (pts (xy 220.98 106.68) (xy 205.74 106.68)) (stroke (width 0) (type default)) (uuid 2d4a807e-224f-4f6a-a8e9-3e671bb285be) ) (wire (pts (xy 86.36 133.35) (xy 101.6 133.35)) (stroke (width 0) (type default)) (uuid 2d69e343-66c5-4473-95ba-82bdcf4dabe8) ) (wire (pts (xy 218.44 127) (xy 220.98 127)) (stroke (width 0) (type default)) (uuid 3144a56e-6da8-41b8-99ab-446554faf203) ) (wire (pts (xy 132.08 105.41) (xy 147.32 105.41)) (stroke (width 0) (type default)) (uuid 3385b799-e116-4a05-9288-09e2544df838) ) (wire (pts (xy 101.6 133.35) (xy 116.84 133.35)) (stroke (width 0) (type default)) (uuid 34513eec-6461-46c6-84b0-3b214692ad29) ) (wire (pts (xy 96.52 139.7) (xy 96.52 154.94)) (stroke (width 0) (type default)) (uuid 3a98b3a2-90b0-419f-a5cf-21a3795fbaa2) ) (wire (pts (xy 142.24 111.76) (xy 142.24 125.73)) (stroke (width 0) (type default)) (uuid 3ec8de01-8276-4a4c-9502-8b0fb48ab9c0) ) (wire (pts (xy 208.28 144.78) (xy 220.98 144.78)) (stroke (width 0) (type default)) (uuid 407de1e8-e89b-4cc3-be0b-dcaa1560f883) ) (wire (pts (xy 86.36 119.38) (xy 101.6 119.38)) (stroke (width 0) (type default)) (uuid 428f7040-05d3-42fc-8c8e-2e26f1579886) ) (wire (pts (xy 127 139.7) (xy 127 154.94)) (stroke (width 0) (type default)) (uuid 45d3db49-e964-450a-a3e3-a68a19a4d6a1) ) (wire (pts (xy 86.36 105.41) (xy 101.6 105.41)) (stroke (width 0) (type default)) (uuid 464d60f3-df77-4b08-9ec4-8da60ce1af05) ) (wire (pts (xy 190.5 96.52) (xy 203.2 96.52)) (stroke (width 0) (type default)) (uuid 482b91e4-e229-4737-8ca8-0ec079c649af) ) (wire (pts (xy 111.76 97.79) (xy 111.76 111.76)) (stroke (width 0) (type default)) (uuid 49df9b6d-15a5-46cb-83f4-6caa833cc66d) ) (wire (pts (xy 132.08 119.38) (xy 147.32 119.38)) (stroke (width 0) (type default)) (uuid 4c24a1c1-68f6-4f7d-9dee-652ced753712) ) (wire (pts (xy 205.74 116.84) (xy 205.74 106.68)) (stroke (width 0) (type default)) (uuid 4cdabf52-d46c-48c3-845f-980ba8b9cbea) ) (wire (pts (xy 142.24 125.73) (xy 142.24 139.7)) (stroke (width 0) (type default)) (uuid 4f015454-3bfa-4159-b0b0-89c5c78429f3) ) (wire (pts (xy 50.8 119.38) (xy 71.12 119.38)) (stroke (width 0) (type default)) (uuid 50329c2d-564b-46e2-9a29-e8c3e5967c39) ) (wire (pts (xy 190.5 63.5) (xy 200.66 63.5)) (stroke (width 0) (type default)) (uuid 508c5a63-878a-4f11-b2c1-9b47852043ad) ) (wire (pts (xy 203.2 96.52) (xy 203.2 101.6)) (stroke (width 0) (type default)) (uuid 50ee8e13-7acd-4bee-8ef3-ac5ec4da3b7a) ) (wire (pts (xy 50.8 147.32) (xy 71.12 147.32)) (stroke (width 0) (type default)) (uuid 5b3ae4e7-1263-4d31-81b8-94320ae41901) ) (polyline (pts (xy 48.26 52.705) (xy 48.895 51.435)) (stroke (width 0.635) (type solid)) (uuid 5d567d44-9538-4fdb-a515-a12dddb0016f) ) (wire (pts (xy 116.84 91.44) (xy 132.08 91.44)) (stroke (width 0) (type default)) (uuid 5db1beb0-c75c-4f3f-8070-dbdb42b96509) ) (wire (pts (xy 111.76 125.73) (xy 111.76 139.7)) (stroke (width 0) (type default)) (uuid 5dfadda0-169c-489d-bb24-f53f012485b7) ) (wire (pts (xy 203.2 104.14) (xy 220.98 104.14)) (stroke (width 0) (type default)) (uuid 5e43cf58-2abf-4424-978b-9ddf7ef07a64) ) (wire (pts (xy 71.12 105.41) (xy 86.36 105.41)) (stroke (width 0) (type default)) (uuid 62d091e7-1e64-4976-8752-f2f56b862e55) ) (wire (pts (xy 190.5 119.38) (xy 203.2 119.38)) (stroke (width 0) (type default)) (uuid 635aee44-0758-4c98-8684-b704cd381f71) ) (wire (pts (xy 60.96 83.82) (xy 60.96 97.79)) (stroke (width 0) (type default)) (uuid 6441ed11-6105-4254-a6c9-8803b9cc1bda) ) (wire (pts (xy 218.44 127) (xy 218.44 139.7)) (stroke (width 0) (type default)) (uuid 683c96cb-ea5f-4923-bfe8-bd3fb234a259) ) (wire (pts (xy 132.08 133.35) (xy 147.32 133.35)) (stroke (width 0) (type default)) (uuid 686aa0b9-9e65-4ff8-a8b4-f758f6e4a3a1) ) (wire (pts (xy 71.12 91.44) (xy 86.36 91.44)) (stroke (width 0) (type default)) (uuid 699b101f-3781-479e-b3e9-1992c6a71f25) ) (wire (pts (xy 71.12 119.38) (xy 86.36 119.38)) (stroke (width 0) (type default)) (uuid 6c56b6a9-fb03-41dd-b810-5df84eac7aa2) ) (wire (pts (xy 215.9 60.96) (xy 220.98 60.96)) (stroke (width 0) (type default)) (uuid 6de5df14-2f9f-4c34-8af1-af4b09714b27) ) (polyline (pts (xy 51.435 50.8) (xy 52.705 51.435)) (stroke (width 0.635) (type solid)) (uuid 6ec79fce-46b3-4c72-a3a4-f4d3a0942b3e) ) (wire (pts (xy 81.28 83.82) (xy 81.28 97.79)) (stroke (width 0) (type default)) (uuid 70341c9a-d97c-4c8d-bf64-5e8ee7cbe615) ) (wire (pts (xy 81.28 139.7) (xy 81.28 154.94)) (stroke (width 0) (type default)) (uuid 7404fe2b-cdd2-42a3-b17d-e095ca02b3cc) ) (wire (pts (xy 142.24 83.82) (xy 142.24 97.79)) (stroke (width 0) (type default)) (uuid 744a40d3-55a8-496c-a600-16f26e52a3d8) ) (wire (pts (xy 96.52 125.73) (xy 96.52 139.7)) (stroke (width 0) (type default)) (uuid 7477d686-250b-4ed9-9884-0ed6842be88d) ) (wire (pts (xy 71.12 133.35) (xy 86.36 133.35)) (stroke (width 0) (type default)) (uuid 748a22e7-ef00-4e35-8a6e-1a53fa83646b) ) (wire (pts (xy 96.52 83.82) (xy 96.52 97.79)) (stroke (width 0) (type default)) (uuid 7a471c24-29b8-41c3-b669-02ca7e1681cd) ) (polyline (pts (xy 186.69 87.63) (xy 187.96 85.725)) (stroke (width 0) (type default)) (uuid 7e22d153-f74e-480f-bc6d-0737e7b981fc) ) (wire (pts (xy 190.5 60.96) (xy 200.66 60.96)) (stroke (width 0) (type default)) (uuid 7e35546a-6601-48e4-b8b4-4dd5f1b5e9cd) ) (polyline (pts (xy 48.26 60.96) (xy 48.26 52.705)) (stroke (width 0.635) (type solid)) (uuid 8764750b-f5a0-4213-a980-38ea4a973772) ) (wire (pts (xy 208.28 132.08) (xy 220.98 132.08)) (stroke (width 0) (type default)) (uuid 8a0ba858-fd62-4213-964b-2b6010b2af2f) ) (wire (pts (xy 190.5 116.84) (xy 205.74 116.84)) (stroke (width 0) (type default)) (uuid 8ad22419-704d-4dd6-b60a-79b1822a71ce) ) (wire (pts (xy 111.76 139.7) (xy 111.76 154.94)) (stroke (width 0) (type default)) (uuid 8ad993cd-4935-45cb-bc58-c818aa9432d5) ) (wire (pts (xy 50.8 133.35) (xy 71.12 133.35)) (stroke (width 0) (type default)) (uuid 9068ca12-824a-46dd-a55c-be5a22f37ca4) ) (wire (pts (xy 218.44 139.7) (xy 220.98 139.7)) (stroke (width 0) (type default)) (uuid 92388215-d414-488c-8f70-5fcb1f4c5eee) ) (wire (pts (xy 147.32 119.38) (xy 165.1 119.38)) (stroke (width 0) (type default)) (uuid 92688253-bb43-4626-a4d7-98a4d102bc48) ) (wire (pts (xy 101.6 91.44) (xy 116.84 91.44)) (stroke (width 0) (type default)) (uuid 9327fa3f-9093-4970-9e67-86908b4b6bf6) ) (wire (pts (xy 157.48 97.79) (xy 157.48 111.76)) (stroke (width 0) (type default)) (uuid 9a326382-4421-44cb-ad78-92ca4d70bd4e) ) (wire (pts (xy 116.84 105.41) (xy 132.08 105.41)) (stroke (width 0) (type default)) (uuid 9a36ffa9-59dc-459e-b701-2a6e666c7f1d) ) (wire (pts (xy 132.08 147.32) (xy 147.32 147.32)) (stroke (width 0) (type default)) (uuid 9aff0965-8248-4265-83fd-cf9816b50e2b) ) (polyline (pts (xy 53.34 52.705) (xy 53.34 60.96)) (stroke (width 0.635) (type solid)) (uuid a0b85893-7f34-4646-a95a-ef8fe52a7d73) ) (wire (pts (xy 86.36 147.32) (xy 101.6 147.32)) (stroke (width 0) (type default)) (uuid a11123e2-861d-4afd-93a2-00841bacb927) ) (wire (pts (xy 81.28 125.73) (xy 81.28 139.7)) (stroke (width 0) (type default)) (uuid a32959f4-ee88-461b-82bf-0bfeee887cd9) ) (wire (pts (xy 203.2 119.38) (xy 203.2 104.14)) (stroke (width 0) (type default)) (uuid a5e3946a-07b9-4ab1-acd7-c791178d5eeb) ) (wire (pts (xy 101.6 119.38) (xy 116.84 119.38)) (stroke (width 0) (type default)) (uuid a614827f-03c5-48b9-9eb6-55dd70cf7d7a) ) (wire (pts (xy 116.84 119.38) (xy 132.08 119.38)) (stroke (width 0) (type default)) (uuid a759fda1-2224-419f-ab96-af51df77ebe4) ) (wire (pts (xy 116.84 133.35) (xy 132.08 133.35)) (stroke (width 0) (type default)) (uuid aa086583-5ee0-440c-b93f-c832eb654a18) ) (wire (pts (xy 208.28 114.3) (xy 208.28 109.22)) (stroke (width 0) (type default)) (uuid ad75a2ae-0804-4204-a362-df4b5247caa1) ) (wire (pts (xy 60.96 125.73) (xy 60.96 139.7)) (stroke (width 0) (type default)) (uuid b33a953f-06ba-48fc-bd8e-860caf4c6344) ) (wire (pts (xy 157.48 125.73) (xy 157.48 139.7)) (stroke (width 0) (type default)) (uuid b4b70f14-464d-47f3-aba7-3d97d73eb649) ) (wire (pts (xy 215.9 66.04) (xy 226.06 66.04)) (stroke (width 0) (type default)) (uuid b6a47fbb-d25b-453f-bfb4-38cba9b6d58b) ) (wire (pts (xy 208.28 137.16) (xy 220.98 137.16)) (stroke (width 0) (type default)) (uuid b6c2c648-58f5-431a-85a0-0be3611a0a80) ) (wire (pts (xy 81.28 97.79) (xy 81.28 111.76)) (stroke (width 0) (type default)) (uuid b798e43b-9a5b-4cb3-844c-0e88c1c7a68d) ) (wire (pts (xy 190.5 93.98) (xy 205.74 93.98)) (stroke (width 0) (type default)) (uuid b96bbf94-904f-4915-b91d-1df9f16b3aa3) ) (wire (pts (xy 157.48 139.7) (xy 157.48 154.94)) (stroke (width 0) (type default)) (uuid bc6c9762-f026-4975-ba56-f2f9e969aec4) ) (wire (pts (xy 190.5 66.04) (xy 200.66 66.04)) (stroke (width 0) (type default)) (uuid bd08d57b-4425-4f07-9292-3e3129d1de62) ) (wire (pts (xy 142.24 97.79) (xy 142.24 111.76)) (stroke (width 0) (type default)) (uuid c026e6fe-7cdd-4934-b423-c1db7dcc3ac5) ) (wire (pts (xy 190.5 99.06) (xy 220.98 99.06)) (stroke (width 0) (type default)) (uuid c07324be-2dc6-40fe-afdc-b8ad3a86bf53) ) (wire (pts (xy 147.32 91.44) (xy 165.1 91.44)) (stroke (width 0) (type default)) (uuid c45efaa5-77e5-4124-890e-43b23886dfd1) ) (wire (pts (xy 96.52 111.76) (xy 96.52 125.73)) (stroke (width 0) (type default)) (uuid cb9296fa-abbb-4908-a93d-d8e7d7ad9712) ) (wire (pts (xy 205.74 93.98) (xy 205.74 96.52)) (stroke (width 0) (type default)) (uuid cbe053e8-7031-455a-9162-be7745150d0f) ) (wire (pts (xy 190.5 121.92) (xy 220.98 121.92)) (stroke (width 0) (type default)) (uuid cca17d7c-efef-4df9-a2bb-f7cee1e78c58) ) (polyline (pts (xy 55.88 57.15) (xy 53.34 60.96)) (stroke (width 0.635) (type solid)) (uuid cf3e02f9-a949-4d7f-a477-a77c0be3bee5) ) (polyline (pts (xy 48.895 51.435) (xy 50.165 50.8)) (stroke (width 0.635) (type solid)) (uuid d0645f39-fffd-4c00-8fc2-41ffa42cf2cc) ) (wire (pts (xy 111.76 83.82) (xy 111.76 97.79)) (stroke (width 0) (type default)) (uuid dfe6f795-44ac-4993-a44a-69cd829aa466) ) (wire (pts (xy 147.32 133.35) (xy 165.1 133.35)) (stroke (width 0) (type default)) (uuid e2ad7a65-1c46-436d-ac84-315b601cf180) ) (wire (pts (xy 71.12 147.32) (xy 86.36 147.32)) (stroke (width 0) (type default)) (uuid e2e3c6d3-6908-4dad-aa1b-81f72313f9c4) ) (wire (pts (xy 208.28 134.62) (xy 220.98 134.62)) (stroke (width 0) (type default)) (uuid e362d78c-199c-4a48-9831-3063467f56b6) ) (wire (pts (xy 157.48 83.82) (xy 157.48 97.79)) (stroke (width 0) (type default)) (uuid e3870ec4-1921-4a6f-849e-fee4e79ee538) ) (wire (pts (xy 96.52 97.79) (xy 96.52 111.76)) (stroke (width 0) (type default)) (uuid e9243255-925c-4cc0-8f7e-112f702a664d) ) (wire (pts (xy 60.96 97.79) (xy 60.96 111.76)) (stroke (width 0) (type default)) (uuid eb2effbe-a758-4f07-a649-eeada3d3ee59) ) (wire (pts (xy 101.6 105.41) (xy 116.84 105.41)) (stroke (width 0) (type default)) (uuid ecbb6169-e4d2-471e-a5dd-622491b2c784) ) (wire (pts (xy 165.1 105.41) (xy 147.32 105.41)) (stroke (width 0) (type default)) (uuid ed320f30-da4b-4d01-8538-6bba8ca7fc26) ) (wire (pts (xy 111.76 111.76) (xy 111.76 125.73)) (stroke (width 0) (type default)) (uuid ed786ade-e698-4384-ab57-611b7e0bdc2e) ) (wire (pts (xy 60.96 111.76) (xy 60.96 125.73)) (stroke (width 0) (type default)) (uuid ee412006-dcfb-4ce2-b759-5792c8100229) ) (wire (pts (xy 132.08 91.44) (xy 147.32 91.44)) (stroke (width 0) (type default)) (uuid f0870880-761a-49c0-88ea-1cd841e5012b) ) (wire (pts (xy 157.48 111.76) (xy 157.48 125.73)) (stroke (width 0) (type default)) (uuid f147e9aa-9301-4713-8566-0cdcd977ea9b) ) (polyline (pts (xy 50.165 50.8) (xy 51.435 50.8)) (stroke (width 0.635) (type solid)) (uuid f281cb66-37e1-487d-887a-ede332e570bd) ) (wire (pts (xy 205.74 96.52) (xy 220.98 96.52)) (stroke (width 0) (type default)) (uuid f9abb1ad-782d-43ae-9d94-d92c5442d69e) ) (wire (pts (xy 50.8 91.44) (xy 71.12 91.44)) (stroke (width 0) (type default)) (uuid fa86dda1-4305-43fa-8835-b2ade0daf0e8) ) (wire (pts (xy 60.96 139.7) (xy 60.96 154.94)) (stroke (width 0) (type default)) (uuid fb4606cb-4779-437f-b92a-5f39dd171108) ) (wire (pts (xy 147.32 147.32) (xy 165.1 147.32)) (stroke (width 0) (type default)) (uuid fd2aa684-34f1-4059-a62b-68e6ebbe3c16) ) (wire (pts (xy 220.98 63.5) (xy 226.06 63.5)) (stroke (width 0) (type default)) (uuid fd957d0a-817a-4149-b0c3-458ec06134db) ) (wire (pts (xy 220.98 60.96) (xy 220.98 63.5)) (stroke (width 0) (type default)) (uuid fdfbaa29-2c25-4437-afcd-7d09aa1a9fc5) ) (polyline (pts (xy 186.69 87.63) (xy 185.42 85.725)) (stroke (width 0) (type default)) (uuid ff9398e3-85a7-4151-88b6-b6ba9e114a76) ) (wire (pts (xy 142.24 139.7) (xy 142.24 154.94)) (stroke (width 0) (type default)) (uuid fff3fc7e-3ee1-4fa5-b956-1d7bc458845f) ) (rectangle (start 45.72 76.2) (end 66.04 158.75) (stroke (width 0) (type dash)) (fill (type none)) (uuid 105ccc0f-6de5-4376-bc1a-25a9c0d1df88) ) (rectangle (start 175.26 105.41) (end 198.12 128.27) (stroke (width 0) (type dash)) (fill (type none)) (uuid 98a1e8d5-6fef-4956-8335-c86a87008163) ) (rectangle (start 175.26 53.34) (end 241.3 77.47) (stroke (width 0) (type dash)) (fill (type none)) (uuid a1535c12-c49f-48a9-9045-adc18b3ed07f) ) (text "Encoder breakout" (at 175.26 52.07 0) (effects (font (size 1.905 1.905)) (justify left bottom)) (uuid 5e440fce-3739-4d15-a9fb-5cc05e53d83e) ) (text "Optional" (at 45.72 74.93 0) (effects (font (size 1.905 1.905)) (justify left bottom)) (uuid 5fad4338-e2f0-4408-8d30-d63f8cd21c9c) ) (text "Row merge" (at 175.26 132.08 0) (effects (font (size 1.905 1.905)) (justify left bottom)) (uuid c1e9a550-1d45-4763-9c66-b36eca92f35a) ) (text "This is a reversible PCB.\nIt covers half of the keyboard, and\nis flipped over for the other half." (at 58.42 62.23 0) (effects (font (size 2.54 2.54)) (justify left bottom)) (uuid cfb494a2-1f1d-40b2-a010-5c41f8e8e355) ) (label "col5" (at 212.09 124.46 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 0229acce-018f-49a2-8650-8f1ccba49616) ) (label "col4" (at 212.09 129.54 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 071ceb74-d0f3-495e-a19d-1cd52d9bf781) ) (label "col2" (at 212.09 134.62 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 2f78210f-582f-43ba-b396-19a9c124a290) ) (label "row2" (at 165.1 119.38 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right bottom)) (uuid 3e1156b5-1623-41e2-a514-94dfbba5d917) ) (label "rotC" (at 212.09 101.6 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 459fad55-aaa4-46ce-a85b-f5d66226d5dc) ) (label "col0" (at 81.28 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 518f835c-4332-4079-98c8-6b5a6769cf3c) ) (label "col3" (at 212.09 132.08 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 69eb455e-e198-445b-b62c-a222553d2e3e) ) (label "col6" (at 60.96 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 6b22a138-d029-4325-ae1c-e4704afc576f) ) (label "col4" (at 142.24 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 6da30a52-7812-4c5d-b732-d1aea0691b27) ) (label "col5" (at 157.48 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 7eaefb12-6beb-44ec-a112-4cbdf04c52ac) ) (label "col6" (at 212.09 144.78 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 7f15a2f2-4785-4174-adff-e68c394840ed) ) (label "row0" (at 165.1 91.44 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right bottom)) (uuid 7f2739a2-c68a-424b-a2dc-f55b3fa118f3) ) (label "row3" (at 212.09 111.76 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 861ca90a-735b-4695-a24f-ba51559350d9) ) (label "row1" (at 165.1 105.41 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right bottom)) (uuid 8d828be7-fb08-453d-9af2-bbd54e427a74) ) (label "rotA" (at 212.09 96.52 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 93a34fdf-b0cd-476d-b154-7991d1a4a641) ) (label "row2" (at 212.09 109.22 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 9b3dd89a-2f58-45d0-8c47-978b5112ea23) ) (label "row4" (at 165.1 147.32 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right bottom)) (uuid 9c7b175a-cd51-401e-9736-1ff31232964e) ) (label "row0" (at 212.09 104.14 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid a44dcaba-16d5-4810-b0a9-d10d3064ef13) ) (label "rotB" (at 212.09 99.06 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid bd7837ad-ad0f-4408-b1cb-f16206a5888f) ) (label "row3" (at 165.1 133.35 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right bottom)) (uuid be42196d-1169-4f01-aadb-9e1562be16a3) ) (label "col1" (at 96.52 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid d58e5a74-ebaf-4b9b-ac2b-7cce4ce2b6fc) ) (label "col2" (at 111.76 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid d816d041-9b6d-4e3b-ac30-6bcd5c2acf8d) ) (label "row1" (at 212.09 106.68 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid df87079c-b747-4677-81f1-00ce047c509f) ) (label "col3" (at 127 154.94 90) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid f2efc49e-2713-4896-bae5-cab5cb31a243) ) (label "col1" (at 212.09 137.16 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid f8ec71ee-8732-4f29-9231-104a803a668c) ) (label "row4" (at 212.09 121.92 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid fdaa3bc6-e36c-4e48-88c4-783bdf818ced) ) (label "col0" (at 212.09 142.24 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid fdb3bb4f-69f0-4964-b54d-34ba34fb0071) ) (symbol (lib_id "chrumm:Switch") (at 55.88 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 0226cc37-2500-4038-b483-786d1f73d24b) (property "Reference" "S25" (at 55.88 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 55.88 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 55.88 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 55.88 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid ce358d4e-4f17-40ff-8dbe-a5b85acd8dde)) (pin "2" (uuid 1138a281-fac4-45bc-97f8-0f875da8acf0)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S25") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 132.08 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 079f66ca-8386-4b94-b61b-957b6ae06453) (property "Reference" "D43" (at 133.985 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 132.08 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 132.08 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 132.08 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 00fc5ff8-22e3-4b24-b1f9-0ffe850a02d7)) (pin "2" (uuid baafa588-1d11-48c2-98e1-e9804026fd69)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D43") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 121.92 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 09d6a03c-bab4-467b-99a3-84df6becfa20) (property "Reference" "S29" (at 121.92 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 121.92 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 121.92 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 121.92 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 5e54c583-7e3f-450f-a4ed-799d674d1b10)) (pin "2" (uuid b9ac9c24-3058-406b-837b-da8b252e121c)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S29") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:PinHeader_1x2") (at 229.87 63.5 0) (mirror y) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 0df87356-05ef-435a-95fd-c284b850cfc0) (property "Reference" "J4" (at 229.87 61.595 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x2" (at 229.87 67.945 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 229.87 63.5 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 229.87 68.58 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid b115959e-c57b-41a1-97f9-39fd5f26c576)) (pin "2" (uuid 254cb963-4ef3-45d4-991a-43a1ccfb46f3)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "J4") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 55.88 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 10df7671-6815-4e0a-8393-fa708174f37b) (property "Reference" "S38" (at 55.88 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 55.88 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 55.88 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 55.88 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 50a68801-9dfe-4efe-88ae-f3addbc6ff36)) (pin "2" (uuid e62e681c-89c6-45d1-810c-cdb74a4cad3e)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S38") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 137.16 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 18471bab-3b30-499b-aaa6-a1757ff24b3d) (property "Reference" "S30" (at 137.16 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 137.16 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 137.16 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 137.16 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid ef395c03-4329-4976-ad38-143be7d983ec)) (pin "2" (uuid f0fe56e0-c001-46d0-a6f0-c7222e318403)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S30") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 147.32 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 18504136-6b78-4b14-bc73-4a684af3ba9d) (property "Reference" "D5" (at 149.225 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 147.32 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 147.32 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 147.32 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 3319e906-705f-4e99-a4db-e7f3b7783d20)) (pin "2" (uuid 9bb5c952-7af7-497e-ab85-fa8c3f8fb119)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D5") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 50.8 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 21d26ef7-3fab-4d92-a868-22fd7ba07fbd) (property "Reference" "D64" (at 52.705 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 50.8 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 50.8 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 50.8 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d9436fdd-6153-48f2-91ab-6b5c876f478f)) (pin "2" (uuid 0f28c4ba-98ec-4eda-987d-9e2df3affb73)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D64") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 116.84 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 237d569d-691f-4524-993b-ae638d4ec462) (property "Reference" "D29" (at 118.745 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 116.84 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 116.84 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 116.84 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 7361c768-b091-452b-8232-06fa1a95f718)) (pin "2" (uuid f0d10de4-c828-4871-be8e-ec6afcbad6eb)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D29") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 106.68 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 23d6557d-4220-4dba-a3af-fa32c114a36c) (property "Reference" "S15" (at 106.68 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 106.68 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 106.68 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 106.68 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 72594547-9338-477b-8748-ae811b3c0d1a)) (pin "2" (uuid 8f0444f1-eedd-4256-ac09-12ab5767fd93)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S15") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 147.32 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 25a23b2c-f932-4a86-b122-ed89bd657a99) (property "Reference" "D44" (at 149.225 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 147.32 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 147.32 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 147.32 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid dbef49fe-69ce-4c15-84fd-b9e49bac5f49)) (pin "2" (uuid 8922bca0-2aef-4c56-8ad3-f358f6097057)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D44") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 71.12 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 26acd12c-735b-44ae-947b-a8dba4f1c6aa) (property "Reference" "D39" (at 73.025 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 71.12 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 71.12 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 71.12 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 51b08890-8e90-46ed-92ec-0e2aa2476886)) (pin "2" (uuid cfcdd3b3-8193-43b7-88de-532ce6658fb2)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D39") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 50.8 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 299a310b-3dc1-4583-b761-64ac94dbe6d8) (property "Reference" "D51" (at 52.705 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 50.8 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 50.8 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 50.8 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 4ee4de06-e7aa-4150-b9ce-08315c549ec3)) (pin "2" (uuid 8ea93417-c1d4-4b8b-a8dd-2598beb465e5)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D51") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 137.16 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 2b57ce25-6880-45af-a6a1-0c5a0b8aa111) (property "Reference" "S43" (at 137.16 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 137.16 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 137.16 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 137.16 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 525fbda6-2755-4a6d-b936-fe8ea8a70b4e)) (pin "2" (uuid c2c7b41e-bcce-4a1a-825d-4d0136c4376f)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S43") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 50.8 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 2fda0bd8-d566-4a81-8344-ad89e8876755) (property "Reference" "D12" (at 52.705 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 50.8 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 50.8 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 50.8 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 10a84257-eb8a-4fdd-9990-29ce794e19b4)) (pin "2" (uuid 616573c2-5c74-4943-8361-eb49595b49b3)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D12") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 55.88 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 36093d1a-a17f-4660-8232-054a5074086a) (property "Reference" "S12" (at 55.88 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 55.88 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 55.88 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 55.88 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid dd86c269-a224-4801-bc86-b82630d2254a)) (pin "2" (uuid 4cfc33a3-8335-46a8-b23d-2ed59cc3b96b)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S12") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 101.6 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 398648bd-5e3e-4236-a45f-c245d059df9d) (property "Reference" "D41" (at 103.505 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 101.6 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 101.6 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 101.6 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 318aa293-fa2c-433d-baad-f9d7504f030f)) (pin "2" (uuid d73547fb-2c4d-4bc0-b2ab-0b06788b797c)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D41") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 71.12 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 407801f9-1e13-40d9-a719-feb462df800e) (property "Reference" "D52" (at 73.025 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 71.12 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 71.12 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 71.12 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 39bf44f2-8ba5-4bf4-98c9-84bc07a6876f)) (pin "2" (uuid fb31c363-0bcf-4936-93b7-2b05317ebf4b)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D52") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 132.08 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 46d79714-f75b-4123-a83a-ddba4549f4d6) (property "Reference" "D56" (at 133.985 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 132.08 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 132.08 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 132.08 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 88732f4b-d825-4d99-b6f4-243b3ecd474a)) (pin "2" (uuid e26a190d-670c-48bb-b2d7-fc6f5a8abc5b)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D56") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 147.32 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 48c9932e-f400-4bf2-b497-ec0b87dc9cf8) (property "Reference" "D31" (at 149.225 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 147.32 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 147.32 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 147.32 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 74a19c9e-1e99-4984-8aef-35dd67bb8426)) (pin "2" (uuid 659e40f3-7f9a-4eec-a560-8bae62ce8c57)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D31") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:RotaryEncoder_Switch") (at 208.28 63.5 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 4aa62459-3370-4ea5-bedf-0bff6cecbe2e) (property "Reference" "E1" (at 208.28 57.785 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RotaryEncoder_Switch" (at 208.28 73.025 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 208.28 63.5 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 208.28 63.5 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 8929b788-9c64-453f-ab59-704bcc2c1aa6)) (pin "2" (uuid a2bf9917-263d-4c63-9e8f-43c89b97507c)) (pin "A" (uuid f40c6aeb-48c1-4c5a-bb7e-de19da03516a)) (pin "B" (uuid 1affc039-37b5-480f-a4b5-753319ee62fc)) (pin "C" (uuid f33c62fa-d6a6-4453-8266-732bfc521e80)) (pin "MP" (uuid 4a3f7e8d-3d4b-420e-9643-08c867a85828)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "E1") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 50.8 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 4de0da89-c42c-4aec-ac48-24e19f628b60) (property "Reference" "D25" (at 52.705 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 50.8 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 50.8 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 50.8 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 12df0fff-b3c9-4960-9ed0-4cf4a16da158)) (pin "2" (uuid b113db43-e539-4f98-af86-bde3e8aa6e6e)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D25") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 106.68 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 4fc9d620-af3f-4282-88b5-607193e15aa2) (property "Reference" "S28" (at 106.68 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 106.68 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 106.68 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 106.68 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d1f63c0e-c86a-4379-aca1-b01018cbab27)) (pin "2" (uuid 7b9bb081-2098-434f-b787-35ddd745a383)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S28") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 76.2 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 53ef5604-bcfa-4fa4-a8de-cb9a5019562d) (property "Reference" "S26" (at 76.2 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 76.2 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 76.2 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 76.2 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d5434287-ac38-46fb-b365-43fd8cc5678f)) (pin "2" (uuid ba99bf68-4a86-4938-9c6d-fbd9176f601f)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S26") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 116.84 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 5ed87483-c5ac-4b41-9860-8af6b1fc0f58) (property "Reference" "D16" (at 118.745 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 116.84 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 116.84 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 116.84 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid cf05089e-ad40-4b12-9c6c-26e24e5a3600)) (pin "2" (uuid b6ad4b6b-b03f-4f2c-a770-60db41e699df)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D16") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 106.68 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 627a2807-b53a-49ee-b1de-c1be06d6bfb3) (property "Reference" "S41" (at 106.68 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 106.68 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 106.68 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 106.68 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid ddf904be-eebc-443f-9d10-75c6efb3aaff)) (pin "2" (uuid 664a9536-a8f1-4f63-9869-004297ec49a5)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S41") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 137.16 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 6708a860-b37f-42fd-877e-c564a8e65593) (property "Reference" "S4" (at 137.16 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 137.16 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 137.16 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 137.16 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 288c3337-3815-478f-b572-986b8da78e88)) (pin "2" (uuid c5df0d98-ac7a-46ab-99fe-15e2b596ad5e)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S4") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 91.44 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 6a8715e6-7521-4343-9726-bb7fa2debdd9) (property "Reference" "S1" (at 91.44 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 91.44 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 91.44 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 91.44 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 088d55ff-852d-4869-9835-ff8209007db1)) (pin "2" (uuid e0f60524-172d-4133-9fdc-8704ff66d3de)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S1") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:PinHeader_1x5") (at 186.69 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 6c511771-d074-4b6b-bfbc-72291d595095) (property "Reference" "J1" (at 186.69 109.855 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x5" (at 186.69 123.825 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 186.69 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 186.69 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d52adea4-89e0-4e41-b28b-c4818df68fa6)) (pin "2" (uuid dcfa87aa-af61-4ec8-951f-50b80e79b85e)) (pin "3" (uuid 8eacc313-ab87-40de-8bfd-392ffd8bfd61)) (pin "4" (uuid bfd3edf4-6559-4a2a-8492-2f8d8ceb3ef5)) (pin "5" (uuid 6877be57-13fb-4ada-b9d0-6f313cd689e1)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "J1") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 76.2 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 6dba677d-5b5e-4747-adc1-f09ecca77609) (property "Reference" "S39" (at 76.2 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 76.2 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 76.2 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 76.2 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 86d0521d-04d8-49a9-8d8c-0e8ba61e307c)) (pin "2" (uuid 73391fbc-88b9-4f17-9b8c-ae4938d399bc)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S39") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 106.68 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 6e1daab3-acb1-4ed6-97f5-b050771793ad) (property "Reference" "S54" (at 106.68 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 106.68 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 106.68 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 106.68 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 60b169f5-c6a5-45a2-9201-ab365e6564c1)) (pin "2" (uuid 5341290e-b394-4282-987d-639c00a31d05)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S54") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 86.36 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 6e61b591-8e54-4017-8f6a-673a406d451d) (property "Reference" "D40" (at 88.265 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 86.36 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 86.36 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 86.36 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid bbe7239a-6702-4e7e-adf9-233d8fb3b030)) (pin "2" (uuid 0ad4e11a-07c5-462f-9808-9625cc598379)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D40") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 71.12 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 764719d1-ff5f-410d-ae83-26e5e054c2f0) (property "Reference" "D0" (at 73.025 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 71.12 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 71.12 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 71.12 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 13284251-a336-44ec-8472-de936383c81d)) (pin "2" (uuid 09131323-6d71-4d03-933d-74a4484c381b)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D0") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 101.6 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 7a7dd932-d51c-42b8-9a9d-af8ca97a528d) (property "Reference" "D28" (at 103.505 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 101.6 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 101.6 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 101.6 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 87851cc0-c12d-443f-8367-d6870f1d253a)) (pin "2" (uuid fea9b812-0773-4b03-85a8-06fa2f295ea4)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D28") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 137.16 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 7bd086fe-8398-4489-8602-b833ca4ee28c) (property "Reference" "S56" (at 137.16 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 137.16 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 137.16 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 137.16 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 9947ed2f-9cce-484b-b5e1-c4df51ad330d)) (pin "2" (uuid 22ef22f7-d01c-4f74-adf2-6274053c2e1c)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S56") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:RPi_Pico_Custom") (at 237.49 120.65 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 80801f83-29e9-4494-858e-ce0091481c6a) (property "Reference" "U1" (at 237.49 93.345 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RPi_Pico_Custom" (at 237.49 147.955 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 237.49 120.65 90) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 237.49 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid f0064436-c203-4c57-8b90-4b3ee30c8f47)) (pin "11" (uuid f91a2ded-b61c-428f-81e1-76a61b6940b1)) (pin "12" (uuid b2123817-a6de-4d27-b1bc-32617bd80efc)) (pin "13" (uuid 126768ad-8ff3-4aa9-b0a2-05f52b931f21)) (pin "14" (uuid 3dbc5de4-66a6-48f0-ab24-4e9e9e0618f4)) (pin "15" (uuid 7a5d810c-46d4-4b81-a14b-c6063649c2d0)) (pin "16" (uuid ff18c57b-aff5-41b1-9677-49e58264fef4)) (pin "17" (uuid 406a69d8-a1fe-4239-811b-642bc9478463)) (pin "18" (uuid e3cc0132-8e63-4be6-ad44-d2b13e727992)) (pin "19" (uuid 2caaf612-4336-4a43-8a65-e8fdda9bcef5)) (pin "2" (uuid 211fa85f-0af7-4769-a0c9-4cf6c2f65fff)) (pin "20" (uuid 54eb2138-0e39-4837-aff0-555bb350660d)) (pin "3" (uuid 09a1daef-80ae-447c-8d03-ce7d0f3ffe9d)) (pin "4" (uuid b78dc93b-5d22-459d-97ec-126a55364601)) (pin "5" (uuid b890502f-c25b-4cea-9cbe-bf883ef78d35)) (pin "6" (uuid a3874df5-ba94-4af0-8863-cd24f5c64c94)) (pin "7" (uuid eb022c20-1ebf-4a7e-be43-bd2b30b8d05a)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "U1") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 86.36 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 82ab17f2-3688-4861-be79-7c27176ecfaf) (property "Reference" "D27" (at 88.265 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 86.36 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 86.36 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 86.36 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 698f7a77-0058-4f24-97cf-2164bebf0802)) (pin "2" (uuid a342c9ce-b088-4406-83fa-05803d0016d1)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D27") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 91.44 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 88c589d2-179b-4d69-bd35-98452dadb312) (property "Reference" "S40" (at 91.44 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 91.44 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 91.44 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 91.44 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 037a2275-8c4a-4814-b886-49bb2387c3d1)) (pin "2" (uuid 345e601c-11d0-4927-990d-4b7cbb9485db)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S40") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 91.44 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 8c1ebe62-32c9-475a-852a-126ad80116fa) (property "Reference" "S53" (at 91.44 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 91.44 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 91.44 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 91.44 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 489e5fa2-baae-4d18-886d-097fa3b4914f)) (pin "2" (uuid f14c0506-0af2-4061-b8f1-9e07dff34129)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S53") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 121.92 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 8f694c04-ffd9-4cb8-b92c-24c007961984) (property "Reference" "S3" (at 121.92 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 121.92 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 121.92 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 121.92 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 39654d62-5422-43a9-a7ff-5fa510b2dc57)) (pin "2" (uuid 3c8894b4-d9d3-4021-a5ac-63dd101a5881)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S3") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 86.36 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 909f63df-4189-4f20-9095-5c5955c87efa) (property "Reference" "D1" (at 88.265 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 86.36 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 86.36 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 86.36 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 87f9d8c3-6867-414c-9f15-a8bc16fa4e3a)) (pin "2" (uuid d666913d-13c6-495c-92d0-00dbb75f6002)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D1") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 55.88 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 90d902ec-b0bc-46f4-abc0-43b1a7fe53f7) (property "Reference" "S64" (at 55.88 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 55.88 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 55.88 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 55.88 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d6faabb5-52ef-489d-9c0c-ab2bbe1514c7)) (pin "2" (uuid 3ee6387f-68e3-4687-a309-3c039a309d61)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S64") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 121.92 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 97135508-3301-40ef-8cc6-463de204183c) (property "Reference" "S42" (at 121.92 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 121.92 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 121.92 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 121.92 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 709caec6-5745-428e-af4b-d80d27ec8f6b)) (pin "2" (uuid 776270b9-6717-4800-b681-493231b7a224)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S42") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 147.32 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 9a8a2776-8a61-42ea-a3d7-7d2a2015cf22) (property "Reference" "D18" (at 149.225 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 147.32 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 147.32 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 147.32 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 7ec29e81-10de-488c-9074-70e35744e8c4)) (pin "2" (uuid 24584b85-673f-479b-8c66-02994e224e37)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D18") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 152.4 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid 9d36865d-becd-4c1a-836a-e5cae8d02a36) (property "Reference" "S5" (at 152.4 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 152.4 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 152.4 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 152.4 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d9cc6148-1bf7-49c2-9db6-b357a721d5c9)) (pin "2" (uuid dd8ce6da-eebf-4562-a8b0-33b8ce097380)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S5") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 116.84 130.81 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid a0e0c2ab-893f-480f-be52-989b2fe80245) (property "Reference" "D42" (at 118.745 129.54 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 116.84 134.62 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 116.84 130.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 116.84 129.54 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid c9b8ccab-66d8-4d86-95b5-418e082353ee)) (pin "2" (uuid fcd361d3-dbf1-45e1-91c8-6ed495e72845)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D42") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 121.92 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid a75fc727-0bb1-4740-9f7f-20a737c953ef) (property "Reference" "S16" (at 121.92 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 121.92 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 121.92 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 121.92 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid a7198ea2-c12e-4d34-873d-22cfafbf14ba)) (pin "2" (uuid e731999c-3055-4e62-84e6-388ba96104c9)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S16") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 116.84 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid a919d856-159e-4a04-b6af-270266bf3b78) (property "Reference" "D3" (at 118.745 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 116.84 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 116.84 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 116.84 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 6afbffdc-6e00-44a7-a4cf-e8edc718f3d8)) (pin "2" (uuid 81f9c190-0f94-4928-9b92-9038972921f9)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D3") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 86.36 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid a9a43153-3edc-4f78-9650-ddbd5f7585ff) (property "Reference" "D14" (at 88.265 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 86.36 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 86.36 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 86.36 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 8c1e8e08-6e3a-4b44-bcbe-eb8f3b01ad67)) (pin "2" (uuid 738b959e-5d7a-4e41-8a69-b7cc1fd3134f)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D14") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 55.88 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid ae25119a-9eea-498b-bc1d-67fc4fedf7a2) (property "Reference" "S51" (at 55.88 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 55.88 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 55.88 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 55.88 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 7fde60e5-4736-4c25-b9a9-4bb12495cf1a)) (pin "2" (uuid 1a3cc001-ec63-4b07-86dc-7724348b8507)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S51") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 152.4 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid b9d7faa5-5068-491f-871a-fc22de261872) (property "Reference" "S18" (at 152.4 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 152.4 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 152.4 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 152.4 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid f5f43d7c-4d97-4099-8390-0c52d6a98e50)) (pin "2" (uuid 96a768ff-ff66-40cd-83c3-f0264fc31c71)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S18") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 116.84 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid baa22193-0b64-4e75-b7c3-b6d8f6a9c806) (property "Reference" "D55" (at 118.745 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 116.84 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 116.84 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 116.84 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 4e2538b6-11f2-403c-9240-8f0cd07bd67f)) (pin "2" (uuid a4257be3-5fc0-406f-9eab-4c23499b00ad)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D55") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 76.2 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid bc0101dd-e2ba-460c-a973-2b0d146c175b) (property "Reference" "S0" (at 76.2 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 76.2 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 76.2 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 76.2 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 0d84898c-323d-405c-b330-e697916fd6b6)) (pin "2" (uuid 54a4f166-db51-425c-853b-bd0013c8af7a)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S0") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 152.4 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid c184e113-0178-4e52-a307-02914a11aed4) (property "Reference" "S31" (at 152.4 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 152.4 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 152.4 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 152.4 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 4ae3498d-2b83-43d2-a75f-349e960939f3)) (pin "2" (uuid 0d60fcbd-be90-4eb9-aa92-fdf557e06d40)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S31") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 76.2 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid c25679e5-56a0-4d04-9084-edbbbf04bd71) (property "Reference" "S52" (at 76.2 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 76.2 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 76.2 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 76.2 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 4bec30f5-eb9d-4058-a693-fbdfaa8c66d7)) (pin "2" (uuid b92e16ef-b1f3-43dd-b6ea-e3d878d50d76)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S52") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 152.4 125.73 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid c2bf704e-106c-4294-ae89-8a002e6cb829) (property "Reference" "S44" (at 152.4 122.555 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 152.4 127 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 152.4 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 152.4 125.73 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid b958c187-8a98-4459-b148-cfb913d9788d)) (pin "2" (uuid 93d61503-c297-4a18-8fa9-c398b79ab206)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S44") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 132.08 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid c321e94e-895e-49ad-9de6-b0b02c4f83c9) (property "Reference" "D30" (at 133.985 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 132.08 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 132.08 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 132.08 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid fe6c3fce-0497-4cd0-b35f-f58c8bb85a79)) (pin "2" (uuid 5dbf8c43-3bb1-49d1-9ff0-87b0fff417fe)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D30") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 91.44 111.76 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid c74c460e-f20d-48ff-bd9c-7144fbab5e54) (property "Reference" "S27" (at 91.44 108.585 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 91.44 113.03 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 91.44 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 91.44 111.76 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 49fe714f-a730-49cd-9418-63a702656e71)) (pin "2" (uuid 64b7e558-eb0f-4b7d-be63-9544d15b90e8)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S27") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 101.6 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid c959ccc4-a8c3-483c-a958-8b8eaf10a506) (property "Reference" "D54" (at 103.505 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 101.6 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 101.6 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 101.6 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d840a1f4-627b-426c-98d1-e6e00b464644)) (pin "2" (uuid 2cff66c8-d449-4759-8ce1-fb0d3c238ab5)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D54") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 152.4 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid d0140624-0a84-476b-b1e2-a1d94760041d) (property "Reference" "S57" (at 152.4 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 152.4 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 152.4 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 152.4 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 67655caf-3d80-400c-8cb8-1d1ab510e72d)) (pin "2" (uuid 8c7ddc4d-a6ca-4697-b76a-2a250c35ecdc)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S57") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 50.8 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid df6ac8df-e707-4eae-a41c-ed9d2ce1f30c) (property "Reference" "D38" (at 52.705 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 50.8 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 50.8 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 50.8 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 0132dcea-c183-4b7d-bbb9-809d4b04a365)) (pin "2" (uuid a2cac7f9-a53c-458d-90d3-41a0e9b00cb4)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D38") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 101.6 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid e25dfdc1-be87-4fdb-9259-d74cdc0e7c51) (property "Reference" "D15" (at 103.505 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 101.6 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 101.6 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 101.6 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 493f8f61-f49d-47e2-b123-092e2e0bc320)) (pin "2" (uuid 1038a607-9720-4b47-b907-ee36b876e63a)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D15") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 106.68 83.82 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid e40244e3-def9-42a8-9b1d-61b1998ba5b5) (property "Reference" "S2" (at 106.68 80.645 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 106.68 85.09 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 106.68 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 106.68 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 59a9bf7f-b6ee-4334-84d2-311521185ef8)) (pin "2" (uuid 12d31132-d734-4daf-a8e7-d51159068685)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S2") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 71.12 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid e5e5d73b-7eff-4618-891d-71076f1fa186) (property "Reference" "D13" (at 73.025 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 71.12 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 71.12 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 71.12 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 2c5c19f6-41b8-4c6b-8641-076a54277557)) (pin "2" (uuid 22dbf157-65bf-4d10-b4dc-4c0718e2273c)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D13") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:PinHeader_1x3") (at 186.69 93.98 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid e680d220-7737-42a5-95df-82335e4fe039) (property "Reference" "J2" (at 186.69 92.075 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x3" (at 186.69 100.965 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 186.69 93.98 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 186.69 99.06 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d7c43b25-8202-4002-a688-b3d11e715938)) (pin "2" (uuid 62a74ac1-6126-4bdf-9f9f-5d88baf5c17a)) (pin "3" (uuid c71b3525-f91f-4bb1-83a3-8ab25e15d790)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "J2") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 101.6 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid ebc96ed9-631f-4dde-b3ce-b137deb60c44) (property "Reference" "D2" (at 103.505 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 101.6 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 101.6 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 101.6 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 134dac2b-4ffe-4ce9-a502-4cb6b86a571e)) (pin "2" (uuid 7244252a-68b3-4cc1-8083-df8c8d21cc29)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D2") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 91.44 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid eccc1b09-0ace-4a18-a22d-ff0f4e02ea42) (property "Reference" "S14" (at 91.44 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 91.44 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 91.44 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 91.44 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid dcb1d768-0916-4820-adc3-0c95649489ca)) (pin "2" (uuid b3605312-3746-474a-8c7d-1f586aaf11c6)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S14") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 71.12 116.84 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid eff3cd1a-6506-41e8-97ad-7a126fe81f17) (property "Reference" "D26" (at 73.025 115.57 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 71.12 120.65 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 71.12 116.84 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 71.12 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid dbbd81e0-eaf0-4189-acc0-34ed6d6955e9)) (pin "2" (uuid d96278a5-8803-4d30-8dca-486540443a9c)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D26") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 147.32 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid f12fe510-3f57-4a18-9983-38fdb3e38aba) (property "Reference" "D57" (at 149.225 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 147.32 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 147.32 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 147.32 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 37fc2de8-ddd2-4923-ab6b-17a07297d324)) (pin "2" (uuid 4aa5816a-f185-4236-9bb3-b2c4fcafd2fd)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D57") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 86.36 144.78 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid f350615a-eec9-4027-9858-77f5dc2357e9) (property "Reference" "D53" (at 88.265 143.51 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 86.36 148.59 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 86.36 144.78 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 86.36 143.51 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d37c05c7-9d57-46cf-a71c-c17dbc806c94)) (pin "2" (uuid e67c6cc9-75b1-462d-902a-7db277ecab6a)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D53") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 121.92 139.7 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid f6964d40-d601-4c90-b873-dfc2fbc22836) (property "Reference" "S55" (at 121.92 136.525 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 121.92 140.97 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 121.92 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 121.92 139.7 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid db2e2158-8586-49e6-bc60-51524d003ec1)) (pin "2" (uuid 3159a2ba-58ca-4fbe-8a8a-38e850f6d8c3)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S55") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:PinHeader_1x3") (at 186.69 60.96 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid f87eb064-1cab-4c81-931f-96ede13e01a7) (property "Reference" "J3" (at 186.69 59.055 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x3" (at 186.69 67.945 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 186.69 60.96 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 186.69 66.04 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 3ae548f8-8d4d-4151-85c8-9bedd662bf3e)) (pin "2" (uuid f4f8ea07-3d3b-4281-b7dc-067e91f3a837)) (pin "3" (uuid 39cbf578-ae69-4018-9a91-27ad4f0cf27c)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "J3") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 76.2 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid f8c2febf-adc9-49bb-b797-1d0ffcd53719) (property "Reference" "S13" (at 76.2 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 76.2 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 76.2 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 76.2 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid cefd152f-da7f-43c8-a6fe-43e52a2d479d)) (pin "2" (uuid 212e8ae5-a785-445c-9901-8b5d86a60dd6)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S13") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 132.08 102.87 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid f9833a1d-c43b-4717-bf43-1817029f6343) (property "Reference" "D17" (at 133.985 101.6 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 132.08 106.68 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 132.08 102.87 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 132.08 101.6 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid adece95e-aede-4774-9063-c9439f97389c)) (pin "2" (uuid 4dcb01a3-444b-4c61-8b0e-8b9eb43f1f95)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D17") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Switch") (at 137.16 97.79 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid fcf19f1e-dfbe-47c1-b3be-7f9056068244) (property "Reference" "S17" (at 137.16 94.615 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 137.16 99.06 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 137.16 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 137.16 97.79 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 5967c03f-ae62-4da5-ae55-fe166b15dd3d)) (pin "2" (uuid 0a4b9e75-af7f-4c06-b96e-4807f6109984)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "S17") (unit 1) ) ) ) ) (symbol (lib_id "chrumm:Diode") (at 132.08 88.9 0) (unit 1) (in_bom yes) (on_board yes) (dnp no) (uuid ffba129e-9b68-485f-9070-aefc0e7aff3e) (property "Reference" "D4" (at 133.985 87.63 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 132.08 92.71 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 132.08 88.9 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 132.08 87.63 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid f75cd0f5-8e25-4196-866b-6b33067fb337)) (pin "2" (uuid b60f66b4-4d6f-4f8f-a474-a1c8c3c36c40)) (instances (project "chrumm" (path "/d33cdf19-4d42-4aea-8152-27b13651402a" (reference "D4") (unit 1) ) ) ) ) (sheet_instances (path "/" (page "1")) ) ) ================================================ FILE: pcb/chrumm/chrumm.kicad_sym ================================================ (kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor) (symbol "Diode" (pin_numbers hide) (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "D?" (at 1.905 1.27 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "Diode" (at 0 -3.81 0) (effects (font (size 1.27 1.27)) hide) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 1.27 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "Diode_0_1" (polyline (pts (xy -1.27 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0 0) (xy -1.27 2.54) (xy 1.27 2.54) (xy 0 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (pin passive line (at 0 -2.54 90) (length 2.54) (name "K" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 0 5.08 270) (length 2.54) (name "A" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "PinHeader_1x2" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "J?" (at 0 1.905 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x2" (at 0 -4.445 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 -5.08 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "PinHeader_1x2_0_1" (rectangle (start -1.27 1.27) (end 1.27 -3.81) (stroke (width 0.254) (type default)) (fill (type none)) ) (rectangle (start -0.635 0.635) (end 0.635 -0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -2.54) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -2.54) (xy 1.27 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) ) (symbol "PinHeader_1x2_1_1" (pin passive line (at 3.81 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -2.54 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "PinHeader_1x3" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "J?" (at 0 1.905 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x3" (at 0 -6.985 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 -5.08 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "PinHeader_1x3_0_1" (rectangle (start -1.27 1.27) (end 1.27 -6.35) (stroke (width 0.254) (type default)) (fill (type none)) ) (rectangle (start -0.635 0.635) (end 0.635 -0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -5.08) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -2.54) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -5.08) (xy 1.27 -5.08) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -2.54) (xy 1.27 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) ) (symbol "PinHeader_1x3_1_1" (pin passive line (at 3.81 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -2.54 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -5.08 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "PinHeader_1x5" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "J?" (at 0 1.905 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "PinHeader_1x5" (at 0 -12.065 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 -5.08 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "PinHeader_1x5_0_1" (rectangle (start -1.27 1.27) (end 1.27 -11.43) (stroke (width 0.254) (type default)) (fill (type none)) ) (rectangle (start -0.635 0.635) (end 0.635 -0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -10.16) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -7.62) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -5.08) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 -2.54) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -10.16) (xy 1.27 -10.16) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -7.62) (xy 1.27 -7.62) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -5.08) (xy 1.27 -5.08) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 -2.54) (xy 1.27 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0.635 0) (xy 1.27 0) ) (stroke (width 0) (type default)) (fill (type none)) ) ) (symbol "PinHeader_1x5_1_1" (pin passive line (at 3.81 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -2.54 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -5.08 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -7.62 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "4" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 3.81 -10.16 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "5" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "RPi_Pico" (in_bom yes) (on_board yes) (property "Reference" "U?" (at 0 27.305 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RPi_Pico" (at 0 -27.305 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 90) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "RPi_Pico_1_0" (text "Pico" (at 0 -1.27 0) (effects (font (size 2.54 2.54))) ) (text "RaspberryPi" (at 0 2.54 0) (effects (font (size 1.27 1.27))) ) ) (symbol "RPi_Pico_1_1" (rectangle (start -12.7 26.67) (end 12.7 -26.67) (stroke (width 0.254) (type default)) (fill (type none)) ) (pin bidirectional line (at -16.51 24.13 0) (length 3.81) (name "GP0" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 1.27 0) (length 3.81) (name "GP7" (effects (font (size 1.27 1.27)))) (number "10" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -1.27 0) (length 3.81) (name "GP8" (effects (font (size 1.27 1.27)))) (number "11" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -3.81 0) (length 3.81) (name "GP9" (effects (font (size 1.27 1.27)))) (number "12" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at -16.51 -6.35 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "13" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) (name "GP10" (effects (font (size 1.27 1.27)))) (number "14" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) (name "GP11" (effects (font (size 1.27 1.27)))) (number "15" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) (name "GP12" (effects (font (size 1.27 1.27)))) (number "16" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) (name "GP13" (effects (font (size 1.27 1.27)))) (number "17" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at -16.51 -19.05 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "18" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) (name "GP14" (effects (font (size 1.27 1.27)))) (number "19" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 21.59 0) (length 3.81) (name "GP1" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) (name "GP15" (effects (font (size 1.27 1.27)))) (number "20" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -24.13 180) (length 3.81) (name "GP16" (effects (font (size 1.27 1.27)))) (number "21" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -21.59 180) (length 3.81) (name "GP17" (effects (font (size 1.27 1.27)))) (number "22" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at 16.51 -19.05 180) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "23" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -16.51 180) (length 3.81) (name "GP18" (effects (font (size 1.27 1.27)))) (number "24" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -13.97 180) (length 3.81) (name "GP19" (effects (font (size 1.27 1.27)))) (number "25" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -11.43 180) (length 3.81) (name "GP20" (effects (font (size 1.27 1.27)))) (number "26" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -8.89 180) (length 3.81) (name "GP21" (effects (font (size 1.27 1.27)))) (number "27" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at 16.51 -6.35 180) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "28" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 -3.81 180) (length 3.81) (name "GP22" (effects (font (size 1.27 1.27)))) (number "29" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at -16.51 19.05 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) (pin input line (at 16.51 -1.27 180) (length 3.81) (name "RUN" (effects (font (size 1.27 1.27)))) (number "30" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 1.27 180) (length 3.81) (name "ADC0" (effects (font (size 1.27 1.27)))) (number "31" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 3.81 180) (length 3.81) (name "ADC1" (effects (font (size 1.27 1.27)))) (number "32" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at 16.51 6.35 180) (length 3.81) (name "AGND" (effects (font (size 1.27 1.27)))) (number "33" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at 16.51 8.89 180) (length 3.81) (name "ADC2" (effects (font (size 1.27 1.27)))) (number "34" (effects (font (size 1.27 1.27)))) ) (pin unspecified line (at 16.51 11.43 180) (length 3.81) (name "AREF" (effects (font (size 1.27 1.27)))) (number "35" (effects (font (size 1.27 1.27)))) ) (pin unspecified line (at 16.51 13.97 180) (length 3.81) (name "3V3" (effects (font (size 1.27 1.27)))) (number "36" (effects (font (size 1.27 1.27)))) ) (pin input line (at 16.51 16.51 180) (length 3.81) (name "3V3EN" (effects (font (size 1.27 1.27)))) (number "37" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at 16.51 19.05 180) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "38" (effects (font (size 1.27 1.27)))) ) (pin unspecified line (at 16.51 21.59 180) (length 3.81) (name "VSYS" (effects (font (size 1.27 1.27)))) (number "39" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 16.51 0) (length 3.81) (name "GP2" (effects (font (size 1.27 1.27)))) (number "4" (effects (font (size 1.27 1.27)))) ) (pin unspecified line (at 16.51 24.13 180) (length 3.81) (name "VBUS" (effects (font (size 1.27 1.27)))) (number "40" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 13.97 0) (length 3.81) (name "GP3" (effects (font (size 1.27 1.27)))) (number "5" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 11.43 0) (length 3.81) (name "GP4" (effects (font (size 1.27 1.27)))) (number "6" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 8.89 0) (length 3.81) (name "GP5" (effects (font (size 1.27 1.27)))) (number "7" (effects (font (size 1.27 1.27)))) ) (pin power_in line (at -16.51 6.35 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "8" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 3.81 0) (length 3.81) (name "GP6" (effects (font (size 1.27 1.27)))) (number "9" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "RPi_Pico_Custom" (in_bom yes) (on_board yes) (property "Reference" "U?" (at 0 27.305 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RPi_Pico_Custom" (at 0 -27.305 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 90) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "RPi_Pico_Custom_1_0" (text "Pico" (at 0 -1.27 0) (effects (font (size 2.54 2.54))) ) (text "RaspberryPi" (at 0 2.54 0) (effects (font (size 1.27 1.27))) ) ) (symbol "RPi_Pico_Custom_1_1" (rectangle (start -12.7 26.67) (end 12.7 -26.67) (stroke (width 0.254) (type default)) (fill (type none)) ) (pin bidirectional line (at -16.51 24.13 0) (length 3.81) (name "GP0" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -1.27 0) (length 3.81) (name "GP8" (effects (font (size 1.27 1.27)))) (number "11" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -3.81 0) (length 3.81) (name "GP9" (effects (font (size 1.27 1.27)))) (number "12" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "13" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) (name "GP10" (effects (font (size 1.27 1.27)))) (number "14" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) (name "GP11" (effects (font (size 1.27 1.27)))) (number "15" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) (name "GP12" (effects (font (size 1.27 1.27)))) (number "16" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) (name "GP13" (effects (font (size 1.27 1.27)))) (number "17" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "18" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) (name "GP14" (effects (font (size 1.27 1.27)))) (number "19" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 21.59 0) (length 3.81) (name "GP1" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) (name "GP15" (effects (font (size 1.27 1.27)))) (number "20" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 19.05 0) (length 3.81) (name "GND" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 16.51 0) (length 3.81) (name "GP2" (effects (font (size 1.27 1.27)))) (number "4" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 13.97 0) (length 3.81) (name "GP3" (effects (font (size 1.27 1.27)))) (number "5" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 11.43 0) (length 3.81) (name "GP4" (effects (font (size 1.27 1.27)))) (number "6" (effects (font (size 1.27 1.27)))) ) (pin bidirectional line (at -16.51 8.89 0) (length 3.81) (name "GP5" (effects (font (size 1.27 1.27)))) (number "7" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "RotaryEncoder_Switch" (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "E?" (at 0 5.715 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "RotaryEncoder_Switch" (at 0 -9.525 0) (effects (font (size 1.27 1.27)) (justify top)) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "RotaryEncoder_Switch_1_1" (rectangle (start -5.08 5.08) (end 5.08 -5.08) (stroke (width 0.254) (type default)) (fill (type none)) ) (circle (center -3.81 -2.54) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center -3.81 -1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center -3.81 1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center -3.81 2.54) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -5.08 -2.54) (xy -4.1148 -2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -5.08 0) (xy -3.81 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -5.08 2.54) (xy -4.1148 2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -3.81 0.9652) (xy -3.81 -0.9652) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -3.556 -1.524) (xy -2.6416 -2.4384) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy -3.556 1.524) (xy -2.6416 2.4384) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 3.048 0) (xy 2.54 0) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 3.048 1.524) (xy 3.048 -1.524) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 5.08 -2.54) (xy 3.81 -2.54) (xy 3.81 -1.5748) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 5.08 2.54) (xy 3.81 2.54) (xy 3.81 1.5748) ) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 0 0) (radius 1.905) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 3.81 -1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 3.81 1.27) (radius 0.3048) (stroke (width 0) (type default)) (fill (type none)) ) (pin passive line (at 7.62 2.54 180) (length 2.54) (name "1" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at 7.62 -2.54 180) (length 2.54) (name "2" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -7.62 2.54 0) (length 2.54) (name "A" (effects (font (size 1.27 1.27)))) (number "A" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -7.62 -2.54 0) (length 2.54) (name "B" (effects (font (size 1.27 1.27)))) (number "B" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -7.62 0 0) (length 2.54) (name "C" (effects (font (size 1.27 1.27)))) (number "C" (effects (font (size 1.27 1.27)))) ) (pin no_connect line (at 0 -8.89 90) (length 3.81) (name "MountPin" (effects (font (size 1.27 1.27)))) (number "MP" (effects (font (size 1.27 1.27)))) ) ) ) (symbol "Switch" (pin_numbers hide) (pin_names hide) (in_bom yes) (on_board yes) (property "Reference" "S?" (at 0 3.175 0) (effects (font (size 1.27 1.27)) (justify bottom)) ) (property "Value" "Switch" (at 0 -1.27 0) (effects (font (size 1.27 1.27)) (justify top) hide) ) (property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide) ) (symbol "Switch_1_1" (circle (center -1.905 0) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 0 1.27) (xy 0 2.54) ) (stroke (width 0) (type default)) (fill (type none)) ) (polyline (pts (xy 2.54 1.27) (xy -2.54 1.27) ) (stroke (width 0) (type default)) (fill (type none)) ) (circle (center 1.905 0) (radius 0.635) (stroke (width 0) (type default)) (fill (type none)) ) (pin passive line (at 5.08 0 180) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) ) (pin passive line (at -5.08 0 0) (length 2.54) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) ) ) ) ) ================================================ FILE: pcb/chrumm/chrumm.kicad_wks ================================================ (kicad_wks (version 20220228) (generator pl_editor) (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15) (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10)) (rect (name "") (start 2 2) (end 2 2 ltcorner)) (rect (name "") (start 90 20) (end 2 2)) (tbtext "${TITLE}" (name "") (pos 89 17) (font (size 2.2 2.2) bold)) (tbtext "Version:" (name "") (pos 16 16) (justify right)) (tbtext "${REVISION}" (name "") (pos 9 17) (font (size 2.2 2.2) bold) (justify center)) (line (name "") (start 90 14) (end 2 14)) (tbtext "${COMMENT1}" (name "") (pos 89 11.75)) (tbtext "${COMMENT2}" (name "") (pos 89 8.25)) (line (name "") (start 90 6) (end 2 6)) (tbtext "Size: ${PAPER}" (name "") (pos 89 4)) (line (name "") (start 65 6) (end 65 2)) (tbtext "Sheet: ${#} of ${##}" (name "") (pos 64 4)) (line (name "") (start 40 6) (end 40 2)) (tbtext "${KICAD_VERSION}" (name "") (pos 3 4) (justify right)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Diode_1N4148_P7.6mm.kicad_mod ================================================ (footprint "Diode_1N4148_P7.6mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole) (fp_text reference "REF**" (at 0.5 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp ee86d068-d2ef-4fda-b9c0-9b4714a6aaed) ) (fp_text value "Diode_1N4148_P7.6mm" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp c81612ae-d00a-4574-aa22-3262466ab838) ) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 3d81e2c4-83fe-4f50-9dea-ea4abbd89154)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 50cb8117-bfc4-4677-867b-ac28a7b82b02)) (fp_line (start -1.1 0.9) (end -1.1 -0.9) (stroke (width 0.4) (type solid)) (layer "B.SilkS") (tstamp 3791b7e3-fdec-47bf-b3c7-d98ce5171dd2)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp f2f5f8ca-1c6d-478f-98bc-16865f2dd7a6)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 4a0b6eb1-eec7-4d1a-be4c-7a718a6f04a4)) (fp_line (start -5 0.55) (end -5 -0.55) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e3a336dc-68be-4ce8-b76f-503e65d2a6e4)) (fp_line (start -2.65 0) (end -2 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp cd2bcb07-ceee-4019-a967-bc7f07c52241)) (fp_line (start -1.1 -0.9) (end -1.1 0.9) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 01ec022c-7d0b-46a2-9717-e18b91866100)) (fp_line (start 2 0) (end 2.65 0) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3c2b6432-109c-4954-a74f-db5a8340c70f)) (fp_poly (pts (arc (start 2 -0.7) (mid 1.912132 -0.912132) (end 1.7 -1)) (arc (start -1.7 -1) (mid -1.912132 -0.912132) (end -2 -0.7)) (arc (start -2 0.7) (mid -1.912132 0.912132) (end -1.7 1)) (arc (start 1.7 1) (mid 1.912132 0.912132) (end 2 0.7)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 8d41c21a-1caa-4188-bb0f-57f8ebfe388c)) (fp_rect (start -5 -1.25) (end 5 1.25) (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp a6e96c05-8392-47d4-b242-672594332cd7)) (fp_line (start -1.1 -1) (end -1.1 1) (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a984c97c-87bf-436a-bb4a-07c0d3008a33)) (fp_rect (start -2 -1) (end 2 1) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 18f34edb-a742-4363-aa01-534e91cde250)) (pad "1" thru_hole roundrect (at -3.8 0) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (tstamp c8ec2905-9c88-41b3-bdad-96cd487bb273)) (pad "2" thru_hole circle (at 3.8 0) (size 1.5 1.5) (drill 0.8) (layers "*.Cu" "*.Mask") (tstamp 889abe86-fd62-4b3e-8a3c-1996975adf22)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Graphic_CHRUMM.kicad_mod ================================================ (footprint "Graphic_CHRUMM" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp bf0efda9-0d17-4e64-87f3-442206b1b89c) ) (fp_text value "Graphic_CHRUMM" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 873a08d0-2de9-4902-8f65-28715ef8241b) ) (fp_text user "${REVISION}" (at 0 2.9 unlocked) (layer "F.SilkS") (effects (font (size 1.8 1.8) (thickness 0.25))) (tstamp be8d396b-6988-4185-bce1-663c7b658672) ) (fp_line (start -9.01 -2.22) (end -9.41 0.98) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 765e2e3d-9b17-4247-88fe-665a4a66ef16)) (fp_line (start -8 -0.6) (end -8 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp cc32c380-52d0-4c8b-b6fd-715119a777b1)) (fp_line (start -5.3 -1.6) (end -5.3 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 1ef9da1f-90a6-4197-9ef1-e1ef7ae3e372)) (fp_line (start -5.3 -0.4) (end -3.7 -0.4) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f6ee1506-dc6a-464c-a727-09387eca13c3)) (fp_line (start -4.8 -3.1) (end -8.02 -3.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp daaf4625-e4c4-4737-8af5-6499d630e321)) (fp_line (start -4.26 3.18) (end -8.66 2.08) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 89773eb5-e167-4f77-97de-d671ef552d82)) (fp_line (start -3.7 -1.6) (end -3.7 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp b854dda6-4014-4b83-b326-f96c9d12cb32)) (fp_line (start -3.5 -3.75) (end -3.15 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5f7a4f27-8d0b-4ef4-8020-1a6cc9392ac2)) (fp_line (start -3.5 -3.25) (end -3.3 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 75f8022e-a53b-45c3-a98c-62778962cd2a)) (fp_line (start -3.3 -2.75) (end -3.7 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0bdddde5-1174-4559-bee9-ac96798c762b)) (fp_line (start -2.6 -1.6) (end -2.6 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f19f3732-6ccd-4879-b748-8c81ea0f9a49)) (fp_line (start -2.6 -0.2) (end -1.7 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp f44689a5-5f61-4f1c-bea5-6170d34b073a)) (fp_line (start -2.55 -3.5) (end -2.55 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2a5a8ba8-7e1f-457b-afba-bae1feda110d)) (fp_line (start -2.55 -3.25) (end -1.8 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5cf26c4e-5263-4dd6-b6ed-bcbef358e5a2)) (fp_line (start -2.3 -3.75) (end -2.05 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e83b82e9-3c2f-4b69-973a-c5ec77ff185d)) (fp_line (start -2.3 -2.75) (end -1.85 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 528a7ec2-4da1-4324-aaf4-2e98d49cc692)) (fp_line (start -1.8 -3.5) (end -1.8 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 1ee51c28-a833-4fc5-92c8-c2ecc7868982)) (fp_line (start -1.7 -1.6) (end -2.6 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 9291900a-453e-4f82-af1b-98f5562c7f31)) (fp_line (start -1.7 -0.2) (end -1 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp c7c66b24-c518-493d-a6b5-83aa184a90b6)) (fp_line (start -1.35 -3.75) (end -1 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bfe3d0fc-5b5c-4a23-b17f-aa37bf7f20b0)) (fp_line (start -1 -2.75) (end -0.9 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c8847d37-a282-4518-ab6b-1fb2a6ad3777)) (fp_line (start -0.9 -2.75) (end -0.55 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 334412b4-6a2f-4967-94b2-53fb889ad0e1)) (fp_line (start 0 -1.6) (end 0 0) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 1cd71e1b-c0d1-423f-970a-95de9e4165c8)) (fp_line (start 0.5 -3.5) (end 0.5 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8ceb2837-4414-4750-ab50-730331e1eec8)) (fp_line (start 0.75 -3.75) (end 1.25 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 22a7b049-0922-4d5f-9421-4495ceff9518)) (fp_line (start 1.25 -4.25) (end 1.25 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e67c6493-ba22-454b-92e5-52fcdc698c5d)) (fp_line (start 1.25 -2.75) (end 0.75 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 08c266d6-a132-4242-bd74-32b15166ef1d)) (fp_line (start 1.6 -1.6) (end 1.6 0) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 39e15d01-7863-471c-ad71-eaf690eacd83)) (fp_line (start 1.85 -3.5) (end 1.85 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0c50468c-0cc8-4a03-934e-a46d31df799b)) (fp_line (start 1.85 -3.25) (end 2.6 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c30b1cbe-cb1f-43d3-b168-607c5d7d4f14)) (fp_line (start 2.1 -3.75) (end 2.35 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d2ca5a67-21f8-4c76-a236-e9982d1d6c35)) (fp_line (start 2.1 -2.75) (end 2.55 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 221da180-b918-4d51-b82f-547c53624ea3)) (fp_line (start 2.6 -3.5) (end 2.6 -3.25) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0eb836c7-2a8a-40ee-a2bd-efade6739906)) (fp_line (start 2.7 -1.6) (end 2.7 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 5418a99d-d6f4-4409-b37f-ba5703fd582c)) (fp_line (start 3.05 -3.75) (end 3.4 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp e418b994-1fc8-4a46-abed-107e2c682632)) (fp_line (start 3.4 -2.75) (end 3.5 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 3f0d98eb-3fda-4731-9a2c-b0fd769bb2ff)) (fp_line (start 3.5 -2.75) (end 3.85 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f4f573b5-148a-42c5-9ed6-3ffd57447100)) (fp_line (start 3.7 -0.1) (end 2.7 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 91a6716c-6de4-44f2-bedc-dfa47b565cd4)) (fp_line (start 4.26 3.18) (end 8.66 2.08) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp b37376ed-9cb5-41ac-b08f-d0a41644adb3)) (fp_line (start 4.7 -1.6) (end 3.7 -0.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp fe58ca15-4a62-4723-8dfd-708e8d10eb4e)) (fp_line (start 4.7 0.8) (end 4.7 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp c83dbeb5-61c8-46da-a7aa-fd0100e0d822)) (fp_line (start 4.8 -3.1) (end 8.02 -3.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp cb188ef4-8157-42ab-b55f-e43bb42bfdb5)) (fp_line (start 5.8 -1.6) (end 5.8 0.8) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp ef968665-7a43-4bb2-a07b-2c91babd8338)) (fp_line (start 6.8 -0.1) (end 5.8 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp b4c1efae-3ee1-4bbf-8ed7-4bc54ada3291)) (fp_line (start 7.8 -1.6) (end 6.8 -0.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 543698cb-04de-456c-8405-478de67b8016)) (fp_line (start 7.8 0.8) (end 7.8 -1.6) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 8fdfe0af-27c1-45ed-98b8-cd408fb6993a)) (fp_line (start 9.01 -2.22) (end 9.41 0.98) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp dcf02134-7037-4ac6-b4fc-76aad4961f99)) (fp_arc (start -9.01 -2.22) (mid -8.681 -2.847) (end -8.02 -3.1) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp c7ee4533-3fba-4e21-aaf7-3dca3524ac9a)) (fp_arc (start -8.66 2.08) (mid -9.244 1.672) (end -9.41 0.98) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 82bb88b2-6db1-495b-9c50-c6edd0147bae)) (fp_arc (start -8 -0.6) (mid -7.383 -1.524) (end -6.293 -1.307) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 128f6d8b-3038-4f1c-bbf1-45fb04666621)) (fp_arc (start -6.293 0.507) (mid -7.383 0.724) (end -8 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 176906eb-89a9-4701-95d9-508efaa4480c)) (fp_arc (start -3.5 -3.25) (mid -3.75 -3.5) (end -3.5 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5baec8dd-8a8f-4279-aa63-56cff47a947a)) (fp_arc (start -3.3 -3.25) (mid -3.05 -3) (end -3.3 -2.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp debe8eb9-3e26-4171-924f-37c4b574ee39)) (fp_arc (start -2.55 -3.5) (mid -2.477 -3.677) (end -2.3 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ebd329c1-5c08-44f6-ad73-1d75710ce8eb)) (fp_arc (start -2.3 -2.75) (mid -2.477 -2.823) (end -2.55 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 6d6b321f-9ed5-4c9f-83ee-659772badb9b)) (fp_arc (start -2.05 -3.75) (mid -1.873 -3.677) (end -1.8 -3.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp db795f8f-f725-4015-8152-96d913c1580a)) (fp_arc (start -1.7 -1.6) (mid -1 -0.9) (end -1.7 -0.2) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 24d89d3e-9fec-420b-9f52-bc010e2dddec)) (fp_arc (start 0.5 -3.5) (mid 0.573 -3.677) (end 0.75 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8da78f64-2042-4197-9376-b02a149db3ad)) (fp_arc (start 0.75 -2.75) (mid 0.573 -2.823) (end 0.5 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 9be044e6-4ab3-4b80-bf41-bcd145f0af0d)) (fp_arc (start 1.6 0) (mid 0.8 0.8) (end 0 0) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 6ccb9203-e40f-4d2c-993b-a7f9b2bb8d4e)) (fp_arc (start 1.85 -3.5) (mid 1.923 -3.677) (end 2.1 -3.75) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 22a3daf4-ca46-4df4-84d0-bdd7e940bbd2)) (fp_arc (start 2.1 -2.75) (mid 1.923 -2.823) (end 1.85 -3) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp da7ec2c4-3478-4bdd-b533-db2e4aa038b6)) (fp_arc (start 2.35 -3.75) (mid 2.527 -3.677) (end 2.6 -3.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b5b391ce-4b56-470f-b583-75e605a5c55d)) (fp_arc (start 8.02 -3.1) (mid 8.681 -2.847) (end 9.01 -2.22) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp c21118fb-f61c-4b66-aec0-f71d51682c87)) (fp_arc (start 9.41 0.98) (mid 9.244 1.672) (end 8.66 2.08) (stroke (width 0.4) (type solid)) (layer "F.SilkS") (tstamp 0cd36af3-a19c-4b5f-a35a-44144e19c3c6)) (fp_circle (center -0.1 -2.8) (end 0.08 -2.8) (stroke (width 0) (type solid)) (fill solid) (layer "F.SilkS") (tstamp b8eb5afe-65ec-48e5-9eeb-5a1a7899dde6)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Graphic_Hi.kicad_mod ================================================ (footprint "Graphic_Hi" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 2315b6d7-8b6e-4997-8957-815102b0427e) ) (fp_text value "Graphic_Hi" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 96c75e52-965a-4d4f-82d6-3325d73332f3) ) (fp_line (start -1.4 0.7) (end -1.4 -0.8) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f90712e2-4d92-4868-8495-61176d1c8bcd)) (fp_line (start -1.4 0.7) (end -1.1 1.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 46aafd2c-29db-4c84-b1a7-4212bcdb7591)) (fp_line (start -0.9 -0.1) (end -0.9 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 5ae576d5-65b0-4db0-9149-e8e7787e1aed)) (fp_line (start -0.3 -0.3) (end -0.3 -1.6) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 29c8a2d7-4a14-487e-863a-6ffcc8bfab2d)) (fp_line (start 0.3 -0.3) (end 0.3 -1.6) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp c724e805-b216-445b-8abf-e997a25814ee)) (fp_line (start 0.9 0.55) (end 0.9 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp aa438112-2837-421a-b069-7ec40c0c2ba2)) (fp_line (start 0.9 0.55) (end 1.26 -0.17) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp dc80265b-b849-4910-9b3e-bafabd3193a6)) (fp_line (start 1.1 1.5) (end -1.1 1.5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ee0ea997-4cfb-4cc5-87ca-ab45b1d62a29)) (fp_line (start 1.1 1.5) (end 1.8 0.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b2354939-a345-4e2e-a946-2944fdd26104)) (fp_line (start 1.9 -2.6) (end 1.9 -1.2) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp fe3f4bfd-e4cf-4b71-b27d-aec68f4b5ac1)) (fp_line (start 2.8 -2.6) (end 2.8 -1.2) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b9275415-ef14-4877-9bad-b4c16a49fd9d)) (fp_line (start 2.8 -1.9) (end 1.9 -1.9) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp b3ead6a4-3edc-47a8-992b-04310370aa98)) (fp_line (start 3.5 -2) (end 3.5 -1.2) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4e7cfdc5-81a0-4d73-96c8-1ae45895383b)) (fp_arc (start -1.4 -0.8) (mid -1.15 -1.05) (end -0.9 -0.8) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2bf72d29-ce59-49a0-91b1-71085137b52b)) (fp_arc (start -0.9 -1.4) (mid -0.6 -1.7) (end -0.3 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bf5bd563-f820-4aac-bf4c-a7fe4ca723be)) (fp_arc (start -0.3 -1.6) (mid 0 -1.9) (end 0.3 -1.6) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 056fe780-1e36-429d-a37a-91668c515d8f)) (fp_arc (start 0.3 -1.4) (mid 0.6 -1.7) (end 0.9 -1.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 70e15c99-67ff-4145-a667-0132ca4305e2)) (fp_arc (start 1.26 -0.17) (mid 1.665 -0.305) (end 1.8 0.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 7f81e89a-1454-4062-88b1-f5c664037aef)) (fp_circle (center 3.5 -2.55) (end 3.65 -2.55) (stroke (width 0) (type solid)) (fill solid) (layer "F.SilkS") (tstamp f0dc62b7-8a46-43e5-b7a3-534aaa9e14de)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Graphic_OSHW.kicad_mod ================================================ (footprint "Graphic_OSHW" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp f50cd875-ad61-4c78-ac8d-eee39512d049) ) (fp_text value "Graphic_OSHW" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a0f6403e-976f-4af5-ba62-8ec7d1aa5e2d) ) (fp_poly (pts (arc (start -0.287 0.693) (mid 0 -0.75) (end 0.287 0.693)) (xy 0.711 1.717) (xy 0.938 1.624) (xy 1.522 1.983) (xy 1.983 1.522) (xy 1.624 0.938) (xy 1.811 0.485) (xy 2.479 0.326) (xy 2.479 -0.326) (xy 1.811 -0.485) (xy 1.624 -0.937) (xy 1.983 -1.522) (xy 1.522 -1.983) (xy 0.938 -1.624) (xy 0.485 -1.811) (xy 0.326 -2.479) (xy -0.326 -2.479) (xy -0.485 -1.811) (xy -0.937 -1.624) (xy -1.522 -1.983) (xy -1.983 -1.522) (xy -1.624 -0.937) (xy -1.811 -0.485) (xy -2.479 -0.326) (xy -2.479 0.326) (xy -1.811 0.485) (xy -1.624 0.938) (xy -1.983 1.522) (xy -1.522 1.983) (xy -0.937 1.624) (xy -0.711 1.717) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 17630f05-b624-4a8d-8ef6-126f5dac56dd)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/MountingHole_M3.kicad_mod ================================================ (footprint "MountingHole_M3" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp f65bf68f-54b7-409d-9561-02d5608a290d) ) (fp_text value "MountingHole_M3" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 8b2294c3-41c4-4e38-8541-18f15460c70f) ) (fp_circle (center 0 0) (end 3 0) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 394de891-859c-4c7b-baff-1cb1931575fc)) (pad "" np_thru_hole circle (at 0 0) (size 3.2 3.2) (drill 3.2) (layers "*.Cu" "*.Mask") (tstamp 05799cea-d7b2-4fad-a3ea-69fa2f3f99fd)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/MouseBites_1x3_P0.9mm.kicad_mod ================================================ (footprint "MouseBites_1x3_P0.9mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 658e956d-b5b2-4794-8b25-9320e5f50fe5) ) (fp_text value "MouseBites_1x3_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 37079fb6-4e82-409b-954c-b2cd8fed364f) ) (pad "" np_thru_hole circle (at -0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2abee5e4-bdce-4c99-8e6c-abdda37adfcb)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp fd6fec20-1bb2-46d9-a541-c84b7cfef6ed)) (pad "" np_thru_hole circle (at 0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 260b6e6f-f317-4b38-b989-9bb178a20d29)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/MouseBites_1x3_P1.35mm.kicad_mod ================================================ (footprint "MouseBites_1x3_P1.35mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 658e956d-b5b2-4794-8b25-9320e5f50fe5) ) (fp_text value "MouseBites_1x3_P1.35mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 37079fb6-4e82-409b-954c-b2cd8fed364f) ) (pad "" np_thru_hole circle (at -1.35 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2abee5e4-bdce-4c99-8e6c-abdda37adfcb)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp fd6fec20-1bb2-46d9-a541-c84b7cfef6ed)) (pad "" np_thru_hole circle (at 1.35 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 260b6e6f-f317-4b38-b989-9bb178a20d29)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/MouseBites_1x4_P0.9mm.kicad_mod ================================================ (footprint "MouseBites_1x4_P0.9mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 658e956d-b5b2-4794-8b25-9320e5f50fe5) ) (fp_text value "MouseBites_1x4_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 37079fb6-4e82-409b-954c-b2cd8fed364f) ) (pad "" np_thru_hole circle (at -1.35 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 5f419349-8a78-42e0-b731-775029af3a9d)) (pad "" np_thru_hole circle (at -0.45 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2abee5e4-bdce-4c99-8e6c-abdda37adfcb)) (pad "" np_thru_hole circle (at 0.45 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp fd6fec20-1bb2-46d9-a541-c84b7cfef6ed)) (pad "" np_thru_hole circle (at 1.35 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 260b6e6f-f317-4b38-b989-9bb178a20d29)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/MouseBites_1x5_P0.9mm.kicad_mod ================================================ (footprint "MouseBites_1x5_P0.9mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 658e956d-b5b2-4794-8b25-9320e5f50fe5) ) (fp_text value "MouseBites_1x5_P0.9mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 37079fb6-4e82-409b-954c-b2cd8fed364f) ) (pad "" np_thru_hole circle (at -1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 5f419349-8a78-42e0-b731-775029af3a9d)) (pad "" np_thru_hole circle (at -0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2abee5e4-bdce-4c99-8e6c-abdda37adfcb)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp fd6fec20-1bb2-46d9-a541-c84b7cfef6ed)) (pad "" np_thru_hole circle (at 0.9 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 260b6e6f-f317-4b38-b989-9bb178a20d29)) (pad "" np_thru_hole circle (at 1.8 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 86d02ce0-54d8-44f3-ba70-242331adbb42)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/MouseBites_1x5_P1.35mm.kicad_mod ================================================ (footprint "MouseBites_1x5_P1.35mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 658e956d-b5b2-4794-8b25-9320e5f50fe5) ) (fp_text value "MouseBites_1x5_P1.35mm" (at 0 0 unlocked) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 37079fb6-4e82-409b-954c-b2cd8fed364f) ) (pad "" np_thru_hole circle (at -2.7 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 5f419349-8a78-42e0-b731-775029af3a9d)) (pad "" np_thru_hole circle (at -1.35 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 2abee5e4-bdce-4c99-8e6c-abdda37adfcb)) (pad "" np_thru_hole circle (at 0 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp fd6fec20-1bb2-46d9-a541-c84b7cfef6ed)) (pad "" np_thru_hole circle (at 1.35 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 260b6e6f-f317-4b38-b989-9bb178a20d29)) (pad "" np_thru_hole circle (at 2.7 0) (size 0.5 0.5) (drill 0.5) (layers "F&B.Cu" "*.Mask") (tstamp 86d02ce0-54d8-44f3-ba70-242331adbb42)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/PinHeader_1x2_P2.54mm_Custom.kicad_mod ================================================ (footprint "PinHeader_1x2_P2.54mm_Custom" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 -3.47) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f50cd875-ad61-4c78-ac8d-eee39512d049) ) (fp_text value "PinHeader_1x2_P2.54mm_Custom" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a0f6403e-976f-4af5-ba62-8ec7d1aa5e2d) ) (fp_poly (pts (arc (start 0.762 2.54) (mid 1.12121 2.39121) (end 1.27 2.032)) (arc (start 1.27 -2.032) (mid 1.12121 -2.39121) (end 0.762 -2.54)) (arc (start -0.762 -2.54) (mid -1.12121 -2.39121) (end -1.27 -2.032)) (arc (start -1.27 2.032) (mid -1.12121 2.39121) (end -0.762 2.54)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 33458616-5434-4778-b553-6fd1e8bdc5f2)) (fp_rect (start -1.27 -2.54) (end 1.27 2.54) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp 7dd627da-5687-4d0a-929a-a6fa7a912754)) (pad "1" thru_hole circle (at 0 -1.27) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp a031e248-75c7-4b07-9f28-fc9c300b43f6)) (pad "2" thru_hole circle (at 0 1.27) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 40d62885-ceb8-4c17-8b34-716b386af5cb)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/PinHeader_1x3_P2.54mm.kicad_mod ================================================ (footprint "PinHeader_1x3_P2.54mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 -4.74) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f50cd875-ad61-4c78-ac8d-eee39512d049) ) (fp_text value "PinHeader_1x3_P2.54mm" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a0f6403e-976f-4af5-ba62-8ec7d1aa5e2d) ) (fp_line (start -1.27 -1.27) (end 1.27 -1.27) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp e2ac55b4-ce85-424e-aec7-6dfd50e1e361)) (fp_poly (pts (arc (start -1.27 3.302) (mid -1.12121 3.66121) (end -0.762 3.81)) (arc (start 0.762 3.81) (mid 1.12121 3.66121) (end 1.27 3.302)) (arc (start 1.27 -3.302) (mid 1.12121 -3.66121) (end 0.762 -3.81)) (arc (start -0.762 -3.81) (mid -1.12121 -3.66121) (end -1.27 -3.302)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp c9cbe3f8-7b0f-4f8f-abb1-95acbf3b37d8)) (fp_poly (pts (xy 1.27 -3.81) (xy 1.27 3.81) (xy -1.27 3.81) (xy -1.27 -3.175) (xy -0.635 -3.81) ) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 6fcd65ad-0d35-4958-aae5-d402fec6ed41)) (pad "1" thru_hole roundrect (at 0 -2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (tstamp a031e248-75c7-4b07-9f28-fc9c300b43f6)) (pad "2" thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 40d62885-ceb8-4c17-8b34-716b386af5cb)) (pad "3" thru_hole circle (at 0 2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 01ab6706-7706-4328-a6eb-ebc3eb410c3c)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/PinHeader_1x5_P2.54mm.kicad_mod ================================================ (footprint "PinHeader_1x5_P2.54mm" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole allow_missing_courtyard) (fp_text reference "REF**" (at 0 -7.28) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp f50cd875-ad61-4c78-ac8d-eee39512d049) ) (fp_text value "PinHeader_1x5_P2.54mm" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp a0f6403e-976f-4af5-ba62-8ec7d1aa5e2d) ) (fp_line (start 1.27 -3.81) (end -1.27 -3.81) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp b878d6f1-7cbb-418a-93e1-2e0cb8789c3a)) (fp_poly (pts (arc (start 1.27 -5.842) (mid 1.12121 -6.20121) (end 0.762 -6.35)) (arc (start -0.762 -6.35) (mid -1.12121 -6.20121) (end -1.27 -5.842)) (arc (start -1.27 5.842) (mid -1.12121 6.20121) (end -0.762 6.35)) (arc (start 0.762 6.35) (mid 1.12121 6.20121) (end 1.27 5.842)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp d5bc2020-892a-45a5-b835-4991895fe4ba)) (fp_line (start -1.27 -3.81) (end 1.27 -3.81) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 9bfb2859-15d2-490d-83c1-e262cf8a0efb)) (fp_poly (pts (arc (start 1.27 -5.842) (mid 1.12121 -6.20121) (end 0.762 -6.35)) (arc (start -0.762 -6.35) (mid -1.12121 -6.20121) (end -1.27 -5.842)) (arc (start -1.27 5.842) (mid -1.12121 6.20121) (end -0.762 6.35)) (arc (start 0.762 6.35) (mid 1.12121 6.20121) (end 1.27 5.842)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "F.SilkS") (tstamp 5e2d6435-0b42-4501-81f3-1aa8ee374d8d)) (fp_poly (pts (xy 1.27 -6.35) (xy 1.27 6.35) (xy -1.27 6.35) (xy -1.27 -5.715) (xy -0.635 -6.35) ) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp aaeb5e6f-356d-40d5-b3df-2c3f77e7f7f5)) (pad "1" thru_hole roundrect (at 0 -5.08) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (tstamp a031e248-75c7-4b07-9f28-fc9c300b43f6)) (pad "2" thru_hole circle (at 0 -2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 40d62885-ceb8-4c17-8b34-716b386af5cb)) (pad "3" thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 01ab6706-7706-4328-a6eb-ebc3eb410c3c)) (pad "4" thru_hole circle (at 0 2.54) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp ed05ba03-1e59-4764-8823-f63056f52720)) (pad "5" thru_hole circle (at 0 5.08) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp beccf848-7d56-4d1c-a4d2-b8d1a62f5b98)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/RPi_Pico.kicad_mod ================================================ (footprint "RPi_Pico" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 96315415-cfed-47d2-b3dd-d782358bd0df) ) (fp_text value "RPi_Pico" (at 0.2 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 46cbe85d-ff47-428e-b187-4ebd50a66e0c) ) (fp_text user "RaspberryPi" (at 0 9) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 5ed263c7-753c-4b86-aa08-f48a174697b7) ) (fp_text user "Pico" (at 0 13) (layer "F.Fab") (effects (font (size 3 3) (thickness 0.3))) (tstamp 7135a040-ad91-4d49-916d-04b246e19952) ) (fp_rect (start -10.5 -25.5) (end 10.5 25.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 6eabfbe4-2642-4051-9b41-76af6f097d90)) (fp_rect (start -4 -26.8) (end 4 -21) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b449b75c-f2c3-4c56-bcc8-2a00167be5ea)) (fp_rect (start -3.5 -3.5) (end 3.5 3.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 682aa15a-a561-4037-afe4-f443b442de2b)) (fp_circle (center -5.7 -23.5) (end -3.8 -23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 151c55ed-defd-4276-a511-b019f536a58e)) (fp_circle (center -5.7 23.5) (end -3.8 23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 4de6ea19-1083-4a9c-98b5-5c916dc3792c)) (fp_circle (center 5.7 -23.5) (end 7.6 -23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 61614d78-7e13-43cf-8b72-e7029370ce9e)) (fp_circle (center 5.7 23.5) (end 7.6 23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp cf3bfd7d-ad33-4bb9-87aa-df02e7a3b89d)) (pad "" np_thru_hole circle (at -5.7 -23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 7a723267-cc37-472b-8953-a7186248eb8e)) (pad "" np_thru_hole circle (at -5.7 23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 447ae8ed-56db-4036-b7ed-8afb824fee71)) (pad "" np_thru_hole circle (at 5.7 -23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 73153718-fc54-47ce-8c74-0fb621625192)) (pad "" np_thru_hole circle (at 5.7 23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 255f4754-0cc9-4a71-851b-212cdc52887c)) (pad "1" smd roundrect (at -9.99 -24.13) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp a44fe7cd-765f-4b81-ab34-363fe97040e5)) (pad "1" thru_hole circle (at -8.89 -24.13) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp f1e959ac-0b5d-4a85-8d03-428af859ffe9)) (pad "2" smd roundrect (at -9.99 -21.59) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 2a98b493-2c0f-47dd-8924-e93fb2f755e6)) (pad "2" thru_hole circle (at -8.89 -21.59) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp db682d2d-4510-451c-9cea-f0390cee0f45)) (pad "3" smd roundrect (at -9.69 -19.05) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 8095555d-81cd-41b7-bc98-8b233f93461a)) (pad "3" thru_hole roundrect (at -8.89 -19.05) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp fa7c2a20-33d8-4f8f-8881-cca53f846924)) (pad "4" smd roundrect (at -9.99 -16.51) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 2e76f187-8b48-4f7b-aff6-9a8ac5cfe3b4)) (pad "4" thru_hole circle (at -8.89 -16.51) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 1064a002-a988-41a1-8237-b0880d5ca5ae)) (pad "5" smd roundrect (at -9.99 -13.97) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp adf30024-c5b2-4e66-bdf3-421ce21ea7a1)) (pad "5" thru_hole circle (at -8.89 -13.97) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 3495d220-e620-4fa2-a289-958d4c6ad13f)) (pad "6" smd roundrect (at -9.99 -11.43) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 0cefbbd5-5c42-42da-a23e-3cc5884a03fa)) (pad "6" thru_hole circle (at -8.89 -11.43) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 60ef8cca-8337-4c52-9d7e-3efe4a46105c)) (pad "7" smd roundrect (at -9.99 -8.89) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp e60ddea2-d835-4305-bbfc-c639bf190d62)) (pad "7" thru_hole circle (at -8.89 -8.89) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 57b9f2ad-e36b-45fe-a615-342909dc5a07)) (pad "8" smd roundrect (at -9.69 -6.35) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 04e48c58-fbff-41ab-bb94-17b40ab2b79b)) (pad "8" thru_hole roundrect (at -8.89 -6.35) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp 866a291a-80fb-44a1-bd97-250f5b003d33)) (pad "9" smd roundrect (at -9.99 -3.81) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 20aa36fe-0d7f-424c-a5ff-3bc42e4b93fd)) (pad "9" thru_hole circle (at -8.89 -3.81) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 20c7ebae-1111-41bb-bb46-e7e61272f0ea)) (pad "10" smd roundrect (at -9.99 -1.27) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 123c1b10-4f63-4294-a0df-7c8f5d35325c)) (pad "10" thru_hole circle (at -8.89 -1.27) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 5e24fb9c-ed06-4f59-949c-f0451715c831)) (pad "11" smd roundrect (at -9.99 1.27) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 8eb3da3d-a71a-4c3a-8c15-0e5521ef4ffb)) (pad "11" thru_hole circle (at -8.89 1.27) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 8b0b4a4f-40af-4589-939c-de606a8ecddf)) (pad "12" smd roundrect (at -9.99 3.81) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp f8006e82-6ecf-4951-ae79-07879a86f9cf)) (pad "12" thru_hole circle (at -8.89 3.81) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 4d0e0507-3f8b-4a23-a007-d1cd6b1ac4fa)) (pad "13" smd roundrect (at -9.69 6.35) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp de79e56c-c8a1-422f-ad96-67100816e3af)) (pad "13" thru_hole roundrect (at -8.89 6.35) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp 72c08953-1325-4084-bcf3-c48e7ea0df1c)) (pad "14" smd roundrect (at -9.99 8.89) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 324b5f69-69ca-41f8-9a04-67b593af457f)) (pad "14" thru_hole circle (at -8.89 8.89) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 538481f0-57f2-4664-96a7-21edb608b5e7)) (pad "15" smd roundrect (at -9.99 11.43) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 58eb002e-e166-4f76-af7e-c6cc413bc384)) (pad "15" thru_hole circle (at -8.89 11.43) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 66358e52-91b8-4230-beee-c1e9c83b02a0)) (pad "16" smd roundrect (at -9.99 13.97) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 712629e1-94d8-41e6-be23-6e6f2bd8b31d)) (pad "16" thru_hole circle (at -8.89 13.97) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 5e44e3cd-4de6-4f2f-ac90-7bdb88e23591)) (pad "17" smd roundrect (at -9.99 16.51) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 2f14928b-8d62-486a-bda0-b5bffe045bd3)) (pad "17" thru_hole circle (at -8.89 16.51) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp f759d087-489c-42b0-8abe-853e832ae745)) (pad "18" smd roundrect (at -9.69 19.05) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 652442ba-5b9b-4067-968b-d8cb2fbce5ee)) (pad "18" thru_hole roundrect (at -8.89 19.05) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp af27ae4c-1243-4e7d-8383-4bb3e11a73c5)) (pad "19" smd roundrect (at -9.99 21.59) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 3ead3d7d-8ea5-47f3-8789-90273ecfe286)) (pad "19" thru_hole circle (at -8.89 21.59) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 85e1fc26-a4b3-4732-b286-e005dea87fe5)) (pad "20" smd roundrect (at -9.99 24.13) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 1c528440-4d72-4218-ab81-3e745948d534)) (pad "20" thru_hole circle (at -8.89 24.13) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 29030364-bed4-4f13-b314-d8e1a74997a2)) (pad "21" thru_hole circle (at 8.89 24.13) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 737d1de1-ce3a-43f6-b64f-afd337e0ea92)) (pad "21" smd roundrect (at 9.99 24.13) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp f4d36d3c-e757-4cfa-b828-524f296cf525)) (pad "22" thru_hole circle (at 8.89 21.59) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp b43a1d5d-c0a4-4af2-99d5-bb7433854a89)) (pad "22" smd roundrect (at 9.99 21.59) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp d4801dd6-9964-41d4-973d-adb1e5cffff8)) (pad "23" thru_hole roundrect (at 8.89 19.05) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp fcc1a6cf-a477-4bf3-b1f8-ca6281b1b064)) (pad "23" smd roundrect (at 9.69 19.05) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 81b89683-4a1d-4e1f-891f-852174b755c5)) (pad "24" thru_hole circle (at 8.89 16.51) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp db23129d-a4ad-45f6-a4cf-0e01c29c0c53)) (pad "24" smd roundrect (at 9.99 16.51) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 3cf0ec21-1a2a-4d45-87cc-3b8cd27dd574)) (pad "25" thru_hole circle (at 8.89 13.97) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 94408c31-d0fb-4929-befe-33c69648ef6c)) (pad "25" smd roundrect (at 9.99 13.97) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 27a489d0-01ce-4e62-90bc-203ce6b5c1a5)) (pad "26" thru_hole circle (at 8.89 11.43) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 87f8cd59-c1e4-4cbc-9618-3a837b94e8e9)) (pad "26" smd roundrect (at 9.99 11.43) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp bc2a540d-0d30-4aa0-a46a-e04ade88343d)) (pad "27" thru_hole circle (at 8.89 8.89) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 1775c716-146f-4ff3-bc88-ed7249091629)) (pad "27" smd roundrect (at 9.99 8.89) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 6b399ebf-d590-4e6d-b62a-4b986821c9d4)) (pad "28" thru_hole roundrect (at 8.89 6.35) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp 937d1ea4-be9a-41e6-a299-3c75143a7afc)) (pad "28" smd roundrect (at 9.69 6.35) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 64a698ae-fcea-4108-a00a-a96ad02fe1f6)) (pad "29" thru_hole circle (at 8.89 3.81) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp fc62bd79-208b-4821-9bb3-72fcb7f23620)) (pad "29" smd roundrect (at 9.99 3.81) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 86ff7998-baa2-4fa3-9ec7-a47f0a5f8e9e)) (pad "30" thru_hole circle (at 8.89 1.27) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 10b125c2-683f-4407-a20b-97f681e65ea2)) (pad "30" smd roundrect (at 9.99 1.27) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 08e63d17-b9a4-47f1-9a9b-843f65957e73)) (pad "31" thru_hole circle (at 8.89 -1.27) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 2bbc39cc-4c28-4020-9d14-c2d17a164d7f)) (pad "31" smd roundrect (at 9.99 -1.27) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp ea507481-fc1f-4112-a6d8-97b9f531bda3)) (pad "32" thru_hole circle (at 8.89 -3.81) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp f5d7e9f5-bf76-43d5-8b6c-c4c0863d84c6)) (pad "32" smd roundrect (at 9.99 -3.81) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 452a9004-18b9-4498-aa78-acd32784ba45)) (pad "33" thru_hole roundrect (at 8.89 -6.35) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp c5e755cd-f63d-479f-96ff-86d8fd4184a1)) (pad "33" smd roundrect (at 9.69 -6.35) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 16c9d601-7c05-415b-9534-83123902969f)) (pad "34" thru_hole circle (at 8.89 -8.89) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 8ad86c2f-552d-4858-8363-7fdc7a6acd62)) (pad "34" smd roundrect (at 9.99 -8.89) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 798a97bb-83a8-4fd5-9037-bc7a77dd8566)) (pad "35" thru_hole circle (at 8.89 -11.43) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp d8b26973-c3d5-4610-95ae-a11d904f8193)) (pad "35" smd roundrect (at 9.99 -11.43) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp e3672e8b-59d1-48d5-bd84-9533a484c1d8)) (pad "36" thru_hole circle (at 8.89 -13.97) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 4f018443-7208-4663-aa77-a7156b4792af)) (pad "36" smd roundrect (at 9.99 -13.97) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 37511584-b7c0-4b52-ae8f-98fbadbb24b0)) (pad "37" thru_hole circle (at 8.89 -16.51) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 27692825-2d6f-4a39-b81b-e1e15cad7d49)) (pad "37" smd roundrect (at 9.99 -16.51) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 91843c4b-d203-4293-9e6f-194c717b97ab)) (pad "38" thru_hole roundrect (at 8.89 -19.05) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp f63bf362-d90f-4dc9-baac-ca88b7665499)) (pad "38" smd roundrect (at 9.69 -19.05) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 8c8d0254-efd8-4421-8329-441bd1a36a2e)) (pad "39" thru_hole circle (at 8.89 -21.59) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp e9c0e4ba-9df4-4970-b745-7d70453c6802)) (pad "39" smd roundrect (at 9.99 -21.59) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp d0d9b375-f7a1-4c70-8057-3b753acb9274)) (pad "40" thru_hole circle (at 8.89 -24.13) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 9c777697-5b8e-495d-8352-18b32846f1cb)) (pad "40" smd roundrect (at 9.99 -24.13) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 1801741b-3685-4841-808d-71fa52ffdf2b)) (pad "A" smd roundrect (at -2.725 -24) (size 1.1 1.8) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5) (tstamp fc3bf76b-13bf-4538-af80-f9f8d58541c6)) (pad "B" smd roundrect (at 2.725 -24) (size 1.1 1.8) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5) (tstamp 35792966-9093-40f8-831e-2995139f2574)) (pad "C" smd roundrect (at -2.425 -20.97) (size 1.05 1.45) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5) (tstamp 2f57a91c-31d7-4c8e-8cd7-35c88d8f6328)) (pad "D" smd roundrect (at 2.425 -20.97) (size 1.05 1.45) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5) (tstamp 245ae902-01be-4cf6-ba36-8265404702ae)) (pad "D1" thru_hole circle (at -2.54 23.9) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 62975455-d4d3-4699-8098-cac7cce5e1dc)) (pad "D1" smd roundrect (at -2.54 25 90) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp b8cbfb2f-251a-4df0-9b0a-5c60884a4d71)) (pad "D2" thru_hole roundrect (at 0 23.9) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.125) (tstamp e67f786d-da95-4fd8-845b-7f59a12e41d2)) (pad "D2" smd roundrect (at 0 24.7 90) (size 3.2 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp 1e7f1bc9-865a-4e38-93fe-093a9c7f6be2)) (pad "D3" thru_hole circle (at 2.54 23.9) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask") (tstamp b22538ed-cbad-4b5e-b69f-94f1d1aeb861)) (pad "D3" smd roundrect (at 2.54 25 90) (size 2.6 1.6) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.125) (tstamp afbb3654-d3b8-4555-8344-dbb2f75af610)) (pad "TP1" smd roundrect (at 0 -21) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.2) (tstamp d534becc-8fdc-40ce-be43-6c36c13adb0b)) (pad "TP2" smd roundrect (at 1 -24.3) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.2) (tstamp 341022f6-9a4f-48ed-858f-0c55e115b28a)) (pad "TP3" smd roundrect (at -1 -24.3) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.2) (tstamp 372ad05c-3ada-4e71-ab38-803086c22b4c)) (pad "TP4" smd roundrect (at -2.5 -17.5) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.2) (tstamp a91df8a2-136e-44b2-a7b3-8d84887d5e4d)) (pad "TP5" smd roundrect (at -2.5 -15) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.2) (tstamp 2c6c0b22-5852-4a6e-baf6-b2815edda421)) (pad "TP6" smd roundrect (at -2.5 -12.5) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.2) (tstamp 67a1be5c-6cc5-4b1b-91ef-634c52a89c46)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/RPi_Pico_Custom.kicad_mod ================================================ (footprint "RPi_Pico_Custom" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr smd allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 96315415-cfed-47d2-b3dd-d782358bd0df) ) (fp_text value "RPi_Pico_Custom" (at 0.2 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 46cbe85d-ff47-428e-b187-4ebd50a66e0c) ) (fp_text user "RaspberryPi" (at 0 9) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 5ed263c7-753c-4b86-aa08-f48a174697b7) ) (fp_text user "Pico" (at 0 13) (layer "F.Fab") (effects (font (size 3 3) (thickness 0.3))) (tstamp 7135a040-ad91-4d49-916d-04b246e19952) ) (fp_poly (pts (arc (start -10.16 22.479) (mid -10.048408 22.748408) (end -9.779 22.86)) (arc (start -8.001 22.86) (mid -7.731592 22.748408) (end -7.62 22.479)) (arc (start -7.62 2.921) (mid -7.731592 2.651592) (end -8.001 2.54)) (arc (start -9.779 2.54) (mid -10.048408 2.651592) (end -10.16 2.921)) ) (stroke (width 0.2) (type solid)) (fill none) (layer "B.SilkS") (tstamp 00d32932-9419-4edd-996a-4e07d874cfe5)) (fp_line (start -11.86 -24.892) (end -11.86 24.892) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 1e5d675c-c4be-499e-ad5f-2bead8d02cff)) (fp_line (start -11.811 -22.86) (end -7.747 -22.86) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 90183951-b7a8-46b5-9ea5-63a6115e45b5)) (fp_line (start -11.352 -25.4) (end -4.2 -25.4) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp b33c2895-9d23-4faa-95eb-e1a4b9494b28)) (fp_line (start -11.352 25.4) (end -4.2 25.4) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp cb23a5dd-b27c-4a37-960f-67ff76fca36c)) (fp_line (start -7.747 -25.4) (end -7.747 -22.86) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 4cbf27fa-8090-4240-8f58-aef55d4542d3)) (fp_arc (start -11.86 -24.892) (mid -11.71121 -25.25121) (end -11.352 -25.4) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4e769633-305f-4d32-9aa5-5234128e0159)) (fp_arc (start -11.352 25.4) (mid -11.71121 25.25121) (end -11.86 24.892) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8e6d6a61-d41e-44d5-83f6-cd9aa60cadd0)) (fp_rect (start -10.5 -25.5) (end 10.5 25.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 84522a70-752f-4767-9550-25d0db4e9407)) (fp_rect (start -9.69 -7.15) (end -8.09 -5.55) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp 3dc4e471-9212-4173-be83-effaa259b04b)) (fp_rect (start -4 -26.8) (end 4 -21) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b449b75c-f2c3-4c56-bcc8-2a00167be5ea)) (fp_rect (start -3.5 -3.5) (end 3.5 3.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 682aa15a-a561-4037-afe4-f443b442de2b)) (fp_circle (center -8.89 -3.81) (end -8.09 -3.81) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp 3d9075da-8fe2-4c7b-8748-4c5b9345ab11)) (fp_circle (center -8.89 -1.27) (end -8.09 -1.27) (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab") (tstamp 49bc4374-f96b-49ee-a82f-ffe5e07c8543)) (fp_circle (center -5.7 -23.5) (end -3.8 -23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 151c55ed-defd-4276-a511-b019f536a58e)) (fp_circle (center -5.7 23.5) (end -3.8 23.5) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 4de6ea19-1083-4a9c-98b5-5c916dc3792c)) (pad "" np_thru_hole circle (at -5.7 -23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 7a723267-cc37-472b-8953-a7186248eb8e)) (pad "" np_thru_hole circle (at -5.7 23.5) (size 2.1 2.1) (drill 2.1) (layers "F&B.Cu" "*.Mask") (tstamp 447ae8ed-56db-4036-b7ed-8afb824fee71)) (pad "1" smd oval (at -9.74 -24.13) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 8095555d-81cd-41b7-bc98-8b233f93461a)) (pad "1" thru_hole circle (at -8.89 -24.13) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp f1e959ac-0b5d-4a85-8d03-428af859ffe9)) (pad "2" smd oval (at -9.74 -21.59) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp f44b083f-8c05-4bdb-b8ec-587fc5d6dcf6)) (pad "2" thru_hole circle (at -8.89 -21.59) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp a78f7194-0153-4559-8ccd-e49a84923fa7)) (pad "3" smd oval (at -9.74 -19.05) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 99870160-908b-4365-aba7-22e41026d45b)) (pad "3" thru_hole roundrect (at -8.89 -19.05) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (tstamp fa7c2a20-33d8-4f8f-8881-cca53f846924)) (pad "4" smd oval (at -9.74 -16.51) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 7f038494-259c-43bb-b43d-d26653167391)) (pad "4" thru_hole circle (at -8.89 -16.51) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 5460cff3-161e-4666-b15e-f17dbf36e2ba)) (pad "5" smd oval (at -9.74 -13.97) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 168d4908-c2f5-4121-98dc-cb3281656a1d)) (pad "5" thru_hole circle (at -8.89 -13.97) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp f5cac7bb-88a8-4e93-b725-c6359df65e0e)) (pad "6" smd oval (at -9.74 -11.43) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 973bfd49-f2c9-4887-8e5a-a724f2699f9b)) (pad "6" thru_hole circle (at -8.89 -11.43) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 1bd974f6-a1df-406f-869d-e15fe3fd3a88)) (pad "7" smd oval (at -9.74 -8.89) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 58db9725-51f1-4eb0-8504-e05ad2c448b3)) (pad "7" thru_hole circle (at -8.89 -8.89) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 82e56278-db48-4afe-a778-91ec73bb73fe)) (pad "11" smd oval (at -9.74 1.27) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 1ee311cd-f575-47ae-a934-10da6b31a1fb)) (pad "11" thru_hole circle (at -8.89 1.27) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 1c54111c-75a5-42f2-a005-5b56fe46dbdb)) (pad "12" smd oval (at -9.74 3.81) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp fcb14d08-3379-4bdb-9958-3fd63412744b)) (pad "12" thru_hole circle (at -8.89 3.81) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 49492310-2f47-4e22-874a-bda2965dc87a)) (pad "13" smd oval (at -9.74 6.35) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp e6638342-3c08-4b0d-9593-8d85315d4975)) (pad "13" thru_hole roundrect (at -8.89 6.35) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (tstamp 72c08953-1325-4084-bcf3-c48e7ea0df1c)) (pad "14" smd oval (at -9.74 8.89) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp bd9a81dd-fbcf-4a5e-91a1-893a024365e9)) (pad "14" thru_hole circle (at -8.89 8.89) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp b36801c3-6e63-4f9c-9980-a4f2b3ff4da6)) (pad "15" smd oval (at -9.74 11.43) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 79aec0a9-6762-4434-8f93-b13fb7ed5080)) (pad "15" thru_hole circle (at -8.89 11.43) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp e7aa18c7-a831-44de-83e8-ec4d4ce635a5)) (pad "16" smd oval (at -9.74 13.97) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 707c1439-913c-4c0d-8736-d0df7f3f4460)) (pad "16" thru_hole circle (at -8.89 13.97) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 70bdb711-ea4d-4a4b-8c90-1849dcb51bf2)) (pad "17" smd oval (at -9.74 16.51) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 6c246efd-f690-45c7-9422-187c4e04b93e)) (pad "17" thru_hole circle (at -8.89 16.51) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 99a5634d-ed30-4562-b990-50d8384d4d31)) (pad "18" smd oval (at -9.74 19.05) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 57607934-0fbf-42bf-80b1-e11440c7e017)) (pad "18" thru_hole roundrect (at -8.89 19.05) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (roundrect_rratio 0.15) (tstamp af27ae4c-1243-4e7d-8383-4bb3e11a73c5)) (pad "19" smd oval (at -9.74 21.59) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp 62d9f4b2-ca74-4d21-993f-3e0cca68f529)) (pad "19" thru_hole circle (at -8.89 21.59) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp ec33159d-23ff-4768-a6b5-705ea32f2288)) (pad "20" smd oval (at -9.74 24.13) (size 3.4 1.7) (layers "F.Cu" "F.Mask") (tstamp fcc27dd8-32a9-42be-ac73-cf9eac62d2a9)) (pad "20" thru_hole circle (at -8.89 24.13) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 0b89e9f2-4bc8-4e02-b714-6f05bc32ce74)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/RotaryEncoder_PEC11R_Custom.kicad_mod ================================================ (footprint "RotaryEncoder_PEC11R_Custom" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole allow_missing_courtyard) (fp_text reference "REF**" (at 0 0) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp d8b4ea29-2263-46ad-8021-f771c5544363) ) (fp_text value "RotaryEncoder_PEC11R_Custom" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 866aae23-5c15-48ba-bfed-550261ad4b22) ) (fp_line (start 1.6 1.6) (end -1.6 1.6) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp e9df1f29-aee0-4d31-9d4b-30c69315db59)) (fp_arc (start -1.6 1.6) (mid 0 -2.262742) (end 1.6 1.6) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp ddcb4073-2de4-4d52-8a72-c30d1ef6c01a)) (fp_circle (center 0 0) (end 3 0) (stroke (width 0.2) (type default)) (fill none) (layer "B.SilkS") (tstamp 1cd8af04-279a-4257-ab4b-720d721e36e8)) (fp_rect (start -6.7 -6.25) (end 6.7 6.25) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp b7954299-ed64-42a0-bf4f-dcc309a36c8e)) (fp_circle (center 0 0) (end 3.5 0) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp f305ebc3-91eb-4171-8e14-3b9229bea43d)) (pad "1" thru_hole circle (at 7 -2.5) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp e4806ec9-285f-4aec-99da-67ca111daa66)) (pad "2" thru_hole circle (at 7 2.5) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 7d67148e-6a33-40ce-8b6b-e59f7dfe7253)) (pad "A" thru_hole circle (at -7.5 -2.5) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp d3f14617-ec5a-46a6-8a47-cd2e3697c97b)) (pad "B" thru_hole circle (at -7.5 2.5) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 33d993c4-f3cd-42d4-8b73-94f587efeacb)) (pad "C" thru_hole circle (at -7.5 0) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask") (tstamp 9d27ed1a-8d2e-44a0-95d3-6a95bac98afe)) (pad "MP" thru_hole oval (at 0 -5.7) (size 3.8 2.3) (drill oval 3 1.5) (layers "*.Cu" "*.Mask") (tstamp 54afc20e-fc17-4e06-aa28-b0d499d87cd3)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Switch_MX.kicad_mod ================================================ (footprint "Switch_MX" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 0eef8089-c723-4a1e-ab20-4b550233b9de) ) (fp_text value "Switch_MX" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 026d120f-ebf7-4eac-92c3-c471ee0f691b) ) (fp_text user "${REFERENCE}" (at 0 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp e66eaba1-b187-4d27-a9ab-9f10504bd5ad) ) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp e3c430c1-834d-4d16-b383-426b3d957f87)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bfbaf808-2365-469d-9e61-f1dcfca13c9c)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp bc50b1f7-391b-41d1-a90a-f7fb06583c9c)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp ff1ab08b-bcac-4fde-8c55-dd632a21a9fd)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a2facbdb-c1ab-4ed8-9448-fe80cf77caef)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 02a9aa3f-8d98-4309-b723-d701deb4ceab)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp dc7e8621-0210-4b2c-8206-0fe4f38e79d1)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp cf3c5915-a935-4e87-baf2-0569a64252a9)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp da0d3188-fbc1-4227-be78-a4a2a8b0d48c)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 7f22d2e3-dfe4-4a3e-9b21-3fd2a70750bf)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 4fe4bb0f-ed28-49ef-80ad-a5b0ba28b07a)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp d3ee12b6-9754-4725-8f0d-117a2dcfe455)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 8b2d3a76-b934-4b83-adcb-719954f20608)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d4693df1-d65e-4a92-8b5c-01b4b9ba5eb4)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp d19da27a-f9c4-4352-a830-25680778fdbb)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a6ffd8b3-03b7-42ca-934a-0981557a48e5)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4db906b3-2e7e-43b2-90cf-2fa3920b7933)) (fp_line (start 5 -5.7) (end 4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 2eaf699c-92e0-4e3f-ba15-63f1ffb64d25)) (fp_line (start 5.7 -5) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 51f85ae0-4b7e-4b24-8d60-4cd52d88b02a)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 4615a7ea-c3ce-44c0-8df6-5d6e22d76812)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 4a047d92-e64b-4dbb-b069-35a8af8d8f0b)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp bf56f239-454b-4847-b5cb-ef4f72e7b430)) (fp_arc (start 5 -5.7) (mid 5.494975 -5.494975) (end 5.7 -5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 902bae09-91d9-446b-bdc9-64bb292f9afd)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp a6dd4a9b-e146-4fbb-9129-18663f071066)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp c7ffe77c-617f-4cf6-828e-9f3a17990dbd)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp da35b3c5-bbfb-4a0f-93c1-7d130624ae95)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp d37ce2ca-4f71-41bc-a442-8abc8b2e4b1f)) (pad "" np_thru_hole circle (at 0 0) (size 4 4) (drill 4) (layers "F&B.Cu" "*.Mask") (tstamp b4139728-8b2f-4f9c-801b-082e3324f9f8)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp ec3f2142-46db-4fe6-9c7e-43584d1110ae)) (pad "1" thru_hole oval (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp 714c90ae-ecdf-4eb5-9c47-977a0ffdc6a2)) (pad "1" thru_hole oval (at 3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp f8e86516-adaf-48d5-8d1e-746e55dc2d54)) (pad "2" thru_hole oval (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp 00aa2e4d-7f72-4b4e-b94d-cf98dee4e672)) (pad "2" thru_hole oval (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp 07368a1d-22b1-4ba5-9988-d8f53af41337)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Switch_MX_CTRL.kicad_mod ================================================ (footprint "Switch_MX_CTRL" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr smd allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 0eef8089-c723-4a1e-ab20-4b550233b9de) ) (fp_text value "Switch_MX_CTRL" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 026d120f-ebf7-4eac-92c3-c471ee0f691b) ) (fp_text user "1U" (at -5.25 5.207 270 unlocked) (layer "B.SilkS") (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left bottom mirror)) (tstamp 46b6dbe9-bb7e-4d8b-9f9a-2bc5379cfb0c) ) (fp_text user "1.25" (at -2.85 5.207 270 unlocked) (layer "B.SilkS") (effects (font (size 1.1 1.1) (thickness 0.15)) (justify left bottom mirror)) (tstamp df18f8f9-2226-476d-86f0-c8efaacfe165) ) (fp_text user "${REFERENCE}" (at 2.375 0 unlocked) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp bd73c288-b43d-448b-8a45-9845f6e5d1ae) ) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 292f5efb-d6ce-4b0c-a960-ad7f52a270d9)) (fp_line (start -5 5.7) (end -4 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 05d9f5bb-9321-419d-88dd-f3d6ae39a0ec)) (fp_line (start -3.325 1.1) (end -3.325 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp d4693df1-d65e-4a92-8b5c-01b4b9ba5eb4)) (fp_line (start -2.625 5.7) (end 7.375 5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp a6ffd8b3-03b7-42ca-934a-0981557a48e5)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4db906b3-2e7e-43b2-90cf-2fa3920b7933)) (fp_line (start 7.375 -5.7) (end 6.425 -5.7) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 2eaf699c-92e0-4e3f-ba15-63f1ffb64d25)) (fp_line (start 8.075 -5) (end 8.075 -1.1) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 51f85ae0-4b7e-4b24-8d60-4cd52d88b02a)) (fp_line (start 8.075 1.1) (end 8.075 5) (stroke (width 0.2) (type solid)) (layer "B.SilkS") (tstamp 4615a7ea-c3ce-44c0-8df6-5d6e22d76812)) (fp_arc (start -5 5.7) (mid -5.494974 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 303e40e5-c91f-4942-b040-98f03237b76d)) (fp_arc (start -2.625 5.7) (mid -3.119974 5.494975) (end -3.325 5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 2aeadbd7-88a7-4a65-ac16-f13ec71410ec)) (fp_arc (start 7.375 -5.7) (mid 7.869974 -5.494975) (end 8.075 -5) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 1f8b8e32-881e-4ced-927a-fd5b2916d628)) (fp_arc (start 8.075 5) (mid 7.869975 5.494974) (end 7.375 5.7) (stroke (width 0.2) (type default)) (layer "B.SilkS") (tstamp 5e116683-5e8a-4cf6-8c5b-edf862f263bb)) (fp_line (start -5.7 -5) (end -5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 0299ce74-761d-4d98-9b75-7273b0d723bf)) (fp_line (start -5.7 1.1) (end -5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp f31313c1-4f36-4c59-8886-ae13ffce5fcb)) (fp_line (start -5 -5.7) (end -4.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp bc50b1f7-391b-41d1-a90a-f7fb06583c9c)) (fp_line (start -5 5.7) (end 5 5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp ff1ab08b-bcac-4fde-8c55-dd632a21a9fd)) (fp_line (start -1.05 -5.7) (end 1.05 -5.7) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp a2facbdb-c1ab-4ed8-9448-fe80cf77caef)) (fp_line (start 5.7 -3.9) (end 5.7 -1.1) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 526416a6-c94c-4bcf-8282-c05bb70bb4e4)) (fp_line (start 5.7 1.1) (end 5.7 5) (stroke (width 0.2) (type solid)) (layer "F.SilkS") (tstamp 776e40b5-ecd3-4938-bde7-a0a17d1d31d0)) (fp_arc (start -5.7 -5) (mid -5.494975 -5.494975) (end -5 -5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp c6dc3b52-e4a1-4f70-8fe4-568373e40d42)) (fp_arc (start -5 5.7) (mid -5.494975 5.494975) (end -5.7 5) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp bfc72667-1a93-4174-b6d9-ecbed638fd11)) (fp_arc (start 5.7 5) (mid 5.494975 5.494975) (end 5 5.7) (stroke (width 0.2) (type default)) (layer "F.SilkS") (tstamp 14073c33-ec44-4719-abf5-21dd15d716af)) (fp_line (start -2.705 -0.85) (end -1.810387 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 6d9ad0cd-91a0-4199-9f0e-6eecc3bd2489)) (fp_line (start -1.810387 0.85) (end -2.705 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 940295c4-c2e5-4d2a-998d-95f2ee2332c0)) (fp_line (start 0 2) (end 2.375 2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp c6cb8fb4-2c26-4953-b717-5eaf914f9aa2)) (fp_line (start 2.375 -2) (end 0 -2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp b5c2bf81-d602-4c6f-bb3d-e24812ba8137)) (fp_line (start 4.185387 -0.85) (end 5.08 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 9d1ee62f-84a6-43d5-830d-3d0fa398d199)) (fp_line (start 5.08 0.85) (end 4.185387 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp f4d18a32-b8f3-40a5-8e2e-566321233378)) (fp_arc (start -2.705 0.85) (mid -3.555 0) (end -2.705 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp fbeb0285-3125-4f4b-aae7-b37c150f06cb)) (fp_arc (start -1.810387 -0.85) (mid -1.072381 -1.688195) (end 0 -2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 204c3762-58a9-467f-b258-6e5c7000a1f8)) (fp_arc (start 0 2) (mid -1.07238 1.688194) (end -1.810387 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 26d3e302-e682-425f-bd88-10b8801327b7)) (fp_arc (start 2.375 -2) (mid 3.44738 -1.688194) (end 4.185387 -0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp a8d828cc-9a75-47d9-8fb8-29068eec0498)) (fp_arc (start 4.185387 0.85) (mid 3.447381 1.688195) (end 2.375 2) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp 75cfd91e-b2d6-4f50-a3c4-ac06de6904ad)) (fp_arc (start 5.08 -0.85) (mid 5.93 0) (end 5.08 0.85) (stroke (width 0.1) (type default)) (layer "Edge.Cuts") (tstamp cb198b86-edce-4d99-ad64-7fecfdd62ebe)) (fp_rect (start -7 -7) (end 9.375 7) (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab") (tstamp da35b3c5-bbfb-4a0f-93c1-7d130624ae95)) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp 15f2a518-6f92-4f5f-af70-dd6e503d5d77)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp d37ce2ca-4f71-41bc-a442-8abc8b2e4b1f)) (pad "" np_thru_hole circle (at 7.455 0) (size 1.7 1.7) (drill 1.7) (layers "F&B.Cu" "*.Mask") (tstamp ead97b3f-b531-40d9-9f34-0a405182307e)) (pad "1" thru_hole oval (at 2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp 714c90ae-ecdf-4eb5-9c47-977a0ffdc6a2)) (pad "1" smd custom (at 3.36 -2.54) (size 0.8 0.8) (layers "F.Cu" "F.Mask") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start 0.9 -0.7) (mid 1.6 0) (end 0.9 0.7)) (arc (start 0.484838 0.7) (mid -0.058545 0.37489) (end -0.668907 0.206311)) (arc (start -0.668907 0.20631) (mid -0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp e43f698c-235e-4fa4-b01a-3e36cd9a82fb)) (pad "1" smd custom (at 3.36 -2.54) (size 0.8 0.8) (layers "B.Cu" "B.Mask") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start 0.9 -0.7) (mid 1.6 0) (end 0.9 0.7)) (arc (start 0.484838 0.7) (mid -0.058545 0.37489) (end -0.668907 0.206311)) (arc (start -0.668907 0.20631) (mid -0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp e43f698c-235e-4fa4-b01a-3e36cd9a82fb)) (pad "1" smd oval (at 3.7275 -5.08) (size 4.875 1.6) (layers "F.Cu" "F.Mask") (tstamp 3407d65e-f287-48fd-85bf-db01d274dd8e)) (pad "1" smd oval (at 3.7275 -5.08) (size 4.875 1.6) (layers "B.Cu" "B.Mask") (tstamp 3407d65e-f287-48fd-85bf-db01d274dd8e)) (pad "1" thru_hole oval (at 3.84 -2.59) (size 1.9 1.1) (drill oval 1.6 0.8) (layers "*.Cu" "*.Mask") (tstamp f460a1f3-7ae6-47fa-ae7e-69b39103dc15)) (pad "1" thru_hole oval (at 4.915 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp f496385e-8a4d-4235-a501-4961d2a4a311)) (pad "2" thru_hole oval (at -3.81 -2.54) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp 00aa2e4d-7f72-4b4e-b94d-cf98dee4e672)) (pad "2" thru_hole oval (at -2.54 -5.08) (size 2.5 1.6) (drill oval 1.7 0.8) (layers "*.Cu" "*.Mask") (tstamp 07368a1d-22b1-4ba5-9988-d8f53af41337)) (pad "2" thru_hole oval (at -1.465 -2.59) (size 1.9 1.1) (drill oval 1.6 0.8) (layers "*.Cu" "*.Mask") (tstamp e85dd6bf-5a3b-4323-8685-b89414918eb2)) (pad "2" smd custom (at -0.985 -2.54) (size 0.8 0.8) (layers "F.Cu" "F.Mask") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start -3.275 -0.7) (mid -3.975 0) (end -3.275 0.7)) (arc (start -0.484838 0.7) (mid 0.058545 0.37489) (end 0.668907 0.206311)) (arc (start 0.668907 0.20631) (mid 0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp e43f698c-235e-4fa4-b01a-3e36cd9a82fb)) (pad "2" smd custom (at -0.985 -2.54) (size 0.8 0.8) (layers "B.Cu" "B.Mask") (thermal_bridge_angle 45) (options (clearance outline) (anchor circle)) (primitives (gr_poly (pts (arc (start -3.275 -0.7) (mid -3.975 0) (end -3.275 0.7)) (arc (start -0.484838 0.7) (mid 0.058545 0.37489) (end 0.668907 0.206311)) (arc (start 0.668907 0.20631) (mid 0.563213 -0.415682) (end 0 -0.7)) ) (width 0.2) (fill yes)) ) (tstamp e43f698c-235e-4fa4-b01a-3e36cd9a82fb)) ) ================================================ FILE: pcb/chrumm/footprints.pretty/Switch_MX_RefPoints.kicad_mod ================================================ (footprint "Switch_MX_RefPoints" (version 20221018) (generator pcbnew) (layer "F.Cu") (attr through_hole board_only exclude_from_pos_files exclude_from_bom allow_missing_courtyard) (fp_text reference "REF**" (at 0 0 unlocked) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 0eef8089-c723-4a1e-ab20-4b550233b9de) ) (fp_text value "Switch_MX_RefPoints" (at 0 0) (layer "F.Fab") hide (effects (font (size 1 1) (thickness 0.15))) (tstamp 026d120f-ebf7-4eac-92c3-c471ee0f691b) ) (fp_rect (start -7 -7) (end 7 7) (stroke (width 0.1) (type solid)) (fill none) (layer "F.Fab") (tstamp da35b3c5-bbfb-4a0f-93c1-7d130624ae95)) (pad "1" thru_hole circle (at 2.09 -5.08) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp 901a5a67-91a6-4f20-95b7-fb8ef41848fd)) (pad "1" thru_hole circle (at 3.175 -5.08) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp f2e86587-42dd-4f0e-b4a9-84ad697b0072)) (pad "1" thru_hole circle (at 3.175 -2.54) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp e3a3981b-dc15-4424-842b-c78f0cbd02a9)) (pad "1" thru_hole circle (at 4.26 -2.54) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp 6e4fbce0-035e-4971-9a57-73bb14b0402f)) (pad "2" thru_hole circle (at -4.26 -2.54) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp 896c746b-2282-4430-8cec-17c6dd96ecaf)) (pad "2" thru_hole circle (at -3.175 -5.08) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp 847f7b8b-cf51-48d3-896a-997061b53b2f)) (pad "2" thru_hole circle (at -3.175 -2.54) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp c4c5bcc7-d775-4521-b8bb-c18e801bfa48)) (pad "2" thru_hole circle (at -2.09 -5.08) (size 0.8 0.8) (drill 0.4) (layers "*.Cu" "*.Mask") (tstamp 70adb253-ee67-4715-9e19-048f544d4ffc)) ) ================================================ FILE: pcb/chrumm/fp-lib-table ================================================ (fp_lib_table (lib (name "footprints")(type "KiCad")(uri "${KIPRJMOD}/footprints.pretty")(options "")(descr "")) ) ================================================ FILE: pcb/chrumm/sym-lib-table ================================================ (sym_lib_table (version 7) (lib (name "chrumm")(type "KiCad")(uri "${KIPRJMOD}/chrumm.kicad_sym")(options "")(descr "")) )