text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="9.5.2">
<drawing>
<settings>
<setting alwaysvectorfont="yes"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1" unitdist="mm" unit="mm" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="mm" altunit="mm"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<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="24" 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="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" 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="no" 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="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" 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="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="no" active="no"/>
<layer number="89" name="SimProbes" color="9" 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="99" name="SpiceOrder" color="7" 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="no" active="no"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="no" active="no"/>
<layer number="103" name="tMap" color="7" fill="1" visible="no" active="no"/>
<layer number="104" name="Name" color="16" fill="1" visible="no" active="no"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="no" active="no"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="no" active="no"/>
<layer number="107" name="Crop" color="7" fill="1" visible="no" active="no"/>
<layer number="108" name="tplace-old" color="10" fill="1" visible="no" active="no"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="no" active="no"/>
<layer number="110" name="fp0" color="7" fill="1" visible="no" active="no"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="no" active="no"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="no" active="no"/>
<layer number="113" name="IDFDebug" color="4" fill="1" visible="no" active="no"/>
<layer number="114" name="Badge_Outline" color="7" fill="1" visible="no" active="no"/>
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="no" active="no"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="no" active="no"/>
<layer number="117" name="PM_Ref" color="7" fill="1" visible="no" active="no"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="no"/>
<layer number="119" name="PF_Ref" color="7" fill="1" visible="no" active="no"/>
<layer number="120" name="WFL_Ref" color="7" fill="1" visible="no" active="no"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="no" active="no"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="no" active="no"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="no" active="no"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="no" active="no"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="no" active="no"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="no" active="no"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="no" active="no"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="no" active="no"/>
<layer number="129" name="Mask" color="7" fill="1" visible="no" active="no"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="no" active="no"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="no" active="no"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="no" active="no"/>
<layer number="150" name="Notes" color="7" fill="1" visible="no" active="no"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="no" active="no"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="no" active="no"/>
<layer number="153" name="FabDoc1" color="7" fill="1" visible="no" active="no"/>
<layer number="154" name="FabDoc2" color="7" fill="1" visible="no" active="no"/>
<layer number="155" name="FabDoc3" color="7" fill="1" visible="no" active="no"/>
<layer number="199" name="Contour" color="7" fill="1" visible="no" active="no"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="no"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="no" active="no"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="no" active="no"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="no" active="no"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="no" active="no"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="no" active="no"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="no" active="no"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="no" active="no"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="no" active="no"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="no" active="no"/>
<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="225" name="225bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="no" active="no"/>
<layer number="227" name="227bmp" color="11" fill="1" visible="no" active="no"/>
<layer number="228" name="228bmp" color="10" fill="1" visible="no" active="no"/>
<layer number="229" name="229bmp" color="14" fill="1" visible="no" active="no"/>
<layer number="230" name="230bmp" color="12" fill="1" visible="no" active="no"/>
<layer number="231" name="231bmp" color="9" fill="1" visible="no" active="no"/>
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="no"/>
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="no"/>
<layer number="248" name="Housing" color="7" fill="1" visible="no" active="no"/>
<layer number="249" name="Edge" color="7" 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="no" active="no"/>
<layer number="255" name="routoute" color="7" fill="1" visible="no" active="no"/>
</layers>
<board>
<plain>
<wire x1="0" y1="-1.5" x2="74.8" y2="-1.5" width="0" layer="20"/>
<wire x1="74.8" y1="-1.5" x2="74.8" y2="23" width="0" layer="20"/>
<wire x1="74.8" y1="23" x2="0" y2="23" width="0" layer="20"/>
<wire x1="0" y1="23" x2="0" y2="-1.5" width="0" layer="20"/>
<hole x="3.5" y="18.5" drill="3.5"/>
<hole x="71.3" y="18.5" drill="3.5"/>
<hole x="37.4" y="18.5" drill="3.5"/>
<hole x="17.75" y="1.5" drill="3.5"/>
<hole x="37.4" y="1.5" drill="3.5"/>
<hole x="57" y="1.5" drill="3.5"/>
<text x="37.5" y="22.1" size="1" layer="26" rot="MR180" align="center">4_Button_Array_LED Rev 2.0</text>
<text x="37.5" y="14.2" size="1" layer="26" rot="MR180" align="center">Steivan Claglüna</text>
</plain>
<libraries>
<library name="SparkFun-LED" urn="urn:adsk.eagle:library:529">
<description>
SparkFun LEDs

This library contains discrete LEDs for illumination or indication, but no displays.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="LED_3MM" urn="urn:adsk.eagle:footprint:39306/1" library_version="1">
<description>
LED 3MM PTH

3 mm, round.

Specifications:

Pin count: 2

Pin pitch: 0.1inch

Diameter: 3mm

Example device(s):

LED

</description>
<wire x1="1.5748" y1="-1.27" x2="1.5748" y2="1.27" width="0.254" layer="51"/>
<wire x1="0" y1="2.032" x2="1.561" y2="1.3009" width="0.254" layer="22" curve="-50.193108" cap="flat"/>
<wire x1="-1.7929" y1="0.9562" x2="0" y2="2.032" width="0.254" layer="22" curve="-61.926949" cap="flat"/>
<wire x1="0" y1="-2.032" x2="1.5512" y2="-1.3126" width="0.254" layer="22" curve="49.763022" cap="flat"/>
<wire x1="-1.7643" y1="-1.0082" x2="0" y2="-2.032" width="0.254" layer="22" curve="60.255215" cap="flat"/>
<wire x1="-2.032" y1="0" x2="-1.7891" y2="0.9634" width="0.254" layer="51" curve="-28.301701" cap="flat"/>
<wire x1="-2.032" y1="0" x2="-1.7306" y2="-1.065" width="0.254" layer="51" curve="31.60822" cap="flat"/>
<wire x1="1.5748" y1="1.2954" x2="1.5748" y2="0.7874" width="0.254" layer="22"/>
<wire x1="1.5748" y1="-1.2954" x2="1.5748" y2="-0.8382" width="0.254" layer="22"/>
<wire x1="0" y1="2.032" x2="1.561" y2="1.3009" width="0.254" layer="21" curve="-50.193108" cap="flat"/>
<wire x1="-1.7929" y1="0.9562" x2="0" y2="2.032" width="0.254" layer="21" curve="-61.926949" cap="flat"/>
<wire x1="0" y1="-2.032" x2="1.5512" y2="-1.3126" width="0.254" layer="21" curve="49.763022" cap="flat"/>
<wire x1="-1.7643" y1="-1.0082" x2="0" y2="-2.032" width="0.254" layer="21" curve="60.255215" cap="flat"/>
<wire x1="1.5748" y1="1.2954" x2="1.5748" y2="0.7874" width="0.254" layer="21"/>
<wire x1="1.5748" y1="-1.2954" x2="1.5748" y2="-0.8382" width="0.254" layer="21"/>
<pad name="A" x="-1.27" y="0" drill="0.8128" diameter="1.8796"/>
<pad name="K" x="1.27" y="0" drill="0.8128" diameter="1.8796"/>
<text x="0" y="2.286" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-2.286" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
</package>
</packages>
<packages3d>
<package3d name="LED_3MM" urn="urn:adsk.eagle:package:39361/1" type="box" library_version="1">
<description>LED 3MM PTH

3 mm, round.

Specifications:
Pin count: 2
Pin pitch: 0.1inch
Diameter: 3mm

Example device(s):
LED</description>
<packageinstances>
<packageinstance name="LED_3MM"/>
</packageinstances>
</package3d>
</packages3d>
</library>
<library name="SparkFun-Resistors" urn="urn:adsk.eagle:library:532">
<description>
SparkFun Resistors

This library contains resistors. Reference designator:R.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="1206" urn="urn:adsk.eagle:footprint:39619/1" library_version="1">
<description>
Generic 3216 (1206) package

0.2mm courtyard excess rounded to nearest 0.05mm.
</description>
<wire x1="-2.4" y1="1.1" x2="2.4" y2="1.1" width="0.0508" layer="39"/>
<wire x1="2.4" y1="-1.1" x2="-2.4" y2="-1.1" width="0.0508" layer="39"/>
<wire x1="-2.4" y1="-1.1" x2="-2.4" y2="1.1" width="0.0508" layer="39"/>
<wire x1="2.4" y1="1.1" x2="2.4" y2="-1.1" width="0.0508" layer="39"/>
<wire x1="-0.965" y1="0.787" x2="0.965" y2="0.787" width="0.1016" layer="51"/>
<wire x1="-0.965" y1="-0.787" x2="0.965" y2="-0.787" width="0.1016" layer="51"/>
<smd name="1" x="-1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<smd name="2" x="1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<text x="0" y="1.143" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-1.143" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
<rectangle x1="-1.7018" y1="-0.8509" x2="-0.9517" y2="0.8491" layer="51"/>
<rectangle x1="0.9517" y1="-0.8491" x2="1.7018" y2="0.8509" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
</package>
</packages>
<packages3d>
<package3d name="1206" urn="urn:adsk.eagle:package:39654/1" type="box" library_version="1">
<description>Generic 3216 (1206) package
0.2mm courtyard excess rounded to nearest 0.05mm.</description>
<packageinstances>
<packageinstance name="1206"/>
</packageinstances>
</package3d>
</packages3d>
</library>
<library name="SparkFun-Switches">
<description>
SparkFun Switches, Buttons, Encoders

