text:
<polygon width="0.01" layer="31">
<vertex x="2.44" y="-1.13"/>
<vertex x="2.44" y="-1.37"/>
<vertex x="1.66" y="-1.37"/>
<vertex x="1.66" y="-1.13"/>
</polygon>
<smd name="6" x="-2.05" y="-1.25" dx="0.3" dy="0.85" layer="1" rot="R270" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-2.44" y="-1.37"/>
<vertex x="-2.44" y="-1.13"/>
<vertex x="-1.66" y="-1.13"/>
<vertex x="-1.66" y="-1.37"/>
</polygon>
<smd name="5" x="-2.05" y="-0.75" dx="0.3" dy="0.85" layer="1" rot="R270" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-2.44" y="-0.87"/>
<vertex x="-2.44" y="-0.63"/>
<vertex x="-1.66" y="-0.63"/>
<vertex x="-1.66" y="-0.87"/>
</polygon>
<smd name="4" x="-2.05" y="-0.25" dx="0.3" dy="0.85" layer="1" rot="R270" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-2.44" y="-0.37"/>
<vertex x="-2.44" y="-0.13"/>
<vertex x="-1.66" y="-0.13"/>
<vertex x="-1.66" y="-0.37"/>
</polygon>
<smd name="3" x="-2.05" y="0.25" dx="0.3" dy="0.85" layer="1" rot="R270" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-2.44" y="0.13"/>
<vertex x="-2.44" y="0.37"/>
<vertex x="-1.66" y="0.37"/>
<vertex x="-1.66" y="0.13"/>
</polygon>
<smd name="2" x="-2.05" y="0.75" dx="0.3" dy="0.85" layer="1" rot="R270" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-2.44" y="0.63"/>
<vertex x="-2.44" y="0.87"/>
<vertex x="-1.66" y="0.87"/>
<vertex x="-1.66" y="0.63"/>
</polygon>
<smd name="1" x="-2.05" y="1.25" dx="0.3" dy="0.85" layer="1" rot="R270" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-2.44" y="1.13"/>
<vertex x="-2.44" y="1.37"/>
<vertex x="-1.66" y="1.37"/>
<vertex x="-1.66" y="1.13"/>
</polygon>
<smd name="12" x="1.25" y="-2.05" dx="0.3" dy="0.85" layer="1" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="1.37" y="-2.44"/>
<vertex x="1.13" y="-2.44"/>
<vertex x="1.13" y="-1.66"/>
<vertex x="1.37" y="-1.66"/>
</polygon>
<smd name="11" x="0.75" y="-2.05" dx="0.3" dy="0.85" layer="1" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="0.87" y="-2.44"/>
<vertex x="0.63" y="-2.44"/>
<vertex x="0.63" y="-1.66"/>
<vertex x="0.87" y="-1.66"/>
</polygon>
<smd name="10" x="0.25" y="-2.05" dx="0.3" dy="0.85" layer="1" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="0.37" y="-2.44"/>
<vertex x="0.13" y="-2.44"/>
<vertex x="0.13" y="-1.66"/>
<vertex x="0.37" y="-1.66"/>
</polygon>
<smd name="9" x="-0.25" y="-2.05" dx="0.3" dy="0.85" layer="1" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-0.13" y="-2.44"/>
<vertex x="-0.37" y="-2.44"/>
<vertex x="-0.37" y="-1.66"/>
<vertex x="-0.13" y="-1.66"/>
</polygon>
<smd name="8" x="-0.75" y="-2.05" dx="0.3" dy="0.85" layer="1" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-0.63" y="-2.44"/>
<vertex x="-0.87" y="-2.44"/>
<vertex x="-0.87" y="-1.66"/>
<vertex x="-0.63" y="-1.66"/>
</polygon>
<smd name="7" x="-1.25" y="-2.05" dx="0.3" dy="0.85" layer="1" cream="no"/>
<polygon width="0.01" layer="31">
<vertex x="-1.13" y="-2.44"/>
<vertex x="-1.37" y="-2.44"/>
<vertex x="-1.37" y="-1.66"/>
<vertex x="-1.13" y="-1.66"/>
</polygon>
<circle x="-2.52" y="2.5" radius="0.1555625" width="0.127" layer="21"/>
<polygon width="0.127" layer="31">
<vertex x="-1" y="1"/>
<vertex x="-0.25" y="1"/>
<vertex x="-0.25" y="0.25"/>
<vertex x="-1" y="0.25"/>
</polygon>
<polygon width="0.127" layer="31">
<vertex x="1" y="1"/>
<vertex x="0.25" y="1"/>
<vertex x="0.25" y="0.25"/>
<vertex x="1" y="0.25"/>
</polygon>
<polygon width="0.127" layer="31">
<vertex x="1" y="-1"/>
<vertex x="1" y="-0.25"/>
<vertex x="0.25" y="-0.25"/>
<vertex x="0.25" y="-1"/>
</polygon>
<polygon width="0.127" layer="31">
<vertex x="-1" y="-1"/>
<vertex x="-1" y="-0.25"/>
<vertex x="-0.25" y="-0.25"/>
<vertex x="-0.25" y="-1"/>
</polygon>
<text x="-0.889" y="0.381" size="0.4064" layer="25">>NAME</text>
<text x="-1.016" y="-0.635" size="0.4064" layer="27">>VALUE</text>
<smd name="PAD" x="0" y="0" dx="2.55" dy="2.55" layer="1" cream="no"/>
</package>
</packages>
<symbols>
<symbol name="CP2102N">
<wire x1="-17.78" y1="-15.24" x2="17.78" y2="-15.24" width="0.254" layer="94"/>
<wire x1="17.78" y1="-15.24" x2="17.78" y2="15.24" width="0.254" layer="94"/>
<wire x1="17.78" y1="15.24" x2="-17.78" y2="15.24" width="0.254" layer="94"/>
<wire x1="-17.78" y1="15.24" x2="-17.78" y2="-15.24" width="0.254" layer="94"/>
<pin name="!RI!/CLK" x="-20.32" y="12.7" length="short"/>
<pin name="GND" x="-20.32" y="10.16" length="short"/>
<pin name="D+" x="-20.32" y="7.62" length="short"/>
<pin name="D-" x="-20.32" y="5.08" length="short"/>
<pin name="VIO" x="-20.32" y="2.54" length="short"/>
<pin name="VDD" x="-20.32" y="0" length="short"/>
<pin name="VREGIN" x="-20.32" y="-2.54" length="short"/>
<pin name="VBUS" x="-20.32" y="-5.08" length="short"/>
<pin name="!RSTB" x="-20.32" y="-7.62" length="short"/>
<pin name="GPIO3/WAKEUP" x="-20.32" y="-10.16" length="short"/>
<pin name="GPIO2/RS485" x="-20.32" y="-12.7" length="short"/>
<pin name="GPIO1/RXT" x="20.32" y="-12.7" length="short" rot="R180"/>
<pin name="GPIO0/TXT" x="20.32" y="-10.16" length="short" rot="R180"/>
<pin name="SUSPENDB" x="20.32" y="-7.62" length="short" rot="R180"/>
<pin name="SUSPEND" x="20.32" y="-5.08" length="short" rot="R180"/>
<pin name="CTS" x="20.32" y="-2.54" length="short" rot="R180"/>
<pin name="RTS" x="20.32" y="0" length="short" rot="R180"/>
<pin name="RXD" x="20.32" y="2.54" length="short" rot="R180"/>
<pin name="TXD" x="20.32" y="5.08" length="short" rot="R180"/>
<pin name="DSR" x="20.32" y="7.62" length="short" rot="R180"/>
<pin name="DTR" x="20.32" y="10.16" length="short" rot="R180"/>
<pin name="DCD" x="20.32" y="12.7" length="short" rot="R180"/>
<text x="-17.78" y="17.78" size="1.27" layer="95">>NAME</text>
<text x="-17.78" y="15.748" size="1.27" layer="96">>VALUE</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="CP2102N" prefix="U">
<gates>
<gate name="G$1" symbol="CP2102N" x="0" y="0"/>
</gates>
<devices>
<device name="" package="QFN24">
<connects>
<connect gate="G$1" pin="!RI!/CLK" pad="1"/>
<connect gate="G$1" pin="!RSTB" pad="9"/>
<connect gate="G$1" pin="CTS" pad="18"/>
<connect gate="G$1" pin="D+" pad="3"/>
<connect gate="G$1" pin="D-" pad="4"/>
<connect gate="G$1" pin="DCD" pad="24"/>
<connect gate="G$1" pin="DSR" pad="22"/>
<connect gate="G$1" pin="DTR" pad="23"/>
<connect gate="G$1" pin="GND" pad="2 PAD"/>
<connect gate="G$1" pin="GPIO0/TXT" pad="14"/>
<connect gate="G$1" pin="GPIO1/RXT" pad="13"/>
<connect gate="G$1" pin="GPIO2/RS485" pad="12"/>
<connect gate="G$1" pin="GPIO3/WAKEUP" pad="11"/>
<connect gate="G$1" pin="RTS" pad="19"/>
<connect gate="G$1" pin="RXD" pad="20"/>
<connect gate="G$1" pin="SUSPEND" pad="17"/>
<connect gate="G$1" pin="SUSPENDB" pad="15"/>
<connect gate="G$1" pin="TXD" pad="21"/>
<connect gate="G$1" pin="VBUS" pad="8"/>
<connect gate="G$1" pin="VDD" pad="6"/>
<connect gate="G$1" pin="VIO" pad="5"/>
<connect gate="G$1" pin="VREGIN" pad="7"/>
</connects>
<technologies>
<technology name="">
<attribute name="PROD_ID" value="IC-14020"/>
</technology>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="standoff">
<packages>
<package name="STAND-OFF-#8">
<description>
Standoff (#4 Screw)

This is the mechanical footprint for a #4 phillips button head screw. Use the keepout ring to avoid running the screw head into surrounding components.

Devices Using

STAND-OFF

</description>
<wire x1="0" y1="1.8542" x2="0" y2="-1.8542" width="0.2032" layer="41" curve="-180"/>
<wire x1="0" y1="-1.8542" x2="0" y2="1.8542" width="0.2032" layer="41" curve="-180"/>
<wire x1="0" y1="-1.8542" x2="0" y2="1.8542" width="0.2032" layer="42" curve="180"/>
<wire x1="0" y1="-1.8542" x2="0" y2="1.8542" width="0.2032" layer="42" curve="-180"/>
<circle x="0" y="0" radius="2.794" width="0.127" layer="39"/>
<hole x="0" y="0" drill="3.81"/>
<text x="0" y="2.032" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-2.032" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
</package>
<package name="STAND-OFF">
<description>
Standoff (#4 Screw)

This is the mechanical footprint for a #4 phillips button head screw. Use the keepout ring to avoid running the screw head into surrounding components.

Devices Using

STAND-OFF

</description>
<wire x1="0" y1="1.8542" x2="0" y2="-1.8542" width="0.2032" layer="41" curve="-180"/>
<wire x1="0" y1="-1.8542" x2="0" y2="1.8542" width="0.2032" layer="41" curve="-180"/>
<wire x1="0" y1="-1.8542" x2="0" y2="1.8542" width="0.2032" layer="42" curve="180"/>
<wire x1="0" y1="-1.8542" x2="0" y2="1.8542" width="0.2032" layer="42" curve="-180"/>
<circle x="0" y="0" radius="2.794" width="0.127" layer="39"/>
<hole x="0" y="0" drill="3.302"/>
<text x="0" y="2.032" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-2.032" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
</package>
</packages>
<symbols>
<symbol name="STAND-OFF">
<description>
Stand-Off Drill Hole
</description>
<circle x="0" y="0" radius="1.27" width="0.254" layer="94"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="STAND-OFF" prefix="H">
<description>
Stand Off

Drill holes for mechanically mounting via screws, standoffs, etc.

Note: Use the keepout ring to avoid running the screw head into surrounding components.

Variant Overviews

STAND-OFF - Mechanical footprint for a #4 phillips button head screw.

STAND-OFF-TIGHT - Mechanical footprint for a #4 phillips button head screw,

Example SparkFun Products

Screw - Phillips Head (1/4", 4-40, 10 pack) (PRT-10453)

Screw - Phillips Head (1/2", 4-40, 10 pack) (PRT-10452)

Screw - Phillips Head (3/4", 4-40, 10 pack) (PRT-10451)

Screw - Phillips Head (1", 4-40, 10 pack) (PRT-10450)
</description>
<gates>
<gate name="G$1" symbol="STAND-OFF" x="0" y="0"/>
</gates>
<devices>
<device name="" package="STAND-OFF">
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="#8" package="STAND-OFF-#8">
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<parts>
<part name="U1" library="SparkFun-RF" deviceset="ESP-WROVER-32" device="ESP-WROVER-32"/>
<part name="SUPPLY1" library="SparkFun-PowerSymbols" deviceset="3.3V" device=""/>
<part name="R1" library="SparkFun-Resistors" deviceset="10KOHM" device="-0603-1/10W-1%" value="10k"/>
<part name="GND1" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="R2" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="R3" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="SUPPLY2" library="SparkFun-PowerSymbols" deviceset="3.3V" device=""/>
<part name="D1" library="SparkFun-LED" deviceset="LED-BLUE" device="0603"/>
<part name="R4" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND2" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="S1" library="SparkFun-Switches" deviceset="MOMENTARY-SWITCH-SPST" device="-SMD-4.6X2.8MM" value=""/>
<part name="S2" library="SparkFun-Switches" deviceset="MOMENTARY-SWITCH-SPST" device="-SMD-4.6X2.8MM" value=""/>
<part name="GND3" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="GND4" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="J3" library="SparkFun-Connectors" deviceset="USB_C" device="_2-LAYER"/>
<part name="U2" library="SparkFun-IC-Power" deviceset="V_REG_AP2112" device="K-3.3V" value="3.3V"/>
<part name="D2" library="SparkFun-DiscreteSemi" deviceset="DIODE-SCHOTTKY" device="-BAT60A" value="3A/10V/280mV"/>
<part name="D3" library="SparkFun-DiscreteSemi" deviceset="DIODE-SCHOTTKY" device="-BAT60A" value="3A/10V/280mV"/>
<part name="SUPPLY4" library="SparkFun-PowerSymbols" deviceset="V_USB" device=""/>
<part name="SUPPLY5" library="SparkFun-PowerSymbols" deviceset="V_USB" device=""/>
<part name="SUPPLY6" library="SparkFun-PowerSymbols" deviceset="VIN" device=""/>
<part name="J4" library="SparkFun-Connectors" deviceset="CORTEX_JTAG_DEBUG" device="_SMD" value="JTAG"/>
<part name="GND6" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="SUPPLY7" library="SparkFun-PowerSymbols" deviceset="5V" device=""/>
<part name="SUPPLY8" library="SparkFun-PowerSymbols" deviceset="5V" device=""/>
<part name="GND7" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="SUPPLY9" library="SparkFun-PowerSymbols" deviceset="3.3V" device=""/>
<part name="GND8" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="SUPPLY10" library="SparkFun-PowerSymbols" deviceset="5V" device=""/>
<part name="C1" library="SparkFun-Capacitors" deviceset="0.1UF" device="-0603-25V-(+80/-20%)" value="0.1uF"/>
<part name="C2" library="SparkFun-Capacitors" deviceset="0.1UF" device="-0603-25V-(+80/-20%)" value="0.1uF"/>
<part name="C3" library="SparkFun-Capacitors" deviceset="1.0UF" device="-0603-16V-10%-X7R" value="1.0uF"/>
<part name="C4" library="SparkFun-Capacitors" deviceset="1.0UF" device="-0603-16V-10%-X7R" value="1.0uF"/>
<part name="C5" library="SparkFun-Capacitors" deviceset="4.7UF" device="-0603-35V-(20%)" value="4.7uF"/>
<part name="C6" library="SparkFun-Capacitors" deviceset="4.7UF" device="-0603-35V-(20%)" value="4.7uF"/>
<part name="C7" library="SparkFun-Capacitors" deviceset="1.0UF" device="-0603-16V-10%-X7R" value="1.0uF"/>
<part name="C8" library="SparkFun-Capacitors" deviceset="1.0UF" device="-0603-16V-10%-X7R" value="1.0uF"/>
<part name="C9" library="SparkFun-Capacitors" deviceset="1.0UF" device="-0603-16V-10%-X7R" value="1.0uF"/>
<part name="C10" library="SparkFun-Capacitors" deviceset="0.1UF" device="-0603-25V-(+80/-20%)" value="0.1uF"/>
<part name="C11" library="SparkFun-Capacitors" deviceset="0.1UF" device="-0603-25V-(+80/-20%)" value="0.1uF"/>
<part name="GND5" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="Q1" library="SparkFun-DiscreteSemi" deviceset="TRANS_NPN_DUAL" device="-MBT3904DW1T1"/>
<part name="R5" library="SparkFun-Resistors" deviceset="10KOHM" device="-0603-1/10W-1%" value="10k"/>
<part name="R6" library="SparkFun-Resistors" deviceset="10KOHM" device="-0603-1/10W-1%" value="10k"/>
<part name="U3" library="SparkFun-IC-Comms" deviceset="CP2102N" device=""/>
<part name="SUPPLY3" library="SparkFun-PowerSymbols" deviceset="5V" device=""/>
<part name="GND9" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="R7" library="SparkFun-Resistors" deviceset="10OHM" device="-0603-1/10W-1%" value="10"/>
<part name="SUPPLY11" library="SparkFun-PowerSymbols" deviceset="3.3V" device=""/>
<part name="R8" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND10" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="D4" library="SparkFun-LED" deviceset="LED-RED" device="0603"/>
<part name="R9" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND11" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="SUPPLY12" library="SparkFun-PowerSymbols" deviceset="VIN" device=""/>
<part name="GND12" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="H1" library="standoff" deviceset="STAND-OFF" device="#8"/>
<part name="H2" library="standoff" deviceset="STAND-OFF" device="#8"/>
<part name="H3" library="standoff" deviceset="STAND-OFF" device="#8"/>
<part name="H4" library="standoff" deviceset="STAND-OFF" device="#8"/>
<part name="FD1" library="SparkFun-Aesthetics" deviceset="FIDUCIAL" device="1X2"/>
<part name="FD2" library="SparkFun-Aesthetics" deviceset="FIDUCIAL" device="1X2"/>
<part name="FD3" library="SparkFun-Aesthetics" deviceset="FIDUCIAL" device="1X2"/>
<part name="FD4" library="SparkFun-Aesthetics" deviceset="FIDUCIAL" device="1X2"/>
<part name="R10" library="SparkFun-Resistors" deviceset="5.1KOHM" device="5.1KOHM-0603-1/10W-1%" value="5.1k"/>
<part name="R11" library="SparkFun-Resistors" deviceset="5.1KOHM" device="5.1KOHM-0603-1/10W-1%" value="5.1k"/>
<part name="GND13" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="GND14" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="GND15" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="SUPPLY13" library="SparkFun-PowerSymbols" deviceset="3.3V" device=""/>
<part name="J1" library="SparkFun-Connectors" deviceset="CONN_04" device="SCREW"/>
<part name="FRAME1" library="SparkFun-Aesthetics" deviceset="FRAME-LETTER" device="">
<attribute name="DESIGNER" value="oclyke"/>
<attribute name="REV" value="v20"/>
</part>
<part name="D5" library="SparkFun-LED" deviceset="LED-BLUE" device="0603"/>
<part name="R12" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND16" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="D6" library="SparkFun-LED" deviceset="LED-BLUE" device="0603"/>
<part name="R13" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND17" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="D7" library="SparkFun-LED" deviceset="LED-BLUE" device="0603"/>
<part name="R14" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND18" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
<part name="D8" library="SparkFun-LED" deviceset="LED-BLUE" device="0603"/>
<part name="R15" library="SparkFun-Resistors" deviceset="1KOHM" device="-0603-1/10W-1%" value="1k"/>
<part name="GND19" library="SparkFun-PowerSymbols" deviceset="GND" device=""/>
</parts>
<sheets>
<sheet>
<plain>
<wire x1="147.32" y1="35.56" x2="147.32" y2="50.8" width="0.2032" layer="97" style="longdash"/>
<wire x1="147.32" y1="50.8" x2="147.32" y2="106.68" width="0.2032" layer="97" style="longdash"/>
<wire x1="147.32" y1="106.68" x2="147.32" y2="142.24" width="0.2032" layer="97" style="longdash"/>
<wire x1="147.32" y1="142.24" x2="147.32" y2="185.42" width="0.2032" layer="97" style="longdash"/>
<wire x1="147.32" y1="50.8" x2="0" y2="50.8" width="0.2032" layer="97" style="longdash"/>
<wire x1="0" y1="106.68" x2="147.32" y2="106.68" width="0.2032" layer="97" style="longdash"/>
<wire x1="147.32" y1="142.24" x2="0" y2="142.24" width="0.2032" layer="97" style="longdash"/>
</plain>
<instances>
<instance part="U1" gate="G$1" x="182.88" y="127">
<attribute name="NAME" x="167.64" y="162.814" size="1.778" layer="95"/>
<attribute name="VALUE" x="167.64" y="88.646" size="1.778" layer="96" align="top-left"/>
</instance>
<instance part="SUPPLY1" gate="G$1" x="162.56" y="175.26">
<attribute name="VALUE" x="162.56" y="178.054" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="R1" gate="G$1" x="160.02" y="165.1" rot="R90">
<attribute name="NAME" x="158.496" y="165.1" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="156.464" y="170.18" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND1" gate="1" x="162.56" y="86.36">
<attribute name="VALUE" x="162.56" y="86.106" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="R2" gate="G$1" x="114.3" y="162.56" rot="R90">
<attribute name="NAME" x="112.776" y="162.56" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="110.744" y="167.64" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="R3" gate="G$1" x="119.38" y="162.56" rot="R90">
<attribute name="NAME" x="122.936" y="162.56" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="120.904" y="167.64" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="SUPPLY2" gate="G$1" x="119.38" y="172.72">
<attribute name="VALUE" x="119.38" y="175.514" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="D1" gate="G$1" x="215.9" y="55.88">
<attribute name="NAME" x="213.36" y="58.42" size="1.778" layer="95" font="vector" rot="R90"/>
<attribute name="VALUE" x="210.185" y="48.768" size="1.778" layer="96" font="vector" rot="R90" align="top-left"/>
</instance>
<instance part="R4" gate="G$1" x="215.9" y="66.04" rot="R90">
<attribute name="NAME" x="214.376" y="66.04" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="217.424" y="66.04" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND2" gate="1" x="215.9" y="45.72">
<attribute name="VALUE" x="215.9" y="45.466" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="S1" gate="G$1" x="228.6" y="160.02">
<attribute name="NAME" x="228.6" y="161.544" size="1.778" layer="95" font="vector" align="bottom-center"/>
<attribute name="VALUE" x="228.6" y="159.512" size="1.778" layer="96" font="vector" align="top-center"/>
</instance>
<instance part="S2" gate="G$1" x="228.6" y="144.78">
<attribute name="NAME" x="228.6" y="146.304" size="1.778" layer="95" font="vector" align="bottom-center"/>
<attribute name="VALUE" x="228.6" y="144.272" size="1.778" layer="96" font="vector" align="top-center"/>
</instance>
<instance part="GND3" gate="1" x="220.98" y="139.7">
<attribute name="VALUE" x="220.98" y="139.446" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="GND4" gate="1" x="220.98" y="154.94">
<attribute name="VALUE" x="220.98" y="154.686" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="J3" gate="J1" x="30.48" y="30.48">
<attribute name="VALUE" x="27.94" y="18.034" size="1.778" layer="96" font="vector" rot="MR180" align="top-left"/>
<attribute name="NAME" x="27.94" y="40.894" size="1.778" layer="95" font="vector"/>
</instance>
<instance part="U2" gate="G$1" x="83.82" y="76.2">
<attribute name="NAME" x="76.2" y="84.074" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="76.2" y="68.326" size="1.778" layer="96" font="vector" align="top-left"/>
</instance>
<instance part="D2" gate="G$1" x="35.56" y="91.44">
<attribute name="NAME" x="33.02" y="93.472" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="33.02" y="89.408" size="1.778" layer="96" font="vector" align="top-left"/>
</instance>
<instance part="D3" gate="G$1" x="35.56" y="81.28">
<attribute name="NAME" x="33.02" y="83.312" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="33.02" y="79.248" size="1.778" layer="96" font="vector" align="top-left"/>
</instance>
<instance part="SUPPLY4" gate="G$1" x="45.72" y="40.64">
<attribute name="VALUE" x="45.72" y="43.434" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="SUPPLY5" gate="G$1" x="30.48" y="93.98">
<attribute name="VALUE" x="30.48" y="96.774" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="SUPPLY6" gate="G$1" x="22.86" y="93.98">
<attribute name="VALUE" x="22.86" y="96.774" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="J4" gate="J1" x="40.64" y="124.46">
<attribute name="NAME" x="27.94" y="132.334" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="27.94" y="114.554" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="GND6" gate="1" x="22.86" y="114.3">
<attribute name="VALUE" x="22.86" y="114.046" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="SUPPLY7" gate="G$1" x="20.32" y="132.08">
<attribute name="VALUE" x="20.32" y="134.874" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="SUPPLY8" gate="G$1" x="40.64" y="93.98">
<attribute name="VALUE" x="40.64" y="96.774" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="GND7" gate="1" x="53.34" y="63.5">
<attribute name="VALUE" x="53.34" y="63.246" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="SUPPLY9" gate="G$1" x="116.84" y="93.98">
<attribute name="VALUE" x="116.84" y="96.774" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="GND8" gate="1" x="58.42" y="114.3">
<attribute name="VALUE" x="58.42" y="114.046" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="SUPPLY10" gate="G$1" x="60.96" y="132.08">
<attribute name="VALUE" x="60.96" y="134.874" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="C1" gate="G$1" x="53.34" y="73.66">
<attribute name="NAME" x="54.864" y="76.581" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="54.864" y="71.501" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C2" gate="G$1" x="96.52" y="73.66">
<attribute name="NAME" x="98.044" y="76.581" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="98.044" y="71.501" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C3" gate="G$1" x="63.5" y="73.66">
<attribute name="NAME" x="65.024" y="76.581" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="65.024" y="71.501" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C4" gate="G$1" x="106.68" y="73.66">
<attribute name="NAME" x="108.204" y="76.581" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="108.204" y="71.501" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C5" gate="G$1" x="116.84" y="73.66">
<attribute name="NAME" x="118.364" y="76.581" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="118.364" y="71.501" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C6" gate="G$1" x="20.32" y="162.56">
<attribute name="NAME" x="21.844" y="165.481" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="21.844" y="160.401" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C7" gate="G$1" x="25.4" y="162.56">
<attribute name="NAME" x="26.924" y="165.481" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="26.924" y="160.401" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C8" gate="G$1" x="30.48" y="162.56">
<attribute name="NAME" x="32.004" y="165.481" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="32.004" y="160.401" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C9" gate="G$1" x="35.56" y="162.56">
<attribute name="NAME" x="37.084" y="165.481" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="37.084" y="160.401" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C10" gate="G$1" x="40.64" y="162.56">
<attribute name="NAME" x="42.164" y="165.481" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="42.164" y="160.401" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="C11" gate="G$1" x="45.72" y="162.56">
<attribute name="NAME" x="47.244" y="165.481" size="1.778" layer="95" font="vector"/>
<attribute name="VALUE" x="47.244" y="160.401" size="1.778" layer="96" font="vector"/>
</instance>
<instance part="GND5" gate="1" x="116.84" y="63.5">
<attribute name="VALUE" x="116.84" y="63.246" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="Q1" gate="Q1" x="162.56" y="68.58" rot="MR0">
<attribute name="NAME" x="160.02" y="68.58" size="1.778" layer="95" font="vector" rot="MR0"/>
<attribute name="VALUE" x="160.02" y="66.294" size="1.778" layer="96" font="vector" rot="MR0"/>
</instance>
<instance part="Q1" gate="Q2" x="162.56" y="50.8" rot="R180">
<attribute name="NAME" x="160.02" y="50.8" size="1.778" layer="95" font="vector" rot="R180"/>
<attribute name="VALUE" x="160.02" y="53.086" size="1.778" layer="96" font="vector" rot="R180"/>
</instance>
<instance part="R5" gate="G$1" x="172.72" y="68.58">
<attribute name="NAME" x="172.72" y="70.104" size="1.778" layer="95" font="vector" align="bottom-center"/>
<attribute name="VALUE" x="172.72" y="67.056" size="1.778" layer="96" font="vector" align="top-center"/>
</instance>
<instance part="R6" gate="G$1" x="172.72" y="50.8">
<attribute name="NAME" x="172.72" y="52.324" size="1.778" layer="95" font="vector" align="bottom-center"/>
<attribute name="VALUE" x="172.72" y="49.276" size="1.778" layer="96" font="vector" align="top-center"/>
</instance>
<instance part="U3" gate="G$1" x="96.52" y="27.94">
<attribute name="NAME" x="78.74" y="45.72" size="1.27" layer="95"/>
<attribute name="VALUE" x="78.74" y="43.688" size="1.27" layer="96"/>
</instance>
<instance part="SUPPLY3" gate="G$1" x="20.32" y="172.72">
<attribute name="VALUE" x="20.32" y="175.514" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="GND9" gate="1" x="20.32" y="152.4">
<attribute name="VALUE" x="20.32" y="152.146" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="R7" gate="G$1" x="53.34" y="38.1">
<attribute name="NAME" x="50.8" y="39.624" size="1.778" layer="95" font="vector" align="bottom-center"/>
<attribute name="VALUE" x="55.88" y="41.656" size="1.778" layer="96" font="vector" align="top-center"/>
</instance>
<instance part="SUPPLY11" gate="G$1" x="63.5" y="40.64">
<attribute name="VALUE" x="63.5" y="43.434" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="R8" gate="G$1" x="66.04" y="20.32" rot="R180">
<attribute name="NAME" x="63.5" y="18.796" size="1.778" layer="95" font="vector" rot="R180" align="bottom-center"/>
<attribute name="VALUE" x="68.58" y="16.764" size="1.778" layer="96" font="vector" rot="R180" align="top-center"/>
</instance>
<instance part="GND10" gate="1" x="73.66" y="10.16">
<attribute name="VALUE" x="73.66" y="9.906" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="D4" gate="G$1" x="134.62" y="73.66">
<attribute name="NAME" x="131.191" y="69.088" size="1.778" layer="95" font="vector" rot="R90"/>
<attribute name="VALUE" x="136.525" y="69.088" size="1.778" layer="96" font="vector" rot="R90" align="top-left"/>
</instance>
<instance part="R9" gate="G$1" x="134.62" y="83.82" rot="R90">
<attribute name="NAME" x="133.096" y="83.82" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="136.144" y="83.82" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND11" gate="1" x="134.62" y="63.5">
<attribute name="VALUE" x="134.62" y="63.246" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="SUPPLY12" gate="G$1" x="119.38" y="132.08">
<attribute name="VALUE" x="119.38" y="134.874" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="GND12" gate="1" x="116.84" y="116.84">
<attribute name="VALUE" x="116.84" y="116.586" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="H1" gate="G$1" x="246.38" y="33.02"/>
<instance part="H2" gate="G$1" x="243.84" y="33.02"/>
<instance part="H3" gate="G$1" x="243.84" y="30.48"/>
<instance part="H4" gate="G$1" x="246.38" y="30.48"/>
<instance part="FD1" gate="G$1" x="238.76" y="33.02"/>
<instance part="FD2" gate="G$1" x="236.22" y="33.02"/>
<instance part="FD3" gate="G$1" x="236.22" y="30.48"/>
<instance part="FD4" gate="G$1" x="238.76" y="30.48"/>
<instance part="R10" gate="R1" x="50.8" y="20.32" rot="R90">
<attribute name="NAME" x="49.276" y="17.78" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="47.244" y="25.4" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="R11" gate="R1" x="55.88" y="20.32" rot="R90">
<attribute name="NAME" x="54.356" y="17.78" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="52.324" y="25.4" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND13" gate="1" x="55.88" y="10.16">
<attribute name="VALUE" x="55.88" y="9.906" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="GND14" gate="1" x="50.8" y="10.16">
<attribute name="VALUE" x="50.8" y="9.906" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="GND15" gate="1" x="45.72" y="10.16">
<attribute name="VALUE" x="45.72" y="9.906" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="SUPPLY13" gate="G$1" x="134.62" y="93.98">
<attribute name="VALUE" x="134.62" y="96.774" size="1.778" layer="96" align="bottom-center"/>
</instance>
<instance part="J1" gate="J1" x="109.22" y="124.46">
<attribute name="VALUE" x="104.14" y="117.094" size="1.778" layer="96" font="vector"/>
<attribute name="NAME" x="104.14" y="132.588" size="1.778" layer="95" font="vector"/>
</instance>
<instance part="FRAME1" gate="G$1" x="0" y="0"/>
<instance part="FRAME1" gate="V" x="147.32" y="0">
<attribute name="LAST_DATE_TIME" x="160.02" y="1.27" size="2.54" layer="94" font="vector"/>
<attribute name="SHEET" x="233.68" y="1.27" size="2.54" layer="94" font="vector"/>
<attribute name="DRAWING_NAME" x="162.814" y="17.78" size="2.7432" layer="94" font="vector"/>
<attribute name="DESIGNER" x="170.434" y="11.176" size="2.7432" layer="94" font="vector"/>
<attribute name="REV" x="236.22" y="6.604" size="2.7432" layer="94" font="vector"/>
</instance>
<instance part="D5" gate="G$1" x="223.52" y="55.88">
<attribute name="NAME" x="220.98" y="58.42" size="1.778" layer="95" font="vector" rot="R90"/>
<attribute name="VALUE" x="217.805" y="48.768" size="1.778" layer="96" font="vector" rot="R90" align="top-left"/>
</instance>
<instance part="R12" gate="G$1" x="223.52" y="66.04" rot="R90">
<attribute name="NAME" x="221.996" y="66.04" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="225.044" y="66.04" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND16" gate="1" x="223.52" y="45.72">
<attribute name="VALUE" x="223.52" y="45.466" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="D6" gate="G$1" x="231.14" y="55.88">
<attribute name="NAME" x="228.6" y="58.42" size="1.778" layer="95" font="vector" rot="R90"/>
<attribute name="VALUE" x="226.06" y="48.26" size="1.778" layer="96" font="vector" rot="R90" align="top-left"/>
</instance>
<instance part="R13" gate="G$1" x="231.14" y="66.04" rot="R90">
<attribute name="NAME" x="229.616" y="66.04" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="232.664" y="66.04" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND17" gate="1" x="231.14" y="45.72">
<attribute name="VALUE" x="231.14" y="45.466" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="D7" gate="G$1" x="238.76" y="55.88">
<attribute name="NAME" x="236.22" y="58.42" size="1.778" layer="95" font="vector" rot="R90"/>
<attribute name="VALUE" x="233.68" y="48.26" size="1.778" layer="96" font="vector" rot="R90" align="top-left"/>
</instance>
<instance part="R14" gate="G$1" x="238.76" y="66.04" rot="R90">
<attribute name="NAME" x="237.236" y="66.04" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="240.284" y="66.04" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND18" gate="1" x="238.76" y="45.72">
<attribute name="VALUE" x="238.76" y="45.466" size="1.778" layer="96" align="top-center"/>
</instance>
<instance part="D8" gate="G$1" x="203.2" y="55.88">
<attribute name="NAME" x="200.66" y="58.42" size="1.778" layer="95" font="vector" rot="R90"/>
<attribute name="VALUE" x="197.485" y="48.768" size="1.778" layer="96" font="vector" rot="R90" align="top-left"/>
</instance>
<instance part="R15" gate="G$1" x="203.2" y="66.04" rot="R90">
<attribute name="NAME" x="201.676" y="66.04" size="1.778" layer="95" font="vector" rot="R90" align="bottom-center"/>
<attribute name="VALUE" x="204.724" y="66.04" size="1.778" layer="96" font="vector" rot="R90" align="top-center"/>
</instance>
<instance part="GND19" gate="1" x="203.2" y="45.72">
<attribute name="VALUE" x="203.2" y="45.466" size="1.778" layer="96" align="top-center"/>
</instance>
</instances>
<busses>
</busses>
<nets>
<net name="3.3V" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="3V3"/>
<wire x1="165.1" y1="160.02" x2="162.56" y2="160.02" width="0.1524" layer="91"/>
<pinref part="SUPPLY1" gate="G$1" pin="3.3V"/>
<wire x1="162.56" y1="160.02" x2="162.56" y2="172.72" width="0.1524" layer="91"/>
<pinref part="R1" gate="G$1" pin="2"/>
<wire x1="162.56" y1="172.72" x2="162.56" y2="175.26" width="0.1524" layer="91"/>
<wire x1="160.02" y1="170.18" x2="160.02" y2="172.72" width="0.1524" layer="91"/>
<wire x1="160.02" y1="172.72" x2="162.56" y2="172.72" width="0.1524" layer="91"/>
<junction x="162.56" y="172.72"/>
</segment>
<segment>
<pinref part="R2" gate="G$1" pin="2"/>
<wire x1="114.3" y1="167.64" x2="114.3" y2="170.18" width="0.1524" layer="91"/>
<wire x1="114.3" y1="170.18" x2="119.38" y2="170.18" width="0.1524" layer="91"/>
<pinref part="R3" gate="G$1" pin="2"/>
<wire x1="119.38" y1="170.18" x2="119.38" y2="167.64" width="0.1524" layer="91"/>
<wire x1="119.38" y1="170.18" x2="119.38" y2="172.72" width="0.1524" layer="91"/>
<junction x="119.38" y="170.18"/>
<pinref part="SUPPLY2" gate="G$1" pin="3.3V"/>
</segment>
<segment>
<pinref part="U2" gate="G$1" pin="OUT"/>
<wire x1="91.44" y1="81.28" x2="96.52" y2="81.28" width="0.1524" layer="91"/>
<wire x1="96.52" y1="81.28" x2="106.68" y2="81.28" width="0.1524" layer="91"/>
<wire x1="106.68" y1="81.28" x2="116.84" y2="81.28" width="0.1524" layer="91"/>
<wire x1="116.84" y1="81.28" x2="116.84" y2="93.98" width="0.1524" layer="91"/>
<pinref part="SUPPLY9" gate="G$1" pin="3.3V"/>
<pinref part="C5" gate="G$1" pin="1"/>
<wire x1="116.84" y1="78.74" x2="116.84" y2="81.28" width="0.1524" layer="91"/>
<junction x="116.84" y="81.28"/>
<pinref part="C4" gate="G$1" pin="1"/>
<wire x1="106.68" y1="78.74" x2="106.68" y2="81.28" width="0.1524" layer="91"/>
<junction x="106.68" y="81.28"/>
<pinref part="C2" gate="G$1" pin="1"/>
<wire x1="96.52" y1="78.74" x2="96.52" y2="81.28" width="0.1524" layer="91"/>
<junction x="96.52" y="81.28"/>
</segment>
<segment>
<pinref part="U3" gate="G$1" pin="VDD"/>
<wire x1="76.2" y1="27.94" x2="63.5" y2="27.94" width="0.1524" layer="91"/>
<wire x1="63.5" y1="27.94" x2="63.5" y2="30.48" width="0.1524" layer="91"/>
<pinref part="U3" gate="G$1" pin="VIO"/>
<wire x1="63.5" y1="30.48" x2="76.2" y2="30.48" width="0.1524" layer="91"/>
<wire x1="63.5" y1="30.48" x2="63.5" y2="40.64" width="0.1524" layer="91"/>
<junction x="63.5" y="30.48"/>
<pinref part="SUPPLY11" gate="G$1" pin="3.3V"/>
<pinref part="R8" gate="G$1" pin="2"/>
<wire x1="60.96" y1="20.32" x2="58.42" y2="20.32" width="0.1524" layer="91"/>
<wire x1="58.42" y1="20.32" x2="58.42" y2="27.94" width="0.1524" layer="91"/>
<wire x1="58.42" y1="27.94" x2="63.5" y2="27.94" width="0.1524" layer="91"/>
<junction x="63.5" y="27.94"/>
</segment>
<segment>
<pinref part="R9" gate="G$1" pin="2"/>
<wire x1="134.62" y1="93.98" x2="134.62" y2="88.9" width="0.1524" layer="91"/>
<pinref part="SUPPLY13" gate="G$1" pin="3.3V"/>
</segment>
</net>
<net name="GND" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="GND@1"/>
<wire x1="165.1" y1="99.06" x2="162.56" y2="99.06" width="0.1524" layer="91"/>
<pinref part="GND1" gate="1" pin="GND"/>
<wire x1="162.56" y1="99.06" x2="162.56" y2="96.52" width="0.1524" layer="91"/>
<pinref part="U1" gate="G$1" pin="GND@15"/>
<wire x1="162.56" y1="96.52" x2="162.56" y2="93.98" width="0.1524" layer="91"/>
<wire x1="162.56" y1="93.98" x2="162.56" y2="91.44" width="0.1524" layer="91"/>
<wire x1="162.56" y1="91.44" x2="162.56" y2="88.9" width="0.1524" layer="91"/>
<wire x1="165.1" y1="96.52" x2="162.56" y2="96.52" width="0.1524" layer="91"/>
<junction x="162.56" y="96.52"/>
<pinref part="U1" gate="G$1" pin="GND@38"/>
<wire x1="165.1" y1="93.98" x2="162.56" y2="93.98" width="0.1524" layer="91"/>
<junction x="162.56" y="93.98"/>
<pinref part="U1" gate="G$1" pin="GND"/>
<wire x1="165.1" y1="91.44" x2="162.56" y2="91.44" width="0.1524" layer="91"/>
<junction x="162.56" y="91.44"/>
</segment>
<segment>
<pinref part="D1" gate="G$1" pin="C"/>
<wire x1="215.9" y1="50.8" x2="215.9" y2="48.26" width="0.1524" layer="91"/>
<pinref part="GND2" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="S1" gate="G$1" pin="1"/>
<wire x1="223.52" y1="160.02" x2="220.98" y2="160.02" width="0.1524" layer="91"/>
<pinref part="GND4" gate="1" pin="GND"/>
<wire x1="220.98" y1="160.02" x2="220.98" y2="157.48" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="GND3" gate="1" pin="GND"/>
<wire x1="220.98" y1="142.24" x2="220.98" y2="144.78" width="0.1524" layer="91"/>
<pinref part="S2" gate="G$1" pin="1"/>
<wire x1="220.98" y1="144.78" x2="223.52" y2="144.78" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="J4" gate="J1" pin="VCC"/>
<wire x1="22.86" y1="129.54" x2="25.4" y2="129.54" width="0.1524" layer="91"/>
<pinref part="J4" gate="J1" pin="GND@3"/>
<wire x1="22.86" y1="127" x2="25.4" y2="127" width="0.1524" layer="91"/>
<wire x1="22.86" y1="129.54" x2="22.86" y2="127" width="0.1524" layer="91"/>
<wire x1="22.86" y1="127" x2="22.86" y2="116.84" width="0.1524" layer="91"/>
<junction x="22.86" y="127"/>
<pinref part="GND6" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="J4" gate="J1" pin="SWDIO/TMS"/>
<wire x1="58.42" y1="129.54" x2="55.88" y2="129.54" width="0.1524" layer="91"/>
<pinref part="GND8" gate="1" pin="GND"/>
<wire x1="58.42" y1="129.54" x2="58.42" y2="116.84" width="0.1524" layer="91"/>
</segment>
<segment>
<pinref part="GND7" gate="1" pin="GND"/>
<pinref part="C1" gate="G$1" pin="2"/>
<wire x1="53.34" y1="66.04" x2="53.34" y2="68.58" width="0.1524" layer="91"/>
<wire x1="53.34" y1="68.58" x2="53.34" y2="71.12" width="0.1524" layer="91"/>
<wire x1="53.34" y1="68.58" x2="63.5" y2="68.58" width="0.1524" layer="91"/>
<junction x="53.34" y="68.58"/>
<wire x1="63.5" y1="68.58" x2="71.12" y2="68.58" width="0.1524" layer="91"/>
<wire x1="71.12" y1="68.58" x2="71.12" y2="71.12" width="0.1524" layer="91"/>
<pinref part="U2" gate="G$1" pin="GND"/>
<wire x1="71.12" y1="71.12" x2="73.66" y2="71.12" width="0.1524" layer="91"/>
<pinref part="C3" gate="G$1" pin="2"/>
<wire x1="63.5" y1="71.12" x2="63.5" y2="68.58" width="0.1524" layer="91"/>
<junction x="63.5" y="68.58"/>
</segment>
<segment>
<pinref part="C2" gate="G$1" pin="2"/>
<wire x1="96.52" y1="71.12" x2="96.52" y2="68.58" width="0.1524" layer="91"/>
<wire x1="96.52" y1="68.58" x2="106.68" y2="68.58" width="0.1524" layer="91"/>
<wire x1="106.68" y1="68.58" x2="116.84" y2="68.58" width="0.1524" layer="91"/>
<wire x1="116.84" y1="68.58" x2="116.84" y2="66.04" width="0.1524" layer="91"/>
<pinref part="C5" gate="G$1" pin="2"/>
<wire x1="116.84" y1="71.12" x2="116.84" y2="68.58" width="0.1524" layer="91"/>
<junction x="116.84" y="68.58"/>
<pinref part="C4" gate="G$1" pin="2"/>
<wire x1="106.68" y1="71.12" x2="106.68" y2="68.58" width="0.1524" layer="91"/>
<junction x="106.68" y="68.58"/>
<pinref part="GND5" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="C11" gate="G$1" pin="2"/>
<wire x1="45.72" y1="160.02" x2="45.72" y2="157.48" width="0.1524" layer="91"/>
<wire x1="45.72" y1="157.48" x2="40.64" y2="157.48" width="0.1524" layer="91"/>
<pinref part="GND9" gate="1" pin="GND"/>
<wire x1="40.64" y1="157.48" x2="35.56" y2="157.48" width="0.1524" layer="91"/>
<wire x1="35.56" y1="157.48" x2="30.48" y2="157.48" width="0.1524" layer="91"/>
<wire x1="30.48" y1="157.48" x2="25.4" y2="157.48" width="0.1524" layer="91"/>
<wire x1="25.4" y1="157.48" x2="20.32" y2="157.48" width="0.1524" layer="91"/>
<wire x1="20.32" y1="157.48" x2="20.32" y2="154.94" width="0.1524" layer="91"/>
<pinref part="C6" gate="G$1" pin="2"/>
<wire x1="20.32" y1="160.02" x2="20.32" y2="157.48" width="0.1524" layer="91"/>
<junction x="20.32" y="157.48"/>
<pinref part="C7" gate="G$1" pin="2"/>
<wire x1="25.4" y1="160.02" x2="25.4" y2="157.48" width="0.1524" layer="91"/>
<junction x="25.4" y="157.48"/>
<pinref part="C8" gate="G$1" pin="2"/>
<wire x1="30.48" y1="160.02" x2="30.48" y2="157.48" width="0.1524" layer="91"/>
<junction x="30.48" y="157.48"/>
<pinref part="C9" gate="G$1" pin="2"/>
<wire x1="35.56" y1="160.02" x2="35.56" y2="157.48" width="0.1524" layer="91"/>
<junction x="35.56" y="157.48"/>
<pinref part="C10" gate="G$1" pin="2"/>
<wire x1="40.64" y1="160.02" x2="40.64" y2="157.48" width="0.1524" layer="91"/>
<junction x="40.64" y="157.48"/>
</segment>
<segment>
<pinref part="U3" gate="G$1" pin="GND"/>
<wire x1="76.2" y1="38.1" x2="73.66" y2="38.1" width="0.1524" layer="91"/>
<wire x1="73.66" y1="38.1" x2="73.66" y2="12.7" width="0.1524" layer="91"/>
<pinref part="GND10" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="D4" gate="G$1" pin="C"/>
<wire x1="134.62" y1="68.58" x2="134.62" y2="66.04" width="0.1524" layer="91"/>
<pinref part="GND11" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="116.84" y1="119.38" x2="116.84" y2="127" width="0.1524" layer="91"/>
<wire x1="116.84" y1="127" x2="116.84" y2="129.54" width="0.1524" layer="91"/>
<pinref part="GND12" gate="1" pin="GND"/>
<pinref part="J1" gate="J1" pin="4"/>
<wire x1="116.84" y1="129.54" x2="114.3" y2="129.54" width="0.1524" layer="91"/>
<pinref part="J1" gate="J1" pin="3"/>
<wire x1="114.3" y1="127" x2="116.84" y2="127" width="0.1524" layer="91"/>
<junction x="116.84" y="127"/>
</segment>
<segment>
<pinref part="R11" gate="R1" pin="1"/>
<wire x1="55.88" y1="15.24" x2="55.88" y2="12.7" width="0.1524" layer="91"/>
<pinref part="GND13" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="R10" gate="R1" pin="1"/>
<wire x1="50.8" y1="15.24" x2="50.8" y2="12.7" width="0.1524" layer="91"/>
<pinref part="GND14" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="J3" gate="J1" pin="GND"/>
<wire x1="43.18" y1="22.86" x2="45.72" y2="22.86" width="0.1524" layer="91"/>
<wire x1="45.72" y1="22.86" x2="45.72" y2="12.7" width="0.1524" layer="91"/>
<pinref part="GND15" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="D5" gate="G$1" pin="C"/>
<wire x1="223.52" y1="50.8" x2="223.52" y2="48.26" width="0.1524" layer="91"/>
<pinref part="GND16" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="D6" gate="G$1" pin="C"/>
<wire x1="231.14" y1="50.8" x2="231.14" y2="48.26" width="0.1524" layer="91"/>
<pinref part="GND17" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="D7" gate="G$1" pin="C"/>
<wire x1="238.76" y1="50.8" x2="238.76" y2="48.26" width="0.1524" layer="91"/>
<pinref part="GND18" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="D8" gate="G$1" pin="C"/>
<wire x1="203.2" y1="50.8" x2="203.2" y2="48.26" width="0.1524" layer="91"/>
<pinref part="GND19" gate="1" pin="GND"/>
</segment>
</net>
<net name="RX" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="TXD"/>
<wire x1="203.2" y1="160.02" x2="200.66" y2="160.02" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="U3" gate="G$1" pin="RXD"/>
<wire x1="119.38" y1="30.48" x2="116.84" y2="30.48" width="0.1524" layer="91"/>

</segment>
</net>
<net name="TX" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="RXD"/>
<wire x1="203.2" y1="157.48" x2="200.66" y2="157.48" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="U3" gate="G$1" pin="TXD"/>
<wire x1="119.38" y1="33.02" x2="116.84" y2="33.02" width="0.1524" layer="91"/>

</segment>
</net>
<net name="0" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="IO0"/>
<wire x1="203.2" y1="152.4" x2="200.66" y2="152.4" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="S1" gate="G$1" pin="2"/>
<wire x1="236.22" y1="160.02" x2="233.68" y2="160.02" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="Q1" gate="Q2" pin="C"/>
<wire x1="160.02" y1="45.72" x2="160.02" y2="43.18" width="0.1524" layer="91"/>
<wire x1="160.02" y1="43.18" x2="157.48" y2="43.18" width="0.1524" layer="91"/>

</segment>
</net>
<net name="SCL" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="IO22"/>
<wire x1="203.2" y1="116.84" x2="200.66" y2="116.84" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="R2" gate="G$1" pin="1"/>
<wire x1="114.3" y1="157.48" x2="114.3" y2="154.94" width="0.1524" layer="91"/>
<wire x1="114.3" y1="154.94" x2="111.76" y2="154.94" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="J4" gate="J1" pin="!RESET"/>
<wire x1="60.96" y1="119.38" x2="55.88" y2="119.38" width="0.1524" layer="91"/>

</segment>
</net>
<net name="SDA" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="MOSI_V/IO23"/>
<wire x1="203.2" y1="114.3" x2="200.66" y2="114.3" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="R3" gate="G$1" pin="1"/>
<wire x1="119.38" y1="157.48" x2="119.38" y2="152.4" width="0.1524" layer="91"/>
<wire x1="119.38" y1="152.4" x2="111.76" y2="152.4" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="J4" gate="J1" pin="NC/TDI"/>
<wire x1="60.96" y1="121.92" x2="55.88" y2="121.92" width="0.1524" layer="91"/>

</segment>
</net>
<net name="13" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="MOSI_H/IO13"/>
<wire x1="203.2" y1="139.7" x2="200.66" y2="139.7" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="R15" gate="G$1" pin="2"/>
<wire x1="203.2" y1="73.66" x2="203.2" y2="71.12" width="0.1524" layer="91"/>

</segment>
</net>
<net name="N$4" class="0">
<segment>
<pinref part="R4" gate="G$1" pin="1"/>
<pinref part="D1" gate="G$1" pin="A"/>
<wire x1="215.9" y1="60.96" x2="215.9" y2="58.42" width="0.1524" layer="91"/>
</segment>
</net>
<net name="!RESET" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="EN"/>
<wire x1="165.1" y1="157.48" x2="160.02" y2="157.48" width="0.1524" layer="91"/>
<pinref part="R1" gate="G$1" pin="1"/>
<wire x1="160.02" y1="157.48" x2="160.02" y2="160.02" width="0.1524" layer="91"/>
<wire x1="160.02" y1="157.48" x2="157.48" y2="157.48" width="0.1524" layer="91"/>
<junction x="160.02" y="157.48"/>

</segment>
<segment>
<pinref part="S2" gate="G$1" pin="2"/>
<wire x1="233.68" y1="144.78" x2="236.22" y2="144.78" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="Q1" gate="Q1" pin="C"/>
<wire x1="160.02" y1="73.66" x2="160.02" y2="76.2" width="0.1524" layer="91"/>
<wire x1="160.02" y1="76.2" x2="157.48" y2="76.2" width="0.1524" layer="91"/>

</segment>
</net>
<net name="V_USB" class="0">
<segment>
<pinref part="J3" gate="J1" pin="VBUS"/>
<wire x1="43.18" y1="38.1" x2="45.72" y2="38.1" width="0.1524" layer="91"/>
<pinref part="SUPPLY4" gate="G$1" pin="V_USB"/>
<wire x1="45.72" y1="38.1" x2="45.72" y2="40.64" width="0.1524" layer="91"/>
<pinref part="R7" gate="G$1" pin="1"/>
<wire x1="45.72" y1="38.1" x2="48.26" y2="38.1" width="0.1524" layer="91"/>
<junction x="45.72" y="38.1"/>
</segment>
<segment>
<pinref part="SUPPLY5" gate="G$1" pin="V_USB"/>
<wire x1="30.48" y1="93.98" x2="30.48" y2="91.44" width="0.1524" layer="91"/>
<pinref part="D2" gate="G$1" pin="A"/>
<wire x1="30.48" y1="91.44" x2="33.02" y2="91.44" width="0.1524" layer="91"/>
</segment>
</net>
<net name="VIN" class="0">
<segment>
<pinref part="D3" gate="G$1" pin="A"/>
<wire x1="33.02" y1="81.28" x2="22.86" y2="81.28" width="0.1524" layer="91"/>
<wire x1="22.86" y1="81.28" x2="22.86" y2="93.98" width="0.1524" layer="91"/>
<pinref part="SUPPLY6" gate="G$1" pin="VIN"/>
</segment>
<segment>
<wire x1="119.38" y1="132.08" x2="119.38" y2="124.46" width="0.1524" layer="91"/>
<wire x1="119.38" y1="124.46" x2="119.38" y2="121.92" width="0.1524" layer="91"/>
<pinref part="SUPPLY12" gate="G$1" pin="VIN"/>
<pinref part="J1" gate="J1" pin="2"/>
<wire x1="114.3" y1="124.46" x2="119.38" y2="124.46" width="0.1524" layer="91"/>
<junction x="119.38" y="124.46"/>
<pinref part="J1" gate="J1" pin="1"/>
<wire x1="114.3" y1="121.92" x2="119.38" y2="121.92" width="0.1524" layer="91"/>
</segment>
</net>
<net name="DOUT" class="0">
<segment>
<pinref part="J4" gate="J1" pin="SWO/TDO"/>
<wire x1="60.96" y1="124.46" x2="55.88" y2="124.46" width="0.1524" layer="91"/>

</segment>
<segment>
<pinref part="U1" gate="G$1" pin="SCK_V/IO18"/>
<wire x1="203.2" y1="127" x2="200.66" y2="127" width="0.1524" layer="91"/>

</segment>
</net>
<net name="5V" class="0">
<segment>
<pinref part="J4" gate="J1" pin="GNDDTCT"/>
<wire x1="20.32" y1="119.38" x2="25.4" y2="119.38" width="0.1524" layer="91"/>
<pinref part="J4" gate="J1" pin="KEY"/>
<wire x1="20.32" y1="121.92" x2="25.4" y2="121.92" width="0.1524" layer="91"/>
<wire x1="20.32" y1="119.38" x2="20.32" y2="121.92" width="0.1524" layer="91"/>
<pinref part="J4" gate="J1" pin="GND@5"/>
<wire x1="20.32" y1="124.46" x2="25.4" y2="124.46" width="0.1524" layer="91"/>
<wire x1="20.32" y1="121.92" x2="20.32" y2="124.46" width="0.1524" layer="91"/>
<junction x="20.32" y="121.92"/>
<wire x1="20.32" y1="124.46" x2="20.32" y2="132.08" width="0.1524" layer="91"/>
<junction x="20.32" y="124.46"/>
<pinref part="SUPPLY7" gate="G$1" pin="5V"/>
</segment>
<segment>
<pinref part="D3" gate="G$1" pin="C"/>
<wire x1="38.1" y1="81.28" x2="40.64" y2="81.28" width="0.1524" layer="91"/>
<pinref part="D2" gate="G$1" pin="C"/>
<wire x1="38.1" y1="91.44" x2="40.64" y2="91.44" width="0.1524" layer="91"/>
<wire x1="40.64" y1="91.44" x2="40.64" y2="81.28" width="0.1524" layer="91"/>
<junction x="40.64" y="81.28"/>
<pinref part="SUPPLY8" gate="G$1" pin="5V"/>
<wire x1="40.64" y1="93.98" x2="40.64" y2="91.44" width="0.1524" layer="91"/>
<junction x="40.64" y="91.44"/>
<pinref part="U2" gate="G$1" pin="IN"/>
<wire x1="40.64" y1="81.28" x2="53.34" y2="81.28" width="0.1524" layer="91"/>
<pinref part="U2" gate="G$1" pin="EN"/>
<wire x1="53.34" y1="81.28" x2="63.5" y2="81.28" width="0.1524" layer="91"/>
<wire x1="63.5" y1="81.28" x2="71.12" y2="81.28" width="0.1524" layer="91"/>
<wire x1="71.12" y1="81.28" x2="73.66" y2="81.28" width="0.1524" layer="91"/>
<wire x1="73.66" y1="76.2" x2="71.12" y2="76.2" width="0.1524" layer="91"/>
<wire x1="71.12" y1="76.2" x2="71.12" y2="81.28" width="0.1524" layer="91"/>
<junction x="71.12" y="81.28"/>
<pinref part="C1" gate="G$1" pin="1"/>
<wire x1="53.34" y1="78.74" x2="53.34" y2="81.28" width="0.1524" layer="91"/>
<junction x="53.34" y="81.28"/>
<pinref part="C3" gate="G$1" pin="1"/>
<wire x1="63.5" y1="78.74" x2="63.5" y2="81.28" width="0.1524" layer="91"/>
<junction x="63.5" y="81.28"/>
</segment>
<segment>
<pinref part="J4" gate="J1" pin="SWDCLK/TCK"/>
<wire x1="60.96" y1="127" x2="55.88" y2="127" width="0.1524" layer="91"/>
<wire x1="60.96" y1="127" x2="60.96" y2="132.08" width="0.1524" layer="91"/>
<pinref part="SUPPLY10" gate="G$1" pin="5V"/>
</segment>
<segment>
<pinref part="SUPPLY3" gate="G$1" pin="5V"/>
<pinref part="C6" gate="G$1" pin="1"/>
<wire x1="20.32" y1="172.72" x2="20.32" y2="170.18" width="0.1524" layer="91"/>
<pinref part="C11" gate="G$1" pin="1"/>
<wire x1="20.32" y1="170.18" x2="20.32" y2="167.64" width="0.1524" layer="91"/>
<wire x1="45.72" y1="167.64" x2="45.72" y2="170.18" width="0.1524" layer="91"/>
<wire x1="45.72" y1="170.18" x2="40.64" y2="170.18" width="0.1524" layer="91"/>
<junction x="20.32" y="170.18"/>
<pinref part="C7" gate="G$1" pin="1"/>
<wire x1="40.64" y1="170.18" x2="35.56" y2="170.18" width="0.1524" layer="91"/>
<wire x1="35.56" y1="170.18" x2="30.48" y2="170.18" width="0.1524" layer="91"/>
<wire x1="30.48" y1="170.18" x2="25.4" y2="170.18" width="0.1524" layer="91"/>
<wire x1="25.4" y1="170.18" x2="20.32" y2="170.18" width="0.1524" layer="91"/>
<wire x1="25.4" y1="167.64" x2="25.4" y2="170.18" width="0.1524" layer="91"/>
<junction x="25.4" y="170.18"/>
<pinref part="C8" gate="G$1" pin="1"/>
<wire x1="30.48" y1="167.64" x2="30.48" y2="170.18" width="0.1524" layer="91"/>
<junction x="30.48" y="170.18"/>
<pinref part="C9" gate="G$1" pin="1"/>
<wire x1="35.56" y1="167.64" x2="35.56" y2="170.18" width="0.1524" layer="91"/>
<junction x="35.56" y="170.18"/>
<pinref part="C10" gate="G$1" pin="1"/>
<wire x1="40.64" y1="167.64" x2="40.64" y2="170.18" width="0.1524" layer="91"/>
<junction x="40.64" y="170.18"/>
</segment>
</net>
<net name="DTR" class="0">
<segment>
<pinref part="Q1" gate="Q2" pin="E"/>
<wire x1="160.02" y1="55.88" x2="160.02" y2="58.42" width="0.1524" layer="91"/>
<wire x1="160.02" y1="58.42" x2="182.88" y2="58.42" width="0.1524" layer="91"/>
<wire x1="182.88" y1="58.42" x2="182.88" y2="68.58" width="0.1524" layer="91"/>
<wire x1="182.88" y1="68.58" x2="185.42" y2="68.58" width="0.1524" layer="91"/>
<wire x1="182.88" y1="68.58" x2="177.8" y2="68.58" width="0.1524" layer="91"/>
<junction x="182.88" y="68.58"/>
<pinref part="R5" gate="G$1" pin="2"/>

</segment>
<segment>
<pinref part="U3" gate="G$1" pin="DTR"/>
<wire x1="119.38" y1="38.1" x2="116.84" y2="38.1" width="0.1524" layer="91"/>

</segment>
</net>
<net name="N$3" class="0">
<segment>
<pinref part="Q1" gate="Q2" pin="B"/>
<wire x1="165.1" y1="50.8" x2="167.64" y2="50.8" width="0.1524" layer="91"/>
<pinref part="R6" gate="G$1" pin="1"/>
</segment>
</net>
<net name="N$5" class="0">
<segment>
<pinref part="R5" gate="G$1" pin="1"/>
<pinref part="Q1" gate="Q1" pin="B"/>
<wire x1="167.64" y1="68.58" x2="165.1" y2="68.58" width="0.1524" layer="91"/>
</segment>
</net>
<net name="RTS" class="0">
<segment>
<pinref part="Q1" gate="Q1" pin="E"/>
<wire x1="160.02" y1="63.5" x2="160.02" y2="60.96" width="0.1524" layer="91"/>
<wire x1="160.02" y1="60.96" x2="180.34" y2="60.96" width="0.1524" layer="91"/>
<wire x1="180.34" y1="60.96" x2="180.34" y2="50.8" width="0.1524" layer="91"/>
<pinref part="R6" gate="G$1" pin="2"/>
<wire x1="177.8" y1="50.8" x2="180.34" y2="50.8" width="0.1524" layer="91"/>
<wire x1="180.34" y1="50.8" x2="185.42" y2="50.8" width="0.1524" layer="91"/>
<junction x="180.34" y="50.8"/>

</segment>
<segment>
<pinref part="U3" gate="G$1" pin="RTS"/>
<wire x1="119.38" y1="27.94" x2="116.84" y2="27.94" width="0.1524" layer="91"/>

</segment>
</net>
<net name="N$1" class="0">
<segment>
<pinref part="J3" gate="J1" pin="D-"/>
<pinref part="U3" gate="G$1" pin="D-"/>
<wire x1="43.18" y1="33.02" x2="76.2" y2="33.02" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$2" class="0">
<segment>
<pinref part="U3" gate="G$1" pin="D+"/>
<pinref part="J3" gate="J1" pin="D+"/>
<wire x1="76.2" y1="35.56" x2="43.18" y2="35.56" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$6" class="0">
<segment>
<pinref part="R7" gate="G$1" pin="2"/>
<wire x1="58.42" y1="38.1" x2="60.96" y2="38.1" width="0.1524" layer="91"/>
<wire x1="60.96" y1="38.1" x2="60.96" y2="25.4" width="0.1524" layer="91"/>
<pinref part="U3" gate="G$1" pin="VBUS"/>
<wire x1="60.96" y1="25.4" x2="60.96" y2="22.86" width="0.1524" layer="91"/>
<wire x1="60.96" y1="22.86" x2="76.2" y2="22.86" width="0.1524" layer="91"/>
<pinref part="U3" gate="G$1" pin="VREGIN"/>
<wire x1="76.2" y1="25.4" x2="60.96" y2="25.4" width="0.1524" layer="91"/>
<junction x="60.96" y="25.4"/>
</segment>
</net>
<net name="N$7" class="0">
<segment>
<pinref part="U3" gate="G$1" pin="!RSTB"/>
<pinref part="R8" gate="G$1" pin="1"/>
<wire x1="76.2" y1="20.32" x2="71.12" y2="20.32" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$8" class="0">
<segment>
<pinref part="R9" gate="G$1" pin="1"/>
<pinref part="D4" gate="G$1" pin="A"/>
<wire x1="134.62" y1="78.74" x2="134.62" y2="76.2" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$10" class="0">
<segment>
<pinref part="J3" gate="J1" pin="CC1"/>
<wire x1="43.18" y1="30.48" x2="55.88" y2="30.48" width="0.1524" layer="91"/>
<pinref part="R11" gate="R1" pin="2"/>
<wire x1="55.88" y1="30.48" x2="55.88" y2="25.4" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$11" class="0">
<segment>
<pinref part="R10" gate="R1" pin="2"/>
<wire x1="50.8" y1="25.4" x2="50.8" y2="27.94" width="0.1524" layer="91"/>

repository: oclyke/RainbowForest

repo_name: oclyke/RainbowForest

gha_license_id: MIT

extension: sch


text:
<pinref part="J3" gate="J1" pin="CC2"/>
<wire x1="50.8" y1="27.94" x2="43.18" y2="27.94" width="0.1524" layer="91"/>
</segment>
</net>
<net name="SHLD" class="0">
<segment>
<pinref part="J3" gate="J1" pin="SHLD"/>
<wire x1="45.72" y1="25.4" x2="43.18" y2="25.4" width="0.1524" layer="91"/>
<label x="45.72" y="25.4" size="1.27" layer="95" xref="yes"/>
</segment>
</net>
<net name="N$9" class="0">
<segment>
<pinref part="R12" gate="G$1" pin="1"/>
<pinref part="D5" gate="G$1" pin="A"/>
<wire x1="223.52" y1="60.96" x2="223.52" y2="58.42" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$12" class="0">
<segment>
<pinref part="R13" gate="G$1" pin="1"/>
<pinref part="D6" gate="G$1" pin="A"/>
<wire x1="231.14" y1="60.96" x2="231.14" y2="58.42" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$13" class="0">
<segment>
<pinref part="R14" gate="G$1" pin="1"/>
<pinref part="D7" gate="G$1" pin="A"/>
<wire x1="238.76" y1="60.96" x2="238.76" y2="58.42" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$14" class="0">
<segment>
<pinref part="R15" gate="G$1" pin="1"/>
<pinref part="D8" gate="G$1" pin="A"/>
<wire x1="203.2" y1="60.96" x2="203.2" y2="58.42" width="0.1524" layer="91"/>
</segment>
</net>
<net name="25" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="IO25"/>
<wire x1="203.2" y1="111.76" x2="200.66" y2="111.76" width="0.1524" layer="91"/>
<label x="203.2" y="111.76" size="1.27" layer="95" xref="yes"/>
</segment>
<segment>
<pinref part="R4" gate="G$1" pin="2"/>
<wire x1="215.9" y1="73.66" x2="215.9" y2="71.12" width="0.1524" layer="91"/>
<label x="215.9" y="73.66" size="1.27" layer="95" rot="R90" xref="yes"/>
</segment>
</net>
<net name="26" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="IO26"/>
<wire x1="203.2" y1="109.22" x2="200.66" y2="109.22" width="0.1524" layer="91"/>
<label x="203.2" y="109.22" size="1.27" layer="95" xref="yes"/>
</segment>
<segment>
<pinref part="R12" gate="G$1" pin="2"/>
<wire x1="223.52" y1="73.66" x2="223.52" y2="71.12" width="0.1524" layer="91"/>
<label x="223.52" y="73.66" size="1.27" layer="95" rot="R90" xref="yes"/>
</segment>
</net>
<net name="27" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="IO27"/>
<wire x1="203.2" y1="106.68" x2="200.66" y2="106.68" width="0.1524" layer="91"/>
<label x="203.2" y="106.68" size="1.27" layer="95" xref="yes"/>
</segment>
<segment>
<pinref part="R13" gate="G$1" pin="2"/>
<wire x1="231.14" y1="73.66" x2="231.14" y2="71.12" width="0.1524" layer="91"/>
<label x="231.14" y="73.66" size="1.27" layer="95" rot="R90" xref="yes"/>
</segment>
</net>
<net name="32" class="0">
<segment>
<pinref part="U1" gate="G$1" pin="XTAL_P/IO32"/>
<wire x1="203.2" y1="104.14" x2="200.66" y2="104.14" width="0.1524" layer="91"/>
<label x="203.2" y="104.14" size="1.27" layer="95" xref="yes"/>
</segment>
<segment>
<pinref part="R14" gate="G$1" pin="2"/>
<wire x1="238.76" y1="73.66" x2="238.76" y2="71.12" width="0.1524" layer="91"/>
<label x="238.76" y="73.66" size="1.27" layer="95" rot="R90" xref="yes"/>
</segment>
</net>
</nets>
</sheet>
</sheets>
</schematic>
</drawing>
</eagle>

license: MIT

license_type: permissive

branch_name: refs/heads/master


text:
//file: Hubris/HSmartPointer/HSmartPointerObjectBase.h
#ifndef _H_SMART_POINTER_OBJECT_BASE_H_
#define _H_SMART_POINTER_OBJECT_BASE_H_

#include "Hubris/HCommon/HCommonDefine.h"
#include "Hubris/HSmartPointer/HSmartPointerReferenceCount.h"

namespace Hubris
{
	template< typename IN_TYPE >class HSmartPointer;

	template< typename IN_TYPE >class HSmartPointerObjectBase
	{
		friend HSmartPointer< IN_TYPE >;

		///////////////////////////////////////////////////
		// creation
	public:
		HSmartPointerObjectBase( const HSmartPointerObjectBase& in_src )
		: m_referenceCount()
		{
			( *this ) = in_src;
			return;
		}
		HSmartPointerObjectBase()
		: m_referenceCount()
		{
			return;
		}

		///////////////////////////////////////////////////
		// operators
	public:
		const HSmartPointerObjectBase& operator =( const HSmartPointerObjectBase& )
		{
			//NOP, assignment doesn't modify smart pointer reference count, only HSmartPointer modifies count
			return( *this );
		}
		const Hubris::HBOOL operator ==( const HSmartPointerObjectBase& HCOMMON_UNUSED_VAR( in_rhs ) )const
		{
			return HTRUE;
		}
		const Hubris::HBOOL operator !=( const HSmartPointerObjectBase& HCOMMON_UNUSED_VAR( in_rhs ) )const
		{
			return HFALSE;
		}

		///////////////////////////////////////////////////
		// public accessors
	public:
		const HSmartPointerReferenceCount& RefereceCountGet()const{ return m_referenceCount; }
		HSmartPointerReferenceCount& RefereceCountGet(){ return m_referenceCount; }

		///////////////////////////////////////////////////
		// private memebers
	private:
		HSmartPointerReferenceCount m_referenceCount;

	};
	/**/
};

#endif // _H_SMART_POINTER_OBJECT_BASE_H_

license: Unlicense

extension: h


text:
#ifndef LISTAR_COMPETENCIAS_H
#define LISTAR_COMPETENCIAS_H

#include <QDialog>
#include "ui_listar_competencias.h"
#include "qpixmap.h"
#include <QDebug>
#include "gui.h"
#include <QMessageBox>

namespace Ui {
class listar_competencias;
}

class GUI;
class listar_competencias : public QDialog
{
    Q_OBJECT

public:

    explicit listar_competencias(GUI* guiP, QVector<Deporte*> deportes, QVector<Estado*> estados,
                                 QVector<TipoModalidad *> modalidades, QWidget *parent = 0);

    listar_competencias(QWidget *parent = 0);

    ~listar_competencias();

private slots:

    void on_pushButton_3_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_clicked();

    void on_pushButton_5_clicked();

private:

    GUI* gui;

    QVector<Competencia*> comps;

    Ui::listar_competencias *ui;

    void mostrarCompetencias();
};

#endif // LISTAR_COMPETENCIAS_H

repository: bertilxi/Pegaso

repo_name: bertilxi/Pegaso


text:
## ======================================================================== ##
## Copyright 2009-2013 Intel Corporation                                    ##
##                                                                          ##
## 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.                                           ##
## ======================================================================== ##

SET(LIBRARY_PATHS
  /usr/lib /usr/local/lib /opt/local/lib)

FIND_PATH(IMAGEMAGICK_INCLUDE_PATH Magick++.h
  /usr/include       /usr/include/ImageMagick
  /usr/local/include /usr/local/include/ImageMagick
  /opt/local/include /opt/local/include/ImageMagick
)

FIND_LIBRARY(IMAGEMAGICK_CXX_LIBRARY NAMES Magick++          PATHS ${LIBRARY_PATHS} )
FIND_LIBRARY(IMAGEMAGICK_C_LIBRARY   NAMES Magick MagickCore PATHS ${LIBRARY_PATHS} )

IF (IMAGEMAGICK_INCLUDE_PATH AND (IMAGEMAGICK_CXX_LIBRARY OR IMAGEMAGICK_C_LIBRARY))
  SET(IMAGEMAGICK_FOUND TRUE)
  SET(IMAGEMAGICK_INCLUDE_PATHS ${IMAGEMAGICK_INCLUDE_PATH} CACHE STRING "ImageMagick include paths")
  SET(IMAGEMAGICK_LIBRARIES ${IMAGEMAGICK_CXX_LIBRARY} ${IMAGEMAGICK_C_LIBRARY} CACHE STRING "ImageMagick Libraries")
ENDIF (IMAGEMAGICK_INCLUDE_PATH AND (IMAGEMAGICK_CXX_LIBRARY OR IMAGEMAGICK_C_LIBRARY))

MARK_AS_ADVANCED(
  IMAGEMAGICK_FOUND
  IMAGEMAGICK_INCLUDE_PATHS
  IMAGEMAGICK_LIBRARIES
  IMAGEMAGICK_CXX_LIBRARY
  IMAGEMAGICK_C_LIBRARY
  IMAGEMAGICK_INCLUDE_PATH
)

repository: gerardsimons/pbr-visualizer

repo_name: gerardsimons/pbr-visualizer

extension: cmake


text:
#
#base recipe: http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/tree/recipes-multimedia/libva/intel-vaapi-driver_2.3.0.bb?h=master
#

SUMMARY = "VAAPI driver for Intel G45 & HD Graphics family"
DESCRIPTION = "The VA-API (Video Acceleration API) enables hardware accelerated video \
decode/encode at various entry-points (VLD, IDCT, Motion Compensation \
etc.) for the prevailing coding standards today (MPEG-2, MPEG-4 \
ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3). It provides an interface \
to fully expose the video decode capabilities in today's GPUs. \
"

# Use jessie-backports-master branch
DEBIAN_GIT_BRANCH = "jessie-backports-master"

inherit debian-package

PV = "1.7.3"

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"

COMPATIBLE_HOST = '(i.86|x86_64).*-linux'

DEPENDS = "libva libdrm"

RPROVIDES_${PN} += "va-driver i965-va-driver"
PKG_${PN} = "i965-va-driver"

inherit autotools pkgconfig distro_features_check

REQUIRED_DISTRO_FEATURES = "opengl"

PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \
                   ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)}"
PACKAGECONFIG[x11] = "--enable-x11,--disable-x11"
PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native virtual/egl"

FILES_${PN} += "${libdir}/dri/*.so"
FILES_${PN}-dev += "${libdir}/dri/*.la"
FILES_${PN}-dbg += "${libdir}/dri/.debug"

repository: meta-debian/meta-debian-extra

repo_name: meta-debian/meta-debian-extra

branch_name: refs/heads/morty

gha_language: BitBake

extension: bb


text:
inherit esw_examples features_check

REQUIRED_MACHINE_FEATURES = "xadcps"

ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/xadcps/examples/"

repository: Xilinx/meta-xilinx

repo_name: Xilinx/meta-xilinx

gha_language: C


text:
package main

import (
	"io/ioutil"
	"os"
	"path/filepath"
	"testing"
	"time"
)

func TestUpdateFile(t *testing.T) {
	updateFilename = updateFilename + "_testing"
	updateFilepath := filepath.Join(os.TempDir(), updateFilename)
	defer os.Remove(updateFilepath)

	if ok, err := updateFile(true); ok {
		t.Errorf("updateFile(true) = %t", ok)
	} else if err != nil {
		t.Errorf("updateFile error %v", err)
	}

	data, err := ioutil.ReadFile(updateFilepath)
	if err != nil {
		t.Fatal(err)
	}

	if _, err = time.Parse(updateFormat, string(data)); err != nil {
		t.Errorf("File(%v): %v", string(data), err)
	}

	err = ioutil.WriteFile(updateFilepath, []byte(time.Now().Add(-25*time.Hour).Format(updateFormat)), 0600)
	if err != nil {
		t.Fatal(err)
	}

	if ok, _ := updateFile(true); ok {
		t.Errorf("updateFile(true): %t", ok)
	}

	// New version found
	updateFile(false)
	if data, _ := ioutil.ReadFile(updateFilepath); string(data) != "" {
		t.Errorf("File is not empty: %s", string(data))
	}
}

func TestCompareVersion(t *testing.T) {
	tests := []struct {
		a    string
		b    string
		want int
	}{
		{
			a:    "1",
			b:    "1.0",
			want: 0,
		},
		{
			a:    "1.1",
			b:    "1.0",
			want: 1,
		},
		{
			a:    "1.1",
			b:    "1.2.1",
			want: -1,
		},
		{
			a:    "a.b.1",
			b:    "0.0.1",
			want: -1,
		},
		{
			a:    "1.2.0-rc.1",
			b:    "1.2.1-rc.1",
			want: -1,
		},
		{
			a:    "1.2.1-rc.1",
			b:    "1.2.1",
			want: -1,
		},
	}

	for i, tt := range tests {
		if got := compareVersion(tt.a, tt.b); got != tt.want {
			t.Errorf("%d) compareVersion(%s,%s) = %d, want %d", i, tt.a, tt.b, got, tt.want)
		}
	}
}

gha_language: Go

extension: go


text:
package p2pstore

import (
	"encoding/hex"
	"sync"
	"time"

	"github.com/33cn/chain33/common/log/log15"
	"github.com/33cn/chain33/system/p2p/dht/protocol"
	types2 "github.com/33cn/chain33/system/p2p/dht/types"
	"github.com/33cn/chain33/types"
	"github.com/libp2p/go-libp2p-core/peer"
	kbt "github.com/libp2p/go-libp2p-kbucket"
)

const (
	fetchActivePeer = "/chain33/fetch-active-peer/1.0.0"
	fetchShardPeer  = "/chain33/fetch-shard-peer/1.0.0"
	fetchChunk      = "/chain33/fetch-chunk/1.0.0"
	//storeChunk      = "/chain33/store-chunk/1.0.0"
	getHeader      = "/chain33/headers/1.0.0"
	getChunkRecord = "/chain33/chunk-record/1.0.0"
	fullNode       = "/chain33/full-node/1.0.0"
	fetchPeerAddr  = "/chain33/fetch-peer-addr/1.0.0"
	// Deprecated: old version, use getHeader instead
	getHeaderOld = "/chain33/headerinfoReq/1.0.0"

	// 异步接口
	requestPeerAddr          = "/chain33/request-peer-addr/1.0.0"
	responsePeerAddr         = "/chain33/response-peer-addr/1.0.0"
	requestPeerInfoForChunk  = "/chain33/request-peer-info-for-chunk/1.0.0"
	responsePeerInfoForChunk = "/chain33/response-peer-info-for-chunk/1.0.0"
)

const maxConcurrency = 10

var log = log15.New("module", "protocol.p2pstore")

//Protocol ...
type Protocol struct {
	concurrency      int64
	*protocol.P2PEnv //协议共享接口变量

	chunkToSync     chan *types.ChunkInfoMsg
	chunkToDelete   chan *types.ChunkInfoMsg
	chunkToDownload chan *types.ChunkInfoMsg

	wakeup      map[string]chan struct{}
	wakeupMutex sync.Mutex

	chunkInfoCache      map[string]*types.ChunkInfoMsg
	chunkInfoCacheMutex sync.Mutex

	//本节点保存的chunk的索引表，会随着网络拓扑结构的变化而变化
	localChunkInfo      map[string]LocalChunkInfo
	localChunkInfoMutex sync.RWMutex

	// 扩展路由表，每小时更新一次
	extendRoutingTable *kbt.RoutingTable

	peerAddrRequestTrace      map[peer.ID]map[peer.ID]time.Time // peerID requested ==>
	peerAddrRequestTraceMutex sync.RWMutex

	chunkRequestTrace      map[string]map[peer.ID]time.Time // chunkHash ==> request peers
	chunkRequestTraceMutex sync.RWMutex

	chunkProviderCache      map[string]map[peer.ID]time.Time // chunkHash ==> provider peers
	chunkProviderCacheMutex sync.RWMutex
}

func init() {
	protocol.RegisterProtocolInitializer(InitProtocol)
}

//InitProtocol initials the protocol.
func InitProtocol(env *protocol.P2PEnv) {
	exRT, _ := kbt.NewRoutingTable(20, kbt.ConvertPeerID(env.Host.ID()), time.Minute, env.Host.Peerstore(), time.Hour, nil)
	p := &Protocol{
		P2PEnv:               env,
		chunkToSync:          make(chan *types.ChunkInfoMsg, 1024),
		chunkToDelete:        make(chan *types.ChunkInfoMsg, 1024),
		chunkToDownload:      make(chan *types.ChunkInfoMsg, 1024),
		wakeup:               make(map[string]chan struct{}),
		chunkInfoCache:       make(map[string]*types.ChunkInfoMsg),
		peerAddrRequestTrace: make(map[peer.ID]map[peer.ID]time.Time),
		chunkRequestTrace:    make(map[string]map[peer.ID]time.Time),
		chunkProviderCache:   make(map[string]map[peer.ID]time.Time),
		extendRoutingTable:   exRT,
	}
	//
	if env.SubConfig.Percentage < types2.MinPercentage || env.SubConfig.Percentage > types2.MaxPercentage {
		env.SubConfig.Percentage = types2.DefaultPercentage
	}

	p.initLocalChunkInfoMap()

	//注册p2p通信协议，用于处理节点之间请求
	protocol.RegisterStreamHandler(p.Host, requestPeerInfoForChunk, p.handleStreamRequestPeerInfoForChunk)
	protocol.RegisterStreamHandler(p.Host, responsePeerInfoForChunk, p.handleStreamResponsePeerInfoForChunk)
	protocol.RegisterStreamHandler(p.Host, requestPeerAddr, p.handleStreamRequestPeerAddr)
	protocol.RegisterStreamHandler(p.Host, responsePeerAddr, p.handleStreamResponsePeerAddr)

	protocol.RegisterStreamHandler(p.Host, fetchPeerAddr, protocol.HandlerWithRW(p.handleStreamPeerAddr))
	protocol.RegisterStreamHandler(p.Host, fetchActivePeer, protocol.HandlerWithWrite(p.handleStreamFetchActivePeer))
	protocol.RegisterStreamHandler(p.Host, fetchShardPeer, protocol.HandlerWithRW(p.handleStreamFetchShardPeers))
	protocol.RegisterStreamHandler(p.Host, getHeaderOld, p.handleStreamGetHeaderOld)
	protocol.RegisterStreamHandler(p.Host, getHeader, protocol.HandlerWithAuthAndSign(p.handleStreamGetHeader))
	if !p.SubConfig.DisableShard {
		protocol.RegisterStreamHandler(p.Host, fullNode, protocol.HandlerWithWrite(p.handleStreamIsFullNode))
		protocol.RegisterStreamHandler(p.Host, fetchChunk, p.handleStreamFetchChunk) //数据较大，采用特殊写入方式
		protocol.RegisterStreamHandler(p.Host, getChunkRecord, protocol.HandlerWithAuthAndSign(p.handleStreamGetChunkRecord))
	}
	//同时注册eventHandler，用于处理blockchain模块发来的请求
	protocol.RegisterEventHandler(types.EventNotifyStoreChunk, p.handleEventNotifyStoreChunk)
	protocol.RegisterEventHandler(types.EventGetChunkBlock, p.handleEventGetChunkBlock)
	protocol.RegisterEventHandler(types.EventGetChunkBlockBody, p.handleEventGetChunkBlockBody)
	protocol.RegisterEventHandler(types.EventGetChunkRecord, p.handleEventGetChunkRecord)
	protocol.RegisterEventHandler(types.EventFetchBlockHeaders, p.handleEventGetHeaders)

	go p.processLocalChunk()
	go p.updateRoutine()
	go p.refreshRoutine()
	go p.debugLog()
	go p.processLocalChunkOldVersion()
}

func (p *Protocol) refreshRoutine() {
	ticker := time.NewTicker(types2.RefreshInterval)
	defer ticker.Stop()
	ticker2 := time.NewTicker(time.Minute * 3)
	defer ticker2.Stop()
	for {
		select {
		case <-p.Ctx.Done():
			return
		case <-ticker.C:
			p.refreshLocalChunk()
			p.cleanCache()
		case <-ticker2.C:
			p.cleanTrace()
		}
	}
}

func (p *Protocol) updateRoutine() {
	ticker1 := time.NewTicker(time.Minute)
	defer ticker1.Stop()
	ticker2 := time.NewTicker(time.Minute * 30)
	defer ticker2.Stop()

	p.updateExtendRoutingTable()
	for {
		select {
		case <-p.Ctx.Done():
			return

		case <-ticker1.C:
			p.advertiseFullNode()

		case <-ticker2.C:
			p.updateExtendRoutingTable()

		}
	}
}

// TODO: to delete next version
func (p *Protocol) processLocalChunkOldVersion() {
	for {
		select {
		case <-p.Ctx.Done():
			return
		case info := <-p.chunkToSync:
			if err := p.storeChunk(info); err == nil {
				break
			}
			bodys, _, err := p.mustFetchChunk(info)
			if err != nil {
				log.Error("processLocalChunk", "mustFetchChunk error", err)
				break
			}
			if err := p.addChunkBlock(info, bodys); err != nil {
				log.Error("processLocalChunk", "addChunkBlock error", err)
				break
			}
			log.Info("processLocalChunk save chunk success")
		}
	}
}

func (p *Protocol) processLocalChunk() {
	for {
		select {
		case <-p.Ctx.Done():
			return

		// TODO: open in next version
		//case info := <-p.chunkToSync:
		//	for _, pid := range p.RoutingTable.NearestPeers(genDHTID(info.ChunkHash), AlphaValue) {
		//		if err := p.requestPeerInfoForChunk(info, pid); err != nil {
		//			log.Error("processLocalChunk", "requestPeerInfoForChunk error", err, "pid", pid, "chunkHash", hex.EncodeToString(info.ChunkHash))
		//		}
		//	}

		case info := <-p.chunkToDelete:
			if localInfo, ok := p.getChunkInfoByHash(info.ChunkHash); ok && time.Since(localInfo.Time) > types2.RefreshInterval*3 {
				if err := p.deleteChunkBlock(localInfo.ChunkInfoMsg); err != nil {
					log.Error("processLocalChunk", "deleteChunkBlock error", err, "chunkHash", hex.EncodeToString(localInfo.ChunkHash), "start", localInfo.Start)
					break
				}
			}
		case info := <-p.chunkToDownload:
			//TODO: 1.根据节点时延排序 2.并发获取数据 3.把一个chunk分成多份分别到多个节点上去获取数据
			for _, pid := range p.getChunkProviderCache(info.ChunkHash) {
				bodys, _, err := p.fetchChunkFromPeer(info, pid)
				if err != nil {
					log.Error("processLocalChunk", "fetchChunkFromPeer error", err, "pid", pid, "chunkHash", hex.EncodeToString(info.ChunkHash))
					continue
				}
				if bodys == nil {
					continue
				}
				if err := p.addChunkBlock(info, bodys); err != nil {
					log.Error("processLocalChunk", "addChunkBlock error", err)
					continue
				}
				break
			}
			p.chunkInfoCacheMutex.Lock()
			delete(p.chunkInfoCache, hex.EncodeToString(info.ChunkHash))
			p.chunkInfoCacheMutex.Unlock()
		}
	}
}