text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.7.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="50" unitdist="mil" unit="mil" style="lines" multiple="1" display="yes" altdistance="0.025" altunitdist="inch" altunit="mil"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="yes" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="yes" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="yes" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="yes" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="yes" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="yes" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="yes" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="yes" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="yes" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="0" x2="89.6874" y2="0" width="0" layer="20"/>
<wire x1="89.6874" y1="0" x2="89.6874" y2="75.5904" width="0" layer="20"/>
<wire x1="0" y1="75.5904" x2="0" y2="0" width="0" layer="20"/>
<wire x1="0" y1="75.5904" x2="89.6874" y2="75.5904" width="0" layer="20"/>
<hole x="6.35" y="3.81" drill="3.175"/>
<hole x="83.3374" y="3.81" drill="3.175"/>
<hole x="83.3374" y="71.7804" drill="3.556"/>
<hole x="6.35" y="71.7804" drill="3.175"/>
</plain>
<libraries>
<library name="Keystone">
<packages>
<package name="3568">
<pad name="2" x="-4.953" y="-1.7018" drill="1.6002" shape="square"/>
<pad name="4" x="4.953" y="-1.7018" drill="1.6002" shape="square"/>
<pad name="1" x="-4.953" y="1.7018" drill="1.6002" shape="square"/>
<pad name="3" x="4.953" y="1.7018" drill="1.6002" shape="square"/>
<wire x1="-7.874" y1="-3.4544" x2="8.0264" y2="-3.4544" width="0.127" layer="21"/>
<wire x1="8.0264" y1="-3.4544" x2="8.0264" y2="3.3528" width="0.127" layer="21"/>
<wire x1="8.0264" y1="3.3528" x2="-7.874" y2="3.3528" width="0.127" layer="21"/>
<wire x1="-7.874" y1="3.3528" x2="-7.874" y2="-3.4544" width="0.127" layer="21"/>
<text x="-7.8994" y="3.7846" size="1.27" layer="25">>NAME </text>
<text x="-0.1778" y="3.8862" size="1.27" layer="27">>VALUE</text>
</package>
</packages>
</library>
<library name="BMS Lbr">
<packages>
<package name="1586041-6">
<wire x1="-6.858" y1="6.477" x2="6.858" y2="6.477" width="0.127" layer="21"/>
<wire x1="6.858" y1="6.477" x2="6.858" y2="-6.477" width="0.127" layer="21"/>
<wire x1="6.858" y1="-6.477" x2="-6.858" y2="-6.477" width="0.127" layer="21"/>
<wire x1="-6.858" y1="-6.477" x2="-6.858" y2="6.477" width="0.127" layer="21"/>
<pad name="3" x="4.191" y="2.7559" drill="1.8034"/>
<pad name="2" x="0" y="2.7559" drill="1.8034"/>
<pad name="1" x="-4.191" y="2.7559" drill="1.8034" shape="square"/>
<pad name="4" x="-4.191" y="-2.7559" drill="1.8034"/>
<pad name="5" x="0" y="-2.7559" drill="1.8034"/>
<pad name="6" x="4.191" y="-2.7559" drill="1.8034"/>
<text x="-0.2286" y="7.4168" size="1.27" layer="27">>VALUE</text>
<text x="-7.62" y="7.62" size="1.27" layer="25">>NAME</text>
</package>
<package name="1586042-8">
<wire x1="-9.017" y1="6.477" x2="9.017" y2="6.477" width="0.127" layer="21"/>
<text x="-0.2286" y="7.4168" size="1.27" layer="27">>VALUE</text>
<wire x1="9.017" y1="6.477" x2="9.017" y2="-6.477" width="0.127" layer="21"/>
<wire x1="9.017" y1="-6.477" x2="-9.017" y2="-6.477" width="0.127" layer="21"/>
<wire x1="-9.017" y1="-6.477" x2="-9.017" y2="6.477" width="0.127" layer="21"/>
<pad name="1" x="-6.2865" y="2.7559" drill="1.8034" shape="square"/>
<pad name="2" x="-2.0955" y="2.7559" drill="1.8034"/>
<pad name="3" x="2.0955" y="2.7559" drill="1.8034"/>
<pad name="4" x="6.2865" y="2.7559" drill="1.8034"/>
<pad name="5" x="-6.2865" y="-2.7559" drill="1.8034"/>
<pad name="6" x="-2.0955" y="-2.7559" drill="1.8034"/>
<pad name="7" x="2.0955" y="-2.7559" drill="1.8034"/>
<pad name="8" x="6.2865" y="-2.7559" drill="1.8034"/>
<text x="-7.62" y="7.62" size="1.27" layer="25">>NAME</text>
</package>
</packages>
</library>
<library name="panasonic">
<packages>
<package name="ACTP112">
<pad name="NC" x="0" y="0" drill="1.397" shape="square"/>
<pad name="COM" x="-9.4996" y="0.6604" drill="1.397" shape="square" rot="R90"/>
<pad name="NO" x="-3.5052" y="3.81" drill="1.397" shape="square"/>
<pad name="COIL2" x="4.953" y="0.6604" drill="1.0922" shape="square" rot="R90"/>
<pad name="COIL1" x="4.953" y="5.5118" drill="1.0922" shape="square"/>
<wire x1="0" y1="-1.2954" x2="-10.7442" y2="-1.2954" width="0.127" layer="21"/>
<wire x1="-10.795" y1="-1.27" x2="-10.8458" y2="-1.27" width="0.127" layer="21"/>
<wire x1="-10.8458" y1="-1.27" x2="-10.8458" y2="6.9342" width="0.127" layer="21"/>
<wire x1="-10.795" y1="6.8834" x2="6.6548" y2="6.8834" width="0.127" layer="21"/>
<wire x1="6.6548" y1="6.8834" x2="6.5278" y2="6.8326" width="0.127" layer="21"/>
<wire x1="0.0254" y1="-1.27" x2="6.5786" y2="-1.27" width="0.127" layer="21"/>
<wire x1="6.5786" y1="-1.27" x2="6.5786" y2="6.8326" width="0.127" layer="21"/>
<text x="-10.6426" y="7.747" size="1.27" layer="25">>Name</text>
<text x="-0.8636" y="7.7978" size="1.27" layer="25">>Value</text>
</package>
</packages>
</library>
<library name="molex">
<description>Developed by element14 :