In this library you'll find switches, buttons, joysticks, and anything that moves to create or disrupt an electrical connection.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="TACTILE_SWITCH_LED_PTH_12MM">
<description>
Momentary Switch (Pushbutton) - SPST - w/ LED - PTH

Normally-open (NO) SPST momentary switches (buttons, pushbuttons), with a built-in LED.

Dimensional Drawing
</description>
<wire x1="5" y1="-1.3" x2="5" y2="-0.7" width="0.2032" layer="51"/>
<wire x1="5" y1="-0.7" x2="4.5" y2="-0.2" width="0.2032" layer="51"/>
<wire x1="5" y1="0.2" x2="5" y2="1" width="0.2032" layer="51"/>
<wire x1="-6" y1="4" x2="-6" y2="4.85" width="0.2032" layer="21"/>
<wire x1="-4.85" y1="6" x2="4.85" y2="6" width="0.2032" layer="21"/>
<wire x1="6" y1="4.85" x2="6" y2="4" width="0.2032" layer="21"/>
<wire x1="6" y1="1" x2="6" y2="-1" width="0.2032" layer="21"/>
<wire x1="6" y1="-4" x2="6" y2="-4.85" width="0.2032" layer="21"/>
<wire x1="4.85" y1="-6" x2="-4.85" y2="-6" width="0.2032" layer="21"/>
<wire x1="-6" y1="-4.85" x2="-6" y2="-4" width="0.2032" layer="21"/>
<wire x1="-6" y1="-1" x2="-6" y2="1" width="0.2032" layer="21"/>
<wire x1="4.85" y1="6" x2="6" y2="4.85" width="0.2032" layer="21"/>
<wire x1="-6" y1="4.85" x2="-4.85" y2="6" width="0.2032" layer="21"/>
<wire x1="-4.85" y1="-6" x2="-6" y2="-4.85" width="0.2032" layer="21"/>
<wire x1="6" y1="-4.85" x2="4.85" y2="-6" width="0.2032" layer="21"/>
<wire x1="6" y1="1" x2="5" y2="1" width="0.2032" layer="21"/>
<wire x1="5" y1="1" x2="5" y2="4" width="0.2032" layer="21"/>
<wire x1="5" y1="4" x2="6" y2="4" width="0.2032" layer="21"/>
<wire x1="6" y1="-1" x2="5" y2="-1" width="0.2032" layer="21"/>
<wire x1="5" y1="-1" x2="5" y2="-4" width="0.2032" layer="21"/>
<wire x1="5" y1="-4" x2="6" y2="-4" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="-0.635" x2="0.635" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="0.635" y1="-0.635" x2="0" y2="0.635" width="0.2032" layer="21"/>
<wire x1="0" y1="0.635" x2="-0.635" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="0.635" x2="0" y2="0.635" width="0.2032" layer="21"/>
<wire x1="0" y1="0.635" x2="0.635" y2="0.635" width="0.2032" layer="21"/>
<circle x="0" y="0" radius="3.5" width="0.2032" layer="21"/>
<circle x="-4" y="4" radius="0.4" width="0.9" layer="21"/>
<circle x="4" y="4" radius="0.4" width="0.9" layer="21"/>
<circle x="4" y="-4" radius="0.4" width="0.9" layer="21"/>
<circle x="-4" y="-4" radius="0.4" width="0.9" layer="21"/>
<pad name="1" x="-6.25" y="2.5" drill="1.2" diameter="2.159"/>
<pad name="2" x="6.25" y="2.5" drill="1.2" diameter="2.159"/>
<pad name="3" x="-6.25" y="-2.5" drill="1.2" diameter="2.159"/>
<pad name="4" x="6.25" y="-2.5" drill="1.2" diameter="2.159"/>
<pad name="C" x="0" y="6.75" drill="0.8" diameter="1.6764"/>
<pad name="A" x="0" y="-6.75" drill="0.8" diameter="1.6764"/>
<hole x="0" y="4.5" drill="1.6"/>
<hole x="0" y="-4.5" drill="1.6"/>
<text x="3.81" y="6.35" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>Name</text>
<text x="3.81" y="-6.35" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>Value</text>
<wire x1="0.635" y1="-2.413" x2="-0.635" y2="-2.413" width="0.2032" layer="21"/>
<wire x1="0" y1="-3.048" x2="0" y2="-1.778" width="0.2032" layer="21"/>
<wire x1="0.635" y1="2.413" x2="-0.635" y2="2.413" width="0.2032" layer="21"/>
</package>
</packages>
</library>
<library name="SparkFun-Connectors" urn="urn:adsk.eagle:library:16430189">
<description>
SparkFun Connectors

This library contains electrically-functional connectors.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="2X3-SHROUDED" urn="urn:adsk.eagle:footprint:16430309/1" library_version="2">
<description>
Plated Through Hole - 2x3 Shrouded Header

Specifications:

Pin count:6

Pin pitch:0.1"

Datasheet referenced for footprint

Example device(s):

CONN_03x2

</description>
<wire x1="4.5" y1="7.56" x2="4.5" y2="-7.56" width="0.2032" layer="21"/>
<wire x1="-4.5" y1="-7.56" x2="-4.5" y2="-2.2" width="0.2032" layer="21"/>
<wire x1="-4.5" y1="-2.2" x2="-4.5" y2="2.2" width="0.2032" layer="21"/>
<wire x1="-4.5" y1="2.2" x2="-4.5" y2="7.56" width="0.2032" layer="21"/>
<wire x1="-4.5" y1="7.56" x2="4.4" y2="7.56" width="0.2032" layer="21"/>
<wire x1="4.5" y1="-7.56" x2="-4.5" y2="-7.56" width="0.2032" layer="21"/>
<wire x1="-3.4" y1="6.46" x2="3.4" y2="6.46" width="0.2032" layer="51"/>
<wire x1="3.4" y1="6.46" x2="3.4" y2="-6.46" width="0.2032" layer="51"/>
<wire x1="-3.4" y1="-6.46" x2="3.4" y2="-6.46" width="0.2032" layer="51"/>
<wire x1="-4.5" y1="2.2" x2="-3" y2="2.2" width="0.2032" layer="21"/>
<wire x1="-3" y1="2.2" x2="-3" y2="-2.2" width="0.2032" layer="21"/>
<wire x1="-3" y1="-2.2" x2="-4.5" y2="-2.2" width="0.2032" layer="21"/>
<wire x1="-3.4" y1="6.46" x2="-3.4" y2="2.2" width="0.2032" layer="51"/>
<wire x1="-3.4" y1="-6.46" x2="-3.4" y2="-2.2" width="0.2032" layer="51"/>
<wire x1="-2.648" y1="3.175" x2="-2.648" y2="1.905" width="0.2032" layer="21"/>
<wire x1="-2.686" y1="3.175" x2="-2.686" y2="1.905" width="0.2032" layer="22"/>
<pad name="1" x="-1.27" y="2.54" drill="1.016" diameter="1.8796" rot="R270"/>
<pad name="2" x="1.27" y="2.54" drill="1.016" diameter="1.8796" rot="R270"/>
<pad name="3" x="-1.27" y="0" drill="1.016" diameter="1.8796" rot="R270"/>
<pad name="4" x="1.27" y="0" drill="1.016" diameter="1.8796" rot="R270"/>
<pad name="5" x="-1.27" y="-2.54" drill="1.016" diameter="1.8796" rot="R270"/>
<pad name="6" x="1.27" y="-2.54" drill="1.016" diameter="1.8796" rot="R270"/>
<rectangle x1="1.016" y1="2.286" x2="1.524" y2="2.794" layer="51"/>
<rectangle x1="-1.524" y1="2.286" x2="-1.016" y2="2.794" layer="51"/>
<rectangle x1="1.016" y1="-0.254" x2="1.524" y2="0.254" layer="51"/>
<rectangle x1="-1.524" y1="-0.254" x2="-1.016" y2="0.254" layer="51"/>
<rectangle x1="1.016" y1="-2.794" x2="1.524" y2="-2.286" layer="51"/>
<rectangle x1="-1.524" y1="-2.794" x2="-1.016" y2="-2.286" layer="51"/>
<rectangle x1="-1.524" y1="-2.794" x2="-1.016" y2="-2.286" layer="51"/>
<rectangle x1="1.016" y1="-2.794" x2="1.524" y2="-2.286" layer="51"/>
<text x="-3.81" y="7.874" size="0.6096" layer="25" font="vector" ratio="20">>NAME</text>
<text x="-3.81" y="-8.382" size="0.6096" layer="27" font="vector" ratio="20">>VALUE</text>
</package>
</packages>
<packages3d>
<package3d name="2X3-SHROUDED" urn="urn:adsk.eagle:package:16430674/1" type="box" library_version="2">
<description>
Plated Through Hole - 2x3 Shrouded Header

Specifications:

Pin count:6

Pin pitch:0.1"

Datasheet referenced for footprint

Example device(s):

CONN_03x2

</description>
<packageinstances>
<packageinstance name="2X3-SHROUDED"/>
</packageinstances>
</package3d>
</packages3d>
</library>
<library name="jumper" urn="urn:adsk.eagle:library:252">
<description>Jumpers

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="SJ" urn="urn:adsk.eagle:footprint:15432/1" library_version="2">
<description>Solder jumper</description>
<wire x1="1.397" y1="-1.016" x2="-1.397" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="1.397" y1="1.016" x2="1.651" y2="0.762" width="0.1524" layer="21" curve="-90"/>
<wire x1="-1.651" y1="0.762" x2="-1.397" y2="1.016" width="0.1524" layer="21" curve="-90"/>
<wire x1="-1.651" y1="-0.762" x2="-1.397" y2="-1.016" width="0.1524" layer="21" curve="90"/>
<wire x1="1.397" y1="-1.016" x2="1.651" y2="-0.762" width="0.1524" layer="21" curve="90"/>
<wire x1="1.651" y1="-0.762" x2="1.651" y2="0.762" width="0.1524" layer="21"/>
<wire x1="-1.651" y1="-0.762" x2="-1.651" y2="0.762" width="0.1524" layer="21"/>
<wire x1="-1.397" y1="1.016" x2="1.397" y2="1.016" width="0.1524" layer="21"/>
<wire x1="1.016" y1="0" x2="1.524" y2="0" width="0.1524" layer="51"/>
<wire x1="-1.016" y1="0" x2="-1.524" y2="0" width="0.1524" layer="51"/>
<wire x1="-0.254" y1="-0.127" x2="-0.254" y2="0.127" width="1.27" layer="51" curve="-180" cap="flat"/>
<wire x1="0.254" y1="0.127" x2="0.254" y2="-0.127" width="1.27" layer="51" curve="-180" cap="flat"/>
<smd name="1" x="-0.762" y="0" dx="1.1684" dy="1.6002" layer="1"/>
<smd name="2" x="0.762" y="0" dx="1.1684" dy="1.6002" layer="1"/>
<text x="-1.651" y="1.143" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="0.4001" y="0" size="0.02" layer="27">>VALUE</text>
<rectangle x1="-0.0762" y1="-0.9144" x2="0.0762" y2="0.9144" layer="29"/>
</package>
</packages>
<packages3d>
<package3d name="SJ" urn="urn:adsk.eagle:package:15471/1" type="box" library_version="2">
<description>Solder jumper</description>
<packageinstances>
<packageinstance name="SJ"/>
</packageinstances>
</package3d>
</packages3d>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="jlcpcb-2layers">
<description language="en">JLCPCB design rules (2 layers)

Board thickness: 1.6mm

Copper weight: 1oz (35um)

Note: annular ring aren't minimal