element14 CAD Library consolidation.ulp
at 14/06/2012 11:09:42</description>
<packages>
<package name="15-97-7084">
<pad name="7" x="-2.0955" y="2.7559" drill="1.397"/>
<pad name="6" x="2.0955" y="2.7559" drill="1.397"/>
<pad name="5" x="6.2865" y="2.7559" drill="1.397"/>
<pad name="8" x="-6.2865" y="2.7559" drill="1.397"/>
<pad name="4" x="-6.2865" y="-2.7559" drill="1.397"/>
<pad name="3" x="-2.0955" y="-2.7559" drill="1.397"/>
<pad name="2" x="2.0955" y="-2.7559" drill="1.397"/>
<pad name="1" x="6.2865" y="-2.7559" drill="1.397" shape="square"/>
<wire x1="-8.89" y1="5.08" x2="8.89" y2="5.08" width="0.127" layer="21"/>
<wire x1="8.89" y1="5.08" x2="8.89" y2="-5.08" width="0.127" layer="21"/>
<wire x1="8.89" y1="-5.08" x2="-8.89" y2="-5.08" width="0.127" layer="21"/>
<wire x1="-8.89" y1="-5.08" x2="-8.89" y2="5.08" width="0.127" layer="21"/>
<text x="-7.62" y="5.08" size="1.27" layer="25">>NAME</text>
<text x="0" y="5.08" size="1.27" layer="27">>VALUE</text>
</package>
<package name="15-97-8043">
<pad name="3" x="2.10058125" y="2.7559" drill="1.397" diameter="1.8288"/>
<pad name="1" x="2.10058125" y="-2.7559" drill="1.397" diameter="1.8034" shape="square"/>
<pad name="2" x="-2.10058125" y="-2.7559" drill="1.397" diameter="1.8034"/>
<pad name="4" x="-2.10058125" y="2.7559" drill="1.397" diameter="1.8034"/>
<wire x1="-5.08" y1="5.08" x2="-5.08" y2="-5.08" width="0.127" layer="25"/>
<wire x1="-5.08" y1="-5.08" x2="5.08" y2="-5.08" width="0.127" layer="25"/>
<wire x1="5.08" y1="-5.08" x2="5.08" y2="5.08" width="0.127" layer="25"/>
<wire x1="5.08" y1="5.08" x2="-5.08" y2="5.08" width="0.127" layer="25"/>
<text x="-5.08" y="5.08" size="1.27" layer="25">>NAME</text>
<text x="1.27" y="5.08" size="1.27" layer="27">>VALUE</text>
</package>
</packages>
</library>
<library name="diodes-inc">
<packages>
<package name="SOT23-3">
<wire x1="1.4224" y1="0.6604" x2="1.4224" y2="-0.6604" width="0.1524" layer="51"/>
<wire x1="1.4224" y1="-0.6604" x2="-1.4224" y2="-0.6604" width="0.1524" layer="51"/>
<wire x1="-1.4224" y1="-0.6604" x2="-1.4224" y2="0.6604" width="0.1524" layer="51"/>
<wire x1="-1.4224" y1="0.6604" x2="1.4224" y2="0.6604" width="0.1524" layer="51"/>
<smd name="3" x="0" y="1.1" dx="1" dy="1.4" layer="1"/>
<smd name="2" x="0.95" y="-1.1" dx="1" dy="1.4" layer="1"/>
<smd name="1" x="-0.95" y="-1.1" dx="1" dy="1.4" layer="1"/>
<text x="-1.905" y="1.905" size="1.27" layer="25">>NAME</text>
<text x="-1.905" y="-3.175" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-0.2286" y1="0.7112" x2="0.2286" y2="1.2954" layer="51"/>
<rectangle x1="0.7112" y1="-1.2954" x2="1.1684" y2="-0.7112" layer="51"/>
<rectangle x1="-1.1684" y1="-1.2954" x2="-0.7112" y2="-0.7112" layer="51"/>
</package>
</packages>
</library>
<library name="relay">
<description>Relays

Eichhoff

Finder

Fujitsu

HAMLIN

OMRON

Matsushita

NAiS

Siemens

Schrack

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="VCF4-1000">
<pad name="NC" x="0.4064" y="0" drill="2.3368" shape="square"/>
<pad name="COIL2" x="0" y="8.4455" drill="2.3368" rot="R90"/>
<pad name="COM" x="9.4996" y="0" drill="2.3368"/>
<pad name="COIL1" x="0" y="-8.4455" drill="2.3368"/>
<pad name="NO" x="-8.4074" y="0" drill="2.3368" rot="R90"/>
<text x="13.97" y="-1.27" size="1.27" layer="25" rot="R90">COM</text>
<text x="-1.27" y="-1.27" size="1.27" layer="25" rot="R90">NC</text>
<text x="-10.16" y="-1.27" size="1.27" layer="25" rot="R90">NO</text>
<text x="3.81" y="-10.16" size="1.27" layer="25" rot="R90">Coil1</text>
<text x="3.81" y="6.35" size="1.27" layer="25" rot="R90">Coil2</text>
<hole x="-7.493" y="-6.5024" drill="2.1082"/>
<hole x="6.5024" y="6.5024" drill="2.1082"/>
<wire x1="13.2715" y1="12.0015" x2="-13.2715" y2="12.0015" width="0.127" layer="25"/>
<wire x1="-13.2715" y1="12.0015" x2="-13.2715" y2="-12.0015" width="0.127" layer="25"/>
<wire x1="-13.2588" y1="-12.0142" x2="13.2842" y2="-12.0142" width="0.127" layer="25"/>
<wire x1="13.2842" y1="-12.0142" x2="13.2842" y2="11.9888" width="0.127" layer="25"/>
<text x="-11.43" y="12.7" size="1.27" layer="25">>NAME</text>
<text x="1.27" y="12.7" size="1.27" layer="27">>VALUE</text>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="default">
<description language="de">EAGLE Design Rules

Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">EAGLE Design Rules