</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.6mm 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="5mil"/>
<param name="mdWirePad" value="5mil"/>
<param name="mdWireVia" value="5mil"/>
<param name="mdPadPad" value="5mil"/>
<param name="mdPadVia" value="5mil"/>
<param name="mdViaVia" value="5mil"/>
<param name="mdSmdPad" value="5mil"/>
<param name="mdSmdVia" value="5mil"/>
<param name="mdSmdSmd" value="5mil"/>
<param name="mdViaViaSameLayer" value="6mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="0.2mm"/>
<param name="mdDrill" value="6mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="5mil"/>
<param name="msDrill" value="0.3mm"/>
<param name="msMicroVia" value="0.3mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.4"/>
<param name="rvPadInner" value="0"/>
<param name="rvPadBottom" value="0.4"/>
<param name="rvViaOuter" value="0"/>
<param name="rvViaInner" value="0"/>
<param name="rvMicroViaOuter" value="0"/>
<param name="rvMicroViaInner" value="0"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="80mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="80mil"/>
<param name="rlMinViaOuter" value="3mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="3mil"/>
<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="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="checkStop" value="0"/>
<param name="checkValues" value="0"/>
<param name="checkNames" value="1"/>
<param name="checkWireStubs" value="1"/>
<param name="checkPolygonWidth" value="0"/>
<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="2"/>
<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>
<groups>
<board_group name="SWITCH"/>
</groups>
<elements>
<element name="D1" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM" package3d_urn="urn:adsk.eagle:package:39361/1" value="" x="8" y="18.5" smashed="yes">
<attribute name="NAME" x="8" y="20.786" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="DIO-08794" x="88.01" y="-50.08" size="1.778" layer="27" display="off"/>
<attribute name="VALUE" x="8" y="16.214" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="R1" library="SparkFun-Resistors" library_urn="urn:adsk.eagle:library:532" package="1206" package3d_urn="urn:adsk.eagle:package:39654/1" value=" " x="9.8" y="8.5" smashed="yes" rot="MR90">
<attribute name="NAME" x="10.943" y="8.5" size="0.6096" layer="26" font="vector" ratio="20" rot="MR90" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="-75.29" y="74.54" size="1.778" layer="28" rot="MR90" display="off"/>
<attribute name="VALUE" x="8.657" y="8.5" size="0.6096" layer="28" font="vector" ratio="20" rot="MR90" align="top-center"/>
</element>
<element name="S1" library="SparkFun-Switches" package="TACTILE_SWITCH_LED_PTH_12MM" value="MOMENTARY-SWITCH-SPST-LED-PTH-12MM" x="8" y="8.5" smashed="yes" grouprefs="SWITCH">
<attribute name="NAME" x="11.81" y="14.85" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="SWCH-11758" x="34.67" y="-16.9" size="1.778" layer="27" display="off"/>
<attribute name="SF_SKU" value="COM-10442" x="34.67" y="-16.9" size="1.778" layer="27" display="off"/>
</element>
<element name="S2" library="SparkFun-Switches" package="TACTILE_SWITCH_LED_PTH_12MM" value="MOMENTARY-SWITCH-SPST-LED-PTH-12MM" x="27.6" y="8.5" smashed="yes" grouprefs="SWITCH">
<attribute name="NAME" x="31.41" y="14.85" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="SWCH-11758" x="12.6" y="23.9" size="1.778" layer="27" display="off"/>
<attribute name="SF_SKU" value="COM-10442" x="12.6" y="23.9" size="1.778" layer="27" display="off"/>
</element>
<element name="R2" library="SparkFun-Resistors" library_urn="urn:adsk.eagle:library:532" package="1206" package3d_urn="urn:adsk.eagle:package:39654/1" value=" " x="29.4" y="8.5" smashed="yes" rot="MR90">
<attribute name="NAME" x="30.543" y="8.5" size="0.6096" layer="26" font="vector" ratio="20" rot="MR90" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="44.8" y="-11.2" size="1.778" layer="28" rot="MR90" display="off"/>
<attribute name="VALUE" x="28.257" y="8.5" size="0.6096" layer="28" font="vector" ratio="20" rot="MR90" align="top-center"/>
</element>
<element name="D2" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM" package3d_urn="urn:adsk.eagle:package:39361/1" value="" x="27.6" y="18.5" smashed="yes">
<attribute name="NAME" x="27.6" y="20.786" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="DIO-08794" x="7.9" y="36.2" size="1.778" layer="27" display="off"/>
<attribute name="VALUE" x="27.6" y="16.214" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="S3" library="SparkFun-Switches" package="TACTILE_SWITCH_LED_PTH_12MM" value="MOMENTARY-SWITCH-SPST-LED-PTH-12MM" x="47.2" y="8.5" smashed="yes" grouprefs="SWITCH">
<attribute name="NAME" x="51.01" y="14.85" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="SWCH-11758" x="32.2" y="24" size="1.778" layer="27" display="off"/>
<attribute name="SF_SKU" value="COM-10442" x="32.2" y="24" size="1.778" layer="27" display="off"/>
</element>
<element name="R3" library="SparkFun-Resistors" library_urn="urn:adsk.eagle:library:532" package="1206" package3d_urn="urn:adsk.eagle:package:39654/1" value=" " x="49" y="8.5" smashed="yes" rot="MR90">
<attribute name="NAME" x="50.143" y="8.5" size="0.6096" layer="26" font="vector" ratio="20" rot="MR90" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="64.4" y="-11.2" size="1.778" layer="28" rot="MR90" display="off"/>
<attribute name="VALUE" x="47.857" y="8.5" size="0.6096" layer="28" font="vector" ratio="20" rot="MR90" align="top-center"/>
</element>
<element name="D3" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM" package3d_urn="urn:adsk.eagle:package:39361/1" value="" x="47.2" y="18.5" smashed="yes">
<attribute name="NAME" x="47.2" y="20.786" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="DIO-08794" x="27.5" y="36.2" size="1.778" layer="27" display="off"/>
<attribute name="VALUE" x="47.2" y="16.214" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="S4" library="SparkFun-Switches" package="TACTILE_SWITCH_LED_PTH_12MM" value="MOMENTARY-SWITCH-SPST-LED-PTH-12MM" x="66.8" y="8.5" smashed="yes" grouprefs="SWITCH">
<attribute name="NAME" x="70.61" y="14.85" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="SWCH-11758" x="51.8" y="24" size="1.778" layer="27" display="off"/>
<attribute name="SF_SKU" value="COM-10442" x="51.8" y="24" size="1.778" layer="27" display="off"/>
</element>
<element name="R4" library="SparkFun-Resistors" library_urn="urn:adsk.eagle:library:532" package="1206" package3d_urn="urn:adsk.eagle:package:39654/1" value=" " x="68.6" y="8.5" smashed="yes" rot="MR90">
<attribute name="NAME" x="69.743" y="8.5" size="0.6096" layer="26" font="vector" ratio="20" rot="MR90" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="114.8" y="-11.2" size="1.778" layer="28" rot="MR90" display="off"/>
<attribute name="VALUE" x="67.457" y="8.5" size="0.6096" layer="28" font="vector" ratio="20" rot="MR90" align="top-center"/>
</element>
<element name="D4" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM" package3d_urn="urn:adsk.eagle:package:39361/1" value="" x="66.8" y="18.5" smashed="yes">
<attribute name="NAME" x="66.8" y="20.786" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="PROD_ID" value="DIO-08794" x="26.3" y="51.6" size="1.778" layer="27" display="off"/>
<attribute name="VALUE" x="66.8" y="16.214" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="SWITCH_OUT" library="SparkFun-Connectors" library_urn="urn:adsk.eagle:library:16430189" package="2X3-SHROUDED" package3d_urn="urn:adsk.eagle:package:16430674/1" value="" x="17.75" y="17.5" smashed="yes" rot="MR270">
<attribute name="NAME" x="15.04" y="12.126" size="0.6096" layer="26" font="vector" ratio="20" rot="MR180"/>
<attribute name="PROD_ID" value="CONN-10681" x="17.75" y="17.5" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="SF_ID" value="PRT_10877" x="17.75" y="17.5" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="VALUE" x="26.132" y="21.31" size="0.6096" layer="28" font="vector" ratio="20" rot="MR270"/>
</element>
<element name="LED_OUT" library="SparkFun-Connectors" library_urn="urn:adsk.eagle:library:16430189" package="2X3-SHROUDED" package3d_urn="urn:adsk.eagle:package:16430674/1" value="" x="57" y="17.5" smashed="yes" rot="MR270">
<attribute name="NAME" x="55.29" y="12.526" size="0.6096" layer="26" font="vector" ratio="20" rot="MR180"/>
<attribute name="PROD_ID" value="CONN-10681" x="39.2" y="26.8" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="SF_ID" value="PRT_10877" x="39.2" y="26.8" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="VALUE" x="65.382" y="21.31" size="0.6096" layer="28" font="vector" ratio="20" rot="MR270"/>
</element>
<element name="SJ1" library="jumper" library_urn="urn:adsk.eagle:library:252" package="SJ" package3d_urn="urn:adsk.eagle:package:15471/1" value="" x="57" y="8.5" smashed="yes" rot="MR270">
<attribute name="NAME" x="55.949" y="6.457" size="1" layer="26" ratio="10" rot="MR180"/>
<attribute name="POPULARITY" value="33" x="57" y="8.5" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="VALUE" x="57" y="8.0999" size="0.02" layer="28" rot="MR270"/>
</element>
</elements>
<signals>
<signal name="VCC">
<contactref element="R1" pad="2"/>
<contactref element="R2" pad="2"/>
<contactref element="R3" pad="2"/>
<contactref element="R4" pad="2"/>
<contactref element="SWITCH_OUT" pad="2"/>
<contactref element="SJ1" pad="1"/>
<wire x1="50.292" y1="9.271" x2="53.426" y2="9.271" width="0.127" layer="16"/>
<wire x1="53.426" y1="9.271" x2="56.896" y2="9.271" width="0.127" layer="16"/>
<wire x1="49.784" y1="9.779" x2="50.292" y2="9.271" width="0.127" layer="16"/>
<wire x1="49.022" y1="9.779" x2="49.784" y2="9.779" width="0.127" layer="16"/>
<wire x1="56.896" y1="9.271" x2="57" y2="9.262" width="0.127" layer="16"/>
<wire x1="49.022" y1="9.779" x2="49" y2="9.9" width="0.127" layer="16"/>
<wire x1="61.722" y1="9.906" x2="68.58" y2="9.906" width="0.127" layer="16"/>
<wire x1="58.42" y1="6.604" x2="61.722" y2="9.906" width="0.127" layer="16"/>
<wire x1="56.007" y1="6.604" x2="58.42" y2="6.604" width="0.127" layer="16"/>
<wire x1="53.426" y1="9.185" x2="56.007" y2="6.604" width="0.127" layer="16"/>
<wire x1="53.426" y1="9.271" x2="53.426" y2="9.185" width="0.127" layer="16"/>
<wire x1="68.58" y1="9.906" x2="68.6" y2="9.9" width="0.127" layer="16"/>
<wire x1="9.906" y1="10.414" x2="9.906" y2="9.906" width="0.127" layer="16"/>
<wire x1="15.113" y1="15.621" x2="9.906" y2="10.414" width="0.127" layer="16"/>
<wire x1="15.113" y1="16.129" x2="15.113" y2="15.621" width="0.127" layer="16"/>
<wire x1="9.906" y1="9.906" x2="9.8" y2="9.9" width="0.127" layer="16"/>
<wire x1="15.113" y1="16.129" x2="15.21" y2="16.23" width="0.127" layer="16"/>
<wire x1="24.765" y1="9.906" x2="29.337" y2="9.906" width="0.127" layer="16"/>
<wire x1="19.939" y1="14.732" x2="24.765" y2="9.906" width="0.127" layer="16"/>
<wire x1="16.764" y1="14.732" x2="19.939" y2="14.732" width="0.127" layer="16"/>
<wire x1="15.875" y1="15.621" x2="16.764" y2="14.732" width="0.127" layer="16"/>
<wire x1="15.113" y1="15.621" x2="15.875" y2="15.621" width="0.127" layer="16"/>
<wire x1="29.337" y1="9.906" x2="29.4" y2="9.9" width="0.127" layer="16"/>
<wire x1="15.113" y1="15.621" x2="15.21" y2="16.23" width="0.127" layer="16"/>
<wire x1="42.164" y1="9.906" x2="48.895" y2="9.906" width="0.127" layer="16"/>
<wire x1="41.529" y1="9.271" x2="42.164" y2="9.906" width="0.127" layer="16"/>
<wire x1="30.734" y1="9.271" x2="41.529" y2="9.271" width="0.127" layer="16"/>
<wire x1="30.226" y1="9.779" x2="30.734" y2="9.271" width="0.127" layer="16"/>
<wire x1="29.464" y1="9.779" x2="30.226" y2="9.779" width="0.127" layer="16"/>
<wire x1="48.895" y1="9.906" x2="49" y2="9.9" width="0.127" layer="16"/>
<wire x1="29.464" y1="9.779" x2="29.4" y2="9.9" width="0.127" layer="16"/>
</signal>
<signal name="GND">
<contactref element="S1" pad="C"/>
<contactref element="S1" pad="2"/>
<contactref element="S2" pad="C"/>
<contactref element="S2" pad="2"/>
<contactref element="S3" pad="C"/>
<contactref element="S3" pad="2"/>
<contactref element="S4" pad="C"/>
<contactref element="S4" pad="2"/>
<contactref element="SWITCH_OUT" pad="1"/>
<polygon width="0.1524" layer="1">
<vertex x="0.1" y="-1.6"/>
<vertex x="74.9" y="-1.6"/>
<vertex x="74.9" y="23"/>
<vertex x="0.1" y="23"/>
</polygon>
<polygon width="0.1524" layer="16">
<vertex x="0.1" y="-1.7"/>
<vertex x="74.9" y="-1.7"/>
<vertex x="74.9" y="23"/>
<vertex x="0.1" y="23"/>
</polygon>
</signal>
<signal name="N$2">
<contactref element="S1" pad="A"/>
<contactref element="R1" pad="1"/>
<wire x1="9.906" y1="3.937" x2="9.906" y2="6.985" width="0.127" layer="16"/>
<wire x1="8.001" y1="2.032" x2="9.906" y2="3.937" width="0.127" layer="16"/>
<wire x1="8.001" y1="1.778" x2="8.001" y2="2.032" width="0.127" layer="16"/>
<wire x1="9.906" y1="6.985" x2="9.8" y2="7.1" width="0.127" layer="16"/>
<wire x1="8.001" y1="1.778" x2="8" y2="1.75" width="0.127" layer="16"/>
</signal>
<signal name="S1">
<contactref element="S1" pad="4"/>
<contactref element="SWITCH_OUT" pad="3"/>
<wire x1="17.653" y1="18.161" x2="17.653" y2="18.669" width="0.127" layer="1"/>
<wire x1="16.51" y1="17.018" x2="17.653" y2="18.161" width="0.127" layer="1"/>
<wire x1="16.51" y1="8.19" x2="16.51" y2="17.018" width="0.127" layer="1"/>
<wire x1="16.51" y1="8.19" x2="14.32" y2="6" width="0.127" layer="1"/>
<wire x1="14.25" y1="6" x2="14.32" y2="6" width="0.127" layer="1"/>
<wire x1="17.653" y1="18.669" x2="17.75" y2="18.77" width="0.127" layer="1"/>
</signal>
<signal name="D1">
<contactref element="D1" pad="K"/>
<contactref element="LED_OUT" pad="3"/>
<wire x1="10.033" y1="18.542" x2="9.271" y2="18.542" width="0.127" layer="1"/>
<wire x1="12.319" y1="20.828" x2="10.033" y2="18.542" width="0.127" layer="1"/>
<wire x1="41.529" y1="20.828" x2="12.319" y2="20.828" width="0.127" layer="1"/>
<wire x1="45.139" y1="17.218" x2="41.529" y2="20.828" width="0.127" layer="1"/>
<wire x1="50.873" y1="17.218" x2="45.139" y2="17.218" width="0.127" layer="1"/>
<wire x1="53.721" y1="20.066" x2="50.873" y2="17.218" width="0.127" layer="1"/>
<wire x1="55.245" y1="20.066" x2="53.721" y2="20.066" width="0.127" layer="1"/>
<wire x1="56.515" y1="18.796" x2="55.245" y2="20.066" width="0.127" layer="1"/>
<wire x1="56.896" y1="18.796" x2="56.515" y2="18.796" width="0.127" layer="1"/>
<wire x1="9.271" y1="18.542" x2="9.27" y2="18.5" width="0.127" layer="1"/>
<wire x1="56.896" y1="18.796" x2="57" y2="18.77" width="0.127" layer="1"/>
</signal>
<signal name="S2">
<contactref element="S2" pad="4"/>
<contactref element="SWITCH_OUT" pad="4"/>
<wire x1="21.336" y1="12.573" x2="17.78" y2="16.129" width="0.127" layer="1"/>
<wire x1="26.035" y1="12.573" x2="21.336" y2="12.573" width="0.127" layer="1"/>
<wire x1="32.512" y1="6.096" x2="26.035" y2="12.573" width="0.127" layer="1"/>
<wire x1="33.782" y1="6.096" x2="32.512" y2="6.096" width="0.127" layer="1"/>
<wire x1="17.78" y1="16.129" x2="17.75" y2="16.23" width="0.127" layer="1"/>
<wire x1="33.782" y1="6.096" x2="33.85" y2="6" width="0.127" layer="1"/>
</signal>
<signal name="D2">
<contactref element="D2" pad="K"/>
<contactref element="LED_OUT" pad="4"/>
<wire x1="29.464" y1="18.415" x2="28.956" y2="18.415" width="0.127" layer="1"/>
<wire x1="30.861" y1="17.018" x2="29.464" y2="18.415" width="0.127" layer="1"/>
<wire x1="35.56" y1="17.018" x2="30.861" y2="17.018" width="0.127" layer="1"/>
<wire x1="36.449" y1="16.129" x2="35.56" y2="17.018" width="0.127" layer="1"/>
<wire x1="45.974" y1="16.129" x2="36.449" y2="16.129" width="0.127" layer="1"/>
<wire x1="46.609" y1="16.764" x2="45.974" y2="16.129" width="0.127" layer="1"/>
<wire x1="51.816" y1="16.764" x2="46.609" y2="16.764" width="0.127" layer="1"/>
<wire x1="53.848" y1="14.732" x2="51.816" y2="16.764" width="0.127" layer="1"/>
<wire x1="54.991" y1="14.732" x2="53.848" y2="14.732" width="0.127" layer="1"/>
<wire x1="56.388" y1="16.129" x2="54.991" y2="14.732" width="0.127" layer="1"/>
<wire x1="56.896" y1="16.129" x2="56.388" y2="16.129" width="0.127" layer="1"/>
<wire x1="28.956" y1="18.415" x2="28.87" y2="18.5" width="0.127" layer="1"/>
<wire x1="56.896" y1="16.129" x2="57" y2="16.23" width="0.127" layer="1"/>
</signal>
<signal name="S3">
<contactref element="S3" pad="4"/>
<contactref element="SWITCH_OUT" pad="5"/>
<wire x1="21.209" y1="18.669" x2="20.32" y2="18.669" width="0.127" layer="1"/>
<wire x1="23.114" y1="16.764" x2="21.209" y2="18.669" width="0.127" layer="1"/>
<wire x1="32.893" y1="16.764" x2="23.114" y2="16.764" width="0.127" layer="1"/>
<wire x1="41.783" y1="7.874" x2="32.893" y2="16.764" width="0.127" layer="1"/>
<wire x1="50.927" y1="7.874" x2="41.783" y2="7.874" width="0.127" layer="1"/>
<wire x1="52.705" y1="6.096" x2="50.927" y2="7.874" width="0.127" layer="1"/>
<wire x1="53.34" y1="6.096" x2="52.705" y2="6.096" width="0.127" layer="1"/>
<wire x1="20.32" y1="18.669" x2="20.29" y2="18.77" width="0.127" layer="1"/>
<wire x1="53.34" y1="6.096" x2="53.45" y2="6" width="0.127" layer="1"/>
</signal>
<signal name="D3">
<contactref element="D3" pad="K"/>
<contactref element="LED_OUT" pad="5"/>
<wire x1="50.292" y1="20.32" x2="48.514" y2="18.542" width="0.127" layer="1"/>
<wire x1="57.531" y1="20.32" x2="50.292" y2="20.32" width="0.127" layer="1"/>
<wire x1="59.055" y1="18.796" x2="57.531" y2="20.32" width="0.127" layer="1"/>
<wire x1="59.436" y1="18.796" x2="59.055" y2="18.796" width="0.127" layer="1"/>
<wire x1="48.514" y1="18.542" x2="48.47" y2="18.5" width="0.127" layer="1"/>
<wire x1="59.436" y1="18.796" x2="59.54" y2="18.77" width="0.127" layer="1"/>
</signal>
<signal name="S4">
<contactref element="S4" pad="4"/>
<contactref element="SWITCH_OUT" pad="6"/>
<wire x1="20.409" y1="16.129" x2="20.32" y2="16.129" width="0.127" layer="1"/>
<wire x1="23.711" y1="12.827" x2="20.409" y2="16.129" width="0.127" layer="1"/>
<wire x1="26.162" y1="12.827" x2="23.711" y2="12.827" width="0.127" layer="1"/>
<wire x1="31.369" y1="7.62" x2="26.162" y2="12.827" width="0.127" layer="1"/>
<wire x1="49.53" y1="7.62" x2="31.369" y2="7.62" width="0.127" layer="1"/>
<wire x1="52.832" y1="4.318" x2="49.53" y2="7.62" width="0.127" layer="1"/>
<wire x1="65.151" y1="4.318" x2="52.832" y2="4.318" width="0.127" layer="1"/>
<wire x1="66.421" y1="5.588" x2="65.151" y2="4.318" width="0.127" layer="1"/>
<wire x1="72.644" y1="5.588" x2="66.421" y2="5.588" width="0.127" layer="1"/>
<wire x1="73.025" y1="5.969" x2="72.644" y2="5.588" width="0.127" layer="1"/>
<wire x1="20.32" y1="16.129" x2="20.29" y2="16.23" width="0.127" layer="1"/>
<wire x1="73.025" y1="5.969" x2="73.05" y2="6" width="0.127" layer="1"/>
</signal>
<signal name="D4">
<contactref element="D4" pad="K"/>
<contactref element="LED_OUT" pad="6"/>
<wire x1="65.532" y1="16.256" x2="59.563" y2="16.256" width="0.127" layer="1"/>
<wire x1="67.691" y1="18.415" x2="65.532" y2="16.256" width="0.127" layer="1"/>
<wire x1="67.945" y1="18.415" x2="67.691" y2="18.415" width="0.127" layer="1"/>
<wire x1="59.563" y1="16.256" x2="59.54" y2="16.23" width="0.127" layer="1"/>
<wire x1="67.945" y1="18.415" x2="68.07" y2="18.5" width="0.127" layer="1"/>
</signal>
<signal name="LED_COMMON">
<contactref element="D1" pad="A"/>
<contactref element="D2" pad="A"/>
<contactref element="D3" pad="A"/>
<contactref element="D4" pad="A"/>
<contactref element="LED_OUT" pad="1"/>
<contactref element="SJ1" pad="2"/>
<wire x1="8.509" y1="20.32" x2="6.731" y2="18.542" width="0.127" layer="16"/>
<wire x1="23.622" y1="20.32" x2="8.509" y2="20.32" width="0.127" layer="16"/>
<wire x1="25.4" y1="18.542" x2="23.622" y2="20.32" width="0.127" layer="16"/>
<wire x1="26.289" y1="18.542" x2="25.4" y2="18.542" width="0.127" layer="16"/>
<wire x1="6.731" y1="18.542" x2="6.73" y2="18.5" width="0.127" layer="16"/>
<wire x1="26.289" y1="18.542" x2="26.33" y2="18.5" width="0.127" layer="16"/>
<wire x1="47.371" y1="19.939" x2="45.974" y2="18.542" width="0.127" layer="16"/>
<wire x1="53.351" y1="19.939" x2="47.371" y2="19.939" width="0.127" layer="16"/>
<wire x1="54.46" y1="18.77" x2="54.46" y2="18.83" width="0.127" layer="16"/>
<wire x1="54.46" y1="18.83" x2="53.351" y2="19.939" width="0.127" layer="16"/>
<wire x1="45.974" y1="18.542" x2="45.93" y2="18.5" width="0.127" layer="16"/>
<wire x1="57.785" y1="7.747" x2="57.023" y2="7.747" width="0.127" layer="16"/>
<wire x1="58.928" y1="8.89" x2="57.785" y2="7.747" width="0.127" layer="16"/>
<wire x1="58.928" y1="11.684" x2="58.928" y2="8.89" width="0.127" layer="16"/>
<wire x1="65.405" y1="18.161" x2="58.928" y2="11.684" width="0.127" layer="16"/>
<wire x1="65.405" y1="18.415" x2="65.405" y2="18.161" width="0.127" layer="16"/>
<wire x1="57.023" y1="7.747" x2="57" y2="7.738" width="0.127" layer="16"/>
<wire x1="65.405" y1="18.415" x2="65.53" y2="18.5" width="0.127" layer="16"/>
<wire x1="54.456" y1="18.261" x2="54.456" y2="18.766115625" width="0.127" layer="16"/>
<wire x1="52.959" y1="16.764" x2="54.456" y2="18.261" width="0.127" layer="16"/>
<wire x1="52.959" y1="15.621" x2="52.959" y2="16.764" width="0.127" layer="16"/>
<wire x1="56.896" y1="11.684" x2="52.959" y2="15.621" width="0.127" layer="16"/>
<wire x1="58.928" y1="11.684" x2="56.896" y2="11.684" width="0.127" layer="16"/>
<wire x1="54.456" y1="18.766115625" x2="54.46" y2="18.77" width="0.127" layer="16"/>
<wire x1="26.924" y1="18.415" x2="26.416" y2="18.415" width="0.127" layer="16"/>
<wire x1="29.21" y1="16.129" x2="26.924" y2="18.415" width="0.127" layer="16"/>
<wire x1="43.561" y1="16.129" x2="29.21" y2="16.129" width="0.127" layer="16"/>
<wire x1="45.93" y1="18.5" x2="43.561" y2="16.129" width="0.127" layer="16"/>
<wire x1="26.416" y1="18.415" x2="26.33" y2="18.5" width="0.127" layer="16"/>
</signal>
<signal name="N$1">
<contactref element="S2" pad="A"/>
<contactref element="R2" pad="1"/>
<wire x1="29.464" y1="3.937" x2="29.464" y2="6.985" width="0.127" layer="16"/>
<wire x1="27.686" y1="2.159" x2="29.464" y2="3.937" width="0.127" layer="16"/>
<wire x1="27.686" y1="1.778" x2="27.686" y2="2.159" width="0.127" layer="16"/>
<wire x1="29.464" y1="6.985" x2="29.4" y2="7.1" width="0.127" layer="16"/>
<wire x1="27.686" y1="1.778" x2="27.6" y2="1.75" width="0.127" layer="16"/>
</signal>
<signal name="N$3">
<contactref element="S3" pad="A"/>
<contactref element="R3" pad="1"/>
<wire x1="49.022" y1="3.81" x2="49.022" y2="6.985" width="0.127" layer="16"/>
<wire x1="47.244" y1="2.032" x2="49.022" y2="3.81" width="0.127" layer="16"/>
<wire x1="47.244" y1="1.778" x2="47.244" y2="2.032" width="0.127" layer="16"/>
<wire x1="49.022" y1="6.985" x2="49" y2="7.1" width="0.127" layer="16"/>
<wire x1="47.244" y1="1.778" x2="47.2" y2="1.75" width="0.127" layer="16"/>
</signal>
<signal name="N$4">
<contactref element="S4" pad="A"/>
<contactref element="R4" pad="1"/>
<wire x1="68.707" y1="3.937" x2="68.707" y2="6.985" width="0.127" layer="16"/>
<wire x1="66.802" y1="2.032" x2="68.707" y2="3.937" width="0.127" layer="16"/>
<wire x1="66.802" y1="1.778" x2="66.802" y2="2.032" width="0.127" layer="16"/>
<wire x1="68.707" y1="6.985" x2="68.6" y2="7.1" width="0.127" layer="16"/>
<wire x1="66.802" y1="1.778" x2="66.8" y2="1.75" width="0.127" layer="16"/>
</signal>
</signals>
<mfgpreviewcolors>
<mfgpreviewcolor name="soldermaskcolor" color="0xC8008000"/>
<mfgpreviewcolor name="silkscreencolor" color="0xFFFEFEFE"/>
<mfgpreviewcolor name="backgroundcolor" color="0xFF282828"/>
<mfgpreviewcolor name="coppercolor" color="0xFFFFBF00"/>
<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>
</mfgpreviewcolors>
</board>
</drawing>
<compatibility>
<note version="8.2" severity="warning">
Since Version 8.2, EAGLE supports online libraries. The ids
of those online libraries will not be understood (or retained)
with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports URNs for individual library
assets (packages, symbols, and devices). The URNs of those assets
will not be understood (or retained) with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports the association of 3D packages
with devices in libraries, schematics, and board files. Those 3D
packages will not be understood (or retained) with this version.
</note>
<note version="9.5" severity="warning">
Since Version 9.5, EAGLE supports persistent groups with
schematics, and board files. Those persistent groups
will not be understood (or retained) with this version.
</note>
</compatibility>
</eagle>