The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="8mil"/>
<param name="mdWirePad" value="8mil"/>
<param name="mdWireVia" value="8mil"/>
<param name="mdPadPad" value="8mil"/>
<param name="mdPadVia" value="8mil"/>
<param name="mdViaVia" value="8mil"/>
<param name="mdSmdPad" value="8mil"/>
<param name="mdSmdVia" value="8mil"/>
<param name="mdSmdSmd" value="8mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="40mil"/>
<param name="mdDrill" value="8mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="10mil"/>
<param name="msDrill" value="24mil"/>
<param name="msMicroVia" value="9.99mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="8mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="0mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="AutoGrid" value="1"/>
<param name="Efforts" value="0"/>
<param name="TopRouterVariant" value="1"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="a"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="a"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="F2" library="Keystone" package="3568" value="3568" x="41.91" y="29.21" rot="R270"/>
<element name="F3" library="Keystone" package="3568" value="3568" x="63.7286" y="29.2354" rot="R270"/>
<element name="F4" library="Keystone" package="3568" value="3568" x="10.8712" y="27.5082" rot="R270"/>
<element name="F5" library="Keystone" package="3568" value="3568" x="10.16" y="45.72" rot="R90"/>
<element name="F6" library="Keystone" package="3568" value="3568" x="71.1962" y="29.2608" rot="R270"/>
<element name="U$1" library="BMS Lbr" package="1586041-6" value="1586041-6" x="71.9074" y="47.3202"/>
<element name="U$2" library="BMS Lbr" package="1586042-8" value="1586042-8" x="55.88" y="8.89"/>
<element name="U$3" library="panasonic" package="ACTP112" value="ACTP112ACTP112" x="22.86" y="30.48" rot="R90"/>
<element name="U$4" library="panasonic" package="ACTP112" value="ACTP112ACTP112" x="57.15" y="30.48" rot="R90"/>
<element name="U$5" library="panasonic" package="ACTP112" value="ACTP112ACTP112" x="34.6964" y="30.48" rot="R90"/>
<element name="U$7" library="panasonic" package="ACTP112" value="ACTP112ACTP112" x="13.97" y="59.69"/>
<element name="U$8" library="molex" package="15-97-7084" value="15-97-7084" x="22.86" y="8.89" rot="R180"/>
<element name="U$9" library="molex" package="15-97-8043" value="15-97-8043" x="59.69" y="63.5"/>
<element name="U$10" library="diodes-inc" package="SOT23-3" value="MMBD4448H-7-F" x="45.5422" y="43.1546" rot="MR270"/>
<element name="U$11" library="diodes-inc" package="SOT23-3" value="MMBD4448H-7-F" x="54.102" y="36.8554" rot="MR180"/>
<element name="U$12" library="diodes-inc" package="SOT23-3" value="MMBD4448H-7-F" x="31.6484" y="36.8046" rot="MR180"/>
<element name="U$13" library="diodes-inc" package="SOT23-3" value="MMBD4448H-7-F" x="19.7358" y="36.8046" rot="MR180"/>
<element name="F1" library="Keystone" package="3568" value="3568" x="55.9054" y="48.641" rot="R270"/>
<element name="F7" library="Keystone" package="3568" value="3568" x="78.6892" y="29.21" rot="R270"/>
<element name="U$14" library="relay" package="VCF4-1000" value="VCF4-1000" x="35.56" y="53.34"/>
</elements>
<signals>
<signal name="FAN_12V">
<contactref element="U$3" pad="COM"/>
<contactref element="F4" pad="3"/>
<contactref element="F4" pad="4"/>
<polygon width="0.381" layer="1">
<vertex x="8.7884" y="24.7904"/>
<vertex x="6.858" y="24.0792"/>
<vertex x="6.858" y="21.5392"/>
<vertex x="8.89" y="19.05"/>
<vertex x="24.13" y="19.05"/>
<vertex x="24.638" y="20.6248"/>
<vertex x="24.638" y="21.8948"/>
<vertex x="23.0124" y="24.8412"/>
</polygon>
</signal>
<signal name="A23">
<contactref element="U$3" pad="COIL1"/>
<contactref element="U$1" pad="4"/>
<contactref element="U$13" pad="1"/>
<wire x1="34.29" y1="46.99" x2="59.69" y2="46.99" width="0.381" layer="16"/>
<wire x1="59.69" y1="46.99" x2="62.23" y2="44.45" width="0.381" layer="16"/>
<wire x1="62.23" y1="44.45" x2="67.8307" y2="44.45" width="0.381" layer="16"/>
<wire x1="68.58" y1="44.45" x2="67.8307" y2="44.45" width="0.381" layer="16"/>
<wire x1="67.8307" y1="44.45" x2="67.7164" y2="44.5643" width="0.381" layer="16"/>
<wire x1="18.7858" y1="37.9046" x2="18.8112" y2="40.4012" width="0.381" layer="16"/>
<wire x1="18.8112" y1="40.4012" x2="20.32" y2="41.91" width="0.381" layer="16"/>
<wire x1="20.32" y1="41.91" x2="29.21" y2="41.91" width="0.381" layer="16"/>
<wire x1="29.21" y1="41.91" x2="34.29" y2="46.99" width="0.381" layer="16"/>
<wire x1="17.3482" y1="35.433" x2="18.7858" y2="36.8706" width="0.381" layer="16"/>
<wire x1="18.7858" y1="36.8706" x2="18.7858" y2="37.9046" width="0.381" layer="16"/>
</signal>
<signal name="IGN_12V">
<contactref element="U$4" pad="COM"/>
<contactref element="F3" pad="3"/>
<contactref element="F3" pad="4"/>
<wire x1="56.4896" y1="20.9804" x2="59.7916" y2="24.2824" width="3.81" layer="1"/>
<wire x1="59.7916" y1="24.2824" x2="62.0268" y2="24.2824" width="3.81" layer="1"/>
<wire x1="65.4304" y1="24.2824" x2="62.0268" y2="24.2824" width="3.81" layer="1"/>
</signal>
<signal name="FUEL_12V">
<contactref element="U$5" pad="COM"/>
<contactref element="F2" pad="3"/>
<contactref element="F2" pad="4"/>
<polygon width="0.4064" layer="16">
<vertex x="33.02" y="19.05"/>
<vertex x="31.75" y="20.32"/>
<vertex x="31.75" y="24.13"/>
<vertex x="34.29" y="26.67"/>
<vertex x="44.45" y="26.67"/>
<vertex x="45.72" y="25.4"/>
<vertex x="45.72" y="22.86"/>
<vertex x="41.91" y="19.05"/>
</polygon>
</signal>
<signal name="A24">
<contactref element="U$4" pad="COIL1"/>
<contactref element="U$5" pad="COIL1"/>
<contactref element="U$1" pad="3"/>
<contactref element="U$11" pad="1"/>
<contactref element="U$12" pad="1"/>
<wire x1="76.0984" y1="50.0761" x2="78.1939" y2="50.0761" width="0.381" layer="16"/>
<wire x1="78.1939" y1="50.0761" x2="80.01" y2="48.26" width="0.381" layer="16"/>
<wire x1="51.6382" y1="35.433" x2="53.152" y2="36.9468" width="0.381" layer="16"/>
<wire x1="53.152" y1="36.9468" x2="53.152" y2="37.9554" width="0.381" layer="16"/>
<wire x1="53.152" y1="37.9554" x2="53.152" y2="38.4454" width="0.381" layer="16"/>
<wire x1="53.152" y1="38.4454" x2="53.8226" y2="39.116" width="0.381" layer="16"/>
<wire x1="53.8226" y1="39.116" x2="78.486" y2="39.116" width="0.381" layer="16"/>
<wire x1="78.486" y1="39.116" x2="80.01" y2="40.64" width="0.381" layer="16"/>
<wire x1="80.01" y1="40.64" x2="80.01" y2="48.26" width="0.381" layer="16"/>
<wire x1="30.6984" y1="37.9046" x2="30.6984" y2="36.9468" width="0.381" layer="16"/>
<wire x1="30.6984" y1="36.9468" x2="29.1846" y2="35.433" width="0.381" layer="16"/>
<wire x1="30.6984" y1="37.9046" x2="30.6984" y2="38.3184" width="0.381" layer="16"/>
<wire x1="30.6984" y1="38.3184" x2="31.75" y2="39.37" width="0.381" layer="16"/>
<wire x1="31.75" y1="39.37" x2="47.7012" y2="39.37" width="0.381" layer="16"/>
<wire x1="47.7012" y1="39.37" x2="51.6382" y2="35.433" width="0.381" layer="16"/>
</signal>
<signal name="FAN">
<contactref element="U$3" pad="NO"/>
<contactref element="U$8" pad="2"/>
<polygon width="0.381" layer="16">
<vertex x="16.51" y="27.94"/>
<vertex x="17.78" y="29.21"/>
<vertex x="20.32" y="29.21"/>
<vertex x="21.59" y="27.94"/>
<vertex x="21.59" y="22.86"/>
<vertex x="20.32" y="21.59"/>
<vertex x="20.32" y="20.32"/>
<vertex x="22.86" y="17.78"/>
<vertex x="22.86" y="11.43"/>
<vertex x="21.59" y="10.16"/>
<vertex x="20.32" y="10.16"/>
<vertex x="19.05" y="11.43"/>
<vertex x="19.05" y="13.97"/>
<vertex x="16.51" y="17.78"/>
</polygon>
</signal>
<signal name="IGNITION">
<contactref element="U$4" pad="NO"/>
<contactref element="U$8" pad="4"/>
<polygon width="0.508" layer="1" isolate="0.381">
<vertex x="27.432" y="12.573"/>
<vertex x="27.432" y="10.2108"/>
<vertex x="29.21" y="8.89"/>
<vertex x="40.64" y="8.89"/>
<vertex x="57.15" y="26.67"/>
<vertex x="57.15" y="28.0924"/>
<vertex x="54.9656" y="29.845"/>
<vertex x="51.8414" y="29.7942"/>
<vertex x="46.99" y="25.4"/>
<vertex x="46.99" y="22.86"/>
<vertex x="38.1" y="13.97"/>
<vertex x="29.21" y="13.97"/>
</polygon>
</signal>
<signal name="FUEL">
<contactref element="U$5" pad="NO"/>
<contactref element="U$8" pad="3"/>
<polygon width="0.381" layer="1">
<vertex x="22.86" y="11.43"/>
<vertex x="24.13" y="10.16"/>
<vertex x="25.4762" y="10.1092"/>
<vertex x="26.797" y="11.0236"/>
<vertex x="26.8478" y="13.0048"/>
<vertex x="31.75" y="17.78"/>
<vertex x="31.75" y="22.86"/>
<vertex x="34.29" y="25.4"/>
<vertex x="34.29" y="27.94"/>
<vertex x="31.75" y="30.48"/>
<vertex x="30.48" y="30.48"/>
<vertex x="25.4" y="24.13"/>
<vertex x="25.4" y="19.05"/>
<vertex x="22.86" y="16.51"/>
</polygon>
</signal>
<signal name="RECTIFIER">
<contactref element="U$7" pad="COM"/>
<contactref element="U$8" pad="1"/>
<polygon width="0.381" layer="16" isolate="0.254">
<vertex x="3.81" y="63.5"/>
<vertex x="2.54" y="60.96"/>
<vertex x="2.54" y="11.43"/>
<vertex x="3.81" y="10.16"/>
<vertex x="17.907" y="9.9314"/>
<vertex x="18.5674" y="12.7508"/>
<vertex x="16.51" y="16.51"/>
<vertex x="8.89" y="16.51"/>
<vertex x="6.35" y="19.05"/>
<vertex x="6.35" y="60.96"/>
<vertex x="5.08" y="63.5"/>
</polygon>
</signal>
<signal name="KILL_SWT">
<contactref element="U$1" pad="2"/>
<contactref element="U$10" pad="1"/>
<wire x1="71.9074" y1="50.0761" x2="71.9074" y2="50.0126" width="0.381" layer="16"/>
<wire x1="48.26" y1="41.91" x2="46.9368" y2="41.91" width="0.381" layer="16"/>
<wire x1="46.9368" y1="41.91" x2="46.6422" y2="42.2046" width="0.381" layer="16"/>
<wire x1="71.9074" y1="50.0126" x2="73.1774" y2="50.0126" width="0.381" layer="16"/>
<wire x1="73.1774" y1="50.0126" x2="74.93" y2="48.26" width="0.381" layer="16"/>
<wire x1="74.93" y1="48.26" x2="77.47" y2="48.26" width="0.381" layer="16"/>
<wire x1="77.47" y1="48.26" x2="78.74" y2="46.99" width="0.381" layer="16"/>
<wire x1="78.74" y1="46.99" x2="78.74" y2="41.91" width="0.381" layer="16"/>
<wire x1="78.74" y1="41.91" x2="77.47" y2="40.64" width="0.381" layer="16"/>
<wire x1="77.47" y1="40.64" x2="50.8" y2="40.64" width="0.381" layer="16"/>
<wire x1="50.8" y1="40.64" x2="48.26" y2="41.91" width="0.381" layer="16"/>
<wire x1="46.6422" y1="44.1046" x2="46.6422" y2="42.2046" width="0.381" layer="16"/>
</signal>
<signal name="12V_SHIFT_OUT">
<contactref element="U$1" pad="5"/>
<contactref element="U$1" pad="6"/>
<contactref element="F5" pad="3"/>
<contactref element="F5" pad="4"/>
<wire x1="11.8618" y1="50.673" x2="8.4582" y2="50.673" width="2.54" layer="1"/>
<wire x1="11.8618" y1="50.673" x2="59.817" y2="50.673" width="1.524" layer="16"/>
<wire x1="59.817" y1="50.673" x2="63.5" y2="46.99" width="1.524" layer="16"/>
<wire x1="63.5" y1="46.99" x2="69.4817" y2="46.99" width="1.524" layer="16"/>
<wire x1="69.4817" y1="46.99" x2="71.9074" y2="44.5643" width="1.524" layer="16"/>
<wire x1="71.9074" y1="44.5643" x2="76.0857" y2="44.5643" width="1.524" layer="16"/>
<wire x1="76.0857" y1="44.5643" x2="76.2" y2="44.45" width="1.524" layer="16"/>
<wire x1="76.0857" y1="44.5643" x2="76.0984" y2="44.5643" width="0" layer="19" extent="16-16"/>
</signal>
<signal name="12V_DAQ_OUT">
<contactref element="U$2" pad="1"/>
<contactref element="F6" pad="3"/>
<contactref element="F6" pad="4"/>
<contactref element="U$2" pad="2"/>
<wire x1="69.4944" y1="24.3078" x2="72.898" y2="24.3078" width="1.905" layer="1"/>
<wire x1="49.5935" y1="11.6459" x2="53.7845" y2="11.6459" width="1.27" layer="1"/>
<wire x1="53.7845" y1="11.6459" x2="53.7845" y2="11.8745" width="1.27" layer="1"/>
<wire x1="53.7845" y1="11.8745" x2="57.15" y2="15.24" width="1.27" layer="1"/>
<wire x1="57.15" y1="15.24" x2="63.5" y2="15.24" width="1.27" layer="1"/>
<wire x1="63.5" y1="15.24" x2="68.58" y2="20.32" width="1.27" layer="1"/>
<wire x1="68.58" y1="20.32" x2="68.58" y2="23.3934" width="1.27" layer="1"/>
<wire x1="68.58" y1="23.3934" x2="69.4944" y2="24.3078" width="1.27" layer="1"/>
</signal>
<signal name="GND">
<contactref element="U$2" pad="6"/>
<contactref element="U$2" pad="7"/>
<contactref element="U$2" pad="8"/>
<contactref element="U$8" pad="7"/>
<contactref element="U$8" pad="6"/>
<contactref element="U$8" pad="5"/>
<contactref element="U$7" pad="COIL2"/>
<contactref element="U$9" pad="4"/>
<contactref element="U$9" pad="3"/>
<contactref element="U$8" pad="8"/>
<via x="11.43" y="72.39" extent="1-16" drill="0.6"/>
<polygon width="0.508" layer="1" rank="2">
<vertex x="-1.016" y="76.7588"/>
<vertex x="90.17" y="76.2"/>
<vertex x="91.44" y="-1.27"/>
<vertex x="-1.27" y="-1.27"/>
</polygon>
<polygon width="0.508" layer="16" rank="3">
<vertex x="-1.27" y="77.47"/>
<vertex x="91.44" y="77.47"/>
<vertex x="90.17" y="-1.27"/>
<vertex x="-1.27" y="-1.27"/>
</polygon>
<contactref element="U$2" pad="5"/>
<via x="16.51" y="72.39" extent="1-16" drill="0.6"/>
<via x="21.59" y="72.39" extent="1-16" drill="0.6"/>
<via x="26.67" y="72.39" extent="1-16" drill="0.6"/>
<via x="31.75" y="72.39" extent="1-16" drill="0.6"/>
<via x="36.83" y="72.39" extent="1-16" drill="0.6"/>
<via x="41.91" y="72.39" extent="1-16" drill="0.6"/>
<via x="46.99" y="72.39" extent="1-16" drill="0.6"/>
<via x="52.07" y="72.39" extent="1-16" drill="0.6"/>
<via x="57.15" y="72.39" extent="1-16" drill="0.6"/>
<via x="62.23" y="72.39" extent="1-16" drill="0.6"/>
<via x="67.31" y="72.39" extent="1-16" drill="0.6"/>
<via x="72.39" y="72.39" extent="1-16" drill="0.6"/>
<via x="77.47" y="72.39" extent="1-16" drill="0.6"/>
</signal>
<signal name="12V">
<contactref element="F4" pad="1"/>
<contactref element="F4" pad="2"/>
<contactref element="F3" pad="1"/>
<contactref element="F3" pad="2"/>
<contactref element="F2" pad="1"/>
<contactref element="F2" pad="2"/>
<contactref element="F6" pad="1"/>
<contactref element="F6" pad="2"/>
<contactref element="F5" pad="1"/>
<contactref element="F5" pad="2"/>
<contactref element="U$5" pad="COIL2"/>
<contactref element="U$4" pad="COIL2"/>
<contactref element="U$3" pad="COIL2"/>
<contactref element="U$11" pad="3"/>
<contactref element="U$12" pad="3"/>
<contactref element="U$13" pad="3"/>
<contactref element="F7" pad="2"/>
<contactref element="F7" pad="1"/>
<contactref element="U$14" pad="COM"/>
<polygon width="0.381" layer="1" isolate="0.254">
<vertex x="38.1" y="43.18"/>
<vertex x="8.89" y="43.18"/>
<vertex x="6.35" y="41.91"/>
<vertex x="6.35" y="30.48"/>
<vertex x="8.89" y="29.21"/>
<vertex x="16.51" y="29.21"/>
<vertex x="20.32" y="31.75"/>
<vertex x="35.56" y="31.75"/>
<vertex x="38.1" y="30.48"/>
<vertex x="54.61" y="30.48"/>
<vertex x="55.88" y="31.75"/>
<vertex x="58.42" y="31.75"/>
<vertex x="60.96" y="29.21"/>
<vertex x="83.82" y="29.21"/>
<vertex x="86.36" y="31.75"/>
<vertex x="86.36" y="38.1"/>
<vertex x="82.55" y="40.64"/>
<vertex x="54.61" y="40.64"/>
<vertex x="49.53" y="45.72"/>
<vertex x="49.53" y="53.34"/>
<vertex x="46.99" y="55.88"/>
<vertex x="43.18" y="55.88"/>
<vertex x="40.64" y="53.34"/>
<vertex x="40.64" y="45.72"/>
</polygon>
<wire x1="22.1996" y1="35.433" x2="22.1996" y2="35.8726" width="0.381" layer="16"/>
<wire x1="54.102" y1="35.7554" x2="54.4244" y2="35.433" width="0.381" layer="16"/>
<wire x1="54.4244" y1="35.433" x2="56.4896" y2="35.433" width="0.381" layer="16"/>
<wire x1="31.6484" y1="35.7046" x2="33.7644" y2="35.7046" width="0.381" layer="16"/>
<wire x1="33.7644" y1="35.7046" x2="34.036" y2="35.433" width="0.381" layer="16"/>
<wire x1="19.7358" y1="35.7046" x2="21.928" y2="35.7046" width="0.381" layer="16"/>
<wire x1="21.928" y1="35.7046" x2="22.1996" y2="35.433" width="0.381" layer="16"/>
</signal>
<signal name="BAT_+12_FUSED">
<contactref element="U$1" pad="1"/>
<contactref element="F1" pad="3"/>
<contactref element="F1" pad="4"/>
<wire x1="54.2036" y1="43.688" x2="57.6072" y2="43.688" width="1.524" layer="1"/>
<wire x1="57.6072" y1="43.688" x2="61.3283" y2="43.688" width="1.524" layer="1"/>
<wire x1="61.3283" y1="43.688" x2="67.7164" y2="50.0761" width="1.524" layer="1"/>
</signal>
<signal name="12V_FUSED_ECU">
<contactref element="F7" pad="3"/>
<contactref element="F7" pad="4"/>
<contactref element="U$2" pad="4"/>
<contactref element="U$2" pad="3"/>
<wire x1="76.9874" y1="24.257" x2="80.391" y2="24.257" width="1.905" layer="1"/>
<wire x1="57.9755" y1="11.6459" x2="62.1665" y2="11.6459" width="1.27" layer="1"/>
<wire x1="62.1665" y1="11.6459" x2="66.2559" y2="11.6459" width="1.27" layer="1"/>
<wire x1="66.2559" y1="11.6459" x2="76.2" y2="21.59" width="1.27" layer="1"/>
<wire x1="76.2" y1="21.59" x2="76.2" y2="23.4696" width="1.27" layer="1"/>
<wire x1="76.2" y1="23.4696" x2="76.9874" y2="24.257" width="1.27" layer="1"/>
</signal>
<signal name="KILL_SWITCH_DIODE">
<contactref element="U$14" pad="COIL1"/>
<contactref element="U$10" pad="3"/>
<wire x1="44.4422" y1="43.1546" x2="37.2999" y2="43.1546" width="0.381" layer="16"/>
<wire x1="37.2999" y1="43.1546" x2="35.56" y2="44.8945" width="0.381" layer="16"/>
</signal>
<signal name="CHARGE_SIG">
<contactref element="U$14" pad="COIL2"/>
<contactref element="U$7" pad="COIL1"/>
<wire x1="18.923" y1="65.2018" x2="26.702784375" y2="63.022715625" width="1.524" layer="16"/>
<wire x1="26.702784375" y1="63.022715625" x2="35.56" y2="61.7855" width="1.524" layer="16"/>
</signal>
<signal name="BAT_12V">
<contactref element="U$14" pad="NO"/>
<contactref element="F1" pad="1"/>
<contactref element="F1" pad="2"/>
<contactref element="U$7" pad="NO"/>
<contactref element="U$9" pad="2"/>
<contactref element="U$9" pad="1"/>
<polygon width="0.381" layer="1" isolate="0.3048">
<vertex x="8.89" y="64.77"/>
<vertex x="10.16" y="66.04"/>
<vertex x="13.97" y="66.04"/>
<vertex x="17.78" y="62.23"/>
<vertex x="20.32" y="62.23"/>
<vertex x="22.86" y="64.77"/>
<vertex x="27.94" y="64.77"/>
<vertex x="30.48" y="67.31"/>
<vertex x="53.34" y="67.31"/>
<vertex x="57.15" y="63.5"/>
<vertex x="63.5" y="63.5"/>
<vertex x="64.77" y="62.23"/>
<vertex x="64.77" y="55.88"/>
<vertex x="60.96" y="52.07"/>
<vertex x="52.07" y="52.07"/>
<vertex x="46.99" y="57.15"/>
<vertex x="35.56" y="57.15"/>
<vertex x="29.21" y="50.8"/>
<vertex x="17.78" y="50.8"/>
<vertex x="8.89" y="58.42"/>
</polygon>
</signal>
</signals>
</board>
</drawing>
</eagle>