branch_name: refs/heads/main

gha_language: Python


text:
// socks server
// support socks4, socks4a and socks5
// this file is almost a copy of https://github.com/fangdingjun/socks-go/blob/master/examples/server/server.go
package main

import (
    "flag"
    "fmt"
    "log"
    "net"
    "time"

    socks "github.com/fangdingjun/socks-go"
)

const version string = "dev"

func main() {
    flag.Usage = func() {
        fmt.Fprintf(flag.CommandLine.Output(), "socks (version: %s) : socks4, socks4a and socks5 server.\n  Usage: socks [-h|-p <port>]\n\n", version)
        flag.PrintDefaults()
    }
    port := flag.String("p", "1080", "localhost port to serve")
    flag.Parse()

    conn, err := net.Listen("tcp", ":"+*port)
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("Start server on port :%s.", *port)
    for {
        c, err := conn.Accept()
        if err != nil {
            log.Println(err)
            continue
        }

        log.Printf("connected from %s", c.RemoteAddr())

        d := net.Dialer{Timeout: 10 * time.Second}
        s := socks.Conn{Conn: c, Dial: d.Dial}
        go s.Serve()
    }
}

license: MIT

repository: kpym/socks

license_type: permissive

repo_name: kpym/socks

extension: go


text:
DESCRIPTION = "Extensible Modelica-based platform for optimization, simulation and analysis of complex dynamic systems."
HOMEPAGE = "https://jmodelica.org/"
SECTION = "libs"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=feb42903281464837bc0c9a861b1e7a1"

SRC_URI = "git://github.com/modelon-community/fmi-library;protocol=https;branch=master \
           file://0001-fmixml-use-system-expat-instead-of-building-own-with.patch \
           "

SRCREV = "917964fa0a6b30c4f2acc62b5f04df1ecae07c68"

S = "${WORKDIR}/git"

DEPENDS = "expat"

inherit cmake pkgconfig

EXTRA_OECMAKE = "\
	-DFMILIB_BUILD_TESTS=OFF \
	-DFMILIB_GENERATE_DOXYGEN_DOC=OFF \
	-DFMILIB_INSTALL_PREFIX=${prefix} \
	-DFMILIB_BUILD_STATIC_LIB=OFF \
"

RDEPENDS:${PN}-dev = ""

FILES:${PN}-doc += "/usr/doc"

INSANE_SKIP:${PN}-dev = "dev-elf"

repository: ni/meta-nilrt

repo_name: ni/meta-nilrt

branch_name: refs/heads/nilrt/master/kirkstone

gha_license_id: MIT

gha_language: Shell

extension: bb


text:
using System;
using System.Collections.Generic;

/*
 * CJOCh264bitstream.cpp
 *
 *  Created on: Aug 23, 2014
 *      Author: Jordi Cenzano (www.jordicenzano.name)
 */