repository: syrianah/EAGLE-Designs

path: /EAGLE Models/PDM/PDM2016/PDM.brd

repo_name: syrianah/EAGLE-Designs

extension: brd


text:
package main

import (
	"os"
	"path"
	"runtime"
	"text/template"
	"time"
)

type Conf struct {
	TimeGenerated string // Time a Configuration was Created
	Zoos          []Zoo  // List of Zoos
}

type Zoo struct {
	Name    string   // Name of Zoo
	Climate string   // Climate of Area where Zoo is located
	Animals []Animal // Animals in Zoo
}

type Animal struct {
	Name     string   // Name of the Animal
	Climates []string // Climates where it can live
}

var (
	// Animals
	Alligator = Animal{Name: "Alligator", Climates: []string{"Tropical", "SubTropical"}}
	Crocodile = Animal{Name: "Crocodile", Climates: []string{"Tropical", "SubTropical"}}
	ArcticFox = Animal{Name: "ArcticFox", Climates: []string{"Arctic", "SubArctic"}}
	Puffin    = Animal{Name: "Puffin", Climates: []string{"Arctic", "SubArctic"}}

	// Zoos
	miamiZoo    = Zoo{Name: "MiamiZoo", Climate: "SubTropical", Animals: []Animal{Alligator, Puffin}}
	reykjavikZoo = Zoo{Name: "ReykjavikZoo", Climate: "SubArctic", Animals: []Animal{ArcticFox, Crocodile}}
)