/*
 * CJOCh264bitstream.h
 *
 *  Created on: Aug 23, 2014
 *      Author: Jordi Cenzano (www.jordicenzano.name)
 */

//! h264 bitstream class
/*!
 It is used to create the h264 bit oriented stream, it contains different functions that helps you to create the h264 compliant stream (bit oriented, exp golomb coder)
 */
public class CJOCh264bitstream : System.IDisposable
{
	private const int BUFFER_SIZE_BITS = 24; //! Buffer size in bits used for emulation prevention
//C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line:
//ORIGINAL LINE: #define BUFFER_SIZE_BYTES (24/8)

	private const int H264_EMULATION_PREVENTION_BYTE = 0x03; //! Emulation prevention byte

	/*! Buffer  */
	private byte[] m_buffer = new byte[BUFFER_SIZE_BITS];

	/*! Bit buffer index  */
	private int m_nLastbitinbuffer;

	/*! Starting byte indicator  */
	private int m_nStartingbyte;

    /*! Pointer to output file */
    //private FILE m_pOutFile;
    //Byte Array used for output
    private List<byte> m_pOutFile;

	//! Clears the buffer
	private void clearbuffer()
	{
        //C++ TO C# CONVERTER TODO TASK: The memory management function 'memset' has no equivalent in C#:
        //memset(m_buffer, 0, sizeof(byte) * BUFFER_SIZE_BITS);
        System.Array.Clear(m_buffer, 0, BUFFER_SIZE_BITS);
		m_nLastbitinbuffer = 0;
		m_nStartingbyte = 0;
	}

	//! Returns the nNumbit value (1 or 0) of lval
	/*!
	 	 \param lval number to extract the nNumbit value
	 	 \param nNumbit Bit position that we want to know if its 1 or 0 (from 0 to 63)
	 	 \return bit value (1 or 0)
	 */
	private static int getbitnum(uint lval, int nNumbit)
	{
		int lrc = 0;

		uint lmask = (uint) Math.Pow((uint)2,(uint)nNumbit);
		if ((lval & lmask) > 0)
		{
			lrc = 1;
		}

		return lrc;
	}

	//! Adds 1 bit to the end of h264 bitstream
	/*!
		 \param nVal bit to add at the end of h264 bitstream
	 */
	private void addbittostream(int nVal)
	{
		if (m_nLastbitinbuffer >= BUFFER_SIZE_BITS)
		{
			//Must be aligned, no need to do dobytealign();
			savebufferbyte();
		}

		//Use circular buffer of BUFFER_SIZE_BYTES
		int nBytePos = (m_nStartingbyte + (m_nLastbitinbuffer / 8)) % (24 / 8);
		//The first bit to add is on the left
		int nBitPosInByte = 7 - m_nLastbitinbuffer % 8;

		//Get the byte value from buffer
		int nValTmp = m_buffer[nBytePos];

		//Change the bit
		if (nVal > 0)
		{
			nValTmp = (nValTmp | (int) Math.Pow(2,nBitPosInByte));
		}
		else
		{
			nValTmp = (nValTmp & ~((int) Math.Pow(2,nBitPosInByte)));
		}

		//Save the new byte value to the buffer
		m_buffer[nBytePos] = (byte) nValTmp;

		m_nLastbitinbuffer++;
	}

	//! Adds 8 bit to the end of h264 bitstream (it is optimized for byte aligned situations)
	/*!
		 \param nVal byte to add at the end of h264 bitstream (from 0 to 255)
	 */
	private void addbytetostream(int nVal)
	{
		if (m_nLastbitinbuffer >= BUFFER_SIZE_BITS)
		{
			//Must be aligned, no need to do dobytealign();
			savebufferbyte();
		}

		//Used circular buffer of BUFFER_SIZE_BYTES
		int nBytePos = (m_nStartingbyte + (m_nLastbitinbuffer / 8)) % (24 / 8);
		//The first bit to add is on the left
		int nBitPosInByte = 7 - m_nLastbitinbuffer % 8;

		//Check if it is byte aligned
		if (nBitPosInByte != 7)
		{
			throw new System.Exception("Error: inserting not aligment byte");
		}

		//Add all byte to buffer
		m_buffer[nBytePos] = (byte) nVal;

		m_nLastbitinbuffer = m_nLastbitinbuffer + 8;
	}

	//! Save all buffer to file
	/*!
		 \param bemulationprevention Indicates if it will insert the emulation prevention byte or not (when it is needed)
	 */
	private void savebufferbyte(bool bemulationprevention = true)
	{
		bool bemulationpreventionexecuted = false;

		if (m_pOutFile == null)
		{
			throw new System.Exception("Error: out file is NULL");
		}

		//Check if the last bit in buffer is multiple of 8
		if ((m_nLastbitinbuffer % 8) != 0)
		{
			throw new System.Exception("Error: Save to file must be byte aligned");
		}

		if ((m_nLastbitinbuffer / 8) <= 0)
		{
			throw new System.Exception("Error: NO bytes to save");
		}

		if (bemulationprevention == true)
		{
			//Emulation prevention will be used:
			/*As per h.264 spec,
			rbsp_data shouldn't contain
					- 0x 00 00 00
					- 0x 00 00 01
					- 0x 00 00 02
					- 0x 00 00 03

			rbsp_data shall be in the following way
					- 0x 00 00 03 00
					- 0x 00 00 03 01
					- 0x 00 00 03 02
					- 0x 00 00 03 03
			*/

			//Check if emulation prevention is needed (emulation prevention is byte align defined)
			if (    (m_buffer[((m_nStartingbyte + 0) % (24 / 8))] == 0x00)
                &&  (m_buffer[((m_nStartingbyte + 1) % (24 / 8))] == 0x00)
                && ((m_buffer[((m_nStartingbyte + 2) % (24 / 8))] == 0x00)
                       || (m_buffer[((m_nStartingbyte + 2) % (24 / 8))] == 0x01)
                       || (m_buffer[((m_nStartingbyte + 2) % (24 / 8))] == 0x02)
                       || (m_buffer[((m_nStartingbyte + 2) % (24 / 8))] == 0x03)))
			{
				int nbuffersaved = 0;
				byte cEmulationPreventionByte = H264_EMULATION_PREVENTION_BYTE;

				//Save 1st byte
				fwrite(m_buffer[((m_nStartingbyte + nbuffersaved) % (24 / 8))], 1, 1, m_pOutFile);
				nbuffersaved++;

				//Save 2st byte
				fwrite(m_buffer[((m_nStartingbyte + nbuffersaved) % (24 / 8))], 1, 1, m_pOutFile);
				nbuffersaved++;

				//Save emulation prevention byte
				fwrite(cEmulationPreventionByte, 1, 1, m_pOutFile);

				//Save the rest of bytes (usually 1)
				while (nbuffersaved < (24 / 8))
				{
					fwrite(m_buffer[((m_nStartingbyte + nbuffersaved) % (24 / 8))], 1, 1, m_pOutFile);
					nbuffersaved++;
				}

				//All bytes in buffer are saved, so clear the buffer
				clearbuffer();

				bemulationpreventionexecuted = true;
			}
		}

		if (bemulationpreventionexecuted == false)
		{
			//No emulation prevention was used

			//Save the oldest byte in buffer
			fwrite(m_buffer[m_nStartingbyte], 1, 1, m_pOutFile);

			//Move the index
			m_buffer[m_nStartingbyte] = 0;
			m_nStartingbyte++;
			m_nStartingbyte = m_nStartingbyte % (24 / 8);
			m_nLastbitinbuffer = m_nLastbitinbuffer - 8;
		}
	}

	//! Constructor
	/*!
		 \param pOutBinaryFile The output file pointer
	 */
	public CJOCh264bitstream(List<byte> pOutBinaryFile)
	{
		clearbuffer();

//C++ TO C# CONVERTER TODO TASK: C# does not have an equivalent to pointers to variables (in C#, the variable no longer points to the original when the original variable is re-assigned):
//ORIGINAL LINE: m_pOutFile = pOutBinaryFile;
		m_pOutFile = pOutBinaryFile;
	}

	//! Destructor
	public virtual void Dispose()
	{
		close();
	}