func main() {
	conf := Conf{TimeGenerated: time.Now().UTC().String(), Zoos: []Zoo{miamiZoo, reykjavikZoo}}

	// Gets the directory this file is in
	// See: https://stackoverflow.com/questions/32163425/golang-how-to-get-the-directory-of-the-package-the-file-is-in-not-the-current-w
	_, filename, _, ok := runtime.Caller(0)
	if !ok {
		panic("No caller information")
	}

	// The template name must match a file in ParseFiles which is the main template
	// See: https://stackoverflow.com/questions/10199219/go-template-function
	tmpl, err := template.New("zoo.tmpl").ParseFiles(path.Dir(filename) + "/zoo.tmpl")
	if err != nil {
		panic(err)
	}

	// Here we use the template and conf to make to generate textual output
	// We are using 'os.Stdout` to output to screen, a file can be used instead
	err = tmpl.Execute(os.Stdout, conf)
	if err != nil {
		panic(err)
	}

}

license: MIT

repository: jitendraky/go-templating

license_type: permissive

repo_name: jitendraky/go-templating

branch_name: refs/heads/master

extension: go


text:
/**
 * Cut the sticks
 *
 * <https://www.hackerrank.com/challenges/cut-the-sticks>
 *
 * Author: Eddo W. Hintoso
 * E-mail: eddo.hintoso+github@gmail.com
 */

#include <algorithm>
#include <iostream>

int main(void)
{
    int n; // number of sticks
    int minlen;

    std::cin >> n;
    int* arr = new int[n];
    for (int arr_i = 0; arr_i < n; arr_i++) {
        std::cin >> arr[arr_i];
    }

    // sort the array
    std::sort(arr, arr+n);
    int sticks_ctr = n;
    minlen = arr[0];

    // everytime the value changes
    // (meaning all the minimum length so far has been removed)
    // print the counter which keeps track of vector size
    std::cout << sticks_ctr << std::endl;
    for (int i = 0; i < n; i++) {
        if (minlen != arr[i]) {
            minlen = arr[i];
            std::cout << sticks_ctr << std::endl;
        }
        sticks_ctr--;
    }

    delete [] arr;
    return 0;
}

repository: eddowh/HackerRank

repo_name: eddowh/HackerRank

extension: cpp


text:
file(REMOVE_RECURSE
  "CMakeFiles/OOP_Project.dir/main.cpp.o"
  "CMakeFiles/OOP_Project.dir/Player.cpp.o"
  "CMakeFiles/OOP_Project.dir/Game_Manager.cpp.o"
  "CMakeFiles/OOP_Project.dir/Bullet.cpp.o"
  "CMakeFiles/OOP_Project.dir/UI.cpp.o"
  "OOP_Project.pdb"
  "OOP_Project"
)