	//! Add 4 bytes to h264 bistream without taking into acount the emulation prevention. Used to add the NAL header to the h264 bistream
	/*!
		 \param nVal The 32b value to add
		 \param bDoAlign Indicates if the function will insert 0 in order to create a byte aligned stream before adding nVal 4 bytes to stream. If you try to call this function and the stream is not byte aligned an exception will be thrown
	 */
	public void add4bytesnoemulationprevention(uint nVal, bool bDoAlign = false)
	{
		//Used to add NAL header stream
		//Remember: NAL header is byte oriented

		if (bDoAlign == true)
		{
			dobytealign();
		}

		if ((m_nLastbitinbuffer % 8) != 0)
		{
			throw new System.Exception("Error: Save to file must be byte aligned");
		}

		while (m_nLastbitinbuffer != 0)
		{
			savebufferbyte();
		}

		byte cbyte = (byte)((nVal & 0xFF000000) >> 24);
		fwrite(cbyte, 1, 1, m_pOutFile);

		cbyte = (byte)((nVal & 0x00FF0000) >> 16);
		fwrite(cbyte, 1, 1, m_pOutFile);

		cbyte = (byte)((nVal & 0x0000FF00) >> 8);
		fwrite(cbyte, 1, 1, m_pOutFile);

		cbyte = (byte)(nVal & 0x000000FF);
		fwrite(cbyte, 1, 1, m_pOutFile);
	}

	//! Adds nNumbits of lval to the end of h264 bitstream
	/*!
		 \param nVal value to add at the end of the h264 stream (only the LAST nNumbits will be added)
		 \param nNumbits number of bits of lval that will be added to h264 stream (counting from left)
	 */

	//Public functions

	public void addbits(uint lval, int nNumbits)
	{
		if ((nNumbits <= 0) || (nNumbits > 64))
		{
			throw new System.Exception("Error: numbits must be between 1 ... 64");
		}

		int nBit = 0;
		int n = nNumbits - 1;
		while (n >= 0)
		{
			nBit = getbitnum(lval, n);
			n--;

			addbittostream(nBit);
		}
	}

	//! Adds lval to the end of h264 bitstream using exp golomb coding for unsigned values
	/*!
		 \param nVal value to add at the end of the h264 stream
	 */
	public void addexpgolombunsigned(uint lval)
	{
		//it implements unsigned exp golomb coding

		uint lvalint = lval + 1;
		int nnumbits = (int)(Math.Log(lvalint,2) + 1);

		for (int n = 0; n < (nnumbits - 1); n++)
		{
			addbits(0, 1);
		}

		addbits(lvalint, nnumbits);
	}

	//! Adds lval to the end of h264 bitstream using exp golomb coding for signed values
	/*!
		 \param nVal value to add at the end of the h264 stream
	 */
	public void addexpgolombsigned(int lval)
	{
		//it implements a signed exp golomb coding

		uint lvalint = (uint)(Math.Abs(lval) * 2 - 1);
		if (lval <= 0)
		{
			lvalint = (uint)(2 * Math.Abs(lval));
		}

		addexpgolombunsigned(lvalint);
	}

	//! Adds 0 to the end of h264 bistream in order to leave a byte aligned stream (It will insert seven 0 maximum)
	public void dobytealign()
	{
		//Check if the last bit in buffer is multiple of 8
		int nr = m_nLastbitinbuffer % 8;
		if ((nr % 8) != 0)
		{
			m_nLastbitinbuffer = m_nLastbitinbuffer + (8 - nr);
		}
	}

	//! Adds cByte (8 bits) to the end of h264 bitstream. This function it is optimized in byte aligned streams.
	/*!
		 \param cByte value to add at the end of the h264 stream (from 0 to 255)
	 */
	public void addbyte(byte cByte)
	{
		//Byte alignment optimization
		if ((m_nLastbitinbuffer % 8) == 0)
		{
			addbytetostream(cByte);
		}
		else
		{
			addbits(cByte, 8);
		}
	}

	//! Close the h264 stream saving to disk the last remaing bits in buffer
	public void close()
	{
		//Flush the data in stream buffer

		dobytealign();

		while (m_nLastbitinbuffer != 0)
		{
			savebufferbyte();
		}
	}

    // 'writing' to memory
    private void fwrite(byte b, int x, int y, List<byte>data)
    {
        data.Add(b);
    }
}

repository: mmdd-L/SharpRTSP

repo_name: mmdd-L/SharpRTSP

branch_name: refs/heads/master

gha_license_id: NOASSERTION

gha_language: C#

extension: cs


text:
#
# base recipe:
#	http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-support/ntp/ntp_4.2.8p3.bb
#

PR = "r2"

inherit debian-package

LICENSE = "NTP"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=fea4b50c33b18c2194b4b1c9ca512670"

inherit autotools pkgconfig useradd

USERADD_PACKAGES = "${PN}"
NTP_USER_HOME ?= "/var/lib/ntp"
USERADD_PARAM_${PN} = "--system --home-dir ${NTP_USER_HOME} \
                       --no-create-home \
                       --shell /bin/false --user-group ntp"

# Configure follow debian/rules
EXTRA_OECONF += "--enable-all-clocks --enable-parse-clocks --enable-SHM \
                --disable-debugging --sysconfdir=/var/lib/ntp \
                --with-sntp=no \
                --with-lineeditlibs=edit \
                --without-ntpsnmpd \
                --disable-local-libopts \
                --enable-ntp-signd \
                --disable-dependency-tracking \
"

PACKAGECONFIG ??= "openssl cap"
PACKAGECONFIG[openssl] = "--with-openssl-libdir=${STAGING_LIBDIR} \
                          --with-openssl-incdir=${STAGING_INCDIR} \
                          --with-crypto, \
                          --without-openssl --without-crypto, \
                          openssl"
PACKAGECONFIG[cap] = "--enable-linuxcaps,--disable-linuxcaps,libcap"
PACKAGECONFIG[readline] = "--with-lineeditlibs,--without-lineeditlibs,readline"

do_install_append(){
	# Follow debian/rules
	#
	# move the administrator programs from /usr/bin to /usr/sbin
	test -d ${D}${sbindir} || install -d ${D}${sbindir}
	for file in ntpdate ntp-wait ntpd ntptime ntp-keygen; do
		mv ${D}${bindir}/$file ${D}${sbindir}/$file || exit
	done

	# don't install tickadj
	rm ${D}${bindir}/tickadj

	install -D -m 0755 ${B}/scripts/ntpsweep ${D}${bindir}/ntpsweep

	test -d ${D}${sysconfdir}/dhcp/dhclient-exit-hooks.d || \
		install -d ${D}${sysconfdir}/dhcp/dhclient-exit-hooks.d
	install -D -m 0644 ${S}/debian/ntp.dhcp ${D}${sysconfdir}/dhcp/dhclient-exit-hooks.d/ntp
	install -D -m 0644 ${S}/debian/ntpdate.dhcp ${D}${sysconfdir}/dhcp/dhclient-exit-hooks.d/ntpdate
	install -D -m 0755 ${S}/debian/ntpdate-debian ${D}${sbindir}/ntpdate-debian

	install -D -m 0644 ${S}/debian/ntp.conf ${D}${sysconfdir}/ntp.conf

	# remove upstream man pages, which are currently not as nice as Debian's / ntpsnmpd we don't want
	( cd ${D}${mandir}/man1/; rm ntpd.1 ntpdc.1 ntp-keygen.1 ntpq.1 ntpsnmpd.1 )
	MANS="1 5 8"
	for i in $MANS; do
		test -d ${D}${mandir}/man$i || install -d ${D}${mandir}/man$i
		install -m 0644 ${S}/debian/man/*.$i ${D}${mandir}/man$i/
	done

	# Install files from ${S}/debian
	#
	test -d ${D}${sysconfdir}/cron.daily || install -d ${D}${sysconfdir}/cron.daily
	test -d ${D}${sysconfdir}/default || install -d ${D}${sysconfdir}/default
	test -d ${D}${sysconfdir}/init.d || install -d ${D}${sysconfdir}/init.d
	test -d ${D}${sysconfdir}/logcheck/ignore.d.server || \
			install -d ${D}${sysconfdir}/logcheck/ignore.d.server
	test -d ${D}${sysconfdir}/network/if-up.d || \
			install -d ${D}${sysconfdir}/network/if-up.d

	install -m 0755 ${S}/debian/ntp.cron.daily	${D}${sysconfdir}/cron.daily/ntp
	install -m 0644 ${S}/debian/ntp.default		${D}${sysconfdir}/default/ntp
	install -m 0644 ${S}/debian/ntpdate.default	${D}${sysconfdir}/default/ntpdate
	install -m 0755 ${S}/debian/ntp.init		${D}${sysconfdir}/init.d/ntp
	install -m 0644 ${S}/debian/ntpdate.logcheck.ignore.server \
			${D}${sysconfdir}/logcheck/ignore.d.server/ntpdate
	install -m 0755 ${S}/debian/ntpdate.if-up	${D}${sysconfdir}/network/if-up.d/ntpdate
}

PACKAGES =+ "ntpdate"

FILES_ntpdate = " \
	${sysconfdir}/*/ntpdate \
	${sysconfdir}/*/*/ntpdate \
	${sbindir}/ntpdate* \
"

repository: nghiaht-tsdv/meta-debian

repo_name: nghiaht-tsdv/meta-debian

branch_name: refs/heads/jethro

gha_language: BitBake