# Per-language clean rules from dependency scanning.
foreach(lang CXX)
  include(CMakeFiles/OOP_Project.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

extension: cmake


text:
/*
* Copyright 2023 AccelByte Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
 */

package kafkaprometheus

import (
	"github.com/prometheus/client_golang/prometheus"
)

// WriterCollector implements prometheus' Collector interface, for kafka writer.
type WriterCollector struct {
	Client KafkaStatCollector
}

var (
	writerLabels            = []string{"topic"}
	writerWrites            = prometheus.NewCounterVec(prometheus.CounterOpts{Name: writerPrefix + "writes", Help: "Total number of write attempts made by the Kafka writer."}, writerLabels)
	writerMessages          = prometheus.NewCounterVec(prometheus.CounterOpts{Name: writerPrefix + "messages", Help: "Total number of messages written by the Kafka writer."}, writerLabels)
	writerBytes             = prometheus.NewCounterVec(prometheus.CounterOpts{Name: writerPrefix + "message_bytes", Help: "Total number of bytes written by the Kafka writer."}, writerLabels)
	writerErrors            = prometheus.NewCounterVec(prometheus.CounterOpts{Name: writerPrefix + "errors", Help: "Total number of errors encountered by the Kafka writer."}, writerLabels)
	writerRetries           = prometheus.NewCounterVec(prometheus.CounterOpts{Name: writerPrefix + "retries_count_summary", Help: "Summary of retries made by the Kafka writer."}, writerLabels)
	writerBatchTime         = prometheus.NewSummaryVec(prometheus.SummaryOpts{Name: writerPrefix + "batch_seconds", Help: "Summary of batch time taken by the Kafka writer."}, writerLabels)
	writerBatchQueueTime    = prometheus.NewSummaryVec(prometheus.SummaryOpts{Name: writerPrefix + "batch_queue_seconds", Help: "Summary of time taken in the batch queue by the Kafka writer."}, writerLabels)
	writerWriteTime         = prometheus.NewSummaryVec(prometheus.SummaryOpts{Name: writerPrefix + "write_seconds", Help: "Summary of time taken for write operations by the Kafka writer."}, writerLabels)
	writerWaitTime          = prometheus.NewSummaryVec(prometheus.SummaryOpts{Name: writerPrefix + "wait_seconds", Help: "Summary of wait time before write operations by the Kafka writer."}, writerLabels)
	writerBatchSizeSummary  = prometheus.NewSummaryVec(prometheus.SummaryOpts{Name: writerPrefix + "batch_size_summary", Help: "Summary of batch sizes used by the Kafka writer."}, writerLabels)
	writerBatchBytesSummary = prometheus.NewSummaryVec(prometheus.SummaryOpts{Name: writerPrefix + "batch_bytes_summary", Help: "Summary of bytes written per batch by the Kafka writer."}, writerLabels)
)

func (w *WriterCollector) Collect(metrics chan<- prometheus.Metric) {
	// First collect the stats for all topic writers
	stats, topics := w.Client.GetWriterStats()

	// Then send those stats to Prometheus
	for i, topic := range topics {
		s := stats[i]
		/*if s.Writes == 0 && s.Messages == 0 && s.Bytes == 0 && s.Errors == 0 && s.Retries == 0 {
			continue
		}*/

		metrics <- counter(writerWrites, s.Writes, topic)
		metrics <- counter(writerMessages, s.Messages, topic)
		metrics <- counter(writerBytes, s.Bytes, topic)
		metrics <- counter(writerErrors, s.Errors, topic)
		metrics <- counter(writerRetries, s.Retries, topic)

		metrics <- summaryDuration(writerBatchTime, s.BatchTime, topic)
		metrics <- summaryDuration(writerBatchQueueTime, s.BatchQueueTime, topic)
		metrics <- summaryDuration(writerWriteTime, s.WriteTime, topic)
		metrics <- summaryDuration(writerWaitTime, s.WaitTime, topic)
		metrics <- summaryCount(writerBatchSizeSummary, s.BatchSize, topic)
		metrics <- summaryCount(writerBatchBytesSummary, s.BatchBytes, topic)
	}
}

func (w *WriterCollector) Describe(c chan<- *prometheus.Desc) {
	writerWrites.Describe(c)
	writerMessages.Describe(c)
	writerBytes.Describe(c)
	writerErrors.Describe(c)
	writerRetries.Describe(c)
	writerBatchTime.Describe(c)
	writerBatchQueueTime.Describe(c)
	writerWriteTime.Describe(c)
	writerWaitTime.Describe(c)
	writerBatchSizeSummary.Describe(c)
	writerBatchBytesSummary.Describe(c)
}

repository: AccelByte/eventstream-go-sdk

repo_name: AccelByte/eventstream-go-sdk

gha_language: Go


text:
package s3modelprovider

import (
	"fmt"
	"os"
	"path"
	"strconv"
	"strings"

	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
	"github.com/aws/aws-sdk-go/service/s3/s3manager"
	log "github.com/sirupsen/logrus"

	"github.com/mKaloer/TFServingCache/pkg/cachemanager"
)

type S3Location struct {
	Bucket string
	// The model "folder" on s3
	KeyPrefix string
}

type S3ModelProvider struct {
	session      *session.Session
	downloader   *s3manager.Downloader
	s3           *s3.S3
	Bucket       string
	ModelBaseDir string
}

func NewS3ModelProvider(bucket string, modelBaseDir string) (*S3ModelProvider, error) {
	sess, err := session.NewSession()
	if err != nil {
		log.WithError(err).Error("Could not create S3 session")
		return nil, err
	}

	downloader := s3manager.NewDownloader(sess)
	s3 := s3.New(sess)
	provider := &S3ModelProvider{
		session:      sess,
		downloader:   downloader,
		s3:           s3,
		Bucket:       bucket,
		ModelBaseDir: modelBaseDir,
	}
	return provider, nil
}

func (provider S3ModelProvider) LoadModel(modelName string, modelVersion int64, destinationDir string) (*cachemanager.Model, error) {
	log.Infof("Fetching model from S3 %s:%d", modelName, modelVersion)
	modelLocation := provider.getKeyForModel(modelName, modelVersion)

	destPath := path.Join(destinationDir, modelName, strconv.FormatInt(modelVersion, 10))
	err := os.MkdirAll(destPath, 0777)
	if err != nil {
		log.WithError(err).Errorf("Could not create model dir: %s", destPath)
		return nil, err
	}

	totalSize := int64(0)

	downloadObjFunc := func(relativeKey string, obj *s3.Object) error {
		if strings.Contains(relativeKey, "/") {
			// Make sure dir is created
			paths := strings.Split(relativeKey, "/")
			objFolder := path.Join(append([]string{destPath}, paths[:len(paths)-1]...)...)
			err := os.MkdirAll(objFolder, 0777)
			if err != nil {
				log.WithError(err).Errorf("Could not create object dir: %s", objFolder)
				return err
			}
		}
		// Download to file
		fname := path.Join(destPath, relativeKey)
		f, err := os.Create(fname)
		if err != nil {
			log.WithError(err).Errorf("Could not create object file: %s", fname)
			return err
		}
		sizeOnDisk, err := provider.downloader.Download(f, &s3.GetObjectInput{
			Bucket: &modelLocation.Bucket,
			Key:    obj.Key,
		})
		if err != nil {
			log.WithError(err).Errorf("Could not download object file: %s", *obj.Key)
			return err
		}
		totalSize += sizeOnDisk

		return nil
	}

	err = provider.modelObjectApply(modelLocation, downloadObjFunc)
	if err != nil {
		log.WithError(err).Errorf("Could not download model: %s:%d", modelName, modelVersion)
		return nil, err
	}

	return &cachemanager.Model{
		Identifier: cachemanager.ModelIdentifier{ModelName: modelName, Version: modelVersion},
		Path:       path.Join(modelName, strconv.FormatInt(modelVersion, 10)),
		SizeOnDisk: totalSize,
	}, nil
}

func (provider S3ModelProvider) ModelSize(modelName string, modelVersion int64) (int64, error) {
	modelLocation := provider.getKeyForModel(modelName, modelVersion)
	totalSize := int64(0)
	countSizeFunc := func(relativeKey string, obj *s3.Object) error {
		totalSize += *obj.Size
		return nil
	}

	err := provider.modelObjectApply(modelLocation, countSizeFunc)
	if err != nil {
		log.WithError(err).Errorf("Could not get model size: %s:%d", modelName, modelVersion)
		return 0, err
	}
	return totalSize, nil
}

func (provider *S3ModelProvider) modelObjectApply(modelLocation S3Location,
	applyFun func(string, *s3.Object) error) error {
	// Download from s3
	isTruncated := true
	var continuationToken *string = nil
	for isTruncated {
		modelObjects, err := provider.s3.ListObjectsV2(&s3.ListObjectsV2Input{
			Bucket:            &modelLocation.Bucket,
			Prefix:            &modelLocation.KeyPrefix,
			ContinuationToken: continuationToken,
		})

		if err != nil {
			log.WithError(err).Errorf("Error accessing model on S3. Bucket: %s, keyPrefix: %s", modelLocation.Bucket, modelLocation.KeyPrefix)
			return err
		}

		// download files
		for _, object := range modelObjects.Contents {

			relativeName := strings.TrimPrefix(*object.Key, modelLocation.KeyPrefix)
			if !strings.HasSuffix(relativeName, "/") {
				// Is not a folder
				err = applyFun(relativeName, object)
				if err != nil {
					log.WithError(err).Errorf("Apply func returned error on key: %s", *object.Key)
					return err
				}
			}
		}

		isTruncated = *modelObjects.IsTruncated
		continuationToken = modelObjects.ContinuationToken
	}
	return nil
}

func (provider S3ModelProvider) getKeyForModel(modelName string, modelVersion int64) S3Location {
	modelPrefix := provider.ModelBaseDir
	if len(modelPrefix) > 0 {
		modelPrefix = fmt.Sprintf("%s/", modelPrefix)
	}
	return S3Location{
		Bucket:    provider.Bucket,
		KeyPrefix: fmt.Sprintf("%s%s/%d/", modelPrefix, modelName, modelVersion),
	}
}

repository: mKaloer/TFServingCache

repo_name: mKaloer/TFServingCache