From 13e0ba9ae51d9cc7018ac176d8ce3a2e5b427ced Mon Sep 17 00:00:00 2001 From: Ronald Schaten Date: Sat, 28 Oct 2006 12:40:42 +0000 Subject: [PATCH] First version --- Changelog.txt | 5 + License.txt | 346 + Makefile | 60 + Readme.txt | 209 + circuit/circuit.brd | Bin 0 -> 16597 bytes circuit/circuit.brd.pdf | Bin 0 -> 62988 bytes circuit/circuit.brd.png | Bin 0 -> 10615 bytes circuit/circuit.brd.ps | 7815 ++++++++++++++++++++++ circuit/circuit.sch | Bin 0 -> 249426 bytes circuit/circuit.sch.pdf | Bin 0 -> 57949 bytes circuit/circuit.sch.png | Bin 0 -> 27023 bytes circuit/circuit.sch.ps | 8913 +++++++++++++++++++++++++ circuit/partlist.txt | 23 + commandline/Makefile | 26 + commandline/usb-servo.c | 75 + commandline/usbdrv.c | 207 + commandline/usbdrv.h | 74 + commandline/xservopointer.c | 107 + common/usbservo.doxygen | 1252 ++++ common/usbservo.h | 217 + firmware/Makefile | 48 + firmware/main.c | 115 + firmware/usbconfig.h | 170 + firmware/usbdrv/Changelog.txt | 115 + firmware/usbdrv/License.txt | 458 ++ firmware/usbdrv/Readme.txt | 88 + firmware/usbdrv/USBID-License.txt | 143 + firmware/usbdrv/iarcompat.h | 70 + firmware/usbdrv/oddebug.c | 53 + firmware/usbdrv/oddebug.h | 126 + firmware/usbdrv/usbconfig-prototype.h | 265 + firmware/usbdrv/usbdrv.c | 572 ++ firmware/usbdrv/usbdrv.h | 657 ++ firmware/usbdrv/usbdrvasm.S | 784 +++ firmware/usbdrv/usbdrvasm.asm | 21 + 35 files changed, 23014 insertions(+) create mode 100644 Changelog.txt create mode 100644 License.txt create mode 100644 Makefile create mode 100644 Readme.txt create mode 100644 circuit/circuit.brd create mode 100644 circuit/circuit.brd.pdf create mode 100644 circuit/circuit.brd.png create mode 100644 circuit/circuit.brd.ps create mode 100644 circuit/circuit.sch create mode 100644 circuit/circuit.sch.pdf create mode 100644 circuit/circuit.sch.png create mode 100644 circuit/circuit.sch.ps create mode 100644 circuit/partlist.txt create mode 100644 commandline/Makefile create mode 100644 commandline/usb-servo.c create mode 100644 commandline/usbdrv.c create mode 100644 commandline/usbdrv.h create mode 100644 commandline/xservopointer.c create mode 100644 common/usbservo.doxygen create mode 100644 common/usbservo.h create mode 100644 firmware/Makefile create mode 100644 firmware/main.c create mode 100644 firmware/usbconfig.h create mode 100644 firmware/usbdrv/Changelog.txt create mode 100644 firmware/usbdrv/License.txt create mode 100644 firmware/usbdrv/Readme.txt create mode 100644 firmware/usbdrv/USBID-License.txt create mode 100644 firmware/usbdrv/iarcompat.h create mode 100644 firmware/usbdrv/oddebug.c create mode 100644 firmware/usbdrv/oddebug.h create mode 100644 firmware/usbdrv/usbconfig-prototype.h create mode 100644 firmware/usbdrv/usbdrv.c create mode 100644 firmware/usbdrv/usbdrv.h create mode 100644 firmware/usbdrv/usbdrvasm.S create mode 100644 firmware/usbdrv/usbdrvasm.asm diff --git a/Changelog.txt b/Changelog.txt new file mode 100644 index 0000000..06941cf --- /dev/null +++ b/Changelog.txt @@ -0,0 +1,5 @@ +$Id: Changelog.txt,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + +* Release 061028 + +- initial release diff --git a/License.txt b/License.txt new file mode 100644 index 0000000..9ba8721 --- /dev/null +++ b/License.txt @@ -0,0 +1,346 @@ +The following license applies to all but the firmware/usbdrv directories. For +that directory, please refer to the firmware/usbdrv/License.txt file for +additional license restrictions. + +------------------------------------------------------------------------------- + + 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. + + GNU GENERAL PUBLIC LICENSE + 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. + + + Copyright (C) + + 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) year 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. + + , 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. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..edaf3a2 --- /dev/null +++ b/Makefile @@ -0,0 +1,60 @@ +# $Id: Makefile,v 1.1 2006/10/28 12:40:42 rschaten Exp $ +# +# Creates documentation and tarball for shipping. + +TODAY=`date "+%y%m%d"` +DIR=`basename \`pwd\`` +PACKETNAME=$(DIR)_$(TODAY) + +all: usage + +usage: + @echo "Usage of this makefile:" + @echo "make docs create documentation" + @echo "make tarball packs a tarball for shipping" + @echo + @echo "For further information, consult the documentation in Readme.txt." + +# doc generation +docs: readme pdf + @echo "documentation created" + +readme: doxygen + echo "This file is auto-generated from the content of common/usbservo.h" > Readme.txt + echo "You'll have more fun if you read the HTML-content in htmldoc or the PDF." >> Readme.txt + echo >> Readme.txt + lynx -dump htmldoc/main.html >> Readme.txt + +pdf: doxygen + @echo "TODO: pdflatex aufrufen" + rm -rf latexdoc + +doxygen: + doxygen common/usbservo.doxygen + +clean: + rm -rf htmldoc latexdoc Readme.txt + rm -f $(PACKETNAME).tar.gz + make -C commandline clean + make -C firmware clean + +fw: + make -C firmware + mv -v firmware/main.hex firmware/main_$(TODAY).hex + +tarball: fw clean docs + @echo + @echo + @echo "I assume you updated the Changelog...? Press Enter to continue..." + @read + [ -e "firmware/main_$(TODAY).hex" ] || exit + rm --force $(PACKETNAME).tar.gz; \ + tar --directory=.. \ + --exclude=$(DIR)/Makefile \ + --exclude=CVS \ + --exclude=*.ps \ + --create \ + --gzip \ + --verbose \ + --file ../$(PACKETNAME).tar.gz $(DIR) + diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 0000000..19df7db --- /dev/null +++ b/Readme.txt @@ -0,0 +1,209 @@ +This file is auto-generated from the content of common/usbservo.h +You'll have more fun if you read the HTML-content in htmldoc or the PDF. + + + * [1]Main Page + * [2]Files + + USB-Servo + +Introduction + + The USB-Servo is a device to control a servo via USB. A servo is a + motorized device that is commonly used in remote controlled cars and + planes. I built this device to activate a toy puppet. The puppet has a + button on its bottom, if you press the button the puppet collapses. + When the computer is able to press the button, I can use the puppet to + signal information like someone's online-state in the Jabber-network: + when my friend goes online, the puppet stands up, when he logs off it + collapses. + + Servos are connected with three-wire-cables. A red and a black one for + the power, and a yellow one for the signal. Power has to be between + 4.8 and 6 volts, so the 5 volts from the USB-port is in the range. The + signal doesn't take much current, so you can connect it directly to + the controller. The angle of the servo is controlled with pulse width + modulation (PWM). It gets a signal of about 50Hz (one pulse every + 20ms), the length of the pulse tells the servo the angle to adjust. + + A problem that I didn't really solve is the power consumption: I don't + know the current that runs through the motor. It seems to be low + enough not to cause any problems, but I don't know how high it will + get when the servo is blocked. YOU HAVE BEEN WARNED, I don't feel + responsible for USB-ports catching fire... :-/ + + There are three parts included in the distribution: The firmware for + an ATmega8 microcontroller, a commandline-client that can be run under + Linux, and the circuits needed to build the device. + + This project is based on my USB-LED-Fader, which itself is based on + the PowerSwitch example application by Objective Development. Like + those, it uses Objective Development's firmware-only USB driver for + Atmel's AVR microcontrollers. + + Objective Development's USB driver is a firmware-only implementation + of the USB 1.1 standard (low speed device) on cheap single chip + microcomputers of Atmel's AVR series, such as the ATtiny2313 or even + some of the small 8 pin devices. It implements the standard to the + point where useful applications can be implemented. See the file + "firmware/usbdrv/usbdrv.h" for features and limitations. + +Building and installing + + Both, the firmware and Unix command line tool are built with "make". + You may need to customize both makefiles. + + Firmware + + The firmware for this project requires avr-gcc and avr-libc (a + C-library for the AVR controller). Please read the instructions at + [3]http://www.nongnu.org/avr-libc/user-manual/install_tools.html for + how to install the GNU toolchain (avr-gcc, assembler, linker etc.) and + avr-libc. + + Once you have the GNU toolchain for AVR microcontrollers installed, + you can run "make" in the subdirectory "firmware". You may have to + edit the Makefile to use your preferred downloader with "make + program". The current version is built for avrdude with a parallel + connection to an stk200-compatible programmer. + + If working with a brand-new controller, you may have to set the + fuse-bits to use the external crystal: + + avrdude -p atmega8 -P /dev/parport0 -c stk200 -U hfuse:w:0xC9:m -U lfuse:w:0x9 +F:m + + Afterwards, you can compile and flash to the device: + + make program + + Commandline client and demo application + + The command line tool and the demo application require libusb. Please + take the packages from your system's distribution or download libusb + from [4]http://libusb.sourceforge.net/ and install it before you + compile. Change to directory "commandline", check the Makefile and + edit the settings if required and type + + make + + This will build the unix executable "usb-servo" which can be used to + control the device, and the demo application "xservopointer". + +Usage + + Connect the device to the USB-port. If it isn't already, the servo + will move to the 0-position. + + Commandline client + + Use the commandline-client as follows: + + usb-servo status + usb-servo set + usb-servo test + + Parameters + + * angle: The angle you want to set the servo to. 0 is full left, 255 + is full right. + + Examples + + Get the status of the servo: + + usb-servo status + + This will tell you the angle the servo is currently put to. + + Current servo angle: 42 + + Set a new angle: + + usb-servo set 23 + + This sets the servo to the angle 23. 0 is full left, 255 is full + right, so with 23 the servo will be almost on the left side. + + Test the device: + + usb-led-fader test + + This function sends many random numbers to the device. The device + returns the packages, and the client looks for differences in the sent + and the received numbers. + + Demo application xservopointer + + This is a pure fun thing, nobody will need it. That was reason enough + to write it... + + To use it, you have to position the servo centered above the screen + (with a little tweaking in the source, you can change that position). + Then, you attach a pointer to the servo and start the application. + + You'll never ever have to search for your mouse cursor in the future. + The pointer on the servo will always show you where to search. + +Drawbacks + + The main drawback is the mentioned power consumption. I tested it with + my servo on my notebook, it is not sure to work on other systems. THIS + MAY BE HARMFUL FOR YOUR COMPUTER, and nobody but yourself will be + responsible for any damages. + + Another, not so big problem is the crude implementation of the PWM. I + got the timing-values by trial and error, and they might not fit on + your servo. On the other hand, I think that servos should be + interchangeable. But this is my first and only one, so I can't say + anything about that. + +Files in the distribution + + * Readme.txt: Documentation, created from the htmldoc-directory. + * firmware: Source code of the controller firmware. + * firmware/usbdrv: USB driver -- See Readme.txt in this directory + for info + * commandline: Source code of the host software (needs libusb). + Here, you find the pure commandline client (usb-servo) and the fun + demo application (xservopointer). + * common: Files needed by the firmware and the commandline-client. + * circuit: Circuit diagrams in PDF and EAGLE 4 format. A free + version of EAGLE is available for Linux, Mac OS X and Windows from + [5]http://www.cadsoft.de/. + * License.txt: Public license for all contents of this project, + except for the USB driver. Look in firmware/usbdrv/License.txt for + further info. + * Changelog.txt: Logfile documenting changes in soft-, firm- and + hardware. + +Thanks! + + I'd like to thank Objective Development for the possibility to use + their driver for my project. In fact, this project wouldn't exist + without the driver. + +About the license + + My work - all contents except for the USB driver - are licensed under + the GNU General Public License (GPL). A copy of the GPL is included in + License.txt. The driver itself is licensed under a special license by + Objective Development. See firmware/usbdrv/License.txt for further + info. + + (c) 2006 by Ronald Schaten - [6]http://www.schatenseite.de + _________________________________________________________________ + + + Generated on Sat Oct 28 14:16:28 2006 for USB-Servo by [7]doxygen + 1.4.7 + +References + + 1. file://localhost/home/rschaten/microcontroller/usb-servo/htmldoc/main.html + 2. file://localhost/home/rschaten/microcontroller/usb-servo/htmldoc/files.html + 3. http://www.nongnu.org/avr-libc/user-manual/install_tools.html + 4. http://libusb.sourceforge.net/ + 5. http://www.cadsoft.de/. + 6. http://www.schatenseite.de/ + 7. http://www.doxygen.org/index.html diff --git a/circuit/circuit.brd b/circuit/circuit.brd new file mode 100644 index 0000000000000000000000000000000000000000..e1b651afca56c302097ba18b68ea0da26ce49498 GIT binary patch literal 16597 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 literal 0 HcmV?d00001 diff --git a/circuit/circuit.brd.pdf b/circuit/circuit.brd.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f82eccc0618292eaff0230290efeeb55597ef70e GIT binary patch literal 62988 zcmYhiWmH>T)GeHZ0KtPh1T9e9iWA%&TC_lm7I%jrMT!I{Qrxvzi4`R%ysf>vr7Mg}-rn5ZQr7aVlZB;(1g4w2tEIUErgvst>u?-%^H*xL`*{bM zluFXlJd35eQ^_ zQ|&!-`)ny=aHS#n@VD{troe8oWPRW1!GY!O{_n$8b7NETaj#QQ%l+S=%GlRVo180*z+YH@{>#?MlpSJlymmf2h_gry(n+Z})qD+@L=m(cZ5HooGDHKAuTF z7CauAKBhjN=iEp9c-(wEGkrY&ai<@c^3~qy^!r0*_3nQ4qv^-yX$Q#^=F1=V(LqN) z9;1UEg6;-`-qb%1oBn-RL|*SpKI(67-!z#x&1=QYt$JivP8k{or40Hincesd;~?4% z0!dJcYdziK+O>9a!T2Ce<%GGdL&=BL$LoT05xp9!-J6TQpUodN?hk)VYJEm|^T=E2 zRR7}D{om_w;GI^{WsY8lX}Xf1kKNeK=>iUKZDpm^PamsNLtk(QB+XVK(Qdk#ZH9)f z5$O83-TR|jrg>yOJKRGw!W^~T{5?S4B|A>6;frI?}U`wm@#ws-Jm}@|yC1s`)cR=N_IUpn0 z2Y}MuTZx5MN|^v|&a(v*PR7Q=!jFt6pxL+FVE~~p=u)JKC0XY#SvV9B0i{Pq)Cfx8 z=8+3w=fQY9173tpMKU0BXN6u!N1S_7wH=%xUCezZW5TgHgC9oBed zgSsDL({=F$ayA6pZ&M_Heg zR);UfpPbH39BSj-4#7q(s~!Y!zMik}g|E;m0K~{ zCiAL?Z((`Y4CfSop2fuGB75t|wGz$v&QwDw=w5_`9Bt=huvO0RswPj{4M>Os9J=%S zayBLondPRJ4A4r|%|`fHG2?ID`vZDP?8KDG+Rx`CsoI-H2)$%B9z@2T`*2?4Py&MT z)MP;f5zIcM!Dx)cRO6z-8&ThHzct@@jka8YW>kTd40Y+p$R)7_ya}5pUm}{ z>g65F6tv0*5lBjL&Kt?mBazac=dHM4p+=^qJ<}OGmFm!`@06zKpr@hWnW9%7GqmBP z2UxGU%ZePEu+dw!^E~6>b45CZM0%eRop#hp;eCe zBNyXhUM+GMOB~;`?m2u9&N=4(c+Jl}yV=~E7mwRzofKEzzw>aJoog67h-6J}_H2P21){4Cn!0FNneo0{mSq1qLK*uLae7PQT-r z>*3|6l=-+2D24m|{TP6>>xEw0>d~;}usBn@6C38)FGIncWc1wOc~<)NWVD2cF6-FK zLnhBJZJ^^Dea^qE;4-cO6DW-qt@~p(C@ruFC!sQY` z4c^B|iK^|!`vpbhK1fJWW-k!BsYv;MV!A4dm|ZzM|6=4R zF%&SC5-^fea*>xJsgb(h_xA$ipIA4yxA*Pz=$OwD!_;{D^C4fCJ+(~-_U1D?p)<&jKw zboq2ye7b-g4nYrybbNyv@|}9)0E8JBH2^Z27=Faw1tl2s#+KHI=X=v|f40)D{G&nbVJpAc*-8EL75#Alve2nca=e0jJDP;+1IK^-0=2v9;u&`8H9p7un`y^fnSLg%Mh zg@z;pf1f}>x!NDZ&U(nAB;U{uwB#eI1S-$0?j-ekavCzCf85Yo`#a2F}Hd6U9Ik zq(i8<%J85uWDzxifcNX8JsY_$*E)c<=6#c|PUhEc2HgF#0obJMc91PBT2ZuQ0Gh`! z-o*J)dw_%W?f8lHuGS-{^Thg47O(aC#5&~W=}FpX&gbQQrTVIKB)!yh6Q_RjgnRuT zA@_3<6kR`y9PG;I+i|19vTac%2A{f3pX2R9`7#uhjtw*jyJf!&EkbZyYVCgPw%Wsg zq|pf86xMOg;5m=ImsyE((Sb3>8&?jCD+eDc5X-}%rn?Vvjm8ct{nKw5RXPsvKxBBB zVl>jMMSbT@mSaW6i@tU(czLXL0rqGc2~W|OiWTS!DU*<%L6`CFuFfq^J`ju}uh}0BL~|AACD683@=tFLf!`@Rt-Q#822w<5#>a5)4o1`M$^MK?a661R z>ZAQYfd}*vNJAtYm@>MONptUeLWHy2JHY0QAxjT&eZYMDRp{$}9-kz&xF`guv*7JY zZYQ2g7#KTlyC*j;4kNFrH%=)}ScJJ}dFvDXT3o-cCwo8E`-EqO2@!8^dit8*e&xiC zvxO`j_x>(nxFfr*3%q-~G(!ox0qT!)@&UALNx#TT@{QfrAyFI#B>2WY;?cd$1097Lb}4GneduDYkk71p648q(Do2T)SKtapVWhxS|}&oL{D7H-8lcgT+jR7<*4qFB~et6*I=WbsYEe=zud^Ql2SDeTkmy_@H` zR@~T{>9=WoQ(MDZo!Re+e;6vcHUSO~!-JQKVRvehLPGw6SDlf?C9fpi8*!ukiTk7d z@x6t2l(sK=M$trs)RdQpJAXrtOM!mWbaBH%#ah?Af&4LtR>%r7fZrO^S#o=d49_wp zuz=2tT!P}E4rsw5A7HT{=k^G>CIvmcDhNJMqs1|$=(IZ~@0=!8n3kY}DPcIfbhEsv z>i^XCgKBb>3hi7dLW(KZwER%k^aHKxGDh9KTXm@6=;qmU0nPV@*L5y7Sz9Ak=K|}H z^F`}Q>&4c^SpVGxfjbK<=`T0tsL2wm^_-rUB&uqglVm5o$X}`8P9)IGxNNQ?C@vi# zkq{37u-%`)-D2S=!>B+UcSM6rEF6lwQHtNZDSSPKF4NbAyfx^w?Z5B-NdOv*klE@j z2XW)bKoBxp3ilPiG;o%;t?}Ir$Jxbhg%#Oj(_;gsbjB8;E8V(eH`|L4OjpW3)aPB> zzuM3VN>rMFHdO80D>@R-$q^R;ls^|nm0byjYZEmt;o+;rzyG>PB1&l2e!1wtMV@0c zd2C zABKsUHLT3C#qfWrZXZQG4)znS4XMt6*MT7z@sy$5Dt8BXd2ql4Sy)Fl6)O4{#h#^H z1Z%Y+aH)K1Lo~quQ4{-_7%nLrq{}%E1jIJLI8hU(gLHXRK&6Q4VpNRiLL!SQAsjSe zU&JNFA+`QT*MqcOp&ukJF!fp=c}|-6W9Kp%AX*mWE2dB%D&0vq--Wy6*t!YSDv(qP z5;E94mI5Q^0h{|{Oht^P>Q5Pg7Q}$T0lx=H5tb0T2V0p^fmat=SQXeOayFDR#>CW< zP+pO%BDyv9dLIvU<>e_<_Eq+CS>ubv+&5eZMB5o{AUfc#sMs!Y(DmeO?6lXQ-0wk% zsR#vgOl(B^Q2sR~+Sx~2FF=sKROFx`X+R2_j^wAJ8|3mw?Rzr7AGI$+bW5dbJ}GSY zfLkGz0I{+3BG+62rgb>Fjqi&d`a%OXQ~{=<8^HY=2vR&-O0wbfR3_4(9AQh=i7Q*w z#^d+65V8BkBpW+K#%92GAd(A@&blnID~aERRF*R3)iu!#fIa|p%Lbs7Wv#)PB?LWn zaQCw)WUfrP(R4f^0z!ov+!=8&G8hhQtxX7VLEhY3`Jfn*pVo%5urpf0@_Tl4PY!$s zzy4AwR@_#oMVy=S4yzzNa8|+S{;9rv`54cD>UYnumXRkjM{rG+uWKQq9A#QMJ)wnBRZ)enKZbS)SE9#pNH!#0MSfwnm4iBT-SYe4dcX|Oa@anE5S#W zUsJ?4b;ec>S3Qh4kZy}F?Us#+v7yrrv70LC{f0B){SLdv*$WMSu4HE=wdp4b+3Gms zb{lB-WR6%;kgfSlT!GkkzWT-MrT9YO9`m^1BF+<`4@JRN@oS_gv2uo$;e_MwgixE# zIL<>F@Gj`Q6#=KAG`x`PNC4qTWVe3nlEB)bZG6>e%C2dECn~lO2Q&y5eD} z!NCXx)vPz61@oAXtp+#zj0ko_OW_~GKZ$yeC9mjbb&ll{S`pa$j}x~TUNK}E--6yi z1_jpX*o)Ta++l24ZSKC}*mUaEK>?5q{8uFGS38NmQoL`JgB@ss_mn`+>B&kU2uulp zS~K`*RVsIFk|gL4^yg}&A^?;bTS64%C%^BF~aaT1v>7O*l)r$WyA0?wRqj_gOV(+|2bcfOD3EwfUI_y3?x5 zvV+hG9)gznbR&vw1J(BPQM1@R?*z;Z_c2=P;t;r-R#M)sAfpImgV5StJ=kO^sbFH9 zIFav~OUAIOOlah7zr#zMKjT8}$FTV-GU9ZP1&2S%L+An1%LU6WfCcMZ9>5>$A(vUe zqMFI|FPKyyonipuB9#_Lv9p23TCww`iZI5!Z>9`M^M^HU=|dC!FLUV}SUHps)IjyIaTssKzBSLp#V9 zA?({!F@WOE;Jz+5Zq>}6ZfvR_e|E9sZ&T`h5>kU`Y${_bco!K$(jQq|D71^t^pfJI zz`N`eQGD;KecFWqK578C?)Ly5JH=@EGQKp*$r1JG zbZvoSTT~^z1DdeY7CSK0MZzCw_WGXaY#9pxo*tZ_J5c?6*73c$qgdBhc#XdAg)A- z-csSyzKv3Iz&!Drq=r!}x%ym{r{phxF1jyR_PZol99?Gmp3|k0)SetsEpStox^*A{ z>6*b7>+SG;;ZOTRZg^{%N0K6QqE5%=ky)B3lQOov0 zEE8a`I*efpvOvprc_0KlD_2=3|CLZIIWR+6{1UhVW?zpze{t_CkM~+-HniH>JKj(t z{k#s0eml5qJiwi)LLUAR5L7_pTGba^7$6}hB6;aw<*B~7$#Sr6#FePwwAhCjPHuR? zTy)*@$!Jt$`C4Zxd(UpemHxd!DbhESyX}_z&WrLj5Z~r-(9Ik5 zj=WYA$K})WK(TIAH}%UV{7x+0H>1{hgKa-Mj4s6SXn@}cFo%3<7OSP?JH@bt`EO>3GmP$!dpAqVN*91-#@i#DFl>Kk_+~t05y&(b4A41->DdEL z*a#81M0v}-xRI>4Yl!$FW z-of(8E*SJ}pskL`!bkwET*t3e%WVxzc*m4$teQSzFRLwq(miiRp~0Dxox!Cx0I zsB)ejn4fkXvBcsS{kq>J3_x|AT*0T?HpLF|`HhNg%_0%xIgAY3PNwn=c!L`qjDNK3 z{VswWsp~?S9#@76u^#`kuevMB5n#AW`COn9723PXHPBHfpU(I6p;w$ zIx?asH&WRLae;?cb2usEo7?u0OD$;RjJ~uz!4!Oh6OPsL1fO;1Gu{4Q)RL^Gxi-GT z@rxfqd?FD(uR?Aza?dLq^wwJhu>BF-M-s{RQ|(TH6UhB%a}Qy&1`s^>(wc6*wF1df zNh{M=yab~UcWJeJ@6jW<#oA{L5b>G@u8KMAi_$jj@tU(-WyhkQ@6;(44b~C+J}SEm z#N>|G81M{`Y(nN4k{)?jFpkRKf>drC)(;&vm9yD7WnVlYg#B1oaBUe^m_zLkPi?$Y zwQE_oHjF@Jz8&hrQk}`JmWY9``VbxCQ?ER){56W5yDv|LHkPyww8z;1+6%4&W8x$9 z8GC;vUI4PH(V=O@z8m_cuU{s<0u23)KHum`DZIQ=J^3RnVFq%gA9yut@pt+~s;$0L zV5Z5--Qgj?=N`+Aqu8+kPdR3tPaZ@tbwELl;vDuT`uy9X>M zo?TjgYKFAeC4xSAyBg&qmf2v-5xzu#L>em_DqxncF6#}Zg8;kiYufxb3> zDieWh`HVCgbdtw^rF5M4H+;7Qe5CL7y)PodSmIu6wdoiI>hh`H&$NIT7Q@<@{DZ|BIT&2h^@fSiaf$lF6%6z-=ESqr#u7!N#Bn0I-xP|DBTv9{|?S#^KoyihQ{ZZ}`( zK@geY?6LO@8<(yn#)E(bK6n*44MjT-v*_ksxWVUA?~q_KVV41%>SCA;dyF&!^k9FV zF9U-N)bha(${oiTbtU&zlbZIl+{Tilz=B^+R1p z_+$Ea@2+YXzGD+soKif~-#l-^nD(ipeVspv-4Y%Q?f%u-G(d`?KOmIDtJBLdUblQs zVoM9(bm4?+E+knjG2Upy2tJXYKQ_F0CvH-;0f{L*~cFwws^uC4$U&zEHpE!4a zk&q=)BNu#_4JS{yJ9-vMy<4_wWRgp-@_|%t$;OU~;JS82uCXI-+KfEDsM>^k8XqPb zz<8Nu^UL?9OeW@Ejn|OoFZYshWB&Vx`zK?!9?upq7eD7!{cHoJz1!bT6l9pNva5J! zB5`?NYxv=}Ymby;t57dpfMlPYsr=Wtb4$kBW>fVq<_oBmWL~>!DuazTu*QQ-23_9^ z&0Vw6LsprHoRC%T3;vHrl-Jzy0HF`7?S54c5Ns3;GsVNdPrEK}a*vGE{Ml&n>HGioKo9wQH5W)61v7 zXwpSq!CAhHEhwFhXY4g|B$|yvn}_mC-+%7$&6+r^kO5R}vF*Cd8Qau|N&u+xFb9GL zE_30Yt!khK8uIYUDPFgCan;3`8sXoVL0m-jB*BRJ&+cXk0EsNd_*X^r@m`f!WG{gzmms+v(k13E?e?nC1^M!Ym zvkC2J5~62RNaM3M^_ne+{dA&ohi)=ulpulvI`>WpC+j0Gva2m5g~J2EO7x zoUiFDGBqcg1YpnZJT+v`+T%hw!~!0?N%H*2wjABJL0Q@e=&n=m%S{Qx>=gwDT3C#j z+uZ$|H9Rlpj1&T!owJ?Z(h4j|dH-6#81l=*%JBHTfiJmmjTQO~#r;BbfzyX+cmyfB zyg-W(_?ROYi|ciZ&pu zcH*riH_G-(Jn*>UhF`@i9Be~j{aQI1b{=9O>x=n0LGseJtoY&n@5R(kSIf27edaAH z{kgEjP{yn4rhr%buLe2E;tMo3V8qbRetTN)xE@@Thk?h_ta`mKFYbqb+^?(VH%Oiv z$uKiCNlo>YRSG#Ru&DN>Z#M?PYi1Wwa9;TxGnLk1!?iS_Pfk&6JABkhuGl zW`Bxi_THw+G?@K1@VCa|2r5 z%1Mkr@72mw7C=iz46Va0D~T!JN5+)P$HmYy%1ddU3E#ZF0`K4Uu}Ep-br{L(afx!5 zGrWm!ea29**AW*ZqN-;$Y2H!V&ccN*|0P@p4fDvL-cr5;pxD*E@Lq#&V1pQ?04!Xf zELu%SrZ-PR=0Rm`m2}R=!v-)*f;k5pwv#k4%KxI6%xfLvJ=>1cvd(I^l+W@=k0)mW z-?@}U{?2RZE_D+|mq!Ix%Iwe;RNMz^S*^9RNHL$-cPXB3 z{x7nrzOxp;w4~g~$hVb9mBiV)r0yc#(KMCm&!>@w zV1!CYChGW#n3l>~;=g6Z;*iO4Y;sQyR+(|X&)n?8q_a>@{QwyWj||=vb7qCvP-|;6 z>CWd&cNe|0@cq-u&MC#{+@AtQ-^x_r#2`q8dG{9CrK58S)0Z17Y>W%w7_%8|BnI3m zaGtxa5xf&J$Ze0d2dp!=M4@eP`lqP8Y-MD_aKSZp2&C25=AcN^oeoyACjZ2UP^Aas zYGUbkrgSqJu6o#1Jtr4&?=9G+V!(fura*%av@>R-zZE>%n)Bz7Pk*25p(wtVP%n8> zy2hHFs)YU_l7IT9&BDe=fd(Vd5%T9`i|Q>jE}nTN;Vsk?{Ni}4JV>6#q#?rVE2~~S)mc700bbx!JtV{ zTn*ES;&d+V(EG%NJW3je3BhjK23u1;Bxt1~SXVZM?x9BQG~0&=zpl-n^o_<^N&BpEvA+NbGo^LVXHWR_1UsAIUQCkuWJ)|n~|)^WRksh0WG zkx3mDkVya*)Wo`aq8_VZs7M{DVYtMi%e&dZ_Of-dd?*kY`b52X==Q;v_HlsSsi+Wn3j;~M5~ka~d~cEZd3E=xy0 zKSf6$wBF7#y%m!O;wnc4ID)#(|DhwdoO+Va(vKbKsxiC;DGWUCD*sj`Xib0i90*qi zBeX&?v2|DMwL~qF?4_s;v6y6#2V{DZf6(L|PRY`spoed|7P{mNguBA>%pj0_aM|Ip3uM5w>fb#OD&?azyGc=1$59Qr zxRvh{^Ax=N=Nfrh|<;HU1CQuWM;k7F-vMbigr3 zFH_5%frP<%um*5P_bEJchDw7qZlCrV4N5#eQ+MZ)0AWe6&5*kP7ogIEVdYr4zZuwl8$e~aYjfQq$Db*-p;+p zt}uT_wV4}i*#HE;grigp-FvIDe#}A2mep78ZIQoz(PDTn>;>cf;L%RPV&2q9h+%26 zjbuuqvSUs{Nzkk)!2Oo;G@D`LNqERsX75~ic&0@93I1{tQaf`=>mSxd)*MLBbry}U zRAD%{gLY^EZ01S&A4*3^5eDrRVwPwtWR_$wGY%t-AdfriEoJ6WFmA=NdmdT}GFY8?4o| zb^zaB|p+!jVhplH5qK}4bxhdDNTkRC;r0?Jc4hYQ}P*_NE6D=~7AXqaj z6FU+G!4X3osR?;jgSmoJC1Xjz2Jgukw)93$+_iQsx({Q%uZMBE7CId{JwsMbPd4RL%Tb#xT$!Io%CZ~?jPr3t4#mT^ zy3}N)YbIDC@e^GK7NN=+NI3f59?+!bG-BNiTiNUoDnKR7k~gf7i()5aQX0I@!y@%O zH*YPs`_(0FlxBzs`L|_s`{iO7{s+nkeRQMf+%QYtr$wVxWpVjlN~f*-GdE6T$uOK| zQTs!)#q|=`TTOZx4C>Vn`o(FWXsf}_kKS$cc)>XfXSI*Q(GaI|2@QckFTZ1UgzHCP z7|tLum^KgjUlLOY-Ic_q#)A(^J1zLhyx&)IG5;O#I>ji zYJP~X1>R~ak?xrg7k&Fd?C}j{I=NI;8MX8()CVW&jZ8jKtQ56JJFCFiR-CrT&kpn; zS`gU`KGCRsSV?yLHz_FsNCZ#VQnx&mfpI;lIWGy< zB_0|m4+`rb$4qhg8PcA(N+6Wq!JNXw*+DV#MDH{;00Ku7KwkRta?O8ps|OL-~XxYEyD++i=KCearbnATYL33$&ivPkf^Co!zC zqV{Ao=`$G%Hyj|!{*U%_{cF}3*EI#$5@7sivFZ@a4xUb!yka`*B~NT;zqB9uyg} zFfFJvDZ>a-j=dF1uT~*US@d~yV=QE$BK&`o*A5nbDJm>p*J#Wr7T7}M!U_cRDy z=<|8PFq`{kg+-Lu;^&fkIw$f{;KJo#4?3YKnr?_z?b?A&cj$pda1H~yit~u^I_m^v zb21Om`}gZw4_;ZFvA2yaO1U@_%4kNxR4JKF(`#k11F93R?PBnj-gi8 zXO4XmCl_PB*h#1@<6AgG`XT?oVp9=*ZS|44brmszG(@p$@44&-9RT0867B|nioM$E zNO|#jW$)iJe5b+mj5w~PQ1g7^D2zm_fyFV!rdNF+4F~BIcB5i^?E;8CZ>(4?W`@}T z@i;`FJ<+G1{|zA^g~&TTwuuxuQ5~rel8MsiC7lR+rVJxEDXzig{S3z#q<^|6NJc2y zE6V2cl>V=P>uSH_mN-%c%WFeiR#*hc66#}g-_Udar%xFas=9AzxW!LHy0I}6B@~aC zzy|FhWOS@03pja6WZ3@jKO9G>K27@ae>j2S)uhDUb6kQQ-DXQq;b;03ehh>k1mPXo zow%kWILy)*JH}?bobm55nq^s-&)-lN-iHwUk0h{HtFj2lO81jZYM~nsjunVXv-&a7 z_^p?N1wbojS{KUny--g`6I+=9#PHGaLK*)<8Qb{~7Cj#$%UPGYL5s>d;+Cz%K9IuHpTe&!c1~3 z8(9|A7R67T`cJ3W^Sb-SxfL%s;JL!p0 ze{LEH+0muxGF-hkFrvtbzyY6_4Ir+pDyqHul6%CT9{BmL#%R#++l@Lc4_i@{jIRGox

+)K&?evc@=#7ywvZucQf;faAom&{-@w?rJwW|+1HbjFe#cP z$o8eTKnqi(iEgXHDCI&533g^nE5U$BExLq(HIhMaGPv*A zbY9a_Veu;~=%ml&NQ2Ia7b<@MD-xm>Q-d#1qO!uq_q1auC1MXMU3qzaKhr2|=?^0- zEpQ_MZ8Gxs(zBA*$s;d1`B)p!dqcjFQ{k<=V`n&G&Q;hbZD;VZ5BVZ4L^AE%D}%$H zx|e42ztj0e+=p4}K!;2tbjEy0Ej!9Zcv@;L&JZ%jhvAw-&vD=}Ng)35|GEicA3uR5 z3pcYM!pqY6v7%{!Z?u@a@WMu{0HnODivQ$#s3JtlB6cAW_MHi199^k3S3tOyR62fCrhzSkO+QhdsHX0BGWgbY3J1c@O=C~cytpr2-g0D;c?yJ&^li;CL%oG zgzxC!IgF*vgsd(>1>svCEwFdSjGyX@E!2c*hd=wRwOJd-w@fE00W~;fj$ap9SPCVi zRs5(}>#MSecYU)w1B_&c7!I^PKm>Hk8y~#+68bBRngs%15aN7AJwVg@oErFdYP$0l z!|-+zI|Sd*!PZM7#OivAuJq~fXl^cxo@C~2aDbwfy#o7>0f#;Tw1ijt3VbbiqC1n>9Bz}KcB6OFh>Z*Rc#`Jdfg&<0 zxSyaE=G30Rf8Fc&zz8iz!pmNPc{rNkdB3MwvYKY<^AiTx2puMV?(4+z#`{cNJ;&!! zy2T4E@@ASDjI`t;Br!yaa*Bodxn#2E!MfZlak{-8pER%vUBi-ut2|Yu*LSq484?Go z5R0S<0~?}7-b<}iiaiwSs#Dq4nDGfkI?8!-rA zMCyiQ;!c7(YnT!~OxNHx1D^b+Cp;qoBMb@Ub@OoyWr%oPPDV_JfLasTh8`!u_fWvL zN8aJb9s5)+X6@O=UvM@lMmRA4*r zbgk)ATyP8mjr(T?v}mt%kb*69f6k5-ZlDGT#vcPP=x}B8m4B#?(wvTP1xp(|8>FB; z#g&!*g4++`02|6gX;_OYkR?r4Wk+dHEBZ@Qr(W+B`ka!OZQEOZ_?9 zPdCNG8J4XKISUWOir6s9nPd4zvg&^Okx!>A|uj#NAc{obUllJ*l%8`tB8$y`>15T5Hw!+-GS&7}rRm-+4P;s@EFuax;s=hbUIg>>9{AV8>Q0pHb| zlj)1Gf@%~M)0YK2l&3M03~B+X!a*ssV0^M=OtYst?QO~_*_S{+DRoV|n@=e3eFk*- zbG}@4iU{eca)7T^v0THov4nX4Zr)R`QQQZd^1u#<)KO=t@{LutK|UD*N5CMXabZRf}cP8xeBnG!#ND5l@MRuD_jh zcDAzVkF+Pk%2lc4j$v&m#4IFb{1tYHnLrB%8~8lL1`O_6^EO0YENVzk8Gc{Or>}3h zW<9;&{v6XQ4vU43k6{!D!po*c;vL;ezhv=b!C7i?U^V~K!s;jsTsQoN=FY{Q5)~Or zCgiu%xC4T<%U9hK{-sEG*>u`H2g?`xKn43!lwhrL88?&uu>$0){gBNwf$#Amp?ztu z_NB99+5n`%ZSti5fe!enY4}ZN8oO$o^Q-*Uqa$=6am+ z??W5E!eKk_eMEenw*p?b;8ubEzM8QD;mwzrjzzl@Pqj7761 z1Y9aep+%m3hZ58W96#srW?@vuI)IRm(y!%scgSGmMh)Q9?6BmFaUK@?txKhR{%0SFDQ|Et~BC6 zN%N9@ayeUJcue%E!_E6r^>%CYxk&PjhM;?dC7Tnv@qo{rvAvHKr?@ev#k+aypwuL4 zM*Zn|8sf;#uKJ-Q(C0y%Mi;OH) zECKfC6%+?Ql&ar~8&&1Xwc|de{hr5Ag24*%d0R`n@M3SAxgCn|g9WXv3XK~$ov3v! zGiKI2Jg=cMi-ibk9TP?s|2p-!;YZC{YfFKqUN)!hef(uedw1 z2K>cs9jjOUg=OM)>#~ia8=eYV3G60rAI?P;&bM>;(eTcG-?@w^w}LtH8-7)={8MY_ zDa$M=ls_F!K$YOZCrpo?&mc`LLT-ZrC#O#EU>2d@wRe|orJ}}vH}-Od+kG=!?nGt{ z`yLhlJCP<*Jt79WQkW2f@(-P-Ot9PmM>o9}3uwu$n_lV-es?#y4fE5%FMU}BFv+!D zHkHeZ+!NlfeI^)0-%8A}&g9kr?+^@{|773QlBA>WsX%XIsZorth2SFCLy!>m5K43E zEAn^vn)0Skn?O-+Vf*oN{5^L6gT%7Mk*%M!a)Q^=lo1?=D&28vTw6(nw$!pWFMdN0 zbCoyQYHlkvA`H-~6}q7ZI*UP-+qTjbOm!V-{1c!z^pQP^S?gKDZCi%Em&e&$)}He0 z6FPukE*G2wyWeQ7T5=;>vD3D%3tniGJAexfq;MS9eE5QbYN02- zI1xGFuR;YFV*V-hVD>JUo?VJ$~IgWe_-_LvF=(Q+&grJ7QRBQQG`19C|% zH_wl<9vH+(l8dH4E>LQmlAy4NX}k3@?%sRn>73Y=Iy!O-+|F==aU59%_Smw^?Fnu# z0A&55O9W0S0Q!Vqa#3p3oDJ0=i` zzy&|+7IEdSl6&f9g!5{@u-JU@!+k4Lnb{IQ6MtXzW^0T(AcWSnp$|tG#swbe*p0^k z!AUTH34b`x0$woQwBsa5ILm;y!WC(y^6|Q5N&X|-7RuABB~(1uc3@3Q%vmsDFq#l~ z9o>sHe)#*Z=-V&jPhPhW1eh5LJ~SQT2S9=){Fg%|&M@-v7JpU|8b?Wh6mtOAwHh4i zxPr1bVqQGbwoN^vU0g7+GQ3d)j|5B&{?r zB!@TFl)}aqzv+jRE6t*$%?4s(|NDDnBr4|cyr6fkkN6Gb$}aHr=320B_(#}^1ejvU zY%E-C%=nsGY|MVJH0jT1VGC*NKBvOO*JGr3d_NvdpZ$-KrQiy;eiUJ-ICN*M86J)J zqkRUiToxkx>1xR7nHyBUB$u+9~49J1LD|CkWfjG4u?uiDSb_<3A7PSy;UTZI8Tces70Gyph7AfT<~u1zrI6HNTgk&1M$0J2|~c$(tqIIlp^T`BAZH ze$yf~C&D_Lcj{QyYMegz3|$=F@Lr{V#LyHe&c6m%^eh(PpGn3R|IUzPnobDmQE>}f zx}j8B{y?QI1KDC=r60#GJ1M$%zn{)*XI@ArEDhatqF?*}*t@H!wz~EK@DKt7x8Uwl ztY~ov!KJ}k97=I_hoZ&Z-HQ|`PN8Uv6)44u7b{M2iqp=a@B4l8A6v6#t+|+sxylJi zU~^=jy`Sgz>||_!g)kU$*x2?E0YSs>D*E1f41pDfpxrYpsTr!w-DC=wH~k{Epy&HR znANMQMWED)kRZZJFjj=5c!w@4uaaUp5_coLlJlAx9U*tW26eZP0+5gr`YF*HfD80FMWd6JO->nhfZk#LPGB6VFYa^F}@kFTMX-7eLY$=Z{B zdGzXhE^H-s4x5834ck%P{#iz#T#ktg8GSc|AOxcU{#t>gNg&v%Tj2n14eA4>d5*LT zN8A$G)m*3`S8lf8U8xOyMe{4~a53xTsgPw{tb)`K}K4UEn5 zmkZ`L7N>~mMs8d8LH#pd?A{mkQ@Z8`D|~`|~HbTBd`YLyPyu zjc55Tc7Z_!Ed-POO96fgt-TsX$MKi z(e2z}EJU4ONWDopMGwK2mL}Oa)S6GZMKuKy<(|@l!FR!{A-3+diYO!2ASC-B&|Ie9 ziNLGEA!wmG%A21k8ksXs&CT|tzMU)uO~Q~8yn{q>LekY!#|ej^{|Q$ZC)w1{dRwjG zoTbOw*=30Az4oCW%4J|*V(nf?zhh?9x_8e@f#Tb|h90)Q^2O?0;aLH8F(~+UGv}Lw z*0JX85qzmIl>kbfVi z*ez#Fal>_Hi*h;s&a>lXCoImRwMz+Q*fuoM02!x_@AAj4#JO5mXEloX(TyzWL~9^T zJKgd~`|Et-yJ#O9x^V-H+40u+%+PXNEZ>9rG~6(|9i50bu+QUpV)DDXv{xlRyx`vO z1WoY)bVqRCHBo7hB7bR@U&GVb^$D?w2=sGM*h_!2R60K8kkW*|BjDJ{&yvT;R$D!! zxs_Tz?#FHcG;j$P4fF_}GtG;@Uk) z61H^G@))jsh=@kHnnVpgu!l8AD)x6D@>sU#PrVzPv2%Wrns7=)=N0T#UrW%r;W>O5 za&0~+e|`RAlc1hyKLU;@Rgd)kV6r-CiNW}1vU+~@x7L?~s#Hs-UA)^R!fg1E{Zb6D zj0L~GoJ^ztK2z8Y(gXxDU<$Wsy#{lC*&f~yy-3xM&JLK+s^`e1KMJw}~jNRC36adnIiV+yW%Lpc|ePy~7 z55c6*!HO(18tCz=EJEkessVNBwuY=JWh*vQG4Y9zk@|CMykS4xKl_UJXtv#S0-Oh< zz@j0W7g*c}q;Q;ZVhUYLO1SC287TI|bhmo*=95`c?b{zH&ceFvZT5S7s@{k*0Y~H52A4G2{XmsAJ?}g_dQ?q%eN!JOg9TeCwck1{8ZqW%1zPs zScGM9m2=u=7!#P10`UWU7e>Rs(L`}{oNfVNN?IOBS08A5O2x1EtQVT14B06saWA!D zds6K=M`+RFA3wFgTBLRz)z=>xHF|$0B>iouL5UY;Iql0L!{31} zS7-!LE!52oG3NT95}Dfc;mCd7iOWgK!wMq?Vpg{lN|ky+2l>UX+MvdD#$jhaWus+h zi`ilY2s9-?Dy5m5UvTprKxAWyzr}d=>eKT=Wprds^wUk7JLF&?zA^%!kYL2f@_n%QRKr0>#pnDP zi=4asH-}`pueb5Xbu@xM&Xgowb{J(aNb0S&(CZ;4!2lFC&!U-bY zIOxTGX4F?Sw)Azkzvm#tCMdxqABa5?xIBQF=!^y_ko+j8)I|NW0mTdiM;hXkZp7vO z(`mE`S^?#!wCd+bZJTVGN^Age9;O`=|1U;P#NqqWAI{MJBSl zMyo>{hSWruwM(?*AFd5)({Q`OhxGM#s1k9ZI{GylYwR7m5;JY6=s9eh0V%;ZjDi~I zt~1986^ViF+N0>oGia$iEMraZ6^woH=7|Z; z{6Z%tft~^G8@lP>!dZ)sgKbK;w@WilPc8)`-*i~`^W}UEBv7h{4q(*dKvk` ztu%9ice?$SdrIiYOYPK!3u!(+DTIqm*$cZtpL?L%MK$A(&$o&5T0E$CnjCJWS?SEs zO5ypQB0BQ+H(6y=7}-X9i(!1BXfTKSU&N6F_;rJugxU_nVSFDh83{O~1(02X5ji!? z%rJ+uB#6#RZWMy^?8RSip-$Q&19PyG;_9ccQwr0}dPx0_BRzy%h=w=NVS2(0Mb$Y` z2wX6%9&-pr4fYjFLd>N3kQ7zF{r9I1;qgUM?;y=j{oJ-0rX6E4nI$iz;W$8@{M_Sh z)e1LCj7>$lRF!}nge78YYB_@rg$D#Wb+3n)PsS%Hi0Zsm5XE4~qa)olH#ujXsBDtR z_eG2>4N~Co4f{?XIl`TrgifCTCfEkucBark1qjZ}C3Oj|kHPa&Ecr zEe;p&NETzQXlr2cl`C#rn#lF-gEVFKE5_YrWDh1oYj5{D$!D(>oKxHwP@I``aC$SN zFNFr%v2A<%3NPf#Vat!sc`@m4M_s6SIZ_$puEzK0 zI0kz`d9+0jgK?vgxpD*fUs{?;8c&#+ACQi7i!x-)LgG{I6>F)% zAf5(fo=^Yy+;a2=h6kN{hn-5cxm^k>aZXqExT{NRf*_TEgR!PTEp^O~qX95^5T0K2 z)GJo>(!n&n;jnx;HgTah0D=E$*8>W}i^W82hX`hoeLJ)m zjTN1JYvT7+bU&S(7>QRo(M?7_m&-OPHu*mj80wNcX9ZIzo>w9ztcR8cgCOK3qZu?l zJyHWUE?Sz;Eq^@`-&5h)!YF=Z%)-pZu)aE^xRFfD8D+@8^c}zB2Vq8$BC3KSu?a|X zel`*`epFl((lu1dQim-kR4300C`nzyjDO+qlwd_q8IlKy>9+{+-eJTl;j;wo!P$&b zIi&YYLwbN3CTfOr|5pvCt2`%v@2(cu5?YN9+j6grOto0m6xj||L6+H1^c`mY@Fq|V zkivvdB#w+pGUy23Yo{lvSg!Xl%d8WEkAP2}^)M^I)Aol98?eAc8N=yq?&+gt#_@(Q z99Ar-cM?vaKNI)F1GX+8&Hw3`uElar;j8v~l6C#5I#bG?)!Jo|GC0CQ252AUu*G~$A)<^pk`gNof zMGj6uRiBVZ+m{d$R!SMtDlR%m7RFc_Rp5)aNsqR+y;W9N@b)>;6K@`t!v7u2?eaX7 zJdISeLW*xsVSIv1>m9~;R`tVbuS^cfn+XCfBykSoN>XS*^DyO3-N5~RY~6TULYVM> z>vHdJq$LlLLF`P5djgbvIoU;7YRJjHkmb5cp(lN`K|!3&x$Ag~Om0cqa=Qi4yK{=TQAszUjLte)4Irp?AwIO?Yfa&Jc z^7PYWK4YlE@L~S=gFCXc(6lg~wI(vLyd~0}fk{Z_I9_e(C7kaGtl{dACawMtE1lLG ztreNlL2AEPIAnUqzX$}K4?%H@mK*{`C*_o}pdvu22XRT5W3}AF<*#Sx9uEuSMg3ob z+`x>4C*gLE{p<`I(4zrnSKNsR=Rs~kESdf7jAFd@RUv0g(j_!?0>W}SHqgoMC8V|V z?{ta}>~)0QxKc&^+M?N9b)K)>`+H3yG;B4z%|7(`UNW>|EmtI?kG*+S8hFhVkflFv z-BHTHBIVBETq1w}o^kky==(<*z%*DZqzBCw*<>#HiQIz}{u}O4_jw)F!)}>LCl(eY zGpa&wPFajU>_q>7#4gI%z-}sFb^2DgH<0b6fI@>4+ZkZ_s|=Wg569FcdK>Z?qA)}z z^^tUVs)t<)jSc5Mvv8qD1eP2kC~8&F6Jv`k9WDQNe+@!V%0bifK_z}0Sn-#r>Oh62 z&Ix0PCd2=^#AW-+OF-6-O|ahMX>hp!F4(!;E&F`mq%j@9pbxBiAXKb{h0XvpZTAlzzUI?~-@t}iGL>p$(VkO!wrrY9TIbOQMAmrc5 z7#b2Lq8unoh=Bg=cD9&k=J!xVL+8uCtpM%Cw+9^g2{`GWp6!aSoG2xp?Hcm^b*={Yo^k#S#>|qaNdAOi4rz?{A3gh6 z7eYk;W-q^=*sKf;g;^wx`V)dK-fP2WfPMA#VP9DX+&}Cq+AH%iM-8%rxdg#8FEiGqKU-+vMsSqqM|3=Q?fjf(}{Ffp;w;@d<;U=MERY}5v44i?ypmI02; zF&Xrc4XvPPskGWpmBp5dtXUzVd@E_#_ibfFFA4p3$b;z~hXskpDj{j8f;6M00ovB_ z%W04al!qS#Nf4(e2n{jCW5j~t2PS6Habzq}7m+2=QQx^0xSu#94M&sWp9Fyf=$3b8*5ptOqPhmbD3iU2*ZX< zY+|a`;cEnDb_y;{5{r?zSF^e@WZna4n?Y!VqwFL)aK0l7&%+3(Klgmot_y!u%K#;@&_jLOGTzIF zL0q{0bu$}MW~s>b-$TZj+CmGQLY9nwDX@bSgKIoJhJ#S?Rsgn=zu#>Vq`y<%cMCO% zoDdxFK1vbdNrCzw3w%bf6O<=Wh~@da&OcrT<0p0TYesbDrfZ11DNZ?-V4XM`vo)$f zDpl&$-fu<%WuPM!z6;`7f-=Eee&Fw$+7YDIsRDHlSD_fp>ZF2j<^Re*17(*CPTD&Q zY-KPQyw0shx4?|Weh?MD7396Yvdm1$7S2__R>{ibh`3mxZy=*PU_3CLSOjD`^h%)cHU`>0))W1mbNg2R_HIxURT&*6xG=1Q}2`>1013h85 z4u~^xG?uP_SlQI|thnQ8B0^y{MbH}WYy8|f$Uh!2b&?*J@Z(p-Al@gky?kT3_`0r! zAO(TBKE45F-A~tmnr_5Eszd%uC#Kw})`LJ#ra*m( zh}im&yp$(Kv0EWVd$CJlBY;yB={%jMNDd=dGZhm+2iLs1tne$GaNmpwP+n$>3=$Bp z;|7;6gp$$QrY}*)d5`CD9=mOrVvJ?I6}O;R%N2#Ll8I%H%XrlV3Fb0SKWJcQbBbO7 z(Ue;OfH%k;?bum_?IX%gF#%p>BW`@XEXGKw2GBXh+r3Gm0NgOPHT*13zD=xE!0dup z^5>O#55TF>I`~0W7jb|D5?@K)Uk9m>u?5r!3z`#{4x{hIXqE8Uj!I zPp>&_gds^M$aEDloy1un^0Q|;MSC@ieID%gJmlYq_E##;L>vS{6KK@#Be{o0jgn$C z@RpZC`a4ppLq}8p(bODOz=u_g%1yfCo~!V|O!xQhlZCQ1|4Z74 z?LyC$9==?3$^DodGClTGlUj`fFj9d2S zxeV*VDb6gm6DxsIGhn1rh}P=5Gg$sk?d`Yiz?z#E!SN71VN0imga);X&TRz(Q{ikq zZNC@~+pp;&w#chog7ng7Ge>OU=?+;pkYZ+_KAzrAH^L|gh;p?yHJmA^lzwyhB9s{X zETDl}*MewzGx`n^=@tnCS7em#IY_bUq%A5lq_GRXBOse*`K<6d9+eSQlYp?2jSWpB zfQ~r!J>xeQ>a8hIB^A9z{9Ec2M4RvQeq?FG2;rq%X~Xpx35_=oy5>W@{NDuA5~i*5 zqliHNbnR!IM%mo|58>_JbWM~x$E}bk;s12EKdHt^!jT@xdx5r4uoz$E&qZsxG`i#} zES3t|c=eDcam3R^$prYZrJ~P1glOh2Tm+(v6g(S|se4^cZXt0b-2<^kdf9=YF&y7s zT?ETJp;dU$KS&_PLS*?j#^P4m#3n>V)p(nbum<&XLCG!Z$S^bNWK?}f(`&+lG0%8j zwn`%jq5{#xt1wXkQhnD1$KBG(f)rNO`ylH*bawS~MI3td0y@+OR&Y>Bi&0idJ6}>+ zK&O7M2vn7(g8ONzfJG=ISyC+n3sJVU)k(+N5Hr=-kS&MtAfG(pqNswYVB%bE?f==R zg3Dk8EEhA|T0~EPoUusYg)FuDZechQgt@Phj#-`LpL&p@w((@Ya}G9_h2KM=5wrW- zXFjzO3T6r3bcVW z^W0WzUCzuh{vOBe)4HtwH>fajkK}CH#<+28sBG32pGhbJJkX*&qwM5NF9AKl{-3IN zkaPR7+5JUGZsE-NV|2{3)Jki~mnY#K&Q+QEkmEtp4eT-!=S;4st)|x=);vwv0lvL% zc}AYu>j+-mSlLgU`@*aZ@cbW!dT*Ru0iayBzMDMu)k!!qiOrtJW(k>7c{O4B-%H+2+Q`4hP%-T48;PIF=fsFms zf(+g~7yH!8Vk+sNL_ds_WK0T64(4fSG;r$-|B3WvBU$}gVJHi=7tB@mjttyu>usP7 z*+T^~&aXe8G|?PFvMn;4{C z9hWt3Y26U45Zy8?ptX?+vw&7TEfem#53q?}4z{?#qqjMUr-^hJSGZotu|01Vu>tTt z61&YW^#?_Ip<&pGH7e~)q%=)k2{@i07EgVZQ5pT}y%GkpD4WdpRz$=tjiBrwCM`t7Ks%7268^1pLg~%O zOw06fBNX54jf|Hdva=J^{J~cTq^S2wJw7VTB_M*JK?sPhS!K?j5|;7_*G!PgFB+VjQc+I?5b_|%;_)i{-@lKc(&c*Q`neILkGzl3Ei%@m_rsxzjtJGp$Es<3@z@0lwBvNRnb zT7_X$p`|fdu(XP5bB5J?(5BO@Hz#RHZK@_&Z`Js&yzh^0>vC@+QDDH$PMpMxFJ0zC zt)_VNe9=bfmvPHY3#cxPV$fnV1C;s=L?GNNIQ|hx1iYL4wx>dwM$N4>K646hVF}o< z;4Tte!oH6#Cnfje@iYdk5$pA@~-e?K~*hhHS+ zLhqAn*M&ywu4Z*1gH$?W(RC1-E%+HdtN$}PLE$HtBJh`k6u#)JFU+DvL3KWn{kuz= zH(k`eMRr-mr0rW5KPJ&Duz6(q?js)s<;Y;U!ecd;qysb%)Q)??n2Fh%!tU*3`b(8N-R$h!`Tj!D4V{ zFQm!CC8zIGVkAfZ+q&0)=`)CwJ4Aqcwjc`sEhGU5b!9%&?H{HcJB$>>i)_R=;yO>5bU-ajyW4 zR+gJ$OP6yw(5g3Gs{e#wLRZCt_!R^Fxg35>lIVz7PQXO-`QZ-3W zI9hy9lJU6WLmJZieGKtrVZww}!0382GMvhL0Z%~*$8XS8RxxyqF!si0rDITn6_7 z@_HDB!v)QMliyEpB`Es|%SC9b#UhJ>Tot%wFB{c=z5J=#BWd-D3GVx0{PJEyu>8O{ zU8;)2>J?b}cLf&nj&7rrtq|)gD1i`O{ZNV9u7b*Hf^7}gO-a>`?ep+SqB>O*WbksI z;P|39WiPExGEWgq3<~~hT+drRP^pa!NO{3@0*zM)-R(bPG>)&!w`DJTKxhmc958T_pQ%hyQ3~ zHDJru{8SQYN0E-vivJxKtuCCyLq!RgxXzVz9lRPX{P`;T%jXnG(Fd1$uue(?I$z^G zl*}Eg2pJy>n%(MfEPdvCPH;SX*D>}Pr4pM}rY`^@(9>Ip<5SpnD&}1{pRU2)S)lY^ zs!Z!gmqII^I3JkTi=wxkjP6S3OE+EQ6-_vB8?X$`kadZcNS;)f7|zPdFp{l+GH^x9r3zMiku<2Pf)(Y&3mY0b|QxuUM;3D z9%5@7%agP{Dnh&Dw-1en*h`1sV^7{@rCzS5>4G01Ftvs$0eu~W=T!sbH}J?E=CNuH zRK4giLB2{g|GXKe(u4meC6>XNeVHGG(>AszJE`f)#+rq{!Ic7a&8hK3pG;1yT$nut z;@yz~vU@qZW7#qQuWf8^dY0JC3Cmx^4#B9B|J9fc6&P`AZ-fA28hLItu1}ehc{=8n zhttv1HkKdK&?^VDFAU8=z72frJD*3V!IOD4o>;Ra9HU$>$DR4C*()+Odkz!+52OZ%ZKax(rbecttt|_=J z^TR<7!-DFew=!xzT;%U%>OCwUImyIGlo;4oqO76GeJkp$wfH&pFsQ(XYGzB(E21j0 zzrg}aFif&T%YqaEZ1yO$kgOm2su+(584a=v>aRcwrjQxGCTb$uJ$R+cx`_uS2h!m~ z-^&|VFR^-nH2BXTThKL1FY31)!z8ry2{6(eux2?BY_$0;odiHQG}U?ZV&0m9p}y%? zRX^I0%fgXpPLMn(fFw9u5p&{068!H1OPvf;`clVZA1SxE$Y*D`-KKHQV2L7fn(vv+5?nsc$d5lb`WlR*L_6S@zHB7ZE@t~sr-3&guWOQmwrDAlM;SQGAvSb?;XGqeu* zVY!ZUbOUf#Saf;f@EA^c?yw9BycNTqFfK$r=X*71byQ^KD>Q@5U?6qR;QM=Qm$Yx+ zsr&UZ&G@6OPE?c)t~CnZ-}u?9H8_~QaaSbB9|g~U$9fRQQ5Bpq#+|+l7^jsAw2Gvj z;O7trSj+^ZGiAt@cz54SkiA%S5GwSW$vh-xCKaW<)W z^nji$ksYkD>FXn3Yv|af9+t1;*X0+iw}p5YVS6#nK`Xy;Wt&K?kvm6MPIglQYBg{x zCFfj3b;!hAtSG|yeY}wrE~-&cR7_Q8+;q3#j7`kyMylWDYDL%Rn;r8GlyJo$#6dQe^50MU2JdU7eMhEalF-Yp-$H1(BQ99 zssGc$D}?_IY$qewzx<*d9`VD^dv(h|rxW?^;yGDy-ZnU;Bic|*G2cl!*rNEU+Hk3~HjCeYl&Pgf18HZu>c{FEclFe$;iEb~ z`bc(Io=&mEl?3ef(?lzrKE_BAjslTWuOTOz-eJZ_*1}rr-oQmMY#E+$kZ)G^k16KF zy(;Z$q4+M@ua|5nGY1PBlA)lVR-Dv|;#${LNKSo$i>qSi{!`kLu8g*zJ2^~z0@0UW zb)6=LPvrg_*5rR6#pDWqh0gW*&o=NyfM3^S^|AI|E{Kg{=?FHXYsb|5Z~wmwnNNz8 zr5v`kw5f9u3+Gfcr4k_0DT>EE5er3GONgDi?!oh=+YqZe6iZLpSB2a6wywdTH2n?V zEA48p3DNo=fp~QLTbo-Z>dpDDow#nt`gs@{(w9CUF`#xBjqiMrqGc?CWf^`wv0V>y z{ecx8LqNpd(19~P_4#`qFKoK9g^=FEFoePSJAr%eP%)OTn@0vd``U-2yM~o*uRmK} z>2puPkAJp;MPl_s>1MjZm2Udeo*zU7a=F&jp#G_G;+6I@#VHKECX%FPq4&k;5`i;6 zwS=UMKLha7A~`PT@4Dtp>jhBq=oQ(*8^(yn$;A%!~nJw}|ExzUww*+;4}iWfvd zwy|pX7mIK36>2NAgfP~qCDkgGuZW8ImP77aypUvgno##Ge#bw3s`W-2nb707O@?@2 z8&8X);N@}b7npTFa-?sVE;Z~?G4GlhqH3H{{6|5ZhnV#5H(p1Vfit@A=WNEgi>;ED z%|CE{8(N(TliuMI&wm;l-6ENulQee80WWpIc_YmvZT;Nl{CmMl=Iyvg+nS*p{?e1@ z{>73!ZIR|$7(c?sUw@I#C>&!}Wia}I)$%9$;a@=dzPQ+VYfCk?y4d-_5Sw{uDsdXk zz(cdr;g1m_YLcKf`6rk7@4bLOYe$JI{syg7oK386s^8S0-Z~s1h5Xy=kIX(oeD>YK zIlRQh*PCK^S3RnMF{D*~Ray*k-$y&r%1^3n?HhJkn z3FVB!@~3)56)P`U!Z8y)klkg9L^qR@VZZoNU=r#4?5X!cFTCK>z4{1`daq2_FP8GM zpHVF-uxlqjbo_G=S7FArm}CtC{)!D6Ag|4KGg^wk1cx^$6mrhIMn282K%BFey@ySd zvxIBXv876w1;|kjUUrlteo%<#eSqO8n;o)UNE-@D6HiCPi&%y0-)pnUg}~VVHj{0C zDiLZv9up+(6UJFNwe@mCBQM{$U~eO_l4z$`bRs&C)nlP!a0=CfbWIRU-fc9EqhTS9 zg&^tpG;L!jQ8~rtuRf)Jyy6`}zkp@;_h#keQ5=3(qz+BMTxc38QUk#q7BnOM8GYI@g9131dAV7qFE^ZT`-?S?R_!tSSKxO{L)STbIysf=N)91-IeZtQk~8P zK0_z=X7FrlpPbGvM$mb;@i(U)-`wr*j+Tp=;S0)@ZU6SgOV00WwRsxLWpaSAyvFHM z#OMNFK8U=(u~8Tc_I^j}L~thXzO`LF< zOiWZasa=6fReIg0yZOaBzb&!V4c0%1#crQhz5UqpCWzbXGWpqOS5ki@IbQ3xWnFCo zxLHVMS()%USGKK3f{t4xeX_eR5at5wl5%eMzGws}L zl~!p_Uy5J6(+NJ8)ZhzJZr#<4l$r-|SK??oO3Y~F)MaP&4}SlQ#%&W_1wWp^HA{wt zx}QC53DNi6AkX<6;5}N%v|@v_Y5%m6!ApENC5K1u$eC5c8e3v!I~}IKfx_QlW5-56 z=d70KUL-6r_KU2A**su4P%Gp$td+@d&Ww-mY8@tX?h*RQck(Ln5{K&EPm~#AWI7T@ z+NByr?_RX(iZ!Y7V&x@qGt=fY^)mrywSj#Nkcb51C;QpTyo>E0S7yCQtwLzR$IPi;U;@GO zeIilm+b#XWE$PgOuJDHbN3V{h>uq>9AE%v-<(3#_WOZr>S8U28#-vOlCfXX3(B1c5 z@AK}Z_KBH?a=#e^H6bp)gxRlcS(5gnPY$S=ey+7FO5d+8-jH&#(-R}9%Fo8sz`4vK zj=N|(td37ONF}PRZR(57*SUQ$P&Yir4!?Dh zt$5{CWE`$@)^*$3WWD@;mnddSjZ(_p;Ze+14sPTsiuD(NlM7oT{*}p&cUecSQJbxT zXZOdlq>1g8T{gH$V>{W`+*;-!|y_irXMO!+ZZ?}Epd!a(0C$#bv zt7)*^p2d8Kzui7Qk~0S-jXOtnq}>tMY1^{XtKAvbgbr)_IH}zgH#RZNZ8fbn7e&fr zlS;St(KatVeYq({hw|jdnr7O$&z25CQplur>ZjOPU;=LsYp=TOsI4oadG?ZV)g5_$nn&# z*#bZ5AY@%3>Fh)3_01J~#Xtw-j?ybU49_R8nzKnd{RG9s<#?1n&H--d3rvu@^mMv-OJsNjH|P%ZVivd^&tvoDr+EV)IRfL?PX@Wsfu=~r8m8}z}v#WwOpVYd-pFVGJ=EGKA)lHuS$|Y%d8u{S-kWLYm z3Wj%FF3hg4ha;0^^&tuDF<}|dm#Iiea4SLmr-(gDPM1gNS$Th_)>b|LZcgMWU1dK^ z+z{k!;#sc{RhqW$Ee5RTJd5 zN1nGvUVnzRdS;Fc6&WA-oZ?9<{ut>CMO`(IobO86P8!t+eU{(3isQn*wnFxP@Uu3; z9T^s)q)x3d!8Jo^$F2oBd@k-XYD#0xCrll=@S^hHS{@mqrlu5Pz>acmsw3-z`h=EeCK|e9u)wI34W!v97;O6ERI6vS< zn;f_8sGR;a8y8;`Np#Me&%~wOoHEl=2ubLYJj%8DWbN?E&k7S|{Efz(`Sl)CB?msM z(xIuDDcoIIHTx4Q7pbyzP_$nb>t~1!daOG6oDgZSE4lrLN(9Up8ih?z{Iro*sNGy^ zXWJstxT_Ic6VJ}<1w8cy?1BPIb_yAWj!V*2HGtP6vewNIMf2sc=bY0fDO(^T%B#}8 z0L8K(Y(X;_#LI|SQuQlAmeVK-j*`F=?DIVQwmWMhm1l~`L}rfx5MSBA zNGP_PZYM<^k--A)?RK0~2w~wQ=m?ox&x04%%A>|{mXADdaED|F-$G9Jb$)w#?}wph z7&;b(E!~J&trEJk6n$Ry<1Ln&;V2m{x;SLEgLo@$6g_YJm1D_{Mm}oP+q8G>>%#W0 z9T)CTXQi?({ULlXBNjL2QT$w@kalSz;^_*OdVv*>GoCo;F4>GB3Kzo`Wun%b z8iba$n_wTV&0TueribMxKTC-D}j_!A$u z<4`1tj3Yxntu7*UqhnC)U9_d5!cjFU7$%)WHql)215~WPFa=&*bFugTtb2mUWmkDk zryZ6`PRz?tT+;a5dC!q*6Y>FL6Jr1rVS`Q6X%Dfeq%b)XM?KDM8D3t&kDaA5?)kv(|xxPYls%5F63^`Nij1i z6RHWer-iW6gbHY_+K;iFK#e}gBQVEiPTrlOEvIPl6ys^+Cs*!4 z0h(mjh`K57>U@EaIRpJkN}6O&8F7f%u4zzVr2t>V>2jI1{sKl!n567}d<8x_oH-B8 z>ZlY?K-@Kx#kna)I5%rFHuzW;e@^O(rgYE{l2R8GiT|;@Ze>ri0{VdmMMT&Oy=s+) zV7kAPWhmM28RA1^on`hb%kH&ak*Id&B0U9o?DwqTiVvSq9C!;Lm_Hm-8czccQrrAM zd_60nAMly_3-{yD2}*Hk!eqAw-h*=*f4DkwC)tIHsMqps8Mm1+Luv<~q)k(`Ln?)V zi#KfRTbv8Mkkz2vcSDBf5Vu@IyIA4qIn1Ch*e-HQuL#wX^v`U4FJ6QNjrPBmbxs2# zJUNpg_!K(H9-Uh>W{p_wq;`GLryfdWZkuGTSmwifVkB2LMu~^tjwH%k z=VYWGpzS*_P>@uikm-=x=jN(iw^dGBV%# z4#;t^`>(VxZW*8gUmQvNX%(n%&vA4MVga!ani!- z2`7O!n*Q^e;Zu6p&db7}$J*)T$IDaiy9SIo)zFU4wRQ+EJipYA3#X#AX)_fhWbX$F zXed!{6J)YI!SuX*!GP(BJ|yp7*;D{KmQQ4jI1HhCit+uPI4NWkGcucNT#f@}yg!GZ z5NU=(5%{v>3Wh^-67vg{M!H7yw4~R}Z!j8US%&1TG=U?qqm4vlo;3P7!!~9qd4imK z04}BzE4Npkd*Yo@6i{aJV{sIvFvvw~Bfqn>f~>JS-8lj1`lB61f z`RD6cMCqsuw>A=9TUqOE9Wr7lAmV4AzaSphkle1W zTgo%RW>C|X5;DC47IzJhpYTYJyI%;sMVId5$}~oD%Xn79OXP1r^7;NS16H0NN_v>WRQ5UvXB^!VpXzahqR*DHy>z{9dh(rg)RA~FvlrV0?OG-3XZ*6stamz0Xx9>qJ z)UWOaU;T;pAEnoU9t{TMbwmvmg)Fje*Ftx^X$fIouC(N4te3*>(I8BVQuTVQI!(Og z(6D1QKDQ~{oYc`JcV*@>InQo4KDWyNCVoZ+5ptL-uR< z^-d(KZ8uX#*-{>!{7BtgdgSxy{rj&XSxU5t$yt4wxufP=WgRIEXT%c43W5i(%~`tX zS^1+b6 zP2oSykd~8~F3Fa@fv{VK$MnInK&CU!hW2VQ(}vxXnIWO-C^LMjLn6cR?z!3e3Qdh*F3OHnx?QZC-QBPzs>K+;3*2Ko>( zJkXku2Z~I7FPSO+K}cr03jqm>2n(V46!yENWTyKvkn`vc(VZ!F?MGLqV5h4w84BLD2%&J&dL`{X1ga~$xL$>Tv8mm-gpo$ zb>=}tsGrG9b9P+J%_VYWFvrPN#@s7ctOUW?xzA*#Idl=KNK?M?Swiy;L5R)SaZxvy z$Q8mIC(|0|&HKsBhbtkO$x<7WnbC*Q)#-iZWM%+lZRsQeghrKQ_g7_PoXJcc*qqFy z7uqf+K-ZbgbjY%qPH4GHZ$3cd$LY*XnTePMqOr>9OcIWq&SW_=$FC%yivhWFIy1Bi zlJTmaMNb~-Og0la3&bLPAp1;bI%HWOqqCHcHy)t&<8-E27vzEHS4d~F@}_j=#?c-G zBOQ>m4)v=y z`$kViL7HDDY`P1APE5E+0qc1UWvZLvK3XEi-!grRsLiLTlik#;6E17ztW zScs5BhaHJf`Egd$xF<<;|5ybAGn8PjoYizdljv@J6$sY(i?%Xw(7w?#=*Ecvtuw7@ zP)Mqqk@Xb1nc@I_Uz7TTr{v5OdIAon zFe3ZRYZ~N&XeQM1Z*FG;^nod~OfS45gAbn~DIP%s=v)y42J(rmqT-==8W>IhLB1q;%j|YAO&Ky}r2A z^t`661wD&tE5-<2XJXT#>&;Tr)0p0TfX0tAn_I4I{7Mp$NGFE|EVJp5r7?G%XJ*r( z4>Fs-qf?&QbjZ?})`Rz;oY~}y#JgTeA|Ki0Xsf9BUjewZLZOk!fVO?feL(t?@2Rne z^(Pv$hsTRIwDFS{71p8G${|+?#{J1XLm}&1%2r2cNx5sGiwJe1W;#01s`a+D@qlOt zjO<_?RnXaibu?ekmsm%mGD`T_`ABehyh~k2YfuT~l`oYt+*>M`8~dm=E++I<_E9Hh z&2&#kht>{4>jAPZ%%~8rGjQ*wr6iq13O$)XIY0vE1o{&V`s2Tqf%Lwy4u}t~1O^)7 z@@I4=ZPs`|v;(L7(UJHovaf9}`WnAhu7q-JRFcDl<6{@?N-&DDnP3%p*6e0|Y((xdhFQ+YkDZd>^x9 zqgwywa$dx@DwW-aWIdR$lDJS{(dn%Ay?w1f(Gdv^J0==1M(C*`9RPRn9bm?KZ zRBZE(SDkMIL?z~m5EiYy79cK5EQH$cOYUE&>T&WwEEG-b`Y8>i^Xyab(DS)cwa!|4 zhEK{b`rEpydFWH$S{g8n!j8+%Hr5~)HmVWbyL>0XT`Es5-0M=r6o78W=ut7XU{5vEC#i?YRM zsQ&Xz?JTYh7&S>sG{^n``HChzBh<4Z;fn7d+pEdCAZWn40GX2DI=rAs^pBpO8hYe8 zv?YPu^hPS=eP?Z=ulqm%-&lq$xel3pZx{3GC#jU$cdazi-v!~K@>JhkKL^T~Hf{h@KL*5|*Z)E1ZAe~Ua+)7s%e;>C-E zFRo#~3j#Vrvbx;oYvr%dBC}GU=uXeHC8fo^9ona~^j-4pR9|$Z{s2LrU+`|8M+@rP zHYpNbv?yoms7G0bUS0DHo0iHg1$A+6K$k>CdEm6%?DIiV7?gHBto+o&7%g3EZAoRy z^u}=;q}`(8n1Wc}XHhK(kX6Agw_cGHpe_z84WQQQq(ZYp6ETC) z*1dH*8(n9#8L=`{jU$kqHfW(Z8kbw`6q}TW2iL-jfLsv}XeI|WV!QL^+X%wDm&|mb ze`H-o`Uahe^*h5H@g8C&2cNlyzH`&w4ZER$3hJ+W+0_Swmz)$h#gz)1c-(on6uz@F zD^$j%PFPRKBmZ=ngA>uU5jC|-tKE{`UFBwm&_D5U!zTdHuY5so3p3ALv+trty~BYM ziMnJ%3`>VNkTfC{x7BTh8szR$XOPBrpb~Z!Wa%Yhy{mRRL`6h)rW;y%Ftk23Oc(kv zHI5j1x-hHy_t4ZnVHPgT_WeLGF%ey@8KO9+TqM@*qnFe*UPWsG(-^K>EBH?P=o>eu z-O~3x^lq`CRhk{?DD&%dZOWVzTBkzMHFd#*4A#$z`pf<`=3ViIXBxukT>o3;Nmna0gA5&!4a=`Y z-Io-~-u3SM@uFqzW@Em~_qRJ6BC?cNV|0A}g-YU5pPp5r!KMx48ydfiyZY3W{MtK4 z4Xk_?8g!S^`Mbs#Fd&tirrvT3(%4_5xZp3bZHeaows z6!+(ufE|o|p|CAg5F)@WNoRjJAatUjCZfs`7uv1N!SH4cB!$kYu7wW>h<+sb#WgXa z$QmOetf7%efvtD7lkC%UzB)>sR`m+j#)7!=y`21!s`zxF7=L6JUzIs?&xCY!Nt}vS zk1e(Qj0!Ck!rM&((7_-Q<29e39+k!1U>b(HD(@I-2m*x52LfT2JP||vg!HP-p?hh0 zAaxb33lkn}F)CF`BMvysJZnDvq;47KHAi4x?KTT2}jnRJ9yxToU3$8PGe$dJ~<0 z)`Uf)vsG3mW9yw_{i0vI2SnF0tnUFCqL@a}__~zXs5(F4#Q~WXOr~PQq5F;YIV3<< z-jN7Myk)T6+CN);(VA#YkL<}cc@b%RH(a1Hj{D_cJ_h^|FW7+5b@|zuMxpCgNEZG9 zGF^7U2ALhaUp+%pe@i5pMnEp{pzMQ4=eYGY4yrnwk%up;T1MA~F5b22hD%xe?M+L& zhdw4qzNAT|!i*fBW((-Ky9H8{fLI?Lqe9dBwB2M&C`7XGm$9Zje?|HFV=IWC+k$-MFfl5*9)4JKZM8? zBoPr?C1eSzuxL(KaD|LF?vQl>geMd0&P=TPbtW!eTP5Hi$PMb__0@vd^yJAvIb!*B z2CgY5b|T%>H9%{kF?GIF${PM&^TIZ(kRlqe9B%im3zlDjF!@`M)^^&>B)iNT+vGEyu z_!%ZPB=Ii^7V$<4sxgavf&oaqUy>e_!HZ1&f@I>@9G;r;o}6oM`v&I&P$X7fKg60^eU^pFR;vqBhR3eh!h^NEpo zXG+{XL#7b2so<}pqt}mzf-R4;WSw05x$9xhSO7{-!#B&fnMT+F$iQzI3gtr$c1O7N zMeoF2JR8FYa;tM8ce)O(NYML30Y2(bD4(4pUt;`0kQ>JG`F-An>Ym=olo}m51MH}r;iSoCK z76&lk!lmm*a_PnK;70^zA^~8H8cBKWU>ZN!4=G%BQz>NbdE=}n5|=6oawZy`bIck~ zQ2!AV7fYKnafz_K#zbgk01krOpgbiQ-Si?-d7Y zn`wg^uwnc#{YGGBlHbTgo3q1r!dcp|YZ18u*$JsCJKe7^ac-=9!82Q={+x+JGIt5+ zi3ET(Y9ueOd^eVz?)YphPQS>+fy|K84Q!t9#sh>dfG{Ldc@L9G;uwd}2oO0UB%fzu zY*aI*UywxF4}3@>-Q;~RBOq5Gdzp!$@d(XdVq!3GATblzFPS9*kO=svH;Bi7F9Y4K zMWkm2Iz&mD!yfkQ&7_i`nFuWscpZ}p-I|oYmw_NsO5#GN9Erd|@Vgk;uQwA)*IUzF zk|J^ivJ>iu1pX2O-4=ph9!mWw0}V3=EC;Hxl?&1_qM`5;J+a z)JQ-!n+kZNAo;yabbA(&o|)*7txlZImLlGGg65Bc`OZXH6o>ECRkANOuuA^)67Tmg z(bmcSowh2rl}1Ej4&db_-lv#oE0nxGSvg8WK*{TqI(1{W@go2;kvK397QV{Bbw+9k z%8?pEt^=8AQIjB-LZb`ZT4$iayYLYMdkiyhIign?XiHuP4uagEKK@#@0;W8fC!5H= z&OBQm2Rd5}d*cy$Kg{(a^ZGcMr?rCIH;zD0Bo55%PXAU0%Eg-r>2DZlkU7&%=bp1Q zo}m4%GYx(Wxsk#+HuTI_1e&q%UV@Yc_nP(&|0+|b4%N0zw7sEguk9|nb)I!b58m|_ z**dmv|8|7y6bo|ggV96Imi!v;^@v=Ty{EaOqrWp8`-u1KGv1SiLq;$ggAq(Yd^k6z z5ATcu?Vkn9e#*QRgJt&?WOb9}EgM_YdOHEw z1Ds@e&JeVaEx=O>I7?US?`QOS6Hr?;RjMeoWvYlL*VN<&j;K%a zj?CoIzV2CB;{lpK-e%7= zoX&wSkY1BQZ#+W%T`7b{8Us~l{d<3|#I%L?1ZE}?AT+8ZUtprEvVG?lRk?Raq0=>p zoHrh!o(PY9cbkti`o23pXrP^#sELGKW9EU{O#5R3H;mxZ4D?2gdbVQf2?T-@On_0Qz-{RoOz4QRrpp1ngKO%%QSKR zku|mbe$`z~vkmrzOD>!ZOmM{3r8qF*kjtLYeL;2q-#?1o`3(J|Ih#OumAg>|NFnVmTTvtrM+;ON2=yZrE$u&e zHaQCIk6*Yei2^q@0f|6=qB(n-zQT5f6H@uEaWO zZjHpKrU%|5L}`eXcxRCD&gh&|*1AL1hm(2F%2l`lxuf+T)lyUD(a%zidHQ%MsC7H| z2vY>EOmL;<^l^FJE6k%Og$K{8m3a$tN2z|14LSmwk*7l{kO`R(7zKb;eJ+&D$|go+LtFcSg&49)4|Utk@*dd$SSr*jAE0s=lMU4pJV zv+n8T$+`ep50uP`qDs-BQu)rN@A7q%xPwZi!mpVT-UtnEyY+m6 zuDdE{2^g7jWb{EQ$305Xax)Jy`0!yV4L8`)5r!ouQ!jgadUh$IJ)|-TGb2NKcy09A zkZ!j7lqt#`z6&k{oO{R327d`A_3cm~kAXAe^Nyl1)W29HabK@}DtQ_A=v(ZPTy z3tyNDbipgMTt0yY>1sOAO9aFqlA#EkZY%S9Bx5|9)IMak(=|j`mF?AsZ4H!Dms5{?R*>Psg#4x5T8uW zgn%e2Am4LI zfTZvSz$R?10pNCnC#{hX+D~5-l_5}!J>}J=J9{iqchfJrfohJZgY-?cMLngv_kJz0gG(eDJCCtzc(#|qO1G#$A92&{pl6vhvbPj+H(r53P zG?njs7)hUbFn5wr9=)AxLx5mGXh;vE!n1nIgtTojse~h{Haw;~=@yM@nMng_SS8(I zdP*PIYSLyJ*t#+VjzZs5sM-?OO69OE69tvkh_E=f)zhyTq@5dFD1xsl)3#pWWop&z z%0;MNqqns`ZaIh_kooGY)}FQGUM4k+P%+jhYmPu5oyx?P-dX1XNy;dw z02L>`ds37p^{b;g(Kp^J>Ku*PSV=Ku;S#l%$1$n6Bd`OsZjhdvwV<(^BSAD&S51Tt znFi4C^`s^=e5&D4CK|v!lFHHN@jZgBm^6m%j>_x&RKzal6SqmF>ASmDE`yHPrNcc* zHGH^$sGsM$0AJA51@59L6g*1TIe49}m+(wocj3LddOMc{e&vO z33PRVqv#q1XVR2T-Az|Zc%-hn;G7|^Erc)JMLjwe!g^~vTqqOF0IBr4Q{~7NBs}|d zrYi3JnLe3|XiDdPq^YKRo2J0-lbTq%=W50vLSix82{yz$WhXNi&a@yv&=vRnOrzXE zG`({-63XemrjLVpq+w{%RS~$+^68OW6`^-ta;I_8A_GNoUVk}BsRI|t^ED$8pddsf z5g;_GB=XwV?6=fr^J_4rBem1GHC%0@f3(aoL;y*uNU#T0W1srd$2C3-Dx)b}TcOpw|TCkw`m3|?9 zfQ$d;I-sg$8Q)(ieStkzm(d@&^aZU;I!iD}37-#@k=p^s5uoYQYIL8(65dpz` zapwbjqFd)mzUs+E;!$NH)Sk{@#^`&2|UXd4A7LLakl%f$wn@6~kLM#muU#5yE!XFI6e za+CEA`*ya2#uEodR%8W2qe}7xJLqgQL-i9js?k%z46V}+a#!zU2P0&iIN7Ma)Y_`Z zAF#1eS;)l3raP4bPYkHSp&*GgV?z=}Y~_`&v2g2()fD+17E%xAJ|IN;jfDXM3wbPe z57r$76ao9pQiE7&HXZe;GXuvvb;V-h#z7d8maKa%hs7#sN zKQdcrgl_n(`3PwzPFslS)mX^WZ~Wew`Eg|lbnhgj-)0orw+_wMS*R21_w#CamXAR6W^aWG#{{#s~@%75k~V$_wqPcNOz1S3jVs!YPCiqHajFNh4ex1vahu2x%vb z(5^zhG8^ei;lxG&bPh{+0+O~5HaZ|&bCTc4M!qUKvyrPQF^a%xGaGlAnT-IvQIPy@rT!cnsT&6yxvNa6pTlI>~B!p)q*kfN;%73_znsvR|!aLQnQX8W(#AiD%C%$HB(c^dfF&BcQ-W z5C)#1`2e94CmZ=*+FJxgLJwQ?uXaQW6u9i#agbcNn0)g-z6fy9h)5zpXjDn+t6Q>J zHslM2h9Iapas9Swo$M~iP=^E!b$9}#8OTUj)Vm4IJ7k?`IfAoiR_eu9A}0OYS*e}m zI;I#0`k~YS<~hZDUa6TuS*f{;S*asr8a&@9wNEid=<|s+A0Tw%ba)_I_l&Z5<4R%x zkIe5Zi>t#Bs$e-Fq8CU62#qSq{h~tO19D-Kcyla1i5=OHLlU1p)k6{;GD&no6FYC- zA?w5kk_fv9!3!pAXS--5W(FZv4)nt=0BgtKcE`{#X2oR6QJfJECi34GTZii|Terl^G4WT}itVdNhwnc5b zc`8aeX&h9=wK-|=-6O1^G9}%d*Q0*j5T`0eRz<-`WPA7HcU76C9pFhB}rrh zoh7mAhRFnF5e`t0L=XnCL-PrePP`+DQ#?pk1)zTB11xdc)DwOB%Qw`SulfLTh|b*E2kCsKFd{={AGpN<5zjdg zsiPMfc7%66KHDF`!1JTW7k<1`(+@MQ~QNVfR0bJIrUiG81Bg!1@1$K+~&ne#%{{TUiRHW3A z`tDL^4w)nBvpEsmI+MeQhz^*02sMEN2|Y3o(^SozP*+Dds;;u|(E=h2cg=@O?A9S5 zD$Py=z}i&}fO}|4BJLxU$lOcQGxI=A7tKp`J^^{f6pI@L`T6etmkSx3w1|i&7sM_= z5IcBtrt!WX(XJcb)IOS-ilG}B08b1PE zB1c9dKxkA+5P*L{mNWv+ujlX#H^(QUxr=I2B!-qCiL`+*L8QKxkA+KF>yeeP*L{F|jd08n9Ht1U=ozY?Q7h zHYNz20O1kCY;+hP#4sCGMU64ccC{mh+2mSPge37(LYCoi1ww;L(Ce!kS$aKVm`#oj z#DFEeQoP9kl{1DJAdO)JI65VeH}5(deMQ86BJyKaQ0h7>Jw6d=TxoDcy^Z{3k1cSw1- zr0Ow?5LBU$?j?s_$hzbZCNn;VFymOf7r|_e*G3_P*=UDF3SkBW;@dp7uSma+7$zxk zi<;6z5nY)Y-Q3fIy0uYq2(yiPgfI!oA0hxj2bCn3=wJb3DWu!AH^@>7a?3}Zj1qNbe!Z8UsA)7_H)Wy*mC?b zGzfxE`$Zvs3C|@2E8*WHsGRZ303m+qgchvy<^xoJ9KUR1rT8T&L5g3pZA_BLHa3b? z09f#h#DQ_dFXgo_v2m<3e%WLN5XFvOdBiW-(q>5n6eJOZLF~|cg4U1Ym+EMR_@y~x z7R3mN20F|=3rIiWm*yOLPz4U8#a-ZIT3`lVsK;*9PxY_`Tv-nR1w^AnaETpJui1&< z&={XlUo}Q?)T52D9)~OtH&5q9k&l_A!&dW11p zqJCoxsi=1u<1RSr>(Lo_sv(Bs-1{JUsV-EAUYaWwkY;iTs(OSkBO)qbt|7Dp&Lh;w zyi3zGb3k1iJM;(&+pi;fX|Ap-KHOn94gpbN4pfSG%c=oz4NXZJzNdWa!L>9!Gw;)M z(LB_^sQGIA5KLH+W0%CG7`tqJ z=GbMu?<00u@0DYh0gzColL!zRRT6paYn~ByoLTIWnmb~b^vWZ4NxeE^mkwF%(g`h4 z>CFcSo%kSj2{s~BX(hwn1jId-5U_ve zjjg)WOF2goAgTEOKn+)1I8<;|K+$~}+*O5cGVKZSPF&eXzxb4YeidFgEwar$xWQ##=I7-@|uu7kA=DfL>#x@t?YSXK8fEJ5l0_QGBh$M!(Lm znSVAT8;zvQ#1Z`DqdDPm06s2XXW{6OL}TF?&^TjZfCj=3-53oBoQS-?bj}VVWYFs@ za=&;Wo~-Lq#&yl2ajsB7%V^(!kh7Tv$bMu-Y`F)MV0RP1iL%j1OFsnEW{4x@CP z3jJo$y~d%?e%Y{oF#zMq&)KN=oL8K;DU# zLqK&VX?%c{6xxA>bRkGogTWE}tcOAa@NxMn3;ESqp{09?g$dG<;Yyek8k~r{uWuCE zp$}R3tmh_+)$@hSLOvGjLgRpn)dS2Vi4QQ6Bt9Lcm@zR`%49x3O&aci4^&SYevIv_ zu8^djo^M)7<>e!i$R$W`?IFS}tNd+p4aM^@Lk6g6ULcHFJ&ZtveEhq*uct_a(U|H% zF1Z&(nLjo&Cw z64|6cJ4}l(+AM|rl-0s&*|b=Lf#B7{`t;;sTEbVujs)H~^dVD&X#rudBWONB^Ig+o zGZusyb6Wgj1)L``FMhy6na_OnWPoai&555ERm@Z0(>E?-PCF;Kz^|df`S)0e^^?zL z(1Zk8C-O#~Pq|sCMwH ze1shOkcGyNnVkOc#Q@sj^n+*W!`sj6P-Fn(aQZ*5$iZ6;-#89MPS6inXimQqnuqVr z2WYeo&q7^khA;>Kh&5KLUywpwK_(X3Ix}!$yyaJWqsY!e z3xwD@(}X-i)`^k>Atwtp?h(JZAJHU@ofyxqsK^@gaE=>b1@3+e3+)>%;^CZd2>jCM zNrtXdkv-yJBNU(ySoraUH-mB>|N0OA{Il>Mp8wVTOd}ME9CQ^BUw89w|9iU2=1S@5?hu$Oo?M$Gf}l&`T=^UvadPi2?FHj8H|oU9^)uG4Z~SH7)>SB1pJ%sC=D)_kOd+y)7_j3=9y~xI&m9Wkh6rKbE)=`hbB{Nq>a}ZYkHH#{eKv zbWcGN!g8%c2>GZ+T;SgQSl|NiQJTjBHx2Bk7P$OLch>cCoeSIusZ0{#A*S?g#{%~r zZx*9J{IN97J;v`h-@+djQsgv(7gyVkKZ_qYFS?uXzKA{5x9$) zKLL7))iy-ecw<%_@;hVn-&vo!niT0tAt> z$=xAL?#{$HPwftn^fViPC8XKV=?|k*$^%1-~f}WdRbK z#XUe0AOuKk>s^3!UJ3!McB}~!^g)D4?Y~EuWF8L;1kjF&{R0NdJRbSo)50_md_KZt z6T36eW^rd=fWR%A*xzBGGrk||(ge*9Cia~rQ0ET+UIUsLwmV87%o={myb-)}0FXe; zJztPOoev@debz8WL`b=%Gf;-sA%Q+?m;^@1`mmw|zGa|zLg9M>I7ir-3c=<>B-P8Y zpZy3n18^B1DcJmbIBYyH7sxpkAPqLFJM}ZEg?AIAy}yYyCrDz==1zS$4muy1CD8dh z2r__nOz0m7vdrI6?q{|HPVi|<;B%1+vd!Ku$N_@X+Jyd&ARC>{-rjnE=KB-6ExaMf zSelz4zgepv4Ai;Ve$Fhn2Kb2FUzSr_sk@y1aHaku2I{077-%!MGteRHLt3eSCbrV( zz%pHc6=Ey@lg3f122uX!aBpzq&rk*bF4gW+?9c$esG-Ez;jVXz9Txgxw?H56sS2UB zlE*4+)OvaFRGayGMvgA>2ju8tgzOfpaz+>V%aSRQuR8*cw#~|eaREZKENs~VgpFOt zW-N<@@7;1F+yEPjBL;a4Mcp|PZh$pt1fPzC`$jBh^loP)JVHN+K{}(2ub z;o|EX*8(*4f;Ulxu(k+$2^})Q^xa!O+e=txQU&koIUH}c7m5JKoq#QG=rWQr6W{Q2 z=lvfB+=oQ}+SWp2w27}XIzYPF!zJ1wlV~S2@%82%`hbP)T71x^Eje&S%aGM+&;Nrg zx&P}yChen5$m2d3Q3T}T82-(zc0_3x-~HL>ng$7fJ#+TOjTZQZ&%C(#k&Dh@Fj8qF zJ0nBdrQ6UBg!)=@y73ml;;%YupEP4C=(i>sfT_8p}0Z((tc;8%h^-h=GXLsj6ZoO))0u! zkNn9jDEhWbcb;z)UnEFk)u`JYAuaX9BOr%sx0Y5V?zKB3lW!|cWCmH|4yiGb@x<3m z>q3#Q(Ox#K-zm(@Oi>8#V&kJ47;*9!8@psKI1WItjL0OfkV)(r>2w!wkl@nhA?4*6 z&)$L}l*XlMg02)P`0v`}0Q9Z2`%uZ!`H)aTo&irp0MIOcLx!o1vVxe?i?b#a4q^ml zF)jdkLGUrc#M90LV8TL-FDpq@fFO5Dn4zZU)J=wIIQX_t6LcDm(vmjNc#IlVM!6j& zh@iHT?nOv7lm=yHr6rE`thCJathEtRF^-T*dck$3t`F3SnH7l!s2+%N2I4QnPKkd> zh^XZ38?^}_T@eup6ruzajen{b-&d9M_9p2!nh;gEaT&F#%l$Y8B?%KD5HC@?h=^+5 z*P*NTb?WN?|oQF9q1FUnskOor6$b^5cH2mp=B*)1|Cr1QVogF zA#2_tm0@a%%B2TEr#`42K^^F;@1B&#dDGLiQ05WnxPMoV!DUB(9u95{5r^;NS^)pZHN{u} zELgNmp>_*7kyOET@y`R8N_(%at*Q>Bbms=)vi7xW|&-1IsvH)1>3M6%! zfS2%-g2Lf(11#4Kg7)GfNj#=o?N1e7m|U-|)%v zwgZG7D4E$l&N#dDeaJo&C+B$2+~}~3JqjxT6KAqb`)kriz1<(OPsJ!ADr$j!1{wQQ zXt|#%Y8MS`zNn` zg@yE_6wfjHM}3@GfvK1CKA@g7KS8RB+|_y~eWlJGDjfRot_9>)e#FFJ0bw-zLO4xL zngdhBHX6;H8a2M(FRo4K$!jMo_zn}_vw}`2J}*bbA;+^9~NjeIN_b8t^bc%EPzz@I4lK58kzh zw3L|U3-T(?eZgqh)O_xp%o={aZwF&@LLjeuExdrcH_Q(58YlaK!Jav^PERI4>dCxg z2Se))Ss#)egc2L`RA>Er-zqWme($7@_<3l2ZcHEk0`pvX?el)3yz88Z9l}KHbmp~q z>j6R^PUV#q8Ljf-B97LEX%RpS))C#|=0aaq`Mn7x|`1bz_l#EaK>u zX4e3{S;ZM-t2m?cHJh~_AoSr}#@)Ak9_8~WWwy)sqtXGE+W+{E|NbTM(Az|4KgwEv zM2K6L_qVDwe&0e$c=l;MV}94Kb&6eWg^{TtulbB{CjgM(=N=Wk4Uoi8VKS{3S|{R zs=n%?>lgwuC?ZC$8bwsk0oW)f(n6`BVMqAJmxN6D@TZ-kFXziA`Q^e_X5W<05>0c4 zDldMXGA2H9=!j@17xlRwYje}6(krF>R)7{I4gQLR6hj&U4cSl>A>DSw!!!lbqOde7 z`p_-AhiF)ewElc0$JuCH8jvDgC~_%Agm9fY4Fm_YXdsHTPApsp)a5?BNNA8ZZ&1^^ zzSP!L^mC^5v@PXUwU6dNoANZV29WB&pzCy87`_uysT5%lAx9u(Mr49WE3J$?Ox-OC z^q`AelF*ONUl9~zbiQac=nf$(%2Ys91;_J`tfk|TmsK-TD0vo%0C>BF%Rsw452+0o zWS-ug^@6_Y9#MCk7yZSUu@5zIb{EzH6PtlDK`vYYQV~?b3|(Ywqcqc?+%3sG^k9~ zq-%OzrHTx*Hbg`^Aw#~Lwz@{u;Fs5^J`b`q$8J1T zUc9m%x>Ukts2S1<`X)9JLSQct4lF94xAqg-9AGnP<}sK%$~+GOy9=fn!r>nEhat{E zm>@++b&&_6B#mVja{50)m*jaOp+Vj}AV{-}>WDJWoluoh&ENraaJNRR=CixC7-U5tcO2@RP*s}B@}UfiUh7wSm`-BEAL)yn|WK=s*zmWo>!0r68J z5fE!voSPuc>Hr0aS0^cGg*s9}bDR^`t9wRlpw&D09)$)zL=de2sQ{W=5g~OeT$th7 zxWt?P<9Y!n$#lmYDHkGhw_FV)q{?cpTZFKpbwc%tj!)&ai@0k` zKXJib&|wAAZ;6MyR||wKTS;Wp%~3G7)^$J~hEoZReY~n>Z-Nc@fO*Q797)^W8OnbuM^feQoy=fR}GFVFvZBoa24~Q z)&W@ul<;I-)59^wDICRkhjmg#=&EunDUUUak^_7k~Rq_nlon!Klw~u zd|ZIgoDzIq`smdwNguf&S&RZwpr&0_*^w%n?IW2jA-!#ftOH7TvJTQmnmwbS05DNv z4=GCDkeb60_<)5b($4cwOP{k45<)#(NsI!bvNrT~*oaIp=N%S8vLj?2$ShQCZ2O*) zgB5)Z$r}I`%2l05pjUO#e^&O0Zrn3uK(|Oz6Yrg0`C8&;Mm3Ci8>p&Ba08-IUf92g zs18c@C@C-Z)TSIj^U(UtJ{bj>d6x)FG*vb80~{~kX6A!=g?}mfmAvR?vZY ztO8Smc>MFpYdA3P*}%0`IUQNDW5;cvBW44Q3=UstJ3#e^4ve#J^m%AojwR{i;FPJa z1EQ~i=kAPq!N%0;0@v1$M*~*vWpV!1bdU*uxBA@y4s=xOn45Vp_b> zf)EO>;V`IokB=L0EZ+2$uPyM8#hb)ZV9%8`$KtK+dHc-J5@KsGC$p8Bw;iDm7H?xN zimSFw0r@ZH>4=uw-kriN5t)3q9Cx5i8wnqdf2B`MD^46b6(Dq>(}n=f zUcLt%y`pPl=wxfHy3lA+fuvTf4Gh3Jd?(T4P;_4vB}4+ifrUTuyls$)u+Ai8O*WI_ZPymd#=1&}Ed`D!t`0<9zH&NpMxHDr&f z%a(AyZR|j#;HFYVgmw}bLf4emriX1CUFlWmBAC|o5CL7I(&(O-cIoc=MsYLhPu-fX zZxRvXPZ$DB$|y0=47qDY#EW1~+!@jAlM^99komoNP) zt|j?=Rnhpbahb{(t&AwYUJxU?;EEK1Xa}#lXhbIEQuyjQxtYeHs!13pyiqBbUd!?j zAwA|rAEcK9w)}FUmR~&0|GEgS>fz^eSL#Y6x$(oK6xgF8b9~I^T*E0Hbj%%9}~&ER6MugMiE| z73u(FhU^mEkhP-d8DP?BL?*$HsXC;*t3sI~JVt%&q$`8>qeOk8>{E+6*M{no=_MgG z%AzBt-+XadvH^6*Bi}q25H1*ys1yk;Z|SpX0$->$qqgvUbxEV>s=3*t){&8^4(z3RijK-I!X|jM$zEuJ>Aed;)L8C zY}&~~Q<4M{)MnE32&p~bdjZ=4E#3PN2)Fgins-RmAVR7veC6j%Dn-4Q%&;jQ4dm)s zJ9`)TiIB1olN3!reCgkinZEM<*Rtj8Fa22?+-p2eJgWj+9N=cbi1F-YziOVl0xGaAgE{IiJ2T*h*_qyI?q zQKE}UmU{Q-hSGJF?#_xu86XmG_A&Wp4}j=R0p=AqIuPDvU3FYk(YB^zXpoc`U_d}% z=x&B?7`kETbm)|B>5%RiL=dIBRJuXB1O%i*5f$F(z4zUB?>qmTbJpJ9x7S{K?^D0E z*0JI@P@EsbgT@$*#cVmE{8H-R@KU18*y~Ud&ZII*e^slld91rD$g+D}FJ@31#T5h- zP_(5>Eue(Qj+5NlMrEcI$oV=M!0DU{3^WK?3FhlY2v`m~Cz6hk-xGvX+tt)u!C%9; zH`2~F8ks#y3&*=8JtSo04Qx=4axf0pyg;H|E|=i^mFI0G;fF`nSg@*i;`_|eIlu1% zX8T(R1xS}@j+|27^5X?i4GOK&CsL7|dKFI@jpeN}tPp4e=RsXZ2da*r$UzUIJwwvy z(5i_qBzOS%mPs`a2~jg-xh<}8^VBhCEIc_`&}e3rKjH}Sll5vCBWbe_$0sa^w}^t? zty2roJUFd;?y zg(hb(8$TXt)Uowbx;{ivl{Ii2j1 zQzP2mSFUwMD@-UjF_(*c)NJ47PxW62v4^nu9bZTZ0|+Hquc6nnP#FK zaI^gGpT2!HUJ{6j{d(0A?d0Hj`|!!}l=StnHhTf`Ik_@c9Zw&fr8d^k9N{k2J9qRV z<`pFT*wqVh$(q38EJ)1#g0-k73!Z=c9K61y#UX3C?$}xHsi^tjed%}8b+|>kyxa9k zcl_H6rxpV)jw^~Y*xHfGBlf1%)vj|)Q_6{CiB~cf4k8N^N)+;AH_mSZ-{u&uym({# za5Tte5wIjYZ{i)EdJV%!y- z;=TU3yYf@@Y2Hz%d5W7ii>8sT)A}#IV29M(CE5pSo~8Lrvb;2}flBye%;|uaK<~Ky zGBAovOC+6g$zMZTV7R$#7;XOP4zO2S&IjiKKXjM(>GJ2LUz^=>QsFsNCh8M)A?oR# zXSt45Bb*3+!{?gnml*|RQ-oBhNS~DAts0wL;i;VPackL{_%w~q=+nz}Pdg;;(V3^P zq#~@wScP&)bbg9e55+FsX|%u$`Wwyo@S7fBXbAnN33?~zHP8IieG?Kco3Zz((#I=S zgJWZvrrG_$fPnP$jPyMA$8~Z`o4Onf8v&{D4$9`O7zS0E1kpb~)vQ!$G0><};pvT6 z@}>)Iq2UW+n6&CQXzcB!Gu1^Dmhq&b(lhb$Ue^1ll*FP*J;rj^;#D6l`q=l32pyiW zt56#htVZz3A#EVdFeo5opV5hm4%Eo-G!&9`&efAn-T=|mK6ObMe$8=_*{5ScvzGR? z;8XD-X?g;mFx4OcoEQj}^<3YV{m=BWqVxm#*pBx*@YWbGOr z2C{tWN;T!uV=`9QXNYm{ZYT$joqqCQ%PMUj!4-yv>S1Um{4(bwmB?2XG#~vrTKkaJ z|NaC@`@Hg*Lq}P2LckFRoQ3KXxB5^cQRGn?un7If7P)B9>_>;ZOth*dA|0vZqi3V? zde<+a;ajJLri1v=Sf)iBG>ukzoTXg9-A(}$bimL9c-SFOpP=(o_YDKMEmkw!eLb`-CKD8+IGg1hHp z#$V2ZXxd;=w(rzM7-e=lxlRW=h-V9OLX(eK)rh&j<3xRr_N)|qXbTUj)J$bqGC1N8 zjiB)#!cKb<2doMfblPBx7X;<_CI0$+g8Y?nZg79&oc0^oqJR}S>ylDdoptfEgAta_ zx525>HOqm@BtLxJK*q1oZ>ZIozP>5sPc>!AEI(&mub|KSQM~;E{ydUhb%8IeUIVt; zY+4J?8Urdd!yX%_U#6$Iav?-SW0|Q@H}+b~N`YUr7pNDbI5T}|g<{v_bx_`^?*g-n zCO)lOagGn4AgZsl^lB!q`fu@{;S|@EpAxVac>Ty&AL^OWXRnq>JW1s+8NJQje--L8 zC%5qCo$Uc#s~GW!_MPRqUpv#bhHZObJT1Jps8lZ@zg>tZEVFFvFt!`w@GNE0{Re}FV^XEKyicRoEuZhWDxx+J-J*)V`q?6<6Ytte*hX)>zcs(OB;txy5O1gK z!X5-VTYepJcI0;>XLCP{RIBcMMvKDAvg!#`k1EP+?9Fji{k#v6b415hlmA5a3Y8ts z0U6<|2pVH5tk;!ajWNQ$%x<#iINw>kizx(~2Zxq}N>Ou)U_9yFKIMZZ14P&rwZ&;v zVaO=9(Dun~f{_6H*Kg0AG(lYlk|@`TQqjA^8?`oa6pTkvZ;8FJ?Ke_wR zQ&p?gmcdtRkluXnguq|v)cp{wSJqd_s8$^r!HdqnE+G_27_9kLWSOPOVL|y&yvh*5OMpu77oC7)wGrikE zd7Q(d6XY~JUv8=>@TN0c=z%T{#Kw(GbC@m2p=E%{e&qZt>O!`5pLTWE#*_%YO*_BK zQJB(7$V^2-T{04$iER{UtCL?~u7YEkjC8@1>6EXXT8wxRnBfzl_PdWsO8H<#KEM;Vn_kS0_fsapH(!47UxDjyGLTlv|?e%lhZW z7X7E*2ykh59rjlRxXfqWvY@fazn@+#Y(q8aILUVZQIB1*e5@=2dU%vCd_YaKoS~db zF+)8XkDw>GQqxS8EJXfM#_*M*0b0d)W0pW7I%R*h+72}4*1aYOOH>Ufk*S8X><9l| z{93er#QfC)lp~;wI{0}OeH6*b_Nx!RnH-8B(<+mf#0JnFnpd0DxkvcaGt*qu8*iBP zoe9O5Y^Eka$giB=Yoy@a2J@ny-#_h-E9Fi}y7z0(Q%hczb!Dm;Ajj3m`0@HG%8`k1 zcHH(&#`qQRTHHCtvrXx@wc|H7WfB^;AmyJv86WuYKH?JK0u=wgqC@lSph}qmrx3Ng zesrc4qTlgdI$ZqH$%7qKfxf#jnR?L}q9}}BOgJ`RHPtaJm|8c@uvdfGW4__w2DTic z?gM>{8K2lxY6u6)be}~4v(EJFy-}hMP>*{F51AFz8im-w**=Nw^7>L7p#UyBsTZ3B zC|Iz&lrd{0t(&}bwBZ%i7AJp8&X^^Gj6@Tw%>4i%U1hxz;Am^q6^xA8?8j zCm#dzxm+dk8*}`rH3T@~b?y$`kHoGBBQnXHd&oW; zEF-+&c84jZ3@ZmmJG>?#jIk-<p0AAz73#qka*gr9rBXLe7dG8YOGP$w+F_ zWS+0EdxaEOd|UZtgZhHb9YUeWkx`MfQJ5BfE1>E|1=~FHwn}fMBQ_nfZ)uDTNfbTa ziE=?qJ>|SlS1JKX@YXbN_?)3l_u63xtFCuWvyDdg_=f|f5$tbY#~Lk_^mUrO1P7$3 z%Umx?vy2gQY+`mKqctzKFfN9heNV2g9hRFtLT0!M+l8uJsD7q0PBkah-s31fh`m{J zd>4P5!Fdc1a)ntpn7o=bA|c+(Nw=%PG*mdO%~tu=LeNOKyOWhUk%hU^;Glm9+FsW+ z$jbXviN#v*9msgCsngT>yQ+@EZpKv2Sl`*QVOIulBdLrtW$`<^uGWV`<{-RUdoyxU z^F^L~M3VwA8UxiRZ(jMjub++gl}Y82{hvS+s~^tFsV(tzjIyUi_UeL?G>jT$9M&dS)5>7k(8Q!_h6 z^{&=u<6(qqjXz>n_r0u7iYYe22S+zi**8^3!(TL_jw)m`&7cyTR1Tzt80cq8fn+B* zGv@%oF?)#q%jUY;Wt6F4tZ3nSk!u$Bm=AQuxqv#Ck1Z%GLRoKX`>QN0cdE>Y$amMd zhHigTl)d18rJ6cgg}dyr)vj{yQ=$L-ebN%7%3$yd9m)r9<{xznw>RWb!C@8daPdp>1Tf8V!Qw>8V-hkAzT!N1v`7_ z&Ps)gnv2fXqO#{6&2i7i9^Ertb;&Z{PH@jZ(f@&c{O$wY;j#-7(@BoIw~7B-j-bd;3u zde(W@p0+<1VyzOVR5KpCmUg5t3`U$r(PjelmGuyWtQF3lgooTp0?hjms5njjmqcH&ckkdfC*-b|CP9GGN7`>AJjgJT|rV)F_IzL!dQZ>N$aIqb(eJcbrg*LE6>9wGg+ zp5RB<*}ZoAxjBeKyyvlk)Ly3v6bn6KZ~kWK(X?hE!0Dp``D3PTUU}B;cAu~st6R-< zV#nWXN{8hxwZCqD=hb$+h@I`Is^vZqBgb-@vLE-+&=1+TNw0vl^<-u;eELkPb*XLq z3EDi=AypJv5xavy&UXWF`&z~46ZlCjy=?nVS2v7SRCl~d)bW|d4X_^^0e|~-$T`ua z7T%tSZcog{Uo&@1)PS&|j(4d&?@#}hH`gO$@~qiMUtfzZpZ4YLE~P#l6U7^7h2|nO zoV^uibflik5(yuV!v2f?{0Gh9)^duVUEZmQ6|#Q&`c* zinR_wN*p-%_xMR2B0GI2j{{ZKDd1}!$2Zx}5x~3}I?WFMKH0AOj}assW2#I>G{}a_ zC{imO_Jjy)xeKg25%-FnB&lMt2BYZ_i zU$k@9ia|K7*vsBP^Kx8m%WH}%cgFY9_E8G3&YAMb*k4xsU{u>_26K0!)M{haD_%zx zc&^Kazb?idyETZHIxPl^DwjaMOU}5e5(U@CHeE7#WULAsM(MCC4}2^(ES* zg$`$-%JH5tVlp~uCkXU0~R-R*<4{z5I(VV#JewMD|xb|gE zWJLC)hq8q?XOd-OYwKqOnxn@B4^whR&+Ph|BIgRg@xdqmSq@7{*6tN!^oCcU!LCBxU=g7S9eVl0{(am%7#N0SGJmdg(#Ziip+N;bcp zKs>0mbb`uex|Ew@{mq6VtZM``uUH+AW~cn7?EvhzG3|M1J4vQo8-A^M-DmCrxm|jF zJtO(~EJ}Z;R;(($4S3DjoQ~|I2=99?*wWK-7${h#2#7|;b4T&IDNw!fRW$md3ZtwTXx%8hw!A@SdTW_ zo^Hk}AC$C&8}kRjM0!AJ(8nGjHNwDXxu?TIXw$kbpE0nTe_|T1P(9|*dAhq{gz_2I zqsS=8D+Jw9945GJ*MG|%Zimr3&LkmZQntvFl-)$YSHJI+oVogrQaO7jy_s7`(#kDW zlgYK(N$*n;*E^yw09i#f@B*S<&WePdUgbwNY?=8A-#_}t>v9%D#)7Z&LF5tmFX}XX zv@Mj>9GzW{B?Zn5a2~#Aj?8jmN&o)(g{b%8^L>;Km-NH;*e^-aw9h>?ytg_Z=81%) z9)1i~pN0PVCCzYua#hMM`5Slr98pI`PlOgDlF#b-jc z)r_HPQ(&y}*{YB>2qe2SNOA_ADXdl?_86 zb!dLMeX`0hF$Z&yCh_ws`IC#Lp^XT{+LGy-M-Hb7tto%y(CXTG&vWec$@cN|2*M2P z9A*)a9ter=btl>#(jckHJ+_X^ER}Q^=0`6TNXi{h+WO^@6Va#Jggd2PN@Y=$EBI+t zeJ_M(0J2BG;c^!tS*eY$Vyg)JI8J>ze%&Z)FSce~{>M6ZnYQICgD+9_@%UZpvvM~A ztzu?d^^gE1%{rMR>Tp_q2jv~5fp%1 zW@C@>NElo7=>3*8I3ZL-gXCo_zhxK)N+?S4t#=c(qc9rz-zAf&;{N3hmv0V!+k7O* zu0ZI{*}fLK@W`Yz@s3oGt)>i$1df%$_0Tr_$=y50z zIDJwu##y?e5QA2!>&9gMAQ%$DCX*M-fS3Aq8yg)fP4cjsE2~=id{ercuRL6GL8Kh@ zYGyiBzQp+UVv3rCmAA@moQ^DwYTd4~V~JJqsWDr;O4o?*^(1>mLU^~1A-z3FcZj{W?! z7j?~&{X_CJm-A3$=ww;agTIjeX48NWmdJHM%18Wwq<247EhEmWJ$j{Gqm}hbANONYdj&-VjU;qwZG3Mrw85@qT$_m6QXr1Qvtgr8`Efm=bc)hSN$*%D!ZH89!jDy-$thD9R8*9#`B-7fl=blU%iu`C;u&^T+d> z3%l&CQ*<0!Jd%jF>CoBjH;#8Xy}x$yEg#k|F9lEr9_Y0qhJ&|s=$L&*SHD2TFMj1) z{`xjn4VJz?A!;x}^{V$YpyaL~r)$so%mBUU1WWId{^m=lRuH2w$F@ zN!{-kKkP+}ZH;XIcK!G<CH7IU>+yhG?@^k%r=y!*^A$YA*KyIKmuqYd&p4Ycb&{+N(LQ-anbJ@yN z^GW2bau1>q$N!97C4J1;7Zq9xkkBmsQPNW`TEMpr+#UYDsMMkmBo;06mpB1u0j87SU1%<+gG#oc5ClA>de1xEs^U?sS1+<4Pq9L3_MCw;PJ78&OfeDjN94?Z*JNOr^;Op z0zw#H&>N{;5>~2si{zMxb@*Fx845eeOiD#yM|8YL-%b-?@E~UR>PzpK8d!o`+nF1P z9Zv%GFVSWrtoCq~v5-g=(W{ov^7W}~qR!=yjrZlpSM0D&Rk{PhrqG@O zcK^k#NuzAG^v5@wq2M>yQU$SdyRy#>X57hG4wTsE8a5UTfb z1Q}x=yB$g3api^nzFJ}?1R86n!4~->2DIL=MRiR~#wa(CrRS0=DKU$^zRtr|Q~6OA z6+L=jXG0zG9UyB##U_dpt7`#Dehu9vh>SG3)wKQE9T`7txcnG9j2E&PJjVL-9sZ8v zvPH7{)=dYw4th3lb>O3Vm&th2456Qr^(xEtt2pgnGA!EZkm51TFuh^4t4r37+})5U zDQ#iq5VtSnj`ARhmKlfCSqHd!_8eCnHSu92qcnWRPH$#NKCIFsc&Z5HjioqQACr%# zsf6QMFZ!D22xnhcso;nsQQ6$CmR5gZK9M4)!wxo(=oZl&u_9t}>>p$(R zGb3rX3VIwZU*=jfT#|d4_t?-K%kf5u39Uw#Jir5xqErjvkA= z{6I9FhZdRQ+i#T1Pz?AKAY=7BHZm4~EAjM~tE_@$-S(Ehr{#6w`Lt7h+U9sy`N~~u zbyUn8mpt)RP=$?lV;w$PP?GUGcsyj`6xg^e74P{}#t$?wfwi1rlo9ntH|>#$y@n0m z&Rc#ffI^7{ZK2g91uljUJ1I^Ir&svx28?+c=%lNzxk@yL#4`%9Yjf+B*I%?q6SQ#$ zjmO&b=sYJsYnF5#H7l0DxbtEW$G&MhmEk<_HQssM`LQOf{9Hf+7L6X8pwEr&qzrT= z32($=<)x@$-Gk=ZKk0jvfFgOh;;-W8a{89ur)IGGs}(&_$QEG)3iPz_6b_x0&5H5j zh@m`^STC@bKfd539~qQA61Y5aEyQj|gT;5eW)k&U)36yt%}6mq;Gow+6=!2S&A`eyESf6aC85Jv;lO_REkwi#|dhrK-QO;F#P$x`cYmEoAr?jy|tenfDQzENlUix{j>}V0>F!riQ%7(HKDw^ zEH$Bq&3$-c@|4cnfX(YVLI_y$UJdE%b0Z@2Bgj~v(bujCa1CZ%i&W;Jrz$#wEnqc| z50KAO;_*7fVZP_M{r-Tu(;*aK=MMAohTB=Y0gy)?HqHQHAP?}*UWiv%SomK;!G8)R zB*4%BPdl)-wSyg4!w%+TE$876H041S3yKN?MFjZF0bpGZZ)3}Z49EfD_`9ldn zvi%eKhy5SWeQ$rbVUK8|5+;XUrqio3&hUL7VhNf?E(L5rN3<}+qwGMc{|x! z|C{&^(?46)^Re;%GkAaO!wZ(P_OkoK1O8voKZf?N>>oW51uMAQdcd6A9e})i|Eba6 z^Z#SD|E&pzIN96VA%`6~&ZYn!u%{i|$pZ$q0SAD+Jgse!_5pi<-NDviS1=5$2et(} zg1y0ZU>~p-*fGG<(as$V2m68*!0KRmFcho>)a`N2A1Rj@V~0yY3^fR(_qU^^!VM{lr~lRsD)90(8)0=s~{?0oIq&HrtYKRx-U z=EzwH^Rcyqvnl9l1C<;-yuANmQ=l+6k1)HG)IVp4Kitk9zysvv2k`vw1{4w$hAmM-u`g=o^#)c(b7?)%{x>k}AY+eKi~wah>5snIdpRu$sK&A0ftN$FqMOTV)hpfH z7THcC&#IqH4X@z@Fo4387eeS)TQmbBE1BH0Z%O$1xJn4@QLI8x*d~S!zw{}9 zBa`vV|E1ZoR2`vPg()D61USjlsj@u>O5zKR*V|c3xH~xV-Suv%{9N?$&O zh;?r@YO|4>KAfA$wW-Me&o)i3$HWZ5VvPw@k8P?D+Z0wG$}HKOoRKidb$|ZNo8B%g4$Y1d0;0oHvcuI88KET_ zJAD_7l_sJbKp<@jAC_uPeNutbYo6?s?6krDjL>`y+CHQDYf3Xv_fGZgo&B97UzG%F zb2l1Tr3-KDFH?644BO9+oHpzsoIstG3OzLsFCaAClQ0AAUgxV?eIasYf59XEfsboa z#Kvlx>@zz1L2o9`vMWy{4oq!=bm(6>gt4Ln*7U2-G2Tw}js&b00r)9ojRVQp&waxZ zvf~yAKJYD2^&oqG*R`#}<}yoD(i?t}8s7fhQTNdZ2I8#q^Go30>D4~B%gjOpPWvXW97Ny6 z_nG^KE7JLgdOa)J1^xrsVbNQfsIFD>QvPzlY_xuLuk0ns8pmjrHPK7JJa4+UXsyIO zkXY+O8&jW?hgLF&xs{b?nV;;_j;Nz|)xiitasvJz;D~{0FNJE_#5R@-y5b0KwRs?|wE)II*v(V~UEpf2h!PKVSX;Oh4&)#bS|^s~`0-#ED-T z0O(BTuLAkG2Ow~5f0#J$WpBzVXR%U{nCg%6 zoLjBe*wu3VQ)ktoRniY@8>GXUDjH>hVV*5VoBX16yl-taqJco*cr?4wJ)&JtA84~P zR|3N1C}y{js<^{{J}}p~;o2ibS(JC?VA3q2=V&?}O}Ub|L|sV>Hj6*8J9c1c&I{@+ zRjb{fR1(g_E3zBl@)yF~O%Mx_rwqIl0tY7?9@iqNt`UVGE1bm`LrN%eYf?0TDC*B& z0DQsz0Q6S2d>y4l*JsTDB)oGWDk_Hp&$$84Y6Q@rjy2TIZj{VH(y#0li(AX7~((;uYv*fw+ za$a_h6lV7$j#Z$He3O!y>WoNTNArRy=+V)%^@UW?zzGiEtyzZvb)x>pLO^;l1&j2K zQFZ=(PLQ%`)X)2ZQ}($sasSpdD>1RPyep9&;hr)s$;mH5_pFIV#uC(3aH1o9oSSb8 zpdRw~Uxa4N=^VOpALa@^>(;Z`8p3b4jN$4}VfW+wUGF|Jv}|nm3o_DO+j4Ns^`cfh zE0^u-6EnDjcOasKltx|Kswk)L8 zb|kXQkquG^_pfvt1tMmxrB7MM7q5r#XnvTg-g9Lj|)Xzw>j=;sKrANG#GAw!&47 zP5f&FEiG!1I8Tx^66*Sbk{D$cugE$`7#+?#iECv_%@tXgGt zFWk#oqFNm(l;P!W1bzn6G07t%bJZq|)4n#2N|X%SEVrZEBc~Z*q`j0~a@Tb>9)sqm zu|;>w+aDae<3MUGU#E)>i(zxP?IFTi6)4!Yw#}jtBBKwx0l8wOcj172vMJau5du~@ z|M!8JB#G~P>iELx(*uF82b0mb1xY8L6CVp5#{S=s8dr6~3x~3e^THyfoi7ggNd9`) z=X(CZZ&eoLtr*&^<1_xyUlXK*^SYzc7sf?r_24Ecu#}n8y0h->x?d{dD<*>ZzKt_* zAqeuIG4Tekv^)2nCxyy#m3@fBX7EFySD;{k3)4|mZ+CBW_Yl8@QrVxSY!|cPzH5ZE zW;7{GgAOZ6Rf%mw;~lau<#sK5Z)jrx82!@kODQzwWB%Zw^?<8vmCsk(r9H^| zj_dbYvNfGfQA{_Lo}t$2;0KR7HrC>995PoTP`P6mqn`AC5T>sTH2yL4T$B~=-5d~e zlH&sX*?>@DWBJaqkKe4SjDUg8s10)aN3T;!KUfWS&lmK~2$6;>#E7K&TK{x4CBt69 z_&2G@Hadr^PMlLHbZE2jiBw7Xk%98)wOc>rP>X>HW}#{ zBveS>aD&;uInQwN)eF7H3GoZB z6UzKnIPk$iBy(BvWHE;&8ZE};HRQ~6{?+TR*t4&YUCSf$$!90ikSMii5AuYhfwzJ+ zhT~bTRagAM39cUKfhJ>n?f2H?H3*_~8%fLnf}|T2pj!?nT5aOMUXF|4+xsAB%g@TB zKc-Shf8*XHUbLD$jzyOEfQN~%LHc-qz;;KHur$Rp0*9t@P;0{YZKjGnK;<7Qpu^D- zVsFN|It1yH_4|QTn)a9npwP4d7$K{jhxyL-yDK=$s_ec%3ECWnr&rNihW*2zTHU?} z4PgV!>@S;XDB5Tc{Qi7qiq;)J7u+S6J1&r4#d!!mOiN{U(+#N}qx`$vIqr0j9$##Z zXH%Yi|7uk3NGwznc;o`BzS;5T8#BQUf$lXJmlf#kZkU=0JZe z7(Q?7?{6|4pWU^q?m&EP8yjB>|6u`I1Bm~%Q}agkDc@~Mp}b7IyTEbSCthupKHIhY zQ6KMCZafSeO|QjNr8-h##w;ok06^Eue02kt$a!r-wd9_N9j1_-I98>O5&#fFN!7lk za+W=9T3-=}PDcMY5OXb4mKyMV<|dMs+$S6OgUhWN92&z<7OsI9&sZsuJe|`LHF!H~ zoOor4fO%54#Cf^@%RYe%%=y{oIZrOU%Z5uAfuj818xv_(#fVZAyIYJOb1WVmy*s`# z113zfi(S$eAAVU_nmf_YognNx(Us%SNP7(Wk*Ft2v2nK)i4-wP1I4*W=&n8>0?V?1_sm{{nJ!kp9@O;OG@22%nry&!{kphVO! zAhc$~CJ$jw)flvqTo|b~=!6S(_PEwBm}{hPLg9yW9E@))(BR)79?lTK^Lk;S~@fg-mr_P^$)Kkn9a&2sB5J)Usdt1#yxb;{EzmPm1B$J=x3l4P4iQ z2K3E-xM@p6M6t(^m02M>ADUGGaqALwJ-+$ezZ52A=6WC^FMr_&;Mz4|0HU$I9xlYVJKjTEo!c?f8;&fU)?-$jamF%Qk&A0E6Ac#8F&=J;X99=6e ze`H_#RQS`j(+}~c#>CA{ZU0;j8gc-D-Ly>*vT`zH{^sEES=@hl{|wL#Ygv?PxcIjd zYnnjr?IB9!WI{8+JtvuqODR=UeFDf$^GmhfN|8=A=5H5s8Enb4kU0;@&r%rhm%NdzM zze4tzeVlY$Q<%HWr7&|2Gpiw}G{|Wm#oPSXZdc%+<=lhUkaSjZjoT=D+Q!QFhT8G- z805xd*r6&u6VNrO>DylBs;9+>BzI@}J{PtbA5u z=gG?On9SYIfn!egyCCwa-aDdn1m-`(2QmxZ9@EneY(NeBhDX@qU+v8J=}-|-a)2DH zC5@34y+X*y=6@Jz(p?M2=*dIVe+}^_hI7`MC&yMQ)P&?oYhIVK36xDmhJ198RC4I8N`yT!p z_PciMZ!57Jt7XbU>Ip*nf^$=QeIRq0rPcNCiIuE5vn#nQuSus<$&0u-Iac6QgxZWJYGb?!mV(62x?)WZ3la^4~*fA0=vogO|~hn=0TR zeZJG^b^WluzrJ^pbV0;lAzdr~iVhovmSTsKWBP)Qm4Q@q+j?gmKCF0QFQA{p$48lT zkh{aiXLc^`<|T~Rt{fTpW8I2SMEZ%52H-7S&>Op6!;9FkLI{^+OvE$%fj41l(G*68 zjI8g*pFAVj^hm?HDjNhaGaRF;CW8E8eET2or+-xXaJc!Cok@Lbw>fvdwwCN6G#*8N6uukH4^i z`U>8s9e{vJ*BWP_yC8FK1dUPqK3p^yL;g=)ow!5NYWCmd|7_S7MD~T80ag}x$FT;iki0v$JeN{ z^P49xv!KcF%(kc;boMW&rx(uZLp!fv3QvD4wB}<*iEHEP>%?%I53PTD!ko57oBmgH zm34_=aZ#&{M%})RhL#1lXO?;)C}BQj#HYaUX&(45L0IC{ZtcEvuyBf@S(t@@kjV zDcuk(^}!OOC8~Fpe%b1MyRfS1d#?mK3ntbAxNi6&bZQq`U@enFVdk^9LpTZ6FK8}& zJ%j1v zmFX`FT?#yGY$gLh<2)?hjlXml{C(8kv|*bA)b9)?Ho5yfQgSwXEtFAvR3WbdwuVXw zl25*-FO34piTa<326BX75f}$HuAH$ zNGmZ_&O{v3X~t#h_JjuA0a6|Q>8xkd44>?KKlpCEFl8c)=}GDi4|~2YT9vTINkXG2 zRzq-7znJW}w0qGT)z4B>N$CL)BIBOKA>zDns2$DLx1MJD9d|l_I&Z01HIFg8m44nS-;h#KKMv?en@Q_)+KlqNQSqHD@y)c?fZCIl!Xanuf z7u&QtQ|GgT)EAI%r6I%12K{Vm2%2j{UQIJh$p>Iy`8UY#FZ-FHI=RDCf@b2<1F{?bu;i7Icw+(GqfQphktTv zgg6<^hvc)R%3D8yHGkFy4u9W)X-Uv!6+GotJ!M-tiEF)sL$@&A(}XEu0f+}JPXx+O0R9%9TyQB8Q}cQW@t|SLCaQfe!s~k zYB>89tRmIfW3a`VW^~Xe?WypbsXb=K8nZ=;MsaFL>1042shEMnDiC!2Uy9!QM^4kK z8}7X3w#764G8r31_6=0GVVIHf=8Y|4Soj}@a5LsaT)x$lU+OM!s5aC2KC5{-b$qbf zII9kO|Ju}zuQ;RM2S4Xb|Ge4^dcoz%5?z&vMcIwXKG#k6`)!{%?tUDeq!FDBym<6~FLKnSd(>lNBav*YVUOe-dw2Mg@Ox8U+^sjm} zXo#^M*jZ1+cigA|8tS5_Q*2eQ)LM)LDg+h%6npSHG^)p=K<+v>n7%8ltyrBCwG|6z z$J?+uqv^Oerrl6JR(yR&wk*vTJ|82kyX*V|5VAzsHO9KjbJ85T|<*ac$Y? zcsk}9kp>f$HnK(4k~nHZ)$Q43rl%KY%zR=&7XP5%6TOZoc|Ot|^<%wYjR>hl(hSgj zV$WHrt{w1L)xH=64Ct182%)-gP+LGLm8=oeMDK*55~f8Syr$!EcP63@ljIt0%%TmO zrRL6RKG{XlF=$uoqf7vE(9!qT>$W?1sk3``7tOanydb`@nZrl1BI-N3w$pia6et;>s-a-3I4U<4+ml~?tBVt_UO8lxifRDP(8wzC8u7$=@oLjz); z@yEj;bTa!65%Bs#tJ3jRf34FSo0klUxb@tTlejAvq)mjOEjdiTt(wWM=+D+5Y6d`z z${tP6oOWa!Jn)I{XMuO?gVoVTg)}g@fJw3MPlgy{Q-PO{=#Q=2jVp(pJc49uIApR5 zW=O<4C8cNg`J4XdS?Fk2T|wYQ-6IVm+Np?X@zdqipF-#79#b?n}W6lfPbD->>kq!(B5eGq^o-2!Yg+Fcvr)q}=?*QqXmxjKK+m zf!8|-be_7WL|OI8O@gq-MtE&%q^oEV)T*V=Tt+Zwlw73Pec`9&GpDk8)&WcG$YuEX z$oC?<<08ob0A87ww79EZDD;hjR_-(Hy!KQCn&ny$5r5K|R?{mYj+>j}$jTf3HLOg( zz32N&9(4L-nFe1r>cXM5<$M&SCdjExtY(V{Uq7a=| zzu?m^pAwV7Lb#UBIhqA2Eai@$5cbtL_IRTSzAK9Rvd1Cq%g@Es8z4L9N<64;RhHk7 z-N-5C(k9b_wFXTSIz#um`ty20cg@?%0pCc>ao+DNtSzHceG1UuMI3)98t3=K(b|(M zs~c=+aU~w>y_b)F{=WB2$tjmoV0!7(V8`^6gOX9MzLAaIgJsnum7Fg|EwuhBVFjMY z-*K*b(oCgVa;w@Ln-Oqp{>UVBl5!pgPC>F^`1Qi3>7-+}hNJaIOtpK$rI)6#u! zV-|Oq?|1S5J-UXECxf4l!PM)yR7q_=^h(*a$?xKEtTtWiLu}2^x2KvTseVj7!iS%EH` zukK3kIFnVsdES=M)0*kPeVLDcCogU)+0)gwypJ6U;rg?8mzM9^^i}+(=@Cx@*l(OO z;}+2i5${tKgkqxuzzXjuep{PV(lf|E^&OIV)jiw11c?7=EpSvNRAtsQq`5r1YARg* z)jV7o9du6czG}?s)bQpdPa~e`MY{a7sc;{y=|gt-h7A!kh3?>1JBAQ29lmDyLxbYg zA5J2m{a^Rb|EkNCdKAu-FX@a!MhssEsVpffnjpl_GUpoQ>ogowntoTU*M6*p>&Ugw zV3t)rc8~;CZM}=wO1%F8&Ht?No-DYLoD0q~NeGq#^Hl1~m=(*=c(wbIX{V1jDECBC z3ilIXLL9&tbC*^<(?n|3Z`L@g7o{Rk1ummHhf?B+OqPXer)qc(NWOuwQB{uhqY(?q4R@rCt?mKG!J+C`sd-X zzwHwx#7CL38<*#U49tRDWh`TzH3%U1QQ%(ypXBvS+17X8w-d!TV7kK>wc>z-Xq#9Ycot*RRw~ zsn=PvCXghT$rN83xE1oOc0bz{TP9>XZE}1$A0GLHB7g+NSQ#|WsfN4xJ92V zQq7#TBfm?82NtvX@L3XlJUBDE#}JC`?W_w^^D6MHLQK8 z=@oaT*>A4&SE3pO9ojIfaHn-tTeMj{RsK0njH^o1MFs;ZO)MoJE8pG1mAG=uP6Bzf z0G?mglQEh#Vf!kt!Pj#n+tw*@2W-~L0=VK=5ue^)x_DICU+XoJ(0k3>e>#|Xcq|%( zeEQi+u#I@+i{jI}^GfT0!fO|m(K@ia8U<0h$h|;Rw(y4I^HqOl^nxi3w!aWt`}^N4 z1H%x2oo(`@xk$|U25MVgiXqY4csjdva5wkdVJ*Wyqt&~A$^hJ`)pi@9vcqf!zUEX2 z>vUMBGo|pV1BQMjcH-}{$ovFTFb7X%$QDxxEWV}|w5oSHW^+z`V!t|+)gPdpRK#`2 z5CU6u=vsQ=L}_o$f`g-R%(`JZo1A3%Y9nq;?ql0YeX~9)DIWY_{QQEYN+0W!btkzO z8-5N4HF$6rZ5Ce>VKfK*e)Wp=b?#qkHb}$)@^48T&s&jFvXuBXx@Z00(Z)I%Zq1Jb z6*9v#HO{~OW%UPD`7ryBn$)a<@l}@giwn~NP{#!)R3i7pd)2;PIQtG0brY1eOfQ+n zAcdfr;k)S2<4PBa_6Z&PT&B@~)D+wNtb*M`=VzkfYi<=crbiH<k%rXJNI2Sisu_X7d76nZk%^|-p3}kIXCleHWw@{k|n`9 zwTNw0K1)EqKe?%Tz;E_vJP>nH;uUL)wh$sQV@-wMh2&*}xcliqX5;HZkc>R1wUc9q z;~x3%#@Q8svJ^F{eD;lcpXl>BAj>!n(k|T>xEg8ARNAcW;;UKCP&Gg`iKVhOSwdf3 z9sPkqfcWjq8r*8(Tve7|BlaN3=ZS25__lDSbXwCp<5a$aJFjUfC;o6QPx*Ro6i;Wt zV@~RafflezQixbKR=_L^{=nXWIRIUoM=#s(X>YtQ`8XBafeN2nu< zW}Ag2*M^IEmj>(Jnp_dbjotjq^|yK^tD&>;6l)i zxiUu%r44T?wh=2<43PG&FT?WpMRB0OmD!<{8r8row}-B0+E7K{b6>NRU;)~iq|ol{ zP&f#A_x(PTO_INh-d}C@{OCNguV4b>db6kfAg)O-`B5K6fg&$h{DdaVtKbfu!V?_lT z-k>66d(()^?>;|5tsYcjZx{LV*$Hmm_nazGv1zk4B6VM2@LLQ8qg1{!njWD%2ZQFl zxnG^1Iq%j^bhKJ}$AUsW4e}3NfymZ3G7HYVWjqN0_D1mg%Mw#^x3%c>jBrhCn=O6K zr?_o@X{r%myaBp){ODg}-FCKom5xrXyKvSY-}t&Xp1JQD-S!{R9aRhFUBP~1vfs?_ z)jRRa)*_eShVh@WU$f++-`kggCt)t{zE{@Co|iG8GBx7Ku$;x&6JaH2hj zHO8)W0kt|z?U_7`B-Q~sl=Nst67}ShTHObVy+4aC`r_waU-@mL&*nX|6jPzzZ)fuz zgkR>-%#SG41zG`vrb@k7yNvh_F!uTEQkSw&UIBMUZ?@}o4zFEoS}})jI`;W+xOq9= z$1$6|VW{~)85G38TEfbh&mM#*Sewez@7cP zz0cC4#v*K}gc**r-c<7J~K}Z z7VCTw)~-^Fx9Td0#fjvfr!i?5-@*7HW(ut=x9N8CI#K;x6M=tg6Qr<{`1nR4>b950 zwtTFBPPa>+*7g{VsIFnJNRpG4Or^}YUuJ}ej7>d6r3#V^S_EYx@D;rUJy0adK|(=l zfY0S1JaSKBg;(h3%Yt-j9dKFxCBZ;W>QY5wl~L;RP*AH^vp)X>MGd+C_u#0MIW}st zzywoh3Zd|7gmM;0t486 0 AT +[0 -1 -1 0 4039.99 2748.04]ST +0 Y<000F0010000100110010000E001200130005>252 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +433075 215389 MT +432331 214645 LT +431279 214645 LT +430535 215389 LT +430535 229142 LT +431279 229886 LT +432331 229886 LT +433075 229142 LT +CP BF QS +NP +433075 202689 MT +432331 201945 LT +431279 201945 LT +430535 202689 LT +430535 216441 LT +431279 217185 LT +432331 217185 LT +433075 216441 LT +CP BF QS +NP +433075 253492 MT +432331 252748 LT +431279 252748 LT +430535 253492 LT +430535 279946 LT +431279 280690 LT +432331 280690 LT +433075 279946 LT +CP BF QS +NP +433075 228090 MT +432331 227346 LT +431279 227346 LT +430535 228090 LT +430535 254544 LT +431279 255288 LT +432331 255288 LT +433075 254544 LT +CP BF QS +NP +306074 240791 MT +305330 240047 LT +253477 240047 LT +252733 240791 LT +252733 241843 LT +253477 242587 LT +305330 242587 LT +306074 241843 LT +CP BF QS +NP +255273 240791 MT +254529 240047 LT +253477 240047 LT +253105 240419 LT +227333 266193 LT +227333 267245 LT +228077 267989 LT +229129 267989 LT +229501 267617 LT +255273 241843 LT +CP BF QS +NP +229873 266193 MT +229129 265449 LT +228077 265449 LT +227333 266193 LT +227333 406955 LT +228077 407699 LT +229129 407699 LT +229873 406955 LT +CP BF QS +NP +433075 215389 MT +432331 214645 LT +329678 214645 LT +328934 215389 LT +328934 216441 LT +329678 217185 LT +432331 217185 LT +433075 216441 LT +CP BF QS +NP +331474 215389 MT +330730 214645 LT +329678 214645 LT +329306 215017 LT +303534 240791 LT +303534 241843 LT +304278 242587 LT +305330 242587 LT +305702 242215 LT +331474 216441 LT +CP BF QS +NP +229873 50278 MT +229129 49534 LT +228077 49534 LT +227333 50278 LT +227333 114834 LT +228077 115578 LT +229129 115578 LT +229873 114834 LT +CP BF QS +NP +229873 113782 MT +229129 113038 LT +228077 113038 LT +227333 113782 LT +227333 165638 LT +228077 166382 LT +229129 166382 LT +229873 165638 LT +CP BF QS +NP +306074 139184 MT +305330 138440 LT +304278 138440 LT +303534 139184 LT +303534 191040 LT +304278 191784 LT +305330 191784 LT +306074 191040 LT +CP BF QS +NP +458475 88380 MT +457731 87636 LT +456679 87636 LT +456307 88008 LT +443235 101081 LT +443235 102133 LT +443979 102877 LT +445031 102877 LT +445403 102505 LT +458475 89432 LT +CP BF QS +NP +445775 101081 MT +445031 100337 LT +443979 100337 LT +443235 101081 LT +443235 127535 LT +443979 128279 LT +445031 128279 LT +445775 127535 LT +CP BF QS +NP +445775 126483 MT +445031 125739 LT +443979 125739 LT +443607 126111 LT +430535 139184 LT +430535 140236 LT +431279 140980 LT +432331 140980 LT +432703 140608 LT +445775 127535 LT +CP BF QS +NP +407675 139184 MT +406931 138440 LT +304278 138440 LT +303534 139184 LT +303534 140236 LT +304278 140980 LT +406931 140980 LT +407675 140236 LT +CP BF QS +NP +433075 139184 MT +432331 138440 LT +405879 138440 LT +405135 139184 LT +405135 140236 LT +405879 140980 LT +432331 140980 LT +433075 140236 LT +CP BF QS +NP +458475 88380 MT +457731 87636 LT +456679 87636 LT +455935 88380 LT +455935 91126 LT +456679 91870 LT +457731 91870 LT +458475 91126 LT +CP BF QS +NP +458475 189988 MT +457731 189244 LT +456679 189244 LT +455935 189988 LT +455935 432357 LT +456679 433101 LT +457731 433101 LT +458475 432357 LT +CP BF QS +NP +407303 138812 MT +406931 138440 LT +405879 138440 LT +405135 139184 LT +405135 140236 LT +456307 191412 LT +456679 191784 LT +457731 191784 LT +458475 191040 LT +458475 189988 LT +CP BF QS +NP +458475 431305 MT +457731 430561 LT +443979 430561 LT +443235 431305 LT +443235 432357 LT +443979 433101 LT +457731 433101 LT +458475 432357 LT +CP BF QS +NP +280301 113410 MT +279929 113038 LT +278877 113038 LT +278133 113782 LT +278133 114834 LT +303906 140608 LT +304278 140980 LT +305330 140980 LT +306074 140236 LT +306074 139184 LT +CP BF QS +NP +280673 113782 MT +279929 113038 LT +228077 113038 LT +227333 113782 LT +227333 114834 LT +228077 115578 LT +279929 115578 LT +280673 114834 LT +CP BF QS +NP +306074 189988 MT +305330 189244 LT +304278 189244 LT +303534 189988 LT +303534 241843 LT +304278 242587 LT +305330 242587 LT +306074 241843 LT +CP BF QS +NP +255273 266193 MT +254529 265449 LT +253477 265449 LT +252733 266193 LT +252733 330750 LT +253477 331494 LT +254529 331494 LT +255273 330750 LT +CP BF QS +NP +255273 329698 MT +254529 328954 LT +253477 328954 LT +252733 329698 LT +252733 406955 LT +253477 407699 LT +254529 407699 LT +255273 406955 LT +CP BF QS +NP +306074 266193 MT +305330 265449 LT +304278 265449 LT +303534 266193 LT +303534 330750 LT +304278 331494 LT +305330 331494 LT +306074 330750 LT +CP BF QS +NP +306074 329698 MT +305330 328954 LT +304278 328954 LT +278133 355099 LT +278133 356151 LT +278877 356895 LT +279929 356895 LT +306074 330750 LT +CP BF QS +NP +280673 355099 MT +279929 354355 LT +278877 354355 LT +278133 355099 LT +278133 406955 LT +278877 407699 LT +279929 407699 LT +280673 406955 LT +CP BF QS +NP +128271 367800 MT +127527 367056 LT +126475 367056 LT +125731 367800 LT +125731 406955 LT +126475 407699 LT +127527 407699 LT +128271 406955 LT +CP BF QS +NP +331474 494809 MT +330730 494065 LT +329678 494065 LT +329306 494437 LT +316234 507510 LT +316234 508562 LT +316978 509306 LT +318030 509306 LT +318402 508934 LT +331474 495861 LT +CP BF QS +NP +318774 507510 MT +318030 506766 LT +291577 506766 LT +290833 507510 LT +290833 508562 LT +291577 509306 LT +318030 509306 LT +318774 508562 LT +CP BF QS +NP +293373 456707 MT +292629 455963 LT +291577 455963 LT +290833 456707 LT +290833 508562 LT +291577 509306 LT +292629 509306 LT +293373 508562 LT +CP BF QS +NP +306074 444006 MT +305330 443262 LT +304278 443262 LT +290833 456707 LT +290833 457759 LT +291577 458503 LT +292629 458503 LT +306074 445058 LT +CP BF QS +NP +318774 444006 MT +318030 443262 LT +304278 443262 LT +303534 444006 LT +303534 445058 LT +304278 445802 LT +318030 445802 LT +318774 445058 LT +CP BF QS +NP +331474 431305 MT +330730 430561 LT +329678 430561 LT +329306 430933 LT +316234 444006 LT +316234 445058 LT +316978 445802 LT +318030 445802 LT +318402 445430 LT +331474 432357 LT +CP BF QS +NP +369574 431305 MT +368830 430561 LT +329678 430561 LT +328934 431305 LT +328934 432357 LT +329678 433101 LT +368830 433101 LT +369574 432357 LT +CP BF QS +NP +369574 342399 MT +368830 341655 LT +367778 341655 LT +367034 342399 LT +367034 432357 LT +367778 433101 LT +368830 433101 LT +369574 432357 LT +CP BF QS +NP +407675 304296 MT +406931 303552 LT +405879 303552 LT +405507 303924 LT +367034 342399 LT +367034 343451 LT +367778 344195 LT +368830 344195 LT +369202 343823 LT +407675 305348 LT +CP BF QS +NP +331474 482109 MT +330730 481365 LT +329678 481365 LT +328934 482109 LT +328934 495861 LT +329678 496605 LT +330730 496605 LT +331474 495861 LT +CP BF QS +NP +51699 418232 MT +51327 417860 LT +50275 417860 LT +49531 418604 LT +49531 419656 LT +62603 432729 LT +62975 433101 LT +64027 433101 LT +64771 432357 LT +64771 431305 LT +CP BF QS +NP +293373 431305 MT +292629 430561 LT +62975 430561 LT +62231 431305 LT +62231 432357 LT +62975 433101 LT +292629 433101 LT +293373 432357 LT +CP BF QS +NP +293373 367800 MT +292629 367056 LT +291577 367056 LT +290833 367800 LT +290833 432357 LT +291577 433101 LT +292629 433101 LT +293373 432357 LT +CP BF QS +NP +382274 278894 MT +381530 278150 LT +380478 278150 LT +380106 278522 LT +290833 367800 LT +290833 368852 LT +291577 369596 LT +292629 369596 LT +293001 369224 LT +382274 279946 LT +CP BF QS +NP +382274 266193 MT +381530 265449 LT +380478 265449 LT +379734 266193 LT +379734 279946 LT +380478 280690 LT +381530 280690 LT +382274 279946 LT +CP BF QS +NP +394975 253492 MT +394231 252748 LT +393179 252748 LT +379734 266193 LT +379734 267245 LT +380478 267989 LT +381530 267989 LT +394975 254544 LT +CP BF QS +NP +407675 253492 MT +406931 252748 LT +393179 252748 LT +392435 253492 LT +392435 254544 LT +393179 255288 LT +406931 255288 LT +407675 254544 LT +CP BF QS +NP +52071 405903 MT +51327 405159 LT +50275 405159 LT +49531 405903 LT +49531 419656 LT +50275 420400 LT +51327 420400 LT +52071 419656 LT +CP BF QS +NP +306074 431305 MT +305330 430561 LT +304278 430561 LT +303906 430933 LT +278133 456707 LT +278133 457759 LT +278877 458503 LT +279929 458503 LT +280301 458131 LT +306074 432357 LT +CP BF QS +NP +318774 431305 MT +318030 430561 LT +304278 430561 LT +303534 431305 LT +303534 432357 LT +304278 433101 LT +318030 433101 LT +318774 432357 LT +CP BF QS +NP +318774 355099 MT +318030 354355 LT +316978 354355 LT +316234 355099 LT +316234 432357 LT +316978 433101 LT +318030 433101 LT +318774 432357 LT +CP BF QS +NP +394975 278894 MT +394231 278150 LT +393179 278150 LT +392807 278522 LT +316234 355099 LT +316234 356151 LT +316978 356895 LT +318030 356895 LT +318402 356523 LT +394975 279946 LT +CP BF QS +NP +394975 266193 MT +394231 265449 LT +393179 265449 LT +392435 266193 LT +392435 279946 LT +393179 280690 LT +394231 280690 LT +394975 279946 LT +CP BF QS +NP +420375 266193 MT +419631 265449 LT +393179 265449 LT +392435 266193 LT +392435 267245 LT +393179 267989 LT +419631 267989 LT +420375 267245 LT +CP BF QS +NP +420375 240791 MT +419631 240047 LT +418579 240047 LT +417835 240791 LT +417835 267245 LT +418579 267989 LT +419631 267989 LT +420375 267245 LT +CP BF QS +NP +407303 227718 MT +406931 227346 LT +405879 227346 LT +405135 228090 LT +405135 229142 LT +418207 242215 LT +418579 242587 LT +419631 242587 LT +420375 241843 LT +420375 240791 LT +CP BF QS +NP +280673 456707 MT +279929 455963 LT +278877 455963 LT +278133 456707 LT +278133 483161 LT +278877 483905 LT +279929 483905 LT +280673 483161 LT +CP BF QS +NP +331474 444006 MT +330730 443262 LT +329678 443262 LT +329306 443634 LT +303534 469408 LT +303534 470460 LT +304278 471204 LT +305330 471204 LT +305702 470832 LT +331474 445058 LT +CP BF QS +NP +382274 444006 MT +381530 443262 LT +329678 443262 LT +328934 444006 LT +328934 445058 LT +329678 445802 LT +381530 445802 LT +382274 445058 LT +CP BF QS +NP +420375 405903 MT +419631 405159 LT +418579 405159 LT +418207 405531 LT +379734 444006 LT +379734 445058 LT +380478 445802 LT +381530 445802 LT +381902 445430 LT +420375 406955 LT +CP BF QS +NP +420375 291595 MT +419631 290851 LT +418579 290851 LT +417835 291595 LT +417835 406955 LT +418579 407699 LT +419631 407699 LT +420375 406955 LT +CP BF QS +NP +445775 291595 MT +445031 290851 LT +418579 290851 LT +417835 291595 LT +417835 292647 LT +418579 293391 LT +445031 293391 LT +445775 292647 LT +CP BF QS +NP +445775 189988 MT +445031 189244 LT +443979 189244 LT +443235 189988 LT +443235 292647 LT +443979 293391 LT +445031 293391 LT +445775 292647 LT +CP BF QS +NP +445775 189988 MT +445031 189244 LT +418579 189244 LT +417835 189988 LT +417835 191040 LT +418579 191784 LT +445031 191784 LT +445775 191040 LT +CP BF QS +NP +420375 189988 MT +419631 189244 LT +418579 189244 LT +418207 189616 LT +405135 202689 LT +405135 203741 LT +405879 204485 LT +406931 204485 LT +407303 204113 LT +420375 191040 LT +CP BF QS +NP +306074 469408 MT +305330 468664 LT +304278 468664 LT +303534 469408 LT +303534 483161 LT +304278 483905 LT +305330 483905 LT +306074 483161 LT +CP BF QS +NP +77471 215389 MT +76727 214645 LT +75675 214645 LT +74931 215389 LT +74931 267245 LT +75675 267989 LT +76727 267989 LT +77471 267245 LT +CP BF QS +NP +128271 50278 MT +127527 49534 LT +126475 49534 LT +125731 50278 LT +125731 114834 LT +126475 115578 LT +127527 115578 LT +128271 114834 LT +CP BF QS +NP +433075 113782 MT +432331 113038 LT +316978 113038 LT +316234 113782 LT +316234 114834 LT +316978 115578 LT +432331 115578 LT +433075 114834 LT +CP BF QS +NP +242201 37205 MT +241829 36833 LT +240777 36833 LT +240033 37577 LT +240033 38629 LT +316606 115206 LT +316978 115578 LT +318030 115578 LT +318774 114834 LT +318774 113782 LT +CP BF QS +NP +242573 37577 MT +241829 36833 LT +139176 36833 LT +138432 37577 LT +138432 38629 LT +139176 39373 LT +241829 39373 LT +242573 38629 LT +CP BF QS +NP +140972 37577 MT +140228 36833 LT +139176 36833 LT +125731 50278 LT +125731 51330 LT +126475 52074 LT +127527 52074 LT +140972 38629 LT +CP BF QS +NP +433075 109972 MT +432331 109228 LT +431279 109228 LT +430535 109972 LT +430535 114834 LT +431279 115578 LT +432331 115578 LT +433075 114834 LT +CP BF QS +NP +77471 151885 MT +76727 151141 LT +75675 151141 LT +74931 151885 LT +74931 216441 LT +75675 217185 LT +76727 217185 LT +77471 216441 LT +CP BF QS +NP +115571 113782 MT +114827 113038 LT +113775 113038 LT +113403 113410 LT +74931 151885 LT +74931 152937 LT +75675 153681 LT +76727 153681 LT +77099 153309 LT +115571 114834 LT +CP BF QS +NP +128271 113782 MT +127527 113038 LT +113775 113038 LT +113031 113782 LT +113031 114834 LT +113775 115578 LT +127527 115578 LT +128271 114834 LT +CP BF QS +NP +128271 164586 MT +127527 163842 LT +126475 163842 LT +125731 164586 LT +125731 267245 LT +126475 267989 LT +127527 267989 LT +128271 267245 LT +CP BF QS +NP +433075 88380 MT +432331 87636 LT +304278 87636 LT +303534 88380 LT +303534 89432 LT +304278 90176 LT +432331 90176 LT +433075 89432 LT +CP BF QS +NP +242201 24504 MT +241829 24132 LT +240777 24132 LT +240033 24876 LT +240033 25928 LT +303906 89804 LT +304278 90176 LT +305330 90176 LT +306074 89432 LT +306074 88380 LT +CP BF QS +NP +242573 24876 MT +241829 24132 LT +126475 24132 LT +125731 24876 LT +125731 25928 LT +126475 26672 LT +241829 26672 LT +242573 25928 LT +CP BF QS +NP +128271 24876 MT +127527 24132 LT +126475 24132 LT +126103 24504 LT +62231 88380 LT +62231 89432 LT +62975 90176 LT +64027 90176 LT +64399 89804 LT +128271 25928 LT +CP BF QS +NP +64771 88380 MT +64027 87636 LT +62975 87636 LT +62231 88380 LT +62231 279946 LT +62975 280690 LT +64027 280690 LT +64771 279946 LT +CP BF QS +NP +115571 278894 MT +114827 278150 LT +62975 278150 LT +62231 278894 LT +62231 279946 LT +62975 280690 LT +114827 280690 LT +115571 279946 LT +CP BF QS +NP +128271 266193 MT +127527 265449 LT +126475 265449 LT +126103 265821 LT +113031 278894 LT +113031 279946 LT +113775 280690 LT +114827 280690 LT +115199 280318 LT +128271 267245 LT +CP BF QS +NP +433075 88380 MT +432331 87636 LT +431279 87636 LT +430535 88380 LT +430535 91126 LT +431279 91870 LT +432331 91870 LT +433075 91126 LT +CP BF QS +NP +255273 215389 MT +254529 214645 LT +202676 214645 LT +201932 215389 LT +201932 216441 LT +202676 217185 LT +254529 217185 LT +255273 216441 LT +CP BF QS +NP +204472 215389 MT +203728 214645 LT +177276 214645 LT +176532 215389 LT +176532 216441 LT +177276 217185 LT +203728 217185 LT +204472 216441 LT +CP BF QS +NP +280673 189988 MT +279929 189244 LT +278877 189244 LT +278505 189616 LT +252733 215389 LT +252733 216441 LT +253477 217185 LT +254529 217185 LT +254901 216813 LT +280673 191040 LT +CP BF QS +NP +204472 215389 MT +203728 214645 LT +202676 214645 LT +201932 215389 LT +201932 318049 LT +202676 318793 LT +203728 318793 LT +204472 318049 LT +CP BF QS +NP +204472 316997 MT +203728 316253 LT +202676 316253 LT +201932 316997 LT +201932 406955 LT +202676 407699 LT +203728 407699 LT +204472 406955 LT +CP BF QS +NP +280673 139184 MT +279929 138440 LT +278877 138440 LT +278133 139184 LT +278133 191040 LT +278877 191784 LT +279929 191784 LT +280673 191040 LT +CP BF QS +NP +433075 304296 MT +432331 303552 LT +431279 303552 LT +430535 304296 LT +430535 406955 LT +431279 407699 LT +432331 407699 LT +433075 406955 LT +CP BF QS +NP +433075 405903 MT +432331 405159 LT +431279 405159 LT +430907 405531 LT +417835 418604 LT +417835 419656 LT +418579 420400 LT +419631 420400 LT +420003 420028 LT +433075 406955 LT +CP BF QS +NP +420375 418604 MT +419631 417860 LT +418579 417860 LT +417835 418604 LT +417835 445058 LT +418579 445802 LT +419631 445802 LT +420375 445058 LT +CP BF QS +NP +420003 443634 MT +419631 443262 LT +418579 443262 LT +417835 444006 LT +417835 445058 LT +430907 458131 LT +431279 458503 LT +432331 458503 LT +433075 457759 LT +433075 456707 LT +CP BF QS +NP +445775 456707 MT +445031 455963 LT +431279 455963 LT +430535 456707 LT +430535 457759 LT +431279 458503 LT +445031 458503 LT +445775 457759 LT +CP BF QS +NP +458475 113782 MT +457731 113038 LT +456679 113038 LT +455935 113782 LT +455935 178339 LT +456679 179083 LT +457731 179083 LT +458475 178339 LT +CP BF QS +NP +471176 189988 MT +457731 176543 LT +456679 176543 LT +455935 177287 LT +455935 178339 LT +469380 191784 LT +470432 191784 LT +471176 191040 LT +CP BF QS +NP +471176 189988 MT +470432 189244 LT +469380 189244 LT +468636 189988 LT +468636 445058 LT +469380 445802 LT +470432 445802 LT +471176 445058 LT +CP BF QS +NP +471176 444006 MT +470432 443262 LT +469380 443262 LT +455935 456707 LT +455935 457759 LT +456679 458503 LT +457731 458503 LT +471176 445058 LT +CP BF QS +NP +458475 109972 MT +457731 109228 LT +456679 109228 LT +455935 109972 LT +455935 114834 LT +456679 115578 LT +457731 115578 LT +458475 114834 LT +CP BF QS +NP +458475 456707 MT +457731 455963 LT +443979 455963 LT +443235 456707 LT +443235 457759 LT +443979 458503 LT +457731 458503 LT +458475 457759 LT +CP BF QS +NP +204472 316997 MT +203728 316253 LT +101075 316253 LT +100331 316997 LT +100331 318049 LT +101075 318793 LT +203728 318793 LT +204472 318049 LT +CP BF QS +NP +102871 316997 MT +102127 316253 LT +101075 316253 LT +100703 316625 LT +36830 380501 LT +36830 381553 LT +37574 382297 LT +38626 382297 LT +38998 381925 LT +102871 318049 LT +CP BF QS +NP +39370 380501 MT +38626 379757 LT +37574 379757 LT +36830 380501 LT +36830 508562 LT +37574 509306 LT +38626 509306 LT +39370 508562 LT +CP BF QS +NP +38998 507138 MT +38626 506766 LT +37574 506766 LT +36830 507510 LT +36830 508562 LT +62603 534336 LT +62975 534708 LT +64027 534708 LT +64771 533964 LT +64771 532912 LT +CP BF QS +NP +433075 532912 MT +432331 532168 LT +62975 532168 LT +62231 532912 LT +62231 533964 LT +62975 534708 LT +432331 534708 LT +433075 533964 LT +CP BF QS +NP +471176 494809 MT +470432 494065 LT +469380 494065 LT +469008 494437 LT +430535 532912 LT +430535 533964 LT +431279 534708 LT +432331 534708 LT +432703 534336 LT +471176 495861 LT +CP BF QS +NP +471176 444006 MT +470432 443262 LT +469380 443262 LT +468636 444006 LT +468636 495861 LT +469380 496605 LT +470432 496605 LT +471176 495861 LT +CP BF QS +NP +77471 367800 MT +76727 367056 LT +75675 367056 LT +74931 367800 LT +74931 406955 LT +75675 407699 LT +76727 407699 LT +77471 406955 LT +CP BF QS +NP +178700 494437 MT +178328 494065 LT +177276 494065 LT +176532 494809 LT +176532 495861 LT +202304 521635 LT +202676 522007 LT +203728 522007 LT +204472 521263 LT +204472 520211 LT +CP BF QS +NP +394975 520211 MT +394231 519467 LT +202676 519467 LT +201932 520211 LT +201932 521263 LT +202676 522007 LT +394231 522007 LT +394975 521263 LT +CP BF QS +NP +433075 482109 MT +432331 481365 LT +431279 481365 LT +430907 481737 LT +392435 520211 LT +392435 521263 LT +393179 522007 LT +394231 522007 LT +394603 521635 LT +433075 483161 LT +CP BF QS +NP +179072 482109 MT +178328 481365 LT +177276 481365 LT +176532 482109 LT +176532 495861 LT +177276 496605 LT +178328 496605 LT +179072 495861 LT +CP BF QS +NP +445775 482109 MT +445031 481365 LT +431279 481365 LT +430535 482109 LT +430535 483161 LT +431279 483905 LT +445031 483905 LT +445775 483161 LT +CP BF QS +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 419608 MT +57404 415739 LT +57404 397061 LT +53535 393192 LT +48065 393192 LT +44196 397061 LT +44196 415739 LT +48065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 419608 MT +82804 415739 LT +82804 397061 LT +78935 393192 LT +73465 393192 LT +69596 397061 LT +69596 415739 LT +73465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 419608 MT +108204 415739 LT +108204 397061 LT +104335 393192 LT +98865 393192 LT +94996 397061 LT +94996 415739 LT +98865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 419608 MT +133604 415739 LT +133604 397061 LT +129735 393192 LT +124265 393192 LT +120396 397061 LT +120396 415739 LT +124265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 419608 MT +159004 415739 LT +159004 397061 LT +155135 393192 LT +149665 393192 LT +145796 397061 LT +145796 415739 LT +149665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 419608 MT +184404 415739 LT +184404 397061 LT +180535 393192 LT +175065 393192 LT +171196 397061 LT +171196 415739 LT +175065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 419608 MT +209804 415739 LT +209804 397061 LT +205935 393192 LT +200465 393192 LT +196596 397061 LT +196596 415739 LT +200465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 419608 MT +235204 415739 LT +235204 397061 LT +231335 393192 LT +225865 393192 LT +221996 397061 LT +221996 415739 LT +225865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 419608 MT +260604 415739 LT +260604 397061 LT +256735 393192 LT +251265 393192 LT +247396 397061 LT +247396 415739 LT +251265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 419608 MT +286004 415739 LT +286004 397061 LT +282135 393192 LT +276665 393192 LT +272796 397061 LT +272796 415739 LT +276665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 419608 MT +311404 415739 LT +311404 397061 LT +307535 393192 LT +302065 393192 LT +298196 397061 LT +298196 415739 LT +302065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 419608 MT +336804 415739 LT +336804 397061 LT +332935 393192 LT +327465 393192 LT +323596 397061 LT +323596 415739 LT +327465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 419608 MT +362204 415739 LT +362204 397061 LT +358335 393192 LT +352865 393192 LT +348996 397061 LT +348996 415739 LT +352865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 419608 MT +387604 415739 LT +387604 397061 LT +383735 393192 LT +378265 393192 LT +374396 397061 LT +374396 415739 LT +378265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 495808 MT +387604 491939 LT +387604 473261 LT +383735 469392 LT +378265 469392 LT +374396 473261 LT +374396 491939 LT +378265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 495808 MT +362204 491939 LT +362204 473261 LT +358335 469392 LT +352865 469392 LT +348996 473261 LT +348996 491939 LT +352865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 495808 MT +336804 491939 LT +336804 473261 LT +332935 469392 LT +327465 469392 LT +323596 473261 LT +323596 491939 LT +327465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 495808 MT +311404 491939 LT +311404 473261 LT +307535 469392 LT +302065 469392 LT +298196 473261 LT +298196 491939 LT +302065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 495808 MT +286004 491939 LT +286004 473261 LT +282135 469392 LT +276665 469392 LT +272796 473261 LT +272796 491939 LT +276665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 495808 MT +260604 491939 LT +260604 473261 LT +256735 469392 LT +251265 469392 LT +247396 473261 LT +247396 491939 LT +251265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 495808 MT +235204 491939 LT +235204 473261 LT +231335 469392 LT +225865 469392 LT +221996 473261 LT +221996 491939 LT +225865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 495808 MT +209804 491939 LT +209804 473261 LT +205935 469392 LT +200465 469392 LT +196596 473261 LT +196596 491939 LT +200465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 495808 MT +184404 491939 LT +184404 473261 LT +180535 469392 LT +175065 469392 LT +171196 473261 LT +171196 491939 LT +175065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 495808 MT +159004 491939 LT +159004 473261 LT +155135 469392 LT +149665 469392 LT +145796 473261 LT +145796 491939 LT +149665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 495808 MT +133604 491939 LT +133604 473261 LT +129735 469392 LT +124265 469392 LT +120396 473261 LT +120396 491939 LT +124265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 495808 MT +108204 491939 LT +108204 473261 LT +104335 469392 LT +98865 469392 LT +94996 473261 LT +94996 491939 LT +98865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 495808 MT +82804 491939 LT +82804 473261 LT +78935 469392 LT +73465 469392 LT +69596 473261 LT +69596 491939 LT +73465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 495808 MT +57404 491939 LT +57404 473261 LT +53535 469392 LT +48065 469392 LT +44196 473261 LT +44196 491939 LT +48065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 365565 MT +78935 361696 LT +73465 361696 LT +69596 365565 LT +69596 371035 LT +73465 374904 LT +78935 374904 LT +82804 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 263965 MT +78935 260096 LT +73465 260096 LT +69596 263965 LT +69596 269435 LT +73465 273304 LT +78935 273304 LT +82804 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 365565 MT +129735 361696 LT +124265 361696 LT +120396 365565 LT +120396 371035 LT +124265 374904 LT +129735 374904 LT +133604 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 263965 MT +129735 260096 LT +124265 260096 LT +120396 263965 LT +120396 269435 LT +124265 273304 LT +129735 273304 LT +133604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 107581 MT +460019 103310 LT +453981 103310 LT +449710 107581 LT +449710 113619 LT +453981 117890 LT +460019 117890 LT +464290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 107581 MT +435019 103310 LT +428981 103310 LT +424710 107581 LT +424710 113619 LT +428981 117890 LT +435019 117890 LT +439290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 87581 MT +435019 83310 LT +428981 83310 LT +424710 87581 LT +424710 93619 LT +428981 97890 LT +435019 97890 LT +439290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 87581 MT +460019 83310 LT +453981 83310 LT +449710 87581 LT +449710 93619 LT +453981 97890 LT +460019 97890 LT +464290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +298196 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +247396 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 238565 MT +256735 234696 LT +251265 234696 LT +247396 238565 LT +247396 244035 LT +251265 247904 LT +256735 247904 LT +260604 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 263965 MT +256735 260096 LT +251265 260096 LT +247396 263965 LT +247396 269435 LT +251265 273304 LT +256735 273304 LT +260604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 238565 MT +307535 234696 LT +302065 234696 LT +298196 238565 LT +298196 244035 LT +302065 247904 LT +307535 247904 LT +311404 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 263965 MT +307535 260096 LT +302065 260096 LT +298196 263965 LT +298196 269435 LT +302065 273304 LT +307535 273304 LT +311404 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 301855 MT +409345 297688 LT +403455 297688 LT +399288 301855 LT +399288 307745 LT +403455 311912 LT +409345 311912 LT +413512 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 301855 MT +434745 297688 LT +428855 297688 LT +424688 301855 LT +424688 307745 LT +428855 311912 LT +434745 311912 LT +438912 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 276455 MT +409345 272288 LT +403455 272288 LT +399288 276455 LT +399288 282345 LT +403455 286512 LT +409345 286512 LT +413512 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 276455 MT +434745 272288 LT +428855 272288 LT +424688 276455 LT +424688 282345 LT +428855 286512 LT +434745 286512 LT +438912 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 251055 MT +409345 246888 LT +403455 246888 LT +399288 251055 LT +399288 256945 LT +403455 261112 LT +409345 261112 LT +413512 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 251055 MT +434745 246888 LT +428855 246888 LT +424688 251055 LT +424688 256945 LT +428855 261112 LT +434745 261112 LT +438912 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 225655 MT +409345 221488 LT +403455 221488 LT +399288 225655 LT +399288 231545 LT +403455 235712 LT +409345 235712 LT +413512 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 225655 MT +434745 221488 LT +428855 221488 LT +424688 225655 LT +424688 231545 LT +428855 235712 LT +434745 235712 LT +438912 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 200255 MT +409345 196088 LT +403455 196088 LT +399288 200255 LT +399288 206145 LT +403455 210312 LT +409345 210312 LT +413512 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 200255 MT +434745 196088 LT +428855 196088 LT +424688 200255 LT +424688 206145 LT +428855 210312 LT +434745 210312 LT +438912 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 213165 MT +78935 209296 LT +73465 209296 LT +69596 213165 LT +69596 218635 LT +73465 222504 LT +78935 222504 LT +82804 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +184404 213165 MT +180535 209296 LT +175065 209296 LT +171196 213165 LT +171196 218635 LT +175065 222504 LT +180535 222504 LT +184404 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +235204 48065 MT +231335 44196 LT +225865 44196 LT +221996 48065 LT +221996 53535 LT +225865 57404 LT +231335 57404 LT +235204 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 48065 MT +129735 44196 LT +124265 44196 LT +120396 48065 LT +120396 53535 LT +124265 57404 LT +129735 57404 LT +133604 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +286004 136965 MT +282135 133096 LT +276665 133096 LT +272796 136965 LT +272796 142435 LT +276665 146304 LT +282135 146304 LT +286004 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 136965 MT +307535 133096 LT +302065 133096 LT +298196 136965 LT +298196 142435 LT +302065 146304 LT +307535 146304 LT +311404 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +312801 187186 MT +308114 182499 LT +301486 182499 LT +296799 187186 LT +296799 193814 LT +301486 198501 LT +308114 198501 LT +312801 193814 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +271399 182499 16003 16003 E +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 111565 MT +136339 107696 LT +117661 107696 LT +113792 111565 LT +113792 117035 LT +117661 120904 LT +136339 120904 LT +140208 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 111565 MT +237939 107696 LT +219261 107696 LT +215392 111565 LT +215392 117035 LT +219261 120904 LT +237939 120904 LT +241808 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 162365 MT +136339 158496 LT +117661 158496 LT +113792 162365 LT +113792 167835 LT +117661 171704 LT +136339 171704 LT +140208 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 162365 MT +237939 158496 LT +219261 158496 LT +215392 162365 LT +215392 167835 LT +219261 171704 LT +237939 171704 LT +241808 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 479444 MT +455276 474980 LT +433724 474980 LT +429260 479444 LT +429260 485756 LT +433724 490220 LT +455276 490220 LT +459740 485756 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 477520 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 454044 MT +455276 449580 LT +433724 449580 LT +429260 454044 LT +429260 460356 LT +433724 464820 LT +455276 464820 LT +459740 460356 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 452120 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 428644 MT +455276 424180 LT +433724 424180 LT +429260 428644 LT +429260 434956 LT +433724 439420 LT +455276 439420 LT +459740 434956 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 426720 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 419608 MT +57404 415739 LT +57404 397061 LT +53535 393192 LT +48065 393192 LT +44196 397061 LT +44196 415739 LT +48065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 419608 MT +82804 415739 LT +82804 397061 LT +78935 393192 LT +73465 393192 LT +69596 397061 LT +69596 415739 LT +73465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 419608 MT +108204 415739 LT +108204 397061 LT +104335 393192 LT +98865 393192 LT +94996 397061 LT +94996 415739 LT +98865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 419608 MT +133604 415739 LT +133604 397061 LT +129735 393192 LT +124265 393192 LT +120396 397061 LT +120396 415739 LT +124265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 419608 MT +159004 415739 LT +159004 397061 LT +155135 393192 LT +149665 393192 LT +145796 397061 LT +145796 415739 LT +149665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 419608 MT +184404 415739 LT +184404 397061 LT +180535 393192 LT +175065 393192 LT +171196 397061 LT +171196 415739 LT +175065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 419608 MT +209804 415739 LT +209804 397061 LT +205935 393192 LT +200465 393192 LT +196596 397061 LT +196596 415739 LT +200465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 419608 MT +235204 415739 LT +235204 397061 LT +231335 393192 LT +225865 393192 LT +221996 397061 LT +221996 415739 LT +225865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 419608 MT +260604 415739 LT +260604 397061 LT +256735 393192 LT +251265 393192 LT +247396 397061 LT +247396 415739 LT +251265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 419608 MT +286004 415739 LT +286004 397061 LT +282135 393192 LT +276665 393192 LT +272796 397061 LT +272796 415739 LT +276665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 419608 MT +311404 415739 LT +311404 397061 LT +307535 393192 LT +302065 393192 LT +298196 397061 LT +298196 415739 LT +302065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 419608 MT +336804 415739 LT +336804 397061 LT +332935 393192 LT +327465 393192 LT +323596 397061 LT +323596 415739 LT +327465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 419608 MT +362204 415739 LT +362204 397061 LT +358335 393192 LT +352865 393192 LT +348996 397061 LT +348996 415739 LT +352865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 419608 MT +387604 415739 LT +387604 397061 LT +383735 393192 LT +378265 393192 LT +374396 397061 LT +374396 415739 LT +378265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 495808 MT +387604 491939 LT +387604 473261 LT +383735 469392 LT +378265 469392 LT +374396 473261 LT +374396 491939 LT +378265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 495808 MT +362204 491939 LT +362204 473261 LT +358335 469392 LT +352865 469392 LT +348996 473261 LT +348996 491939 LT +352865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 495808 MT +336804 491939 LT +336804 473261 LT +332935 469392 LT +327465 469392 LT +323596 473261 LT +323596 491939 LT +327465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 495808 MT +311404 491939 LT +311404 473261 LT +307535 469392 LT +302065 469392 LT +298196 473261 LT +298196 491939 LT +302065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 495808 MT +286004 491939 LT +286004 473261 LT +282135 469392 LT +276665 469392 LT +272796 473261 LT +272796 491939 LT +276665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 495808 MT +260604 491939 LT +260604 473261 LT +256735 469392 LT +251265 469392 LT +247396 473261 LT +247396 491939 LT +251265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 495808 MT +235204 491939 LT +235204 473261 LT +231335 469392 LT +225865 469392 LT +221996 473261 LT +221996 491939 LT +225865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 495808 MT +209804 491939 LT +209804 473261 LT +205935 469392 LT +200465 469392 LT +196596 473261 LT +196596 491939 LT +200465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 495808 MT +184404 491939 LT +184404 473261 LT +180535 469392 LT +175065 469392 LT +171196 473261 LT +171196 491939 LT +175065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 495808 MT +159004 491939 LT +159004 473261 LT +155135 469392 LT +149665 469392 LT +145796 473261 LT +145796 491939 LT +149665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 495808 MT +133604 491939 LT +133604 473261 LT +129735 469392 LT +124265 469392 LT +120396 473261 LT +120396 491939 LT +124265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 495808 MT +108204 491939 LT +108204 473261 LT +104335 469392 LT +98865 469392 LT +94996 473261 LT +94996 491939 LT +98865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 495808 MT +82804 491939 LT +82804 473261 LT +78935 469392 LT +73465 469392 LT +69596 473261 LT +69596 491939 LT +73465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 495808 MT +57404 491939 LT +57404 473261 LT +53535 469392 LT +48065 469392 LT +44196 473261 LT +44196 491939 LT +48065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 365565 MT +78935 361696 LT +73465 361696 LT +69596 365565 LT +69596 371035 LT +73465 374904 LT +78935 374904 LT +82804 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 263965 MT +78935 260096 LT +73465 260096 LT +69596 263965 LT +69596 269435 LT +73465 273304 LT +78935 273304 LT +82804 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 365565 MT +129735 361696 LT +124265 361696 LT +120396 365565 LT +120396 371035 LT +124265 374904 LT +129735 374904 LT +133604 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 263965 MT +129735 260096 LT +124265 260096 LT +120396 263965 LT +120396 269435 LT +124265 273304 LT +129735 273304 LT +133604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 107581 MT +460019 103310 LT +453981 103310 LT +449710 107581 LT +449710 113619 LT +453981 117890 LT +460019 117890 LT +464290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 107581 MT +435019 103310 LT +428981 103310 LT +424710 107581 LT +424710 113619 LT +428981 117890 LT +435019 117890 LT +439290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 87581 MT +435019 83310 LT +428981 83310 LT +424710 87581 LT +424710 93619 LT +428981 97890 LT +435019 97890 LT +439290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 87581 MT +460019 83310 LT +453981 83310 LT +449710 87581 LT +449710 93619 LT +453981 97890 LT +460019 97890 LT +464290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +298196 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +247396 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 238565 MT +256735 234696 LT +251265 234696 LT +247396 238565 LT +247396 244035 LT +251265 247904 LT +256735 247904 LT +260604 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 263965 MT +256735 260096 LT +251265 260096 LT +247396 263965 LT +247396 269435 LT +251265 273304 LT +256735 273304 LT +260604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 238565 MT +307535 234696 LT +302065 234696 LT +298196 238565 LT +298196 244035 LT +302065 247904 LT +307535 247904 LT +311404 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 263965 MT +307535 260096 LT +302065 260096 LT +298196 263965 LT +298196 269435 LT +302065 273304 LT +307535 273304 LT +311404 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 301855 MT +409345 297688 LT +403455 297688 LT +399288 301855 LT +399288 307745 LT +403455 311912 LT +409345 311912 LT +413512 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 301855 MT +434745 297688 LT +428855 297688 LT +424688 301855 LT +424688 307745 LT +428855 311912 LT +434745 311912 LT +438912 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 276455 MT +409345 272288 LT +403455 272288 LT +399288 276455 LT +399288 282345 LT +403455 286512 LT +409345 286512 LT +413512 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 276455 MT +434745 272288 LT +428855 272288 LT +424688 276455 LT +424688 282345 LT +428855 286512 LT +434745 286512 LT +438912 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 251055 MT +409345 246888 LT +403455 246888 LT +399288 251055 LT +399288 256945 LT +403455 261112 LT +409345 261112 LT +413512 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 251055 MT +434745 246888 LT +428855 246888 LT +424688 251055 LT +424688 256945 LT +428855 261112 LT +434745 261112 LT +438912 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 225655 MT +409345 221488 LT +403455 221488 LT +399288 225655 LT +399288 231545 LT +403455 235712 LT +409345 235712 LT +413512 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 225655 MT +434745 221488 LT +428855 221488 LT +424688 225655 LT +424688 231545 LT +428855 235712 LT +434745 235712 LT +438912 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 200255 MT +409345 196088 LT +403455 196088 LT +399288 200255 LT +399288 206145 LT +403455 210312 LT +409345 210312 LT +413512 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 200255 MT +434745 196088 LT +428855 196088 LT +424688 200255 LT +424688 206145 LT +428855 210312 LT +434745 210312 LT +438912 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 213165 MT +78935 209296 LT +73465 209296 LT +69596 213165 LT +69596 218635 LT +73465 222504 LT +78935 222504 LT +82804 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +184404 213165 MT +180535 209296 LT +175065 209296 LT +171196 213165 LT +171196 218635 LT +175065 222504 LT +180535 222504 LT +184404 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +235204 48065 MT +231335 44196 LT +225865 44196 LT +221996 48065 LT +221996 53535 LT +225865 57404 LT +231335 57404 LT +235204 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 48065 MT +129735 44196 LT +124265 44196 LT +120396 48065 LT +120396 53535 LT +124265 57404 LT +129735 57404 LT +133604 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +286004 136965 MT +282135 133096 LT +276665 133096 LT +272796 136965 LT +272796 142435 LT +276665 146304 LT +282135 146304 LT +286004 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 136965 MT +307535 133096 LT +302065 133096 LT +298196 136965 LT +298196 142435 LT +302065 146304 LT +307535 146304 LT +311404 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +312801 187186 MT +308114 182499 LT +301486 182499 LT +296799 187186 LT +296799 193814 LT +301486 198501 LT +308114 198501 LT +312801 193814 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +271399 182499 16003 16003 E +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 111565 MT +136339 107696 LT +117661 107696 LT +113792 111565 LT +113792 117035 LT +117661 120904 LT +136339 120904 LT +140208 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 111565 MT +237939 107696 LT +219261 107696 LT +215392 111565 LT +215392 117035 LT +219261 120904 LT +237939 120904 LT +241808 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 162365 MT +136339 158496 LT +117661 158496 LT +113792 162365 LT +113792 167835 LT +117661 171704 LT +136339 171704 LT +140208 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 162365 MT +237939 158496 LT +219261 158496 LT +215392 162365 LT +215392 167835 LT +219261 171704 LT +237939 171704 LT +241808 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 479444 MT +455276 474980 LT +433724 474980 LT +429260 479444 LT +429260 485756 LT +433724 490220 LT +455276 490220 LT +459740 485756 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 477520 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 454044 MT +455276 449580 LT +433724 449580 LT +429260 454044 LT +429260 460356 LT +433724 464820 LT +455276 464820 LT +459740 460356 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 452120 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 428644 MT +455276 424180 LT +433724 424180 LT +429260 428644 LT +429260 434956 LT +433724 439420 LT +455276 439420 LT +459740 434956 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 426720 10161 10161 E +1 0 0 d2 1 1 PE +1 0 d2 BR +NP +538063 -6350 MT +538063 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +538063 -6350 LT +538063 -6350 LT +CP BF QS +NP +538063 -6350 MT +538063 -6350 LT +538063 -6350 LT +538063 -6350 LT +538063 565190 LT +538063 565190 LT +538063 565190 LT +538063 565190 LT +CP BF QS +NP +538063 565190 MT +538063 565190 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +538063 565190 LT +538063 565190 LT +CP BF QS +NP +-4657 -6350 MT +-4657 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +CP BF QS +NP +372800 63500 MT +372848 64546 LT +372990 65583 LT +373226 66603 LT +373554 67597 LT +373972 68557 LT +374474 69475 LT +375058 70344 LT +375719 71156 LT +376451 71905 LT +377247 72584 LT +378103 73187 LT +379009 73711 LT +379960 74149 LT +380946 74500 LT +381960 74759 LT +382994 74926 LT +384038 74997 LT +385085 74973 LT +386125 74854 LT +387150 74641 LT +388151 74336 LT +389121 73941 LT +390050 73459 LT +390932 72895 LT +391759 72253 LT +392524 71539 LT +393221 70758 LT +393844 69916 LT +394388 69022 LT +394848 68082 LT +395221 67103 LT +395503 66095 LT +395693 65066 LT +395788 64023 LT +395788 62977 LT +395693 61934 LT +395503 60905 LT +395221 59897 LT +394848 58918 LT +394388 57978 LT +393844 57084 LT +393221 56242 LT +392524 55461 LT +391759 54747 LT +390932 54105 LT +390050 53541 LT +389121 53059 LT +388151 52664 LT +387150 52359 LT +386125 52146 LT +385085 52027 LT +384038 52003 LT +382994 52074 LT +381960 52241 LT +380946 52500 LT +379960 52851 LT +379009 53289 LT +378103 53813 LT +377247 54416 LT +376451 55095 LT +375719 55844 LT +375058 56656 LT +374474 57525 LT +373972 58443 LT +373554 59403 LT +373226 60397 LT +372990 61417 LT +372848 62454 LT +372800 63500 LT +372800 63500 LT +372848 64546 LT +372990 65583 LT +373226 66603 LT +373554 67597 LT +373972 68557 LT +374474 69475 LT +375058 70344 LT +375719 71156 LT +376451 71905 LT +377247 72584 LT +378103 73187 LT +379009 73711 LT +379960 74149 LT +380946 74500 LT +381960 74759 LT +382994 74926 LT +384038 74997 LT +385085 74973 LT +386125 74854 LT +387150 74641 LT +388151 74336 LT +389121 73941 LT +390050 73459 LT +390932 72895 LT +391759 72253 LT +392524 71539 LT +393221 70758 LT +393844 69916 LT +394388 69022 LT +394848 68082 LT +395221 67103 LT +395503 66095 LT +395693 65066 LT +395788 64023 LT +395788 62977 LT +395693 61934 LT +395503 60905 LT +395221 59897 LT +394848 58918 LT +394388 57978 LT +393844 57084 LT +393221 56242 LT +392524 55461 LT +391759 54747 LT +390932 54105 LT +390050 53541 LT +389121 53059 LT +388151 52664 LT +387150 52359 LT +386125 52146 LT +385085 52027 LT +384038 52003 LT +382994 52074 LT +381960 52241 LT +380946 52500 LT +379960 52851 LT +379009 53289 LT +378103 53813 LT +377247 54416 LT +376451 55095 LT +375719 55844 LT +375058 56656 LT +374474 57525 LT +373972 58443 LT +373554 59403 LT +373226 60397 LT +372990 61417 LT +372848 62454 LT +372800 63500 LT +CP BF QS +NP +493200 63500 MT +493248 64546 LT +493390 65583 LT +493626 66603 LT +493954 67597 LT +494372 68557 LT +494874 69475 LT +495458 70344 LT +496119 71156 LT +496851 71905 LT +497647 72584 LT +498503 73187 LT +499409 73711 LT +500360 74149 LT +501346 74500 LT +502360 74759 LT +503394 74926 LT +504438 74997 LT +505485 74973 LT +506525 74854 LT +507550 74641 LT +508551 74336 LT +509521 73941 LT +510450 73459 LT +511332 72895 LT +512159 72253 LT +512924 71539 LT +513621 70758 LT +514244 69916 LT +514788 69022 LT +515248 68082 LT +515621 67103 LT +515903 66095 LT +516093 65066 LT +516188 64023 LT +516188 62977 LT +516093 61934 LT +515903 60905 LT +515621 59897 LT +515248 58918 LT +514788 57978 LT +514244 57084 LT +513621 56242 LT +512924 55461 LT +512159 54747 LT +511332 54105 LT +510450 53541 LT +509521 53059 LT +508551 52664 LT +507550 52359 LT +506525 52146 LT +505485 52027 LT +504438 52003 LT +503394 52074 LT +502360 52241 LT +501346 52500 LT +500360 52851 LT +499409 53289 LT +498503 53813 LT +497647 54416 LT +496851 55095 LT +496119 55844 LT +495458 56656 LT +494874 57525 LT +494372 58443 LT +493954 59403 LT +493626 60397 LT +493390 61417 LT +493248 62454 LT +493200 63500 LT +493200 63500 LT +493248 64546 LT +493390 65583 LT +493626 66603 LT +493954 67597 LT +494372 68557 LT +494874 69475 LT +495458 70344 LT +496119 71156 LT +496851 71905 LT +497647 72584 LT +498503 73187 LT +499409 73711 LT +500360 74149 LT +501346 74500 LT +502360 74759 LT +503394 74926 LT +504438 74997 LT +505485 74973 LT +506525 74854 LT +507550 74641 LT +508551 74336 LT +509521 73941 LT +510450 73459 LT +511332 72895 LT +512159 72253 LT +512924 71539 LT +513621 70758 LT +514244 69916 LT +514788 69022 LT +515248 68082 LT +515621 67103 LT +515903 66095 LT +516093 65066 LT +516188 64023 LT +516188 62977 LT +516093 61934 LT +515903 60905 LT +515621 59897 LT +515248 58918 LT +514788 57978 LT +514244 57084 LT +513621 56242 LT +512924 55461 LT +512159 54747 LT +511332 54105 LT +510450 53541 LT +509521 53059 LT +508551 52664 LT +507550 52359 LT +506525 52146 LT +505485 52027 LT +504438 52003 LT +503394 52074 LT +502360 52241 LT +501346 52500 LT +500360 52851 LT +499409 53289 LT +498503 53813 LT +497647 54416 LT +496851 55095 LT +496119 55844 LT +495458 56656 LT +494874 57525 LT +494372 58443 LT +493954 59403 LT +493626 60397 LT +493390 61417 LT +493248 62454 LT +493200 63500 LT +CP BF QS +1 0 128 d2 1 1 PE +1 128 d2 BR +NP +31326 416240 MT +30830 415744 LT +30130 415744 LT +29634 416240 LT +29634 438531 LT +30130 439027 LT +30830 439027 LT +31326 438531 LT +CP BF QS +NP +30164 437388 MT +29718 437834 LT +29718 438466 LT +30164 438912 LT +30480 438912 LT +31354 438981 LT +33017 439521 LT +34431 440549 LT +35459 441963 LT +35999 443626 LT +35999 445374 LT +35459 447037 LT +34431 448451 LT +33017 449479 LT +31354 450019 LT +30480 450088 LT +30164 450088 LT +29718 450534 LT +29718 451166 LT +30164 451612 LT +30480 451612 LT +31606 451611 LT +33749 450915 LT +35571 449591 LT +36895 447769 LT +37591 445626 LT +37591 443374 LT +36895 441231 LT +35571 439409 LT +33749 438085 LT +31606 437389 LT +30480 437388 LT +CP BF QS +NP +402171 416240 MT +401675 415744 LT +30130 415744 LT +29634 416240 LT +29634 416940 LT +30130 417436 LT +401675 417436 LT +402171 416940 LT +CP BF QS +NP +31326 450532 MT +30830 450036 LT +30130 450036 LT +29634 450532 LT +29634 472824 LT +30130 473320 LT +30830 473320 LT +31326 472824 LT +CP BF QS +NP +402171 472124 MT +401675 471628 LT +30130 471628 LT +29634 472124 LT +29634 472824 LT +30130 473320 LT +401675 473320 LT +402171 472824 LT +CP BF QS +NP +402171 416240 MT +401675 415744 LT +400975 415744 LT +400479 416240 LT +400479 472824 LT +400975 473320 LT +401675 473320 LT +402171 472824 LT +CP BF QS +NP +88392 346394 MT +87946 345948 LT +87314 345948 LT +86868 346394 LT +86868 346710 LT +86834 347057 LT +86568 347698 LT +86078 348188 LT +85437 348454 LT +85090 348488 LT +84774 348488 LT +84328 348934 LT +84328 349566 LT +84774 350012 LT +85090 350012 LT +85747 350011 LT +86960 349509 LT +87889 348580 LT +88391 347367 LT +88392 346710 LT +CP BF QS +NP +67626 350012 MT +68072 349566 LT +68072 348934 LT +67626 348488 LT +67310 348488 LT +66963 348454 LT +66322 348188 LT +65832 347698 LT +65566 347057 LT +65532 346710 LT +65532 346394 LT +65086 345948 LT +64454 345948 LT +64008 346394 LT +64008 346710 LT +64009 347367 LT +64511 348580 LT +65440 349509 LT +66653 350011 LT +67310 350012 LT +CP BF QS +NP +64008 288606 MT +64454 289052 LT +65086 289052 LT +65532 288606 LT +65532 288290 LT +65566 287943 LT +65832 287302 LT +66322 286812 LT +66963 286546 LT +67310 286512 LT +67626 286512 LT +68072 286066 LT +68072 285434 LT +67626 284988 LT +67310 284988 LT +66653 284989 LT +65440 285491 LT +64511 286420 LT +64009 287633 LT +64008 288290 LT +CP BF QS +NP +84774 284988 MT +84328 285434 LT +84328 286066 LT +84774 286512 LT +85090 286512 LT +85437 286546 LT +86078 286812 LT +86568 287302 LT +86834 287943 LT +86868 288290 LT +86868 288606 LT +87314 289052 LT +87946 289052 LT +88392 288606 LT +88392 288290 LT +88391 287633 LT +87889 286420 LT +86960 285491 LT +85747 284989 LT +85090 284988 LT +CP BF QS +NP +85937 348925 MT +85441 348429 LT +66961 348429 LT +66465 348925 LT +66465 349625 LT +66961 350121 LT +85441 350121 LT +85937 349625 LT +CP BF QS +NP +88477 342575 MT +87981 342079 LT +87281 342079 LT +86785 342575 LT +86785 347085 LT +87281 347581 LT +87981 347581 LT +88477 347085 LT +CP BF QS +NP +86959 341056 MT +86711 340808 LT +86011 340808 LT +85515 341304 LT +85515 342004 LT +87033 343523 LT +87281 343771 LT +87981 343771 LT +88477 343275 LT +88477 342575 LT +CP BF QS +NP +65617 342575 MT +65121 342079 LT +64421 342079 LT +63925 342575 LT +63925 347085 LT +64421 347581 LT +65121 347581 LT +65617 347085 LT +CP BF QS +NP +66887 341304 MT +66391 340808 LT +65691 340808 LT +65443 341056 LT +63925 342575 LT +63925 343275 LT +64421 343771 LT +65121 343771 LT +65369 343523 LT +66887 342004 LT +CP BF QS +NP +88477 291771 MT +87981 291275 LT +87281 291275 LT +85515 293041 LT +85515 293741 LT +86011 294237 LT +86711 294237 LT +88477 292471 LT +CP BF QS +NP +87207 293041 MT +86711 292545 LT +86011 292545 LT +85515 293041 LT +85515 342004 LT +86011 342500 LT +86711 342500 LT +87207 342004 LT +CP BF QS +NP +66887 293041 MT +65121 291275 LT +64421 291275 LT +63925 291771 LT +63925 292471 LT +65691 294237 LT +66391 294237 LT +66887 293741 LT +CP BF QS +NP +66887 293041 MT +66391 292545 LT +65691 292545 LT +65195 293041 LT +65195 342004 LT +65691 342500 LT +66391 342500 LT +66887 342004 LT +CP BF QS +NP +88477 287961 MT +87981 287465 LT +87281 287465 LT +86785 287961 LT +86785 292471 LT +87281 292967 LT +87981 292967 LT +88477 292471 LT +CP BF QS +NP +65617 287961 MT +65121 287465 LT +64421 287465 LT +63925 287961 LT +63925 292471 LT +64421 292967 LT +65121 292967 LT +65617 292471 LT +CP BF QS +NP +85937 285420 MT +85441 284924 LT +66961 284924 LT +66465 285420 LT +66465 286120 LT +66961 286616 LT +85441 286616 LT +85937 286120 LT +CP BF QS +73152 277114 6097 8637 R +73152 349250 6097 8637 R +NP +139192 346394 MT +138746 345948 LT +138114 345948 LT +137668 346394 LT +137668 346710 LT +137634 347057 LT +137368 347698 LT +136878 348188 LT +136237 348454 LT +135890 348488 LT +135574 348488 LT +135128 348934 LT +135128 349566 LT +135574 350012 LT +135890 350012 LT +136547 350011 LT +137760 349509 LT +138689 348580 LT +139191 347367 LT +139192 346710 LT +CP BF QS +NP +118426 350012 MT +118872 349566 LT +118872 348934 LT +118426 348488 LT +118110 348488 LT +117763 348454 LT +117122 348188 LT +116632 347698 LT +116366 347057 LT +116332 346710 LT +116332 346394 LT +115886 345948 LT +115254 345948 LT +114808 346394 LT +114808 346710 LT +114809 347367 LT +115311 348580 LT +116240 349509 LT +117453 350011 LT +118110 350012 LT +CP BF QS +NP +114808 288606 MT +115254 289052 LT +115886 289052 LT +116332 288606 LT +116332 288290 LT +116366 287943 LT +116632 287302 LT +117122 286812 LT +117763 286546 LT +118110 286512 LT +118426 286512 LT +118872 286066 LT +118872 285434 LT +118426 284988 LT +118110 284988 LT +117453 284989 LT +116240 285491 LT +115311 286420 LT +114809 287633 LT +114808 288290 LT +CP BF QS +NP +135574 284988 MT +135128 285434 LT +135128 286066 LT +135574 286512 LT +135890 286512 LT +136237 286546 LT +136878 286812 LT +137368 287302 LT +137634 287943 LT +137668 288290 LT +137668 288606 LT +138114 289052 LT +138746 289052 LT +139192 288606 LT +139192 288290 LT +139191 287633 LT +138689 286420 LT +137760 285491 LT +136547 284989 LT +135890 284988 LT +CP BF QS +NP +136738 348925 MT +136242 348429 LT +117761 348429 LT +117265 348925 LT +117265 349625 LT +117761 350121 LT +136242 350121 LT +136738 349625 LT +CP BF QS +NP +139278 342575 MT +138782 342079 LT +138082 342079 LT +137586 342575 LT +137586 347085 LT +138082 347581 LT +138782 347581 LT +139278 347085 LT +CP BF QS +NP +137760 341056 MT +137512 340808 LT +136812 340808 LT +136316 341304 LT +136316 342004 LT +137834 343523 LT +138082 343771 LT +138782 343771 LT +139278 343275 LT +139278 342575 LT +CP BF QS +NP +116417 342575 MT +115921 342079 LT +115221 342079 LT +114725 342575 LT +114725 347085 LT +115221 347581 LT +115921 347581 LT +116417 347085 LT +CP BF QS +NP +117687 341304 MT +117191 340808 LT +116491 340808 LT +116243 341056 LT +114725 342575 LT +114725 343275 LT +115221 343771 LT +115921 343771 LT +116169 343523 LT +117687 342004 LT +CP BF QS +NP +139278 291771 MT +138782 291275 LT +138082 291275 LT +136316 293041 LT +136316 293741 LT +136812 294237 LT +137512 294237 LT +139278 292471 LT +CP BF QS +NP +138008 293041 MT +137512 292545 LT +136812 292545 LT +136316 293041 LT +136316 342004 LT +136812 342500 LT +137512 342500 LT +138008 342004 LT +CP BF QS +NP +117687 293041 MT +115921 291275 LT +115221 291275 LT +114725 291771 LT +114725 292471 LT +116491 294237 LT +117191 294237 LT +117687 293741 LT +CP BF QS +NP +117687 293041 MT +117191 292545 LT +116491 292545 LT +115995 293041 LT +115995 342004 LT +116491 342500 LT +117191 342500 LT +117687 342004 LT +CP BF QS +NP +139278 287961 MT +138782 287465 LT +138082 287465 LT +137586 287961 LT +137586 292471 LT +138082 292967 LT +138782 292967 LT +139278 292471 LT +CP BF QS +NP +116417 287961 MT +115921 287465 LT +115221 287465 LT +114725 287961 LT +114725 292471 LT +115221 292967 LT +115921 292967 LT +116417 292471 LT +CP BF QS +NP +136738 285420 MT +136242 284924 LT +117761 284924 LT +117265 285420 LT +117265 286120 LT +117761 286616 LT +136242 286616 LT +136738 286120 LT +CP BF QS +123952 277114 6097 8637 R +123952 349250 6097 8637 R +NP +386931 -38629 MT +386187 -39373 LT +385135 -39373 LT +384391 -38629 LT +384391 119915 LT +385135 120659 LT +386187 120659 LT +386931 119915 LT +CP BF QS +NP +504619 -38629 MT +503875 -39373 LT +385135 -39373 LT +384391 -38629 LT +384391 -37577 LT +385135 -36833 LT +503875 -36833 LT +504619 -37577 LT +CP BF QS +NP +504619 -38629 MT +503875 -39373 LT +502823 -39373 LT +502079 -38629 LT +502079 119915 LT +502823 120659 LT +503875 120659 LT +504619 119915 LT +CP BF QS +NP +504619 118863 MT +503875 118119 LT +385135 118119 LT +384391 118863 LT +384391 119915 LT +385135 120659 LT +503875 120659 LT +504619 119915 LT +CP BF QS +NP +419900 61054 MT +420724 61126 LT +422273 61690 LT +423536 62749 LT +424360 64177 LT +424646 65800 LT +424360 67423 LT +423536 68851 LT +422273 69910 LT +420724 70474 LT +419900 70546 LT +419900 71054 LT +420826 71054 LT +422568 70420 LT +423987 69229 LT +424913 67625 LT +425235 65800 LT +424913 63975 LT +423987 62371 LT +422567 61180 LT +420826 60546 LT +419900 60546 LT +CP BF QS +NP +419900 51054 MT +420724 51126 LT +422273 51690 LT +423536 52749 LT +424360 54177 LT +424646 55800 LT +424360 57423 LT +423536 58851 LT +422273 59910 LT +420724 60474 LT +419900 60546 LT +419900 61054 LT +420826 61054 LT +422568 60420 LT +423987 59229 LT +424913 57625 LT +425235 55800 LT +424913 53975 LT +423987 52371 LT +422567 51180 LT +420826 50546 LT +419900 50546 LT +CP BF QS +NP +481150 65546 MT +480326 65474 LT +478777 64910 LT +477514 63851 LT +476690 62423 LT +476404 60800 LT +476690 59177 LT +477514 57749 LT +478777 56690 LT +480326 56126 LT +481150 56054 LT +481150 55546 LT +480224 55546 LT +478482 56180 LT +477063 57371 LT +476137 58975 LT +475815 60800 LT +476137 62625 LT +477063 64229 LT +478483 65420 LT +480224 66054 LT +481150 66054 LT +CP BF QS +NP +478650 70546 MT +477378 70463 LT +474920 69804 LT +472717 68532 LT +470918 66733 LT +469646 64530 LT +468987 62072 LT +468987 59528 LT +469646 57070 LT +470918 54867 LT +472717 53068 LT +474920 51796 LT +477378 51137 LT +478650 51054 LT +478650 50546 LT +477300 50546 LT +474692 51245 LT +472354 52595 LT +470445 54504 LT +469095 56842 LT +468396 59450 LT +468396 62150 LT +469095 64758 LT +470445 67096 LT +472354 69005 LT +474692 70355 LT +477300 71054 LT +478650 71054 LT +CP BF QS +NP +486116 65548 MT +484886 65671 LT +482414 65671 LT +481184 65548 LT +481116 66052 LT +482378 66220 LT +484922 66220 LT +486184 66052 LT +CP BF QS +NP +486205 70000 MT +484332 70286 LT +480553 70559 LT +478658 70546 LT +478642 71054 LT +480564 71117 LT +484401 70839 LT +486295 70500 LT +CP BF QS +NP +478649 51054 MT +480535 51138 LT +484257 51759 LT +486069 52291 LT +486231 51810 LT +484399 51191 LT +480585 50555 LT +478651 50546 LT +CP BF QS +NP +461045 58046 MT +460896 58195 LT +460896 58405 LT +461045 58554 LT +461150 58554 LT +462088 58628 LT +463872 59208 LT +465390 60310 LT +466492 61828 LT +467072 63612 LT +467072 65488 LT +466492 67272 LT +465390 68790 LT +463872 69892 LT +462088 70472 LT +461150 70546 LT +461045 70546 LT +460896 70695 LT +460896 70905 LT +461045 71054 LT +461150 71054 LT +462180 71054 LT +464140 70417 LT +465806 69206 LT +467017 67540 LT +467654 65580 LT +467654 63520 LT +467017 61560 LT +465806 59894 LT +464140 58683 LT +462180 58046 LT +461150 58046 LT +CP BF QS +NP +457295 61796 MT +457146 61945 LT +457146 62155 LT +457295 62304 LT +457400 62304 LT +457820 62359 LT +458546 62779 LT +458966 63505 LT +458966 64345 LT +458546 65071 LT +457820 65491 LT +457400 65546 LT +457295 65546 LT +457146 65695 LT +457146 65905 LT +457295 66054 LT +457400 66054 LT +457970 66054 LT +458958 65483 LT +459529 64495 LT +459529 63355 LT +458958 62367 LT +457970 61796 LT +457400 61796 LT +CP BF QS +NP +406404 50505 MT +406280 50381 LT +406106 50381 LT +405982 50505 LT +405982 70577 LT +406106 70701 LT +406280 70701 LT +406404 70577 LT +CP BF QS +NP +412754 50505 MT +412630 50381 LT +406106 50381 LT +405982 50505 LT +405982 50679 LT +406106 50803 LT +412630 50803 LT +412754 50679 LT +CP BF QS +NP +412754 50505 MT +412630 50381 LT +412456 50381 LT +412332 50505 LT +412332 60840 LT +412456 60964 LT +412630 60964 LT +412754 60840 LT +CP BF QS +NP +412754 60666 MT +412630 60542 LT +412456 60542 LT +412332 60666 LT +412332 70577 LT +412456 70701 LT +412630 70701 LT +412754 70577 LT +CP BF QS +NP +412754 70403 MT +412630 70279 LT +406106 70279 LT +405982 70403 LT +405982 70577 LT +406106 70701 LT +412630 70701 LT +412754 70577 LT +CP BF QS +NP +420374 65323 MT +420250 65199 LT +420100 65199 LT +412408 70327 LT +412332 70403 LT +412332 70577 LT +412456 70701 LT +412606 70701 LT +420298 65573 LT +420374 65497 LT +CP BF QS +NP +420374 65323 MT +420295 65244 LT +412602 60542 LT +412456 60542 LT +412332 60666 LT +412332 60840 LT +412411 60919 LT +420104 65621 LT +420250 65621 LT +420374 65497 LT +CP BF QS +NP +420374 55585 MT +420250 55461 LT +420100 55461 LT +412408 60590 LT +412332 60666 LT +412332 60840 LT +412456 60964 LT +412606 60964 LT +420298 55835 LT +420374 55759 LT +CP BF QS +NP +420374 55585 MT +420298 55509 LT +412606 50381 LT +412456 50381 LT +412332 50505 LT +412332 50679 LT +412408 50755 LT +420100 55883 LT +420250 55883 LT +420374 55759 LT +CP BF QS +NP +420374 50505 MT +420250 50381 LT +412456 50381 LT +412332 50505 LT +412332 50679 LT +412456 50803 LT +420250 50803 LT +420374 50679 LT +CP BF QS +NP +420374 70403 MT +420250 70279 LT +412456 70279 LT +412332 70403 LT +412332 70577 LT +412456 70701 LT +420250 70701 LT +420374 70577 LT +CP BF QS +NP +427994 50505 MT +427870 50381 LT +427696 50381 LT +427572 50505 LT +427572 70577 LT +427696 70701 LT +427870 70701 LT +427994 70577 LT +CP BF QS +NP +445351 50505 MT +445227 50381 LT +427696 50381 LT +427572 50505 LT +427572 50679 LT +427696 50803 LT +445227 50803 LT +445351 50679 LT +CP BF QS +NP +445351 50505 MT +445227 50381 LT +445053 50381 LT +444929 50505 LT +444929 55759 LT +445053 55883 LT +445227 55883 LT +445351 55759 LT +CP BF QS +NP +445351 55585 MT +445227 55461 LT +433623 55461 LT +433499 55585 LT +433499 55759 LT +433623 55883 LT +445227 55883 LT +445351 55759 LT +CP BF QS +NP +433921 55585 MT +433797 55461 LT +433623 55461 LT +433499 55585 LT +433499 58300 LT +433623 58424 LT +433797 58424 LT +433921 58300 LT +CP BF QS +NP +445351 58126 MT +445227 58002 LT +433623 58002 LT +433499 58126 LT +433499 58300 LT +433623 58424 LT +445227 58424 LT +445351 58300 LT +CP BF QS +NP +445351 58126 MT +445227 58002 LT +445053 58002 LT +444929 58126 LT +444929 63380 LT +445053 63504 LT +445227 63504 LT +445351 63380 LT +CP BF QS +NP +445351 63206 MT +445227 63082 LT +433623 63082 LT +433499 63206 LT +433499 63380 LT +433623 63504 LT +445227 63504 LT +445351 63380 LT +CP BF QS +NP +433921 63206 MT +433797 63082 LT +433623 63082 LT +433499 63206 LT +433499 65497 LT +433623 65621 LT +433797 65621 LT +433921 65497 LT +CP BF QS +NP +445351 65323 MT +445227 65199 LT +433623 65199 LT +433499 65323 LT +433499 65497 LT +433623 65621 LT +445227 65621 LT +445351 65497 LT +CP BF QS +NP +445351 65323 MT +445227 65199 LT +445053 65199 LT +444929 65323 LT +444929 70577 LT +445053 70701 LT +445227 70701 LT +445351 70577 LT +CP BF QS +NP +445351 70403 MT +445227 70279 LT +427696 70279 LT +427572 70403 LT +427572 70577 LT +427696 70701 LT +445227 70701 LT +445351 70577 LT +CP BF QS +NP +447891 50505 MT +447767 50381 LT +447593 50381 LT +447469 50505 LT +447469 70577 LT +447593 70701 LT +447767 70701 LT +447891 70577 LT +CP BF QS +NP +454241 50505 MT +454117 50381 LT +447593 50381 LT +447469 50505 LT +447469 50679 LT +447593 50803 LT +454117 50803 LT +454241 50679 LT +CP BF QS +NP +454241 50505 MT +454117 50381 LT +453943 50381 LT +453819 50505 LT +453819 58300 LT +453943 58424 LT +454117 58424 LT +454241 58300 LT +CP BF QS +NP +458898 50505 MT +458774 50381 LT +458600 50381 LT +458521 50460 LT +453819 58154 LT +453819 58300 LT +453943 58424 LT +454117 58424 LT +454196 58345 LT +458898 50651 LT +CP BF QS +NP +466518 50505 MT +466394 50381 LT +458600 50381 LT +458476 50505 LT +458476 50679 LT +458600 50803 LT +466394 50803 LT +466518 50679 LT +CP BF QS +NP +466518 50505 MT +466394 50381 LT +466220 50381 LT +466144 50457 LT +461016 58150 LT +461016 58300 LT +461140 58424 LT +461314 58424 LT +461390 58348 LT +466518 50655 LT +CP BF QS +NP +454241 61936 MT +454117 61812 LT +453943 61812 LT +453819 61936 LT +453819 65497 LT +453943 65621 LT +454117 65621 LT +454241 65497 LT +CP BF QS +NP +461438 70403 MT +461314 70279 LT +447593 70279 LT +447469 70403 LT +447469 70577 LT +447593 70701 LT +461314 70701 LT +461438 70577 LT +CP BF QS +NP +457628 65323 MT +457504 65199 LT +453943 65199 LT +453819 65323 LT +453819 65497 LT +453943 65621 LT +457504 65621 LT +457628 65497 LT +CP BF QS +NP +457628 61936 MT +457504 61812 LT +453943 61812 LT +453819 61936 LT +453819 62110 LT +453943 62234 LT +457504 62234 LT +457628 62110 LT +CP BF QS +NP +486415 60666 MT +486291 60542 LT +481460 60542 LT +481336 60666 LT +481336 60840 LT +481460 60964 LT +486291 60964 LT +486415 60840 LT +CP BF QS +NP +481758 55585 MT +481634 55461 LT +481460 55461 LT +481336 55585 LT +481336 60840 LT +481460 60964 LT +481634 60964 LT +481758 60840 LT +CP BF QS +NP +486415 65323 MT +486291 65199 LT +486117 65199 LT +485993 65323 LT +485993 70154 LT +486117 70278 LT +486291 70278 LT +486415 70154 LT +CP BF QS +NP +486415 51775 MT +486291 51651 LT +486117 51651 LT +485993 51775 LT +485993 60840 LT +486117 60964 LT +486291 60964 LT +486415 60840 LT +CP BF QS +[1 0 0 1 3841.99 2998.2]ST +F2 F +0 Y<0014000300150003001400030016000300170003000400030018000300190003001A000300160003000A>139 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +230719 310296 MT +229479 309056 LT +227727 309056 LT +226487 310296 LT +226487 350151 LT +227727 351391 LT +229479 351391 LT +230719 350151 LT +CP BF QS +NP +332320 310296 MT +331080 309056 LT +329328 309056 LT +328088 310296 LT +328088 350151 LT +329328 351391 LT +331080 351391 LT +332320 350151 LT +CP BF QS +NP +325970 303946 MT +324730 302706 LT +234077 302706 LT +232837 303946 LT +232837 305698 LT +234077 306938 LT +324730 306938 LT +325970 305698 LT +CP BF QS +NP +325970 354749 MT +324730 353509 LT +234077 353509 LT +232837 354749 LT +232837 356501 LT +234077 357741 LT +324730 357741 LT +325970 356501 LT +CP BF QS +NP +235792 357632 MT +236982 356442 LT +236982 354758 LT +235792 353568 LT +234950 353568 LT +234386 353531 LT +233298 353239 LT +232321 352676 LT +231524 351879 LT +230961 350902 LT +230669 349814 LT +230632 349250 LT +230632 348408 LT +229442 347218 LT +227758 347218 LT +226568 348408 LT +226568 349250 LT +226568 350353 LT +227140 352485 LT +228243 354396 LT +229804 355957 LT +231715 357060 LT +233847 357632 LT +234950 357632 LT +CP BF QS +NP +226568 311992 MT +227758 313182 LT +229442 313182 LT +230632 311992 LT +230632 311150 LT +230669 310586 LT +230961 309498 LT +231524 308521 LT +232321 307724 LT +233298 307161 LT +234386 306869 LT +234950 306832 LT +235792 306832 LT +236982 305642 LT +236982 303958 LT +235792 302768 LT +234950 302768 LT +233847 302768 LT +231715 303340 LT +229804 304443 LT +228243 306004 LT +227140 307915 LT +226568 310047 LT +226568 311150 LT +CP BF QS +NP +323008 302768 MT +321818 303958 LT +321818 305642 LT +323008 306832 LT +323850 306832 LT +324414 306869 LT +325502 307161 LT +326479 307724 LT +327276 308521 LT +327839 309498 LT +328131 310586 LT +328168 311150 LT +328168 311992 LT +329358 313182 LT +331042 313182 LT +332232 311992 LT +332232 311150 LT +332232 310047 LT +331660 307915 LT +330557 306004 LT +328996 304443 LT +327085 303340 LT +324953 302768 LT +323850 302768 LT +CP BF QS +NP +332232 348408 MT +331042 347218 LT +329358 347218 LT +328168 348408 LT +328168 349250 LT +328131 349814 LT +327839 350902 LT +327276 351879 LT +326479 352676 LT +325502 353239 LT +324414 353531 LT +323850 353568 LT +323008 353568 LT +321818 354758 LT +321818 356442 LT +323008 357632 LT +323850 357632 LT +324953 357632 LT +327085 357060 LT +328996 355957 LT +330557 354396 LT +331660 352485 LT +332232 350353 LT +332232 349250 LT +CP BF QS +NP +323430 348925 MT +322934 348429 LT +235873 348429 LT +235377 348925 LT +235377 349625 LT +235873 350121 LT +322934 350121 LT +323430 349625 LT +CP BF QS +NP +237069 348925 MT +235303 347159 LT +234603 347159 LT +234107 347655 LT +234107 348355 LT +235873 350121 LT +236573 350121 LT +237069 349625 LT +CP BF QS +NP +235799 312092 MT +235303 311596 LT +234603 311596 LT +234107 312092 LT +234107 348355 LT +234603 348851 LT +235303 348851 LT +235799 348355 LT +CP BF QS +NP +237069 310822 MT +236573 310326 LT +235873 310326 LT +234107 312092 LT +234107 312792 LT +234603 313288 LT +235303 313288 LT +237069 311522 LT +CP BF QS +NP +323430 310822 MT +322934 310326 LT +235873 310326 LT +235377 310822 LT +235377 311522 LT +235873 312018 LT +322934 312018 LT +323430 311522 LT +CP BF QS +NP +324700 312092 MT +322934 310326 LT +322234 310326 LT +321738 310822 LT +321738 311522 LT +323504 313288 LT +324204 313288 LT +324700 312792 LT +CP BF QS +NP +324700 312092 MT +324204 311596 LT +323504 311596 LT +323008 312092 LT +323008 348355 LT +323504 348851 LT +324204 348851 LT +324700 348355 LT +CP BF QS +NP +324700 347655 MT +324204 347159 LT +323504 347159 LT +321738 348925 LT +321738 349625 LT +322234 350121 LT +322934 350121 LT +324700 348355 LT +CP BF QS +NP +284483 316698 MT +283615 315830 LT +282389 315830 LT +281521 316698 LT +281521 343326 LT +282389 344194 LT +283615 344194 LT +284483 343326 LT +CP BF QS +NP +284483 342100 MT +283615 341232 LT +276039 341232 LT +275171 342100 LT +275171 343326 LT +276039 344194 LT +283615 344194 LT +284483 343326 LT +CP BF QS +NP +278133 316698 MT +277265 315830 LT +276039 315830 LT +275171 316698 LT +275171 343326 LT +276039 344194 LT +277265 344194 LT +278133 343326 LT +CP BF QS +NP +284483 316698 MT +283615 315830 LT +276039 315830 LT +275171 316698 LT +275171 317924 LT +276039 318792 LT +283615 318792 LT +284483 317924 LT +CP BF QS +NP +271783 316698 MT +270915 315830 LT +269689 315830 LT +268821 316698 LT +268821 330625 LT +269689 331493 LT +270915 331493 LT +271783 330625 LT +CP BF QS +NP +290409 316698 MT +289541 315830 LT +288315 315830 LT +287447 316698 LT +287447 330625 LT +288315 331493 LT +289541 331493 LT +290409 330625 LT +CP BF QS +NP +270936 329874 MT +270440 329378 LT +263813 329378 LT +263317 329874 LT +263317 330574 LT +263813 331070 LT +270440 331070 LT +270936 330574 LT +CP BF QS +NP +271783 329399 MT +270915 328531 LT +269689 328531 LT +268821 329399 LT +268821 343326 LT +269689 344194 LT +270915 344194 LT +271783 343326 LT +CP BF QS +NP +295489 329874 MT +294993 329378 LT +288367 329378 LT +287871 329874 LT +287871 330574 LT +288367 331070 LT +294993 331070 LT +295489 330574 LT +CP BF QS +NP +290409 329399 MT +289541 328531 LT +288315 328531 LT +287447 329399 LT +287447 343326 LT +288315 344194 LT +289541 344194 LT +290409 343326 LT +CP BF QS +NP +261199 232077 MT +260703 231581 LT +247303 231581 LT +246807 232077 LT +246807 232777 LT +247303 233273 LT +260703 233273 LT +261199 232777 LT +CP BF QS +NP +241808 237806 MT +242254 238252 LT +242886 238252 LT +243332 237806 LT +243332 237490 LT +243385 236815 LT +243803 235530 LT +244597 234437 LT +245690 233643 LT +246975 233225 LT +247650 233172 LT +247966 233172 LT +248412 232726 LT +248412 232094 LT +247966 231648 LT +247650 231648 LT +246725 231649 LT +244965 232221 LT +243468 233308 LT +242381 234805 LT +241809 236565 LT +241808 237490 LT +CP BF QS +NP +260034 231648 MT +259588 232094 LT +259588 232726 LT +260034 233172 LT +260350 233172 LT +261025 233225 LT +262310 233643 LT +263403 234437 LT +264197 235530 LT +264615 236815 LT +264668 237490 LT +264668 237806 LT +265114 238252 LT +265746 238252 LT +266192 237806 LT +266192 237490 LT +266191 236565 LT +265619 234805 LT +264532 233308 LT +263035 232221 LT +261275 231649 LT +260350 231648 LT +CP BF QS +NP +243419 237157 MT +242923 236661 LT +242223 236661 LT +241727 237157 LT +241727 270879 LT +242223 271375 LT +242923 271375 LT +243419 270879 LT +CP BF QS +NP +261199 275260 MT +260703 274764 LT +247303 274764 LT +246807 275260 LT +246807 275960 LT +247303 276456 LT +260703 276456 LT +261199 275960 LT +CP BF QS +NP +266279 237157 MT +265783 236661 LT +265083 236661 LT +264587 237157 LT +264587 270879 LT +265083 271375 LT +265783 271375 LT +266279 270879 LT +CP BF QS +NP +247966 276352 MT +248412 275906 LT +248412 275274 LT +247966 274828 LT +247650 274828 LT +246975 274775 LT +245690 274357 LT +244597 273563 LT +243803 272470 LT +243385 271185 LT +243332 270510 LT +243332 270194 LT +242886 269748 LT +242254 269748 LT +241808 270194 LT +241808 270510 LT +241809 271435 LT +242381 273195 LT +243468 274692 LT +244965 275779 LT +246725 276351 LT +247650 276352 LT +CP BF QS +NP +266192 270194 MT +265746 269748 LT +265114 269748 LT +264668 270194 LT +264668 270510 LT +264615 271185 LT +264197 272470 LT +263403 273563 LT +262310 274357 LT +261025 274775 LT +260350 274828 LT +260034 274828 LT +259588 275274 LT +259588 275906 LT +260034 276352 LT +260350 276352 LT +261275 276351 LT +263035 275779 LT +264532 274692 LT +265619 273195 LT +266191 271435 LT +266192 270510 LT +CP BF QS +NP +263316 250230 MT +262448 249362 LT +245982 249362 LT +245114 250230 LT +245114 251456 LT +245982 252324 LT +262448 252324 LT +263316 251456 LT +CP BF QS +NP +263316 256580 MT +262448 255712 LT +245982 255712 LT +245114 256580 LT +245114 257806 LT +245982 258674 LT +262448 258674 LT +263316 257806 LT +CP BF QS +NP +312000 232077 MT +311504 231581 LT +298104 231581 LT +297608 232077 LT +297608 232777 LT +298104 233273 LT +311504 233273 LT +312000 232777 LT +CP BF QS +NP +292608 237806 MT +293054 238252 LT +293686 238252 LT +294132 237806 LT +294132 237490 LT +294185 236815 LT +294603 235530 LT +295397 234437 LT +296490 233643 LT +297775 233225 LT +298450 233172 LT +298766 233172 LT +299212 232726 LT +299212 232094 LT +298766 231648 LT +298450 231648 LT +297525 231649 LT +295765 232221 LT +294268 233308 LT +293181 234805 LT +292609 236565 LT +292608 237490 LT +CP BF QS +NP +310834 231648 MT +310388 232094 LT +310388 232726 LT +310834 233172 LT +311150 233172 LT +311825 233225 LT +313110 233643 LT +314203 234437 LT +314997 235530 LT +315415 236815 LT +315468 237490 LT +315468 237806 LT +315914 238252 LT +316546 238252 LT +316992 237806 LT +316992 237490 LT +316991 236565 LT +316419 234805 LT +315332 233308 LT +313835 232221 LT +312075 231649 LT +311150 231648 LT +CP BF QS +NP +294219 237157 MT +293723 236661 LT +293023 236661 LT +292527 237157 LT +292527 270879 LT +293023 271375 LT +293723 271375 LT +294219 270879 LT +CP BF QS +NP +312000 275260 MT +311504 274764 LT +298104 274764 LT +297608 275260 LT +297608 275960 LT +298104 276456 LT +311504 276456 LT +312000 275960 LT +CP BF QS +NP +317080 237157 MT +316584 236661 LT +315884 236661 LT +315388 237157 LT +315388 270879 LT +315884 271375 LT +316584 271375 LT +317080 270879 LT +CP BF QS +NP +298766 276352 MT +299212 275906 LT +299212 275274 LT +298766 274828 LT +298450 274828 LT +297775 274775 LT +296490 274357 LT +295397 273563 LT +294603 272470 LT +294185 271185 LT +294132 270510 LT +294132 270194 LT +293686 269748 LT +293054 269748 LT +292608 270194 LT +292608 270510 LT +292609 271435 LT +293181 273195 LT +294268 274692 LT +295765 275779 LT +297525 276351 LT +298450 276352 LT +CP BF QS +NP +316992 270194 MT +316546 269748 LT +315914 269748 LT +315468 270194 LT +315468 270510 LT +315415 271185 LT +314997 272470 LT +314203 273563 LT +313110 274357 LT +311825 274775 LT +311150 274828 LT +310834 274828 LT +310388 275274 LT +310388 275906 LT +310834 276352 LT +311150 276352 LT +312075 276351 LT +313835 275779 LT +315332 274692 LT +316419 273195 LT +316991 271435 LT +316992 270510 LT +CP BF QS +NP +314116 250230 MT +313248 249362 LT +296782 249362 LT +295914 250230 LT +295914 251456 LT +296782 252324 LT +313248 252324 LT +314116 251456 LT +CP BF QS +NP +314116 256580 MT +313248 255712 LT +296782 255712 LT +295914 256580 LT +295914 257806 LT +296782 258674 LT +313248 258674 LT +314116 257806 LT +CP BF QS +NP +441541 317173 MT +441045 316677 LT +397165 316677 LT +396669 317173 LT +396669 317873 LT +397165 318369 LT +441045 318369 LT +441541 317873 LT +CP BF QS +NP +445351 295581 MT +441045 291275 LT +440345 291275 LT +439849 291771 LT +439849 292471 LT +444155 296777 LT +444855 296777 LT +445351 296281 LT +CP BF QS +NP +445351 287961 MT +444855 287465 LT +444155 287465 LT +439849 291771 LT +439849 292471 LT +440345 292967 LT +441045 292967 LT +445351 288661 LT +CP BF QS +NP +445351 270179 MT +444855 269683 LT +444155 269683 LT +443659 270179 LT +443659 288661 LT +444155 289157 LT +444855 289157 LT +445351 288661 LT +CP BF QS +NP +445351 270179 MT +441045 265873 LT +440345 265873 LT +439849 266369 LT +439849 267069 LT +444155 271375 LT +444855 271375 LT +445351 270879 LT +CP BF QS +NP +445351 262559 MT +444855 262063 LT +444155 262063 LT +439849 266369 LT +439849 267069 LT +440345 267565 LT +441045 267565 LT +445351 263259 LT +CP BF QS +NP +445351 244778 MT +444855 244282 LT +444155 244282 LT +443659 244778 LT +443659 263259 LT +444155 263755 LT +444855 263755 LT +445351 263259 LT +CP BF QS +NP +441293 240719 MT +441045 240471 LT +440345 240471 LT +439849 240967 LT +439849 241667 LT +443907 245726 LT +444155 245974 LT +444855 245974 LT +445351 245478 LT +445351 244778 LT +CP BF QS +NP +398361 240967 MT +397865 240471 LT +397165 240471 LT +396917 240719 LT +392859 244778 LT +392859 245478 LT +393355 245974 LT +394055 245974 LT +394303 245726 LT +398361 241667 LT +CP BF QS +NP +394551 244778 MT +394055 244282 LT +393355 244282 LT +392859 244778 LT +392859 263259 LT +393355 263755 LT +394055 263755 LT +394551 263259 LT +CP BF QS +NP +398361 266369 MT +394055 262063 LT +393355 262063 LT +392859 262559 LT +392859 263259 LT +397165 267565 LT +397865 267565 LT +398361 267069 LT +CP BF QS +NP +398361 266369 MT +397865 265873 LT +397165 265873 LT +392859 270179 LT +392859 270879 LT +393355 271375 LT +394055 271375 LT +398361 267069 LT +CP BF QS +NP +394551 270179 MT +394055 269683 LT +393355 269683 LT +392859 270179 LT +392859 288661 LT +393355 289157 LT +394055 289157 LT +394551 288661 LT +CP BF QS +NP +398361 291771 MT +394055 287465 LT +393355 287465 LT +392859 287961 LT +392859 288661 LT +397165 292967 LT +397865 292967 LT +398361 292471 LT +CP BF QS +NP +398361 291771 MT +397865 291275 LT +397165 291275 LT +392859 295581 LT +392859 296281 LT +393355 296777 LT +394055 296777 LT +398361 292471 LT +CP BF QS +[-0 -1 1 0 3802.99 2381.05]ST +F3 F +0 Y<001B>22 0 AT +[-0 -1 1 0 3802.99 2448.05]ST +0 Y<001C>22 0 AT +[-0 -1 1 0 3802.99 2508.04]ST +0 Y<001D>22 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +441541 190164 MT +441045 189668 LT +397165 189668 LT +396669 190164 LT +396669 190864 LT +397165 191360 LT +441045 191360 LT +441541 190864 LT +CP BF QS +NP +445351 237157 MT +444855 236661 LT +444155 236661 LT +439849 240967 LT +439849 241667 LT +440345 242163 LT +441045 242163 LT +445351 237857 LT +CP BF QS +NP +445351 219376 MT +444855 218880 LT +444155 218880 LT +443659 219376 LT +443659 237857 LT +444155 238353 LT +444855 238353 LT +445351 237857 LT +CP BF QS +NP +441293 215317 MT +441045 215069 LT +440345 215069 LT +439849 215565 LT +439849 216265 LT +443907 220324 LT +444155 220572 LT +444855 220572 LT +445351 220076 LT +445351 219376 LT +CP BF QS +NP +445351 211755 MT +444855 211259 LT +444155 211259 LT +439849 215565 LT +439849 216265 LT +440345 216761 LT +441045 216761 LT +445351 212455 LT +CP BF QS +NP +445351 193974 MT +444855 193478 LT +444155 193478 LT +443659 193974 LT +443659 212455 LT +444155 212951 LT +444855 212951 LT +445351 212455 LT +CP BF QS +NP +445351 193974 MT +441045 189668 LT +440345 189668 LT +439849 190164 LT +439849 190864 LT +444155 195170 LT +444855 195170 LT +445351 194674 LT +CP BF QS +NP +398361 240967 MT +394055 236661 LT +393355 236661 LT +392859 237157 LT +392859 237857 LT +397165 242163 LT +397865 242163 LT +398361 241667 LT +CP BF QS +NP +394551 219376 MT +394055 218880 LT +393355 218880 LT +392859 219376 LT +392859 237857 LT +393355 238353 LT +394055 238353 LT +394551 237857 LT +CP BF QS +NP +398361 215565 MT +394055 211259 LT +393355 211259 LT +392859 211755 LT +392859 212455 LT +397165 216761 LT +397865 216761 LT +398361 216265 LT +CP BF QS +NP +398361 215565 MT +397865 215069 LT +397165 215069 LT +396917 215317 LT +392859 219376 LT +392859 220076 LT +393355 220572 LT +394055 220572 LT +394303 220324 LT +398361 216265 LT +CP BF QS +NP +394551 193974 MT +394055 193478 LT +393355 193478 LT +392859 193974 LT +392859 212455 LT +393355 212951 LT +394055 212951 LT +394551 212455 LT +CP BF QS +NP +398361 190164 MT +397865 189668 LT +397165 189668 LT +392859 193974 LT +392859 194674 LT +393355 195170 LT +394055 195170 LT +398361 190864 LT +CP BF QS +[-0 -1 1 0 3802.99 2568.04]ST +0 Y<001E>22 0 AT +[-0 -1 1 0 3802.99 2628.04]ST +0 Y<001F>22 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +394303 313114 MT +394055 312866 LT +393355 312866 LT +392859 313362 LT +392859 314062 LT +396917 318121 LT +397165 318369 LT +397865 318369 LT +398361 317873 LT +398361 317173 LT +CP BF QS +NP +394551 295581 MT +394055 295085 LT +393355 295085 LT +392859 295581 LT +392859 314062 LT +393355 314558 LT +394055 314558 LT +394551 314062 LT +CP BF QS +NP +445351 313362 MT +444855 312866 LT +444155 312866 LT +443907 313114 LT +439849 317173 LT +439849 317873 LT +440345 318369 LT +441045 318369 LT +441293 318121 LT +445351 314062 LT +CP BF QS +NP +445351 295581 MT +444855 295085 LT +444155 295085 LT +443659 295581 LT +443659 314062 LT +444155 314558 LT +444855 314558 LT +445351 314062 LT +CP BF QS +NP +98106 228092 MT +98552 227646 LT +98552 227014 LT +98106 226568 LT +97790 226568 LT +97443 226534 LT +96802 226268 LT +96312 225778 LT +96046 225137 LT +96012 224790 LT +96012 224474 LT +95566 224028 LT +94934 224028 LT +94488 224474 LT +94488 224790 LT +94489 225447 LT +94991 226660 LT +95920 227589 LT +97133 228091 LT +97790 228092 LT +CP BF QS +NP +94488 207326 MT +94934 207772 LT +95566 207772 LT +96012 207326 LT +96012 207010 LT +96046 206663 LT +96312 206022 LT +96802 205532 LT +97443 205266 LT +97790 205232 LT +98106 205232 LT +98552 204786 LT +98552 204154 LT +98106 203708 LT +97790 203708 LT +97133 203709 LT +95920 204211 LT +94991 205140 LT +94489 206353 LT +94488 207010 LT +CP BF QS +NP +155894 203708 MT +155448 204154 LT +155448 204786 LT +155894 205232 LT +156210 205232 LT +156557 205266 LT +157198 205532 LT +157688 206022 LT +157954 206663 LT +157988 207010 LT +157988 207326 LT +158434 207772 LT +159066 207772 LT +159512 207326 LT +159512 207010 LT +159511 206353 LT +159009 205140 LT +158080 204211 LT +156867 203709 LT +156210 203708 LT +CP BF QS +NP +159512 224474 MT +159066 224028 LT +158434 224028 LT +157988 224474 LT +157988 224790 LT +157954 225137 LT +157688 225778 LT +157198 226268 LT +156557 226534 LT +156210 226568 LT +155894 226568 LT +155448 227014 LT +155448 227646 LT +155894 228092 LT +156210 228092 LT +156867 228091 LT +158080 227589 LT +159009 226660 LT +159511 225447 LT +159512 224790 LT +CP BF QS +NP +96097 206675 MT +95601 206179 LT +94901 206179 LT +94405 206675 LT +94405 225156 LT +94901 225652 LT +95601 225652 LT +96097 225156 LT +CP BF QS +NP +102447 226996 MT +101951 226500 LT +97441 226500 LT +96945 226996 LT +96945 227696 LT +97441 228192 LT +101951 228192 LT +102447 227696 LT +CP BF QS +NP +103717 225726 MT +103221 225230 LT +102521 225230 LT +100755 226996 LT +100755 227696 LT +101251 228192 LT +101951 228192 LT +103717 226426 LT +CP BF QS +NP +102447 204135 MT +101951 203639 LT +97441 203639 LT +96945 204135 LT +96945 204835 LT +97441 205331 LT +101951 205331 LT +102447 204835 LT +CP BF QS +NP +103717 205405 MT +101951 203639 LT +101251 203639 LT +100755 204135 LT +100755 204835 LT +102521 206601 LT +103221 206601 LT +103717 206105 LT +CP BF QS +NP +153248 226996 MT +151482 225230 LT +150782 225230 LT +150286 225726 LT +150286 226426 LT +152052 228192 LT +152752 228192 LT +153248 227696 LT +CP BF QS +NP +151978 225726 MT +151482 225230 LT +102521 225230 LT +102025 225726 LT +102025 226426 LT +102521 226922 LT +151482 226922 LT +151978 226426 LT +CP BF QS +NP +153248 204135 MT +152752 203639 LT +152052 203639 LT +150286 205405 LT +150286 206105 LT +150782 206601 LT +151482 206601 LT +153248 204835 LT +CP BF QS +NP +151978 205405 MT +151482 204909 LT +102521 204909 LT +102025 205405 LT +102025 206105 LT +102521 206601 LT +151482 206601 LT +151978 206105 LT +CP BF QS +NP +157058 226996 MT +156562 226500 LT +152052 226500 LT +151556 226996 LT +151556 227696 LT +152052 228192 LT +156562 228192 LT +157058 227696 LT +CP BF QS +NP +157058 204135 MT +156562 203639 LT +152052 203639 LT +151556 204135 LT +151556 204835 LT +152052 205331 LT +156562 205331 LT +157058 204835 LT +CP BF QS +NP +159598 206675 MT +159102 206179 LT +158402 206179 LT +157906 206675 LT +157906 225156 LT +158402 225652 LT +159102 225652 LT +159598 225156 LT +CP BF QS +158750 212852 8637 6097 R +86614 212852 8637 6097 R +NP +206694 38608 MT +206248 39054 LT +206248 39686 LT +206694 40132 LT +207010 40132 LT +207357 40166 LT +207998 40432 LT +208488 40922 LT +208754 41563 LT +208788 41910 LT +208788 42226 LT +209234 42672 LT +209866 42672 LT +210312 42226 LT +210312 41910 LT +210311 41253 LT +209809 40040 LT +208880 39111 LT +207667 38609 LT +207010 38608 LT +CP BF QS +NP +210312 59374 MT +209866 58928 LT +209234 58928 LT +208788 59374 LT +208788 59690 LT +208754 60037 LT +208488 60678 LT +207998 61168 LT +207357 61434 LT +207010 61468 LT +206694 61468 LT +206248 61914 LT +206248 62546 LT +206694 62992 LT +207010 62992 LT +207667 62991 LT +208880 62489 LT +209809 61560 LT +210311 60347 LT +210312 59690 LT +CP BF QS +NP +148906 62992 MT +149352 62546 LT +149352 61914 LT +148906 61468 LT +148590 61468 LT +148243 61434 LT +147602 61168 LT +147112 60678 LT +146846 60037 LT +146812 59690 LT +146812 59374 LT +146366 58928 LT +145734 58928 LT +145288 59374 LT +145288 59690 LT +145289 60347 LT +145791 61560 LT +146720 62489 LT +147933 62991 LT +148590 62992 LT +CP BF QS +NP +145288 42226 MT +145734 42672 LT +146366 42672 LT +146812 42226 LT +146812 41910 LT +146846 41563 LT +147112 40922 LT +147602 40432 LT +148243 40166 LT +148590 40132 LT +148906 40132 LT +149352 39686 LT +149352 39054 LT +148906 38608 LT +148590 38608 LT +147933 38609 LT +146720 39111 LT +145791 40040 LT +145289 41253 LT +145288 41910 LT +CP BF QS +NP +210398 41563 MT +209902 41067 LT +209202 41067 LT +208706 41563 LT +208706 60044 LT +209202 60540 LT +209902 60540 LT +210398 60044 LT +CP BF QS +NP +207858 39023 MT +207362 38527 LT +202852 38527 LT +202356 39023 LT +202356 39723 LT +202852 40219 LT +207362 40219 LT +207858 39723 LT +CP BF QS +NP +204048 39023 MT +203552 38527 LT +202852 38527 LT +201086 40293 LT +201086 40993 LT +201582 41489 LT +202282 41489 LT +204048 39723 LT +CP BF QS +NP +207858 61884 MT +207362 61388 LT +202852 61388 LT +202356 61884 LT +202356 62584 LT +202852 63080 LT +207362 63080 LT +207858 62584 LT +CP BF QS +NP +204048 61884 MT +202282 60118 LT +201582 60118 LT +201086 60614 LT +201086 61314 LT +202852 63080 LT +203552 63080 LT +204048 62584 LT +CP BF QS +NP +154518 40293 MT +152752 38527 LT +152052 38527 LT +151556 39023 LT +151556 39723 LT +153322 41489 LT +154022 41489 LT +154518 40993 LT +CP BF QS +NP +202778 40293 MT +202282 39797 LT +153322 39797 LT +152826 40293 LT +152826 40993 LT +153322 41489 LT +202282 41489 LT +202778 40993 LT +CP BF QS +NP +154518 60614 MT +154022 60118 LT +153322 60118 LT +151556 61884 LT +151556 62584 LT +152052 63080 LT +152752 63080 LT +154518 61314 LT +CP BF QS +NP +202778 60614 MT +202282 60118 LT +153322 60118 LT +152826 60614 LT +152826 61314 LT +153322 61810 LT +202282 61810 LT +202778 61314 LT +CP BF QS +NP +153248 39023 MT +152752 38527 LT +148242 38527 LT +147746 39023 LT +147746 39723 LT +148242 40219 LT +152752 40219 LT +153248 39723 LT +CP BF QS +NP +153248 61884 MT +152752 61388 LT +148242 61388 LT +147746 61884 LT +147746 62584 LT +148242 63080 LT +152752 63080 LT +153248 62584 LT +CP BF QS +NP +146898 41563 MT +146402 41067 LT +145702 41067 LT +145206 41563 LT +145206 60044 LT +145702 60540 LT +146402 60540 LT +146898 60044 LT +CP BF QS +137414 47752 8637 6097 R +209550 47752 8637 6097 R +NP +271359 133010 MT +270863 132514 LT +270163 132514 LT +269667 133010 LT +269667 146410 LT +270163 146906 LT +270863 146906 LT +271359 146410 LT +CP BF QS +NP +275906 151892 MT +276352 151446 LT +276352 150814 LT +275906 150368 LT +275590 150368 LT +274915 150315 LT +273630 149897 LT +272537 149103 LT +271743 148010 LT +271325 146725 LT +271272 146050 LT +271272 145734 LT +270826 145288 LT +270194 145288 LT +269748 145734 LT +269748 146050 LT +269749 146975 LT +270321 148735 LT +271408 150232 LT +272905 151319 LT +274665 151891 LT +275590 151892 LT +CP BF QS +NP +269748 133666 MT +270194 134112 LT +270826 134112 LT +271272 133666 LT +271272 133350 LT +271325 132675 LT +271743 131390 LT +272537 130297 LT +273630 129503 LT +274915 129085 LT +275590 129032 LT +275906 129032 LT +276352 128586 LT +276352 127954 LT +275906 127508 LT +275590 127508 LT +274665 127509 LT +272905 128081 LT +271408 129168 LT +270321 130665 LT +269749 132425 LT +269748 133350 LT +CP BF QS +NP +309460 150791 MT +308964 150295 LT +275243 150295 LT +274747 150791 LT +274747 151491 LT +275243 151987 LT +308964 151987 LT +309460 151491 LT +CP BF QS +NP +314540 133010 MT +314044 132514 LT +313344 132514 LT +312848 133010 LT +312848 146410 LT +313344 146906 LT +314044 146906 LT +314540 146410 LT +CP BF QS +NP +309460 127929 MT +308964 127433 LT +275243 127433 LT +274747 127929 LT +274747 128629 LT +275243 129125 LT +308964 129125 LT +309460 128629 LT +CP BF QS +NP +314452 145734 MT +314006 145288 LT +313374 145288 LT +312928 145734 LT +312928 146050 LT +312875 146725 LT +312457 148010 LT +311663 149103 LT +310570 149897 LT +309285 150315 LT +308610 150368 LT +308294 150368 LT +307848 150814 LT +307848 151446 LT +308294 151892 LT +308610 151892 LT +309535 151891 LT +311295 151319 LT +312792 150232 LT +313879 148735 LT +314451 146975 LT +314452 146050 LT +CP BF QS +NP +308294 127508 MT +307848 127954 LT +307848 128586 LT +308294 129032 LT +308610 129032 LT +309285 129085 LT +310570 129503 LT +311663 130297 LT +312457 131390 LT +312875 132675 LT +312928 133350 LT +312928 133666 LT +313374 134112 LT +314006 134112 LT +314452 133666 LT +314452 133350 LT +314451 132425 LT +313879 130665 LT +312792 129168 LT +311295 128081 LT +309535 127509 LT +308610 127508 LT +CP BF QS +NP +290833 131265 MT +289965 130397 LT +288739 130397 LT +287871 131265 LT +287871 147732 LT +288739 148600 LT +289965 148600 LT +290833 147732 LT +CP BF QS +NP +297183 131265 MT +296315 130397 LT +295089 130397 LT +294221 131265 LT +294221 147732 LT +295089 148600 LT +296315 148600 LT +297183 147732 LT +CP BF QS +NP +278979 202865 MT +278483 202369 LT +275243 202369 LT +274747 202865 LT +274747 203565 LT +275243 204061 LT +278483 204061 LT +278979 203565 LT +CP BF QS +NP +278979 200324 MT +278483 199828 LT +277783 199828 LT +277287 200324 LT +277287 203565 LT +277783 204061 LT +278483 204061 LT +278979 203565 LT +CP BF QS +NP +281519 202865 MT +281023 202369 LT +277783 202369 LT +277287 202865 LT +277287 203565 LT +277783 204061 LT +281023 204061 LT +281519 203565 LT +CP BF QS +NP +278979 202865 MT +278483 202369 LT +277783 202369 LT +277287 202865 LT +277287 206105 LT +277783 206601 LT +278483 206601 LT +278979 206105 LT +CP BF QS +NP +265938 190500 MT +266046 192879 LT +266371 195238 LT +266908 197558 LT +267654 199820 LT +268603 202004 LT +269747 204093 LT +271075 206070 LT +272578 207917 LT +274243 209620 LT +276056 211165 LT +278001 212538 LT +280064 213729 LT +282226 214727 LT +284470 215525 LT +286777 216115 LT +289129 216493 LT +291504 216655 LT +293885 216601 LT +296251 216331 LT +298583 215846 LT +300861 215151 LT +303066 214253 LT +305181 213157 LT +307187 211874 LT +309068 210413 LT +310809 208788 LT +312394 207011 LT +313811 205097 LT +315049 203062 LT +316096 200923 LT +316944 198698 LT +317587 196405 LT +318018 194062 LT +318235 191691 LT +318235 189309 LT +318018 186938 LT +317587 184595 LT +316944 182302 LT +316096 180077 LT +315049 177938 LT +313811 175903 LT +312394 173989 LT +310809 172212 LT +309068 170587 LT +307187 169126 LT +305181 167843 LT +303066 166747 LT +300861 165849 LT +298583 165154 LT +296251 164669 LT +293885 164399 LT +291504 164345 LT +289129 164507 LT +286777 164885 LT +284470 165475 LT +282226 166273 LT +280064 167271 LT +278001 168462 LT +276056 169835 LT +274243 171380 LT +272578 173083 LT +271075 174930 LT +269747 176907 LT +268603 178996 LT +267654 181180 LT +266908 183442 LT +266371 185762 LT +266046 188121 LT +265938 190500 LT +267462 190500 LT +267564 192740 LT +267869 194962 LT +268376 197147 LT +269078 199277 LT +269972 201334 LT +271049 203302 LT +272300 205163 LT +273716 206903 LT +275283 208506 LT +276990 209961 LT +278823 211254 LT +280765 212376 LT +282801 213316 LT +284914 214067 LT +287087 214623 LT +289302 214979 LT +291539 215132 LT +293781 215081 LT +296010 214826 LT +298205 214370 LT +300351 213715 LT +302428 212869 LT +304419 211837 LT +306308 210629 LT +308080 209253 LT +309719 207722 LT +311212 206049 LT +312547 204246 LT +313712 202330 LT +314698 200316 LT +315497 198220 LT +316102 196061 LT +316509 193855 LT +316712 191621 LT +316712 189379 LT +316509 187145 LT +316102 184939 LT +315497 182780 LT +314698 180684 LT +313712 178670 LT +312547 176754 LT +311212 174951 LT +309719 173278 LT +308080 171747 LT +306308 170371 LT +304419 169163 LT +302428 168131 LT +300351 167285 LT +298205 166630 LT +296010 166174 LT +293781 165919 LT +291539 165868 LT +289302 166021 LT +287087 166377 LT +284914 166933 LT +282801 167684 LT +280765 168624 LT +278823 169746 LT +276990 171039 LT +275283 172494 LT +273716 174097 LT +272300 175837 LT +271049 177698 LT +269972 179666 LT +269078 181723 LT +268376 183853 LT +267869 186038 LT +267564 188260 LT +267462 190500 LT +CP BF QS +158750 104140 5081 20321 R +200660 111760 19051 5081 R +135890 111760 19051 5081 R +NP +178648 113958 MT +178152 113462 LT +171102 113462 LT +170606 113958 LT +170606 114658 LT +171102 115154 LT +178152 115154 LT +178648 114658 LT +CP BF QS +NP +188808 107608 MT +188312 107112 LT +187612 107112 LT +187116 107608 LT +187116 121009 LT +187612 121505 LT +188312 121505 LT +188808 121009 LT +CP BF QS +NP +188808 107608 MT +188312 107112 LT +187720 107112 LT +177272 113642 LT +176956 113958 LT +176956 114658 LT +177452 115154 LT +178044 115154 LT +188492 108624 LT +188808 108308 LT +CP BF QS +NP +193888 113958 MT +193392 113462 LT +177452 113462 LT +176956 113958 LT +176956 114658 LT +177452 115154 LT +193392 115154 LT +193888 114658 LT +CP BF QS +NP +188808 120309 MT +188492 119993 LT +178044 113462 LT +177452 113462 LT +176956 113958 LT +176956 114658 LT +177272 114974 LT +187720 121505 LT +188312 121505 LT +188808 121009 LT +CP BF QS +NP +178648 107608 MT +178152 107112 LT +177452 107112 LT +176956 107608 LT +176956 114658 LT +177452 115154 LT +178152 115154 LT +178648 114658 LT +CP BF QS +NP +181188 120309 MT +180692 119813 LT +177452 119813 LT +176956 120309 LT +176956 121009 LT +177452 121505 LT +180692 121505 LT +181188 121009 LT +CP BF QS +NP +178648 113958 MT +178152 113462 LT +177452 113462 LT +176956 113958 LT +176956 121009 LT +177452 121505 LT +178152 121505 LT +178648 121009 LT +CP BF QS +NP +201422 121604 MT +200976 121158 LT +200344 121158 LT +199898 121604 LT +199898 121920 LT +199864 122267 LT +199598 122908 LT +199108 123398 LT +198467 123664 LT +198120 123698 LT +197804 123698 LT +197358 124144 LT +197358 124776 LT +197804 125222 LT +198120 125222 LT +198777 125221 LT +199990 124719 LT +200919 123790 LT +201421 122577 LT +201422 121920 LT +CP BF QS +NP +157796 125222 MT +158242 124776 LT +158242 124144 LT +157796 123698 LT +157480 123698 LT +157133 123664 LT +156492 123398 LT +156002 122908 LT +155736 122267 LT +155702 121920 LT +155702 121604 LT +155256 121158 LT +154624 121158 LT +154178 121604 LT +154178 121920 LT +154179 122577 LT +154681 123790 LT +155610 124719 LT +156823 125221 LT +157480 125222 LT +CP BF QS +NP +154178 106996 MT +154624 107442 LT +155256 107442 LT +155702 106996 LT +155702 106680 LT +155736 106333 LT +156002 105692 LT +156492 105202 LT +157133 104936 LT +157480 104902 LT +157796 104902 LT +158242 104456 LT +158242 103824 LT +157796 103378 LT +157480 103378 LT +156823 103379 LT +155610 103881 LT +154681 104810 LT +154179 106023 LT +154178 106680 LT +CP BF QS +NP +197804 103378 MT +197358 103824 LT +197358 104456 LT +197804 104902 LT +198120 104902 LT +198467 104936 LT +199108 105202 LT +199598 105692 LT +199864 106333 LT +199898 106680 LT +199898 106996 LT +200344 107442 LT +200976 107442 LT +201422 106996 LT +201422 106680 LT +201421 106023 LT +200919 104810 LT +199990 103881 LT +198777 103379 LT +198120 103378 LT +CP BF QS +NP +201508 106338 MT +201012 105842 LT +200312 105842 LT +199816 106338 LT +199816 122279 LT +200312 122775 LT +201012 122775 LT +201508 122279 LT +CP BF QS +NP +155788 106338 MT +155292 105842 LT +154592 105842 LT +154096 106338 LT +154096 122279 LT +154592 122775 LT +155292 122775 LT +155788 122279 LT +CP BF QS +NP +198968 124119 MT +198472 123623 LT +157132 123623 LT +156636 124119 LT +156636 124819 LT +157132 125315 LT +198472 125315 LT +198968 124819 LT +CP BF QS +NP +198968 103797 MT +198472 103301 LT +157132 103301 LT +156636 103797 LT +156636 104497 LT +157132 104993 LT +198472 104993 LT +198968 104497 LT +CP BF QS +158750 154940 5081 20321 R +200660 162560 19051 5081 R +135890 162560 19051 5081 R +NP +178648 164762 MT +178152 164266 LT +171102 164266 LT +170606 164762 LT +170606 165462 LT +171102 165958 LT +178152 165958 LT +178648 165462 LT +CP BF QS +NP +188808 158411 MT +188312 157915 LT +187612 157915 LT +187116 158411 LT +187116 171812 LT +187612 172308 LT +188312 172308 LT +188808 171812 LT +CP BF QS +NP +188808 158411 MT +188312 157915 LT +187720 157915 LT +177272 164446 LT +176956 164762 LT +176956 165462 LT +177452 165958 LT +178044 165958 LT +188492 159427 LT +188808 159111 LT +CP BF QS +NP +193888 164762 MT +193392 164266 LT +177452 164266 LT +176956 164762 LT +176956 165462 LT +177452 165958 LT +193392 165958 LT +193888 165462 LT +CP BF QS +NP +188808 171112 MT +188492 170796 LT +178044 164266 LT +177452 164266 LT +176956 164762 LT +176956 165462 LT +177272 165778 LT +187720 172308 LT +188312 172308 LT +188808 171812 LT +CP BF QS +NP +178648 158411 MT +178152 157915 LT +177452 157915 LT +176956 158411 LT +176956 165462 LT +177452 165958 LT +178152 165958 LT +178648 165462 LT +CP BF QS +NP +181188 171112 MT +180692 170616 LT +177452 170616 LT +176956 171112 LT +176956 171812 LT +177452 172308 LT +180692 172308 LT +181188 171812 LT +CP BF QS +NP +178648 164762 MT +178152 164266 LT +177452 164266 LT +176956 164762 LT +176956 171812 LT +177452 172308 LT +178152 172308 LT +178648 171812 LT +CP BF QS +NP +201422 172404 MT +200976 171958 LT +200344 171958 LT +199898 172404 LT +199898 172720 LT +199864 173067 LT +199598 173708 LT +199108 174198 LT +198467 174464 LT +198120 174498 LT +197804 174498 LT +197358 174944 LT +197358 175576 LT +197804 176022 LT +198120 176022 LT +198777 176021 LT +199990 175519 LT +200919 174590 LT +201421 173377 LT +201422 172720 LT +CP BF QS +NP +157796 176022 MT +158242 175576 LT +158242 174944 LT +157796 174498 LT +157480 174498 LT +157133 174464 LT +156492 174198 LT +156002 173708 LT +155736 173067 LT +155702 172720 LT +155702 172404 LT +155256 171958 LT +154624 171958 LT +154178 172404 LT +154178 172720 LT +154179 173377 LT +154681 174590 LT +155610 175519 LT +156823 176021 LT +157480 176022 LT +CP BF QS +NP +154178 157796 MT +154624 158242 LT +155256 158242 LT +155702 157796 LT +155702 157480 LT +155736 157133 LT +156002 156492 LT +156492 156002 LT +157133 155736 LT +157480 155702 LT +157796 155702 LT +158242 155256 LT +158242 154624 LT +157796 154178 LT +157480 154178 LT +156823 154179 LT +155610 154681 LT +154681 155610 LT +154179 156823 LT +154178 157480 LT +CP BF QS +NP +197804 154178 MT +197358 154624 LT +197358 155256 LT +197804 155702 LT +198120 155702 LT +198467 155736 LT +199108 156002 LT +199598 156492 LT +199864 157133 LT +199898 157480 LT +199898 157796 LT +200344 158242 LT +200976 158242 LT +201422 157796 LT +201422 157480 LT +201421 156823 LT +200919 155610 LT +199990 154681 LT +198777 154179 LT +198120 154178 LT +CP BF QS +NP +201508 157141 MT +201012 156645 LT +200312 156645 LT +199816 157141 LT +199816 173082 LT +200312 173578 LT +201012 173578 LT +201508 173082 LT +CP BF QS +NP +155788 157141 MT +155292 156645 LT +154592 156645 LT +154096 157141 LT +154096 173082 LT +154592 173578 LT +155292 173578 LT +155788 173082 LT +CP BF QS +NP +198968 174923 MT +198472 174427 LT +157132 174427 LT +156636 174923 LT +156636 175623 LT +157132 176119 LT +198472 176119 LT +198968 175623 LT +CP BF QS +NP +198968 154601 MT +198472 154105 LT +157132 154105 LT +156636 154601 LT +156636 155301 LT +157132 155797 LT +198472 155797 LT +198968 155301 LT +CP BF QS +NP +458051 475934 MT +457555 475438 LT +456855 475438 LT +456359 475934 LT +456359 489335 LT +456855 489831 LT +457555 489831 LT +458051 489335 LT +CP BF QS +NP +458051 475934 MT +451205 469088 LT +450505 469088 LT +450009 469584 LT +450009 470284 LT +456855 477130 LT +457555 477130 LT +458051 476634 LT +CP BF QS +NP +439001 469584 MT +438505 469088 LT +437805 469088 LT +430959 475934 LT +430959 476634 LT +431455 477130 LT +432155 477130 LT +439001 470284 LT +CP BF QS +NP +458051 463233 MT +457555 462737 LT +456855 462737 LT +456607 462985 LT +450009 469584 LT +450009 470284 LT +450505 470780 LT +451205 470780 LT +451453 470532 LT +458051 463933 LT +CP BF QS +NP +458051 450532 MT +457555 450036 LT +456855 450036 LT +456359 450532 LT +456359 463933 LT +456855 464429 LT +457555 464429 LT +458051 463933 LT +CP BF QS +NP +458051 450532 MT +451205 443686 LT +450505 443686 LT +450009 444182 LT +450009 444882 LT +456855 451728 LT +457555 451728 LT +458051 451232 LT +CP BF QS +NP +439001 444182 MT +438505 443686 LT +437805 443686 LT +430959 450532 LT +430959 451232 LT +431455 451728 LT +432155 451728 LT +439001 444882 LT +CP BF QS +NP +432651 450532 MT +432155 450036 LT +431455 450036 LT +430959 450532 LT +430959 463933 LT +431455 464429 LT +432155 464429 LT +432651 463933 LT +CP BF QS +NP +432403 462985 MT +432155 462737 LT +431455 462737 LT +430959 463233 LT +430959 463933 LT +437557 470532 LT +437805 470780 LT +438505 470780 LT +439001 470284 LT +439001 469584 LT +CP BF QS +NP +451701 494985 MT +451205 494489 LT +437805 494489 LT +437309 494985 LT +437309 495685 LT +437805 496181 LT +451205 496181 LT +451701 495685 LT +CP BF QS +NP +458051 488635 MT +457555 488139 LT +456855 488139 LT +450009 494985 LT +450009 495685 LT +450505 496181 LT +451205 496181 LT +458051 489335 LT +CP BF QS +NP +439001 494985 MT +432155 488139 LT +431455 488139 LT +430959 488635 LT +430959 489335 LT +437805 496181 LT +438505 496181 LT +439001 495685 LT +CP BF QS +NP +432651 475934 MT +432155 475438 LT +431455 475438 LT +430959 475934 LT +430959 489335 LT +431455 489831 LT +432155 489831 LT +432651 489335 LT +CP BF QS +NP +458051 437831 MT +457555 437335 LT +456855 437335 LT +456607 437583 LT +450009 444182 LT +450009 444882 LT +450505 445378 LT +451205 445378 LT +451453 445130 LT +458051 438531 LT +CP BF QS +NP +458051 425130 MT +457555 424634 LT +456855 424634 LT +456359 425130 LT +456359 438531 LT +456855 439027 LT +457555 439027 LT +458051 438531 LT +CP BF QS +NP +458051 425130 MT +451205 418284 LT +450505 418284 LT +450009 418780 LT +450009 419480 LT +456855 426326 LT +457555 426326 LT +458051 425830 LT +CP BF QS +NP +439001 418780 MT +438505 418284 LT +437805 418284 LT +430959 425130 LT +430959 425830 LT +431455 426326 LT +432155 426326 LT +439001 419480 LT +CP BF QS +NP +432651 425130 MT +432155 424634 LT +431455 424634 LT +430959 425130 LT +430959 438531 LT +431455 439027 LT +432155 439027 LT +432651 438531 LT +CP BF QS +NP +432403 437583 MT +432155 437335 LT +431455 437335 LT +430959 437831 LT +430959 438531 LT +437557 445130 LT +437805 445378 LT +438505 445378 LT +439001 444882 LT +439001 444182 LT +CP BF QS +NP +451701 418780 MT +451205 418284 LT +437805 418284 LT +437309 418780 LT +437309 419480 LT +437805 419976 LT +451205 419976 LT +451701 419480 LT +CP BF QS +[-0 -1 1 0 3946.99 1913.09]ST +0 Y<001B>22 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +1 0 0 d2 1 1 PE +1 0 d2 BR +NP +226063 444532 MT +226063 444532 LT +205742 444532 LT +205742 444532 LT +205742 444532 LT +205742 444532 LT +226063 444532 LT +226063 444532 LT +CP BF QS +NP +215903 434371 MT +215903 434371 LT +215903 434371 LT +215903 434371 LT +215903 454693 LT +215903 454693 LT +215903 454693 LT +215903 454693 LT +CP BF QS +NP +86361 317523 MT +86361 317523 LT +66041 317523 LT +66041 317523 LT +66041 317523 LT +66041 317523 LT +86361 317523 LT +86361 317523 LT +CP BF QS +NP +76201 307362 MT +76201 307362 LT +76201 307362 LT +76201 307362 LT +76201 327683 LT +76201 327683 LT +76201 327683 LT +76201 327683 LT +CP BF QS +NP +137162 317523 MT +137162 317523 LT +116841 317523 LT +116841 317523 LT +116841 317523 LT +116841 317523 LT +137162 317523 LT +137162 317523 LT +CP BF QS +NP +127001 307362 MT +127001 307362 LT +127001 307362 LT +127001 307362 LT +127001 327683 LT +127001 327683 LT +127001 327683 LT +127001 327683 LT +CP BF QS +NP +454665 63505 MT +454665 63505 LT +434345 63505 LT +434345 63505 LT +434345 63505 LT +434345 63505 LT +454665 63505 LT +454665 63505 LT +CP BF QS +NP +444505 53344 MT +444505 53344 LT +444505 53344 LT +444505 53344 LT +444505 73665 LT +444505 73665 LT +444505 73665 LT +444505 73665 LT +CP BF QS +NP +289563 330224 MT +289563 330224 LT +269243 330224 LT +269243 330224 LT +269243 330224 LT +269243 330224 LT +289563 330224 LT +289563 330224 LT +CP BF QS +NP +279403 320063 MT +279403 320063 LT +279403 320063 LT +279403 320063 LT +279403 340384 LT +279403 340384 LT +279403 340384 LT +279403 340384 LT +CP BF QS +NP +264163 254018 MT +264163 254018 LT +243843 254018 LT +243843 254018 LT +243843 254018 LT +243843 254018 LT +264163 254018 LT +264163 254018 LT +CP BF QS +NP +254003 243857 MT +254003 243857 LT +254003 243857 LT +254003 243857 LT +254003 264179 LT +254003 264179 LT +254003 264179 LT +254003 264179 LT +CP BF QS +NP +314964 254018 MT +314964 254018 LT +294643 254018 LT +294643 254018 LT +294643 254018 LT +294643 254018 LT +314964 254018 LT +314964 254018 LT +CP BF QS +NP +304804 243857 MT +304804 243857 LT +304804 243857 LT +304804 243857 LT +304804 264179 LT +304804 264179 LT +304804 264179 LT +304804 264179 LT +CP BF QS +NP +429265 254018 MT +429265 254018 LT +408945 254018 LT +408945 254018 LT +408945 254018 LT +408945 254018 LT +429265 254018 LT +429265 254018 LT +CP BF QS +NP +419105 243857 MT +419105 243857 LT +419105 243857 LT +419105 243857 LT +419105 264179 LT +419105 264179 LT +419105 264179 LT +419105 264179 LT +CP BF QS +NP +137162 215915 MT +137162 215915 LT +116841 215915 LT +116841 215915 LT +116841 215915 LT +116841 215915 LT +137162 215915 LT +137162 215915 LT +CP BF QS +NP +127001 205755 MT +127001 205755 LT +127001 205755 LT +127001 205755 LT +127001 226076 LT +127001 226076 LT +127001 226076 LT +127001 226076 LT +CP BF QS +NP +187962 50804 MT +187962 50804 LT +167642 50804 LT +167642 50804 LT +167642 50804 LT +167642 50804 LT +187962 50804 LT +187962 50804 LT +CP BF QS +NP +177802 40643 MT +177802 40643 LT +177802 40643 LT +177802 40643 LT +177802 60964 LT +177802 60964 LT +177802 60964 LT +177802 60964 LT +CP BF QS +NP +302264 139710 MT +302264 139710 LT +281943 139710 LT +281943 139710 LT +281943 139710 LT +281943 139710 LT +302264 139710 LT +302264 139710 LT +CP BF QS +NP +292103 129549 MT +292103 129549 LT +292103 129549 LT +292103 129549 LT +292103 149871 LT +292103 149871 LT +292103 149871 LT +292103 149871 LT +CP BF QS +NP +302264 190514 MT +302264 190514 LT +281943 190514 LT +281943 190514 LT +281943 190514 LT +281943 190514 LT +302264 190514 LT +302264 190514 LT +CP BF QS +NP +292103 180353 MT +292103 180353 LT +292103 180353 LT +292103 180353 LT +292103 200674 LT +292103 200674 LT +292103 200674 LT +292103 200674 LT +CP BF QS +NP +187962 114308 MT +187962 114308 LT +167642 114308 LT +167642 114308 LT +167642 114308 LT +167642 114308 LT +187962 114308 LT +187962 114308 LT +CP BF QS +NP +177802 104147 MT +177802 104147 LT +177802 104147 LT +177802 104147 LT +177802 124469 LT +177802 124469 LT +177802 124469 LT +177802 124469 LT +CP BF QS +NP +187962 165112 MT +187962 165112 LT +167642 165112 LT +167642 165112 LT +167642 165112 LT +167642 165112 LT +187962 165112 LT +187962 165112 LT +CP BF QS +NP +177802 154951 MT +177802 154951 LT +177802 154951 LT +177802 154951 LT +177802 175273 LT +177802 175273 LT +177802 175273 LT +177802 175273 LT +CP BF QS +NP +454665 457233 MT +454665 457233 LT +434345 457233 LT +434345 457233 LT +434345 457233 LT +434345 457233 LT +454665 457233 LT +454665 457233 LT +CP BF QS +NP +444505 447072 MT +444505 447072 LT +444505 447072 LT +444505 447072 LT +444505 467393 LT +444505 467393 LT +444505 467393 LT +444505 467393 LT +CP BF QS +[0 -1 1 0 2938.4 2110.07]ST +1 0 128 d2 1 1 PE +1 128 d2 BR +F1 F +0 Y<001A0016001B>91 0 AT +[-0 -1 1 0 3128 2335.06]ST +F3 F +0 Y<0004001E>52 0 AT +[-0 -1 1 0 3248 2335.06]ST +0 Y<0004001F>52 0 AT +[1 0 0 1 3781.99 2800.02]ST +0 Y<0020001B>49 0 AT +[1 0 0 1 3608.39 2427.45]ST +0 Y<0021001B>54 0 AT +[0 -1 1 0 3448.99 2542.04]ST +0 Y<0016001D>52 0 AT +[0 -1 1 0 3568.99 2542.04]ST +0 Y<0016001E>52 0 AT +[-0 -1 1 0 3973.99 2422.05]ST +0 Y<00220023001B>69 0 AT +[1 0 0 1 3110 2554.04]ST +0 Y<0004001B>52 0 AT +[1 0 0 1 3316.99 3046.01]ST +0 Y<0004001C>52 0 AT +[1 0 0 1 3529.99 2737.03]ST +0 Y<0016001B>52 0 AT +[1 0 0 1 3628.99 2620.03]ST +0 Y<0016001C>52 0 AT +[1 0 0 1 3248 2800.02]ST +0 Y<0024001B>52 0 AT +[1 0 0 1 3248 2680.03]ST +0 Y<0024001C>52 0 AT +[-0 -1 1 0 4000.99 2097.08]ST +0 Y<000A0014000400250018>142 0 AT +[1 0 0 1 3017 2065.07]ST +F1 F +0 Y<0026001400270028002900110023>261 0 AT +[-0 -1 1 0 3077 2343.66]ST +F3 F +0 Y<002A0029>44 0 AT +[-0 -1 1 0 3197 2343.66]ST +0 Y<002A0029>44 0 AT +[1 0 0 1 3511.99 2240.86]ST +0 Y<001B001C0026002B002C>127 0 AT +[0 -1 1 0 3544.99 2542.04]ST +0 Y<001C001C002D>66 0 AT +[0 -1 1 0 3664.99 2542.04]ST +0 Y<001C001C002D>66 0 AT +[-0 -1 1 0 3766.99 2421.05]ST +0 Y<001A000A0023>65 0 AT +[1 0 0 1 3128.6 2605.04]ST +0 Y<001C002E001C>64 0 AT +[1 0 0 1 3283.39 2995.01]ST +0 Y<001E002E002F>64 0 AT +[1 0 0 1 3529.99 2833.02]ST +0 Y<001B003000300006>88 0 AT +[1 0 0 1 3628.99 2707.03]ST +0 Y<001B0030000F>66 0 AT +[1 0 0 1 3248 2890.02]ST +0 Y<001D0031002A0025>82 0 AT +[1 0 0 1 3248 2770.02]ST +0 Y<001D0031002A0025>82 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +1 0 0 128 0 1 1 PE +222250 298450 114301 63501 R +1 0 128 d2 1 1 PE +NP +79164 265492 MT +77428 263756 LT +74974 263756 LT +73238 265492 LT +73238 278107 LT +74974 279843 LT +77428 279843 LT +79164 278107 LT +CP BF QS +NP +79164 356939 MT +77428 355203 LT +74974 355203 LT +73238 356939 LT +73238 369553 LT +74974 371289 LT +77428 371289 LT +79164 369553 LT +CP BF QS +NP +129964 265492 MT +128228 263756 LT +125774 263756 LT +124038 265492 LT +124038 278107 LT +125774 279843 LT +128228 279843 LT +129964 278107 LT +CP BF QS +NP +129964 356939 MT +128228 355203 LT +125774 355203 LT +124038 356939 LT +124038 369553 LT +125774 371289 LT +128228 371289 LT +129964 369553 LT +CP BF QS +NP +254849 257055 MT +254353 256559 LT +253653 256559 LT +253157 257055 LT +253157 267069 LT +253653 267565 LT +254353 267565 LT +254849 267069 LT +CP BF QS +NP +254849 240967 MT +254353 240471 LT +253653 240471 LT +253157 240967 LT +253157 251405 LT +253653 251901 LT +254353 251901 LT +254849 251405 LT +CP BF QS +NP +305650 257055 MT +305154 256559 LT +304454 256559 LT +303958 257055 LT +303958 267069 LT +304454 267565 LT +305154 267565 LT +305650 267069 LT +CP BF QS +NP +305650 240967 MT +305154 240471 LT +304454 240471 LT +303958 240967 LT +303958 251405 LT +304454 251901 LT +305154 251901 LT +305650 251405 LT +CP BF QS +428752 301752 6097 6097 R +428752 276352 6097 6097 R +428752 250952 6097 6097 R +403352 301752 6097 6097 R +403352 276352 6097 6097 R +403352 250952 6097 6097 R +428752 225552 6097 6097 R +428752 200152 6097 6097 R +403352 200152 6097 6097 R +403352 225552 6097 6097 R +NP +180765 214688 MT +179029 212952 LT +166415 212952 LT +164679 214688 LT +164679 217142 LT +166415 218878 LT +179029 218878 LT +180765 217142 LT +CP BF QS +NP +89324 214688 MT +87588 212952 LT +74974 212952 LT +73238 214688 LT +73238 217142 LT +74974 218878 LT +87588 218878 LT +89324 217142 LT +CP BF QS +NP +140125 49577 MT +138389 47841 LT +125774 47841 LT +124038 49577 LT +124038 52031 LT +125774 53767 LT +138389 53767 LT +140125 52031 LT +CP BF QS +NP +231566 49577 MT +229830 47841 LT +217216 47841 LT +215480 49577 LT +215480 52031 LT +217216 53767 LT +229830 53767 LT +231566 52031 LT +CP BF QS +NP +305650 139360 MT +305154 138864 LT +295140 138864 LT +294644 139360 LT +294644 140060 LT +295140 140556 LT +305154 140556 LT +305650 140060 LT +CP BF QS +NP +289986 139360 MT +289490 138864 LT +279053 138864 LT +278557 139360 LT +278557 140060 LT +279053 140556 LT +289490 140556 LT +289986 140060 LT +CP BF QS +NP +285329 190164 MT +284833 189668 LT +275243 189668 LT +274747 190164 LT +274747 190864 LT +275243 191360 LT +284833 191360 LT +285329 190864 LT +CP BF QS +NP +285329 177463 MT +284833 176967 LT +284133 176967 LT +283637 177463 LT +283637 190864 LT +284133 191360 LT +284833 191360 LT +285329 190864 LT +CP BF QS +NP +290409 177463 MT +289913 176967 LT +284133 176967 LT +283637 177463 LT +283637 178163 LT +284133 178659 LT +289913 178659 LT +290409 178163 LT +CP BF QS +NP +290409 177463 MT +289913 176967 LT +289213 176967 LT +288717 177463 LT +288717 203565 LT +289213 204061 LT +289913 204061 LT +290409 203565 LT +CP BF QS +NP +290409 202865 MT +289913 202369 LT +284133 202369 LT +283637 202865 LT +283637 203565 LT +284133 204061 LT +289913 204061 LT +290409 203565 LT +CP BF QS +NP +285329 190164 MT +284833 189668 LT +284133 189668 LT +283637 190164 LT +283637 203565 LT +284133 204061 LT +284833 204061 LT +285329 203565 LT +CP BF QS +NP +309460 190164 MT +308964 189668 LT +298104 189668 LT +297608 190164 LT +297608 190864 LT +298104 191360 LT +308964 191360 LT +309460 190864 LT +CP BF QS +294640 177800 5081 25401 R +NP +231143 113256 MT +229655 111768 LT +218661 111768 LT +217173 113256 LT +217173 115360 LT +218661 116848 LT +229655 116848 LT +231143 115360 LT +CP BF QS +NP +138432 113256 MT +136944 111768 LT +125949 111768 LT +124461 113256 LT +124461 115360 LT +125949 116848 LT +136944 116848 LT +138432 115360 LT +CP BF QS +NP +231143 164060 MT +229655 162572 LT +218661 162572 LT +217173 164060 LT +217173 166164 LT +218661 167652 LT +229655 167652 LT +231143 166164 LT +CP BF QS +NP +138432 164060 MT +136944 162572 LT +125949 162572 LT +124461 164060 LT +124461 166164 LT +125949 167652 LT +136944 167652 LT +138432 166164 LT +CP BF QS +441960 454660 5081 5081 R +441960 480060 5081 5081 R +441960 429260 5081 5081 R + +QP +%%Trailer +%%Pages: 1 +%%DocumentFonts: Helvetica +%%EOF diff --git a/circuit/circuit.sch b/circuit/circuit.sch new file mode 100644 index 0000000000000000000000000000000000000000..0db6cfc17f44075dc899a965a4c7336028c0e913 GIT binary patch literal 249426 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

(bJ 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 L7ni!e2KoO1Oi=($ literal 0 HcmV?d00001 diff --git a/circuit/circuit.sch.png b/circuit/circuit.sch.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2c9cc040d3775f83b1d6b7ac4fb3f8c1f66728 GIT binary patch literal 27023 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 z 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 J|9<%VzW`{Ji!cBH literal 0 HcmV?d00001 diff --git a/circuit/circuit.sch.ps b/circuit/circuit.sch.ps new file mode 100644 index 0000000..2de6553 --- /dev/null +++ b/circuit/circuit.sch.ps @@ -0,0 +1,8913 @@ +%!PS-Adobe-1.0 +%%BoundingBox: 0 0 594 842 +%%Creator: EAGLE Version 4.16 Copyright (c) 1988-2005 CadSoft +%%Title: circuit.sch +%%CreationDate: Sat Oct 28 14:04:26 2006 +%%Orientation: Landscape +%%Pages: 1 +%%DocumentFonts: Helvetica + +%%EndComments +%%BeginProlog +% Prolog copyright 1994-2003 Trolltech. You may copy this prolog in any way +% that is directly related to this document. For other use of this prolog, +% see your licensing agreement for Qt. +/d/def load def/D{bind d}bind d/d2{dup dup}D/B{0 d2}D/W{255 d2}D/ED{exch d}D +/D0{0 ED}D/LT{lineto}D/MT{moveto}D/S{stroke}D/F{setfont}D/SW{setlinewidth}D +/CP{closepath}D/RL{rlineto}D/NP{newpath}D/CM{currentmatrix}D/SM{setmatrix}D +/TR{translate}D/SD{setdash}D/SC{aload pop setrgbcolor}D/CR{currentfile read +pop}D/i{index}D/bs{bitshift}D/scs{setcolorspace}D/DB{dict dup begin}D/DE{end +d}D/ie{ifelse}D/sp{astore pop}D/BSt 0 d/LWi 1 d/PSt 1 d/Cx 0 d/Cy 0 d/WFi +false d/OMo false d/BCol[1 1 1]d/PCol[0 0 0]d/BkCol[1 1 1]d/BDArr[0.94 0.88 +0.63 0.50 0.37 0.12 0.06]d/defM matrix d/nS 0 d/GPS{PSt 1 ge PSt 5 le and{{ +LArr PSt 1 sub 2 mul get}{LArr PSt 2 mul 1 sub get}ie}{[]}ie}D/QS{PSt 0 ne{ +gsave LWi SW true GPS 0 SD S OMo PSt 1 ne and{BkCol SC false GPS dup 0 get +SD S}if grestore}if}D/r28{{CR dup 32 gt{exit}if pop}loop 3{CR}repeat 0 4{7 +bs exch dup 128 gt{84 sub}if 42 sub 127 and add}repeat}D/rA 0 d/rL 0 d/rB{rL +0 eq{/rA r28 d/rL 28 d}if dup rL gt{rA exch rL sub rL exch/rA 0 d/rL 0 d rB +exch bs add}{dup rA 16#fffffff 3 -1 roll bs not and exch dup rL exch sub/rL +ED neg rA exch bs/rA ED}ie}D/uc{/rL 0 d 0{dup 2 i length ge{exit}if 1 rB 1 +eq{3 rB dup 3 ge{1 add dup rB 1 i 5 ge{1 i 6 ge{1 i 7 ge{1 i 8 ge{128 add}if +64 add}if 32 add}if 16 add}if 3 add exch pop}if 3 add exch 10 rB 1 add{dup 3 +i lt{dup}{2 i}ie 4 i 3 i 3 i sub 2 i getinterval 5 i 4 i 3 -1 roll +putinterval dup 4 -1 roll add 3 1 roll 4 -1 roll exch sub dup 0 eq{exit}if 3 +1 roll}loop pop pop}{3 rB 1 add{2 copy 8 rB put 1 add}repeat}ie}loop pop}D +/sl D0/QCIgray D0/QCIcolor D0/QCIindex D0/QCI{/colorimage where{pop false 3 +colorimage}{exec/QCIcolor ED/QCIgray QCIcolor length 3 idiv string d 0 1 +QCIcolor length 3 idiv 1 sub{/QCIindex ED/x QCIindex 3 mul d QCIgray +QCIindex QCIcolor x get 0.30 mul QCIcolor x 1 add get 0.59 mul QCIcolor x 2 +add get 0.11 mul add add cvi put}for QCIgray image}ie}D/di{gsave TR 1 i 1 eq +{false eq{pop true 3 1 roll 4 i 4 i false 4 i 4 i imagemask BkCol SC +imagemask}{pop false 3 1 roll imagemask}ie}{dup false ne{/languagelevel +where{pop languagelevel 3 ge}{false}ie}{false}ie{/ma ED 8 eq{/dc[0 1]d +/DeviceGray}{/dc[0 1 0 1 0 1]d/DeviceRGB}ie scs/im ED/mt ED/h ED/w ED/id 7 +DB/ImageType 1 d/Width w d/Height h d/ImageMatrix mt d/DataSource im d +/BitsPerComponent 8 d/Decode dc d DE/md 7 DB/ImageType 1 d/Width w d/Height +h d/ImageMatrix mt d/DataSource ma d/BitsPerComponent 1 d/Decode[0 1]d DE 4 +DB/ImageType 3 d/DataDict id d/MaskDict md d/InterleaveType 3 d end image}{ +pop 8 4 1 roll 8 eq{image}{QCI}ie}ie}ie grestore}d/BF{gsave BSt 1 eq{BCol SC +WFi{fill}{eofill}ie}if BSt 2 ge BSt 8 le and{BDArr BSt 2 sub get/sc ED BCol{ +1. exch sub sc mul 1. exch sub}forall 3 array astore SC WFi{fill}{eofill}ie} +if BSt 9 ge BSt 14 le and{WFi{clip}{eoclip}ie defM SM pathbbox 3 i 3 i TR 4 +2 roll 3 2 roll exch sub/h ED sub/w ED OMo{NP 0 0 MT 0 h RL w 0 RL 0 h neg +RL CP BkCol SC fill}if BCol SC 0.3 SW NP BSt 9 eq BSt 11 eq or{0 4 h{dup 0 +exch MT w exch LT}for}if BSt 10 eq BSt 11 eq or{0 4 w{dup 0 MT h LT}for}if +BSt 12 eq BSt 14 eq or{w h gt{0 6 w h add{dup 0 MT h sub h LT}for}{0 6 w h +add{dup 0 exch MT w sub w exch LT}for}ie}if BSt 13 eq BSt 14 eq or{w h gt{0 +6 w h add{dup h MT h sub 0 LT}for}{0 6 w h add{dup w exch MT w sub 0 exch LT +}for}ie}if S}if BSt 24 eq{}if grestore}D/mat matrix d/ang1 D0/ang2 D0/w D0/h +D0/x D0/y D0/ARC{/ang2 ED/ang1 ED/h ED/w ED/y ED/x ED mat CM pop x w 2 div +add y h 2 div add TR 1 h w div neg scale ang2 0 ge{0 0 w 2 div ang1 ang1 +ang2 add arc}{0 0 w 2 div ang1 ang1 ang2 add arcn}ie mat SM}D/C D0/P{NP MT +0.5 0.5 rmoveto 0 -1 RL -1 0 RL 0 1 RL CP fill}D/M{/Cy ED/Cx ED}D/L{NP Cx Cy +MT/Cy ED/Cx ED Cx Cy LT QS}D/DL{NP MT LT QS}D/HL{1 i DL}D/VL{2 i exch DL}D/R +{/h ED/w ED/y ED/x ED NP x y MT 0 h RL w 0 RL 0 h neg RL CP BF QS}D/ACR{/h +ED/w ED/y ED/x ED x y MT 0 h RL w 0 RL 0 h neg RL CP}D/xr D0/yr D0/rx D0/ry +D0/rx2 D0/ry2 D0/RR{/yr ED/xr ED/h ED/w ED/y ED/x ED xr 0 le yr 0 le or{x y +w h R}{xr 100 ge yr 100 ge or{x y w h E}{/rx xr w mul 200 div d/ry yr h mul +200 div d/rx2 rx 2 mul d/ry2 ry 2 mul d NP x rx add y MT x y rx2 ry2 180 -90 +x y h add ry2 sub rx2 ry2 270 -90 x w add rx2 sub y h add ry2 sub rx2 ry2 0 +-90 x w add rx2 sub y rx2 ry2 90 -90 ARC ARC ARC ARC CP BF QS}ie}ie}D/E{/h +ED/w ED/y ED/x ED mat CM pop x w 2 div add y h 2 div add TR 1 h w div scale +NP 0 0 w 2 div 0 360 arc mat SM BF QS}D/A{16 div exch 16 div exch NP ARC QS} +D/PIE{/ang2 ED/ang1 ED/h ED/w ED/y ED/x ED NP x w 2 div add y h 2 div add MT +x y w h ang1 16 div ang2 16 div ARC CP BF QS}D/CH{16 div exch 16 div exch NP +ARC CP BF QS}D/BZ{curveto QS}D/CRGB{255 div 3 1 roll 255 div 3 1 roll 255 +div 3 1 roll}D/BC{CRGB BkCol sp}D/BR{CRGB BCol sp/BSt ED}D/WB{1 W BR}D/NB{0 +B BR}D/PE{setlinejoin setlinecap CRGB PCol sp/LWi ED/PSt ED LWi 0 eq{0.25 +/LWi ED}if PCol SC}D/P1{1 0 5 2 roll 0 0 PE}D/ST{defM SM concat}D/MF{true +exch true exch{exch pop exch pop dup 0 get dup findfont dup/FontName get 3 +-1 roll eq{exit}if}forall exch dup 1 get/fxscale ED 2 get/fslant ED exch +/fencoding ED[fxscale 0 fslant 1 0 0]makefont fencoding false eq{}{dup +maxlength dict begin{1 i/FID ne{def}{pop pop}ifelse}forall/Encoding +fencoding d currentdict end}ie definefont pop}D/MFEmb{findfont dup length +dict begin{1 i/FID ne{d}{pop pop}ifelse}forall/Encoding ED currentdict end +definefont pop}D/DF{findfont/fs 3 -1 roll d[fs 0 0 fs -1 mul 0 0]makefont d} +D/ty 0 d/Y{/ty ED}D/Tl{gsave SW NP 1 i exch MT 1 i 0 RL S grestore}D/XYT{ty +MT/xyshow where{pop pop xyshow}{exch pop 1 i dup length 2 div exch +stringwidth pop 3 -1 roll exch sub exch div exch 0 exch ashow}ie}D/AT{ty MT +1 i dup length 2 div exch stringwidth pop 3 -1 roll exch sub exch div exch 0 +exch ashow}D/QI{/C save d pageinit/Cx 0 d/Cy 0 d/OMo false d}D/QP{C restore +showpage}D/SPD{/setpagedevice where{1 DB 3 1 roll d end setpagedevice}{pop +pop}ie}D/SV{BSt LWi PSt Cx Cy WFi OMo BCol PCol BkCol/nS nS 1 add d gsave}D +/RS{nS 0 gt{grestore/BkCol ED/PCol ED/BCol ED/OMo ED/WFi ED/Cy ED/Cx ED/PSt +ED/LWi ED/BSt ED/nS nS 1 sub d}if}D/CLSTART{/clipTmp matrix CM d defM SM NP} +D/CLEND{clip NP clipTmp SM}D/CLO{grestore gsave defM SM}D + +/LArr[ [] [] [ 83.333 25.0 ] [ 25.0 83.333 ] [ 25.0 25.0 ] [ 25.0 25.0 ] [ 41.666 25.0 25.0 25.0 ] [ 25.0 41.666 25.0 25.0 ] [ 41.666 25.0 25.0 25.0 25.0 ] [ 25.0 41.666 25.0 25.0 25.0 25.0 ] ] d +/pageinit { +% 210*297 mm (landscape) + 90 rotate 0.12 -0.12 scale/defM matrix CM d } d +%%EndProlog +%%BeginSetup +% Fonts and encodings used +/HelveticaList [ +[ /Helvetica 1.0 0.0 ] +] d +% No embeddable font for Helvetica found +%% Font Page 00 +/Helvetica-ENC-00 [ +/.notdef/one/two/three/four/V/C/D/hyphen/plus/G/N/five/a/t/space/r/o/u/n/d +/six/seven/eight/nine/zero/M/O/S/I/period/c/R/e/s/K/P/U/B/y/p/comma/f/v/i/w/l +/k/W/h/parenleft/parenright/X/T/A/L/slash/E/F/Q/J/H/z/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef] def +/Helvetica-Uni-00 Helvetica-ENC-00 HelveticaList MF +%%BeginFont: Helvetica +%!PS-AdobeFont-1.0 Composite Font +%%FontName: Helvetica-Uni +%%Creator: Composite font created by Qt +25 dict begin +/FontName /Helvetica-Uni def +/PaintType 0 def +/FontMatrix[1 0 0 1 0 0]def +/FontType 0 def +/FMapType 2 def +/Encoding [ +0]def +/FDepVector [ +/Helvetica-Uni-00 findfont +]def +FontName currentdict end definefont pop +%%EndFont +/F1 59/Helvetica-Uni DF +/F2 64/Helvetica-Uni DF +/F3 85/Helvetica-Uni DF +/F4 42/Helvetica-Uni DF +/F5 51/Helvetica-Uni DF +/F6 48/Helvetica-Uni DF +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +QI +%%EndPageSetup +255 d2 BC +[0.00236219 0 -0 -0.00236213 388 4609]ST +CLSTART +300 300 6417 4358 ACR +CLEND +1 0 0 128 0 1 1 PE +1 0 128 0 BR +255 d2 BC +NP +966050 1.11729e+06 MT +965554 1.11679e+06 LT +939454 1.11679e+06 LT +938958 1.11729e+06 LT +938958 1.11799e+06 LT +939454 1.11848e+06 LT +965554 1.11848e+06 LT +966050 1.11799e+06 LT +CP BF QS +NP +712049 1.19349e+06 MT +711553 1.19299e+06 LT +685453 1.19299e+06 LT +684957 1.19349e+06 LT +684957 1.19419e+06 LT +685453 1.19469e+06 LT +711553 1.19469e+06 LT +712049 1.19419e+06 LT +CP BF QS +NP +712049 1.29509e+06 MT +711553 1.2946e+06 LT +685453 1.2946e+06 LT +684957 1.29509e+06 LT +684957 1.29579e+06 LT +685453 1.29629e+06 LT +711553 1.29629e+06 LT +712049 1.29579e+06 LT +CP BF QS +NP +2.23606e+06 583870 MT +2.23556e+06 583374 LT +2.23486e+06 583374 LT +2.23436e+06 583870 LT +2.23436e+06 635371 LT +2.23486e+06 635867 LT +2.23556e+06 635867 LT +2.23606e+06 635371 LT +CP BF QS +NP +2.23606e+06 533068 MT +2.23556e+06 532572 LT +2.23486e+06 532572 LT +2.23436e+06 533068 LT +2.23436e+06 584570 LT +2.23486e+06 585066 LT +2.23556e+06 585066 LT +2.23606e+06 584570 LT +CP BF QS +NP +2.26146e+06 583870 MT +2.26096e+06 583374 LT +2.26026e+06 583374 LT +2.25976e+06 583870 LT +2.25976e+06 635371 LT +2.26026e+06 635867 LT +2.26096e+06 635867 LT +2.26146e+06 635371 LT +CP BF QS +NP +2.26146e+06 583870 MT +2.26096e+06 583374 LT +2.23486e+06 583374 LT +2.23436e+06 583870 LT +2.23436e+06 584570 LT +2.23486e+06 585066 LT +2.26096e+06 585066 LT +2.26146e+06 584570 LT +CP BF QS +NP +2.28686e+06 583870 MT +2.28636e+06 583374 LT +2.28566e+06 583374 LT +2.28516e+06 583870 LT +2.28516e+06 635371 LT +2.28566e+06 635867 LT +2.28636e+06 635867 LT +2.28686e+06 635371 LT +CP BF QS +NP +2.28686e+06 583870 MT +2.28636e+06 583374 LT +2.26026e+06 583374 LT +2.25976e+06 583870 LT +2.25976e+06 584570 LT +2.26026e+06 585066 LT +2.28636e+06 585066 LT +2.28686e+06 584570 LT +CP BF QS +NP +2.31226e+06 583870 MT +2.31176e+06 583374 LT +2.31106e+06 583374 LT +2.31056e+06 583870 LT +2.31056e+06 635371 LT +2.31106e+06 635867 LT +2.31176e+06 635867 LT +2.31226e+06 635371 LT +CP BF QS +NP +2.31226e+06 583870 MT +2.31176e+06 583374 LT +2.28566e+06 583374 LT +2.28516e+06 583870 LT +2.28516e+06 584570 LT +2.28566e+06 585066 LT +2.31176e+06 585066 LT +2.31226e+06 584570 LT +CP BF QS +2.23012e+06 579120 10161 10161 E +2.25552e+06 579120 10161 10161 E +2.28092e+06 579120 10161 10161 E +NP +356448 634671 MT +355952 634175 LT +228251 634175 LT +227755 634671 LT +227755 635371 LT +228251 635867 LT +355952 635867 LT +356448 635371 LT +CP BF QS +NP +356448 431464 MT +355952 430968 LT +355252 430968 LT +354756 431464 LT +354756 635371 LT +355252 635867 LT +355952 635867 LT +356448 635371 LT +CP BF QS +NP +610449 431464 MT +609953 430968 LT +609253 430968 LT +608757 431464 LT +608757 482966 LT +609253 483462 LT +609953 483462 LT +610449 482966 LT +CP BF QS +NP +737449 431464 MT +736953 430968 LT +736253 430968 LT +735757 431464 LT +735757 482966 LT +736253 483462 LT +736953 483462 LT +737449 482966 LT +CP BF QS +NP +483448 431464 MT +482952 430968 LT +482252 430968 LT +481756 431464 LT +481756 482966 LT +482252 483462 LT +482952 483462 LT +483448 482966 LT +CP BF QS +NP +610449 812477 MT +609953 811981 LT +609253 811981 LT +608757 812477 LT +608757 889380 LT +609253 889876 LT +609953 889876 LT +610449 889380 LT +CP BF QS +NP +737449 812477 MT +736953 811981 LT +736253 811981 LT +735757 812477 LT +735757 889380 LT +736253 889876 LT +736953 889876 LT +737449 889380 LT +CP BF QS +NP +1.80425e+06 1.26969e+06 MT +1.80376e+06 1.2692e+06 LT +1.80306e+06 1.2692e+06 LT +1.80256e+06 1.26969e+06 LT +1.80256e+06 1.372e+06 LT +1.80306e+06 1.37249e+06 LT +1.80376e+06 1.37249e+06 LT +1.80425e+06 1.372e+06 LT +CP BF QS +NP +1.85505e+06 1.3713e+06 MT +1.85456e+06 1.3708e+06 LT +1.80306e+06 1.3708e+06 LT +1.80256e+06 1.3713e+06 LT +1.80256e+06 1.372e+06 LT +1.80306e+06 1.37249e+06 LT +1.85456e+06 1.37249e+06 LT +1.85505e+06 1.372e+06 LT +CP BF QS +NP +1.88045e+06 1.3713e+06 MT +1.87996e+06 1.3708e+06 LT +1.85386e+06 1.3708e+06 LT +1.85336e+06 1.3713e+06 LT +1.85336e+06 1.372e+06 LT +1.85386e+06 1.37249e+06 LT +1.87996e+06 1.37249e+06 LT +1.88045e+06 1.372e+06 LT +CP BF QS +NP +1.95666e+06 1.3713e+06 MT +1.95616e+06 1.3708e+06 LT +1.85386e+06 1.3708e+06 LT +1.85336e+06 1.3713e+06 LT +1.85336e+06 1.372e+06 LT +1.85386e+06 1.37249e+06 LT +1.95616e+06 1.37249e+06 LT +1.95666e+06 1.372e+06 LT +CP BF QS +NP +864450 1.29509e+06 MT +863954 1.2946e+06 LT +787053 1.2946e+06 LT +786557 1.29509e+06 LT +786557 1.29579e+06 LT +787053 1.29629e+06 LT +863954 1.29629e+06 LT +864450 1.29579e+06 LT +CP BF QS +NP +864450 1.26969e+06 MT +863954 1.2692e+06 LT +863254 1.2692e+06 LT +862758 1.26969e+06 LT +862758 1.29579e+06 LT +863254 1.29629e+06 LT +863954 1.29629e+06 LT +864450 1.29579e+06 LT +CP BF QS +858520 1.29032e+06 10161 10161 E +NP +940650 1.29509e+06 MT +940154 1.2946e+06 LT +863254 1.2946e+06 LT +862758 1.29509e+06 LT +862758 1.29579e+06 LT +863254 1.29629e+06 LT +940154 1.29629e+06 LT +940650 1.29579e+06 LT +CP BF QS +NP +940650 1.24429e+06 MT +940154 1.2438e+06 LT +939454 1.2438e+06 LT +938958 1.24429e+06 LT +938958 1.29579e+06 LT +939454 1.29629e+06 LT +940154 1.29629e+06 LT +940650 1.29579e+06 LT +CP BF QS +NP +966050 1.24429e+06 MT +965554 1.2438e+06 LT +939454 1.2438e+06 LT +938958 1.24429e+06 LT +938958 1.24499e+06 LT +939454 1.24549e+06 LT +965554 1.24549e+06 LT +966050 1.24499e+06 LT +CP BF QS +NP +864450 1.19349e+06 MT +863954 1.19299e+06 LT +863254 1.19299e+06 LT +862758 1.19349e+06 LT +862758 1.21959e+06 LT +863254 1.22009e+06 LT +863954 1.22009e+06 LT +864450 1.21959e+06 LT +CP BF QS +NP +864450 1.19349e+06 MT +863954 1.19299e+06 LT +787053 1.19299e+06 LT +786557 1.19349e+06 LT +786557 1.19419e+06 LT +787053 1.19469e+06 LT +863954 1.19469e+06 LT +864450 1.19419e+06 LT +CP BF QS +858520 1.18872e+06 10161 10161 E +NP +966050 1.19349e+06 MT +965554 1.19299e+06 LT +863254 1.19299e+06 LT +862758 1.19349e+06 LT +862758 1.19419e+06 LT +863254 1.19469e+06 LT +965554 1.19469e+06 LT +966050 1.19419e+06 LT +CP BF QS +NP +1.62645e+06 787076 MT +1.62596e+06 786580 LT +1.62526e+06 786580 LT +1.62476e+06 787076 LT +1.62476e+06 1.14339e+06 LT +1.62526e+06 1.14388e+06 LT +1.62596e+06 1.14388e+06 LT +1.62645e+06 1.14339e+06 LT +CP BF QS +NP +1.62645e+06 1.14269e+06 MT +1.62596e+06 1.14219e+06 LT +1.44746e+06 1.14219e+06 LT +1.44696e+06 1.14269e+06 LT +1.44696e+06 1.14339e+06 LT +1.44746e+06 1.14388e+06 LT +1.62596e+06 1.14388e+06 LT +1.62645e+06 1.14339e+06 LT +CP BF QS +NP +2.33766e+06 888680 MT +2.33716e+06 888184 LT +1.44746e+06 888184 LT +1.44696e+06 888680 LT +1.44696e+06 889380 LT +1.44746e+06 889876 LT +2.33716e+06 889876 LT +2.33766e+06 889380 LT +CP BF QS +NP +2.33766e+06 787076 MT +2.33716e+06 786580 LT +2.33646e+06 786580 LT +2.33596e+06 787076 LT +2.33596e+06 889380 LT +2.33646e+06 889876 LT +2.33716e+06 889876 LT +2.33766e+06 889380 LT +CP BF QS +NP +966050 1.4221e+06 MT +965554 1.4216e+06 LT +939454 1.4216e+06 LT +938958 1.4221e+06 LT +938958 1.4228e+06 LT +939454 1.42329e+06 LT +965554 1.42329e+06 LT +966050 1.4228e+06 LT +CP BF QS +NP +940650 1.4221e+06 MT +940154 1.4216e+06 LT +939454 1.4216e+06 LT +938958 1.4221e+06 LT +938958 1.5498e+06 LT +939454 1.5503e+06 LT +940154 1.5503e+06 LT +940650 1.5498e+06 LT +CP BF QS +NP +2.28686e+06 1.5491e+06 MT +2.28636e+06 1.54861e+06 LT +939454 1.54861e+06 LT +938958 1.5491e+06 LT +938958 1.5498e+06 LT +939454 1.5503e+06 LT +2.28636e+06 1.5503e+06 LT +2.28686e+06 1.5498e+06 LT +CP BF QS +NP +2.28686e+06 787076 MT +2.28636e+06 786580 LT +2.28566e+06 786580 LT +2.28516e+06 787076 LT +2.28516e+06 1.5498e+06 LT +2.28566e+06 1.5503e+06 LT +2.28636e+06 1.5503e+06 LT +2.28686e+06 1.5498e+06 LT +CP BF QS +NP +2.26146e+06 837878 MT +2.26096e+06 837382 LT +1.44746e+06 837382 LT +1.44696e+06 837878 LT +1.44696e+06 838578 LT +1.44746e+06 839074 LT +2.26096e+06 839074 LT +2.26146e+06 838578 LT +CP BF QS +NP +2.26146e+06 787076 MT +2.26096e+06 786580 LT +2.26026e+06 786580 LT +2.25976e+06 787076 LT +2.25976e+06 838578 LT +2.26026e+06 839074 LT +2.26096e+06 839074 LT +2.26146e+06 838578 LT +CP BF QS +NP +2.23606e+06 863279 MT +2.23556e+06 862783 LT +1.44746e+06 862783 LT +1.44696e+06 863279 LT +1.44696e+06 863979 LT +1.44746e+06 864475 LT +2.23556e+06 864475 LT +2.23606e+06 863979 LT +CP BF QS +NP +2.23606e+06 787076 MT +2.23556e+06 786580 LT +2.23486e+06 786580 LT +2.23436e+06 787076 LT +2.23436e+06 863979 LT +2.23486e+06 864475 LT +2.23556e+06 864475 LT +2.23606e+06 863979 LT +CP BF QS +NP +483448 685473 MT +482952 684977 LT +228251 684977 LT +227755 685473 LT +227755 686173 LT +228251 686669 LT +482952 686669 LT +483448 686173 LT +CP BF QS +NP +610449 685473 MT +609953 684977 LT +482252 684977 LT +481756 685473 LT +481756 686173 LT +482252 686669 LT +609953 686669 LT +610449 686173 LT +CP BF QS +NP +1.52485e+06 685473 MT +1.52436e+06 684977 LT +609253 684977 LT +608757 685473 LT +608757 686173 LT +609253 686669 LT +1.52436e+06 686669 LT +1.52485e+06 686173 LT +CP BF QS +NP +610449 533068 MT +609953 532572 LT +609253 532572 LT +608757 533068 LT +608757 686173 LT +609253 686669 LT +609953 686669 LT +610449 686173 LT +CP BF QS +604520 680720 10161 10161 E +NP +483448 685473 MT +482952 684977 LT +482252 684977 LT +481756 685473 LT +481756 863979 LT +482252 864475 LT +482952 864475 LT +483448 863979 LT +CP BF QS +NP +483448 583870 MT +482952 583374 LT +482252 583374 LT +481756 583870 LT +481756 686173 LT +482252 686669 LT +482952 686669 LT +483448 686173 LT +CP BF QS +477520 680720 10161 10161 E +NP +1.62645e+06 660072 MT +1.62596e+06 659576 LT +1.62526e+06 659576 LT +1.62476e+06 660072 LT +1.62476e+06 686173 LT +1.62526e+06 686669 LT +1.62596e+06 686669 LT +1.62645e+06 686173 LT +CP BF QS +NP +1.62645e+06 660072 MT +1.62596e+06 659576 LT +736253 659576 LT +735757 660072 LT +735757 660772 LT +736253 661268 LT +1.62596e+06 661268 LT +1.62645e+06 660772 LT +CP BF QS +NP +737449 660072 MT +736953 659576 LT +228251 659576 LT +227755 660072 LT +227755 660772 LT +228251 661268 LT +736953 661268 LT +737449 660772 LT +CP BF QS +NP +737449 533068 MT +736953 532572 LT +736253 532572 LT +735757 533068 LT +735757 660772 LT +736253 661268 LT +736953 661268 LT +737449 660772 LT +CP BF QS +731520 655320 10161 10161 E +NP +356448 710874 MT +355952 710378 LT +228251 710378 LT +227755 710874 LT +227755 711574 LT +228251 712070 LT +355952 712070 LT +356448 711574 LT +CP BF QS +NP +356448 710874 MT +355952 710378 LT +355252 710378 LT +354756 710874 LT +354756 1.06719e+06 LT +355252 1.06768e+06 LT +355952 1.06768e+06 LT +356448 1.06719e+06 LT +CP BF QS +NP +356448 1.06649e+06 MT +355952 1.06599e+06 LT +355252 1.06599e+06 LT +354756 1.06649e+06 LT +354756 1.6006e+06 LT +355252 1.6011e+06 LT +355952 1.6011e+06 LT +356448 1.6006e+06 LT +CP BF QS +NP +2.41386e+06 1.5999e+06 MT +2.41336e+06 1.59941e+06 LT +1.80306e+06 1.59941e+06 LT +1.80256e+06 1.5999e+06 LT +1.80256e+06 1.6006e+06 LT +1.80306e+06 1.6011e+06 LT +2.41336e+06 1.6011e+06 LT +2.41386e+06 1.6006e+06 LT +CP BF QS +NP +1.80425e+06 1.5999e+06 MT +1.80376e+06 1.59941e+06 LT +355252 1.59941e+06 LT +354756 1.5999e+06 LT +354756 1.6006e+06 LT +355252 1.6011e+06 LT +1.80376e+06 1.6011e+06 LT +1.80425e+06 1.6006e+06 LT +CP BF QS +NP +2.41386e+06 583870 MT +2.41336e+06 583374 LT +2.41266e+06 583374 LT +2.41216e+06 583870 LT +2.41216e+06 1.6006e+06 LT +2.41266e+06 1.6011e+06 LT +2.41336e+06 1.6011e+06 LT +2.41386e+06 1.6006e+06 LT +CP BF QS +NP +2.33766e+06 583870 MT +2.33716e+06 583374 LT +2.33646e+06 583374 LT +2.33596e+06 583870 LT +2.33596e+06 635371 LT +2.33646e+06 635867 LT +2.33716e+06 635867 LT +2.33766e+06 635371 LT +CP BF QS +NP +2.41386e+06 583870 MT +2.41336e+06 583374 LT +2.33646e+06 583374 LT +2.33596e+06 583870 LT +2.33596e+06 584570 LT +2.33646e+06 585066 LT +2.41336e+06 585066 LT +2.41386e+06 584570 LT +CP BF QS +NP +966050 1.06649e+06 MT +965554 1.06599e+06 LT +736253 1.06599e+06 LT +735757 1.06649e+06 LT +735757 1.06719e+06 LT +736253 1.06768e+06 LT +965554 1.06768e+06 LT +966050 1.06719e+06 LT +CP BF QS +NP +737449 1.06649e+06 MT +736953 1.06599e+06 LT +609253 1.06599e+06 LT +608757 1.06649e+06 LT +608757 1.06719e+06 LT +609253 1.06768e+06 LT +736953 1.06768e+06 LT +737449 1.06719e+06 LT +CP BF QS +NP +610449 1.06649e+06 MT +609953 1.06599e+06 LT +482252 1.06599e+06 LT +481756 1.06649e+06 LT +481756 1.06719e+06 LT +482252 1.06768e+06 LT +609953 1.06768e+06 LT +610449 1.06719e+06 LT +CP BF QS +NP +483448 1.06649e+06 MT +482952 1.06599e+06 LT +355252 1.06599e+06 LT +354756 1.06649e+06 LT +354756 1.06719e+06 LT +355252 1.06768e+06 LT +482952 1.06768e+06 LT +483448 1.06719e+06 LT +CP BF QS +350520 1.06172e+06 10161 10161 E +NP +610449 964882 MT +609953 964386 LT +609253 964386 LT +608757 964882 LT +608757 1.06719e+06 LT +609253 1.06768e+06 LT +609953 1.06768e+06 LT +610449 1.06719e+06 LT +CP BF QS +NP +737449 964882 MT +736953 964386 LT +736253 964386 LT +735757 964882 LT +735757 1.06719e+06 LT +736253 1.06768e+06 LT +736953 1.06768e+06 LT +737449 1.06719e+06 LT +CP BF QS +604520 1.06172e+06 10161 10161 E +731520 1.06172e+06 10161 10161 E +NP +483448 964882 MT +482952 964386 LT +482252 964386 LT +481756 964882 LT +481756 1.06719e+06 LT +482252 1.06768e+06 LT +482952 1.06768e+06 LT +483448 1.06719e+06 LT +CP BF QS +477520 1.06172e+06 10161 10161 E +NP +1.95666e+06 1.3967e+06 MT +1.95616e+06 1.3962e+06 LT +1.80306e+06 1.3962e+06 LT +1.80256e+06 1.3967e+06 LT +1.80256e+06 1.3974e+06 LT +1.80306e+06 1.39789e+06 LT +1.95616e+06 1.39789e+06 LT +1.95666e+06 1.3974e+06 LT +CP BF QS +NP +1.80425e+06 1.3967e+06 MT +1.80376e+06 1.3962e+06 LT +1.80306e+06 1.3962e+06 LT +1.80256e+06 1.3967e+06 LT +1.80256e+06 1.6006e+06 LT +1.80306e+06 1.6011e+06 LT +1.80376e+06 1.6011e+06 LT +1.80425e+06 1.6006e+06 LT +CP BF QS +1.79832e+06 1.59512e+06 10161 10161 E +NP +1.52485e+06 787076 MT +1.52436e+06 786580 LT +1.52366e+06 786580 LT +1.52316e+06 787076 LT +1.52316e+06 1.19419e+06 LT +1.52366e+06 1.19469e+06 LT +1.52436e+06 1.19469e+06 LT +1.52485e+06 1.19419e+06 LT +CP BF QS +NP +1.52485e+06 1.19349e+06 MT +1.52436e+06 1.19299e+06 LT +1.44746e+06 1.19299e+06 LT +1.44696e+06 1.19349e+06 LT +1.44696e+06 1.19419e+06 LT +1.44746e+06 1.19469e+06 LT +1.52436e+06 1.19469e+06 LT +1.52485e+06 1.19419e+06 LT +CP BF QS +NP +1.95666e+06 1.4221e+06 MT +1.95616e+06 1.4216e+06 LT +1.44746e+06 1.4216e+06 LT +1.44696e+06 1.4221e+06 LT +1.44696e+06 1.4228e+06 LT +1.44746e+06 1.42329e+06 LT +1.95616e+06 1.42329e+06 LT +1.95666e+06 1.4228e+06 LT +CP BF QS +1 0 128 0 0 1 1 PE +1 128 0 0 BR +NP +115147 101253 MT +114651 100757 LT +113951 100757 LT +113455 101253 LT +113455 190856 LT +113951 191352 LT +114651 191352 LT +115147 190856 LT +CP BF QS +NP +216747 101253 MT +216251 100757 LT +113951 100757 LT +113455 101253 LT +113455 101953 LT +113951 102449 LT +216251 102449 LT +216747 101953 LT +CP BF QS +NP +216747 101253 MT +216251 100757 LT +215551 100757 LT +215055 101253 LT +215055 190856 LT +215551 191352 LT +216251 191352 LT +216747 190856 LT +CP BF QS +NP +216747 190156 MT +216251 189660 LT +215551 189660 LT +215303 189908 LT +202355 202857 LT +202355 203557 LT +202851 204053 LT +203551 204053 LT +203799 203805 LT +216747 190856 LT +CP BF QS +NP +204047 202857 MT +203551 202361 LT +126651 202361 LT +126155 202857 LT +126155 203557 LT +126651 204053 LT +203551 204053 LT +204047 203557 LT +CP BF QS +NP +114899 189908 MT +114651 189660 LT +113951 189660 LT +113455 190156 LT +113455 190856 LT +126403 203805 LT +126651 204053 LT +127351 204053 LT +127847 203557 LT +127847 202857 LT +CP BF QS +NP +127847 126654 MT +127351 126158 LT +126651 126158 LT +126155 126654 LT +126155 165456 LT +126651 165952 LT +127351 165952 LT +127847 165456 LT +CP BF QS +NP +138007 164756 MT +137511 164260 LT +126651 164260 LT +126155 164756 LT +126155 165456 LT +126651 165952 LT +137511 165952 LT +138007 165456 LT +CP BF QS +NP +171027 164756 MT +170531 164260 LT +159671 164260 LT +159175 164756 LT +159175 165456 LT +159671 165952 LT +170531 165952 LT +171027 165456 LT +CP BF QS +NP +204047 164756 MT +203551 164260 LT +192691 164260 LT +192195 164756 LT +192195 165456 LT +192691 165952 LT +203551 165952 LT +204047 165456 LT +CP BF QS +NP +204047 126654 MT +203551 126158 LT +202851 126158 LT +202355 126654 LT +202355 165456 LT +202851 165952 LT +203551 165952 LT +204047 165456 LT +CP BF QS +NP +204047 126654 MT +203551 126158 LT +192691 126158 LT +192195 126654 LT +192195 127354 LT +192691 127850 LT +203551 127850 LT +204047 127354 LT +CP BF QS +NP +171027 126654 MT +170531 126158 LT +159671 126158 LT +159175 126654 LT +159175 127354 LT +159671 127850 LT +170531 127850 LT +171027 127354 LT +CP BF QS +NP +138007 126654 MT +137511 126158 LT +126651 126158 LT +126155 126654 LT +126155 127354 LT +126651 127850 LT +137511 127850 LT +138007 127354 LT +CP BF QS +NP +162137 126128 MT +160897 124888 LT +136285 124888 LT +135045 126128 LT +135045 127880 LT +136285 129120 LT +160897 129120 LT +162137 127880 LT +CP BF QS +NP +195157 126128 MT +193917 124888 LT +169305 124888 LT +168065 126128 LT +168065 127880 LT +169305 129120 LT +193917 129120 LT +195157 127880 LT +CP BF QS +NP +162137 164230 MT +160897 162990 LT +136285 162990 LT +135045 164230 LT +135045 165982 LT +136285 167222 LT +160897 167222 LT +162137 165982 LT +CP BF QS +NP +195157 164230 MT +193917 162990 LT +169305 162990 LT +168065 164230 LT +168065 165982 LT +169305 167222 LT +193917 167222 LT +195157 165982 LT +CP BF QS +[1 0 0 1 723.999 4207.01]ST +F1 F +0 Y<0001>32 0 AT +[1 0 0 1 801.998 4207.01]ST +0 Y<0002>32 0 AT +[1 0 0 1 801.998 4297.01]ST +0 Y<0003>32 0 AT +[1 0 0 1 723.999 4297.01]ST +0 Y<0004>32 0 AT +[1 0 0 1 987.997 4189.01]ST +0 Y<0001>32 0 AT +[1 0 0 1 987.997 4249.01]ST +0 Y<0002>32 0 AT +[1 0 0 1 987.997 4309.01]ST +0 Y<0003>32 0 AT +[1 0 0 1 987.997 4369.01]ST +0 Y<0004>32 0 AT +[1 0 0 1 1078 4189.01]ST +0 Y<000500060006>125 0 AT +[1 0 0 1 1078 4249.01]ST +0 Y<00070008>63 0 AT +[1 0 0 1 1078 4309.01]ST +0 Y<00070009>77 0 AT +[1 0 0 1 1078 4369.01]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 1258 4189.01]ST +0 Y<0009000C0005>105 0 AT +[1 0 0 1 1258 4249.01]ST +0 Y<0007000D000E000D000F0008>159 0 AT +[1 0 0 1 1258 4309.01]ST +0 Y<0007000D000E000D000F0009>173 0 AT +[1 0 0 1 1258 4369.01]ST +0 Y<000A00100011001200130014>192 0 AT +[1 0 0 1 5127.98 2929.06]ST +F2 F +0 Y<0001>35 0 AT +[1 0 0 1 5127.98 2989.05]ST +0 Y<0002>35 0 AT +[1 0 0 1 5127.98 3049.05]ST +0 Y<0003>35 0 AT +[1 0 0 1 5127.98 3109.05]ST +0 Y<0004>35 0 AT +[1 0 0 1 5127.98 3169.05]ST +0 Y<000C>35 0 AT +[1 0 0 1 5127.98 3229.05]ST +0 Y<0015>35 0 AT +[1 0 0 1 5127.98 3289.04]ST +0 Y<0016>35 0 AT +[1 0 0 1 5127.98 3349.04]ST +0 Y<0017>35 0 AT +[1 0 0 1 5127.98 3409.04]ST +0 Y<0018>35 0 AT +[1 0 0 1 5127.98 3469.04]ST +0 Y<00010019>70 0 AT +[1 0 0 1 5247.98 2929.06]ST +0 Y<001A001B001C001D>159 0 AT +[1 0 0 1 5247.98 2989.05]ST +0 Y<000500060006>134 0 AT +[1 0 0 1 5247.98 3049.05]ST +0 Y<0013001E000F001F001E>117 0 AT +[1 0 0 1 5247.98 3109.05]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3229.05]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3349.04]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3469.04]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3169.05]ST +0 Y<0020002100220021000E>164 0 AT +[1 0 0 1 5247.98 3289.04]ST +0 Y<001C00060023>130 0 AT +[1 0 0 1 5247.98 3409.04]ST +0 Y<001A001D001C001B>159 0 AT +[1 0 0 1 5127.98 2839.06]ST +F3 F +0 Y<001D001C0024>135 0 AT +[1 0 0 1 657.999 4069.02]ST +0 Y<0025001C0026000F000E002700280021000F00260029000F002A001000110013000E000F002B002C0021002D>830 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +1.64042e+06 76400 MT +1.6398e+06 75780 LT +1.63893e+06 75780 LT +1.63831e+06 76400 LT +1.63831e+06 92939 LT +1.63893e+06 93559 LT +1.6398e+06 93559 LT +1.64042e+06 92939 LT +CP BF QS +NP +1.64011e+06 91753 MT +1.6398e+06 91443 LT +1.63893e+06 91443 LT +1.63831e+06 92063 LT +1.63831e+06 92939 LT +1.64666e+06 101293 LT +1.64697e+06 101603 LT +1.64785e+06 101603 LT +1.64847e+06 100983 LT +1.64847e+06 100107 LT +CP BF QS +NP +1.65609e+06 92063 MT +1.65547e+06 91443 LT +1.65459e+06 91443 LT +1.65427e+06 91763 LT +1.64635e+06 100124 LT +1.64635e+06 100983 LT +1.64697e+06 101603 LT +1.64785e+06 101603 LT +1.64817e+06 101283 LT +1.65609e+06 92922 LT +CP BF QS +NP +1.65609e+06 76400 MT +1.65547e+06 75780 LT +1.65459e+06 75780 LT +1.65397e+06 76400 LT +1.65397e+06 92939 LT +1.65459e+06 93559 LT +1.65547e+06 93559 LT +1.65609e+06 92939 LT +CP BF QS +NP +1.65609e+06 88253 MT +1.65547e+06 87633 LT +1.63893e+06 87633 LT +1.63831e+06 88253 LT +1.63831e+06 89129 LT +1.63893e+06 89749 LT +1.65547e+06 89749 LT +1.65609e+06 89129 LT +CP BF QS +NP +1.66413e+06 80633 MT +1.66351e+06 80013 LT +1.66263e+06 80013 LT +1.66201e+06 80633 LT +1.66201e+06 92939 LT +1.66263e+06 93559 LT +1.66351e+06 93559 LT +1.66413e+06 92939 LT +CP BF QS +NP +1.66794e+06 76400 MT +1.66732e+06 75780 LT +1.66644e+06 75780 LT +1.66612e+06 76109 LT +1.66201e+06 80665 LT +1.66201e+06 81509 LT +1.66263e+06 82129 LT +1.66351e+06 82129 LT +1.66384e+06 81800 LT +1.66794e+06 77244 LT +CP BF QS +NP +1.67937e+06 76400 MT +1.67875e+06 75780 LT +1.66644e+06 75780 LT +1.66582e+06 76400 LT +1.66582e+06 77276 LT +1.66644e+06 77896 LT +1.67875e+06 77896 LT +1.67937e+06 77276 LT +CP BF QS +NP +1.67937e+06 76400 MT +1.67875e+06 75780 LT +1.67787e+06 75780 LT +1.67725e+06 76400 LT +1.67725e+06 92939 LT +1.67787e+06 93559 LT +1.67875e+06 93559 LT +1.67937e+06 92939 LT +CP BF QS +NP +1.69122e+06 80633 MT +1.6906e+06 80013 LT +1.68973e+06 80013 LT +1.68911e+06 80633 LT +1.68911e+06 96750 LT +1.68973e+06 97370 LT +1.6906e+06 97370 LT +1.69122e+06 96750 LT +CP BF QS +NP +1.69503e+06 76400 MT +1.69441e+06 75780 LT +1.69354e+06 75780 LT +1.69321e+06 76109 LT +1.68911e+06 80665 LT +1.68911e+06 81509 LT +1.68973e+06 82129 LT +1.6906e+06 82129 LT +1.69093e+06 81800 LT +1.69503e+06 77244 LT +CP BF QS +NP +1.69503e+06 92063 MT +1.69441e+06 91443 LT +1.68592e+06 91443 LT +1.6853e+06 92063 LT +1.6853e+06 92939 LT +1.68592e+06 93559 LT +1.69441e+06 93559 LT +1.69503e+06 92939 LT +CP BF QS +NP +1.70308e+06 76400 MT +1.70246e+06 75780 LT +1.70158e+06 75780 LT +1.70096e+06 76400 LT +1.70096e+06 100983 LT +1.70158e+06 101603 LT +1.70246e+06 101603 LT +1.70308e+06 100983 LT +CP BF QS +NP +1.70689e+06 92063 MT +1.70246e+06 87633 LT +1.70158e+06 87633 LT +1.70096e+06 88253 LT +1.70096e+06 89129 LT +1.70539e+06 93559 LT +1.70627e+06 93559 LT +1.70689e+06 92939 LT +CP BF QS +NP +1.71451e+06 92063 MT +1.71389e+06 91443 LT +1.70539e+06 91443 LT +1.70477e+06 92063 LT +1.70477e+06 92939 LT +1.70539e+06 93559 LT +1.71389e+06 93559 LT +1.71451e+06 92939 LT +CP BF QS +NP +1.71874e+06 88253 MT +1.71812e+06 87633 LT +1.71728e+06 87633 LT +1.71272e+06 91734 LT +1.71239e+06 92063 LT +1.71239e+06 92939 LT +1.71301e+06 93559 LT +1.71385e+06 93559 LT +1.71841e+06 89458 LT +1.71874e+06 89129 LT +CP BF QS +NP +1.71874e+06 76400 MT +1.71812e+06 75780 LT +1.71724e+06 75780 LT +1.71662e+06 76400 LT +1.71662e+06 89129 LT +1.71724e+06 89749 LT +1.71812e+06 89749 LT +1.71874e+06 89129 LT +CP BF QS +NP +1.73821e+06 76400 MT +1.73759e+06 75780 LT +1.72868e+06 75780 LT +1.72806e+06 76400 LT +1.72806e+06 77276 LT +1.72868e+06 77896 LT +1.73759e+06 77896 LT +1.73821e+06 77276 LT +CP BF QS +NP +1.73792e+06 76109 MT +1.73759e+06 75780 LT +1.73672e+06 75780 LT +1.7361e+06 76400 LT +1.7361e+06 77244 LT +1.7402e+06 81800 LT +1.74053e+06 82129 LT +1.7414e+06 82129 LT +1.74202e+06 81509 LT +1.74202e+06 80665 LT +CP BF QS +NP +1.74202e+06 80633 MT +1.7414e+06 80013 LT +1.74053e+06 80013 LT +1.73991e+06 80633 LT +1.73991e+06 89129 LT +1.74053e+06 89749 LT +1.7414e+06 89749 LT +1.74202e+06 89129 LT +CP BF QS +NP +1.74202e+06 88253 MT +1.7414e+06 87633 LT +1.74053e+06 87633 LT +1.7361e+06 92063 LT +1.7361e+06 92939 LT +1.73672e+06 93559 LT +1.73759e+06 93559 LT +1.74202e+06 89129 LT +CP BF QS +NP +1.73821e+06 92063 MT +1.73759e+06 91443 LT +1.72868e+06 91443 LT +1.72806e+06 92063 LT +1.72806e+06 92939 LT +1.72868e+06 93559 LT +1.73759e+06 93559 LT +1.73821e+06 92939 LT +CP BF QS +NP +1.73017e+06 92063 MT +1.72574e+06 87633 LT +1.72486e+06 87633 LT +1.72424e+06 88253 LT +1.72424e+06 89129 LT +1.72868e+06 93559 LT +1.72955e+06 93559 LT +1.73017e+06 92939 LT +CP BF QS +NP +1.72636e+06 80633 MT +1.72574e+06 80013 LT +1.72486e+06 80013 LT +1.72424e+06 80633 LT +1.72424e+06 89129 LT +1.72486e+06 89749 LT +1.72574e+06 89749 LT +1.72636e+06 89129 LT +CP BF QS +NP +1.73017e+06 76400 MT +1.72955e+06 75780 LT +1.72868e+06 75780 LT +1.72835e+06 76109 LT +1.72424e+06 80665 LT +1.72424e+06 81509 LT +1.72486e+06 82129 LT +1.72574e+06 82129 LT +1.72607e+06 81800 LT +1.73017e+06 77244 LT +CP BF QS +NP +1.74964e+06 76400 MT +1.74902e+06 75780 LT +1.74815e+06 75780 LT +1.74753e+06 76400 LT +1.74753e+06 92939 LT +1.74815e+06 93559 LT +1.74902e+06 93559 LT +1.74964e+06 92939 LT +CP BF QS +NP +1.75769e+06 92063 MT +1.75737e+06 91743 LT +1.74901e+06 83823 LT +1.74815e+06 83823 LT +1.74753e+06 84443 LT +1.74753e+06 85319 LT +1.74785e+06 85639 LT +1.75621e+06 93559 LT +1.75707e+06 93559 LT +1.75769e+06 92939 LT +CP BF QS +NP +1.7615e+06 92063 MT +1.76088e+06 91443 LT +1.75619e+06 91443 LT +1.75557e+06 92063 LT +1.75557e+06 92939 LT +1.75619e+06 93559 LT +1.76088e+06 93559 LT +1.7615e+06 92939 LT +CP BF QS +NP +1.77293e+06 92063 MT +1.77231e+06 91443 LT +1.76762e+06 91443 LT +1.767e+06 92063 LT +1.767e+06 92939 LT +1.76762e+06 93559 LT +1.77231e+06 93559 LT +1.77293e+06 92939 LT +CP BF QS +NP +1.77293e+06 88253 MT +1.77231e+06 87633 LT +1.77143e+06 87633 LT +1.77081e+06 88253 LT +1.77081e+06 92939 LT +1.77143e+06 93559 LT +1.77231e+06 93559 LT +1.77293e+06 92939 LT +CP BF QS +NP +1.77293e+06 88253 MT +1.77231e+06 87633 LT +1.76762e+06 87633 LT +1.767e+06 88253 LT +1.767e+06 89129 LT +1.76762e+06 89749 LT +1.77231e+06 89749 LT +1.77293e+06 89129 LT +CP BF QS +NP +1.76912e+06 88253 MT +1.7685e+06 87633 LT +1.76762e+06 87633 LT +1.767e+06 88253 LT +1.767e+06 92939 LT +1.76762e+06 93559 LT +1.7685e+06 93559 LT +1.76912e+06 92939 LT +CP BF QS +NP +1.77293e+06 80633 MT +1.77231e+06 80013 LT +1.76762e+06 80013 LT +1.767e+06 80633 LT +1.767e+06 81509 LT +1.76762e+06 82129 LT +1.77231e+06 82129 LT +1.77293e+06 81509 LT +CP BF QS +NP +1.77293e+06 76400 MT +1.77231e+06 75780 LT +1.77143e+06 75780 LT +1.77081e+06 76400 LT +1.77081e+06 81509 LT +1.77143e+06 82129 LT +1.77231e+06 82129 LT +1.77293e+06 81509 LT +CP BF QS +NP +1.77293e+06 76400 MT +1.77231e+06 75780 LT +1.76762e+06 75780 LT +1.767e+06 76400 LT +1.767e+06 77276 LT +1.76762e+06 77896 LT +1.77231e+06 77896 LT +1.77293e+06 77276 LT +CP BF QS +NP +1.76912e+06 76400 MT +1.7685e+06 75780 LT +1.76762e+06 75780 LT +1.767e+06 76400 LT +1.767e+06 81509 LT +1.76762e+06 82129 LT +1.7685e+06 82129 LT +1.76912e+06 81509 LT +CP BF QS +NP +1.80425e+06 76400 MT +1.80363e+06 75780 LT +1.80276e+06 75780 LT +1.80214e+06 76400 LT +1.80214e+06 100983 LT +1.80276e+06 101603 LT +1.80363e+06 101603 LT +1.80425e+06 100983 LT +CP BF QS +NP +1.81611e+06 100107 MT +1.81549e+06 99487 LT +1.80276e+06 99487 LT +1.80214e+06 100107 LT +1.80214e+06 100983 LT +1.80276e+06 101603 LT +1.81549e+06 101603 LT +1.81611e+06 100983 LT +CP BF QS +NP +1.81992e+06 95874 MT +1.8193e+06 95254 LT +1.81842e+06 95254 LT +1.81809e+06 95583 LT +1.81399e+06 100139 LT +1.81399e+06 100983 LT +1.81461e+06 101603 LT +1.81549e+06 101603 LT +1.81582e+06 101274 LT +1.81992e+06 96718 LT +CP BF QS +NP +1.81992e+06 88253 MT +1.8193e+06 87633 LT +1.81842e+06 87633 LT +1.8178e+06 88253 LT +1.8178e+06 96750 LT +1.81842e+06 97370 LT +1.8193e+06 97370 LT +1.81992e+06 96750 LT +CP BF QS +NP +1.81992e+06 88253 MT +1.81549e+06 83823 LT +1.81461e+06 83823 LT +1.81399e+06 84443 LT +1.81399e+06 85319 LT +1.81842e+06 89749 LT +1.8193e+06 89749 LT +1.81992e+06 89129 LT +CP BF QS +NP +1.81611e+06 84443 MT +1.81549e+06 83823 LT +1.80276e+06 83823 LT +1.80214e+06 84443 LT +1.80214e+06 85319 LT +1.80276e+06 85939 LT +1.81549e+06 85939 LT +1.81611e+06 85319 LT +CP BF QS +NP +1.81992e+06 76400 MT +1.8193e+06 75780 LT +1.81842e+06 75780 LT +1.8181e+06 76100 LT +1.81018e+06 84460 LT +1.81018e+06 85319 LT +1.8108e+06 85939 LT +1.81168e+06 85939 LT +1.812e+06 85619 LT +1.81992e+06 77259 LT +CP BF QS +NP +1.83939e+06 76400 MT +1.83877e+06 75780 LT +1.83028e+06 75780 LT +1.82966e+06 76400 LT +1.82966e+06 77276 LT +1.83028e+06 77896 LT +1.83877e+06 77896 LT +1.83939e+06 77276 LT +CP BF QS +NP +1.8391e+06 76109 MT +1.83877e+06 75780 LT +1.8379e+06 75780 LT +1.83728e+06 76400 LT +1.83728e+06 77244 LT +1.84138e+06 81800 LT +1.8417e+06 82129 LT +1.84258e+06 82129 LT +1.8432e+06 81509 LT +1.8432e+06 80665 LT +CP BF QS +NP +1.8432e+06 80633 MT +1.84258e+06 80013 LT +1.8417e+06 80013 LT +1.84108e+06 80633 LT +1.84108e+06 89129 LT +1.8417e+06 89749 LT +1.84258e+06 89749 LT +1.8432e+06 89129 LT +CP BF QS +NP +1.8432e+06 88253 MT +1.84258e+06 87633 LT +1.8417e+06 87633 LT +1.83728e+06 92063 LT +1.83728e+06 92939 LT +1.8379e+06 93559 LT +1.83877e+06 93559 LT +1.8432e+06 89129 LT +CP BF QS +NP +1.83939e+06 92063 MT +1.83877e+06 91443 LT +1.83028e+06 91443 LT +1.82966e+06 92063 LT +1.82966e+06 92939 LT +1.83028e+06 93559 LT +1.83877e+06 93559 LT +1.83939e+06 92939 LT +CP BF QS +NP +1.83177e+06 92063 MT +1.83144e+06 91734 LT +1.82689e+06 87633 LT +1.82604e+06 87633 LT +1.82542e+06 88253 LT +1.82542e+06 89129 LT +1.82575e+06 89458 LT +1.83031e+06 93559 LT +1.83115e+06 93559 LT +1.83177e+06 92939 LT +CP BF QS +NP +1.82754e+06 80633 MT +1.82692e+06 80013 LT +1.82604e+06 80013 LT +1.82542e+06 80633 LT +1.82542e+06 89129 LT +1.82604e+06 89749 LT +1.82692e+06 89749 LT +1.82754e+06 89129 LT +CP BF QS +NP +1.83177e+06 76400 MT +1.83115e+06 75780 LT +1.83028e+06 75780 LT +1.82542e+06 80633 LT +1.82542e+06 81509 LT +1.82604e+06 82129 LT +1.82692e+06 82129 LT +1.83177e+06 77276 LT +CP BF QS +NP +1.85124e+06 76400 MT +1.85062e+06 75780 LT +1.84975e+06 75780 LT +1.84913e+06 76400 LT +1.84913e+06 92939 LT +1.84975e+06 93559 LT +1.85062e+06 93559 LT +1.85124e+06 92939 LT +CP BF QS +NP +1.86267e+06 92063 MT +1.86205e+06 91443 LT +1.84975e+06 91443 LT +1.84913e+06 92063 LT +1.84913e+06 92939 LT +1.84975e+06 93559 LT +1.86205e+06 93559 LT +1.86267e+06 92939 LT +CP BF QS +NP +1.86648e+06 88253 MT +1.86586e+06 87633 LT +1.86499e+06 87633 LT +1.86056e+06 92063 LT +1.86056e+06 92939 LT +1.86118e+06 93559 LT +1.86205e+06 93559 LT +1.86648e+06 89129 LT +CP BF QS +NP +1.86648e+06 76400 MT +1.86586e+06 75780 LT +1.86499e+06 75780 LT +1.86437e+06 76400 LT +1.86437e+06 89129 LT +1.86499e+06 89749 LT +1.86586e+06 89749 LT +1.86648e+06 89129 LT +CP BF QS +NP +1.88596e+06 92063 MT +1.88534e+06 91443 LT +1.87684e+06 91443 LT +1.87622e+06 92063 LT +1.87622e+06 92939 LT +1.87684e+06 93559 LT +1.88534e+06 93559 LT +1.88596e+06 92939 LT +CP BF QS +NP +1.89019e+06 88253 MT +1.88957e+06 87633 LT +1.88873e+06 87633 LT +1.88417e+06 91734 LT +1.88384e+06 92063 LT +1.88384e+06 92939 LT +1.88446e+06 93559 LT +1.88531e+06 93559 LT +1.88986e+06 89458 LT +1.89019e+06 89129 LT +CP BF QS +NP +1.89019e+06 76400 MT +1.88957e+06 75780 LT +1.8887e+06 75780 LT +1.88808e+06 76400 LT +1.88808e+06 89129 LT +1.8887e+06 89749 LT +1.88957e+06 89749 LT +1.89019e+06 89129 LT +CP BF QS +NP +1.89019e+06 76400 MT +1.88957e+06 75780 LT +1.87684e+06 75780 LT +1.87622e+06 76400 LT +1.87622e+06 77276 LT +1.87684e+06 77896 LT +1.88957e+06 77896 LT +1.89019e+06 77276 LT +CP BF QS +NP +1.87834e+06 76400 MT +1.87772e+06 75780 LT +1.87684e+06 75780 LT +1.87651e+06 76109 LT +1.87241e+06 80665 LT +1.87241e+06 81509 LT +1.87303e+06 82129 LT +1.87391e+06 82129 LT +1.87424e+06 81800 LT +1.87834e+06 77244 LT +CP BF QS +NP +1.87834e+06 84443 MT +1.87391e+06 80013 LT +1.87303e+06 80013 LT +1.87241e+06 80633 LT +1.87241e+06 81509 LT +1.87684e+06 85939 LT +1.87772e+06 85939 LT +1.87834e+06 85319 LT +CP BF QS +NP +1.89019e+06 84443 MT +1.88957e+06 83823 LT +1.87684e+06 83823 LT +1.87622e+06 84443 LT +1.87622e+06 85319 LT +1.87684e+06 85939 LT +1.88957e+06 85939 LT +1.89019e+06 85319 LT +CP BF QS +NP +1.90162e+06 100107 MT +1.901e+06 99487 LT +1.89632e+06 99487 LT +1.8957e+06 100107 LT +1.8957e+06 100983 LT +1.89632e+06 101603 LT +1.901e+06 101603 LT +1.90162e+06 100983 LT +CP BF QS +NP +1.90162e+06 76400 MT +1.901e+06 75780 LT +1.90012e+06 75780 LT +1.8995e+06 76400 LT +1.8995e+06 100983 LT +1.90012e+06 101603 LT +1.901e+06 101603 LT +1.90162e+06 100983 LT +CP BF QS +NP +1.90543e+06 76400 MT +1.90481e+06 75780 LT +1.89632e+06 75780 LT +1.8957e+06 76400 LT +1.8957e+06 77276 LT +1.89632e+06 77896 LT +1.90481e+06 77896 LT +1.90543e+06 77276 LT +CP BF QS +NP +1.92914e+06 76400 MT +1.92852e+06 75780 LT +1.92764e+06 75780 LT +1.92702e+06 76400 LT +1.92702e+06 100983 LT +1.92764e+06 101603 LT +1.92852e+06 101603 LT +1.92914e+06 100983 LT +CP BF QS +NP +1.92914e+06 76400 MT +1.92852e+06 75780 LT +1.91579e+06 75780 LT +1.91517e+06 76400 LT +1.91517e+06 77276 LT +1.91579e+06 77896 LT +1.92852e+06 77896 LT +1.92914e+06 77276 LT +CP BF QS +NP +1.91728e+06 76400 MT +1.91666e+06 75780 LT +1.91579e+06 75780 LT +1.91546e+06 76109 LT +1.91136e+06 80665 LT +1.91136e+06 81509 LT +1.91198e+06 82129 LT +1.91286e+06 82129 LT +1.91318e+06 81800 LT +1.91728e+06 77244 LT +CP BF QS +NP +1.91348e+06 80633 MT +1.91286e+06 80013 LT +1.91198e+06 80013 LT +1.91136e+06 80633 LT +1.91136e+06 89129 LT +1.91198e+06 89749 LT +1.91286e+06 89749 LT +1.91348e+06 89129 LT +CP BF QS +NP +1.91728e+06 92063 MT +1.91286e+06 87633 LT +1.91198e+06 87633 LT +1.91136e+06 88253 LT +1.91136e+06 89129 LT +1.91579e+06 93559 LT +1.91666e+06 93559 LT +1.91728e+06 92939 LT +CP BF QS +NP +1.92914e+06 92063 MT +1.92852e+06 91443 LT +1.91579e+06 91443 LT +1.91517e+06 92063 LT +1.91517e+06 92939 LT +1.91579e+06 93559 LT +1.92852e+06 93559 LT +1.92914e+06 92939 LT +CP BF QS +NP +1.9757e+06 95874 MT +1.97508e+06 95254 LT +1.97421e+06 95254 LT +1.97388e+06 95583 LT +1.96978e+06 100139 LT +1.96978e+06 100983 LT +1.9704e+06 101603 LT +1.97128e+06 101603 LT +1.9716e+06 101274 LT +1.9757e+06 96718 LT +CP BF QS +NP +1.9719e+06 100107 MT +1.97128e+06 99487 LT +1.96278e+06 99487 LT +1.96216e+06 100107 LT +1.96216e+06 100983 LT +1.96278e+06 101603 LT +1.97128e+06 101603 LT +1.9719e+06 100983 LT +CP BF QS +NP +1.96428e+06 100107 MT +1.95942e+06 95254 LT +1.95855e+06 95254 LT +1.95793e+06 95874 LT +1.95793e+06 96750 LT +1.96278e+06 101603 LT +1.96366e+06 101603 LT +1.96428e+06 100983 LT +CP BF QS +NP +1.96004e+06 92063 MT +1.95942e+06 91443 LT +1.95855e+06 91443 LT +1.95793e+06 92063 LT +1.95793e+06 96750 LT +1.95855e+06 97370 LT +1.95942e+06 97370 LT +1.96004e+06 96750 LT +CP BF QS +NP +1.96428e+06 88253 MT +1.96366e+06 87633 LT +1.96281e+06 87633 LT +1.95826e+06 91734 LT +1.95793e+06 92063 LT +1.95793e+06 92939 LT +1.95855e+06 93559 LT +1.95939e+06 93559 LT +1.96395e+06 89458 LT +1.96428e+06 89129 LT +CP BF QS +NP +1.9719e+06 88253 MT +1.97128e+06 87633 LT +1.96278e+06 87633 LT +1.96216e+06 88253 LT +1.96216e+06 89129 LT +1.96278e+06 89749 LT +1.97128e+06 89749 LT +1.9719e+06 89129 LT +CP BF QS +NP +1.9757e+06 84443 MT +1.97508e+06 83823 LT +1.97421e+06 83823 LT +1.96978e+06 88253 LT +1.96978e+06 89129 LT +1.9704e+06 89749 LT +1.97128e+06 89749 LT +1.9757e+06 85319 LT +CP BF QS +NP +1.9757e+06 80633 MT +1.97508e+06 80013 LT +1.97421e+06 80013 LT +1.97359e+06 80633 LT +1.97359e+06 85319 LT +1.97421e+06 85939 LT +1.97508e+06 85939 LT +1.9757e+06 85319 LT +CP BF QS +NP +1.9716e+06 76109 MT +1.97128e+06 75780 LT +1.9704e+06 75780 LT +1.96978e+06 76400 LT +1.96978e+06 77244 LT +1.97388e+06 81800 LT +1.97421e+06 82129 LT +1.97508e+06 82129 LT +1.9757e+06 81509 LT +1.9757e+06 80665 LT +CP BF QS +NP +1.9719e+06 76400 MT +1.97128e+06 75780 LT +1.96278e+06 75780 LT +1.96216e+06 76400 LT +1.96216e+06 77276 LT +1.96278e+06 77896 LT +1.97128e+06 77896 LT +1.9719e+06 77276 LT +CP BF QS +NP +1.96428e+06 76400 MT +1.96366e+06 75780 LT +1.96278e+06 75780 LT +1.95793e+06 80633 LT +1.95793e+06 81509 LT +1.95855e+06 82129 LT +1.95942e+06 82129 LT +1.96428e+06 77276 LT +CP BF QS +NP +1.99899e+06 92063 MT +1.99837e+06 91443 LT +1.98606e+06 91443 LT +1.98544e+06 92063 LT +1.98544e+06 92939 LT +1.98606e+06 93559 LT +1.99837e+06 93559 LT +1.99899e+06 92939 LT +CP BF QS +NP +1.98756e+06 92063 MT +1.98313e+06 87633 LT +1.98225e+06 87633 LT +1.98163e+06 88253 LT +1.98163e+06 89129 LT +1.98606e+06 93559 LT +1.98694e+06 93559 LT +1.98756e+06 92939 LT +CP BF QS +NP +1.98375e+06 80633 MT +1.98313e+06 80013 LT +1.98225e+06 80013 LT +1.98163e+06 80633 LT +1.98163e+06 89129 LT +1.98225e+06 89749 LT +1.98313e+06 89749 LT +1.98375e+06 89129 LT +CP BF QS +NP +1.98756e+06 76400 MT +1.98694e+06 75780 LT +1.98606e+06 75780 LT +1.98573e+06 76109 LT +1.98163e+06 80665 LT +1.98163e+06 81509 LT +1.98225e+06 82129 LT +1.98313e+06 82129 LT +1.98346e+06 81800 LT +1.98756e+06 77244 LT +CP BF QS +NP +1.99899e+06 76400 MT +1.99837e+06 75780 LT +1.98606e+06 75780 LT +1.98544e+06 76400 LT +1.98544e+06 77276 LT +1.98606e+06 77896 LT +1.99837e+06 77896 LT +1.99899e+06 77276 LT +CP BF QS +NP +2.00703e+06 76400 MT +2.00641e+06 75780 LT +2.00554e+06 75780 LT +2.00492e+06 76400 LT +2.00492e+06 100983 LT +2.00554e+06 101603 LT +2.00641e+06 101603 LT +2.00703e+06 100983 LT +CP BF QS +NP +2.01084e+06 92063 MT +2.00641e+06 87633 LT +2.00554e+06 87633 LT +2.00492e+06 88253 LT +2.00492e+06 89129 LT +2.00935e+06 93559 LT +2.01022e+06 93559 LT +2.01084e+06 92939 LT +CP BF QS +NP +2.01888e+06 92063 MT +2.01826e+06 91443 LT +2.00935e+06 91443 LT +2.00873e+06 92063 LT +2.00873e+06 92939 LT +2.00935e+06 93559 LT +2.01826e+06 93559 LT +2.01888e+06 92939 LT +CP BF QS +NP +2.0227e+06 88253 MT +2.02208e+06 87633 LT +2.0212e+06 87633 LT +2.01677e+06 92063 LT +2.01677e+06 92939 LT +2.01739e+06 93559 LT +2.01826e+06 93559 LT +2.0227e+06 89129 LT +CP BF QS +NP +2.0227e+06 76400 MT +2.02208e+06 75780 LT +2.0212e+06 75780 LT +2.02058e+06 76400 LT +2.02058e+06 89129 LT +2.0212e+06 89749 LT +2.02208e+06 89749 LT +2.0227e+06 89129 LT +CP BF QS +NP +2.04217e+06 92063 MT +2.04155e+06 91443 LT +2.03263e+06 91443 LT +2.03201e+06 92063 LT +2.03201e+06 92939 LT +2.03263e+06 93559 LT +2.04155e+06 93559 LT +2.04217e+06 92939 LT +CP BF QS +NP +2.04598e+06 88253 MT +2.04536e+06 87633 LT +2.04448e+06 87633 LT +2.04005e+06 92063 LT +2.04005e+06 92939 LT +2.04067e+06 93559 LT +2.04155e+06 93559 LT +2.04598e+06 89129 LT +CP BF QS +NP +2.04598e+06 76400 MT +2.04536e+06 75780 LT +2.04448e+06 75780 LT +2.04386e+06 76400 LT +2.04386e+06 89129 LT +2.04448e+06 89749 LT +2.04536e+06 89749 LT +2.04598e+06 89129 LT +CP BF QS +NP +2.04598e+06 76400 MT +2.04536e+06 75780 LT +2.03263e+06 75780 LT +2.03201e+06 76400 LT +2.03201e+06 77276 LT +2.03263e+06 77896 LT +2.04536e+06 77896 LT +2.04598e+06 77276 LT +CP BF QS +NP +2.03412e+06 76400 MT +2.0335e+06 75780 LT +2.03263e+06 75780 LT +2.0323e+06 76109 LT +2.0282e+06 80665 LT +2.0282e+06 81509 LT +2.02882e+06 82129 LT +2.0297e+06 82129 LT +2.03002e+06 81800 LT +2.03412e+06 77244 LT +CP BF QS +NP +2.03412e+06 84443 MT +2.0297e+06 80013 LT +2.02882e+06 80013 LT +2.0282e+06 80633 LT +2.0282e+06 81509 LT +2.03263e+06 85939 LT +2.0335e+06 85939 LT +2.03412e+06 85319 LT +CP BF QS +NP +2.04598e+06 84443 MT +2.04536e+06 83823 LT +2.03263e+06 83823 LT +2.03201e+06 84443 LT +2.03201e+06 85319 LT +2.03263e+06 85939 LT +2.04536e+06 85939 LT +2.04598e+06 85319 LT +CP BF QS +NP +2.05783e+06 80633 MT +2.05721e+06 80013 LT +2.05634e+06 80013 LT +2.05572e+06 80633 LT +2.05572e+06 96750 LT +2.05634e+06 97370 LT +2.05721e+06 97370 LT +2.05783e+06 96750 LT +CP BF QS +NP +2.06164e+06 76400 MT +2.06102e+06 75780 LT +2.06015e+06 75780 LT +2.05982e+06 76109 LT +2.05572e+06 80665 LT +2.05572e+06 81509 LT +2.05634e+06 82129 LT +2.05721e+06 82129 LT +2.05754e+06 81800 LT +2.06164e+06 77244 LT +CP BF QS +NP +2.06164e+06 92063 MT +2.06102e+06 91443 LT +2.0521e+06 91443 LT +2.05148e+06 92063 LT +2.05148e+06 92939 LT +2.0521e+06 93559 LT +2.06102e+06 93559 LT +2.06164e+06 92939 LT +CP BF QS +NP +2.08112e+06 76400 MT +2.0805e+06 75780 LT +2.07158e+06 75780 LT +2.07096e+06 76400 LT +2.07096e+06 77276 LT +2.07158e+06 77896 LT +2.0805e+06 77896 LT +2.08112e+06 77276 LT +CP BF QS +NP +2.07307e+06 76400 MT +2.07245e+06 75780 LT +2.07158e+06 75780 LT +2.07125e+06 76109 LT +2.06715e+06 80665 LT +2.06715e+06 81509 LT +2.06777e+06 82129 LT +2.06864e+06 82129 LT +2.06897e+06 81800 LT +2.07307e+06 77244 LT +CP BF QS +NP +2.06926e+06 80633 MT +2.06864e+06 80013 LT +2.06777e+06 80013 LT +2.06715e+06 80633 LT +2.06715e+06 89129 LT +2.06777e+06 89749 LT +2.06864e+06 89749 LT +2.06926e+06 89129 LT +CP BF QS +NP +2.07307e+06 92063 MT +2.06864e+06 87633 LT +2.06777e+06 87633 LT +2.06715e+06 88253 LT +2.06715e+06 89129 LT +2.07158e+06 93559 LT +2.07245e+06 93559 LT +2.07307e+06 92939 LT +CP BF QS +NP +2.08112e+06 92063 MT +2.0805e+06 91443 LT +2.07158e+06 91443 LT +2.07096e+06 92063 LT +2.07096e+06 92939 LT +2.07158e+06 93559 LT +2.0805e+06 93559 LT +2.08112e+06 92939 LT +CP BF QS +NP +2.08492e+06 88253 MT +2.0843e+06 87633 LT +2.08343e+06 87633 LT +2.079e+06 92063 LT +2.079e+06 92939 LT +2.07962e+06 93559 LT +2.0805e+06 93559 LT +2.08492e+06 89129 LT +CP BF QS +NP +2.08492e+06 84443 MT +2.0843e+06 83823 LT +2.08343e+06 83823 LT +2.08281e+06 84443 LT +2.08281e+06 89129 LT +2.08343e+06 89749 LT +2.0843e+06 89749 LT +2.08492e+06 89129 LT +CP BF QS +NP +2.08492e+06 84443 MT +2.0843e+06 83823 LT +2.06777e+06 83823 LT +2.06715e+06 84443 LT +2.06715e+06 85319 LT +2.06777e+06 85939 LT +2.0843e+06 85939 LT +2.08492e+06 85319 LT +CP BF QS +NP +2.09254e+06 76400 MT +2.09192e+06 75780 LT +2.09105e+06 75780 LT +2.09043e+06 76400 LT +2.09043e+06 92939 LT +2.09105e+06 93559 LT +2.09192e+06 93559 LT +2.09254e+06 92939 LT +CP BF QS +NP +2.1044e+06 92063 MT +2.10378e+06 91443 LT +2.09105e+06 91443 LT +2.09043e+06 92063 LT +2.09043e+06 92939 LT +2.09105e+06 93559 LT +2.10378e+06 93559 LT +2.1044e+06 92939 LT +CP BF QS +NP +2.10821e+06 88253 MT +2.10759e+06 87633 LT +2.10671e+06 87633 LT +2.10228e+06 92063 LT +2.10228e+06 92939 LT +2.1029e+06 93559 LT +2.10378e+06 93559 LT +2.10821e+06 89129 LT +CP BF QS +NP +2.10821e+06 76400 MT +2.10759e+06 75780 LT +2.10671e+06 75780 LT +2.10609e+06 76400 LT +2.10609e+06 89129 LT +2.10671e+06 89749 LT +2.10759e+06 89749 LT +2.10821e+06 89129 LT +CP BF QS +[1 0 0 1 1528 4189.01]ST +F1 F +0 Y<002000210014>107 0 AT +[1 0 0 1 1528 4369.01]ST +0 Y<0026002E000D001F002F>139 0 AT +[1 0 0 1 1528 4369.01]ST +0 Y<0026002E000D001F002F>139 0 AT +[1 0 0 1 1528 4309.01]ST +0 Y<000A0010002100210013>160 0 AT +[1 0 0 1 1528 4249.01]ST +0 Y<00300031002C000E0021>147 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +1.64339e+06 265234 MT +1.6419e+06 263746 LT +1.6398e+06 263746 LT +1.63831e+06 265234 LT +1.63831e+06 297395 LT +1.6398e+06 298883 LT +1.6419e+06 298883 LT +1.64339e+06 297395 LT +CP BF QS +NP +1.65312e+06 255497 MT +1.65164e+06 254009 LT +1.64953e+06 254009 LT +1.63831e+06 265234 LT +1.63831e+06 267338 LT +1.6398e+06 268826 LT +1.6419e+06 268826 LT +1.65312e+06 257601 LT +CP BF QS +NP +1.68318e+06 255497 MT +1.68169e+06 254009 LT +1.64953e+06 254009 LT +1.64804e+06 255497 LT +1.64804e+06 257601 LT +1.64953e+06 259089 LT +1.68169e+06 259089 LT +1.68318e+06 257601 LT +CP BF QS +NP +1.68318e+06 255497 MT +1.68169e+06 254009 LT +1.67959e+06 254009 LT +1.6781e+06 255497 LT +1.6781e+06 297395 LT +1.67959e+06 298883 LT +1.68169e+06 298883 LT +1.68318e+06 297395 LT +CP BF QS +NP +1.73271e+06 255497 MT +1.73122e+06 254009 LT +1.69906e+06 254009 LT +1.69757e+06 255497 LT +1.69757e+06 257601 LT +1.69906e+06 259089 LT +1.73122e+06 259089 LT +1.73271e+06 257601 LT +CP BF QS +NP +1.74245e+06 265234 MT +1.73122e+06 254009 LT +1.72912e+06 254009 LT +1.72763e+06 255497 LT +1.72763e+06 257601 LT +1.73886e+06 268826 LT +1.74096e+06 268826 LT +1.74245e+06 267338 LT +CP BF QS +NP +1.74245e+06 265234 MT +1.74096e+06 263746 LT +1.73886e+06 263746 LT +1.73809e+06 264509 LT +1.72763e+06 275426 LT +1.72763e+06 277498 LT +1.72912e+06 278986 LT +1.73122e+06 278986 LT +1.73199e+06 278223 LT +1.74245e+06 267306 LT +CP BF QS +NP +1.73271e+06 275394 MT +1.73122e+06 273906 LT +1.70922e+06 273906 LT +1.70773e+06 275394 LT +1.70773e+06 277498 LT +1.70922e+06 278986 LT +1.73122e+06 278986 LT +1.73271e+06 277498 LT +CP BF QS +NP +1.71281e+06 275394 MT +1.71133e+06 273906 LT +1.70925e+06 273906 LT +1.69834e+06 284368 LT +1.69757e+06 285131 LT +1.69757e+06 287235 LT +1.69906e+06 288723 LT +1.70113e+06 288723 LT +1.71205e+06 278261 LT +1.71281e+06 277498 LT +CP BF QS +NP +1.71281e+06 295291 MT +1.70117e+06 283643 LT +1.69906e+06 283643 LT +1.69757e+06 285131 LT +1.69757e+06 287235 LT +1.70922e+06 298883 LT +1.71133e+06 298883 LT +1.71281e+06 297395 LT +CP BF QS +NP +1.74245e+06 295291 MT +1.74096e+06 293803 LT +1.70922e+06 293803 LT +1.70773e+06 295291 LT +1.70773e+06 297395 LT +1.70922e+06 298883 LT +1.74096e+06 298883 LT +1.74245e+06 297395 LT +CP BF QS +NP +1.76234e+06 255497 MT +1.76086e+06 254009 LT +1.75875e+06 254009 LT +1.75726e+06 255497 LT +1.75726e+06 316869 LT +1.75875e+06 318357 LT +1.76086e+06 318357 LT +1.76234e+06 316869 LT +CP BF QS +NP +1.79198e+06 255497 MT +1.79049e+06 254009 LT +1.75875e+06 254009 LT +1.75726e+06 255497 LT +1.75726e+06 257601 LT +1.75875e+06 259089 LT +1.79049e+06 259089 LT +1.79198e+06 257601 LT +CP BF QS +NP +1.80172e+06 265234 MT +1.79049e+06 254009 LT +1.78839e+06 254009 LT +1.7869e+06 255497 LT +1.7869e+06 257601 LT +1.79812e+06 268826 LT +1.80023e+06 268826 LT +1.80172e+06 267338 LT +CP BF QS +NP +1.80172e+06 265234 MT +1.80023e+06 263746 LT +1.79812e+06 263746 LT +1.79664e+06 265234 LT +1.79664e+06 287235 LT +1.79812e+06 288723 LT +1.80023e+06 288723 LT +1.80172e+06 287235 LT +CP BF QS +NP +1.80172e+06 285131 MT +1.80023e+06 283643 LT +1.79812e+06 283643 LT +1.79736e+06 284406 LT +1.7869e+06 295323 LT +1.7869e+06 297395 LT +1.78839e+06 298883 LT +1.79049e+06 298883 LT +1.79125e+06 298120 LT +1.80172e+06 287203 LT +CP BF QS +NP +1.79198e+06 295291 MT +1.79049e+06 293803 LT +1.75875e+06 293803 LT +1.75726e+06 295291 LT +1.75726e+06 297395 LT +1.75875e+06 298883 LT +1.79049e+06 298883 LT +1.79198e+06 297395 LT +CP BF QS +NP +1.8614e+06 285131 MT +1.85992e+06 283643 LT +1.81802e+06 283643 LT +1.81653e+06 285131 LT +1.81653e+06 287235 LT +1.81802e+06 288723 LT +1.85992e+06 288723 LT +1.8614e+06 287235 LT +CP BF QS +NP +1.91094e+06 255497 MT +1.90945e+06 254009 LT +1.87729e+06 254009 LT +1.8758e+06 255497 LT +1.8758e+06 257601 LT +1.87729e+06 259089 LT +1.90945e+06 259089 LT +1.91094e+06 257601 LT +CP BF QS +NP +1.92067e+06 265234 MT +1.90945e+06 254009 LT +1.90734e+06 254009 LT +1.90586e+06 255497 LT +1.90586e+06 257601 LT +1.91708e+06 268826 LT +1.91918e+06 268826 LT +1.92067e+06 267338 LT +CP BF QS +NP +1.92067e+06 265234 MT +1.91918e+06 263746 LT +1.91708e+06 263746 LT +1.91632e+06 264509 LT +1.90586e+06 275426 LT +1.90586e+06 277498 LT +1.90734e+06 278986 LT +1.90945e+06 278986 LT +1.91021e+06 278223 LT +1.92067e+06 267306 LT +CP BF QS +NP +1.91094e+06 275394 MT +1.90945e+06 273906 LT +1.88745e+06 273906 LT +1.88596e+06 275394 LT +1.88596e+06 277498 LT +1.88745e+06 278986 LT +1.90945e+06 278986 LT +1.91094e+06 277498 LT +CP BF QS +NP +1.89104e+06 275394 MT +1.88955e+06 273906 LT +1.88748e+06 273906 LT +1.87656e+06 284368 LT +1.8758e+06 285131 LT +1.8758e+06 287235 LT +1.87729e+06 288723 LT +1.87936e+06 288723 LT +1.89028e+06 278261 LT +1.89104e+06 277498 LT +CP BF QS +NP +1.89104e+06 295291 MT +1.87939e+06 283643 LT +1.87729e+06 283643 LT +1.8758e+06 285131 LT +1.8758e+06 287235 LT +1.88745e+06 298883 LT +1.88955e+06 298883 LT +1.89104e+06 297395 LT +CP BF QS +NP +1.92067e+06 295291 MT +1.91918e+06 293803 LT +1.88745e+06 293803 LT +1.88596e+06 295291 LT +1.88596e+06 297395 LT +1.88745e+06 298883 LT +1.91918e+06 298883 LT +1.92067e+06 297395 LT +CP BF QS +NP +1.9702e+06 255497 MT +1.96871e+06 254009 LT +1.94671e+06 254009 LT +1.94522e+06 255497 LT +1.94522e+06 257601 LT +1.94671e+06 259089 LT +1.96871e+06 259089 LT +1.9702e+06 257601 LT +CP BF QS +NP +1.9503e+06 255497 MT +1.94882e+06 254009 LT +1.94671e+06 254009 LT +1.93549e+06 265234 LT +1.93549e+06 267338 LT +1.93698e+06 268826 LT +1.93908e+06 268826 LT +1.9503e+06 257601 LT +CP BF QS +NP +1.94057e+06 265234 MT +1.93908e+06 263746 LT +1.93698e+06 263746 LT +1.93549e+06 265234 LT +1.93549e+06 287235 LT +1.93698e+06 288723 LT +1.93908e+06 288723 LT +1.94057e+06 287235 LT +CP BF QS +NP +1.93984e+06 284406 MT +1.93908e+06 283643 LT +1.93698e+06 283643 LT +1.93549e+06 285131 LT +1.93549e+06 287203 LT +1.94595e+06 298120 LT +1.94671e+06 298883 LT +1.94882e+06 298883 LT +1.9503e+06 297395 LT +1.9503e+06 295323 LT +CP BF QS +NP +1.9702e+06 295291 MT +1.96871e+06 293803 LT +1.94671e+06 293803 LT +1.94522e+06 295291 LT +1.94522e+06 297395 LT +1.94671e+06 298883 LT +1.96871e+06 298883 LT +1.9702e+06 297395 LT +CP BF QS +NP +1.97994e+06 285131 MT +1.97845e+06 283643 LT +1.97635e+06 283643 LT +1.97558e+06 284406 LT +1.96512e+06 295323 LT +1.96512e+06 297395 LT +1.96661e+06 298883 LT +1.96871e+06 298883 LT +1.96948e+06 298120 LT +1.97994e+06 287203 LT +CP BF QS +NP +1.97994e+06 275394 MT +1.97845e+06 273906 LT +1.97635e+06 273906 LT +1.97486e+06 275394 LT +1.97486e+06 287235 LT +1.97635e+06 288723 LT +1.97845e+06 288723 LT +1.97994e+06 287235 LT +CP BF QS +NP +1.97994e+06 275394 MT +1.97845e+06 273906 LT +1.93698e+06 273906 LT +1.93549e+06 275394 LT +1.93549e+06 277498 LT +1.93698e+06 278986 LT +1.97845e+06 278986 LT +1.97994e+06 277498 LT +CP BF QS +NP +1.99984e+06 255497 MT +1.99835e+06 254009 LT +1.99624e+06 254009 LT +1.99476e+06 255497 LT +1.99476e+06 297395 LT +1.99624e+06 298883 LT +1.99835e+06 298883 LT +1.99984e+06 297395 LT +CP BF QS +NP +2.01973e+06 295291 MT +1.99835e+06 273906 LT +1.99624e+06 273906 LT +1.99476e+06 275394 LT +1.99476e+06 277498 LT +2.01614e+06 298883 LT +2.01824e+06 298883 LT +2.01973e+06 297395 LT +CP BF QS +NP +2.02947e+06 295291 MT +2.02798e+06 293803 LT +2.01614e+06 293803 LT +2.01465e+06 295291 LT +2.01465e+06 297395 LT +2.01614e+06 298883 LT +2.02798e+06 298883 LT +2.02947e+06 297395 LT +CP BF QS +NP +2.06926e+06 255497 MT +2.06777e+06 254009 LT +2.06567e+06 254009 LT +2.06464e+06 255044 LT +2.04429e+06 295744 LT +2.04429e+06 297395 LT +2.04577e+06 298883 LT +2.04788e+06 298883 LT +2.04891e+06 297848 LT +2.06926e+06 257148 LT +CP BF QS +NP +2.06881e+06 255044 MT +2.06777e+06 254009 LT +2.06567e+06 254009 LT +2.06418e+06 255497 LT +2.06418e+06 257148 LT +2.08453e+06 297848 LT +2.08557e+06 298883 LT +2.08767e+06 298883 LT +2.08916e+06 297395 LT +2.08916e+06 295744 LT +CP BF QS +NP +2.13827e+06 255497 MT +2.13678e+06 254009 LT +2.1152e+06 254009 LT +2.11371e+06 255497 LT +2.11371e+06 257601 LT +2.1152e+06 259089 LT +2.13678e+06 259089 LT +2.13827e+06 257601 LT +CP BF QS +NP +2.14843e+06 265234 MT +2.14766e+06 264471 LT +2.13675e+06 254009 LT +2.13467e+06 254009 LT +2.13319e+06 255497 LT +2.13319e+06 257601 LT +2.13395e+06 258364 LT +2.14487e+06 268826 LT +2.14694e+06 268826 LT +2.14843e+06 267338 LT +CP BF QS +NP +2.14843e+06 265234 MT +2.14694e+06 263746 LT +2.14483e+06 263746 LT +2.14335e+06 265234 LT +2.14335e+06 287235 LT +2.14483e+06 288723 LT +2.14694e+06 288723 LT +2.14843e+06 287235 LT +CP BF QS +NP +2.14843e+06 285131 MT +2.14694e+06 283643 LT +2.14483e+06 283643 LT +2.13319e+06 295291 LT +2.13319e+06 297395 LT +2.13467e+06 298883 LT +2.13678e+06 298883 LT +2.14843e+06 287235 LT +CP BF QS +NP +2.13827e+06 295291 MT +2.13678e+06 293803 LT +2.1152e+06 293803 LT +2.11371e+06 295291 LT +2.11371e+06 297395 LT +2.1152e+06 298883 LT +2.13678e+06 298883 LT +2.13827e+06 297395 LT +CP BF QS +NP +2.11879e+06 295291 MT +2.10714e+06 283643 LT +2.10504e+06 283643 LT +2.10355e+06 285131 LT +2.10355e+06 287235 LT +2.1152e+06 298883 LT +2.1173e+06 298883 LT +2.11879e+06 297395 LT +CP BF QS +NP +2.10863e+06 265234 MT +2.10714e+06 263746 LT +2.10504e+06 263746 LT +2.10355e+06 265234 LT +2.10355e+06 287235 LT +2.10504e+06 288723 LT +2.10714e+06 288723 LT +2.10863e+06 287235 LT +CP BF QS +NP +2.11879e+06 255497 MT +2.1173e+06 254009 LT +2.11523e+06 254009 LT +2.10432e+06 264471 LT +2.10355e+06 265234 LT +2.10355e+06 267338 LT +2.10504e+06 268826 LT +2.10711e+06 268826 LT +2.11803e+06 258364 LT +2.11879e+06 257601 LT +CP BF QS +NP +1.39828e+06 1.44732e+06 MT +1.39753e+06 1.44658e+06 LT +1.01548e+06 1.44658e+06 LT +1.01473e+06 1.44732e+06 LT +1.01473e+06 1.44838e+06 LT +1.01548e+06 1.44912e+06 LT +1.39753e+06 1.44912e+06 LT +1.39828e+06 1.44838e+06 LT +CP BF QS +NP +1.39828e+06 812301 MT +1.39753e+06 811557 LT +1.39648e+06 811557 LT +1.39574e+06 812301 LT +1.39574e+06 1.44838e+06 LT +1.39648e+06 1.44912e+06 LT +1.39753e+06 1.44912e+06 LT +1.39828e+06 1.44838e+06 LT +CP BF QS +NP +1.39828e+06 812301 MT +1.39753e+06 811557 LT +1.01548e+06 811557 LT +1.01473e+06 812301 LT +1.01473e+06 813353 LT +1.01548e+06 814097 LT +1.39753e+06 814097 LT +1.39828e+06 813353 LT +CP BF QS +NP +1.01727e+06 812301 MT +1.01653e+06 811557 LT +1.01548e+06 811557 LT +1.01473e+06 812301 LT +1.01473e+06 1.44838e+06 LT +1.01548e+06 1.44912e+06 LT +1.01653e+06 1.44912e+06 LT +1.01727e+06 1.44838e+06 LT +CP BF QS +NP +1.44865e+06 837878 MT +1.44816e+06 837382 LT +1.39666e+06 837382 LT +1.39616e+06 837878 LT +1.39616e+06 838578 LT +1.39666e+06 839074 LT +1.44816e+06 839074 LT +1.44865e+06 838578 LT +CP BF QS +NP +1.01685e+06 1.19349e+06 MT +1.01635e+06 1.19299e+06 LT +964854 1.19299e+06 LT +964358 1.19349e+06 LT +964358 1.19419e+06 LT +964854 1.19469e+06 LT +1.01635e+06 1.19469e+06 LT +1.01685e+06 1.19419e+06 LT +CP BF QS +NP +1.01685e+06 1.24429e+06 MT +1.01635e+06 1.2438e+06 LT +964854 1.2438e+06 LT +964358 1.24429e+06 LT +964358 1.24499e+06 LT +964854 1.24549e+06 LT +1.01635e+06 1.24549e+06 LT +1.01685e+06 1.24499e+06 LT +CP BF QS +NP +1.01685e+06 1.11729e+06 MT +1.01635e+06 1.11679e+06 LT +964854 1.11679e+06 LT +964358 1.11729e+06 LT +964358 1.11799e+06 LT +964854 1.11848e+06 LT +1.01635e+06 1.11848e+06 LT +1.01685e+06 1.11799e+06 LT +CP BF QS +NP +1.01685e+06 1.06649e+06 MT +1.01635e+06 1.06599e+06 LT +964854 1.06599e+06 LT +964358 1.06649e+06 LT +964358 1.06719e+06 LT +964854 1.06768e+06 LT +1.01635e+06 1.06768e+06 LT +1.01685e+06 1.06719e+06 LT +CP BF QS +NP +1.01685e+06 1.3713e+06 MT +1.01635e+06 1.3708e+06 LT +964854 1.3708e+06 LT +964358 1.3713e+06 LT +964358 1.372e+06 LT +964854 1.37249e+06 LT +1.01635e+06 1.37249e+06 LT +1.01685e+06 1.372e+06 LT +CP BF QS +NP +1.01685e+06 1.3459e+06 MT +1.01635e+06 1.3454e+06 LT +964854 1.3454e+06 LT +964358 1.3459e+06 LT +964358 1.3466e+06 LT +964854 1.34709e+06 LT +1.01635e+06 1.34709e+06 LT +1.01685e+06 1.3466e+06 LT +CP BF QS +NP +1.01685e+06 1.32049e+06 MT +1.01635e+06 1.32e+06 LT +964854 1.32e+06 LT +964358 1.32049e+06 LT +964358 1.32119e+06 LT +964854 1.32169e+06 LT +1.01635e+06 1.32169e+06 LT +1.01685e+06 1.32119e+06 LT +CP BF QS +NP +1.44865e+06 863279 MT +1.44816e+06 862783 LT +1.39666e+06 862783 LT +1.39616e+06 863279 LT +1.39616e+06 863979 LT +1.39666e+06 864475 LT +1.44816e+06 864475 LT +1.44865e+06 863979 LT +CP BF QS +NP +1.44865e+06 888680 MT +1.44816e+06 888184 LT +1.39666e+06 888184 LT +1.39616e+06 888680 LT +1.39616e+06 889380 LT +1.39666e+06 889876 LT +1.44816e+06 889876 LT +1.44865e+06 889380 LT +CP BF QS +NP +1.44865e+06 914081 MT +1.44816e+06 913585 LT +1.39666e+06 913585 LT +1.39616e+06 914081 LT +1.39616e+06 914781 LT +1.39666e+06 915277 LT +1.44816e+06 915277 LT +1.44865e+06 914781 LT +CP BF QS +NP +1.44865e+06 939481 MT +1.44816e+06 938985 LT +1.39666e+06 938985 LT +1.39616e+06 939481 LT +1.39616e+06 940181 LT +1.39666e+06 940677 LT +1.44816e+06 940677 LT +1.44865e+06 940181 LT +CP BF QS +NP +1.44865e+06 964882 MT +1.44816e+06 964386 LT +1.39666e+06 964386 LT +1.39616e+06 964882 LT +1.39616e+06 965582 LT +1.39666e+06 966078 LT +1.44816e+06 966078 LT +1.44865e+06 965582 LT +CP BF QS +NP +1.44865e+06 1.01568e+06 MT +1.44816e+06 1.01519e+06 LT +1.39666e+06 1.01519e+06 LT +1.39616e+06 1.01568e+06 LT +1.39616e+06 1.01638e+06 LT +1.39666e+06 1.01688e+06 LT +1.44816e+06 1.01688e+06 LT +1.44865e+06 1.01638e+06 LT +CP BF QS +NP +1.44865e+06 1.04108e+06 MT +1.44816e+06 1.04059e+06 LT +1.39666e+06 1.04059e+06 LT +1.39616e+06 1.04108e+06 LT +1.39616e+06 1.04178e+06 LT +1.39666e+06 1.04228e+06 LT +1.44816e+06 1.04228e+06 LT +1.44865e+06 1.04178e+06 LT +CP BF QS +NP +1.44865e+06 1.06649e+06 MT +1.44816e+06 1.06599e+06 LT +1.39666e+06 1.06599e+06 LT +1.39616e+06 1.06649e+06 LT +1.39616e+06 1.06719e+06 LT +1.39666e+06 1.06768e+06 LT +1.44816e+06 1.06768e+06 LT +1.44865e+06 1.06719e+06 LT +CP BF QS +NP +1.44865e+06 1.09189e+06 MT +1.44816e+06 1.09139e+06 LT +1.39666e+06 1.09139e+06 LT +1.39616e+06 1.09189e+06 LT +1.39616e+06 1.09259e+06 LT +1.39666e+06 1.09308e+06 LT +1.44816e+06 1.09308e+06 LT +1.44865e+06 1.09259e+06 LT +CP BF QS +NP +1.44865e+06 1.11729e+06 MT +1.44816e+06 1.11679e+06 LT +1.39666e+06 1.11679e+06 LT +1.39616e+06 1.11729e+06 LT +1.39616e+06 1.11799e+06 LT +1.39666e+06 1.11848e+06 LT +1.44816e+06 1.11848e+06 LT +1.44865e+06 1.11799e+06 LT +CP BF QS +NP +1.44865e+06 1.14269e+06 MT +1.44816e+06 1.14219e+06 LT +1.39666e+06 1.14219e+06 LT +1.39616e+06 1.14269e+06 LT +1.39616e+06 1.14339e+06 LT +1.39666e+06 1.14388e+06 LT +1.44816e+06 1.14388e+06 LT +1.44865e+06 1.14339e+06 LT +CP BF QS +NP +1.44865e+06 1.16809e+06 MT +1.44816e+06 1.16759e+06 LT +1.39666e+06 1.16759e+06 LT +1.39616e+06 1.16809e+06 LT +1.39616e+06 1.16879e+06 LT +1.39666e+06 1.16928e+06 LT +1.44816e+06 1.16928e+06 LT +1.44865e+06 1.16879e+06 LT +CP BF QS +NP +1.44865e+06 1.19349e+06 MT +1.44816e+06 1.19299e+06 LT +1.39666e+06 1.19299e+06 LT +1.39616e+06 1.19349e+06 LT +1.39616e+06 1.19419e+06 LT +1.39666e+06 1.19469e+06 LT +1.44816e+06 1.19469e+06 LT +1.44865e+06 1.19419e+06 LT +CP BF QS +NP +1.44865e+06 1.29509e+06 MT +1.44816e+06 1.2946e+06 LT +1.39666e+06 1.2946e+06 LT +1.39616e+06 1.29509e+06 LT +1.39616e+06 1.29579e+06 LT +1.39666e+06 1.29629e+06 LT +1.44816e+06 1.29629e+06 LT +1.44865e+06 1.29579e+06 LT +CP BF QS +NP +1.44865e+06 1.32049e+06 MT +1.44816e+06 1.32e+06 LT +1.39666e+06 1.32e+06 LT +1.39616e+06 1.32049e+06 LT +1.39616e+06 1.32119e+06 LT +1.39666e+06 1.32169e+06 LT +1.44816e+06 1.32169e+06 LT +1.44865e+06 1.32119e+06 LT +CP BF QS +NP +1.44865e+06 1.3459e+06 MT +1.44816e+06 1.3454e+06 LT +1.39666e+06 1.3454e+06 LT +1.39616e+06 1.3459e+06 LT +1.39616e+06 1.3466e+06 LT +1.39666e+06 1.34709e+06 LT +1.44816e+06 1.34709e+06 LT +1.44865e+06 1.3466e+06 LT +CP BF QS +NP +1.44865e+06 1.3713e+06 MT +1.44816e+06 1.3708e+06 LT +1.39666e+06 1.3708e+06 LT +1.39616e+06 1.3713e+06 LT +1.39616e+06 1.372e+06 LT +1.39666e+06 1.37249e+06 LT +1.44816e+06 1.37249e+06 LT +1.44865e+06 1.372e+06 LT +CP BF QS +NP +1.44865e+06 1.3967e+06 MT +1.44816e+06 1.3962e+06 LT +1.39666e+06 1.3962e+06 LT +1.39616e+06 1.3967e+06 LT +1.39616e+06 1.3974e+06 LT +1.39666e+06 1.39789e+06 LT +1.44816e+06 1.39789e+06 LT +1.44865e+06 1.3974e+06 LT +CP BF QS +NP +1.44865e+06 1.4221e+06 MT +1.44816e+06 1.4216e+06 LT +1.39666e+06 1.4216e+06 LT +1.39616e+06 1.4221e+06 LT +1.39616e+06 1.4228e+06 LT +1.39666e+06 1.42329e+06 LT +1.44816e+06 1.42329e+06 LT +1.44865e+06 1.4228e+06 LT +CP BF QS +NP +995426 1.4224e+06 MT +995470 1.42337e+06 LT +995602 1.42433e+06 LT +995822 1.42528e+06 LT +996126 1.4262e+06 LT +996513 1.42709e+06 LT +996979 1.42794e+06 LT +997521 1.42875e+06 LT +998134 1.4295e+06 LT +998813 1.4302e+06 LT +999552 1.43083e+06 LT +1.00034e+06 1.43139e+06 LT +1.00119e+06 1.43187e+06 LT +1.00207e+06 1.43228e+06 LT +1.00298e+06 1.4326e+06 LT +1.00392e+06 1.43284e+06 LT +1.00488e+06 1.433e+06 LT +1.00585e+06 1.43306e+06 LT +1.00682e+06 1.43304e+06 LT +1.00779e+06 1.43293e+06 LT +1.00874e+06 1.43274e+06 LT +1.00967e+06 1.43245e+06 LT +1.01057e+06 1.43209e+06 LT +1.01143e+06 1.43164e+06 LT +1.01225e+06 1.43112e+06 LT +1.01301e+06 1.43052e+06 LT +1.01372e+06 1.42986e+06 LT +1.01437e+06 1.42913e+06 LT +1.01495e+06 1.42835e+06 LT +1.01545e+06 1.42752e+06 LT +1.01588e+06 1.42665e+06 LT +1.01622e+06 1.42574e+06 LT +1.01649e+06 1.42481e+06 LT +1.01666e+06 1.42385e+06 LT +1.01675e+06 1.42289e+06 LT +1.01675e+06 1.42191e+06 LT +1.01666e+06 1.42095e+06 LT +1.01649e+06 1.41999e+06 LT +1.01622e+06 1.41906e+06 LT +1.01588e+06 1.41815e+06 LT +1.01545e+06 1.41728e+06 LT +1.01495e+06 1.41645e+06 LT +1.01437e+06 1.41567e+06 LT +1.01372e+06 1.41494e+06 LT +1.01301e+06 1.41428e+06 LT +1.01225e+06 1.41368e+06 LT +1.01143e+06 1.41316e+06 LT +1.01057e+06 1.41271e+06 LT +1.00967e+06 1.41235e+06 LT +1.00874e+06 1.41206e+06 LT +1.00779e+06 1.41187e+06 LT +1.00682e+06 1.41176e+06 LT +1.00585e+06 1.41174e+06 LT +1.00488e+06 1.4118e+06 LT +1.00392e+06 1.41196e+06 LT +1.00298e+06 1.4122e+06 LT +1.00207e+06 1.41252e+06 LT +1.00119e+06 1.41293e+06 LT +1.00034e+06 1.41341e+06 LT +999552 1.41397e+06 LT +998813 1.4146e+06 LT +998134 1.4153e+06 LT +997521 1.41605e+06 LT +996979 1.41686e+06 LT +996513 1.41771e+06 LT +996126 1.4186e+06 LT +995822 1.41952e+06 LT +995602 1.42047e+06 LT +995470 1.42143e+06 LT +995426 1.4224e+06 LT +996950 1.4224e+06 LT +996988 1.42323e+06 LT +997101 1.42406e+06 LT +997289 1.42487e+06 LT +997550 1.42566e+06 LT +997882 1.42642e+06 LT +998281 1.42715e+06 LT +998746 1.42784e+06 LT +999271 1.42849e+06 LT +999853 1.42908e+06 LT +1.00049e+06 1.42962e+06 LT +1.00117e+06 1.4301e+06 LT +1.00189e+06 1.43052e+06 LT +1.00264e+06 1.43087e+06 LT +1.00343e+06 1.43115e+06 LT +1.00423e+06 1.43135e+06 LT +1.00506e+06 1.43148e+06 LT +1.00589e+06 1.43154e+06 LT +1.00672e+06 1.43152e+06 LT +1.00754e+06 1.43143e+06 LT +1.00836e+06 1.43126e+06 LT +1.00916e+06 1.43102e+06 LT +1.00993e+06 1.4307e+06 LT +1.01067e+06 1.43032e+06 LT +1.01137e+06 1.42987e+06 LT +1.01202e+06 1.42936e+06 LT +1.01263e+06 1.42879e+06 LT +1.01319e+06 1.42817e+06 LT +1.01368e+06 1.4275e+06 LT +1.01412e+06 1.42679e+06 LT +1.01448e+06 1.42604e+06 LT +1.01478e+06 1.42526e+06 LT +1.015e+06 1.42446e+06 LT +1.01515e+06 1.42364e+06 LT +1.01523e+06 1.42282e+06 LT +1.01523e+06 1.42198e+06 LT +1.01515e+06 1.42116e+06 LT +1.015e+06 1.42034e+06 LT +1.01478e+06 1.41954e+06 LT +1.01448e+06 1.41876e+06 LT +1.01412e+06 1.41801e+06 LT +1.01368e+06 1.4173e+06 LT +1.01319e+06 1.41663e+06 LT +1.01263e+06 1.41601e+06 LT +1.01202e+06 1.41544e+06 LT +1.01137e+06 1.41493e+06 LT +1.01067e+06 1.41448e+06 LT +1.00993e+06 1.4141e+06 LT +1.00916e+06 1.41378e+06 LT +1.00836e+06 1.41354e+06 LT +1.00754e+06 1.41337e+06 LT +1.00672e+06 1.41328e+06 LT +1.00589e+06 1.41326e+06 LT +1.00506e+06 1.41332e+06 LT +1.00423e+06 1.41345e+06 LT +1.00343e+06 1.41365e+06 LT +1.00264e+06 1.41393e+06 LT +1.00189e+06 1.41428e+06 LT +1.00117e+06 1.4147e+06 LT +1.00049e+06 1.41518e+06 LT +999853 1.41572e+06 LT +999271 1.41631e+06 LT +998746 1.41696e+06 LT +998281 1.41765e+06 LT +997882 1.41838e+06 LT +997550 1.41914e+06 LT +997289 1.41993e+06 LT +997101 1.42074e+06 LT +996988 1.42157e+06 LT +996950 1.4224e+06 LT +CP BF QS +NP +996954 1.4221e+06 MT +996458 1.4216e+06 LT +964854 1.4216e+06 LT +964358 1.4221e+06 LT +964358 1.4228e+06 LT +964854 1.42329e+06 LT +996458 1.42329e+06 LT +996954 1.4228e+06 LT +CP BF QS +NP +1.51639e+06 710698 MT +1.51564e+06 709954 LT +1.51459e+06 709954 LT +1.51385e+06 710698 LT +1.51385e+06 762552 LT +1.51459e+06 763296 LT +1.51564e+06 763296 LT +1.51639e+06 762552 LT +CP BF QS +NP +1.53417e+06 710698 MT +1.53342e+06 709954 LT +1.53237e+06 709954 LT +1.53163e+06 710698 LT +1.53163e+06 762552 LT +1.53237e+06 763296 LT +1.53342e+06 763296 LT +1.53417e+06 762552 LT +CP BF QS +NP +1.52485e+06 685473 MT +1.52436e+06 684977 LT +1.52366e+06 684977 LT +1.52316e+06 685473 LT +1.52316e+06 711574 LT +1.52366e+06 712070 LT +1.52436e+06 712070 LT +1.52485e+06 711574 LT +CP BF QS +NP +1.53417e+06 710698 MT +1.53342e+06 709954 LT +1.51459e+06 709954 LT +1.51385e+06 710698 LT +1.51385e+06 711750 LT +1.51459e+06 712494 LT +1.53342e+06 712494 LT +1.53417e+06 711750 LT +CP BF QS +NP +1.53417e+06 761500 MT +1.53342e+06 760756 LT +1.51459e+06 760756 LT +1.51385e+06 761500 LT +1.51385e+06 762552 LT +1.51459e+06 763296 LT +1.53342e+06 763296 LT +1.53417e+06 762552 LT +CP BF QS +NP +1.52485e+06 761676 MT +1.52436e+06 761180 LT +1.52366e+06 761180 LT +1.52316e+06 761676 LT +1.52316e+06 787776 LT +1.52366e+06 788272 LT +1.52436e+06 788272 LT +1.52485e+06 787776 LT +CP BF QS +NP +1.61799e+06 710698 MT +1.61724e+06 709954 LT +1.61619e+06 709954 LT +1.61545e+06 710698 LT +1.61545e+06 762552 LT +1.61619e+06 763296 LT +1.61724e+06 763296 LT +1.61799e+06 762552 LT +CP BF QS +NP +1.63577e+06 710698 MT +1.63502e+06 709954 LT +1.63397e+06 709954 LT +1.63323e+06 710698 LT +1.63323e+06 762552 LT +1.63397e+06 763296 LT +1.63502e+06 763296 LT +1.63577e+06 762552 LT +CP BF QS +NP +1.62645e+06 685473 MT +1.62596e+06 684977 LT +1.62526e+06 684977 LT +1.62476e+06 685473 LT +1.62476e+06 711574 LT +1.62526e+06 712070 LT +1.62596e+06 712070 LT +1.62645e+06 711574 LT +CP BF QS +NP +1.63577e+06 710698 MT +1.63502e+06 709954 LT +1.61619e+06 709954 LT +1.61545e+06 710698 LT +1.61545e+06 711750 LT +1.61619e+06 712494 LT +1.63502e+06 712494 LT +1.63577e+06 711750 LT +CP BF QS +NP +1.63577e+06 761500 MT +1.63502e+06 760756 LT +1.61619e+06 760756 LT +1.61545e+06 761500 LT +1.61545e+06 762552 LT +1.61619e+06 763296 LT +1.63502e+06 763296 LT +1.63577e+06 762552 LT +CP BF QS +NP +1.62645e+06 761676 MT +1.62596e+06 761180 LT +1.62526e+06 761180 LT +1.62476e+06 761676 LT +1.62476e+06 787776 LT +1.62526e+06 788272 LT +1.62596e+06 788272 LT +1.62645e+06 787776 LT +CP BF QS +NP +229447 710874 MT +228951 710378 LT +202851 710378 LT +202355 710874 LT +202355 711574 LT +202851 712070 LT +228951 712070 LT +229447 711574 LT +CP BF QS +NP +229447 685473 MT +228951 684977 LT +202851 684977 LT +202355 685473 LT +202355 686173 LT +202851 686669 LT +228951 686669 LT +229447 686173 LT +CP BF QS +NP +229447 660072 MT +228951 659576 LT +202851 659576 LT +202355 660072 LT +202355 660772 LT +202851 661268 LT +228951 661268 LT +229447 660772 LT +CP BF QS +NP +229447 634671 MT +228951 634175 LT +202851 634175 LT +202355 634671 LT +202355 635371 LT +202851 635867 LT +228951 635867 LT +229447 635371 LT +CP BF QS +NP +204471 609094 MT +203727 608350 LT +202675 608350 LT +201931 609094 LT +201931 737151 LT +202675 737895 LT +203727 737895 LT +204471 737151 LT +CP BF QS +NP +204471 609094 MT +203727 608350 LT +151875 608350 LT +151131 609094 LT +151131 610146 LT +151875 610890 LT +203727 610890 LT +204471 610146 LT +CP BF QS +NP +204471 736099 MT +203727 735355 LT +151875 735355 LT +151131 736099 LT +151131 737151 LT +151875 737895 LT +203727 737895 LT +204471 737151 LT +CP BF QS +[-0 -1 1 0 807.998 3109.05]ST +F3 F +0 Y<0025001C0026>173 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +356448 406064 MT +355952 405568 LT +355252 405568 LT +354756 406064 LT +354756 432164 LT +355252 432660 LT +355952 432660 LT +356448 432164 LT +CP BF QS +NP +375922 405888 MT +375178 405144 LT +336025 405144 LT +335281 405888 LT +335281 406940 LT +336025 407684 LT +375178 407684 LT +375922 406940 LT +CP BF QS +NP +940650 1.11729e+06 MT +940154 1.11679e+06 LT +914054 1.11679e+06 LT +913558 1.11729e+06 LT +913558 1.11799e+06 LT +914054 1.11848e+06 LT +940154 1.11848e+06 LT +940650 1.11799e+06 LT +CP BF QS +NP +915674 1.09806e+06 MT +914930 1.09732e+06 LT +913878 1.09732e+06 LT +913134 1.09806e+06 LT +913134 1.13721e+06 LT +913878 1.13796e+06 LT +914930 1.13796e+06 LT +915674 1.13721e+06 LT +CP BF QS +NP +864450 1.25445e+06 MT +863954 1.25396e+06 LT +863254 1.25396e+06 LT +862758 1.25445e+06 LT +862758 1.27039e+06 LT +863254 1.27089e+06 LT +863954 1.27089e+06 LT +864450 1.27039e+06 LT +CP BF QS +NP +864450 1.21889e+06 MT +863954 1.2184e+06 LT +863254 1.2184e+06 LT +862758 1.21889e+06 LT +862758 1.23483e+06 LT +863254 1.23533e+06 LT +863954 1.23533e+06 LT +864450 1.23483e+06 LT +CP BF QS +NP +880114 1.24031e+06 MT +879370 1.23956e+06 LT +847838 1.23956e+06 LT +847094 1.24031e+06 LT +847094 1.24136e+06 LT +847838 1.2421e+06 LT +879370 1.2421e+06 LT +880114 1.24136e+06 LT +CP BF QS +NP +880114 1.24031e+06 MT +879370 1.23956e+06 LT +878318 1.23956e+06 LT +877574 1.24031e+06 LT +877574 1.24898e+06 LT +878318 1.24972e+06 LT +879370 1.24972e+06 LT +880114 1.24898e+06 LT +CP BF QS +NP +880114 1.24793e+06 MT +879370 1.24718e+06 LT +847838 1.24718e+06 LT +847094 1.24793e+06 LT +847094 1.24898e+06 LT +847838 1.24972e+06 LT +879370 1.24972e+06 LT +880114 1.24898e+06 LT +CP BF QS +NP +849634 1.24031e+06 MT +848890 1.23956e+06 LT +847838 1.23956e+06 LT +847094 1.24031e+06 LT +847094 1.24898e+06 LT +847838 1.24972e+06 LT +848890 1.24972e+06 LT +849634 1.24898e+06 LT +CP BF QS +NP +882654 1.25428e+06 MT +881910 1.25353e+06 LT +845298 1.25353e+06 LT +844554 1.25428e+06 LT +844554 1.25533e+06 LT +845298 1.25607e+06 LT +881910 1.25607e+06 LT +882654 1.25533e+06 LT +CP BF QS +NP +882654 1.23396e+06 MT +881910 1.23321e+06 LT +845298 1.23321e+06 LT +844554 1.23396e+06 LT +844554 1.23501e+06 LT +845298 1.23575e+06 LT +881910 1.23575e+06 LT +882654 1.23501e+06 LT +CP BF QS +NP +737449 1.29509e+06 MT +736953 1.2946e+06 LT +710853 1.2946e+06 LT +710357 1.29509e+06 LT +710357 1.29579e+06 LT +710853 1.29629e+06 LT +736953 1.29629e+06 LT +737449 1.29579e+06 LT +CP BF QS +NP +788249 1.29509e+06 MT +787753 1.2946e+06 LT +761653 1.2946e+06 LT +761157 1.29509e+06 LT +761157 1.29579e+06 LT +761653 1.29629e+06 LT +787753 1.29629e+06 LT +788249 1.29579e+06 LT +CP BF QS +751840 1.27508e+06 5081 40641 R +741680 1.27508e+06 5081 40641 R +NP +742529 1.29509e+06 MT +742033 1.2946e+06 LT +736253 1.2946e+06 LT +735757 1.29509e+06 LT +735757 1.29579e+06 LT +736253 1.29629e+06 LT +742033 1.29629e+06 LT +742529 1.29579e+06 LT +CP BF QS +NP +762849 1.29509e+06 MT +762353 1.2946e+06 LT +756573 1.2946e+06 LT +756077 1.29509e+06 LT +756077 1.29579e+06 LT +756573 1.29629e+06 LT +762353 1.29629e+06 LT +762849 1.29579e+06 LT +CP BF QS +NP +737449 1.19349e+06 MT +736953 1.19299e+06 LT +710853 1.19299e+06 LT +710357 1.19349e+06 LT +710357 1.19419e+06 LT +710853 1.19469e+06 LT +736953 1.19469e+06 LT +737449 1.19419e+06 LT +CP BF QS +NP +788249 1.19349e+06 MT +787753 1.19299e+06 LT +761653 1.19299e+06 LT +761157 1.19349e+06 LT +761157 1.19419e+06 LT +761653 1.19469e+06 LT +787753 1.19469e+06 LT +788249 1.19419e+06 LT +CP BF QS +751840 1.17348e+06 5081 40641 R +741680 1.17348e+06 5081 40641 R +NP +742529 1.19349e+06 MT +742033 1.19299e+06 LT +736253 1.19299e+06 LT +735757 1.19349e+06 LT +735757 1.19419e+06 LT +736253 1.19469e+06 LT +742033 1.19469e+06 LT +742529 1.19419e+06 LT +CP BF QS +NP +762849 1.19349e+06 MT +762353 1.19299e+06 LT +756573 1.19299e+06 LT +756077 1.19349e+06 LT +756077 1.19419e+06 LT +756573 1.19469e+06 LT +762353 1.19469e+06 LT +762849 1.19419e+06 LT +CP BF QS +NP +686649 1.29509e+06 MT +686153 1.2946e+06 LT +660053 1.2946e+06 LT +659557 1.29509e+06 LT +659557 1.29579e+06 LT +660053 1.29629e+06 LT +686153 1.29629e+06 LT +686649 1.29579e+06 LT +CP BF QS +NP +661673 1.27587e+06 MT +660929 1.27512e+06 LT +659877 1.27512e+06 LT +659133 1.27587e+06 LT +659133 1.31502e+06 LT +659877 1.31576e+06 LT +660929 1.31576e+06 LT +661673 1.31502e+06 LT +CP BF QS +NP +686649 1.19349e+06 MT +686153 1.19299e+06 LT +660053 1.19299e+06 LT +659557 1.19349e+06 LT +659557 1.19419e+06 LT +660053 1.19469e+06 LT +686153 1.19469e+06 LT +686649 1.19419e+06 LT +CP BF QS +NP +661673 1.17426e+06 MT +660929 1.17352e+06 LT +659877 1.17352e+06 LT +659133 1.17426e+06 LT +659133 1.21342e+06 LT +659877 1.21416e+06 LT +660929 1.21416e+06 LT +661673 1.21342e+06 LT +CP BF QS +NP +2.64373e+06 -876 MT +2.64249e+06 -2116 LT +2.64074e+06 -2116 LT +2.6395e+06 -876 LT +2.6395e+06 1.80434e+06 LT +2.64074e+06 1.80558e+06 LT +2.64249e+06 1.80558e+06 LT +2.64373e+06 1.80434e+06 LT +CP BF QS +NP +2.64373e+06 1.80258e+06 MT +2.64249e+06 1.80134e+06 LT +-876 1.80134e+06 LT +-2116 1.80258e+06 LT +-2116 1.80434e+06 LT +-876 1.80558e+06 LT +2.64249e+06 1.80558e+06 LT +2.64373e+06 1.80434e+06 LT +CP BF QS +NP +2116 -876 MT +876 -2116 LT +-876 -2116 LT +-2116 -876 LT +-2116 1.80434e+06 LT +-876 1.80558e+06 LT +876 1.80558e+06 LT +2116 1.80434e+06 LT +CP BF QS +NP +2.64373e+06 -876 MT +2.64249e+06 -2116 LT +-876 -2116 LT +-2116 -876 LT +-2116 876 LT +-876 2116 LT +2.64249e+06 2116 LT +2.64373e+06 876 LT +CP BF QS +NP +2.33808e+06 -526 MT +2.33734e+06 -1270 LT +1.62508e+06 -1270 LT +1.62434e+06 -526 LT +1.62434e+06 526 LT +1.62508e+06 1270 LT +2.33734e+06 1270 LT +2.33808e+06 526 LT +CP BF QS +NP +2.64288e+06 151879 MT +2.64214e+06 151135 LT +2.50138e+06 151135 LT +2.50064e+06 151879 LT +2.50064e+06 152931 LT +2.50138e+06 153675 LT +2.64214e+06 153675 LT +2.64288e+06 152931 LT +CP BF QS +NP +1.62688e+06 -526 MT +1.62613e+06 -1270 LT +1.62508e+06 -1270 LT +1.62434e+06 -526 LT +1.62434e+06 51328 LT +1.62508e+06 52072 LT +1.62613e+06 52072 LT +1.62688e+06 51328 LT +CP BF QS +NP +1.64042e+06 12897 MT +1.6398e+06 12277 LT +1.63893e+06 12277 LT +1.63831e+06 12897 LT +1.63831e+06 37481 LT +1.63893e+06 38101 LT +1.6398e+06 38101 LT +1.64042e+06 37481 LT +CP BF QS +NP +1.65228e+06 12897 MT +1.65166e+06 12277 LT +1.63893e+06 12277 LT +1.63831e+06 12897 LT +1.63831e+06 13773 LT +1.63893e+06 14393 LT +1.65166e+06 14393 LT +1.65228e+06 13773 LT +CP BF QS +NP +1.65199e+06 12606 MT +1.65166e+06 12277 LT +1.65078e+06 12277 LT +1.65016e+06 12897 LT +1.65016e+06 13740 LT +1.65426e+06 18298 LT +1.65459e+06 18627 LT +1.65547e+06 18627 LT +1.65609e+06 18007 LT +1.65609e+06 17164 LT +CP BF QS +NP +1.65609e+06 17131 MT +1.65547e+06 16511 LT +1.65459e+06 16511 LT +1.65397e+06 17131 LT +1.65397e+06 33247 LT +1.65459e+06 33867 LT +1.65547e+06 33867 LT +1.65609e+06 33247 LT +CP BF QS +NP +1.65609e+06 32371 MT +1.65547e+06 31751 LT +1.65459e+06 31751 LT +1.65426e+06 32080 LT +1.65016e+06 36638 LT +1.65016e+06 37481 LT +1.65078e+06 38101 LT +1.65166e+06 38101 LT +1.65199e+06 37772 LT +1.65609e+06 33214 LT +CP BF QS +NP +1.65228e+06 36605 MT +1.65166e+06 35985 LT +1.63893e+06 35985 LT +1.63831e+06 36605 LT +1.63831e+06 37481 LT +1.63893e+06 38101 LT +1.65166e+06 38101 LT +1.65228e+06 37481 LT +CP BF QS +NP +1.67556e+06 28561 MT +1.67494e+06 27941 LT +1.66644e+06 27941 LT +1.66582e+06 28561 LT +1.66582e+06 29437 LT +1.66644e+06 30057 LT +1.67494e+06 30057 LT +1.67556e+06 29437 LT +CP BF QS +NP +1.67937e+06 24751 MT +1.67875e+06 24131 LT +1.67787e+06 24131 LT +1.67344e+06 28561 LT +1.67344e+06 29437 LT +1.67406e+06 30057 LT +1.67494e+06 30057 LT +1.67937e+06 25627 LT +CP BF QS +NP +1.67937e+06 12897 MT +1.67875e+06 12277 LT +1.67787e+06 12277 LT +1.67725e+06 12897 LT +1.67725e+06 25627 LT +1.67787e+06 26247 LT +1.67875e+06 26247 LT +1.67937e+06 25627 LT +CP BF QS +NP +1.67937e+06 12897 MT +1.67875e+06 12277 LT +1.66644e+06 12277 LT +1.66582e+06 12897 LT +1.66582e+06 13773 LT +1.66644e+06 14393 LT +1.67875e+06 14393 LT +1.67937e+06 13773 LT +CP BF QS +NP +1.66794e+06 12897 MT +1.66732e+06 12277 LT +1.66644e+06 12277 LT +1.66612e+06 12606 LT +1.66201e+06 17164 LT +1.66201e+06 18007 LT +1.66263e+06 18627 LT +1.66351e+06 18627 LT +1.66384e+06 18298 LT +1.66794e+06 13740 LT +CP BF QS +NP +1.66794e+06 20941 MT +1.66351e+06 16511 LT +1.66263e+06 16511 LT +1.66201e+06 17131 LT +1.66201e+06 18007 LT +1.66644e+06 22437 LT +1.66732e+06 22437 LT +1.66794e+06 21817 LT +CP BF QS +NP +1.67937e+06 20941 MT +1.67875e+06 20321 LT +1.66644e+06 20321 LT +1.66582e+06 20941 LT +1.66582e+06 21817 LT +1.66644e+06 22437 LT +1.67875e+06 22437 LT +1.67937e+06 21817 LT +CP BF QS +NP +1.69122e+06 17131 MT +1.6906e+06 16511 LT +1.68973e+06 16511 LT +1.68911e+06 17131 LT +1.68911e+06 33247 LT +1.68973e+06 33867 LT +1.6906e+06 33867 LT +1.69122e+06 33247 LT +CP BF QS +NP +1.69503e+06 12897 MT +1.69441e+06 12277 LT +1.69354e+06 12277 LT +1.69321e+06 12606 LT +1.68911e+06 17164 LT +1.68911e+06 18007 LT +1.68973e+06 18627 LT +1.6906e+06 18627 LT +1.69093e+06 18298 LT +1.69503e+06 13740 LT +CP BF QS +NP +1.69503e+06 28561 MT +1.69441e+06 27941 LT +1.68592e+06 27941 LT +1.6853e+06 28561 LT +1.6853e+06 29437 LT +1.68592e+06 30057 LT +1.69441e+06 30057 LT +1.69503e+06 29437 LT +CP BF QS +NP +1.71451e+06 12897 MT +1.71389e+06 12277 LT +1.70539e+06 12277 LT +1.70477e+06 12897 LT +1.70477e+06 13773 LT +1.70539e+06 14393 LT +1.71389e+06 14393 LT +1.71451e+06 13773 LT +CP BF QS +NP +1.70689e+06 12897 MT +1.70627e+06 12277 LT +1.70539e+06 12277 LT +1.70506e+06 12606 LT +1.70096e+06 17164 LT +1.70096e+06 18007 LT +1.70158e+06 18627 LT +1.70246e+06 18627 LT +1.70279e+06 18298 LT +1.70689e+06 13740 LT +CP BF QS +NP +1.70308e+06 17131 MT +1.70246e+06 16511 LT +1.70158e+06 16511 LT +1.70096e+06 17131 LT +1.70096e+06 25627 LT +1.70158e+06 26247 LT +1.70246e+06 26247 LT +1.70308e+06 25627 LT +CP BF QS +NP +1.70689e+06 28561 MT +1.70246e+06 24131 LT +1.70158e+06 24131 LT +1.70096e+06 24751 LT +1.70096e+06 25627 LT +1.70539e+06 30057 LT +1.70627e+06 30057 LT +1.70689e+06 29437 LT +CP BF QS +NP +1.71451e+06 28561 MT +1.71389e+06 27941 LT +1.70539e+06 27941 LT +1.70477e+06 28561 LT +1.70477e+06 29437 LT +1.70539e+06 30057 LT +1.71389e+06 30057 LT +1.71451e+06 29437 LT +CP BF QS +NP +1.71874e+06 24751 MT +1.71812e+06 24131 LT +1.71728e+06 24131 LT +1.71272e+06 28232 LT +1.71239e+06 28561 LT +1.71239e+06 29437 LT +1.71301e+06 30057 LT +1.71385e+06 30057 LT +1.71841e+06 25956 LT +1.71874e+06 25627 LT +CP BF QS +NP +1.71874e+06 20941 MT +1.71812e+06 20321 LT +1.71724e+06 20321 LT +1.71662e+06 20941 LT +1.71662e+06 25627 LT +1.71724e+06 26247 LT +1.71812e+06 26247 LT +1.71874e+06 25627 LT +CP BF QS +NP +1.71874e+06 20941 MT +1.71812e+06 20321 LT +1.70158e+06 20321 LT +1.70096e+06 20941 LT +1.70096e+06 21817 LT +1.70158e+06 22437 LT +1.71812e+06 22437 LT +1.71874e+06 21817 LT +CP BF QS +NP +1.73017e+06 28561 MT +1.72955e+06 27941 LT +1.72486e+06 27941 LT +1.72424e+06 28561 LT +1.72424e+06 29437 LT +1.72486e+06 30057 LT +1.72955e+06 30057 LT +1.73017e+06 29437 LT +CP BF QS +NP +1.73017e+06 24751 MT +1.72955e+06 24131 LT +1.72868e+06 24131 LT +1.72806e+06 24751 LT +1.72806e+06 29437 LT +1.72868e+06 30057 LT +1.72955e+06 30057 LT +1.73017e+06 29437 LT +CP BF QS +NP +1.73017e+06 24751 MT +1.72955e+06 24131 LT +1.72486e+06 24131 LT +1.72424e+06 24751 LT +1.72424e+06 25627 LT +1.72486e+06 26247 LT +1.72955e+06 26247 LT +1.73017e+06 25627 LT +CP BF QS +NP +1.72636e+06 24751 MT +1.72574e+06 24131 LT +1.72486e+06 24131 LT +1.72424e+06 24751 LT +1.72424e+06 29437 LT +1.72486e+06 30057 LT +1.72574e+06 30057 LT +1.72636e+06 29437 LT +CP BF QS +NP +1.73017e+06 17131 MT +1.72955e+06 16511 LT +1.72486e+06 16511 LT +1.72424e+06 17131 LT +1.72424e+06 18007 LT +1.72486e+06 18627 LT +1.72955e+06 18627 LT +1.73017e+06 18007 LT +CP BF QS +NP +1.73017e+06 12897 MT +1.72955e+06 12277 LT +1.72868e+06 12277 LT +1.72806e+06 12897 LT +1.72806e+06 18007 LT +1.72868e+06 18627 LT +1.72955e+06 18627 LT +1.73017e+06 18007 LT +CP BF QS +NP +1.73017e+06 12897 MT +1.72955e+06 12277 LT +1.72486e+06 12277 LT +1.72424e+06 12897 LT +1.72424e+06 13773 LT +1.72486e+06 14393 LT +1.72955e+06 14393 LT +1.73017e+06 13773 LT +CP BF QS +NP +1.72636e+06 12897 MT +1.72574e+06 12277 LT +1.72486e+06 12277 LT +1.72424e+06 12897 LT +1.72424e+06 18007 LT +1.72486e+06 18627 LT +1.72574e+06 18627 LT +1.72636e+06 18007 LT +CP BF QS +NP +1.75441e+06 28251 MT +1.7541e+06 27941 LT +1.75323e+06 27941 LT +1.75261e+06 28561 LT +1.75261e+06 29437 LT +1.76096e+06 37791 LT +1.76127e+06 38101 LT +1.76215e+06 38101 LT +1.76277e+06 37481 LT +1.76277e+06 36605 LT +CP BF QS +NP +1.76277e+06 12897 MT +1.76215e+06 12277 LT +1.76127e+06 12277 LT +1.76065e+06 12897 LT +1.76065e+06 37481 LT +1.76127e+06 38101 LT +1.76215e+06 38101 LT +1.76277e+06 37481 LT +CP BF QS +NP +1.77039e+06 12897 MT +1.76977e+06 12277 LT +1.75323e+06 12277 LT +1.75261e+06 12897 LT +1.75261e+06 13773 LT +1.75323e+06 14393 LT +1.76977e+06 14393 LT +1.77039e+06 13773 LT +CP BF QS +NP +1.77843e+06 17131 MT +1.77781e+06 16511 LT +1.77694e+06 16511 LT +1.77632e+06 17131 LT +1.77632e+06 33247 LT +1.77694e+06 33867 LT +1.77781e+06 33867 LT +1.77843e+06 33247 LT +CP BF QS +NP +1.77814e+06 32080 MT +1.77781e+06 31751 LT +1.77694e+06 31751 LT +1.77632e+06 32371 LT +1.77632e+06 33214 LT +1.78042e+06 37772 LT +1.78074e+06 38101 LT +1.78162e+06 38101 LT +1.78224e+06 37481 LT +1.78224e+06 36638 LT +CP BF QS +NP +1.78986e+06 36605 MT +1.78924e+06 35985 LT +1.78074e+06 35985 LT +1.78012e+06 36605 LT +1.78012e+06 37481 LT +1.78074e+06 38101 LT +1.78924e+06 38101 LT +1.78986e+06 37481 LT +CP BF QS +NP +1.79367e+06 32371 MT +1.79305e+06 31751 LT +1.79218e+06 31751 LT +1.79185e+06 32080 LT +1.78774e+06 36638 LT +1.78774e+06 37481 LT +1.78836e+06 38101 LT +1.78924e+06 38101 LT +1.78957e+06 37772 LT +1.79367e+06 33214 LT +CP BF QS +NP +1.79367e+06 17131 MT +1.79305e+06 16511 LT +1.79218e+06 16511 LT +1.79156e+06 17131 LT +1.79156e+06 33247 LT +1.79218e+06 33867 LT +1.79305e+06 33867 LT +1.79367e+06 33247 LT +CP BF QS +NP +1.78957e+06 12606 MT +1.78924e+06 12277 LT +1.78836e+06 12277 LT +1.78774e+06 12897 LT +1.78774e+06 13740 LT +1.79185e+06 18298 LT +1.79218e+06 18627 LT +1.79305e+06 18627 LT +1.79367e+06 18007 LT +1.79367e+06 17164 LT +CP BF QS +NP +1.78986e+06 12897 MT +1.78924e+06 12277 LT +1.78074e+06 12277 LT +1.78012e+06 12897 LT +1.78012e+06 13773 LT +1.78074e+06 14393 LT +1.78924e+06 14393 LT +1.78986e+06 13773 LT +CP BF QS +NP +1.78224e+06 12897 MT +1.78162e+06 12277 LT +1.78074e+06 12277 LT +1.78042e+06 12606 LT +1.77632e+06 17164 LT +1.77632e+06 18007 LT +1.77694e+06 18627 LT +1.77781e+06 18627 LT +1.77814e+06 18298 LT +1.78224e+06 13740 LT +CP BF QS +NP +1.79367e+06 32371 MT +1.77781e+06 16511 LT +1.77694e+06 16511 LT +1.77632e+06 17131 LT +1.77632e+06 18007 LT +1.79218e+06 33867 LT +1.79305e+06 33867 LT +1.79367e+06 33247 LT +CP BF QS +NP +1.80148e+06 12662 MT +1.80109e+06 12277 LT +1.80022e+06 12277 LT +1.7996e+06 12897 LT +1.7996e+06 13652 LT +1.8155e+06 37716 LT +1.81588e+06 38101 LT +1.81676e+06 38101 LT +1.81738e+06 37481 LT +1.81738e+06 36726 LT +CP BF QS +NP +1.84066e+06 12897 MT +1.84004e+06 12277 LT +1.8235e+06 12277 LT +1.82288e+06 12897 LT +1.82288e+06 13773 LT +1.8235e+06 14393 LT +1.84004e+06 14393 LT +1.84066e+06 13773 LT +CP BF QS +NP +1.82469e+06 12587 MT +1.82438e+06 12277 LT +1.8235e+06 12277 LT +1.82288e+06 12897 LT +1.82288e+06 13773 LT +1.83886e+06 29747 LT +1.83916e+06 30057 LT +1.84004e+06 30057 LT +1.84066e+06 29437 LT +1.84066e+06 28561 LT +CP BF QS +NP +1.84066e+06 28561 MT +1.84004e+06 27941 LT +1.83916e+06 27941 LT +1.83854e+06 28561 LT +1.83854e+06 33247 LT +1.83916e+06 33867 LT +1.84004e+06 33867 LT +1.84066e+06 33247 LT +CP BF QS +NP +1.84066e+06 32371 MT +1.84004e+06 31751 LT +1.83916e+06 31751 LT +1.83884e+06 32080 LT +1.83474e+06 36638 LT +1.83474e+06 37481 LT +1.83536e+06 38101 LT +1.83623e+06 38101 LT +1.83656e+06 37772 LT +1.84066e+06 33214 LT +CP BF QS +NP +1.83685e+06 36605 MT +1.83623e+06 35985 LT +1.82731e+06 35985 LT +1.82669e+06 36605 LT +1.82669e+06 37481 LT +1.82731e+06 38101 LT +1.83623e+06 38101 LT +1.83685e+06 37481 LT +CP BF QS +NP +1.82471e+06 32080 MT +1.82438e+06 31751 LT +1.8235e+06 31751 LT +1.82288e+06 32371 LT +1.82288e+06 33214 LT +1.82698e+06 37772 LT +1.82731e+06 38101 LT +1.82819e+06 38101 LT +1.82881e+06 37481 LT +1.82881e+06 36638 LT +CP BF QS +NP +1.84797e+06 32061 MT +1.84766e+06 31751 LT +1.84678e+06 31751 LT +1.84616e+06 32371 LT +1.84616e+06 33247 LT +1.85071e+06 37791 LT +1.85102e+06 38101 LT +1.85189e+06 38101 LT +1.85251e+06 37481 LT +1.85251e+06 36605 LT +CP BF QS +NP +1.86013e+06 36605 MT +1.85951e+06 35985 LT +1.85102e+06 35985 LT +1.8504e+06 36605 LT +1.8504e+06 37481 LT +1.85102e+06 38101 LT +1.85951e+06 38101 LT +1.86013e+06 37481 LT +CP BF QS +NP +1.86394e+06 32371 MT +1.86332e+06 31751 LT +1.86245e+06 31751 LT +1.86212e+06 32080 LT +1.85802e+06 36638 LT +1.85802e+06 37481 LT +1.85864e+06 38101 LT +1.85951e+06 38101 LT +1.85984e+06 37772 LT +1.86394e+06 33214 LT +CP BF QS +NP +1.86394e+06 28561 MT +1.86332e+06 27941 LT +1.86245e+06 27941 LT +1.86183e+06 28561 LT +1.86183e+06 33247 LT +1.86245e+06 33867 LT +1.86332e+06 33867 LT +1.86394e+06 33247 LT +CP BF QS +NP +1.86394e+06 28561 MT +1.85951e+06 24131 LT +1.85864e+06 24131 LT +1.85802e+06 24751 LT +1.85802e+06 25627 LT +1.86245e+06 30057 LT +1.86332e+06 30057 LT +1.86394e+06 29437 LT +CP BF QS +NP +1.86394e+06 20941 MT +1.86332e+06 20321 LT +1.86245e+06 20321 LT +1.85802e+06 24751 LT +1.85802e+06 25627 LT +1.85864e+06 26247 LT +1.85951e+06 26247 LT +1.86394e+06 21817 LT +CP BF QS +NP +1.86394e+06 17131 MT +1.86332e+06 16511 LT +1.86245e+06 16511 LT +1.86183e+06 17131 LT +1.86183e+06 21817 LT +1.86245e+06 22437 LT +1.86332e+06 22437 LT +1.86394e+06 21817 LT +CP BF QS +NP +1.85984e+06 12606 MT +1.85951e+06 12277 LT +1.85864e+06 12277 LT +1.85802e+06 12897 LT +1.85802e+06 13740 LT +1.86212e+06 18298 LT +1.86245e+06 18627 LT +1.86332e+06 18627 LT +1.86394e+06 18007 LT +1.86394e+06 17164 LT +CP BF QS +NP +1.86013e+06 12897 MT +1.85951e+06 12277 LT +1.85102e+06 12277 LT +1.8504e+06 12897 LT +1.8504e+06 13773 LT +1.85102e+06 14393 LT +1.85951e+06 14393 LT +1.86013e+06 13773 LT +CP BF QS +NP +1.85251e+06 12897 MT +1.85189e+06 12277 LT +1.85102e+06 12277 LT +1.85071e+06 12587 LT +1.84616e+06 17131 LT +1.84616e+06 18007 LT +1.84678e+06 18627 LT +1.84766e+06 18627 LT +1.84797e+06 18317 LT +1.85251e+06 13773 LT +CP BF QS +NP +1.84828e+06 17131 MT +1.84766e+06 16511 LT +1.84678e+06 16511 LT +1.84616e+06 17131 LT +1.84616e+06 21817 LT +1.84678e+06 22437 LT +1.84766e+06 22437 LT +1.84828e+06 21817 LT +CP BF QS +NP +1.85251e+06 24751 MT +1.85218e+06 24422 LT +1.84763e+06 20321 LT +1.84678e+06 20321 LT +1.84616e+06 20941 LT +1.84616e+06 21817 LT +1.84649e+06 22146 LT +1.85105e+06 26247 LT +1.85189e+06 26247 LT +1.85251e+06 25627 LT +CP BF QS +NP +1.85251e+06 24751 MT +1.85189e+06 24131 LT +1.85105e+06 24131 LT +1.84649e+06 28232 LT +1.84616e+06 28561 LT +1.84616e+06 29437 LT +1.84678e+06 30057 LT +1.84763e+06 30057 LT +1.85218e+06 25956 LT +1.85251e+06 25627 LT +CP BF QS +NP +1.84828e+06 28561 MT +1.84766e+06 27941 LT +1.84678e+06 27941 LT +1.84616e+06 28561 LT +1.84616e+06 33247 LT +1.84678e+06 33867 LT +1.84766e+06 33867 LT +1.84828e+06 33247 LT +CP BF QS +NP +1.86013e+06 24751 MT +1.85951e+06 24131 LT +1.85102e+06 24131 LT +1.8504e+06 24751 LT +1.8504e+06 25627 LT +1.85102e+06 26247 LT +1.85951e+06 26247 LT +1.86013e+06 25627 LT +CP BF QS +NP +1.87176e+06 12667 MT +1.87137e+06 12277 LT +1.87049e+06 12277 LT +1.86987e+06 12897 LT +1.86987e+06 13645 LT +1.88534e+06 37711 LT +1.88573e+06 38101 LT +1.88661e+06 38101 LT +1.88723e+06 37481 LT +1.88723e+06 36733 LT +CP BF QS +NP +1.91094e+06 12897 MT +1.91032e+06 12277 LT +1.89378e+06 12277 LT +1.89316e+06 12897 LT +1.89316e+06 13773 LT +1.89378e+06 14393 LT +1.91032e+06 14393 LT +1.91094e+06 13773 LT +CP BF QS +NP +1.91094e+06 28561 MT +1.89465e+06 12277 LT +1.89378e+06 12277 LT +1.89316e+06 12897 LT +1.89316e+06 13773 LT +1.90944e+06 30057 LT +1.91032e+06 30057 LT +1.91094e+06 29437 LT +CP BF QS +NP +1.91094e+06 28561 MT +1.91032e+06 27941 LT +1.90944e+06 27941 LT +1.90882e+06 28561 LT +1.90882e+06 33247 LT +1.90944e+06 33867 LT +1.91032e+06 33867 LT +1.91094e+06 33247 LT +CP BF QS +NP +1.91094e+06 32371 MT +1.91032e+06 31751 LT +1.90944e+06 31751 LT +1.90458e+06 36605 LT +1.90458e+06 37481 LT +1.9052e+06 38101 LT +1.90608e+06 38101 LT +1.91094e+06 33247 LT +CP BF QS +NP +1.9067e+06 36605 MT +1.90608e+06 35985 LT +1.89758e+06 35985 LT +1.89696e+06 36605 LT +1.89696e+06 37481 LT +1.89758e+06 38101 LT +1.90608e+06 38101 LT +1.9067e+06 37481 LT +CP BF QS +NP +1.89498e+06 32080 MT +1.89465e+06 31751 LT +1.89378e+06 31751 LT +1.89316e+06 32371 LT +1.89316e+06 33214 LT +1.89726e+06 37772 LT +1.89758e+06 38101 LT +1.89846e+06 38101 LT +1.89908e+06 37481 LT +1.89908e+06 36638 LT +CP BF QS +NP +1.91856e+06 17131 MT +1.91794e+06 16511 LT +1.91706e+06 16511 LT +1.91644e+06 17131 LT +1.91644e+06 33247 LT +1.91706e+06 33867 LT +1.91794e+06 33867 LT +1.91856e+06 33247 LT +CP BF QS +NP +1.91826e+06 32080 MT +1.91794e+06 31751 LT +1.91706e+06 31751 LT +1.91644e+06 32371 LT +1.91644e+06 33214 LT +1.92054e+06 37772 LT +1.92087e+06 38101 LT +1.92174e+06 38101 LT +1.92236e+06 37481 LT +1.92236e+06 36638 LT +CP BF QS +NP +1.93041e+06 36605 MT +1.92979e+06 35985 LT +1.92087e+06 35985 LT +1.92025e+06 36605 LT +1.92025e+06 37481 LT +1.92087e+06 38101 LT +1.92979e+06 38101 LT +1.93041e+06 37481 LT +CP BF QS +NP +1.93422e+06 32371 MT +1.9336e+06 31751 LT +1.93272e+06 31751 LT +1.93239e+06 32080 LT +1.92829e+06 36638 LT +1.92829e+06 37481 LT +1.92891e+06 38101 LT +1.92979e+06 38101 LT +1.93012e+06 37772 LT +1.93422e+06 33214 LT +CP BF QS +NP +1.93422e+06 17131 MT +1.9336e+06 16511 LT +1.93272e+06 16511 LT +1.9321e+06 17131 LT +1.9321e+06 33247 LT +1.93272e+06 33867 LT +1.9336e+06 33867 LT +1.93422e+06 33247 LT +CP BF QS +NP +1.93012e+06 12606 MT +1.92979e+06 12277 LT +1.92891e+06 12277 LT +1.92829e+06 12897 LT +1.92829e+06 13740 LT +1.93239e+06 18298 LT +1.93272e+06 18627 LT +1.9336e+06 18627 LT +1.93422e+06 18007 LT +1.93422e+06 17164 LT +CP BF QS +NP +1.93041e+06 12897 MT +1.92979e+06 12277 LT +1.92087e+06 12277 LT +1.92025e+06 12897 LT +1.92025e+06 13773 LT +1.92087e+06 14393 LT +1.92979e+06 14393 LT +1.93041e+06 13773 LT +CP BF QS +NP +1.92236e+06 12897 MT +1.92174e+06 12277 LT +1.92087e+06 12277 LT +1.92054e+06 12606 LT +1.91644e+06 17164 LT +1.91644e+06 18007 LT +1.91706e+06 18627 LT +1.91794e+06 18627 LT +1.91826e+06 18298 LT +1.92236e+06 13740 LT +CP BF QS +NP +1.93422e+06 32371 MT +1.9339e+06 32056 LT +1.91793e+06 16511 LT +1.91706e+06 16511 LT +1.91644e+06 17131 LT +1.91644e+06 18007 LT +1.91675e+06 18322 LT +1.93273e+06 33867 LT +1.9336e+06 33867 LT +1.93422e+06 33247 LT +CP BF QS +NP +1.94184e+06 17131 MT +1.94122e+06 16511 LT +1.94034e+06 16511 LT +1.93972e+06 17131 LT +1.93972e+06 33247 LT +1.94034e+06 33867 LT +1.94122e+06 33867 LT +1.94184e+06 33247 LT +CP BF QS +NP +1.94607e+06 36605 MT +1.94122e+06 31751 LT +1.94034e+06 31751 LT +1.93972e+06 32371 LT +1.93972e+06 33247 LT +1.94458e+06 38101 LT +1.94545e+06 38101 LT +1.94607e+06 37481 LT +CP BF QS +NP +1.95369e+06 36605 MT +1.95307e+06 35985 LT +1.94458e+06 35985 LT +1.94396e+06 36605 LT +1.94396e+06 37481 LT +1.94458e+06 38101 LT +1.95307e+06 38101 LT +1.95369e+06 37481 LT +CP BF QS +NP +1.9575e+06 32371 MT +1.95688e+06 31751 LT +1.95601e+06 31751 LT +1.95568e+06 32080 LT +1.95158e+06 36638 LT +1.95158e+06 37481 LT +1.9522e+06 38101 LT +1.95307e+06 38101 LT +1.9534e+06 37772 LT +1.9575e+06 33214 LT +CP BF QS +NP +1.9575e+06 17131 MT +1.95688e+06 16511 LT +1.95601e+06 16511 LT +1.95539e+06 17131 LT +1.95539e+06 33247 LT +1.95601e+06 33867 LT +1.95688e+06 33867 LT +1.9575e+06 33247 LT +CP BF QS +NP +1.9534e+06 12606 MT +1.95307e+06 12277 LT +1.9522e+06 12277 LT +1.95158e+06 12897 LT +1.95158e+06 13740 LT +1.95568e+06 18298 LT +1.95601e+06 18627 LT +1.95688e+06 18627 LT +1.9575e+06 18007 LT +1.9575e+06 17164 LT +CP BF QS +NP +1.95369e+06 12897 MT +1.95307e+06 12277 LT +1.94458e+06 12277 LT +1.94396e+06 12897 LT +1.94396e+06 13773 LT +1.94458e+06 14393 LT +1.95307e+06 14393 LT +1.95369e+06 13773 LT +CP BF QS +NP +1.94607e+06 12897 MT +1.94545e+06 12277 LT +1.94458e+06 12277 LT +1.93972e+06 17131 LT +1.93972e+06 18007 LT +1.94034e+06 18627 LT +1.94122e+06 18627 LT +1.94607e+06 13773 LT +CP BF QS +NP +1.9575e+06 32371 MT +1.95719e+06 32056 LT +1.94121e+06 16511 LT +1.94034e+06 16511 LT +1.93972e+06 17131 LT +1.93972e+06 18007 LT +1.94004e+06 18322 LT +1.95602e+06 33867 LT +1.95688e+06 33867 LT +1.9575e+06 33247 LT +CP BF QS +NP +1.98078e+06 36605 MT +1.98037e+06 36191 LT +1.97238e+06 31751 LT +1.97167e+06 31751 LT +1.97105e+06 32371 LT +1.97105e+06 33247 LT +1.97146e+06 33661 LT +1.97945e+06 38101 LT +1.98016e+06 38101 LT +1.98078e+06 37481 LT +CP BF QS +NP +1.97316e+06 32371 MT +1.96492e+06 24131 LT +1.96405e+06 24131 LT +1.96343e+06 24751 LT +1.96343e+06 25627 LT +1.97167e+06 33867 LT +1.97254e+06 33867 LT +1.97316e+06 33247 LT +CP BF QS +NP +1.96554e+06 17131 MT +1.96492e+06 16511 LT +1.96405e+06 16511 LT +1.96343e+06 17131 LT +1.96343e+06 25627 LT +1.96405e+06 26247 LT +1.96492e+06 26247 LT +1.96554e+06 25627 LT +CP BF QS +NP +1.96936e+06 12897 MT +1.96874e+06 12277 LT +1.96786e+06 12277 LT +1.96753e+06 12606 LT +1.96343e+06 17164 LT +1.96343e+06 18007 LT +1.96405e+06 18627 LT +1.96492e+06 18627 LT +1.96525e+06 18298 LT +1.96936e+06 13740 LT +CP BF QS +NP +1.97698e+06 12897 MT +1.97636e+06 12277 LT +1.96786e+06 12277 LT +1.96724e+06 12897 LT +1.96724e+06 13773 LT +1.96786e+06 14393 LT +1.97636e+06 14393 LT +1.97698e+06 13773 LT +CP BF QS +NP +1.97668e+06 12606 MT +1.97636e+06 12277 LT +1.97548e+06 12277 LT +1.97486e+06 12897 LT +1.97486e+06 13740 LT +1.97896e+06 18298 LT +1.97929e+06 18627 LT +1.98016e+06 18627 LT +1.98078e+06 18007 LT +1.98078e+06 17164 LT +CP BF QS +NP +1.98078e+06 17131 MT +1.98016e+06 16511 LT +1.97929e+06 16511 LT +1.97867e+06 17131 LT +1.97867e+06 21817 LT +1.97929e+06 22437 LT +1.98016e+06 22437 LT +1.98078e+06 21817 LT +CP BF QS +NP +1.98078e+06 20941 MT +1.98016e+06 20321 LT +1.97929e+06 20321 LT +1.97486e+06 24751 LT +1.97486e+06 25627 LT +1.97548e+06 26247 LT +1.97636e+06 26247 LT +1.98078e+06 21817 LT +CP BF QS +NP +1.97698e+06 24751 MT +1.97636e+06 24131 LT +1.96405e+06 24131 LT +1.96343e+06 24751 LT +1.96343e+06 25627 LT +1.96405e+06 26247 LT +1.97636e+06 26247 LT +1.97698e+06 25627 LT +CP BF QS +NP +2.01181e+06 28261 MT +2.01149e+06 27941 LT +2.01062e+06 27941 LT +2.01e+06 28561 LT +2.01e+06 29420 LT +2.01792e+06 37781 LT +2.01824e+06 38101 LT +2.01911e+06 38101 LT +2.01973e+06 37481 LT +2.01973e+06 36622 LT +CP BF QS +NP +2.01973e+06 12897 MT +2.01911e+06 12277 LT +2.01824e+06 12277 LT +2.01762e+06 12897 LT +2.01762e+06 37481 LT +2.01824e+06 38101 LT +2.01911e+06 38101 LT +2.01973e+06 37481 LT +CP BF QS +NP +2.02778e+06 12897 MT +2.02716e+06 12277 LT +2.01062e+06 12277 LT +2.01e+06 12897 LT +2.01e+06 13773 LT +2.01062e+06 14393 LT +2.02716e+06 14393 LT +2.02778e+06 13773 LT +CP BF QS +NP +2.04725e+06 12897 MT +2.04663e+06 12277 LT +2.04575e+06 12277 LT +2.04513e+06 12897 LT +2.04513e+06 37481 LT +2.04575e+06 38101 LT +2.04663e+06 38101 LT +2.04725e+06 37481 LT +CP BF QS +NP +2.04725e+06 36605 MT +2.03478e+06 24131 LT +2.0339e+06 24131 LT +2.03328e+06 24751 LT +2.03328e+06 25627 LT +2.04575e+06 38101 LT +2.04663e+06 38101 LT +2.04725e+06 37481 LT +CP BF QS +NP +2.05106e+06 24751 MT +2.05044e+06 24131 LT +2.0339e+06 24131 LT +2.03328e+06 24751 LT +2.03328e+06 25627 LT +2.0339e+06 26247 LT +2.05044e+06 26247 LT +2.05106e+06 25627 LT +CP BF QS +NP +2.06291e+06 28561 MT +2.06229e+06 27941 LT +2.05761e+06 27941 LT +2.05699e+06 28561 LT +2.05699e+06 29437 LT +2.05761e+06 30057 LT +2.06229e+06 30057 LT +2.06291e+06 29437 LT +CP BF QS +NP +2.06291e+06 24751 MT +2.06229e+06 24131 LT +2.06142e+06 24131 LT +2.0608e+06 24751 LT +2.0608e+06 29437 LT +2.06142e+06 30057 LT +2.06229e+06 30057 LT +2.06291e+06 29437 LT +CP BF QS +NP +2.06291e+06 24751 MT +2.06229e+06 24131 LT +2.05761e+06 24131 LT +2.05699e+06 24751 LT +2.05699e+06 25627 LT +2.05761e+06 26247 LT +2.06229e+06 26247 LT +2.06291e+06 25627 LT +CP BF QS +NP +2.0591e+06 24751 MT +2.05848e+06 24131 LT +2.05761e+06 24131 LT +2.05699e+06 24751 LT +2.05699e+06 29437 LT +2.05761e+06 30057 LT +2.05848e+06 30057 LT +2.0591e+06 29437 LT +CP BF QS +NP +2.06291e+06 17131 MT +2.06229e+06 16511 LT +2.05761e+06 16511 LT +2.05699e+06 17131 LT +2.05699e+06 18007 LT +2.05761e+06 18627 LT +2.06229e+06 18627 LT +2.06291e+06 18007 LT +CP BF QS +NP +2.06291e+06 12897 MT +2.06229e+06 12277 LT +2.06142e+06 12277 LT +2.0608e+06 12897 LT +2.0608e+06 18007 LT +2.06142e+06 18627 LT +2.06229e+06 18627 LT +2.06291e+06 18007 LT +CP BF QS +NP +2.06291e+06 12897 MT +2.06229e+06 12277 LT +2.05761e+06 12277 LT +2.05699e+06 12897 LT +2.05699e+06 13773 LT +2.05761e+06 14393 LT +2.06229e+06 14393 LT +2.06291e+06 13773 LT +CP BF QS +NP +2.0591e+06 12897 MT +2.05848e+06 12277 LT +2.05761e+06 12277 LT +2.05699e+06 12897 LT +2.05699e+06 18007 LT +2.05761e+06 18627 LT +2.05848e+06 18627 LT +2.0591e+06 18007 LT +CP BF QS +NP +2.07053e+06 17131 MT +2.06991e+06 16511 LT +2.06904e+06 16511 LT +2.06842e+06 17131 LT +2.06842e+06 33247 LT +2.06904e+06 33867 LT +2.06991e+06 33867 LT +2.07053e+06 33247 LT +CP BF QS +NP +2.07024e+06 32080 MT +2.06991e+06 31751 LT +2.06904e+06 31751 LT +2.06842e+06 32371 LT +2.06842e+06 33214 LT +2.07252e+06 37772 LT +2.07285e+06 38101 LT +2.07372e+06 38101 LT +2.07434e+06 37481 LT +2.07434e+06 36638 LT +CP BF QS +NP +2.08238e+06 36605 MT +2.08176e+06 35985 LT +2.07285e+06 35985 LT +2.07223e+06 36605 LT +2.07223e+06 37481 LT +2.07285e+06 38101 LT +2.08176e+06 38101 LT +2.08238e+06 37481 LT +CP BF QS +NP +2.0862e+06 32371 MT +2.08558e+06 31751 LT +2.0847e+06 31751 LT +2.08437e+06 32080 LT +2.08027e+06 36638 LT +2.08027e+06 37481 LT +2.08089e+06 38101 LT +2.08176e+06 38101 LT +2.08209e+06 37772 LT +2.0862e+06 33214 LT +CP BF QS +NP +2.0862e+06 17131 MT +2.08558e+06 16511 LT +2.0847e+06 16511 LT +2.08408e+06 17131 LT +2.08408e+06 33247 LT +2.0847e+06 33867 LT +2.08558e+06 33867 LT +2.0862e+06 33247 LT +CP BF QS +NP +2.08209e+06 12606 MT +2.08176e+06 12277 LT +2.08089e+06 12277 LT +2.08027e+06 12897 LT +2.08027e+06 13740 LT +2.08437e+06 18298 LT +2.0847e+06 18627 LT +2.08558e+06 18627 LT +2.0862e+06 18007 LT +2.0862e+06 17164 LT +CP BF QS +NP +2.08238e+06 12897 MT +2.08176e+06 12277 LT +2.07285e+06 12277 LT +2.07223e+06 12897 LT +2.07223e+06 13773 LT +2.07285e+06 14393 LT +2.08176e+06 14393 LT +2.08238e+06 13773 LT +CP BF QS +NP +2.07434e+06 12897 MT +2.07372e+06 12277 LT +2.07285e+06 12277 LT +2.07252e+06 12606 LT +2.06842e+06 17164 LT +2.06842e+06 18007 LT +2.06904e+06 18627 LT +2.06991e+06 18627 LT +2.07024e+06 18298 LT +2.07434e+06 13740 LT +CP BF QS +NP +2.0862e+06 32371 MT +2.08588e+06 32056 LT +2.0699e+06 16511 LT +2.06904e+06 16511 LT +2.06842e+06 17131 LT +2.06842e+06 18007 LT +2.06873e+06 18322 LT +2.08471e+06 33867 LT +2.08558e+06 33867 LT +2.0862e+06 33247 LT +CP BF QS +NP +2.09805e+06 36605 MT +2.0932e+06 31751 LT +2.09232e+06 31751 LT +2.0917e+06 32371 LT +2.0917e+06 33247 LT +2.09655e+06 38101 LT +2.09743e+06 38101 LT +2.09805e+06 37481 LT +CP BF QS +NP +2.10567e+06 36605 MT +2.10505e+06 35985 LT +2.09655e+06 35985 LT +2.09593e+06 36605 LT +2.09593e+06 37481 LT +2.09655e+06 38101 LT +2.10505e+06 38101 LT +2.10567e+06 37481 LT +CP BF QS +NP +2.10948e+06 32371 MT +2.10886e+06 31751 LT +2.10798e+06 31751 LT +2.10765e+06 32080 LT +2.10355e+06 36638 LT +2.10355e+06 37481 LT +2.10417e+06 38101 LT +2.10505e+06 38101 LT +2.10538e+06 37772 LT +2.10948e+06 33214 LT +CP BF QS +NP +2.10948e+06 28561 MT +2.10886e+06 27941 LT +2.10798e+06 27941 LT +2.10736e+06 28561 LT +2.10736e+06 33247 LT +2.10798e+06 33867 LT +2.10886e+06 33867 LT +2.10948e+06 33247 LT +CP BF QS +NP +2.10948e+06 28561 MT +2.10505e+06 24131 LT +2.10417e+06 24131 LT +2.10355e+06 24751 LT +2.10355e+06 25627 LT +2.10798e+06 30057 LT +2.10886e+06 30057 LT +2.10948e+06 29437 LT +CP BF QS +NP +2.10567e+06 24751 MT +2.10505e+06 24131 LT +2.10036e+06 24131 LT +2.09974e+06 24751 LT +2.09974e+06 25627 LT +2.10036e+06 26247 LT +2.10505e+06 26247 LT +2.10567e+06 25627 LT +CP BF QS +NP +2.10948e+06 20941 MT +2.10886e+06 20321 LT +2.10798e+06 20321 LT +2.10355e+06 24751 LT +2.10355e+06 25627 LT +2.10417e+06 26247 LT +2.10505e+06 26247 LT +2.10948e+06 21817 LT +CP BF QS +NP +2.10948e+06 17131 MT +2.10886e+06 16511 LT +2.10798e+06 16511 LT +2.10736e+06 17131 LT +2.10736e+06 21817 LT +2.10798e+06 22437 LT +2.10886e+06 22437 LT +2.10948e+06 21817 LT +CP BF QS +NP +2.10538e+06 12606 MT +2.10505e+06 12277 LT +2.10417e+06 12277 LT +2.10355e+06 12897 LT +2.10355e+06 13740 LT +2.10765e+06 18298 LT +2.10798e+06 18627 LT +2.10886e+06 18627 LT +2.10948e+06 18007 LT +2.10948e+06 17164 LT +CP BF QS +NP +2.10567e+06 12897 MT +2.10505e+06 12277 LT +2.09655e+06 12277 LT +2.09593e+06 12897 LT +2.09593e+06 13773 LT +2.09655e+06 14393 LT +2.10505e+06 14393 LT +2.10567e+06 13773 LT +CP BF QS +NP +2.09805e+06 12897 MT +2.09743e+06 12277 LT +2.09655e+06 12277 LT +2.0917e+06 17131 LT +2.0917e+06 18007 LT +2.09232e+06 18627 LT +2.0932e+06 18627 LT +2.09805e+06 13773 LT +CP BF QS +NP +2.12133e+06 28561 MT +2.12071e+06 27941 LT +2.11603e+06 27941 LT +2.11541e+06 28561 LT +2.11541e+06 29437 LT +2.11603e+06 30057 LT +2.12071e+06 30057 LT +2.12133e+06 29437 LT +CP BF QS +NP +2.12133e+06 24751 MT +2.12071e+06 24131 LT +2.11984e+06 24131 LT +2.11922e+06 24751 LT +2.11922e+06 29437 LT +2.11984e+06 30057 LT +2.12071e+06 30057 LT +2.12133e+06 29437 LT +CP BF QS +NP +2.12133e+06 24751 MT +2.12071e+06 24131 LT +2.11603e+06 24131 LT +2.11541e+06 24751 LT +2.11541e+06 25627 LT +2.11603e+06 26247 LT +2.12071e+06 26247 LT +2.12133e+06 25627 LT +CP BF QS +NP +2.11752e+06 24751 MT +2.1169e+06 24131 LT +2.11603e+06 24131 LT +2.11541e+06 24751 LT +2.11541e+06 29437 LT +2.11603e+06 30057 LT +2.1169e+06 30057 LT +2.11752e+06 29437 LT +CP BF QS +NP +2.12133e+06 17131 MT +2.12071e+06 16511 LT +2.11603e+06 16511 LT +2.11541e+06 17131 LT +2.11541e+06 18007 LT +2.11603e+06 18627 LT +2.12071e+06 18627 LT +2.12133e+06 18007 LT +CP BF QS +NP +2.12133e+06 12897 MT +2.12071e+06 12277 LT +2.11984e+06 12277 LT +2.11922e+06 12897 LT +2.11922e+06 18007 LT +2.11984e+06 18627 LT +2.12071e+06 18627 LT +2.12133e+06 18007 LT +CP BF QS +NP +2.12133e+06 12897 MT +2.12071e+06 12277 LT +2.11603e+06 12277 LT +2.11541e+06 12897 LT +2.11541e+06 13773 LT +2.11603e+06 14393 LT +2.12071e+06 14393 LT +2.12133e+06 13773 LT +CP BF QS +NP +2.11752e+06 12897 MT +2.1169e+06 12277 LT +2.11603e+06 12277 LT +2.11541e+06 12897 LT +2.11541e+06 18007 LT +2.11603e+06 18627 LT +2.1169e+06 18627 LT +2.11752e+06 18007 LT +CP BF QS +NP +2.14081e+06 12897 MT +2.14019e+06 12277 LT +2.13931e+06 12277 LT +2.13869e+06 12897 LT +2.13869e+06 37481 LT +2.13931e+06 38101 LT +2.14019e+06 38101 LT +2.14081e+06 37481 LT +CP BF QS +NP +2.14081e+06 36605 MT +2.12833e+06 24131 LT +2.12746e+06 24131 LT +2.12684e+06 24751 LT +2.12684e+06 25627 LT +2.13931e+06 38101 LT +2.14019e+06 38101 LT +2.14081e+06 37481 LT +CP BF QS +NP +2.14462e+06 24751 MT +2.144e+06 24131 LT +2.12746e+06 24131 LT +2.12684e+06 24751 LT +2.12684e+06 25627 LT +2.12746e+06 26247 LT +2.144e+06 26247 LT +2.14462e+06 25627 LT +CP BF QS +NP +2.1679e+06 36605 MT +2.16728e+06 35985 LT +2.15116e+06 35985 LT +2.15054e+06 36605 LT +2.15054e+06 37481 LT +2.15116e+06 38101 LT +2.16728e+06 38101 LT +2.1679e+06 37481 LT +CP BF QS +NP +2.1679e+06 32371 MT +2.16728e+06 31751 LT +2.1664e+06 31751 LT +2.16578e+06 32371 LT +2.16578e+06 37481 LT +2.1664e+06 38101 LT +2.16728e+06 38101 LT +2.1679e+06 37481 LT +CP BF QS +NP +2.1679e+06 32371 MT +2.15204e+06 16511 LT +2.15116e+06 16511 LT +2.15054e+06 17131 LT +2.15054e+06 18007 LT +2.1664e+06 33867 LT +2.16728e+06 33867 LT +2.1679e+06 33247 LT +CP BF QS +NP +2.15266e+06 12897 MT +2.15204e+06 12277 LT +2.15116e+06 12277 LT +2.15054e+06 12897 LT +2.15054e+06 18007 LT +2.15116e+06 18627 LT +2.15204e+06 18627 LT +2.15266e+06 18007 LT +CP BF QS +NP +2.33808e+06 50276 MT +2.33734e+06 49532 LT +1.62508e+06 49532 LT +1.62434e+06 50276 LT +1.62434e+06 51328 LT +1.62508e+06 52072 LT +2.33734e+06 52072 LT +2.33808e+06 51328 LT +CP BF QS +NP +1.62688e+06 50276 MT +1.62613e+06 49532 LT +1.62508e+06 49532 LT +1.62434e+06 50276 LT +1.62434e+06 152931 LT +1.62508e+06 153675 LT +1.62613e+06 153675 LT +1.62688e+06 152931 LT +CP BF QS +NP +2.64288e+06 50276 MT +2.64214e+06 49532 LT +2.64109e+06 49532 LT +2.64034e+06 50276 LT +2.64034e+06 152931 LT +2.64109e+06 153675 LT +2.64214e+06 153675 LT +2.64288e+06 152931 LT +CP BF QS +NP +2.33808e+06 -526 MT +2.33734e+06 -1270 LT +2.33628e+06 -1270 LT +2.33554e+06 -526 LT +2.33554e+06 51328 LT +2.33628e+06 52072 LT +2.33734e+06 52072 LT +2.33808e+06 51328 LT +CP BF QS +NP +2.50318e+06 50276 MT +2.50244e+06 49532 LT +2.33628e+06 49532 LT +2.33554e+06 50276 LT +2.33554e+06 51328 LT +2.33628e+06 52072 LT +2.50244e+06 52072 LT +2.50318e+06 51328 LT +CP BF QS +NP +2.64288e+06 -526 MT +2.64214e+06 -1270 LT +2.33628e+06 -1270 LT +2.33554e+06 -526 LT +2.33554e+06 526 LT +2.33628e+06 1270 LT +2.64214e+06 1270 LT +2.64288e+06 526 LT +CP BF QS +NP +2.36729e+06 32371 MT +2.36667e+06 31751 LT +2.36579e+06 31751 LT +2.36546e+06 32080 LT +2.36136e+06 36638 LT +2.36136e+06 37481 LT +2.36198e+06 38101 LT +2.36286e+06 38101 LT +2.36319e+06 37772 LT +2.36729e+06 33214 LT +CP BF QS +NP +2.36348e+06 36605 MT +2.36286e+06 35985 LT +2.35436e+06 35985 LT +2.35374e+06 36605 LT +2.35374e+06 37481 LT +2.35436e+06 38101 LT +2.36286e+06 38101 LT +2.36348e+06 37481 LT +CP BF QS +NP +2.35132e+06 32061 MT +2.35101e+06 31751 LT +2.35013e+06 31751 LT +2.34951e+06 32371 LT +2.34951e+06 33247 LT +2.35405e+06 37791 LT +2.35436e+06 38101 LT +2.35524e+06 38101 LT +2.35586e+06 37481 LT +2.35586e+06 36605 LT +CP BF QS +NP +2.35163e+06 28561 MT +2.35101e+06 27941 LT +2.35013e+06 27941 LT +2.34951e+06 28561 LT +2.34951e+06 33247 LT +2.35013e+06 33867 LT +2.35101e+06 33867 LT +2.35163e+06 33247 LT +CP BF QS +NP +2.35586e+06 24751 MT +2.35524e+06 24131 LT +2.3544e+06 24131 LT +2.34984e+06 28232 LT +2.34951e+06 28561 LT +2.34951e+06 29437 LT +2.35013e+06 30057 LT +2.35098e+06 30057 LT +2.35553e+06 25956 LT +2.35586e+06 25627 LT +CP BF QS +NP +2.36348e+06 24751 MT +2.36286e+06 24131 LT +2.35436e+06 24131 LT +2.35374e+06 24751 LT +2.35374e+06 25627 LT +2.35436e+06 26247 LT +2.36286e+06 26247 LT +2.36348e+06 25627 LT +CP BF QS +NP +2.36729e+06 20941 MT +2.36667e+06 20321 LT +2.36579e+06 20321 LT +2.36136e+06 24751 LT +2.36136e+06 25627 LT +2.36198e+06 26247 LT +2.36286e+06 26247 LT +2.36729e+06 21817 LT +CP BF QS +NP +2.36729e+06 17131 MT +2.36667e+06 16511 LT +2.36579e+06 16511 LT +2.36517e+06 17131 LT +2.36517e+06 21817 LT +2.36579e+06 22437 LT +2.36667e+06 22437 LT +2.36729e+06 21817 LT +CP BF QS +NP +2.36319e+06 12606 MT +2.36286e+06 12277 LT +2.36198e+06 12277 LT +2.36136e+06 12897 LT +2.36136e+06 13740 LT +2.36546e+06 18298 LT +2.36579e+06 18627 LT +2.36667e+06 18627 LT +2.36729e+06 18007 LT +2.36729e+06 17164 LT +CP BF QS +NP +2.36348e+06 12897 MT +2.36286e+06 12277 LT +2.35436e+06 12277 LT +2.35374e+06 12897 LT +2.35374e+06 13773 LT +2.35436e+06 14393 LT +2.36286e+06 14393 LT +2.36348e+06 13773 LT +CP BF QS +NP +2.35586e+06 12897 MT +2.35524e+06 12277 LT +2.35436e+06 12277 LT +2.35405e+06 12587 LT +2.34951e+06 17131 LT +2.34951e+06 18007 LT +2.35013e+06 18627 LT +2.35101e+06 18627 LT +2.35132e+06 18317 LT +2.35586e+06 13773 LT +CP BF QS +NP +2.37533e+06 12897 MT +2.37471e+06 12277 LT +2.37384e+06 12277 LT +2.37322e+06 12897 LT +2.37322e+06 37481 LT +2.37384e+06 38101 LT +2.37471e+06 38101 LT +2.37533e+06 37481 LT +CP BF QS +NP +2.37914e+06 28561 MT +2.37471e+06 24131 LT +2.37384e+06 24131 LT +2.37322e+06 24751 LT +2.37322e+06 25627 LT +2.37765e+06 30057 LT +2.37852e+06 30057 LT +2.37914e+06 29437 LT +CP BF QS +NP +2.38676e+06 28561 MT +2.38614e+06 27941 LT +2.37765e+06 27941 LT +2.37703e+06 28561 LT +2.37703e+06 29437 LT +2.37765e+06 30057 LT +2.38614e+06 30057 LT +2.38676e+06 29437 LT +CP BF QS +NP +2.39057e+06 24751 MT +2.38995e+06 24131 LT +2.38908e+06 24131 LT +2.38465e+06 28561 LT +2.38465e+06 29437 LT +2.38527e+06 30057 LT +2.38614e+06 30057 LT +2.39057e+06 25627 LT +CP BF QS +NP +2.39057e+06 12897 MT +2.38995e+06 12277 LT +2.38908e+06 12277 LT +2.38846e+06 12897 LT +2.38846e+06 25627 LT +2.38908e+06 26247 LT +2.38995e+06 26247 LT +2.39057e+06 25627 LT +CP BF QS +NP +2.41005e+06 12897 MT +2.40943e+06 12277 LT +2.40093e+06 12277 LT +2.40031e+06 12897 LT +2.40031e+06 13773 LT +2.40093e+06 14393 LT +2.40943e+06 14393 LT +2.41005e+06 13773 LT +CP BF QS +NP +2.40243e+06 12897 MT +2.40181e+06 12277 LT +2.40093e+06 12277 LT +2.4006e+06 12606 LT +2.3965e+06 17164 LT +2.3965e+06 18007 LT +2.39712e+06 18627 LT +2.398e+06 18627 LT +2.39833e+06 18298 LT +2.40243e+06 13740 LT +CP BF QS +NP +2.39862e+06 17131 MT +2.398e+06 16511 LT +2.39712e+06 16511 LT +2.3965e+06 17131 LT +2.3965e+06 25627 LT +2.39712e+06 26247 LT +2.398e+06 26247 LT +2.39862e+06 25627 LT +CP BF QS +NP +2.40243e+06 28561 MT +2.398e+06 24131 LT +2.39712e+06 24131 LT +2.3965e+06 24751 LT +2.3965e+06 25627 LT +2.40093e+06 30057 LT +2.40181e+06 30057 LT +2.40243e+06 29437 LT +CP BF QS +NP +2.41005e+06 28561 MT +2.40943e+06 27941 LT +2.40093e+06 27941 LT +2.40031e+06 28561 LT +2.40031e+06 29437 LT +2.40093e+06 30057 LT +2.40943e+06 30057 LT +2.41005e+06 29437 LT +CP BF QS +NP +2.41428e+06 24751 MT +2.41366e+06 24131 LT +2.41282e+06 24131 LT +2.40826e+06 28232 LT +2.40793e+06 28561 LT +2.40793e+06 29437 LT +2.40855e+06 30057 LT +2.4094e+06 30057 LT +2.41395e+06 25956 LT +2.41428e+06 25627 LT +CP BF QS +NP +2.41428e+06 20941 MT +2.41366e+06 20321 LT +2.41278e+06 20321 LT +2.41216e+06 20941 LT +2.41216e+06 25627 LT +2.41278e+06 26247 LT +2.41366e+06 26247 LT +2.41428e+06 25627 LT +CP BF QS +NP +2.41428e+06 20941 MT +2.41366e+06 20321 LT +2.39712e+06 20321 LT +2.3965e+06 20941 LT +2.3965e+06 21817 LT +2.39712e+06 22437 LT +2.41366e+06 22437 LT +2.41428e+06 21817 LT +CP BF QS +NP +2.43375e+06 12897 MT +2.43313e+06 12277 LT +2.42421e+06 12277 LT +2.42359e+06 12897 LT +2.42359e+06 13773 LT +2.42421e+06 14393 LT +2.43313e+06 14393 LT +2.43375e+06 13773 LT +CP BF QS +NP +2.42571e+06 12897 MT +2.42509e+06 12277 LT +2.42421e+06 12277 LT +2.42388e+06 12606 LT +2.41978e+06 17164 LT +2.41978e+06 18007 LT +2.4204e+06 18627 LT +2.42128e+06 18627 LT +2.42161e+06 18298 LT +2.42571e+06 13740 LT +CP BF QS +NP +2.4219e+06 17131 MT +2.42128e+06 16511 LT +2.4204e+06 16511 LT +2.41978e+06 17131 LT +2.41978e+06 25627 LT +2.4204e+06 26247 LT +2.42128e+06 26247 LT +2.4219e+06 25627 LT +CP BF QS +NP +2.42571e+06 28561 MT +2.42128e+06 24131 LT +2.4204e+06 24131 LT +2.41978e+06 24751 LT +2.41978e+06 25627 LT +2.42421e+06 30057 LT +2.42509e+06 30057 LT +2.42571e+06 29437 LT +CP BF QS +NP +2.43375e+06 28561 MT +2.43313e+06 27941 LT +2.42421e+06 27941 LT +2.42359e+06 28561 LT +2.42359e+06 29437 LT +2.42421e+06 30057 LT +2.43313e+06 30057 LT +2.43375e+06 29437 LT +CP BF QS +NP +2.43756e+06 24751 MT +2.43694e+06 24131 LT +2.43607e+06 24131 LT +2.43164e+06 28561 LT +2.43164e+06 29437 LT +2.43226e+06 30057 LT +2.43313e+06 30057 LT +2.43756e+06 25627 LT +CP BF QS +NP +2.43756e+06 20941 MT +2.43694e+06 20321 LT +2.43607e+06 20321 LT +2.43545e+06 20941 LT +2.43545e+06 25627 LT +2.43607e+06 26247 LT +2.43694e+06 26247 LT +2.43756e+06 25627 LT +CP BF QS +NP +2.43756e+06 20941 MT +2.43694e+06 20321 LT +2.4204e+06 20321 LT +2.41978e+06 20941 LT +2.41978e+06 21817 LT +2.4204e+06 22437 LT +2.43694e+06 22437 LT +2.43756e+06 21817 LT +CP BF QS +NP +2.44942e+06 17131 MT +2.4488e+06 16511 LT +2.44792e+06 16511 LT +2.4473e+06 17131 LT +2.4473e+06 33247 LT +2.44792e+06 33867 LT +2.4488e+06 33867 LT +2.44942e+06 33247 LT +CP BF QS +NP +2.45323e+06 12897 MT +2.45261e+06 12277 LT +2.45173e+06 12277 LT +2.4514e+06 12606 LT +2.4473e+06 17164 LT +2.4473e+06 18007 LT +2.44792e+06 18627 LT +2.4488e+06 18627 LT +2.44913e+06 18298 LT +2.45323e+06 13740 LT +CP BF QS +NP +2.45323e+06 28561 MT +2.45261e+06 27941 LT +2.44369e+06 27941 LT +2.44307e+06 28561 LT +2.44307e+06 29437 LT +2.44369e+06 30057 LT +2.45261e+06 30057 LT +2.45323e+06 29437 LT +CP BF QS +NP +2.46466e+06 28561 MT +2.46404e+06 27941 LT +2.45935e+06 27941 LT +2.45873e+06 28561 LT +2.45873e+06 29437 LT +2.45935e+06 30057 LT +2.46404e+06 30057 LT +2.46466e+06 29437 LT +CP BF QS +NP +2.46466e+06 24751 MT +2.46404e+06 24131 LT +2.46316e+06 24131 LT +2.46254e+06 24751 LT +2.46254e+06 29437 LT +2.46316e+06 30057 LT +2.46404e+06 30057 LT +2.46466e+06 29437 LT +CP BF QS +NP +2.46466e+06 24751 MT +2.46404e+06 24131 LT +2.45935e+06 24131 LT +2.45873e+06 24751 LT +2.45873e+06 25627 LT +2.45935e+06 26247 LT +2.46404e+06 26247 LT +2.46466e+06 25627 LT +CP BF QS +NP +2.46085e+06 24751 MT +2.46023e+06 24131 LT +2.45935e+06 24131 LT +2.45873e+06 24751 LT +2.45873e+06 29437 LT +2.45935e+06 30057 LT +2.46023e+06 30057 LT +2.46085e+06 29437 LT +CP BF QS +NP +2.46466e+06 17131 MT +2.46404e+06 16511 LT +2.45935e+06 16511 LT +2.45873e+06 17131 LT +2.45873e+06 18007 LT +2.45935e+06 18627 LT +2.46404e+06 18627 LT +2.46466e+06 18007 LT +CP BF QS +NP +2.46466e+06 12897 MT +2.46404e+06 12277 LT +2.46316e+06 12277 LT +2.46254e+06 12897 LT +2.46254e+06 18007 LT +2.46316e+06 18627 LT +2.46404e+06 18627 LT +2.46466e+06 18007 LT +CP BF QS +NP +2.46466e+06 12897 MT +2.46404e+06 12277 LT +2.45935e+06 12277 LT +2.45873e+06 12897 LT +2.45873e+06 13773 LT +2.45935e+06 14393 LT +2.46404e+06 14393 LT +2.46466e+06 13773 LT +CP BF QS +NP +2.46085e+06 12897 MT +2.46023e+06 12277 LT +2.45935e+06 12277 LT +2.45873e+06 12897 LT +2.45873e+06 18007 LT +2.45935e+06 18627 LT +2.46023e+06 18627 LT +2.46085e+06 18007 LT +CP BF QS +NP +2.49937e+06 36605 MT +2.49071e+06 27941 LT +2.48983e+06 27941 LT +2.48921e+06 28561 LT +2.48921e+06 29437 LT +2.49788e+06 38101 LT +2.49875e+06 38101 LT +2.49937e+06 37481 LT +CP BF QS +NP +2.49937e+06 12897 MT +2.49875e+06 12277 LT +2.49788e+06 12277 LT +2.49726e+06 12897 LT +2.49726e+06 37481 LT +2.49788e+06 38101 LT +2.49875e+06 38101 LT +2.49937e+06 37481 LT +CP BF QS +NP +2.50699e+06 12897 MT +2.50637e+06 12277 LT +2.48983e+06 12277 LT +2.48921e+06 12897 LT +2.48921e+06 13773 LT +2.48983e+06 14393 LT +2.50637e+06 14393 LT +2.50699e+06 13773 LT +CP BF QS +NP +2.5148e+06 12667 MT +2.51441e+06 12277 LT +2.51354e+06 12277 LT +2.51292e+06 12897 LT +2.51292e+06 13645 LT +2.52839e+06 37711 LT +2.52878e+06 38101 LT +2.52965e+06 38101 LT +2.53027e+06 37481 LT +2.53027e+06 36733 LT +CP BF QS +NP +2.53802e+06 28261 MT +2.5377e+06 27941 LT +2.53682e+06 27941 LT +2.5362e+06 28561 LT +2.5362e+06 29420 LT +2.54412e+06 37781 LT +2.54444e+06 38101 LT +2.54532e+06 38101 LT +2.54594e+06 37481 LT +2.54594e+06 36622 LT +CP BF QS +NP +2.54594e+06 12897 MT +2.54532e+06 12277 LT +2.54444e+06 12277 LT +2.54382e+06 12897 LT +2.54382e+06 37481 LT +2.54444e+06 38101 LT +2.54532e+06 38101 LT +2.54594e+06 37481 LT +CP BF QS +NP +2.55398e+06 12897 MT +2.55336e+06 12277 LT +2.53682e+06 12277 LT +2.5362e+06 12897 LT +2.5362e+06 13773 LT +2.53682e+06 14393 LT +2.55336e+06 14393 LT +2.55398e+06 13773 LT +CP BF QS +NP +2.51673e+06 114501 MT +2.51611e+06 113881 LT +2.51523e+06 113881 LT +2.51461e+06 114501 LT +2.51461e+06 139084 LT +2.51523e+06 139704 LT +2.51611e+06 139704 LT +2.51673e+06 139084 LT +CP BF QS +NP +2.52858e+06 138208 MT +2.52796e+06 137588 LT +2.51523e+06 137588 LT +2.51461e+06 138208 LT +2.51461e+06 139084 LT +2.51523e+06 139704 LT +2.52796e+06 139704 LT +2.52858e+06 139084 LT +CP BF QS +NP +2.53239e+06 133975 MT +2.53177e+06 133355 LT +2.5309e+06 133355 LT +2.53057e+06 133684 LT +2.52646e+06 138240 LT +2.52646e+06 139084 LT +2.52708e+06 139704 LT +2.52796e+06 139704 LT +2.52829e+06 139375 LT +2.53239e+06 134819 LT +CP BF QS +NP +2.53239e+06 126355 MT +2.53177e+06 125735 LT +2.5309e+06 125735 LT +2.53028e+06 126355 LT +2.53028e+06 134851 LT +2.5309e+06 135471 LT +2.53177e+06 135471 LT +2.53239e+06 134851 LT +CP BF QS +NP +2.52827e+06 122234 MT +2.52796e+06 121924 LT +2.52708e+06 121924 LT +2.52646e+06 122544 LT +2.52646e+06 123420 LT +2.53058e+06 127541 LT +2.5309e+06 127851 LT +2.53177e+06 127851 LT +2.53239e+06 127231 LT +2.53239e+06 126355 LT +CP BF QS +NP +2.52858e+06 122544 MT +2.52796e+06 121924 LT +2.51523e+06 121924 LT +2.51461e+06 122544 LT +2.51461e+06 123420 LT +2.51523e+06 124040 LT +2.52796e+06 124040 LT +2.52858e+06 123420 LT +CP BF QS +NP +2.53239e+06 114501 MT +2.53177e+06 113881 LT +2.5309e+06 113881 LT +2.53058e+06 114201 LT +2.52266e+06 122561 LT +2.52266e+06 123420 LT +2.52328e+06 124040 LT +2.52415e+06 124040 LT +2.52447e+06 123720 LT +2.53239e+06 115360 LT +CP BF QS +NP +2.55567e+06 138208 MT +2.55505e+06 137588 LT +2.53894e+06 137588 LT +2.53832e+06 138208 LT +2.53832e+06 139084 LT +2.53894e+06 139704 LT +2.55505e+06 139704 LT +2.55567e+06 139084 LT +CP BF QS +NP +2.54043e+06 114501 MT +2.53981e+06 113881 LT +2.53894e+06 113881 LT +2.53832e+06 114501 LT +2.53832e+06 139084 LT +2.53894e+06 139704 LT +2.53981e+06 139704 LT +2.54043e+06 139084 LT +CP BF QS +NP +2.55567e+06 114501 MT +2.55505e+06 113881 LT +2.53894e+06 113881 LT +2.53832e+06 114501 LT +2.53832e+06 115377 LT +2.53894e+06 115997 LT +2.55505e+06 115997 LT +2.55567e+06 115377 LT +CP BF QS +NP +2.54805e+06 126355 MT +2.54743e+06 125735 LT +2.53894e+06 125735 LT +2.53832e+06 126355 LT +2.53832e+06 127231 LT +2.53894e+06 127851 LT +2.54743e+06 127851 LT +2.54805e+06 127231 LT +CP BF QS +NP +2.56372e+06 122544 MT +2.5631e+06 121924 LT +2.56222e+06 121924 LT +2.5616e+06 122544 LT +2.5616e+06 139084 LT +2.56222e+06 139704 LT +2.5631e+06 139704 LT +2.56372e+06 139084 LT +CP BF QS +NP +2.57134e+06 114501 MT +2.57072e+06 113881 LT +2.56984e+06 113881 LT +2.56952e+06 114201 LT +2.5616e+06 122561 LT +2.5616e+06 123420 LT +2.56222e+06 124040 LT +2.5631e+06 124040 LT +2.56342e+06 123720 LT +2.57134e+06 115360 LT +CP BF QS +NP +2.57938e+06 122544 MT +2.57072e+06 113881 LT +2.56984e+06 113881 LT +2.56922e+06 114501 LT +2.56922e+06 115377 LT +2.57788e+06 124040 LT +2.57876e+06 124040 LT +2.57938e+06 123420 LT +CP BF QS +NP +2.57938e+06 122544 MT +2.57876e+06 121924 LT +2.57788e+06 121924 LT +2.57726e+06 122544 LT +2.57726e+06 139084 LT +2.57788e+06 139704 LT +2.57876e+06 139704 LT +2.57938e+06 139084 LT +CP BF QS +NP +2.59081e+06 130165 MT +2.59019e+06 129545 LT +2.5855e+06 129545 LT +2.58488e+06 130165 LT +2.58488e+06 131041 LT +2.5855e+06 131661 LT +2.59019e+06 131661 LT +2.59081e+06 131041 LT +CP BF QS +NP +2.59081e+06 126355 MT +2.59019e+06 125735 LT +2.58932e+06 125735 LT +2.5887e+06 126355 LT +2.5887e+06 131041 LT +2.58932e+06 131661 LT +2.59019e+06 131661 LT +2.59081e+06 131041 LT +CP BF QS +NP +2.59081e+06 126355 MT +2.59019e+06 125735 LT +2.5855e+06 125735 LT +2.58488e+06 126355 LT +2.58488e+06 127231 LT +2.5855e+06 127851 LT +2.59019e+06 127851 LT +2.59081e+06 127231 LT +CP BF QS +NP +2.587e+06 126355 MT +2.58638e+06 125735 LT +2.5855e+06 125735 LT +2.58488e+06 126355 LT +2.58488e+06 131041 LT +2.5855e+06 131661 LT +2.58638e+06 131661 LT +2.587e+06 131041 LT +CP BF QS +NP +2.59081e+06 118734 MT +2.59019e+06 118114 LT +2.5855e+06 118114 LT +2.58488e+06 118734 LT +2.58488e+06 119610 LT +2.5855e+06 120230 LT +2.59019e+06 120230 LT +2.59081e+06 119610 LT +CP BF QS +NP +2.59081e+06 114501 MT +2.59019e+06 113881 LT +2.58932e+06 113881 LT +2.5887e+06 114501 LT +2.5887e+06 119610 LT +2.58932e+06 120230 LT +2.59019e+06 120230 LT +2.59081e+06 119610 LT +CP BF QS +NP +2.59081e+06 114501 MT +2.59019e+06 113881 LT +2.5855e+06 113881 LT +2.58488e+06 114501 LT +2.58488e+06 115377 LT +2.5855e+06 115997 LT +2.59019e+06 115997 LT +2.59081e+06 115377 LT +CP BF QS +NP +2.587e+06 114501 MT +2.58638e+06 113881 LT +2.5855e+06 113881 LT +2.58488e+06 114501 LT +2.58488e+06 119610 LT +2.5855e+06 120230 LT +2.58638e+06 120230 LT +2.587e+06 119610 LT +CP BF QS +NP +2.50318e+06 50276 MT +2.50244e+06 49532 LT +2.50138e+06 49532 LT +2.50064e+06 50276 LT +2.50064e+06 152931 LT +2.50138e+06 153675 LT +2.50244e+06 153675 LT +2.50318e+06 152931 LT +CP BF QS +NP +2.50318e+06 151879 MT +2.50244e+06 151135 LT +1.62508e+06 151135 LT +1.62434e+06 151879 LT +1.62434e+06 152931 LT +1.62508e+06 153675 LT +2.50244e+06 153675 LT +2.50318e+06 152931 LT +CP BF QS +NP +2.64288e+06 50276 MT +2.64214e+06 49532 LT +2.50138e+06 49532 LT +2.50064e+06 50276 LT +2.50064e+06 51328 LT +2.50138e+06 52072 LT +2.64214e+06 52072 LT +2.64288e+06 51328 LT +CP BF QS +NP +2.64288e+06 -526 MT +2.64214e+06 -1270 LT +2.64109e+06 -1270 LT +2.64034e+06 -526 LT +2.64034e+06 51328 LT +2.64109e+06 52072 LT +2.64214e+06 52072 LT +2.64288e+06 51328 LT +CP BF QS +NP +1.62688e+06 151879 MT +1.62613e+06 151135 LT +1.62508e+06 151135 LT +1.62434e+06 151879 LT +1.62434e+06 229134 LT +1.62508e+06 229878 LT +1.62613e+06 229878 LT +1.62688e+06 229134 LT +CP BF QS +NP +2.64288e+06 355086 MT +2.64214e+06 354342 LT +1.62508e+06 354342 LT +1.62434e+06 355086 LT +1.62434e+06 356138 LT +1.62508e+06 356882 LT +2.64214e+06 356882 LT +2.64288e+06 356138 LT +CP BF QS +NP +2.64288e+06 228082 MT +2.64214e+06 227338 LT +2.64109e+06 227338 LT +2.64034e+06 228082 LT +2.64034e+06 356138 LT +2.64109e+06 356882 LT +2.64214e+06 356882 LT +2.64288e+06 356138 LT +CP BF QS +NP +2.64288e+06 228082 MT +2.64214e+06 227338 LT +1.62508e+06 227338 LT +1.62434e+06 228082 LT +1.62434e+06 229134 LT +1.62508e+06 229878 LT +2.64214e+06 229878 LT +2.64288e+06 229134 LT +CP BF QS +NP +1.62688e+06 228082 MT +1.62613e+06 227338 LT +1.62508e+06 227338 LT +1.62434e+06 228082 LT +1.62434e+06 356138 LT +1.62508e+06 356882 LT +1.62613e+06 356882 LT +1.62688e+06 356138 LT +CP BF QS +NP +2.64288e+06 151879 MT +2.64214e+06 151135 LT +2.64109e+06 151135 LT +2.64034e+06 151879 LT +2.64034e+06 229134 LT +2.64109e+06 229878 LT +2.64214e+06 229878 LT +2.64288e+06 229134 LT +CP BF QS +NP +1.64847e+06 190703 MT +1.64785e+06 190083 LT +1.64697e+06 190083 LT +1.64635e+06 190703 LT +1.64635e+06 215287 LT +1.64697e+06 215907 LT +1.64785e+06 215907 LT +1.64847e+06 215287 LT +CP BF QS +NP +1.65609e+06 214411 MT +1.65547e+06 213791 LT +1.63893e+06 213791 LT +1.63831e+06 214411 LT +1.63831e+06 215287 LT +1.63893e+06 215907 LT +1.65547e+06 215907 LT +1.65609e+06 215287 LT +CP BF QS +NP +1.67175e+06 190703 MT +1.67113e+06 190083 LT +1.66263e+06 190083 LT +1.66201e+06 190703 LT +1.66201e+06 191579 LT +1.66263e+06 192199 LT +1.67113e+06 192199 LT +1.67175e+06 191579 LT +CP BF QS +NP +1.66794e+06 190703 MT +1.66732e+06 190083 LT +1.66644e+06 190083 LT +1.66582e+06 190703 LT +1.66582e+06 215287 LT +1.66644e+06 215907 LT +1.66732e+06 215907 LT +1.66794e+06 215287 LT +CP BF QS +NP +1.67175e+06 214411 MT +1.67113e+06 213791 LT +1.66263e+06 213791 LT +1.66201e+06 214411 LT +1.66201e+06 215287 LT +1.66263e+06 215907 LT +1.67113e+06 215907 LT +1.67175e+06 215287 LT +CP BF QS +NP +1.68741e+06 190703 MT +1.68679e+06 190083 LT +1.68592e+06 190083 LT +1.6853e+06 190703 LT +1.6853e+06 215287 LT +1.68592e+06 215907 LT +1.68679e+06 215907 LT +1.68741e+06 215287 LT +CP BF QS +NP +1.69503e+06 214411 MT +1.69441e+06 213791 LT +1.67787e+06 213791 LT +1.67725e+06 214411 LT +1.67725e+06 215287 LT +1.67787e+06 215907 LT +1.69441e+06 215907 LT +1.69503e+06 215287 LT +CP BF QS +NP +1.70308e+06 190703 MT +1.70246e+06 190083 LT +1.70158e+06 190083 LT +1.70096e+06 190703 LT +1.70096e+06 215287 LT +1.70158e+06 215907 LT +1.70246e+06 215907 LT +1.70308e+06 215287 LT +CP BF QS +NP +1.71874e+06 190703 MT +1.71812e+06 190083 LT +1.70158e+06 190083 LT +1.70096e+06 190703 LT +1.70096e+06 191579 LT +1.70158e+06 192199 LT +1.71812e+06 192199 LT +1.71874e+06 191579 LT +CP BF QS +NP +1.74202e+06 214411 MT +1.7414e+06 213791 LT +1.72486e+06 213791 LT +1.72424e+06 214411 LT +1.72424e+06 215287 LT +1.72486e+06 215907 LT +1.7414e+06 215907 LT +1.74202e+06 215287 LT +CP BF QS +NP +1.72636e+06 190703 MT +1.72574e+06 190083 LT +1.72486e+06 190083 LT +1.72424e+06 190703 LT +1.72424e+06 215287 LT +1.72486e+06 215907 LT +1.72574e+06 215907 LT +1.72636e+06 215287 LT +CP BF QS +NP +1.74202e+06 190703 MT +1.7414e+06 190083 LT +1.72486e+06 190083 LT +1.72424e+06 190703 LT +1.72424e+06 191579 LT +1.72486e+06 192199 LT +1.7414e+06 192199 LT +1.74202e+06 191579 LT +CP BF QS +NP +1.73398e+06 202557 MT +1.73336e+06 201937 LT +1.72486e+06 201937 LT +1.72424e+06 202557 LT +1.72424e+06 203433 LT +1.72486e+06 204053 LT +1.73336e+06 204053 LT +1.73398e+06 203433 LT +CP BF QS +NP +1.75345e+06 206367 MT +1.75283e+06 205747 LT +1.74815e+06 205747 LT +1.74753e+06 206367 LT +1.74753e+06 207243 LT +1.74815e+06 207863 LT +1.75283e+06 207863 LT +1.75345e+06 207243 LT +CP BF QS +NP +1.75345e+06 202557 MT +1.75283e+06 201937 LT +1.75196e+06 201937 LT +1.75134e+06 202557 LT +1.75134e+06 207243 LT +1.75196e+06 207863 LT +1.75283e+06 207863 LT +1.75345e+06 207243 LT +CP BF QS +NP +1.75345e+06 202557 MT +1.75283e+06 201937 LT +1.74815e+06 201937 LT +1.74753e+06 202557 LT +1.74753e+06 203433 LT +1.74815e+06 204053 LT +1.75283e+06 204053 LT +1.75345e+06 203433 LT +CP BF QS +NP +1.74964e+06 202557 MT +1.74902e+06 201937 LT +1.74815e+06 201937 LT +1.74753e+06 202557 LT +1.74753e+06 207243 LT +1.74815e+06 207863 LT +1.74902e+06 207863 LT +1.74964e+06 207243 LT +CP BF QS +NP +1.75345e+06 194937 MT +1.75283e+06 194317 LT +1.74815e+06 194317 LT +1.74753e+06 194937 LT +1.74753e+06 195813 LT +1.74815e+06 196433 LT +1.75283e+06 196433 LT +1.75345e+06 195813 LT +CP BF QS +NP +1.75345e+06 190703 MT +1.75283e+06 190083 LT +1.75196e+06 190083 LT +1.75134e+06 190703 LT +1.75134e+06 195813 LT +1.75196e+06 196433 LT +1.75283e+06 196433 LT +1.75345e+06 195813 LT +CP BF QS +NP +1.75345e+06 190703 MT +1.75283e+06 190083 LT +1.74815e+06 190083 LT +1.74753e+06 190703 LT +1.74753e+06 191579 LT +1.74815e+06 192199 LT +1.75283e+06 192199 LT +1.75345e+06 191579 LT +CP BF QS +NP +1.74964e+06 190703 MT +1.74902e+06 190083 LT +1.74815e+06 190083 LT +1.74753e+06 190703 LT +1.74753e+06 195813 LT +1.74815e+06 196433 LT +1.74902e+06 196433 LT +1.74964e+06 195813 LT +CP BF QS +NP +1.64042e+06 114501 MT +1.6398e+06 113881 LT +1.63893e+06 113881 LT +1.63831e+06 114501 LT +1.63831e+06 139084 LT +1.63893e+06 139704 LT +1.6398e+06 139704 LT +1.64042e+06 139084 LT +CP BF QS +NP +1.65228e+06 114501 MT +1.65166e+06 113881 LT +1.63893e+06 113881 LT +1.63831e+06 114501 LT +1.63831e+06 115377 LT +1.63893e+06 115997 LT +1.65166e+06 115997 LT +1.65228e+06 115377 LT +CP BF QS +NP +1.65199e+06 114210 MT +1.65166e+06 113881 LT +1.65078e+06 113881 LT +1.65016e+06 114501 LT +1.65016e+06 115345 LT +1.65426e+06 119901 LT +1.65459e+06 120230 LT +1.65547e+06 120230 LT +1.65609e+06 119610 LT +1.65609e+06 118766 LT +CP BF QS +NP +1.65609e+06 118734 MT +1.65547e+06 118114 LT +1.65459e+06 118114 LT +1.65397e+06 118734 LT +1.65397e+06 134851 LT +1.65459e+06 135471 LT +1.65547e+06 135471 LT +1.65609e+06 134851 LT +CP BF QS +NP +1.65609e+06 133975 MT +1.65547e+06 133355 LT +1.65459e+06 133355 LT +1.65426e+06 133684 LT +1.65016e+06 138240 LT +1.65016e+06 139084 LT +1.65078e+06 139704 LT +1.65166e+06 139704 LT +1.65199e+06 139375 LT +1.65609e+06 134819 LT +CP BF QS +NP +1.65228e+06 138208 MT +1.65166e+06 137588 LT +1.63893e+06 137588 LT +1.63831e+06 138208 LT +1.63831e+06 139084 LT +1.63893e+06 139704 LT +1.65166e+06 139704 LT +1.65228e+06 139084 LT +CP BF QS +NP +1.67556e+06 114501 MT +1.67494e+06 113881 LT +1.66644e+06 113881 LT +1.66582e+06 114501 LT +1.66582e+06 115377 LT +1.66644e+06 115997 LT +1.67494e+06 115997 LT +1.67556e+06 115377 LT +CP BF QS +NP +1.67527e+06 114210 MT +1.67494e+06 113881 LT +1.67406e+06 113881 LT +1.67344e+06 114501 LT +1.67344e+06 115345 LT +1.67754e+06 119901 LT +1.67787e+06 120230 LT +1.67875e+06 120230 LT +1.67937e+06 119610 LT +1.67937e+06 118766 LT +CP BF QS +NP +1.67937e+06 118734 MT +1.67875e+06 118114 LT +1.67787e+06 118114 LT +1.67725e+06 118734 LT +1.67725e+06 127231 LT +1.67787e+06 127851 LT +1.67875e+06 127851 LT +1.67937e+06 127231 LT +CP BF QS +NP +1.67937e+06 126355 MT +1.67875e+06 125735 LT +1.67787e+06 125735 LT +1.67344e+06 130165 LT +1.67344e+06 131041 LT +1.67406e+06 131661 LT +1.67494e+06 131661 LT +1.67937e+06 127231 LT +CP BF QS +NP +1.67556e+06 130165 MT +1.67494e+06 129545 LT +1.66644e+06 129545 LT +1.66582e+06 130165 LT +1.66582e+06 131041 LT +1.66644e+06 131661 LT +1.67494e+06 131661 LT +1.67556e+06 131041 LT +CP BF QS +NP +1.66794e+06 130165 MT +1.66351e+06 125735 LT +1.66263e+06 125735 LT +1.66201e+06 126355 LT +1.66201e+06 127231 LT +1.66644e+06 131661 LT +1.66732e+06 131661 LT +1.66794e+06 131041 LT +CP BF QS +NP +1.66413e+06 118734 MT +1.66351e+06 118114 LT +1.66263e+06 118114 LT +1.66201e+06 118734 LT +1.66201e+06 127231 LT +1.66263e+06 127851 LT +1.66351e+06 127851 LT +1.66413e+06 127231 LT +CP BF QS +NP +1.66794e+06 114501 MT +1.66732e+06 113881 LT +1.66644e+06 113881 LT +1.66612e+06 114210 LT +1.66201e+06 118766 LT +1.66201e+06 119610 LT +1.66263e+06 120230 LT +1.66351e+06 120230 LT +1.66384e+06 119901 LT +1.66794e+06 115345 LT +CP BF QS +NP +1.70308e+06 130165 MT +1.70246e+06 129545 LT +1.68973e+06 129545 LT +1.68911e+06 130165 LT +1.68911e+06 131041 LT +1.68973e+06 131661 LT +1.70246e+06 131661 LT +1.70308e+06 131041 LT +CP BF QS +NP +1.69122e+06 130165 MT +1.68679e+06 125735 LT +1.68592e+06 125735 LT +1.6853e+06 126355 LT +1.6853e+06 127231 LT +1.68973e+06 131661 LT +1.6906e+06 131661 LT +1.69122e+06 131041 LT +CP BF QS +NP +1.68741e+06 118734 MT +1.68679e+06 118114 LT +1.68592e+06 118114 LT +1.6853e+06 118734 LT +1.6853e+06 127231 LT +1.68592e+06 127851 LT +1.68679e+06 127851 LT +1.68741e+06 127231 LT +CP BF QS +NP +1.69122e+06 114501 MT +1.6906e+06 113881 LT +1.68973e+06 113881 LT +1.6894e+06 114210 LT +1.6853e+06 118766 LT +1.6853e+06 119610 LT +1.68592e+06 120230 LT +1.68679e+06 120230 LT +1.68712e+06 119901 LT +1.69122e+06 115345 LT +CP BF QS +NP +1.70308e+06 114501 MT +1.70246e+06 113881 LT +1.68973e+06 113881 LT +1.68911e+06 114501 LT +1.68911e+06 115377 LT +1.68973e+06 115997 LT +1.70246e+06 115997 LT +1.70308e+06 115377 LT +CP BF QS +NP +1.7107e+06 118734 MT +1.71008e+06 118114 LT +1.7092e+06 118114 LT +1.70858e+06 118734 LT +1.70858e+06 131041 LT +1.7092e+06 131661 LT +1.71008e+06 131661 LT +1.7107e+06 131041 LT +CP BF QS +NP +1.71451e+06 114501 MT +1.71389e+06 113881 LT +1.71301e+06 113881 LT +1.71268e+06 114210 LT +1.70858e+06 118766 LT +1.70858e+06 119610 LT +1.7092e+06 120230 LT +1.71008e+06 120230 LT +1.71041e+06 119901 LT +1.71451e+06 115345 LT +CP BF QS +NP +1.72636e+06 114501 MT +1.72574e+06 113881 LT +1.71301e+06 113881 LT +1.71239e+06 114501 LT +1.71239e+06 115377 LT +1.71301e+06 115997 LT +1.72574e+06 115997 LT +1.72636e+06 115377 LT +CP BF QS +NP +1.72636e+06 114501 MT +1.72574e+06 113881 LT +1.72486e+06 113881 LT +1.72424e+06 114501 LT +1.72424e+06 131041 LT +1.72486e+06 131661 LT +1.72574e+06 131661 LT +1.72636e+06 131041 LT +CP BF QS +NP +1.73398e+06 114501 MT +1.73336e+06 113881 LT +1.73248e+06 113881 LT +1.73186e+06 114501 LT +1.73186e+06 131041 LT +1.73248e+06 131661 LT +1.73336e+06 131661 LT +1.73398e+06 131041 LT +CP BF QS +NP +1.73821e+06 130165 MT +1.73759e+06 129545 LT +1.73248e+06 129545 LT +1.73186e+06 130165 LT +1.73186e+06 131041 LT +1.73248e+06 131661 LT +1.73759e+06 131661 LT +1.73821e+06 131041 LT +CP BF QS +NP +1.74202e+06 126355 MT +1.7414e+06 125735 LT +1.74053e+06 125735 LT +1.7361e+06 130165 LT +1.7361e+06 131041 LT +1.73672e+06 131661 LT +1.73759e+06 131661 LT +1.74202e+06 127231 LT +CP BF QS +NP +1.74202e+06 114501 MT +1.7414e+06 113881 LT +1.74053e+06 113881 LT +1.73991e+06 114501 LT +1.73991e+06 127231 LT +1.74053e+06 127851 LT +1.7414e+06 127851 LT +1.74202e+06 127231 LT +CP BF QS +NP +1.74583e+06 130165 MT +1.7414e+06 125735 LT +1.74053e+06 125735 LT +1.73991e+06 126355 LT +1.73991e+06 127231 LT +1.74434e+06 131661 LT +1.74521e+06 131661 LT +1.74583e+06 131041 LT +CP BF QS +NP +1.74964e+06 126355 MT +1.74902e+06 125735 LT +1.74815e+06 125735 LT +1.74372e+06 130165 LT +1.74372e+06 131041 LT +1.74434e+06 131661 LT +1.74521e+06 131661 LT +1.74964e+06 127231 LT +CP BF QS +NP +1.74964e+06 114501 MT +1.74902e+06 113881 LT +1.74815e+06 113881 LT +1.74753e+06 114501 LT +1.74753e+06 127231 LT +1.74815e+06 127851 LT +1.74902e+06 127851 LT +1.74964e+06 127231 LT +CP BF QS +NP +1.76912e+06 114501 MT +1.7685e+06 113881 LT +1.76e+06 113881 LT +1.75938e+06 114501 LT +1.75938e+06 115377 LT +1.76e+06 115997 LT +1.7685e+06 115997 LT +1.76912e+06 115377 LT +CP BF QS +NP +1.7615e+06 114501 MT +1.76088e+06 113881 LT +1.76e+06 113881 LT +1.75967e+06 114210 LT +1.75557e+06 118766 LT +1.75557e+06 119610 LT +1.75619e+06 120230 LT +1.75707e+06 120230 LT +1.7574e+06 119901 LT +1.7615e+06 115345 LT +CP BF QS +NP +1.75769e+06 118734 MT +1.75707e+06 118114 LT +1.75619e+06 118114 LT +1.75557e+06 118734 LT +1.75557e+06 127231 LT +1.75619e+06 127851 LT +1.75707e+06 127851 LT +1.75769e+06 127231 LT +CP BF QS +NP +1.7615e+06 130165 MT +1.75707e+06 125735 LT +1.75619e+06 125735 LT +1.75557e+06 126355 LT +1.75557e+06 127231 LT +1.76e+06 131661 LT +1.76088e+06 131661 LT +1.7615e+06 131041 LT +CP BF QS +NP +1.76912e+06 130165 MT +1.7685e+06 129545 LT +1.76e+06 129545 LT +1.75938e+06 130165 LT +1.75938e+06 131041 LT +1.76e+06 131661 LT +1.7685e+06 131661 LT +1.76912e+06 131041 LT +CP BF QS +NP +1.77293e+06 126355 MT +1.77231e+06 125735 LT +1.77143e+06 125735 LT +1.767e+06 130165 LT +1.767e+06 131041 LT +1.76762e+06 131661 LT +1.7685e+06 131661 LT +1.77293e+06 127231 LT +CP BF QS +NP +1.77293e+06 122544 MT +1.77231e+06 121924 LT +1.77143e+06 121924 LT +1.77081e+06 122544 LT +1.77081e+06 127231 LT +1.77143e+06 127851 LT +1.77231e+06 127851 LT +1.77293e+06 127231 LT +CP BF QS +NP +1.77293e+06 122544 MT +1.77231e+06 121924 LT +1.75619e+06 121924 LT +1.75557e+06 122544 LT +1.75557e+06 123420 LT +1.75619e+06 124040 LT +1.77231e+06 124040 LT +1.77293e+06 123420 LT +CP BF QS +NP +1.78097e+06 114501 MT +1.78035e+06 113881 LT +1.77948e+06 113881 LT +1.77886e+06 114501 LT +1.77886e+06 131041 LT +1.77948e+06 131661 LT +1.78035e+06 131661 LT +1.78097e+06 131041 LT +CP BF QS +NP +1.7924e+06 130165 MT +1.79178e+06 129545 LT +1.77948e+06 129545 LT +1.77886e+06 130165 LT +1.77886e+06 131041 LT +1.77948e+06 131661 LT +1.79178e+06 131661 LT +1.7924e+06 131041 LT +CP BF QS +NP +1.79663e+06 126355 MT +1.79601e+06 125735 LT +1.79517e+06 125735 LT +1.79061e+06 129836 LT +1.79028e+06 130165 LT +1.79028e+06 131041 LT +1.7909e+06 131661 LT +1.79175e+06 131661 LT +1.7963e+06 127560 LT +1.79663e+06 127231 LT +CP BF QS +NP +1.79663e+06 114501 MT +1.79601e+06 113881 LT +1.79514e+06 113881 LT +1.79452e+06 114501 LT +1.79452e+06 127231 LT +1.79514e+06 127851 LT +1.79601e+06 127851 LT +1.79663e+06 127231 LT +CP BF QS +NP +1.80806e+06 118734 MT +1.80744e+06 118114 LT +1.80657e+06 118114 LT +1.80595e+06 118734 LT +1.80595e+06 134851 LT +1.80657e+06 135471 LT +1.80744e+06 135471 LT +1.80806e+06 134851 LT +CP BF QS +NP +1.8123e+06 114501 MT +1.81168e+06 113881 LT +1.8108e+06 113881 LT +1.80626e+06 118424 LT +1.80595e+06 118734 LT +1.80595e+06 119610 LT +1.80657e+06 120230 LT +1.80744e+06 120230 LT +1.81199e+06 115687 LT +1.8123e+06 115377 LT +CP BF QS +NP +1.8123e+06 130165 MT +1.81168e+06 129545 LT +1.80276e+06 129545 LT +1.80214e+06 130165 LT +1.80214e+06 131041 LT +1.80276e+06 131661 LT +1.81168e+06 131661 LT +1.8123e+06 131041 LT +CP BF QS +NP +1.8432e+06 114501 MT +1.84258e+06 113881 LT +1.8417e+06 113881 LT +1.84108e+06 114501 LT +1.84108e+06 139084 LT +1.8417e+06 139704 LT +1.84258e+06 139704 LT +1.8432e+06 139084 LT +CP BF QS +NP +1.85886e+06 114501 MT +1.85824e+06 113881 LT +1.85737e+06 113881 LT +1.85698e+06 114266 LT +1.84108e+06 138329 LT +1.84108e+06 139084 LT +1.8417e+06 139704 LT +1.84258e+06 139704 LT +1.84297e+06 139319 LT +1.85886e+06 115256 LT +CP BF QS +NP +1.85886e+06 114501 MT +1.85824e+06 113881 LT +1.85737e+06 113881 LT +1.85675e+06 114501 LT +1.85675e+06 139084 LT +1.85737e+06 139704 LT +1.85824e+06 139704 LT +1.85886e+06 139084 LT +CP BF QS +NP +1.86648e+06 118734 MT +1.86586e+06 118114 LT +1.86499e+06 118114 LT +1.86437e+06 118734 LT +1.86437e+06 131041 LT +1.86499e+06 131661 LT +1.86586e+06 131661 LT +1.86648e+06 131041 LT +CP BF QS +NP +1.87072e+06 114501 MT +1.8701e+06 113881 LT +1.86922e+06 113881 LT +1.86468e+06 118424 LT +1.86437e+06 118734 LT +1.86437e+06 119610 LT +1.86499e+06 120230 LT +1.86586e+06 120230 LT +1.87041e+06 115687 LT +1.87072e+06 115377 LT +CP BF QS +NP +1.88215e+06 114501 MT +1.88153e+06 113881 LT +1.86922e+06 113881 LT +1.8686e+06 114501 LT +1.8686e+06 115377 LT +1.86922e+06 115997 LT +1.88153e+06 115997 LT +1.88215e+06 115377 LT +CP BF QS +NP +1.88215e+06 114501 MT +1.88153e+06 113881 LT +1.88065e+06 113881 LT +1.88003e+06 114501 LT +1.88003e+06 131041 LT +1.88065e+06 131661 LT +1.88153e+06 131661 LT +1.88215e+06 131041 LT +CP BF QS +NP +1.89019e+06 114501 MT +1.88957e+06 113881 LT +1.8887e+06 113881 LT +1.88808e+06 114501 LT +1.88808e+06 131041 LT +1.8887e+06 131661 LT +1.88957e+06 131661 LT +1.89019e+06 131041 LT +CP BF QS +NP +1.894e+06 130165 MT +1.89338e+06 129545 LT +1.8887e+06 129545 LT +1.88808e+06 130165 LT +1.88808e+06 131041 LT +1.8887e+06 131661 LT +1.89338e+06 131661 LT +1.894e+06 131041 LT +CP BF QS +NP +1.89781e+06 126355 MT +1.89719e+06 125735 LT +1.89632e+06 125735 LT +1.89188e+06 130165 LT +1.89188e+06 131041 LT +1.8925e+06 131661 LT +1.89338e+06 131661 LT +1.89781e+06 127231 LT +CP BF QS +NP +1.89781e+06 114501 MT +1.89719e+06 113881 LT +1.89632e+06 113881 LT +1.8957e+06 114501 LT +1.8957e+06 127231 LT +1.89632e+06 127851 LT +1.89719e+06 127851 LT +1.89781e+06 127231 LT +CP BF QS +NP +1.90162e+06 130165 MT +1.89719e+06 125735 LT +1.89632e+06 125735 LT +1.8957e+06 126355 LT +1.8957e+06 127231 LT +1.90012e+06 131661 LT +1.901e+06 131661 LT +1.90162e+06 131041 LT +CP BF QS +NP +1.90543e+06 126355 MT +1.90481e+06 125735 LT +1.90394e+06 125735 LT +1.8995e+06 130165 LT +1.8995e+06 131041 LT +1.90012e+06 131661 LT +1.901e+06 131661 LT +1.90543e+06 127231 LT +CP BF QS +NP +1.90543e+06 114501 MT +1.90481e+06 113881 LT +1.90394e+06 113881 LT +1.90332e+06 114501 LT +1.90332e+06 127231 LT +1.90394e+06 127851 LT +1.90481e+06 127851 LT +1.90543e+06 127231 LT +CP BF QS +NP +1.91348e+06 114501 MT +1.91286e+06 113881 LT +1.91198e+06 113881 LT +1.91136e+06 114501 LT +1.91136e+06 139084 LT +1.91198e+06 139704 LT +1.91286e+06 139704 LT +1.91348e+06 139084 LT +CP BF QS +NP +1.92533e+06 114501 MT +1.92471e+06 113881 LT +1.91198e+06 113881 LT +1.91136e+06 114501 LT +1.91136e+06 115377 LT +1.91198e+06 115997 LT +1.92471e+06 115997 LT +1.92533e+06 115377 LT +CP BF QS +NP +1.92504e+06 114210 MT +1.92471e+06 113881 LT +1.92383e+06 113881 LT +1.92321e+06 114501 LT +1.92321e+06 115345 LT +1.92731e+06 119901 LT +1.92764e+06 120230 LT +1.92852e+06 120230 LT +1.92914e+06 119610 LT +1.92914e+06 118766 LT +CP BF QS +NP +1.92914e+06 118734 MT +1.92852e+06 118114 LT +1.92764e+06 118114 LT +1.92702e+06 118734 LT +1.92702e+06 127231 LT +1.92764e+06 127851 LT +1.92852e+06 127851 LT +1.92914e+06 127231 LT +CP BF QS +NP +1.92914e+06 126355 MT +1.92852e+06 125735 LT +1.92764e+06 125735 LT +1.92321e+06 130165 LT +1.92321e+06 131041 LT +1.92383e+06 131661 LT +1.92471e+06 131661 LT +1.92914e+06 127231 LT +CP BF QS +NP +1.92533e+06 130165 MT +1.92471e+06 129545 LT +1.91198e+06 129545 LT +1.91136e+06 130165 LT +1.91136e+06 131041 LT +1.91198e+06 131661 LT +1.92471e+06 131661 LT +1.92533e+06 131041 LT +CP BF QS +NP +1.94861e+06 114501 MT +1.94799e+06 113881 LT +1.93907e+06 113881 LT +1.93845e+06 114501 LT +1.93845e+06 115377 LT +1.93907e+06 115997 LT +1.94799e+06 115997 LT +1.94861e+06 115377 LT +CP BF QS +NP +1.94057e+06 114501 MT +1.93995e+06 113881 LT +1.93907e+06 113881 LT +1.93874e+06 114210 LT +1.93464e+06 118766 LT +1.93464e+06 119610 LT +1.93526e+06 120230 LT +1.93614e+06 120230 LT +1.93647e+06 119901 LT +1.94057e+06 115345 LT +CP BF QS +NP +1.93676e+06 118734 MT +1.93614e+06 118114 LT +1.93526e+06 118114 LT +1.93464e+06 118734 LT +1.93464e+06 127231 LT +1.93526e+06 127851 LT +1.93614e+06 127851 LT +1.93676e+06 127231 LT +CP BF QS +NP +1.94057e+06 130165 MT +1.93614e+06 125735 LT +1.93526e+06 125735 LT +1.93464e+06 126355 LT +1.93464e+06 127231 LT +1.93907e+06 131661 LT +1.93995e+06 131661 LT +1.94057e+06 131041 LT +CP BF QS +NP +1.94861e+06 130165 MT +1.94799e+06 129545 LT +1.93907e+06 129545 LT +1.93845e+06 130165 LT +1.93845e+06 131041 LT +1.93907e+06 131661 LT +1.94799e+06 131661 LT +1.94861e+06 131041 LT +CP BF QS +NP +1.95242e+06 126355 MT +1.9518e+06 125735 LT +1.95093e+06 125735 LT +1.9465e+06 130165 LT +1.9465e+06 131041 LT +1.94712e+06 131661 LT +1.94799e+06 131661 LT +1.95242e+06 127231 LT +CP BF QS +NP +1.95242e+06 122544 MT +1.9518e+06 121924 LT +1.95093e+06 121924 LT +1.95031e+06 122544 LT +1.95031e+06 127231 LT +1.95093e+06 127851 LT +1.9518e+06 127851 LT +1.95242e+06 127231 LT +CP BF QS +NP +1.95242e+06 122544 MT +1.9518e+06 121924 LT +1.93526e+06 121924 LT +1.93464e+06 122544 LT +1.93464e+06 123420 LT +1.93526e+06 124040 LT +1.9518e+06 124040 LT +1.95242e+06 123420 LT +CP BF QS +NP +1.96004e+06 114501 MT +1.95942e+06 113881 LT +1.95855e+06 113881 LT +1.95793e+06 114501 LT +1.95793e+06 131041 LT +1.95855e+06 131661 LT +1.95942e+06 131661 LT +1.96004e+06 131041 LT +CP BF QS +NP +1.96808e+06 130165 MT +1.96776e+06 129845 LT +1.9594e+06 121924 LT +1.95855e+06 121924 LT +1.95793e+06 122544 LT +1.95793e+06 123420 LT +1.95825e+06 123740 LT +1.96661e+06 131661 LT +1.96746e+06 131661 LT +1.96808e+06 131041 LT +CP BF QS +NP +1.9719e+06 130165 MT +1.97128e+06 129545 LT +1.96659e+06 129545 LT +1.96597e+06 130165 LT +1.96597e+06 131041 LT +1.96659e+06 131661 LT +1.97128e+06 131661 LT +1.9719e+06 131041 LT +CP BF QS +NP +1.98375e+06 130165 MT +1.98313e+06 129545 LT +1.97802e+06 129545 LT +1.9774e+06 130165 LT +1.9774e+06 131041 LT +1.97802e+06 131661 LT +1.98313e+06 131661 LT +1.98375e+06 131041 LT +CP BF QS +NP +1.98375e+06 126355 MT +1.98313e+06 125735 LT +1.98225e+06 125735 LT +1.98163e+06 126355 LT +1.98163e+06 131041 LT +1.98225e+06 131661 LT +1.98313e+06 131661 LT +1.98375e+06 131041 LT +CP BF QS +NP +1.98375e+06 126355 MT +1.98313e+06 125735 LT +1.97802e+06 125735 LT +1.9774e+06 126355 LT +1.9774e+06 127231 LT +1.97802e+06 127851 LT +1.98313e+06 127851 LT +1.98375e+06 127231 LT +CP BF QS +NP +1.97952e+06 126355 MT +1.9789e+06 125735 LT +1.97802e+06 125735 LT +1.9774e+06 126355 LT +1.9774e+06 131041 LT +1.97802e+06 131661 LT +1.9789e+06 131661 LT +1.97952e+06 131041 LT +CP BF QS +NP +1.98375e+06 118734 MT +1.98313e+06 118114 LT +1.97802e+06 118114 LT +1.9774e+06 118734 LT +1.9774e+06 119610 LT +1.97802e+06 120230 LT +1.98313e+06 120230 LT +1.98375e+06 119610 LT +CP BF QS +NP +1.98375e+06 114501 MT +1.98313e+06 113881 LT +1.98225e+06 113881 LT +1.98163e+06 114501 LT +1.98163e+06 119610 LT +1.98225e+06 120230 LT +1.98313e+06 120230 LT +1.98375e+06 119610 LT +CP BF QS +NP +1.98375e+06 114501 MT +1.98313e+06 113881 LT +1.97802e+06 113881 LT +1.9774e+06 114501 LT +1.9774e+06 115377 LT +1.97802e+06 115997 LT +1.98313e+06 115997 LT +1.98375e+06 115377 LT +CP BF QS +NP +1.97952e+06 114501 MT +1.9789e+06 113881 LT +1.97802e+06 113881 LT +1.9774e+06 114501 LT +1.9774e+06 119610 LT +1.97802e+06 120230 LT +1.9789e+06 120230 LT +1.97952e+06 119610 LT +CP BF QS +NP +1.82119e+06 206367 MT +1.82057e+06 205747 LT +1.80826e+06 205747 LT +1.80764e+06 206367 LT +1.80764e+06 207243 LT +1.80826e+06 207863 LT +1.82057e+06 207863 LT +1.82119e+06 207243 LT +CP BF QS +NP +1.80976e+06 206367 MT +1.80943e+06 206038 LT +1.80487e+06 201937 LT +1.80403e+06 201937 LT +1.80341e+06 202557 LT +1.80341e+06 203433 LT +1.80374e+06 203762 LT +1.8083e+06 207863 LT +1.80914e+06 207863 LT +1.80976e+06 207243 LT +CP BF QS +NP +1.80552e+06 194937 MT +1.8049e+06 194317 LT +1.80403e+06 194317 LT +1.80341e+06 194937 LT +1.80341e+06 203433 LT +1.80403e+06 204053 LT +1.8049e+06 204053 LT +1.80552e+06 203433 LT +CP BF QS +NP +1.80976e+06 190703 MT +1.80914e+06 190083 LT +1.80826e+06 190083 LT +1.80341e+06 194937 LT +1.80341e+06 195813 LT +1.80403e+06 196433 LT +1.8049e+06 196433 LT +1.80976e+06 191579 LT +CP BF QS +NP +1.82119e+06 190703 MT +1.82057e+06 190083 LT +1.80826e+06 190083 LT +1.80764e+06 190703 LT +1.80764e+06 191579 LT +1.80826e+06 192199 LT +1.82057e+06 192199 LT +1.82119e+06 191579 LT +CP BF QS +NP +1.83304e+06 206367 MT +1.83242e+06 205747 LT +1.82774e+06 205747 LT +1.82712e+06 206367 LT +1.82712e+06 207243 LT +1.82774e+06 207863 LT +1.83242e+06 207863 LT +1.83304e+06 207243 LT +CP BF QS +NP +1.83304e+06 190703 MT +1.83242e+06 190083 LT +1.83154e+06 190083 LT +1.83092e+06 190703 LT +1.83092e+06 207243 LT +1.83154e+06 207863 LT +1.83242e+06 207863 LT +1.83304e+06 207243 LT +CP BF QS +NP +1.83685e+06 190703 MT +1.83623e+06 190083 LT +1.82774e+06 190083 LT +1.82712e+06 190703 LT +1.82712e+06 191579 LT +1.82774e+06 192199 LT +1.83623e+06 192199 LT +1.83685e+06 191579 LT +CP BF QS +NP +1.83304e+06 214411 MT +1.83242e+06 213791 LT +1.83154e+06 213791 LT +1.83092e+06 214411 LT +1.83092e+06 219097 LT +1.83154e+06 219717 LT +1.83242e+06 219717 LT +1.83304e+06 219097 LT +CP BF QS +NP +1.84447e+06 190703 MT +1.84385e+06 190083 LT +1.84298e+06 190083 LT +1.84236e+06 190703 LT +1.84236e+06 207243 LT +1.84298e+06 207863 LT +1.84385e+06 207863 LT +1.84447e+06 207243 LT +CP BF QS +NP +1.85251e+06 206367 MT +1.85219e+06 206047 LT +1.84383e+06 198127 LT +1.84298e+06 198127 LT +1.84236e+06 198747 LT +1.84236e+06 199623 LT +1.84268e+06 199943 LT +1.85104e+06 207863 LT +1.85189e+06 207863 LT +1.85251e+06 207243 LT +CP BF QS +NP +1.85632e+06 206367 MT +1.8557e+06 205747 LT +1.85102e+06 205747 LT +1.8504e+06 206367 LT +1.8504e+06 207243 LT +1.85102e+06 207863 LT +1.8557e+06 207863 LT +1.85632e+06 207243 LT +CP BF QS +NP +1.87961e+06 206367 MT +1.87899e+06 205747 LT +1.86668e+06 205747 LT +1.86606e+06 206367 LT +1.86606e+06 207243 LT +1.86668e+06 207863 LT +1.87899e+06 207863 LT +1.87961e+06 207243 LT +CP BF QS +NP +1.86818e+06 206367 MT +1.86785e+06 206038 LT +1.86329e+06 201937 LT +1.86245e+06 201937 LT +1.86183e+06 202557 LT +1.86183e+06 203433 LT +1.86216e+06 203762 LT +1.86672e+06 207863 LT +1.86756e+06 207863 LT +1.86818e+06 207243 LT +CP BF QS +NP +1.86394e+06 194937 MT +1.86332e+06 194317 LT +1.86245e+06 194317 LT +1.86183e+06 194937 LT +1.86183e+06 203433 LT +1.86245e+06 204053 LT +1.86332e+06 204053 LT +1.86394e+06 203433 LT +CP BF QS +NP +1.86818e+06 190703 MT +1.86756e+06 190083 LT +1.86668e+06 190083 LT +1.86183e+06 194937 LT +1.86183e+06 195813 LT +1.86245e+06 196433 LT +1.86332e+06 196433 LT +1.86818e+06 191579 LT +CP BF QS +NP +1.87961e+06 190703 MT +1.87899e+06 190083 LT +1.86668e+06 190083 LT +1.86606e+06 190703 LT +1.86606e+06 191579 LT +1.86668e+06 192199 LT +1.87899e+06 192199 LT +1.87961e+06 191579 LT +CP BF QS +NP +1.88765e+06 194937 MT +1.88703e+06 194317 LT +1.88616e+06 194317 LT +1.88554e+06 194937 LT +1.88554e+06 207243 LT +1.88616e+06 207863 LT +1.88703e+06 207863 LT +1.88765e+06 207243 LT +CP BF QS +NP +1.89146e+06 190703 MT +1.89084e+06 190083 LT +1.88996e+06 190083 LT +1.88964e+06 190412 LT +1.88554e+06 194970 LT +1.88554e+06 195813 LT +1.88616e+06 196433 LT +1.88703e+06 196433 LT +1.88736e+06 196104 LT +1.89146e+06 191546 LT +CP BF QS +NP +1.90332e+06 190703 MT +1.9027e+06 190083 LT +1.88996e+06 190083 LT +1.88934e+06 190703 LT +1.88934e+06 191579 LT +1.88996e+06 192199 LT +1.9027e+06 192199 LT +1.90332e+06 191579 LT +CP BF QS +NP +1.90332e+06 190703 MT +1.9027e+06 190083 LT +1.90182e+06 190083 LT +1.9012e+06 190703 LT +1.9012e+06 207243 LT +1.90182e+06 207863 LT +1.9027e+06 207863 LT +1.90332e+06 207243 LT +CP BF QS +NP +1.91474e+06 206367 MT +1.91412e+06 205747 LT +1.90944e+06 205747 LT +1.90882e+06 206367 LT +1.90882e+06 207243 LT +1.90944e+06 207863 LT +1.91412e+06 207863 LT +1.91474e+06 207243 LT +CP BF QS +NP +1.91474e+06 190703 MT +1.91412e+06 190083 LT +1.91325e+06 190083 LT +1.91263e+06 190703 LT +1.91263e+06 207243 LT +1.91325e+06 207863 LT +1.91412e+06 207863 LT +1.91474e+06 207243 LT +CP BF QS +NP +1.91856e+06 190703 MT +1.91794e+06 190083 LT +1.90944e+06 190083 LT +1.90882e+06 190703 LT +1.90882e+06 191579 LT +1.90944e+06 192199 LT +1.91794e+06 192199 LT +1.91856e+06 191579 LT +CP BF QS +NP +1.91474e+06 214411 MT +1.91412e+06 213791 LT +1.91325e+06 213791 LT +1.91263e+06 214411 LT +1.91263e+06 219097 LT +1.91325e+06 219717 LT +1.91412e+06 219717 LT +1.91474e+06 219097 LT +CP BF QS +NP +1.93041e+06 194937 MT +1.92979e+06 194317 LT +1.92891e+06 194317 LT +1.92829e+06 194937 LT +1.92829e+06 211053 LT +1.92891e+06 211673 LT +1.92979e+06 211673 LT +1.93041e+06 211053 LT +CP BF QS +NP +1.93422e+06 190703 MT +1.9336e+06 190083 LT +1.93272e+06 190083 LT +1.93239e+06 190412 LT +1.92829e+06 194970 LT +1.92829e+06 195813 LT +1.92891e+06 196433 LT +1.92979e+06 196433 LT +1.93012e+06 196104 LT +1.93422e+06 191546 LT +CP BF QS +NP +1.93422e+06 206367 MT +1.9336e+06 205747 LT +1.9251e+06 205747 LT +1.92448e+06 206367 LT +1.92448e+06 207243 LT +1.9251e+06 207863 LT +1.9336e+06 207863 LT +1.93422e+06 207243 LT +CP BF QS +NP +2.33766e+06 761676 MT +2.33716e+06 761180 LT +2.33646e+06 761180 LT +2.33596e+06 761676 LT +2.33596e+06 787776 LT +2.33646e+06 788272 LT +2.33716e+06 788272 LT +2.33766e+06 787776 LT +CP BF QS +NP +2.33766e+06 634671 MT +2.33716e+06 634175 LT +2.33646e+06 634175 LT +2.33596e+06 634671 LT +2.33596e+06 660772 LT +2.33646e+06 661268 LT +2.33716e+06 661268 LT +2.33766e+06 660772 LT +CP BF QS +NP +2.33893e+06 672247 MT +2.33769e+06 671007 LT +2.33593e+06 671007 LT +2.33469e+06 672247 LT +2.33469e+06 686699 LT +2.33593e+06 687939 LT +2.33769e+06 687939 LT +2.33893e+06 686699 LT +CP BF QS +NP +2.33766e+06 660072 MT +2.33716e+06 659576 LT +2.33646e+06 659576 LT +2.33596e+06 660072 LT +2.33596e+06 673473 LT +2.33646e+06 673969 LT +2.33716e+06 673969 LT +2.33766e+06 673473 LT +CP BF QS +NP +2.33893e+06 735749 MT +2.33769e+06 734509 LT +2.33593e+06 734509 LT +2.33469e+06 735749 LT +2.33469e+06 750201 LT +2.33593e+06 751441 LT +2.33769e+06 751441 LT +2.33893e+06 750201 LT +CP BF QS +NP +2.33766e+06 748975 MT +2.33716e+06 748479 LT +2.33646e+06 748479 LT +2.33596e+06 748975 LT +2.33596e+06 762376 LT +2.33646e+06 762872 LT +2.33716e+06 762872 LT +2.33766e+06 762376 LT +CP BF QS +NP +2.31226e+06 761676 MT +2.31176e+06 761180 LT +2.31106e+06 761180 LT +2.31056e+06 761676 LT +2.31056e+06 787776 LT +2.31106e+06 788272 LT +2.31176e+06 788272 LT +2.31226e+06 787776 LT +CP BF QS +NP +2.31226e+06 634671 MT +2.31176e+06 634175 LT +2.31106e+06 634175 LT +2.31056e+06 634671 LT +2.31056e+06 660772 LT +2.31106e+06 661268 LT +2.31176e+06 661268 LT +2.31226e+06 660772 LT +CP BF QS +NP +2.31353e+06 672247 MT +2.31229e+06 671007 LT +2.31053e+06 671007 LT +2.30929e+06 672247 LT +2.30929e+06 686699 LT +2.31053e+06 687939 LT +2.31229e+06 687939 LT +2.31353e+06 686699 LT +CP BF QS +NP +2.31226e+06 660072 MT +2.31176e+06 659576 LT +2.31106e+06 659576 LT +2.31056e+06 660072 LT +2.31056e+06 673473 LT +2.31106e+06 673969 LT +2.31176e+06 673969 LT +2.31226e+06 673473 LT +CP BF QS +NP +2.31353e+06 735749 MT +2.31229e+06 734509 LT +2.31053e+06 734509 LT +2.30929e+06 735749 LT +2.30929e+06 750201 LT +2.31053e+06 751441 LT +2.31229e+06 751441 LT +2.31353e+06 750201 LT +CP BF QS +NP +2.31226e+06 748975 MT +2.31176e+06 748479 LT +2.31106e+06 748479 LT +2.31056e+06 748975 LT +2.31056e+06 762376 LT +2.31106e+06 762872 LT +2.31176e+06 762872 LT +2.31226e+06 762376 LT +CP BF QS +NP +2.28686e+06 761676 MT +2.28636e+06 761180 LT +2.28566e+06 761180 LT +2.28516e+06 761676 LT +2.28516e+06 787776 LT +2.28566e+06 788272 LT +2.28636e+06 788272 LT +2.28686e+06 787776 LT +CP BF QS +NP +2.28686e+06 634671 MT +2.28636e+06 634175 LT +2.28566e+06 634175 LT +2.28516e+06 634671 LT +2.28516e+06 660772 LT +2.28566e+06 661268 LT +2.28636e+06 661268 LT +2.28686e+06 660772 LT +CP BF QS +NP +2.28813e+06 672247 MT +2.28689e+06 671007 LT +2.28513e+06 671007 LT +2.28389e+06 672247 LT +2.28389e+06 686699 LT +2.28513e+06 687939 LT +2.28689e+06 687939 LT +2.28813e+06 686699 LT +CP BF QS +NP +2.28686e+06 660072 MT +2.28636e+06 659576 LT +2.28566e+06 659576 LT +2.28516e+06 660072 LT +2.28516e+06 673473 LT +2.28566e+06 673969 LT +2.28636e+06 673969 LT +2.28686e+06 673473 LT +CP BF QS +NP +2.28813e+06 735749 MT +2.28689e+06 734509 LT +2.28513e+06 734509 LT +2.28389e+06 735749 LT +2.28389e+06 750201 LT +2.28513e+06 751441 LT +2.28689e+06 751441 LT +2.28813e+06 750201 LT +CP BF QS +NP +2.28686e+06 748975 MT +2.28636e+06 748479 LT +2.28566e+06 748479 LT +2.28516e+06 748975 LT +2.28516e+06 762376 LT +2.28566e+06 762872 LT +2.28636e+06 762872 LT +2.28686e+06 762376 LT +CP BF QS +NP +2.26146e+06 761676 MT +2.26096e+06 761180 LT +2.26026e+06 761180 LT +2.25976e+06 761676 LT +2.25976e+06 787776 LT +2.26026e+06 788272 LT +2.26096e+06 788272 LT +2.26146e+06 787776 LT +CP BF QS +NP +2.26146e+06 634671 MT +2.26096e+06 634175 LT +2.26026e+06 634175 LT +2.25976e+06 634671 LT +2.25976e+06 660772 LT +2.26026e+06 661268 LT +2.26096e+06 661268 LT +2.26146e+06 660772 LT +CP BF QS +NP +2.26273e+06 672247 MT +2.26149e+06 671007 LT +2.25973e+06 671007 LT +2.25849e+06 672247 LT +2.25849e+06 686699 LT +2.25973e+06 687939 LT +2.26149e+06 687939 LT +2.26273e+06 686699 LT +CP BF QS +NP +2.26146e+06 660072 MT +2.26096e+06 659576 LT +2.26026e+06 659576 LT +2.25976e+06 660072 LT +2.25976e+06 673473 LT +2.26026e+06 673969 LT +2.26096e+06 673969 LT +2.26146e+06 673473 LT +CP BF QS +NP +2.26273e+06 735749 MT +2.26149e+06 734509 LT +2.25973e+06 734509 LT +2.25849e+06 735749 LT +2.25849e+06 750201 LT +2.25973e+06 751441 LT +2.26149e+06 751441 LT +2.26273e+06 750201 LT +CP BF QS +NP +2.26146e+06 748975 MT +2.26096e+06 748479 LT +2.26026e+06 748479 LT +2.25976e+06 748975 LT +2.25976e+06 762376 LT +2.26026e+06 762872 LT +2.26096e+06 762872 LT +2.26146e+06 762376 LT +CP BF QS +NP +2.23606e+06 761676 MT +2.23556e+06 761180 LT +2.23486e+06 761180 LT +2.23436e+06 761676 LT +2.23436e+06 787776 LT +2.23486e+06 788272 LT +2.23556e+06 788272 LT +2.23606e+06 787776 LT +CP BF QS +NP +2.23606e+06 634671 MT +2.23556e+06 634175 LT +2.23486e+06 634175 LT +2.23436e+06 634671 LT +2.23436e+06 660772 LT +2.23486e+06 661268 LT +2.23556e+06 661268 LT +2.23606e+06 660772 LT +CP BF QS +NP +2.23733e+06 672247 MT +2.23609e+06 671007 LT +2.23433e+06 671007 LT +2.23309e+06 672247 LT +2.23309e+06 686699 LT +2.23433e+06 687939 LT +2.23609e+06 687939 LT +2.23733e+06 686699 LT +CP BF QS +NP +2.23606e+06 660072 MT +2.23556e+06 659576 LT +2.23486e+06 659576 LT +2.23436e+06 660072 LT +2.23436e+06 673473 LT +2.23486e+06 673969 LT +2.23556e+06 673969 LT +2.23606e+06 673473 LT +CP BF QS +NP +2.23733e+06 735749 MT +2.23609e+06 734509 LT +2.23433e+06 734509 LT +2.23309e+06 735749 LT +2.23309e+06 750201 LT +2.23433e+06 751441 LT +2.23609e+06 751441 LT +2.23733e+06 750201 LT +CP BF QS +NP +2.23606e+06 748975 MT +2.23556e+06 748479 LT +2.23486e+06 748479 LT +2.23436e+06 748975 LT +2.23436e+06 762376 LT +2.23486e+06 762872 LT +2.23556e+06 762872 LT +2.23606e+06 762376 LT +CP BF QS +NP +2.35798e+06 659546 MT +2.35674e+06 658306 LT +2.21528e+06 658306 LT +2.21404e+06 659546 LT +2.21404e+06 661298 LT +2.21528e+06 662538 LT +2.35674e+06 662538 LT +2.35798e+06 661298 LT +CP BF QS +NP +2.35798e+06 659546 MT +2.35674e+06 658306 LT +2.35498e+06 658306 LT +2.35374e+06 659546 LT +2.35374e+06 762902 LT +2.35498e+06 764142 LT +2.35674e+06 764142 LT +2.35798e+06 762902 LT +CP BF QS +NP +2.35798e+06 761150 MT +2.35674e+06 759910 LT +2.21528e+06 759910 LT +2.21404e+06 761150 LT +2.21404e+06 762902 LT +2.21528e+06 764142 LT +2.35674e+06 764142 LT +2.35798e+06 762902 LT +CP BF QS +NP +2.21828e+06 659546 MT +2.21704e+06 658306 LT +2.21528e+06 658306 LT +2.21404e+06 659546 LT +2.21404e+06 762902 LT +2.21528e+06 764142 LT +2.21704e+06 764142 LT +2.21828e+06 762902 LT +CP BF QS +NP +2.23606e+06 507667 MT +2.23556e+06 507171 LT +2.23486e+06 507171 LT +2.23436e+06 507667 LT +2.23436e+06 533768 LT +2.23486e+06 534264 LT +2.23556e+06 534264 LT +2.23606e+06 533768 LT +CP BF QS +NP +2.25553e+06 507491 MT +2.25479e+06 506747 LT +2.21563e+06 506747 LT +2.21489e+06 507491 LT +2.21489e+06 508543 LT +2.21563e+06 509287 LT +2.25479e+06 509287 LT +2.25553e+06 508543 LT +CP BF QS +NP +492762 888504 MT +492018 887760 LT +490966 887760 LT +490222 888504 LT +490222 940357 LT +490966 941101 LT +492018 941101 LT +492762 940357 LT +CP BF QS +NP +474982 888504 MT +474238 887760 LT +473186 887760 LT +472442 888504 LT +472442 940357 LT +473186 941101 LT +474238 941101 LT +474982 940357 LT +CP BF QS +NP +483448 939481 MT +482952 938985 LT +482252 938985 LT +481756 939481 LT +481756 965582 LT +482252 966078 LT +482952 966078 LT +483448 965582 LT +CP BF QS +NP +492762 939305 MT +492018 938561 LT +473186 938561 LT +472442 939305 LT +472442 940357 LT +473186 941101 LT +492018 941101 LT +492762 940357 LT +CP BF QS +NP +492762 888504 MT +492018 887760 LT +473186 887760 LT +472442 888504 LT +472442 889556 LT +473186 890300 LT +492018 890300 LT +492762 889556 LT +CP BF QS +NP +483448 863279 MT +482952 862783 LT +482252 862783 LT +481756 863279 LT +481756 889380 LT +482252 889876 LT +482952 889876 LT +483448 889380 LT +CP BF QS +NP +492762 507491 MT +492018 506747 LT +490966 506747 LT +490222 507491 LT +490222 559345 LT +490966 560089 LT +492018 560089 LT +492762 559345 LT +CP BF QS +NP +474982 507491 MT +474238 506747 LT +473186 506747 LT +472442 507491 LT +472442 559345 LT +473186 560089 LT +474238 560089 LT +474982 559345 LT +CP BF QS +NP +483448 558469 MT +482952 557973 LT +482252 557973 LT +481756 558469 LT +481756 584570 LT +482252 585066 LT +482952 585066 LT +483448 584570 LT +CP BF QS +NP +492762 558293 MT +492018 557549 LT +473186 557549 LT +472442 558293 LT +472442 559345 LT +473186 560089 LT +492018 560089 LT +492762 559345 LT +CP BF QS +NP +492762 507491 MT +492018 506747 LT +473186 506747 LT +472442 507491 LT +472442 508543 LT +473186 509287 LT +492018 509287 LT +492762 508543 LT +CP BF QS +NP +483448 482266 MT +482952 481770 LT +482252 481770 LT +481756 482266 LT +481756 508367 LT +482252 508863 LT +482952 508863 LT +483448 508367 LT +CP BF QS +NP +610449 939481 MT +609953 938985 LT +609253 938985 LT +608757 939481 LT +608757 965582 LT +609253 966078 LT +609953 966078 LT +610449 965582 LT +CP BF QS +NP +610449 888680 MT +609953 888184 LT +609253 888184 LT +608757 888680 LT +608757 914781 LT +609253 915277 LT +609953 915277 LT +610449 914781 LT +CP BF QS +589280 919480 40641 5081 R +589280 929640 40641 5081 R +NP +610449 934401 MT +609953 933905 LT +609253 933905 LT +608757 934401 LT +608757 940181 LT +609253 940677 LT +609953 940677 LT +610449 940181 LT +CP BF QS +NP +610449 914081 MT +609953 913585 LT +609253 913585 LT +608757 914081 LT +608757 919861 LT +609253 920357 LT +609953 920357 LT +610449 919861 LT +CP BF QS +NP +737449 888680 MT +736953 888184 LT +736253 888184 LT +735757 888680 LT +735757 914781 LT +736253 915277 LT +736953 915277 LT +737449 914781 LT +CP BF QS +NP +737449 939481 MT +736953 938985 LT +736253 938985 LT +735757 939481 LT +735757 965582 LT +736253 966078 LT +736953 966078 LT +737449 965582 LT +CP BF QS +NP +753113 930415 MT +752369 929671 LT +720837 929671 LT +720093 930415 LT +720093 931467 LT +720837 932211 LT +752369 932211 LT +753113 931467 LT +CP BF QS +NP +753113 930415 MT +752369 929671 LT +751317 929671 LT +750573 930415 LT +750573 940357 LT +751317 941101 LT +752369 941101 LT +753113 940357 LT +CP BF QS +NP +722633 930415 MT +721889 929671 LT +720837 929671 LT +720093 930415 LT +720093 940357 LT +720837 941101 LT +721889 941101 LT +722633 940357 LT +CP BF QS +[0 -1 1 0 2114.19 2379.47]ST +F4 F +0 Y<0009>23 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +753113 939305 MT +752369 938561 LT +720837 938561 LT +720093 939305 LT +720093 940357 LT +720837 941101 LT +752369 941101 LT +753113 940357 LT +CP BF QS +720090 914400 33021 8891 R +NP +610449 482266 MT +609953 481770 LT +609253 481770 LT +608757 482266 LT +608757 508367 LT +609253 508863 LT +609953 508863 LT +610449 508367 LT +CP BF QS +NP +610449 507667 MT +609953 507171 LT +609253 507171 LT +608757 507667 LT +608757 533768 LT +609253 534264 LT +609953 534264 LT +610449 533768 LT +CP BF QS +NP +623573 494791 MT +622829 494047 LT +621777 494047 LT +621260 494564 LT +608333 520418 LT +608333 521243 LT +609077 521987 LT +610129 521987 LT +610646 521470 LT +623573 495616 LT +CP BF QS +NP +597946 494564 MT +597429 494047 LT +596377 494047 LT +595633 494791 LT +595633 495616 LT +608560 521470 LT +609077 521987 LT +610129 521987 LT +610873 521243 LT +610873 520418 LT +CP BF QS +NP +610873 520191 MT +610129 519447 LT +596377 519447 LT +595633 520191 LT +595633 521243 LT +596377 521987 LT +610129 521987 LT +610873 521243 LT +CP BF QS +NP +623573 494791 MT +622829 494047 LT +596377 494047 LT +595633 494791 LT +595633 495843 LT +596377 496587 LT +622829 496587 LT +623573 495843 LT +CP BF QS +NP +623573 520191 MT +622829 519447 LT +609077 519447 LT +608333 520191 LT +608333 521243 LT +609077 521987 LT +622829 521987 LT +623573 521243 LT +CP BF QS +NP +623573 513841 MT +622829 513097 LT +621777 513097 LT +621033 513841 LT +621033 521243 LT +621777 521987 LT +622829 521987 LT +623573 521243 LT +CP BF QS +NP +737449 482266 MT +736953 481770 LT +736253 481770 LT +735757 482266 LT +735757 508367 LT +736253 508863 LT +736953 508863 LT +737449 508367 LT +CP BF QS +NP +737449 507667 MT +736953 507171 LT +736253 507171 LT +735757 507667 LT +735757 533768 LT +736253 534264 LT +736953 534264 LT +737449 533768 LT +CP BF QS +NP +750573 494791 MT +749829 494047 LT +748777 494047 LT +748260 494564 LT +735333 520418 LT +735333 521243 LT +736077 521987 LT +737129 521987 LT +737646 521470 LT +750573 495616 LT +CP BF QS +NP +724946 494564 MT +724429 494047 LT +723377 494047 LT +722633 494791 LT +722633 495616 LT +735560 521470 LT +736077 521987 LT +737129 521987 LT +737873 521243 LT +737873 520418 LT +CP BF QS +NP +737873 520191 MT +737129 519447 LT +723377 519447 LT +722633 520191 LT +722633 521243 LT +723377 521987 LT +737129 521987 LT +737873 521243 LT +CP BF QS +NP +750573 494791 MT +749829 494047 LT +723377 494047 LT +722633 494791 LT +722633 495843 LT +723377 496587 LT +749829 496587 LT +750573 495843 LT +CP BF QS +NP +750573 520191 MT +749829 519447 LT +736077 519447 LT +735333 520191 LT +735333 521243 LT +736077 521987 LT +749829 521987 LT +750573 521243 LT +CP BF QS +NP +750573 513841 MT +749829 513097 LT +748777 513097 LT +748033 513841 LT +748033 521243 LT +748777 521987 LT +749829 521987 LT +750573 521243 LT +CP BF QS +NP +610449 406064 MT +609953 405568 LT +609253 405568 LT +608757 406064 LT +608757 432164 LT +609253 432660 LT +609953 432660 LT +610449 432164 LT +CP BF QS +NP +629923 405888 MT +629179 405144 LT +590027 405144 LT +589283 405888 LT +589283 406940 LT +590027 407684 LT +629179 407684 LT +629923 406940 LT +CP BF QS +NP +737449 406064 MT +736953 405568 LT +736253 405568 LT +735757 406064 LT +735757 432164 LT +736253 432660 LT +736953 432660 LT +737449 432164 LT +CP BF QS +NP +756923 405888 MT +756179 405144 LT +717027 405144 LT +716283 405888 LT +716283 406940 LT +717027 407684 LT +756179 407684 LT +756923 406940 LT +CP BF QS +NP +483448 406064 MT +482952 405568 LT +482252 405568 LT +481756 406064 LT +481756 432164 LT +482252 432660 LT +482952 432660 LT +483448 432164 LT +CP BF QS +NP +502922 405888 MT +502178 405144 LT +463026 405144 LT +462282 405888 LT +462282 406940 LT +463026 407684 LT +502178 407684 LT +502922 406940 LT +CP BF QS +NP +610449 787076 MT +609953 786580 LT +609253 786580 LT +608757 787076 LT +608757 813177 LT +609253 813673 LT +609953 813673 LT +610449 813177 LT +CP BF QS +NP +629923 786900 MT +629179 786156 LT +590027 786156 LT +589283 786900 LT +589283 787952 LT +590027 788696 LT +629179 788696 LT +629923 787952 LT +CP BF QS +NP +737449 787076 MT +736953 786580 LT +736253 786580 LT +735757 787076 LT +735757 813177 LT +736253 813673 LT +736953 813673 LT +737449 813177 LT +CP BF QS +NP +756923 786900 MT +756179 786156 LT +717027 786156 LT +716283 786900 LT +716283 787952 LT +717027 788696 LT +756179 788696 LT +756923 787952 LT +CP BF QS +NP +2.00746e+06 1.4221e+06 MT +2.00696e+06 1.4216e+06 LT +1.95546e+06 1.4216e+06 LT +1.95496e+06 1.4221e+06 LT +1.95496e+06 1.4228e+06 LT +1.95546e+06 1.42329e+06 LT +2.00696e+06 1.42329e+06 LT +2.00746e+06 1.4228e+06 LT +CP BF QS +NP +2.00746e+06 1.3967e+06 MT +2.00696e+06 1.3962e+06 LT +1.95546e+06 1.3962e+06 LT +1.95496e+06 1.3967e+06 LT +1.95496e+06 1.3974e+06 LT +1.95546e+06 1.39789e+06 LT +2.00696e+06 1.39789e+06 LT +2.00746e+06 1.3974e+06 LT +CP BF QS +NP +2.00746e+06 1.3713e+06 MT +2.00696e+06 1.3708e+06 LT +1.95546e+06 1.3708e+06 LT +1.95496e+06 1.3713e+06 LT +1.95496e+06 1.372e+06 LT +1.95546e+06 1.37249e+06 LT +2.00696e+06 1.37249e+06 LT +2.00746e+06 1.372e+06 LT +CP BF QS +NP +2.04682e+06 1.44697e+06 MT +2.04558e+06 1.44573e+06 LT +1.99303e+06 1.44573e+06 LT +1.99179e+06 1.44697e+06 LT +1.99179e+06 1.44872e+06 LT +1.99303e+06 1.44996e+06 LT +2.04558e+06 1.44996e+06 LT +2.04682e+06 1.44872e+06 LT +CP BF QS +NP +2.02227e+06 1.37042e+06 MT +2.02054e+06 1.36868e+06 LT +2.00538e+06 1.36868e+06 LT +2.00365e+06 1.37042e+06 LT +2.00365e+06 1.37287e+06 LT +2.00538e+06 1.37461e+06 LT +2.02054e+06 1.37461e+06 LT +2.02227e+06 1.37287e+06 LT +CP BF QS +NP +2.02227e+06 1.39582e+06 MT +2.02054e+06 1.39408e+06 LT +2.00538e+06 1.39408e+06 LT +2.00365e+06 1.39582e+06 LT +2.00365e+06 1.39827e+06 LT +2.00538e+06 1.40001e+06 LT +2.02054e+06 1.40001e+06 LT +2.02227e+06 1.39827e+06 LT +CP BF QS +NP +2.02227e+06 1.42122e+06 MT +2.02054e+06 1.41948e+06 LT +2.00538e+06 1.41948e+06 LT +2.00365e+06 1.42122e+06 LT +2.00365e+06 1.42368e+06 LT +2.00538e+06 1.42541e+06 LT +2.02054e+06 1.42541e+06 LT +2.02227e+06 1.42368e+06 LT +CP BF QS +NP +2.04682e+06 1.34537e+06 MT +2.04558e+06 1.34413e+06 LT +2.04383e+06 1.34413e+06 LT +2.04259e+06 1.34537e+06 LT +2.04259e+06 1.44872e+06 LT +2.04383e+06 1.44996e+06 LT +2.04558e+06 1.44996e+06 LT +2.04682e+06 1.44872e+06 LT +CP BF QS +NP +1.99602e+06 1.34537e+06 MT +1.99478e+06 1.34413e+06 LT +1.99303e+06 1.34413e+06 LT +1.99179e+06 1.34537e+06 LT +1.99179e+06 1.44872e+06 LT +1.99303e+06 1.44996e+06 LT +1.99478e+06 1.44996e+06 LT +1.99602e+06 1.44872e+06 LT +CP BF QS +NP +2.04682e+06 1.34537e+06 MT +2.04558e+06 1.34413e+06 LT +1.99303e+06 1.34413e+06 LT +1.99179e+06 1.34537e+06 LT +1.99179e+06 1.34712e+06 LT +1.99303e+06 1.34836e+06 LT +2.04558e+06 1.34836e+06 LT +2.04682e+06 1.34712e+06 LT +CP BF QS +NP +1.80425e+06 1.24429e+06 MT +1.80376e+06 1.2438e+06 LT +1.80306e+06 1.2438e+06 LT +1.80256e+06 1.24429e+06 LT +1.80256e+06 1.27039e+06 LT +1.80306e+06 1.27089e+06 LT +1.80376e+06 1.27089e+06 LT +1.80425e+06 1.27039e+06 LT +CP BF QS +NP +1.82373e+06 1.24412e+06 MT +1.82298e+06 1.24337e+06 LT +1.78383e+06 1.24337e+06 LT +1.78309e+06 1.24412e+06 LT +1.78309e+06 1.24517e+06 LT +1.78383e+06 1.24591e+06 LT +1.82298e+06 1.24591e+06 LT +1.82373e+06 1.24517e+06 LT +CP BF QS +[1 0 0 1 3402.79 2647.07]ST +1 0 128 d2 1 1 PE +1 128 d2 BR +F5 F +0 Y<00240026000C0032001C000600230033>235 0 AT +[1 0 0 1 3743.19 2620.67]ST +0 Y<00010018>56 0 AT +[1 0 0 1 2843.19 1807.09]ST +0 Y<00240026001600320034003500360037000200380035001B001C000600020033>467 0 AT +[1 0 0 1 2679.79 1780.69]ST +0 Y<00010019>56 0 AT +[1 0 0 1 2843.19 1687.1]ST +0 Y<00240026001500320034003500360037000100380035001B001C000600010033>467 0 AT +[1 0 0 1 2707.79 1660.7]ST +0 Y<0018>28 0 AT +[1 0 0 1 2843.19 1987.09]ST +0 Y<000A000B0007>112 0 AT +[1 0 0 1 2707.79 1960.69]ST +0 Y<0017>28 0 AT +[1 0 0 1 2843.19 2107.08]ST +0 Y<000500060006>108 0 AT +[1 0 0 1 2707.79 2080.68]ST +0 Y<0016>28 0 AT +[1 0 0 1 2843.19 1387.11]ST +0 Y<0036000A000B0007>146 0 AT +[1 0 0 1 2679.79 1360.71]ST +0 Y<00020002>56 0 AT +[1 0 0 1 2843.19 1447.11]ST +0 Y<003600200039003A>136 0 AT +[1 0 0 1 2687.79 1420.71]ST +0 Y<00020001>56 0 AT +[1 0 0 1 2843.19 1507.1]ST +0 Y<0036000500060006>142 0 AT +[1 0 0 1 2679.79 1480.7]ST +0 Y<00020019>56 0 AT +[1 0 0 1 3380.79 2587.07]ST +0 Y<0024002600040032001A001D001C001B0033>257 0 AT +[1 0 0 1 3743.19 2560.67]ST +0 Y<00010017>56 0 AT +[1 0 0 1 3263.79 2527.07]ST +0 Y<0024002600030032001A001B001C001D0038001B000600020033>374 0 AT +[1 0 0 1 3743.19 2500.67]ST +0 Y<00010016>56 0 AT +[1 0 0 1 3288.79 2467.07]ST +0 Y<0024002600020032001C001C0038001B0006000100260033>349 0 AT +[1 0 0 1 3743.19 2440.67]ST +0 Y<00010015>56 0 AT +[1 0 0 1 3370.79 2407.07]ST +0 Y<0024002600010032001B0006000100360033>267 0 AT +[1 0 0 1 3743.19 2380.67]ST +0 Y<0001000C>56 0 AT +[1 0 0 1 3422.79 2347.08]ST +0 Y<0024002600190032001D000600240033>215 0 AT +[1 0 0 1 3743.19 2320.68]ST +0 Y<00010004>56 0 AT +[1 0 0 1 3391.79 2227.08]ST +0 Y<00240007001600320036001D000B00010033>246 0 AT +[1 0 0 1 3743.19 2200.68]ST +0 Y<00010003>56 0 AT +[1 0 0 1 3391.79 2167.08]ST +0 Y<00240007001500320036001D000B00190033>246 0 AT +[1 0 0 1 3743.19 2140.68]ST +0 Y<00010002>56 0 AT +[1 0 0 1 3445.79 2107.09]ST +0 Y<00240007000C0032003500010033>192 0 AT +[1 0 0 1 3743.19 2080.68]ST +0 Y<00010001>56 0 AT +[1 0 0 1 3326.79 2047.09]ST +0 Y<00240007000400320034000600230038003500190033>311 0 AT +[1 0 0 1 3743.19 2020.69]ST +0 Y<0015>28 0 AT +[1 0 0 1 3394.79 1987.09]ST +0 Y<0024000700030032001D000B003500010033>243 0 AT +[1 0 0 1 3743.19 1960.69]ST +0 Y<000C>28 0 AT +[1 0 0 1 3394.79 1927.09]ST +0 Y<0024000700020032001D000B003500190033>243 0 AT +[1 0 0 1 3743.19 1900.69]ST +0 Y<0004>28 0 AT +[1 0 0 1 3402.79 1867.09]ST +0 Y<00240007000100320035003400070033>235 0 AT +[1 0 0 1 3743.19 1840.69]ST +0 Y<0003>28 0 AT +[1 0 0 1 3396.79 1807.1]ST +0 Y<00240007001900320020003400070033>241 0 AT +[1 0 0 1 3743.19 1780.69]ST +0 Y<0002>28 0 AT +[1 0 0 1 3255.79 1567.1]ST +0 Y<00240006000C0032003600070006000C0038001C000600370033>382 0 AT +[1 0 0 1 3743.19 1540.7]ST +0 Y<00020017>56 0 AT +[1 0 0 1 3249.79 1507.11]ST +0 Y<002400060004003200360007000600040038001C000700360033>388 0 AT +[1 0 0 1 3743.19 1480.7]ST +0 Y<00020016>56 0 AT +[1 0 0 1 3368.79 1447.11]ST +0 Y<002400060003003200360007000600030033>269 0 AT +[1 0 0 1 3743.19 1420.71]ST +0 Y<00020015>56 0 AT +[1 0 0 1 3368.79 1387.11]ST +0 Y<002400060002003200360007000600020033>269 0 AT +[1 0 0 1 3743.19 1360.71]ST +0 Y<0002000C>56 0 AT +[1 0 0 1 3368.79 1327.11]ST +0 Y<002400060001003200360007000600010033>269 0 AT +[1 0 0 1 3743.19 1300.71]ST +0 Y<00020004>56 0 AT +[1 0 0 1 3368.79 1267.11]ST +0 Y<002400060019003200360007000600190033>269 0 AT +[1 0 0 1 3743.19 1240.71]ST +0 Y<00020003>56 0 AT +[1 0 0 1 2843.19 1267.11]ST +0 Y<0024000600150032003800200039001C003900350033>317 0 AT +[1 0 0 1 2715.79 1240.71]ST +0 Y<0001>28 0 AT +[1 0 0 1 2787.99 2809.06]ST +F1 F +0 Y<001D00060001>91 0 AT +[-0 -1 1 0 4065.38 2850.06]ST +0 Y<00200004>75 0 AT +[-0 -1 1 0 4305.38 2850.06]ST +0 Y<0020000C>75 0 AT +[1 0 0 1 876.398 2920.66]ST +F5 F +0 Y<0001>28 0 AT +[1 0 0 1 876.398 2980.65]ST +0 Y<0002>28 0 AT +[1 0 0 1 876.398 3040.65]ST +0 Y<0003>28 0 AT +[1 0 0 1 876.398 3100.65]ST +0 Y<0004>28 0 AT +[1 0 0 1 808.998 2839.06]ST +F1 F +0 Y<00340001>71 0 AT +[0 -1 1 0 2403.99 1609.1]ST +0 Y<003B0001>78 0 AT +[0 -1 1 0 2118.99 1513.1]ST +0 Y<00060003>75 0 AT +[0 -1 1 0 2118.99 1753.1]ST +0 Y<00060004>75 0 AT +[0 -1 1 0 5899.58 2800.66]ST +F5 F +0 Y<0001>28 0 AT +[0 -1 1 0 5899.58 3082.45]ST +0 Y<0002>28 0 AT +[-0 -1 1 0 6009.98 2896.06]ST +F1 F +0 Y<003C00240001>99 0 AT +[0 -1 1 0 5839.58 2800.66]ST +F5 F +0 Y<0003>28 0 AT +[0 -1 1 0 5839.58 3082.45]ST +0 Y<0004>28 0 AT +[0 -1 1 0 5779.58 2800.66]ST +0 Y<000C>28 0 AT +[0 -1 1 0 5779.58 3082.45]ST +0 Y<0015>28 0 AT +[0 -1 1 0 5719.58 2800.66]ST +0 Y<0016>28 0 AT +[0 -1 1 0 5719.58 3082.45]ST +0 Y<0017>28 0 AT +[0 -1 1 0 5659.58 2800.66]ST +0 Y<0018>28 0 AT +[0 -1 1 0 5659.58 3110.45]ST +0 Y<00010019>56 0 AT +[0 -1 1 0 1492.6 2539.07]ST +F1 F +0 Y<00200001>75 0 AT +[0 -1 1 0 1492.6 3439.04]ST +0 Y<00200002>75 0 AT +[1 0 0 1 1863.99 2380.07]ST +0 Y<00060001>75 0 AT +[1 0 0 1 2154.99 2377.67]ST +0 Y<00060002>75 0 AT +[0 -1 1 0 1782.99 3451.04]ST +0 Y<00070001>75 0 AT +[0 -1 1 0 2082.99 3451.04]ST +0 Y<00070002>75 0 AT +[1 0 0 1 5055.78 1240.71]ST +F5 F +0 Y<0001>28 0 AT +[1 0 0 1 5047.78 1300.71]ST +0 Y<0002>28 0 AT +[1 0 0 1 5047.78 1360.71]ST +0 Y<0003>28 0 AT +[1 0 0 1 5014.98 1489.11]ST +F1 F +0 Y<001C003900200005001B>204 0 AT +[1 0 0 1 987.997 3109.05]ST +F6 F +0 Y<000A000B0007>106 0 AT +[1 0 0 1 4827.98 1369.11]ST +0 Y<000A000B0007>106 0 AT +[1 0 0 1 987.997 2989.05]ST +0 Y<00070008>51 0 AT +[1 0 0 1 987.997 3049.05]ST +0 Y<00070009>62 0 AT +[1 0 0 1 987.997 2929.06]ST +0 Y<000500060006>102 0 AT +[1 0 0 1 4827.98 1309.11]ST +0 Y<000500060006>102 0 AT +[1 0 0 1 4827.98 1249.11]ST +0 Y<002400250037001C0039>157 0 AT +[1 0 0 1 3087.99 1129.12]ST +F1 F +0 Y<001A0039000A0036001700080024>261 0 AT +[-0 -1 1 0 3951.98 2839.06]ST +0 Y<00150017>64 0 AT +[-0 -1 1 0 4191.98 2839.06]ST +0 Y<00150017>64 0 AT +[1 0 0 1 1168 3709.03]ST +0 Y<000A000B0007>130 0 AT +[-0 -1 1 0 2529.99 2033.09]ST +0 Y<000A000B0007>130 0 AT +[0 -1 1 0 2487.99 1609.1]ST +0 Y<00010002001A003D003E>183 0 AT +[0 -1 1 0 2238.99 1513.1]ST +0 Y<000200020028>96 0 AT +[0 -1 1 0 2238.99 1753.1]ST +0 Y<000200020028>96 0 AT +[-0 -1 1 0 1929.99 1613.1]ST +0 Y<000A000B0007>130 0 AT +[-0 -1 1 0 1929.99 1853.1]ST +0 Y<000A000B0007>130 0 AT +[-0 -1 1 0 5604.98 2900.06]ST +0 Y<001D001C0024>94 0 AT +[1 0 0 1 5607.98 3469.04]ST +0 Y<000A000B0007>130 0 AT +[0 -1 1 0 1605.99 2539.07]ST +0 Y<0002002F0002>92 0 AT +[0 -1 1 0 1605.99 3439.04]ST +0 Y<0004002F0016>92 0 AT +[1 0 0 1 1863.99 2500.07]ST +0 Y<0001001900190013>128 0 AT +[1 0 0 1 2154.99 2497.67]ST +0 Y<000100190012>96 0 AT +[0 -1 1 0 1908.99 3451.04]ST +0 Y<0003001E00150005>119 0 AT +[0 -1 1 0 2208.99 3451.04]ST +0 Y<0003001E00150005>119 0 AT +[1 0 0 1 1767.99 3709.03]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 2067.99 3709.03]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 1468 3709.03]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 1767.99 2809.06]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 2067.99 2809.06]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 4587.98 1729.1]ST +0 Y<000A000B0007>130 0 AT + +QP +%%Trailer +%%Pages: 1 +%%DocumentFonts: Helvetica +%%EOF diff --git a/circuit/partlist.txt b/circuit/partlist.txt new file mode 100644 index 0000000..e0030e9 --- /dev/null +++ b/circuit/partlist.txt @@ -0,0 +1,23 @@ +Partlist + +Exported from circuit.sch at 10/24/2006 21:35:25 + +EAGLE Version 4.16 Copyright (c) 1988-2005 CadSoft + +Part Value Device Package Library Sheet + +C1 100n C-EU025-024X044 C025-024X044 rcl 1 +C2 10u CPOL-EUE2.5-5 E2,5-5 rcl 1 +C3 22p C-EU025-024X044 C025-024X044 rcl 1 +C4 22p C-EU025-024X044 C025-024X044 rcl 1 +D1 3.6V ZENER-DIODEDO35Z10 DO35Z10 diode 1 +D2 3.6V ZENER-DIODEDO35Z10 DO35Z10 diode 1 +IC1 MEGA8-P MEGA8-P DIL28-3 avr 1 +JP1 ISP JP5Q JP5Q jumper 1 +Q1 12MHz CRYTALHC18U-V HC18U-V crystal 1 +R1 2k2 R-EU_0207/10 0207/10 rcl 1 +R2 4k7 R-EU_0207/10 0207/10 rcl 1 +R4 68 R-EU_0207/10 0207/10 rcl 1 +R5 68 R-EU_0207/10 0207/10 rcl 1 +SERVO MA03-1 MA03-1 con-lstb 1 +X1 PN61729 PN61729 con-berg 1 diff --git a/commandline/Makefile b/commandline/Makefile new file mode 100644 index 0000000..a863aeb --- /dev/null +++ b/commandline/Makefile @@ -0,0 +1,26 @@ +# $Id: Makefile,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + +CC = gcc +LIBUSB_CONFIG = libusb-config +# Make sure that libusb-config is in the search path or specify a full path. On +# Windows, there is no libusb-config and you must configure the options below +# manually. See examples. + +CFLAGS = `$(LIBUSB_CONFIG) --cflags` -O -Wall -I../common + +USBLIBS = `$(LIBUSB_CONFIG) --libs` +XSPLIBS = -lX11 -lm + +all: usb-servo xservopointer + +usb-servo: usb-servo.o usbdrv.o + $(CC) $(CFLAGS) -o usb-servo usb-servo.o usbdrv.o $(USBLIBS) + +xservopointer: xservopointer.o usbdrv.o + $(CC) $(CFLAGS) -o xservopointer xservopointer.o usbdrv.o $(USBLIBS) $(XSPLIBS) + +.c.o: + $(CC) $(CFLAGS) -c $*.c -o $*.o + +clean: + rm -f usb-servo xservopointer *.o diff --git a/commandline/usb-servo.c b/commandline/usb-servo.c new file mode 100644 index 0000000..2655104 --- /dev/null +++ b/commandline/usb-servo.c @@ -0,0 +1,75 @@ +/** + * \file usb-servo.c + * \brief Commandline-tool for the USB-Servo. + * \author Ronald Schaten + * \version $Id: usb-servo.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include /* this is libusb, see + http://libusb.sourceforge.net/ */ + +#include "usbdrv.h" + +/** + * Displays usage-information. This function is called if the parameters cannot + * be parsed. + * \param name The name of this application. + */ +void usage(char *name) { + fprintf(stderr, "usage:\n"); + fprintf(stderr, " %s status\n", name); + fprintf(stderr, " %s set \n", name); + fprintf(stderr, " %s test\n\n", name); + fprintf(stderr, "parameters:\n"); + fprintf(stderr, " angle: Required angle for the servo.\n"); +} + +/** + * Main function. Initializes the USB-device, parses commandline-parameters and + * calls the functions that communicate with the device. + * \param argc Number of arguments. + * \param argv Arguments. + * \return Error code. + */ +int main(int argc, char **argv) { + usb_dev_handle *handle = NULL; + + if (argc < 2) { + usage(argv[0]); + exit(1); + } + usb_init(); + if (usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, "www.schatenseite.de", + USBDEV_SHARED_PRODUCT, "USB-Servo") != 0) { + fprintf(stderr, + "Could not find USB device \"USB-Servo\" with vid=0x%x pid=0x%x\n", + USBDEV_SHARED_VENDOR, USBDEV_SHARED_PRODUCT); + exit(1); + } + /* We have searched all devices on all busses for our USB device + above. Now try to open it and perform the vendor specific control + operations for the function requested by the user. */ + if (strcmp(argv[1], "test") == 0) { + if (dev_test(handle, argc, argv) != 0) { + usage(argv[1]); + } + } else if (strcmp(argv[1], "set") == 0) { + if (dev_set(handle, argc, argv) != 0) { + usage(argv[1]); + } + } else if (strcmp(argv[1], "status") == 0) { + if (dev_status(handle, argc, argv) != 0) { + usage(argv[1]); + } + } else { + usage(argv[0]); + exit(1); + } + usb_close(handle); + return 0; +} diff --git a/commandline/usbdrv.c b/commandline/usbdrv.c new file mode 100644 index 0000000..ce7f0e3 --- /dev/null +++ b/commandline/usbdrv.c @@ -0,0 +1,207 @@ +/** + * \file usbdrv.c + * \brief USB-driver-parts for implementing a client. + * \author Ronald Schaten + * \version $Id: usbdrv.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include /* this is libusb, see + http://libusb.sourceforge.net/ */ + +#include "usbdrv.h" +#include "usbservo.h" + +int usbGetStringAscii(usb_dev_handle * dev, int index, int langid, + char *buf, int buflen) { + char buffer[256]; + int rval, i; + + if ((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, + (USB_DT_STRING << 8) + index, langid, buffer, + sizeof(buffer), 1000)) < 0) { + return rval; + } + if (buffer[1] != USB_DT_STRING) { + return 0; + } + if ((unsigned char)buffer[0] < rval) { + rval = (unsigned char)buffer[0]; + } + rval /= 2; + /* lossy conversion to ISO Latin1 */ + for (i = 1; i < rval; i++) { + if (i > buflen) { + /* destination buffer overflow */ + break; + } + buf[i - 1] = buffer[2 * i]; + if (buffer[2 * i + 1] != 0) { + /* outside of ISO Latin1 range */ + buf[i - 1] = '?'; + } + } + buf[i - 1] = 0; + return i - 1; +} + +int usbOpenDevice(usb_dev_handle ** device, int vendor, char *vendorName, + int product, char *productName) { + struct usb_bus *bus; + struct usb_device *dev; + usb_dev_handle *handle = NULL; + int errorCode = USB_ERROR_NOTFOUND; + static int didUsbInit = 0; + + if (!didUsbInit) { + didUsbInit = 1; + usb_init(); + } + usb_find_busses(); + usb_find_devices(); + for (bus = usb_get_busses(); bus; bus = bus->next) { + for (dev = bus->devices; dev; dev = dev->next) { + if (dev->descriptor.idVendor == vendor + && dev->descriptor.idProduct == product) { + char string[256]; + int len; + handle = usb_open(dev); /* we need to open the device in + order to query strings */ + if (!handle) { + errorCode = USB_ERROR_ACCESS; + fprintf(stderr, + "Warning: cannot open USB device: %s\n", + usb_strerror()); + continue; + } + if (vendorName == NULL && productName == NULL) { + /* name does not matter */ + break; + } + /* now check whether the names match: */ + len = usbGetStringAscii(handle, + dev->descriptor.iManufacturer, + 0x0409, string, sizeof(string)); + if (len < 0) { + errorCode = USB_ERROR_IO; + fprintf(stderr, + "Warning: cannot query manufacturer for device: %s\n", + usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + if (strcmp(string, vendorName) == 0) { + len = usbGetStringAscii(handle, + dev->descriptor.iProduct, + 0x0409, string, + sizeof(string)); + if (len < 0) { + errorCode = USB_ERROR_IO; + fprintf(stderr, + "Warning: cannot query product for device: %s\n", + usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + if (strcmp(string, productName) == 0) { + break; + } + } + } + } + usb_close(handle); + handle = NULL; + } + } + if (handle) { + break; + } + } + if (handle != NULL) { + errorCode = 0; + *device = handle; + } + return errorCode; +} + +int dev_test(usb_dev_handle * handle, int argc, char **argv) { + unsigned char buffer[8]; + int nBytes; + int i, v, r; + if (argc != 2) { + return 1; + } + for (i = 0; i < 1000; i++) { + v = rand() & 0xffff; + nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | + USB_ENDPOINT_IN, CMD_ECHO, v, 0, + (char *)buffer, sizeof(buffer), 5000); + if (nBytes < 2) { + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + } + fprintf(stderr, "only %d bytes received in iteration %d\n", + nBytes, i); + exit(1); + } + r = buffer[0] | (buffer[1] << 8); + if (r != v) { + fprintf(stderr, + "data error: received 0x%x instead of 0x%x in iteration %d\n", + r, v, i); + exit(1); + } + } + printf("test succeeded\n"); + return 0; +} + +int dev_set(usb_dev_handle * handle, int argc, char **argv) { + unsigned char buffer[8]; + int nBytes; + if (argc != 3) { + return 1; + } + int angle = atoi(argv[2]); + if ((angle < 0) || (angle > 255)) { + fprintf(stderr, "invalid angle: %d\n", angle); + exit(1); + } + + nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | + USB_ENDPOINT_OUT, CMD_SET, angle, 0, + (char *)buffer, sizeof(buffer), 5000); + + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + exit(1); + } + return 0; +} + +int dev_status(usb_dev_handle * handle, int argc, char **argv) { + int nBytes; + unsigned char buffer[8]; + if (argc != 2) { + return 1; + } + nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | + USB_ENDPOINT_IN, CMD_GET, 0, 0, (char *)buffer, + sizeof(buffer), 5000); + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + exit(1); + } + if (nBytes < 1) { + fprintf(stderr, "only %d bytes status received\n", nBytes); + exit(1); + } + printf("Current servo angle: %d\n", buffer[0]); + return 0; +} + diff --git a/commandline/usbdrv.h b/commandline/usbdrv.h new file mode 100644 index 0000000..c386f1a --- /dev/null +++ b/commandline/usbdrv.h @@ -0,0 +1,74 @@ +/** + * \file usbdrv.h + * \brief USB-driver-parts for implementing a client. + * \author Ronald Schaten + * \version $Id: usbdrv.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include /* this is libusb, see http://libusb.sourceforge.net/ */ + +#include "usbservo.h" + +#define USBDEV_SHARED_VENDOR 0x16C0 /**< VOTI */ +#define USBDEV_SHARED_PRODUCT 0x05DC /**< Obdev's free shared PID. Use obdev's generic shared VID/PID pair and follow the rules outlined in firmware/usbdrv/USBID-License.txt. */ + +/* These are error codes for the communication via USB. */ +#define USB_ERROR_NOTFOUND 1 /**< Error code if the device isn't found. */ +#define USB_ERROR_ACCESS 2 /**< Error code if the device isn't accessible. */ +#define USB_ERROR_IO 3 /**< Error code if errors in the communication with the device occur. */ + +/** + * Reads and converts a string from USB. The conversion to ASCII is 'lossy' (unknown characters become '?'). + * \param dev Handle of the USB-Device. + * \param index Index of the required data. + * \param langid Index of the expected language. + * \param buf Buffer to contain the return-string. + * \param buflen Length of buf. + * \return Length of the string. + */ +int usbGetStringAscii(usb_dev_handle * dev, int index, int langid, char *buf, int buflen); + +/** + * Connect to the USB-device. Loops through all connected USB-Devices and + * searches our counterpart. + * \param device Handle to address the device. + * \param vendor USBDEV_SHARED_VENDOR as defined. + * \param vendorName In our case "www.schatenseite.de". + * \param product USBDEV_SHARED_PRODUCT as defined. + * \param productName In our case "USB-Servo". + * \return Error code. + */ +int usbOpenDevice(usb_dev_handle ** device, int vendor, char *vendorName, int product, char *productName); + +/** + * Test connection to the device. The test consists of writing 1000 random + * numbers to the device and checking the echo. This should discover systematic + * bit errors (e.g. in bit stuffing). + * \param handle Handle to talk to the device. + * \param argc Number of arguments. + * \param argv Arguments. + */ +int dev_test(usb_dev_handle * handle, int argc, char **argv); + +/** + * Set the angle of the Servo. + * \param handle Handle to talk to the device. + * \param argc Number of arguments. + * \param argv Arguments. + */ +int dev_set(usb_dev_handle * handle, int argc, char **argv); + +/** + * Get the status of the device. Status information is printed in detail (we + * dont't have too many details with only one servo). + * \param handle Handle to talk to the device. + * \param argc Number of arguments. + * \param argv Arguments. + */ +int dev_status(usb_dev_handle * handle, int argc, char **argv); + diff --git a/commandline/xservopointer.c b/commandline/xservopointer.c new file mode 100644 index 0000000..9d4e967 --- /dev/null +++ b/commandline/xservopointer.c @@ -0,0 +1,107 @@ +/** + * \file xservopointer.c + * \brief Tool that uses a servo to point to the mouse cursor under X. + * \author Ronald Schaten + * \version $Id: xservopointer.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include + +#include + +#include /* this is libusb, see http://libusb.sourceforge.net/ */ + +#include "usbdrv.h" + +Display *dpy; /** The display to use */ +Window root; /** The root-window of the display */ + +int rootwidth, rootheight; /** Measurements of the desktop */ +int servoposx, servoposy; /** Position of the mouse cursor */ + +usb_dev_handle *handle = NULL; /** Handle to the device */ + +/** + * Determines the current cursor position and sets the servo angle. + */ +void update() { + Window wroot, wchild; + int absx, absy, relx, rely, angle; + static int oldabsx = -1000; + static int oldabsy = -1000; + unsigned int modmask; + unsigned char buffer[8]; + + // get cursor position + XQueryPointer(dpy, root, &wroot, &wchild, &absx, &absy, &relx, &rely, &modmask); + + if (oldabsx == absx && oldabsy == absy) { + // position unchanged + } else { + // calculate new angle + angle = (int)(atan((float)(absx - servoposx) / (absy - servoposy)) * (255 / M_PI)); + angle = 128 - angle; + printf("absx/absy %d/%d -> angle %d\n", absx, absy, angle); + int nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CMD_SET, angle, 0, + (char *)buffer, sizeof(buffer), 5000); + + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + exit(1); + } + } + oldabsx = absx; + oldabsy = absy; +} + +/** + * Main function. Initializes the X-settings and the USB-device, starts the + * timer and calls the update-function. + * \param argc Number of arguments. + * \param argv Arguments. + * \return Error code. + */ +int main(int argc, char *argv[]) { + // values for timer + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 100 * 1000 * 1000; // every 100ms + + // open display + dpy = XOpenDisplay(NULL); + if (dpy == NULL) { + fprintf(stderr, "xservopointer: Unable to open display\n"); + exit(1); + } + + root = DefaultRootWindow(dpy); + + // determine screen width and height + XWindowAttributes Attributes; + XGetWindowAttributes(dpy, root, &Attributes); + rootwidth = Attributes.width; + rootheight = Attributes.height; + + // set servo position + servoposx = rootwidth / 2; // middle of the screen + servoposy = -150; // above the screen + + // initialize USB-device + usb_init(); + if (usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, "www.schatenseite.de", USBDEV_SHARED_PRODUCT, "USB-Servo") != 0) { + fprintf(stderr, "Could not find USB device \"USB-Servo\" with vid=0x%x pid=0x%x\n", USBDEV_SHARED_VENDOR, USBDEV_SHARED_PRODUCT); + exit(1); + } + + // main loop + while (1) { + update(); + nanosleep(&ts, NULL); + } + usb_close(handle); + return 0; +} diff --git a/common/usbservo.doxygen b/common/usbservo.doxygen new file mode 100644 index 0000000..48a5422 --- /dev/null +++ b/common/usbservo.doxygen @@ -0,0 +1,1252 @@ +# Doxyfile 1.4.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "USB-Servo" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = firmware/usbdrv + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = htmldoc + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latexdoc + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtfdoc + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = YES + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/common/usbservo.h b/common/usbservo.h new file mode 100644 index 0000000..d6e8046 --- /dev/null +++ b/common/usbservo.h @@ -0,0 +1,217 @@ +#ifndef __usbservo_h_included__ +#define __usbservo_h_included__ + +/** + * \file usbservo.h + * \brief Global definitions and datatypes, used by the firmware and the commandline-client. Also contains the main doxygen-documentation. + * \author Ronald Schaten + * \version $Id: usbservo.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +/** + * \mainpage USB-Servo + * + * \section sec_intro Introduction + * + * The USB-Servo is a device to control a servo via USB. A servo is a motorized + * device that is commonly used in remote controlled cars and planes. I built + * this device to activate a toy puppet. The puppet has a button on its bottom, + * if you press the button the puppet collapses. When the computer is able to + * press the button, I can use the puppet to signal information like someone's + * online-state in the Jabber-network: when my friend goes online, the puppet + * stands up, when he logs off it collapses. + * + * Servos are connected with three-wire-cables. A red and a black one for the + * power, and a yellow one for the signal. Power has to be between 4.8 and 6 + * volts, so the 5 volts from the USB-port is in the range. The signal doesn't + * take much current, so you can connect it directly to the controller. The + * angle of the servo is controlled with pulse width modulation (PWM). It gets + * a signal of about 50Hz (one pulse every 20ms), the length of the pulse tells + * the servo the angle to adjust. + * + * A problem that I didn't really solve is the power consumption: I don't know + * the current that runs through the motor. It seems to be low enough not to + * cause any problems, but I don't know how high it will get when the servo is + * blocked. YOU HAVE BEEN WARNED, I don't feel responsible for USB-ports + * catching fire... :-/ + * + * There are three parts included in the distribution: The firmware for an + * ATmega8 microcontroller, a commandline-client that can be run under Linux, + * and the circuits needed to build the device. + * + * This project is based on my USB-LED-Fader, which itself is based on the + * PowerSwitch example application by Objective Development. Like those, it + * uses Objective Development's firmware-only USB driver for Atmel's AVR + * microcontrollers. + * + * Objective Development's USB driver is a firmware-only implementation of the + * USB 1.1 standard (low speed device) on cheap single chip microcomputers of + * Atmel's AVR series, such as the ATtiny2313 or even some of the small 8 pin + * devices. It implements the standard to the point where useful applications + * can be implemented. See the file "firmware/usbdrv/usbdrv.h" for features and + * limitations. + * + * \section sec_install Building and installing + * + * Both, the firmware and Unix command line tool are built with "make". You may + * need to customize both makefiles. + * + * \subsection sec_fw Firmware + * + * The firmware for this project requires avr-gcc and avr-libc (a C-library for + * the AVR controller). Please read the instructions at + * http://www.nongnu.org/avr-libc/user-manual/install_tools.html for how to + * install the GNU toolchain (avr-gcc, assembler, linker etc.) and avr-libc. + * + * Once you have the GNU toolchain for AVR microcontrollers installed, you can + * run "make" in the subdirectory "firmware". You may have to edit the Makefile + * to use your preferred downloader with "make program". The current version is + * built for avrdude with a parallel connection to an stk200-compatible + * programmer. + * + * If working with a brand-new controller, you may have to set the fuse-bits to + * use the external crystal: + * + * \code + * avrdude -p atmega8 -P /dev/parport0 -c stk200 -U hfuse:w:0xC9:m -U lfuse:w:0x9F:m + * \endcode + * + * Afterwards, you can compile and flash to the device: + * + * \code + * make program + * \endcode + * + * \subsection sec_client Commandline client and demo application + * + * The command line tool and the demo application require libusb. Please take + * the packages from your system's distribution or download libusb from + * http://libusb.sourceforge.net/ and install it before you compile. Change to + * directory "commandline", check the Makefile and edit the settings if + * required and type + * + * \code + * make + * \endcode + * + * This will build the unix executable "usb-servo" which can be used to control + * the device, and the demo application "xservopointer". + * + * \section sec_usage Usage + * + * Connect the device to the USB-port. If it isn't already, the servo will move + * to the 0-position. + * + * \subsection sec_commandline Commandline client + * + * Use the commandline-client as follows: + * + * \code + * usb-servo status + * usb-servo set + * usb-servo test + * \endcode + * + * \subsubsection sec_params Parameters + * + * - \e angle: The angle you want to set the servo to. 0 is full left, 255 is + * full right. + * + * \subsubsection sec_examples Examples + * + * Get the status of the servo: + * \code + * usb-servo status + * \endcode + * This will tell you the angle the servo is currently put to. + * \code + * Current servo angle: 42 + * \endcode + * + * Set a new angle: + * \code + * usb-servo set 23 + * \endcode + * This sets the servo to the angle 23. 0 is full left, 255 is full right, so + * with 23 the servo will be almost on the left side. + * + * Test the device: + * \code + * usb-led-fader test + * \endcode + * This function sends many random numbers to the device. The device returns + * the packages, and the client looks for differences in the sent and the + * received numbers. + * + * \subsection sec_xservopointer Demo application xservopointer + * + * This is a pure fun thing, nobody will need it. That was reason enough to + * write it... + * + * To use it, you have to position the servo centered above the screen (with a + * little tweaking in the source, you can change that position). Then, you + * attach a pointer to the servo and start the application. + * + * You'll never ever have to search for your mouse cursor in the future. The + * pointer on the servo will always show you where to search. + * + * \section sec_drawbacks Drawbacks + * + * The main drawback is the mentioned power consumption. I tested it with my + * servo on my notebook, it is not sure to work on other systems. THIS MAY + * BE HARMFUL FOR YOUR COMPUTER, and nobody but yourself will be + * responsible for any damages. + * + * Another, not so big problem is the crude implementation of the PWM. I got + * the timing-values by trial and error, and they might not fit on your servo. + * On the other hand, I think that servos should be interchangeable. But this + * is my first and only one, so I can't say anything about that. + * + * \section sec_files Files in the distribution + * + * - \e Readme.txt: Documentation, created from the htmldoc-directory. + * - \e firmware: Source code of the controller firmware. + * - \e firmware/usbdrv: USB driver -- See Readme.txt in this directory for + * info + * - \e commandline: Source code of the host software (needs libusb). Here, you + * find the pure commandline client (usb-servo) and the fun demo application + * (xservopointer). + * - \e common: Files needed by the firmware and the commandline-client. + * - \e circuit: Circuit diagrams in PDF and EAGLE 4 format. A free version of + * EAGLE is available for Linux, Mac OS X and Windows from + * http://www.cadsoft.de/. + * - \e License.txt: Public license for all contents of this project, except + * for the USB driver. Look in firmware/usbdrv/License.txt for further info. + * - \e Changelog.txt: Logfile documenting changes in soft-, firm- and + * hardware. + * + * \section sec_thanks Thanks! + * + * I'd like to thank Objective Development for the possibility to use + * their driver for my project. In fact, this project wouldn't exist without + * the driver. + * + * \section sec_license About the license + * + * My work - all contents except for the USB driver - are licensed under the + * GNU General Public License (GPL). A copy of the GPL is included in + * License.txt. The driver itself is licensed under a special license by + * Objective Development. See firmware/usbdrv/License.txt for further info. + * + * (c) 2006 by Ronald Schaten - http://www.schatenseite.de + */ + +#include + +/* return codes for USB-communication */ +#define msgOK 0 /**< Return code for OK. */ +#define msgErr 1 /**< Return code for Error. */ + +/* These are the vendor specific SETUP commands implemented by our USB device */ +#define CMD_ECHO 0 /**< Command to echo the sent data */ +#define CMD_GET 1 /**< Command to fetch values */ +#define CMD_SET 2 /**< Command to send values */ + +#endif diff --git a/firmware/Makefile b/firmware/Makefile new file mode 100644 index 0000000..03d1171 --- /dev/null +++ b/firmware/Makefile @@ -0,0 +1,48 @@ +# $Id: Makefile,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + +AVRDUDE = avrdude -p atmega8 -P /dev/parport0 -c stk200 + +COMPILE = avr-gcc -Wall -Os -Iusbdrv -I../common -I. -mmcu=atmega8 #-DDEBUG_LEVEL=2 +# NEVER compile the final product with debugging! Any debug output will +# distort timing so that the specs can't be met. + +OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o +# Note that we link usbdrv.o first! This is required for correct alignment of +# driver-internal global variables! + + +# symbolic targets: +all: main.hex + +.c.o: + $(COMPILE) -c $< -o $@ + +.S.o: + $(COMPILE) -x assembler-with-cpp -c $< -o $@ +# "-x assembler-with-cpp" should not be necessary since this is the default +# file type for the .S (with capital S) extension. However, upper case +# characters are not always preserved on Windows. To ensure WinAVR +# compatibility define the file type manually. + +.c.s: + $(COMPILE) -S $< -o $@ + +program: all + $(AVRDUDE) -E noreset,vcc -U flash:w:main.hex + +clean: + rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s + +# file targets: +main.bin: $(OBJECTS) + $(COMPILE) -o main.bin $(OBJECTS) + +main.hex: main.bin + rm -f main.hex main.eep.hex + avr-objcopy -j .text -j .data -O ihex main.bin main.hex + +disasm: main.bin + avr-objdump -d main.bin + +cpp: + $(COMPILE) -E main.c diff --git a/firmware/main.c b/firmware/main.c new file mode 100644 index 0000000..12c6ff5 --- /dev/null +++ b/firmware/main.c @@ -0,0 +1,115 @@ +/** + * \file main.c + * \brief Firmware for the USB-Servo + * \author Ronald Schaten + * \version $Id: main.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include + +#include "usbdrv.h" +#include "oddebug.h" +#include "usbservo.h" + +/** Global variable, contains the angle of the servo. */ +static uint8_t angle; + +/** + * Handler for the timer-interrupt. This function is called every 20 + * milliseconds (50Hz). + */ +static void timerInterrupt(void) { + int i; + PORTC = 0xff; + // wait 7200us (value by trial & error) + for (i = 0; i < 72; i++) { + _delay_us(100); + } + // still have to wait up to 17850us (value by trial & error) + for (i = 0; i < angle; i++) { + _delay_us(70); // 17850 / 255 = 70 + } + PORTC = 0x00; +} + +/** + * USB-Setup-Handler. Handles setup-calls that are received from the + * USB-Interface. + * \param data Eight bytes of data. + * \return The number of returned bytes (in replyBuffer[]). + */ +uchar usbFunctionSetup(uchar data[8]) { + static uchar replyBuffer[8]; + uchar replyLength; + + replyBuffer[0] = msgOK; + switch (data[1]) { + case CMD_ECHO: /* echo */ + replyBuffer[0] = data[2]; + replyBuffer[1] = data[3]; + replyLength = 2; + break; + case CMD_GET: /* read status */ + replyBuffer[0] = angle; + replyLength = 1; + break; + case CMD_SET: /* set status */ + angle = data[2]; + replyLength = 0; + break; + default: /* WTF? */ + replyBuffer[0] = msgErr; + replyLength = 1; + break; + } + usbMsgPtr = replyBuffer; + return replyLength; +} + +/** + * Main-function. Initializes the hardware and starts the main loop of the + * application. + * \return An integer. Whatever... :-) + */ +int main(void) { + uchar i, j; + odDebugInit(); + DDRD = ~0; /* output SE0 for USB reset */ + PORTD = 0x00; /* no pullups on USB pins */ + DDRC = 0xff; /* all outputs */ + PORTC = 0x00; + + j = 0; + while (--j) { /* USB Reset by device only required on + Watchdog Reset */ + i = 0; + while (--i); /* delay >10ms for USB reset */ + } + DDRD = ~USBMASK; /* all outputs except USB data */ + TCCR0 = 5; /* set prescaler to 1/1024 */ + usbInit(); + sei(); + + for (i = 0; i < 10; i++) { /* wait one second to prevent strange + effects when the USB-bus isn't + initialized (e. g. when the host system + is on standby. */ + _delay_ms(100); + } + + angle = 0; + + while (1) { /* main event loop */ + usbPoll(); + if (TIFR & (1 << TOV0)) { + TIFR |= 1 << TOV0; /* clear pending flag */ + timerInterrupt(); + } + } + return 0; +} diff --git a/firmware/usbconfig.h b/firmware/usbconfig.h new file mode 100644 index 0000000..4a57ee8 --- /dev/null +++ b/firmware/usbconfig.h @@ -0,0 +1,170 @@ +/* Name: usbconfig.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2005-04-01 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbconfig.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#ifndef __usbconfig_h_included__ +#define __usbconfig_h_included__ + +/** + * \file usbconfig.h + * \brief Configuration of the USB-driver. + * \version $Id: usbconfig.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + + +/* +General Description: +This file contains parts of the USB driver which can be configured and can or +must be adapted to your hardware. + +Please note that the usbdrv contains a usbconfig-prototype.h file now. We +recommend that you use that file as a template because it will always list +the newest features and options. +*/ + +/* ---------------------------- Hardware Config ---------------------------- */ + +#define USB_CFG_IOPORTNAME D +/* This is the port where the USB bus is connected. When you configure it to + * "PORTB", the registers PORTB, PINB (=PORTB-2) and DDRB (=PORTB-1) will be + * used. + */ +#define USB_CFG_DMINUS_BIT 0 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This MUST be bit 0 or 7. All other values will result in a compile error! + */ +#define USB_CFG_DPLUS_BIT 2 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port. Please note that D+ must also be connected + * to interrupt pin INT0! + */ + +/* #define USB_CFG_PULLUP_IOPORTNAME B */ +/* This is the port where the USB D- pullup resistor is connected. When you + * configure it to "PORTB", the registers PORTB and DDRB (=PORTB-1) will be + * used. If this constant is defined, the macros usbDeviceConnect() and + * usbDeviceDisconnect will be available. + */ +/* #define USB_CFG_PULLUP_BIT 2 */ +/* This is the bit number in USB_CFG_PULLUP_IOPORT where the USB D- 1.5 kOhm + * pullup resistor is connected instead of VBUS. This may be any bit in + * the port. + */ + +/* --------------------------- Functional Range ---------------------------- */ + +#define USB_CFG_HAVE_INTRIN_ENDPOINT 0 +/* Define this to 1 if you want to compile a version with two endpoints: The + * default control endpoint 0 and an interrupt-in endpoint 1. + */ +#define USB_CFG_IMPLEMENT_HALT 0 +/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature + * for endpoint 1 (interrupt endpoint). Although you may not need this feature, + * it is required by the standard. We have made it a config option because it + * bloats the code considerably. + */ +#define USB_CFG_INTR_POLL_INTERVAL 10 +/* If you compile a version with endpoint 1 (interrupt-in), this is the poll + * interval. The value is in milliseconds and must not be less than 10 ms for + * low speed devices. + */ +#define USB_CFG_IS_SELF_POWERED 1 +/* Define this to 1 if the device has its own power supply. Set it to 0 if the + * device is powered from the USB bus. + */ +#define USB_CFG_MAX_BUS_POWER 20 +/* Set this variable to the maximum USB bus power consumption of your device. + * The value is in milliamperes. [It will be divided by two since USB + * communicates power requirements in units of 2 mA.] + */ +#define USB_CFG_SAMPLE_EXACT 0 +/* This variable affects Sampling Jitter for USB receiving. When it is 0, the + * driver guarantees a sampling window of 1/2 bit. The USB spec requires + * that the receiver has at most 1/4 bit sampling window. The 1/2 bit window + * should still work reliably enough because we work at low speed. If you want + * to meet the spec, set this value to 1. This will unroll a loop which + * results in bigger code size. + * If you have problems with long cables, try setting this value to 1. + */ +#define USB_CFG_IMPLEMENT_FN_WRITE 0 +/* Set this to 1 if you want usbFunctionWrite() to be called for control-out + * transfers. Set it to 0 if you don't need it and want to save a couple of + * bytes. + */ +#define USB_CFG_IMPLEMENT_FN_READ 0 +/* Set this to 1 if you need to send control replies which are generated + * "on the fly" when usbFunctionRead() is called. If you only want to send + * data from a static buffer, set it to 0 and return the data from + * usbFunctionSetup(). This saves a couple of bytes. + */ + +/* -------------------------- Device Description --------------------------- */ + +#define USB_CFG_VENDOR_ID 0xc0, 0x16 /* 5824 in dec, stands for VOTI */ +/* USB vendor ID for the device, low byte first. If you have registered your + * own Vendor ID, define it here. Otherwise you use obdev's free shared + * VID/PID pair. Be sure to read USBID-License.txt for rules! + */ +#define USB_CFG_DEVICE_ID 0xdc, 0x05 /* 1500 in dec, obdev's free PID */ +/* This is the ID of the product, low byte first. It is interpreted in the + * scope of the vendor ID. If you have registered your own VID with usb.org + * or if you have licensed a PID from somebody else, define it here. Otherwise + * you use obdev's free shared VID/PID pair. Be sure to read the rules in + * USBID-License.txt! + */ +#define USB_CFG_DEVICE_VERSION 0x00, 0x01 +/* Version number of the device: Minor number first, then major number. + */ +#define USB_CFG_VENDOR_NAME 'w', 'w', 'w', '.', 's', 'c', 'h', 'a', 't', 'e', 'n', 's', 'e', 'i', 't', 'e', '.', 'd', 'e' +#define USB_CFG_VENDOR_NAME_LEN 19 +/* These two values define the vendor name returned by the USB device. The name + * must be given as a list of characters under single quotes. The characters + * are interpreted as Unicode (UTF-16) entities. + * If you don't want a vendor name string, undefine these macros. + * ALWAYS define a vendor name containing your Internet domain name if you use + * obdev's free shared VID/PID pair. See the file USBID-License.txt for + * details. + */ +#define USB_CFG_DEVICE_NAME 'U', 'S', 'B', '-', 'S', 'e', 'r', 'v', 'o' +#define USB_CFG_DEVICE_NAME_LEN 9 +/* Same as above for the device name. If you don't want a device name, undefine + * the macros. See the file USBID-License.txt before you assign a name. + */ +#define USB_CFG_SERIAL_NUMBER_LENGTH 0 +/* Set this define to the number of charcters in the serial number if your + * device should have a serial number to uniquely identify each hardware + * instance. You must supply the serial number in a string descriptor with the + * name "usbCfgSerialNumberStringDescriptor", e.g.: + * #define USB_CFG_SERIAL_NUMBER_LENGTH 5 + * int usbCfgSerialNumberStringDescriptor[] PROGMEM = { + * USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LENGTH), + * '1', '2', '3', '4', '5' + * }; + * See usbdrv.h for more information about the USB_STRING_DESCRIPTOR_HEADER() + * macro or usbdrv.c for example string descriptors. + * You may want to put "usbCfgSerialNumberStringDescriptor" at a constant + * flash memory address (with magic linker commands) so that you don't need + * to recompile if you change it. + */ +#define USB_CFG_DEVICE_CLASS 0xff +#define USB_CFG_DEVICE_SUBCLASS 0 +/* See USB specification if you want to conform to an existing device class. + */ +#define USB_CFG_INTERFACE_CLASS 0 +#define USB_CFG_INTERFACE_SUBCLASS 0 +#define USB_CFG_INTERFACE_PROTOCOL 0 +/* See USB specification if you want to conform to an existing device class or + * protocol. + */ +#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 /* total length of report descriptor */ +/* Define this to the length of the HID report descriptor, if you implement + * an HID device. Otherwise don't define it or define it to 0. + */ + +#endif /* __usbconfig_h_included__ */ diff --git a/firmware/usbdrv/Changelog.txt b/firmware/usbdrv/Changelog.txt new file mode 100644 index 0000000..fa381ca --- /dev/null +++ b/firmware/usbdrv/Changelog.txt @@ -0,0 +1,115 @@ +This file documents changes in the firmware-only USB driver for atmel's AVR +microcontrollers. New entries are always appended to the end of the file. +Scroll down to the bottom to see the most recent changes. + +2005-04-01: + - Implemented endpoint 1 as interrupt-in endpoint. + - Moved all configuration options to usbconfig.h which is not part of the + driver. + - Changed interface for usbVendorSetup(). + - Fixed compatibility with ATMega8 device. + - Various minor optimizations. + +2005-04-11: + - Changed interface to application: Use usbFunctionSetup(), usbFunctionRead() + and usbFunctionWrite() now. Added configuration options to choose which + of these functions to compile in. + - Assembler module delivers receive data non-inverted now. + - Made register and bit names compatible with more AVR devices. + +2005-05-03: + - Allow address of usbRxBuf on any memory page as long as the buffer does + not cross 256 byte page boundaries. + - Better device compatibility: works with Mega88 now. + - Code optimization in debugging module. + - Documentation updates. + +2006-01-02: + - Added (free) default Vendor- and Product-IDs bought from voti.nl. + - Added USBID-License.txt file which defines the rules for using the free + shared VID/PID pair. + - Added Readme.txt to the usbdrv directory which clarifies administrative + issues. + +2006-01-25: + - Added "configured state" to become more standards compliant. + - Added "HALT" state for interrupt endpoint. + - Driver passes the "USB Command Verifier" test from usb.org now. + - Made "serial number" a configuration option. + - Minor optimizations, we now recommend compiler option "-Os" for best + results. + - Added a version number to usbdrv.h + +2006-02-03: + - New configuration variable USB_BUFFER_SECTION for the memory section where + the USB rx buffer will go. This defaults to ".bss" if not defined. Since + this buffer MUST NOT cross 256 byte pages (not even touch a page at the + end), the user may want to pass a linker option similar to + "-Wl,--section-start=.mybuffer=0x800060". + - Provide structure for usbRequest_t. + - New defines for USB constants. + - Prepared for HID implementations. + - Increased data size limit for interrupt transfers to 8 bytes. + - New macro usbInterruptIsReady() to query interrupt buffer state. + +2006-02-18: + - Ensure that the data token which is sent as an ack to an OUT transfer is + always zero sized. This fixes a bug where the host reports an error after + sending an out transfer to the device, although all data arrived at the + device. + - Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite(). + +* Release 2006-02-20 + + - Give a compiler warning when compiling with debugging turned on. + - Added Oleg Semyonov's changes for IAR-cc compatibility. + - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect() + (also thanks to Oleg!). + - Rearranged tests in usbPoll() to save a couple of instructions in the most + likely case that no actions are pending. + - We need a delay between the SET ADDRESS request until the new address + becomes active. This delay was handled in usbPoll() until now. Since the + spec says that the delay must not exceed 2ms, previous versions required + aggressive polling during the enumeration phase. We have now moved the + handling of the delay into the interrupt routine. + - We must not reply with NAK to a SETUP transaction. We can only achieve this + by making sure that the rx buffer is empty when SETUP tokens are expected. + We therefore don't pass zero sized data packets from the status phase of + a transfer to usbPoll(). This change MAY cause troubles if you rely on + receiving a less than 8 bytes long packet in usbFunctionWrite() to + identify the end of a transfer. usbFunctionWrite() will NEVER be called + with a zero length. + +* Release 2006-03-14 + + - Improved IAR C support: tiny memory model, more devices + - Added template usbconfig.h file under the name usbconfig-prototype.h + +* Release 2006-03-26 + + - Added provision for one more interrupt-in endpoint (endpoint 3). + - Added provision for one interrupt-out endpoint (endpoint 1). + - Added flowcontrol macros for USB. + - Added provision for custom configuration descriptor. + - Allow ANY two port bits for D+ and D-. + - Merged (optional) receive endpoint number into global usbRxToken variable. + - Use USB_CFG_IOPORTNAME instead of USB_CFG_IOPORT. We now construct the + variable name from the single port letter instead of computing the address + of related ports from the output-port address. + +* Release 2006-06-26 + + - Updated documentation in usbdrv.h and usbconfig-prototype.h to reflect the + new features. + - Removed "#warning" directives because IAR does not understand them. Use + unused static variables instead to generate a warning. + - Do not include when compiling with IAR. + - Introduced USB_CFG_DESCR_PROPS_* in usbconfig.h to configure how each + USB descriptor should be handled. It is now possible to provide descriptor + data in Flash, RAM or dynamically at runtime. + - STALL is now a status in usbTxLen* instead of a message. We can now conform + to the spec and leave the stall status pending until it is cleared. + - Made usbTxPacketCnt1 and usbTxPacketCnt3 public. This allows the + application code to reset data toggling on interrupt pipes. + +* Release 2006-07-18 diff --git a/firmware/usbdrv/License.txt b/firmware/usbdrv/License.txt new file mode 100644 index 0000000..400d2e5 --- /dev/null +++ b/firmware/usbdrv/License.txt @@ -0,0 +1,458 @@ +PREFACE + +Conceiving and understanding a new license is not an easy task. To make things +easier for both, the author and the licensee, we have decided to base our +license for the USB driver on an existing license with well-understood +properties. + +Our favorite choice for the base license was the GNU General Public License +(GPL). However, we cannot use the GNU GPL directly for the following reasons: + +(1) It was not intended for projects involving hardware -- we must extend the + term "source code" to at least the circuit diagram. +(2) The GNU GPL does not require publication. Only if a binary is published, + it requires that the source is published as well. This is reasonable for + software because unpublished software is of little relevance. For projects + involving hardware, we want to REQUIRE publication. More than that, we + even want to define HOW the publication must be done (files contained, + file formats etc). +(3) As the author of the software, we can distribute it under more than one + license. For people who don't want to meet the obligations of the GNU GPL, + we want to offer commercial licenses. To avoid a split in revisions of + the driver, we need special privileges to distribute contributed + modifications under proprietary licenses. + +We can not simply modify the GNU GPL and incorporate our changes because the +Free Software Foundation (FSF) who holds the copyright for the text of the +GNU GPL does not allow modifications. We therefore set up our own small +license which incorporates the GNU GPL by reference: + + + +LICENSE FOR PROJECTS BUILT WITH "OBJECTIVE DEVELOPMENT'S +FIRMWARE-ONLY USB-DRIVER FOR ATMEL'S AVR MICROCONTROLLERS" +Version 2006-01 + + +I. Definitions + +"OBDEV" shall mean OBJECTIVE DEVELOPMENT Software GmbH or any legal successor +thereof. + +"Software Source Code" shall mean the preferred form of the software for +making modifications to it. + +"USB Driver" shall mean the Software Source Code for OBDEV's firmware-only +USB-driver for Atmel's AVR microcontrollers. + +"Function" shall mean the Software Source Code for all software executed on +the microcontroller except the USB Driver. + +"Host Software" shall mean the Software Source Code for all software required +to control the USB device from the USB host running any operating system. + +"Project" shall mean the USB Driver, the Function, the Host Software, circuit +diagrams of the controller based hardware and accompanying documentation. + +"source code" shall have the same meaning as the term "Project" above. + +"Web Site" shall mean a collection of text and multimedia documents accessible +worldwide over internet through the HyperText Transfer Protocol (HTTP) on +TCP port 80 (standard HTTP port). + + +II. General License Terms +The general terms of this license consist of the GNU General Public License +Version 2 (GNU GPL2) which is hereby incorporated into this section as though +it were fully set forth here. A copy of the GNU GPL2 is included for your +convenience in appendix A of this license. + +The term "source code" in the GNU GPL2 is to be understood as defined in +section I above. If any term or definition in section I, III, IV or V +conflicts with the GNU GPL2, the term or definition in section I, III, IV or +V has precedence of the GNU GPL2. + + +III. Distribution of the Project +The distributed form of a Project must contain at least the following files: +(a) Software Source Code files for the USB Driver, the Function and the Host + Software. +(b) Circuit diagrams for the hardware in PDF, PNG or GIF image file format. +(c) A file with name "Readme.txt" in ASCII format with at least the following + content (in English language): + - An explanation what the Project does. + - What to do with the distributed files (installation procedure etc.). + - A reference to Objective Development's USB driver. + - Your (author's) name and contact information. E-mail and/or URL is + sufficient. +(d) Optionally a text file with a description of the circuit diagram, an + explanation of special (software) techniques used etc. +(e) A copy of this license in a file with the name "License.txt". This copy + can be in the "usbdrv" subdirectory which contains the driver. + + +IV. Requirement for Publication +All modifications and derived work (Projects using the USB Driver) MUST be +distributed (published) as described in section III above on a Web Site. The +main page must reproduce at least a description of the Project (e.g. as +contained in the "Readme.txt" file distributed) and a download link for the +entire Project. The URL of the main page must be submitted to OBDEV. OBDEV +will provide a mechanism for submitting Project URLs and for publishing +Projects on their Web Site. The Project must remain available for at least +twelve (12) months after the initial publication or at least six (6) months +after a subsequent version of that particular Project has been published. + + +V. Author Privileges +OBDEV reserves the right to distribute the USB Driver and all modified +versions under other (proprietary) licenses. If you modify the USB Driver +under the grants of this license, you therefore grant OBDEV (in addition to +the grants of the GNU GPL2) a worldwide, perpetual, irrevocable royalty free +license for your modifications. OBDEV shall not automatically gain rights +other than those of the GNU GPL2 in the other parts of the Project. This +section V overrides possibly contradicting terms in the GNU GPL2 referenced +in section II. + + +APPENDIX A + + 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. + + GNU GENERAL PUBLIC LICENSE + 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. + + + Copyright (C) + + 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) year 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. + + , 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. diff --git a/firmware/usbdrv/Readme.txt b/firmware/usbdrv/Readme.txt new file mode 100644 index 0000000..b309b3e --- /dev/null +++ b/firmware/usbdrv/Readme.txt @@ -0,0 +1,88 @@ +This is the Readme file to Objective Development's firmware-only USB driver +for Atmel AVR microcontrollers. For more information please visit +http://www.obdev.at/avrusb/ + +This directory contains the USB firmware only. Copy it as-is to your own +project and add your own version of "usbconfig.h". A template for your own +"usbconfig.h" can be found in "usbconfig-prototype.h" in this directory. + + +TECHNICAL DOCUMENTATION +======================= +The technical documentation for the firmware driver is contained in the file +"usbdrv.h". Please read all of it carefully! + + +USB IDENTIFIERS +=============== +Every USB device needs a vendor- and a product-identifier (VID and PID). VIDs +are obtained from usb.org for a price of 1,500 USD. Once you have a VID, you +can assign PIDs at will. + +Since an entry level cost of 1,500 USD is too high for most small companies +and hobbyists, we provide a single VID/PID pair for free. If you want to use +your own VID and PID instead of our's, define the macros "USB_CFG_VENDOR_ID" +and "USB_CFG_DEVICE_ID" accordingly in "usbconfig.h". + +To use our predefined VID/PID pair, you MUST conform to a couple of +requirements. See the file "USBID-License.txt" for details. + + +HOST DRIVER +=========== +You have received this driver together with an example device implementation +and an example host driver. The host driver is based on libusb and compiles +on various Unix flavors (Linux, BSD, Mac OS X). It also compiles natively on +Windows using MinGW (see www.mingw.org) and libusb-win32 (see +libusb-win32.sourceforge.net). The "Automator" project contains a native +Windows host driver (not based on libusb) for Human Interface Devices. + + +DEVELOPMENT SYSTEM +================== +This driver has been developed and optimized for the GNU compiler version 3 +(gcc 3). It does work well with gcc 4 and future versions will probably be +optimized for gcc 4. We recommend that you use the GNU compiler suite because +it is freely available. AVR-USB has also been ported to the IAR compiler and +assembler. It has been tested with IAR 4.10B/W32 and 4.12A/W32 on an ATmega8 +with the "small" and "tiny" memory model. Please note that gcc is more +efficient for usbdrv.c because this module has been deliberately optimized +for gcc. + + +USING AVR-USB FOR FREE +====================== +The AVR firmware driver is published under an Open Source compliant license. +See the file "License.txt" for details. Since it is not obvious for many +people how this license applies to their own projects, here's a short guide: + +(1) The USB driver and all your modifications to the driver itself are owned +by Objective Development. You must give us a worldwide, perpetual, +irrevocable royalty free license for your modifications. + +(2) Since you own the code you have written (except where you modify our +driver), you can (at least in principle) determine the license for it freely. +However, to "pay" for the USB driver code you link against, we demand that +you choose an Open Source compliant license (compatible with our license) for +your source code and the hardware circuit diagrams. Simply attach your +license of choice to your parts of the project and leave our "License.txt" in +the "usbdrv" subdirectory. + +(3) We also demand that you publish your work on the Internet and drop us a +note with the URL. The publication must meet certain formal criteria (files +distributed, file formats etc.). See the file "License.txt" for details. + +Other than that, you are allowed to manufacture any number of units and sell +them for any price. If you like our driver, we also encourage you to make a +donation on our web site. + + +COMMERCIAL LICENSES FOR AVR-USB +=============================== +If you don't want to publish your source code and the circuit diagrams under +an Open Source license, you can simply pay money for AVR-USB. As an +additional benefit you get USB PIDs for free, licensed exclusively to you. +See http://www.obdev.at/products/avrusb/license.html for details. + + + diff --git a/firmware/usbdrv/USBID-License.txt b/firmware/usbdrv/USBID-License.txt new file mode 100644 index 0000000..4739a57 --- /dev/null +++ b/firmware/usbdrv/USBID-License.txt @@ -0,0 +1,143 @@ +Royalty-Free Non-Exclusive License USB Product-ID +================================================= + +Version 2006-06-19 + +OBJECTIVE DEVELOPMENT Software GmbH hereby grants you the non-exclusive +right to use three USB.org vendor-ID (VID) / product-ID (PID) pairs with +products based on Objective Development's firmware-only USB driver for +Atmel AVR microcontrollers: + + * VID = 5824 (=0x16c0) / PID = 1500 (=0x5dc) for devices implementing no + USB device class (vendor-class devices with USB class = 0xff). Devices + using this pair will be referred to as "VENDOR CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1503 (=0x5df) for HID class devices + (excluding mice and keyboards). Devices using this pair will be referred + to as "HID CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1505 (=0x5e1) for CDC class modem devices + Devices using this pair will be referred to as "CDC-ACM CLASS" devices. + +Since the granted right is non-exclusive, the same VID/PID pairs may be +used by many companies and individuals for different products. To avoid +conflicts, your device and host driver software MUST adhere to the rules +outlined below. + +OBJECTIVE DEVELOPMENT Software GmbH has licensed these VID/PID pairs from +Wouter van Ooijen (see www.voti.nl), who has licensed the VID from the USB +Implementers Forum, Inc. (see www.usb.org). The VID is registered for the +company name "Van Ooijen Technische Informatica". + + +RULES AND RESTRICTIONS +====================== + +(1) The USB device MUST provide a textual representation of the +manufacturer and product identification. The manufacturer identification +MUST be available at least in USB language 0x0409 (English/US). + +(2) The textual manufacturer identification MUST contain either an Internet +domain name (e.g. "mycompany.com") registered and owned by you, or an +e-mail address under your control (e.g. "myname@gmx.net"). You can embed +the domain name or e-mail address in any string you like, e.g. "Objective +Development http://www.obdev.at/avrusb/". + +(3) You are responsible for retaining ownership of the domain or e-mail +address for as long as any of your products are in use. + +(4) You may choose any string for the textual product identification, as +long as this string is unique within the scope of your textual manufacturer +identification. + +(5) Matching of device-specific drivers MUST be based on the textual +manufacturer and product identification in addition to the usual VID/PID +matching. This means that operating system features which are based on +VID/PID matching only (e.g. Windows kernel level drivers, automatic actions +when the device is plugged in etc) MUST NOT be used. The driver matching +MUST be a comparison of the entire strings, NOT a sub-string match. For +CDC-ACM CLASS devices, a generic class driver should be used and the +matching is based on the USB device class. + +(6) The extent to which VID/PID matching is allowed for non device-specific +drivers or features depends on the operating system and particular VID/PID +pair used: + + * Mac OS X, Linux, FreeBSD and other Unixes: No VID/PID matching is + required and hence no VID/PID-only matching is allowed at all. + + * Windows: The operating system performs VID/PID matching for the kernel + level driver. You are REQUIRED to use libusb-win32 (see + http://libusb-win32.sourceforge.net/) as the kernel level driver for + VENDOR CLASS devices. HID CLASS devices all use the generic HID class + driver shipped with Windows, except mice and keyboards. You therefore + MUST NOT use any of the shared VID/PID pairs for mice or keyboards. + CDC-ACM CLASS devices require a ".inf" file which matches on the VID/PID + pair. This ".inf" file MUST load the "usbser" driver to configure the + device as modem (COM-port). + +(7) OBJECTIVE DEVELOPMENT Software GmbH disclaims all liability for any +problems which are caused by the shared use of these VID/PID pairs. You +have been warned that the sharing of VID/PID pairs may cause problems. If +you want to avoid them, get your own VID/PID pair for exclusive use. + + +HOW TO IMPLEMENT THESE RULES +============================ + +The following rules are for VENDOR CLASS and HID CLASS devices. CDC-ACM +CLASS devices use the operating system's class driver and don't need a +custom driver. + +The host driver MUST iterate over all devices with the given VID/PID +numbers in their device descriptors and query the string representation for +the manufacturer name in USB language 0x0409 (English/US). It MUST compare +the ENTIRE string with your textual manufacturer identification chosen in +(2) above. A substring search for your domain or e-mail address is NOT +acceptable. The driver MUST NOT touch the device (other than querying the +descriptors) unless the strings match. + +For all USB devices with matching VID/PID and textual manufacturer +identification, the host driver must query the textual product +identification and string-compare it with the name of the product it can +control. It may only initialize the device if the product matches exactly. + +Objective Development provides examples for these matching rules with the +"PowerSwitch" project (using libusb) and with the "Automator" project +(using Windows calls on Windows and libusb on Unix). + + +Technical Notes: +================ + +Sharing the same VID/PID pair among devices is possible as long as ALL +drivers which match the VID/PID also perform matching on the textual +identification strings. This is easy on all operating systems except +Windows, since Windows establishes a static connection between the VID/PID +pair and a kernel level driver. All devices with the same VID/PID pair must +therefore use THE SAME kernel level driver. + +We therefore demand that you use libusb-win32 for VENDOR CLASS devices. +This is a generic kernel level driver which allows all types of USB access +for user space applications. This is only a partial solution of the +problem, though, because different device drivers may come with different +versions of libusb-win32 and they may not work with the libusb version of +the respective other driver. You are therefore encouraged to test your +driver against a broad range of libusb-win32 versions. Do not use new +features in new versions, or check for their existence before you use them. +When a new libusb-win32 becomes available, make sure that your driver is +compatible with it. + +For HID CLASS devices it is necessary that all those devices bind to the +same kernel driver: Microsoft's generic USB HID driver. This is true for +all HID devices except those with a specialized driver. Currently, the only +HIDs with specialized drivers are mice and keyboards. You therefore MUST +NOT use a shared VID/PID with mouse and keyboard devices. + +Sharing the same VID/PID among different products is unusual and probably +violates the USB specification. If you do it, you do it at your own risk. + +To avoid possible incompatibilities, we highly recommend that you get your +own VID/PID pair if you intend to sell your product. Objective +Development's commercial licenses for AVR-USB include a PID for +unrestricted exclusive use. diff --git a/firmware/usbdrv/iarcompat.h b/firmware/usbdrv/iarcompat.h new file mode 100644 index 0000000..de081b0 --- /dev/null +++ b/firmware/usbdrv/iarcompat.h @@ -0,0 +1,70 @@ +/* Name: iarcompat.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: iarcompat.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +/* +General Description: +This header is included when we compile with the IAR C-compiler and assembler. +It defines macros for cross compatibility between gcc and IAR-cc. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#ifndef __iarcompat_h_INCLUDED__ +#define __iarcompat_h_INCLUDED__ + +#if defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ + +/* Enable bit definitions */ +#ifndef ENABLE_BIT_DEFINITIONS +# define ENABLE_BIT_DEFINITIONS 1 +#endif + +/* Include IAR headers */ +#include +#ifndef __IAR_SYSTEMS_ASM__ +# include +#endif + +#define __attribute__(arg) +#define IAR_SECTION(section) @ section + +#ifndef USB_BUFFER_SECTION +# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */ +#endif + +#ifdef __IAR_SYSTEMS_ASM__ +# define __ASSEMBLER__ +#endif + +#ifdef __HAS_ELPM__ +# define PROGMEM __farflash +#else +# define PROGMEM __flash +#endif + +#define PRG_RDB(addr) (*(PROGMEM char *)(addr)) + +/* The following definitions are not needed by the driver, but may be of some + * help if you port a gcc based project to IAR. + */ +#define cli() __disable_interrupt() +#define sei() __enable_interrupt() +#define wdt_reset() __watchdog_reset() + +/* Depending on the device you use, you may get problems with the way usbdrv.h + * handles the differences between devices. Since IAR does not use #defines + * for MCU registers, we can't check for the existence of a particular + * register with an #ifdef. If the autodetection mechanism fails, include + * definitions for the required USB_INTR_* macros in your usbconfig.h. See + * usbconfig-prototype.h and usbdrv.h for details. + */ + +#endif /* defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ */ +#endif /* __iarcompat_h_INCLUDED__ */ diff --git a/firmware/usbdrv/oddebug.c b/firmware/usbdrv/oddebug.c new file mode 100644 index 0000000..b842249 --- /dev/null +++ b/firmware/usbdrv/oddebug.c @@ -0,0 +1,53 @@ +/* Name: oddebug.c + * Project: AVR library + * Author: Christian Starkjohann + * Creation Date: 2005-01-16 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: oddebug.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#include "oddebug.h" + +#if DEBUG_LEVEL > 0 + +static uchar Warning__Never_compile_production_devices_with_debugging; +/* The "#warning" preprocessor directive is non-standard. The unused static + * variable above should give a compiler warning on all compilers. + */ + +static void uartPutc(char c) +{ + while(!(ODDBG_USR & (1 << ODDBG_UDRE))); /* wait for data register empty */ + ODDBG_UDR = c; +} + +static uchar hexAscii(uchar h) +{ + h &= 0xf; + if(h >= 10) + h += 'a' - (uchar)10 - '0'; + h += '0'; + return h; +} + +static void printHex(uchar c) +{ + uartPutc(hexAscii(c >> 4)); + uartPutc(hexAscii(c)); +} + +void odDebug(uchar prefix, uchar *data, uchar len) +{ + printHex(prefix); + uartPutc(':'); + while(len--){ + uartPutc(' '); + printHex(*data++); + } + uartPutc('\r'); + uartPutc('\n'); +} + +#endif diff --git a/firmware/usbdrv/oddebug.h b/firmware/usbdrv/oddebug.h new file mode 100644 index 0000000..0953138 --- /dev/null +++ b/firmware/usbdrv/oddebug.h @@ -0,0 +1,126 @@ +/* Name: oddebug.h + * Project: AVR library + * Author: Christian Starkjohann + * Creation Date: 2005-01-16 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: oddebug.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#ifndef __oddebug_h_included__ +#define __oddebug_h_included__ + +/* +General Description: +This module implements a function for debug logs on the serial line of the +AVR microcontroller. Debugging can be configured with the define +'DEBUG_LEVEL'. If this macro is not defined or defined to 0, all debugging +calls are no-ops. If it is 1, DBG1 logs will appear, but not DBG2. If it is +2, DBG1 and DBG2 logs will be printed. + +A debug log consists of a label ('prefix') to indicate which debug log created +the output and a memory block to dump in hex ('data' and 'len'). +*/ + + +#ifndef F_CPU +# define F_CPU 12000000 /* 12 MHz */ +#endif + +/* make sure we have the UART defines: */ +#include "iarcompat.h" +#ifndef __IAR_SYSTEMS_ICC__ +# include +#endif + +#ifndef uchar +# define uchar unsigned char +#endif + +#if DEBUG_LEVEL > 0 && !(defined TXEN || defined TXEN0) /* no UART in device */ +# warning "Debugging disabled because device has no UART" +# undef DEBUG_LEVEL +#endif + +#ifndef DEBUG_LEVEL +# define DEBUG_LEVEL 0 +#endif + +/* ------------------------------------------------------------------------- */ + +#if DEBUG_LEVEL > 0 +# define DBG1(prefix, data, len) odDebug(prefix, data, len) +#else +# define DBG1(prefix, data, len) +#endif + +#if DEBUG_LEVEL > 1 +# define DBG2(prefix, data, len) odDebug(prefix, data, len) +#else +# define DBG2(prefix, data, len) +#endif + +/* ------------------------------------------------------------------------- */ + +#if DEBUG_LEVEL > 0 +extern void odDebug(uchar prefix, uchar *data, uchar len); + +/* Try to find our control registers; ATMEL likes to rename these */ + +#if defined UBRR +# define ODDBG_UBRR UBRR +#elif defined UBRRL +# define ODDBG_UBRR UBRRL +#elif defined UBRR0 +# define ODDBG_UBRR UBRR0 +#elif defined UBRR0L +# define ODDBG_UBRR UBRR0L +#endif + +#if defined UCR +# define ODDBG_UCR UCR +#elif defined UCSRB +# define ODDBG_UCR UCSRB +#elif defined UCSR0B +# define ODDBG_UCR UCSR0B +#endif + +#if defined TXEN +# define ODDBG_TXEN TXEN +#else +# define ODDBG_TXEN TXEN0 +#endif + +#if defined USR +# define ODDBG_USR USR +#elif defined UCSRA +# define ODDBG_USR UCSRA +#elif defined UCSR0A +# define ODDBG_USR UCSR0A +#endif + +#if defined UDRE +# define ODDBG_UDRE UDRE +#else +# define ODDBG_UDRE UDRE0 +#endif + +#if defined UDR +# define ODDBG_UDR UDR +#elif defined UDR0 +# define ODDBG_UDR UDR0 +#endif + +static inline void odDebugInit(void) +{ + ODDBG_UCR |= (1< +# include +#endif +#include "usbdrv.h" +#include "oddebug.h" + +/* +General Description: +This module implements the C-part of the USB driver. See usbdrv.h for a +documentation of the entire driver. +*/ + +#ifndef IAR_SECTION +#define IAR_SECTION(arg) +#define __no_init +#endif +/* The macro IAR_SECTION is a hack to allow IAR-cc compatibility. On gcc, it + * is defined to nothing. __no_init is required on IAR. + */ + +/* ------------------------------------------------------------------------- */ + +/* raw USB registers / interface to assembler code: */ +/* usbRxBuf MUST be in 1 byte addressable range (because usbInputBuf is only 1 byte) */ +__no_init uchar usbRxBuf[2][USB_BUFSIZE] __attribute__ ((section (USB_BUFFER_SECTION))) IAR_SECTION(USB_BUFFER_SECTION);/* raw RX buffer: PID, 8 bytes data, 2 bytes CRC */ +uchar usbDeviceAddr; /* assigned during enumeration, defaults to 0 */ +uchar usbNewDeviceAddr; /* device ID which should be set after status phase */ +uchar usbConfiguration; /* currently selected configuration. Administered by driver, but not used */ +uchar usbInputBuf; /* ptr to raw buffer used for receiving */ +uchar usbAppBuf; /* ptr to raw buffer passed to app for processing */ +volatile schar usbRxLen; /* = 0; number of bytes in usbAppBuf; 0 means free */ +uchar usbCurrentTok; /* last token received, if more than 1 rx endpoint: MSb=endpoint */ +uchar usbRxToken; /* token for data we received; if more than 1 rx endpoint: MSb=endpoint */ +uchar usbMsgLen = 0xff; /* remaining number of bytes, no msg to send if -1 (see usbMsgPtr) */ +volatile uchar usbTxLen = USBPID_NAK; /* number of bytes to transmit with next IN token or handshake token */ +uchar usbTxBuf[USB_BUFSIZE];/* data to transmit with next IN, free if usbTxLen contains handshake token */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT +volatile uchar usbTxLen1 = USBPID_NAK; /* TX count for endpoint 1 */ +uchar usbTxBuf1[USB_BUFSIZE]; /* TX data for endpoint 1 */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +volatile uchar usbTxLen3 = USBPID_NAK; /* TX count for endpoint 1 */ +uchar usbTxBuf3[USB_BUFSIZE]; /* TX data for endpoint 1 */ +#endif +#endif + +/* USB status registers / not shared with asm code */ +uchar *usbMsgPtr; /* data to transmit next -- ROM or RAM address */ +static uchar usbMsgFlags; /* flag values see below */ +static uchar usbIsReset; /* = 0; USB bus is in reset phase */ + +#define USB_FLG_TX_PACKET (1<<0) +/* Leave free 6 bits after TX_PACKET. This way we can increment usbMsgFlags to toggle TX_PACKET */ +#define USB_FLG_MSGPTR_IS_ROM (1<<6) +#define USB_FLG_USE_DEFAULT_RW (1<<7) + +/* +optimizing hints: +- do not post/pre inc/dec integer values in operations +- assign value of PRG_RDB() to register variables and don't use side effects in arg +- use narrow scope for variables which should be in X/Y/Z register +- assign char sized expressions to variables to force 8 bit arithmetics +*/ + +/* ------------------------------------------------------------------------- */ + +#if USB_CFG_DESCR_PROPS_STRINGS == 0 + +#if USB_CFG_DESCR_PROPS_STRING_0 == 0 +#undef USB_CFG_DESCR_PROPS_STRING_0 +#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0) +PROGMEM char usbDescriptorString0[] = { /* language descriptor */ + 4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */ + 3, /* descriptor type */ + 0x09, 0x04, /* language index (0x0409 = US-English) */ +}; +#endif + +#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN +#undef USB_CFG_DESCR_PROPS_STRING_VENDOR +#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor) +PROGMEM int usbDescriptorStringVendor[] = { + USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN), + USB_CFG_VENDOR_NAME +}; +#endif + +#if USB_CFG_DESCR_PROPS_STRING_DEVICE == 0 && USB_CFG_DEVICE_NAME_LEN +#undef USB_CFG_DESCR_PROPS_STRING_DEVICE +#define USB_CFG_DESCR_PROPS_STRING_DEVICE sizeof(usbDescriptorStringDevice) +PROGMEM int usbDescriptorStringDevice[] = { + USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN), + USB_CFG_DEVICE_NAME +}; +#endif + +#if USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER == 0 && USB_CFG_SERIAL_NUMBER_LEN +#undef USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER +#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER sizeof(usbDescriptorStringSerialNumber) +PROGMEM int usbDescriptorStringSerialNumber[] = { + USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LEN), + USB_CFG_SERIAL_NUMBER +}; +#endif + +#endif /* USB_CFG_DESCR_PROPS_STRINGS == 0 */ + +#if USB_CFG_DESCR_PROPS_DEVICE == 0 +#undef USB_CFG_DESCR_PROPS_DEVICE +#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice) +PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ + 18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */ + USBDESCR_DEVICE, /* descriptor type */ + 0x01, 0x01, /* USB version supported */ + USB_CFG_DEVICE_CLASS, + USB_CFG_DEVICE_SUBCLASS, + 0, /* protocol */ + 8, /* max packet size */ + USB_CFG_VENDOR_ID, /* 2 bytes */ + USB_CFG_DEVICE_ID, /* 2 bytes */ + USB_CFG_DEVICE_VERSION, /* 2 bytes */ + USB_CFG_DESCR_PROPS_STRING_VENDOR != 0 ? 1 : 0, /* manufacturer string index */ + USB_CFG_DESCR_PROPS_STRING_DEVICE != 0 ? 2 : 0, /* product string index */ + USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER != 0 ? 3 : 0, /* serial number string index */ + 1, /* number of configurations */ +}; +#endif + +#if USB_CFG_DESCR_PROPS_HID_REPORT != 0 && USB_CFG_DESCR_PROPS_HID == 0 +#undef USB_CFG_DESCR_PROPS_HID +#define USB_CFG_DESCR_PROPS_HID 9 /* length of HID descriptor in config descriptor below */ +#endif + +#if USB_CFG_DESCR_PROPS_CONFIGURATION == 0 +#undef USB_CFG_DESCR_PROPS_CONFIGURATION +#define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration) +PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ + 9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */ + USBDESCR_CONFIG, /* descriptor type */ + 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + (USB_CFG_DESCR_PROPS_HID & 0xff), 0, + /* total length of data returned (including inlined descriptors) */ + 1, /* number of interfaces in this configuration */ + 1, /* index of this configuration */ + 0, /* configuration name string index */ +#if USB_CFG_IS_SELF_POWERED + USBATTR_SELFPOWER, /* attributes */ +#else + USBATTR_BUSPOWER, /* attributes */ +#endif + USB_CFG_MAX_BUS_POWER/2, /* max USB current in 2mA units */ +/* interface descriptor follows inline: */ + 9, /* sizeof(usbDescrInterface): length of descriptor in bytes */ + USBDESCR_INTERFACE, /* descriptor type */ + 0, /* index of this interface */ + 0, /* alternate setting for this interface */ + USB_CFG_HAVE_INTRIN_ENDPOINT, /* endpoints excl 0: number of endpoint descriptors to follow */ + USB_CFG_INTERFACE_CLASS, + USB_CFG_INTERFACE_SUBCLASS, + USB_CFG_INTERFACE_PROTOCOL, + 0, /* string index for interface */ +#if (USB_CFG_DESCR_PROPS_HID & 0xff) /* HID descriptor */ + 9, /* sizeof(usbDescrHID): length of descriptor in bytes */ + USBDESCR_HID, /* descriptor type: HID */ + 0x01, 0x01, /* BCD representation of HID version */ + 0x00, /* target country code */ + 0x01, /* number of HID Report (or other HID class) Descriptor infos to follow */ + 0x22, /* descriptor type: report */ + USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH, 0, /* total length of report descriptor */ +#endif +#if USB_CFG_HAVE_INTRIN_ENDPOINT /* endpoint descriptor for endpoint 1 */ + 7, /* sizeof(usbDescrEndpoint) */ + USBDESCR_ENDPOINT, /* descriptor type = endpoint */ + 0x81, /* IN endpoint number 1 */ + 0x03, /* attrib: Interrupt endpoint */ + 8, 0, /* maximum packet size */ + USB_CFG_INTR_POLL_INTERVAL, /* in ms */ +#endif +}; +#endif + +/* We don't use prog_int or prog_int16_t for compatibility with various libc + * versions. Here's an other compatibility hack: + */ +#ifndef PRG_RDB +#define PRG_RDB(addr) pgm_read_byte(addr) +#endif + +typedef union{ + unsigned word; + uchar *ptr; + uchar bytes[2]; +}converter_t; +/* We use this union to do type conversions. This is better optimized than + * type casts in gcc 3.4.3 and much better than using bit shifts to build + * ints from chars. Byte ordering is not a problem on an 8 bit platform. + */ + +/* ------------------------------------------------------------------------- */ + +#if USB_CFG_HAVE_INTRIN_ENDPOINT +uchar usbTxPacketCnt1; + +void usbSetInterrupt(uchar *data, uchar len) +{ +uchar *p, i; + +#if USB_CFG_IMPLEMENT_HALT + if(usbTxLen1 == USBPID_STALL) + return; +#endif +#if 0 /* No runtime checks! Caller is responsible for valid data! */ + if(len > 8) /* interrupt transfers are limited to 8 bytes */ + len = 8; +#endif + i = USBPID_DATA1; + if(usbTxPacketCnt1 & 1) + i = USBPID_DATA0; + if(usbTxLen1 & 0x10){ /* packet buffer was empty */ + usbTxPacketCnt1++; + }else{ + usbTxLen1 = USBPID_NAK; /* avoid sending incomplete interrupt data */ + } + p = usbTxBuf1; + *p++ = i; + for(i=len;i--;) + *p++ = *data++; + usbCrc16Append(&usbTxBuf1[1], len); + usbTxLen1 = len + 4; /* len must be given including sync byte */ + DBG2(0x21, usbTxBuf1, len + 3); +} +#endif + +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +uchar usbTxPacketCnt3; + +void usbSetInterrupt3(uchar *data, uchar len) +{ +uchar *p, i; + + i = USBPID_DATA1; + if(usbTxPacketCnt3 & 1) + i = USBPID_DATA0; + if(usbTxLen3 & 0x10){ /* packet buffer was empty */ + usbTxPacketCnt3++; + }else{ + usbTxLen3 = USBPID_NAK; /* avoid sending incomplete interrupt data */ + } + p = usbTxBuf3; + *p++ = i; + for(i=len;i--;) + *p++ = *data++; + usbCrc16Append(&usbTxBuf3[1], len); + usbTxLen3 = len + 4; /* len must be given including sync byte */ + DBG2(0x23, usbTxBuf3, len + 3); +} +#endif + + +static uchar usbRead(uchar *data, uchar len) +{ +#if USB_CFG_IMPLEMENT_FN_READ + if(usbMsgFlags & USB_FLG_USE_DEFAULT_RW){ +#endif + uchar i = len, *r = usbMsgPtr; + if(usbMsgFlags & USB_FLG_MSGPTR_IS_ROM){ /* ROM data */ + while(i--){ + uchar c = PRG_RDB(r); /* assign to char size variable to enforce byte ops */ + *data++ = c; + r++; + } + }else{ /* RAM data */ + while(i--) + *data++ = *r++; + } + usbMsgPtr = r; + return len; +#if USB_CFG_IMPLEMENT_FN_READ + }else{ + if(len != 0) /* don't bother app with 0 sized reads */ + return usbFunctionRead(data, len); + return 0; + } +#endif +} + + +#define GET_DESCRIPTOR(cfgProp, staticName) \ + if(cfgProp){ \ + if((cfgProp) & USB_PROP_IS_RAM) \ + flags &= ~USB_FLG_MSGPTR_IS_ROM; \ + if((cfgProp) & USB_PROP_IS_DYNAMIC){ \ + replyLen = usbFunctionDescriptor(rq); \ + }else{ \ + replyData = (uchar *)(staticName); \ + SET_REPLY_LEN((cfgProp) & 0xff); \ + } \ + } +/* We use if() instead of #if in the macro above because #if can't be used + * in macros and the compiler optimizes constant conditions anyway. + */ + + +/* Don't make this function static to avoid inlining. + * The entire function would become too large and exceed the range of + * relative jumps. + * 2006-02-25: Either gcc 3.4.3 is better than the gcc used when the comment + * above was written, or other parts of the code have changed. We now get + * better results with an inlined function. Test condition: PowerSwitch code. + */ +static void usbProcessRx(uchar *data, uchar len) +{ +usbRequest_t *rq = (void *)data; +uchar replyLen = 0, flags = USB_FLG_USE_DEFAULT_RW; +/* We use if() cascades because the compare is done byte-wise while switch() + * is int-based. The if() cascades are therefore more efficient. + */ + DBG2(0x10 + ((usbRxToken >> 6) & 3), data, len); +#if USB_CFG_IMPLEMENT_FN_WRITEOUT + if(usbRxToken & 0x80){ + usbFunctionWriteOut(data, len); + return; /* no reply expected, hence no usbMsgPtr, usbMsgFlags, usbMsgLen set */ + } + if(usbRxToken == (uchar)(USBPID_SETUP & 0x7f)){ /* MSb contains endpoint (== 0) */ +#else + if(usbRxToken == (uchar)USBPID_SETUP){ +#endif + if(len == 8){ /* Setup size must be always 8 bytes. Ignore otherwise. */ + uchar type = rq->bmRequestType & USBRQ_TYPE_MASK; + if(type == USBRQ_TYPE_STANDARD){ + #define SET_REPLY_LEN(len) replyLen = (len); usbMsgPtr = replyData + /* This macro ensures that replyLen and usbMsgPtr are always set in the same way. + * That allows optimization of common code in if() branches */ + uchar *replyData = usbTxBuf + 9; /* there is 3 bytes free space at the end of the buffer */ + replyData[0] = 0; /* common to USBRQ_GET_STATUS and USBRQ_GET_INTERFACE */ + if(rq->bRequest == USBRQ_GET_STATUS){ /* 0 */ + uchar __attribute__((__unused__)) recipient = rq->bmRequestType & USBRQ_RCPT_MASK; /* assign arith ops to variables to enforce byte size */ +#if USB_CFG_IS_SELF_POWERED + if(recipient == USBRQ_RCPT_DEVICE) + replyData[0] = USB_CFG_IS_SELF_POWERED; +#endif +#if USB_CFG_HAVE_INTRIN_ENDPOINT && USB_CFG_IMPLEMENT_HALT + if(recipient == USBRQ_RCPT_ENDPOINT && rq->wIndex.bytes[0] == 0x81) /* request status for endpoint 1 */ + replyData[0] = usbTxLen1 == USBPID_STALL; +#endif + replyData[1] = 0; + SET_REPLY_LEN(2); + }else if(rq->bRequest == USBRQ_SET_ADDRESS){ /* 5 */ + usbNewDeviceAddr = rq->wValue.bytes[0]; + }else if(rq->bRequest == USBRQ_GET_DESCRIPTOR){ /* 6 */ + flags = USB_FLG_MSGPTR_IS_ROM | USB_FLG_USE_DEFAULT_RW; + if(rq->wValue.bytes[1] == USBDESCR_DEVICE){ /* 1 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_DEVICE, usbDescriptorDevice) + }else if(rq->wValue.bytes[1] == USBDESCR_CONFIG){ /* 2 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_CONFIGURATION, usbDescriptorConfiguration) + }else if(rq->wValue.bytes[1] == USBDESCR_STRING){ /* 3 */ +#if USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC + if(USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_RAM) + flags &= ~USB_FLG_MSGPTR_IS_ROM; + replyLen = usbFunctionDescriptor(rq); +#else /* USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC */ + if(rq->wValue.bytes[0] == 0){ /* descriptor index */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_0, usbDescriptorString0) + }else if(rq->wValue.bytes[0] == 1){ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_VENDOR, usbDescriptorStringVendor) + }else if(rq->wValue.bytes[0] == 2){ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_DEVICE, usbDescriptorStringDevice) + }else if(rq->wValue.bytes[0] == 3){ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER, usbDescriptorStringSerialNumber) + }else if(USB_CFG_DESCR_PROPS_UNKNOWN & USB_PROP_IS_DYNAMIC){ + replyLen = usbFunctionDescriptor(rq); + } +#endif /* USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC */ + }else if(rq->wValue.bytes[1] == USBDESCR_HID){ /* 0x21 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_HID, usbDescriptorConfiguration + 18) + }else if(rq->wValue.bytes[1] == USBDESCR_HID_REPORT){ /* 0x22 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_HID_REPORT, usbDescriptorHidReport) + }else if(USB_CFG_DESCR_PROPS_UNKNOWN & USB_PROP_IS_DYNAMIC){ + replyLen = usbFunctionDescriptor(rq); + } + }else if(rq->bRequest == USBRQ_GET_CONFIGURATION){ /* 8 */ + replyData = &usbConfiguration; /* send current configuration value */ + SET_REPLY_LEN(1); + }else if(rq->bRequest == USBRQ_SET_CONFIGURATION){ /* 9 */ + usbConfiguration = rq->wValue.bytes[0]; +#if USB_CFG_IMPLEMENT_HALT + usbTxLen1 = USBPID_NAK; +#endif + }else if(rq->bRequest == USBRQ_GET_INTERFACE){ /* 10 */ + SET_REPLY_LEN(1); +#if USB_CFG_HAVE_INTRIN_ENDPOINT + }else if(rq->bRequest == USBRQ_SET_INTERFACE){ /* 11 */ + usbTxPacketCnt1 = 0; /* reset data toggling for interrupt endpoint */ +# if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxPacketCnt3 = 0; /* reset data toggling for interrupt endpoint */ +# endif +# if USB_CFG_IMPLEMENT_HALT + usbTxLen1 = USBPID_NAK; + }else if(rq->bRequest == USBRQ_CLEAR_FEATURE || rq->bRequest == USBRQ_SET_FEATURE){ /* 1|3 */ + if(rq->wValue.bytes[0] == 0 && rq->wIndex.bytes[0] == 0x81){ /* feature 0 == HALT for endpoint == 1 */ + usbTxLen1 = rq->bRequest == USBRQ_CLEAR_FEATURE ? USBPID_NAK : USBPID_STALL; + usbTxPacketCnt1 = 0; /* reset data toggling for interrupt endpoint */ +# if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxPacketCnt3 = 0; /* reset data toggling for interrupt endpoint */ +# endif + } +# endif +#endif + }else{ + /* the following requests can be ignored, send default reply */ + /* 1: CLEAR_FEATURE, 3: SET_FEATURE, 7: SET_DESCRIPTOR */ + /* 12: SYNCH_FRAME */ + } + #undef SET_REPLY_LEN + }else{ /* not a standard request -- must be vendor or class request */ + replyLen = usbFunctionSetup(data); + } +#if USB_CFG_IMPLEMENT_FN_READ || USB_CFG_IMPLEMENT_FN_WRITE + if(replyLen == 0xff){ /* use user-supplied read/write function */ + if((rq->bmRequestType & USBRQ_DIR_MASK) == USBRQ_DIR_DEVICE_TO_HOST){ + replyLen = rq->wLength.bytes[0]; /* IN transfers only */ + } + flags &= ~USB_FLG_USE_DEFAULT_RW; /* we have no valid msg, use user supplied read/write functions */ + }else /* The 'else' prevents that we limit a replyLen of 0xff to the maximum transfer len. */ +#endif + if(!rq->wLength.bytes[1] && replyLen > rq->wLength.bytes[0]) /* limit length to max */ + replyLen = rq->wLength.bytes[0]; + } + /* make sure that data packets which are sent as ACK to an OUT transfer are always zero sized */ + }else{ /* DATA packet from out request */ +#if USB_CFG_IMPLEMENT_FN_WRITE + if(!(usbMsgFlags & USB_FLG_USE_DEFAULT_RW)){ + uchar rval = usbFunctionWrite(data, len); + replyLen = 0xff; + if(rval == 0xff){ /* an error occurred */ + usbMsgLen = 0xff; /* cancel potentially pending data packet for ACK */ + usbTxLen = USBPID_STALL; + }else if(rval != 0){ /* This was the final package */ + replyLen = 0; /* answer with a zero-sized data packet */ + } + flags = 0; /* start with a DATA1 package, stay with user supplied write() function */ + } +#endif + } + usbMsgFlags = flags; + usbMsgLen = replyLen; +} + +/* ------------------------------------------------------------------------- */ + +static void usbBuildTxBlock(void) +{ +uchar wantLen, len, txLen, token; + + wantLen = usbMsgLen; + if(wantLen > 8) + wantLen = 8; + usbMsgLen -= wantLen; + token = USBPID_DATA1; + if(usbMsgFlags & USB_FLG_TX_PACKET) + token = USBPID_DATA0; + usbMsgFlags++; + len = usbRead(usbTxBuf + 1, wantLen); + if(len <= 8){ /* valid data packet */ + usbCrc16Append(&usbTxBuf[1], len); + txLen = len + 4; /* length including sync byte */ + if(len < 8) /* a partial package identifies end of message */ + usbMsgLen = 0xff; + }else{ + txLen = USBPID_STALL; /* stall the endpoint */ + usbMsgLen = 0xff; + } + usbTxBuf[0] = token; + usbTxLen = txLen; + DBG2(0x20, usbTxBuf, txLen-1); +} + +static inline uchar isNotSE0(void) +{ +uchar rval; +/* We want to do + * return (USBIN & USBMASK); + * here, but the compiler does int-expansion acrobatics. + * We can avoid this by assigning to a char-sized variable. + */ + rval = USBIN & USBMASK; + return rval; +} + +/* ------------------------------------------------------------------------- */ + +void usbPoll(void) +{ +uchar len; + + if((len = usbRxLen) > 0){ +/* We could check CRC16 here -- but ACK has already been sent anyway. If you + * need data integrity checks with this driver, check the CRC in your app + * code and report errors back to the host. Since the ACK was already sent, + * retries must be handled on application level. + * unsigned crc = usbCrc16((uchar *)(unsigned)(usbAppBuf + 1), usbRxLen - 3); + */ + len -= 3; /* remove PID and CRC */ + if(len < 128){ /* no overflow */ + converter_t appBuf; + appBuf.ptr = (uchar *)usbRxBuf; + appBuf.bytes[0] = usbAppBuf; + appBuf.bytes[0]++; + usbProcessRx(appBuf.ptr, len); + } +#if USB_CFG_HAVE_FLOWCONTROL + if(usbRxLen > 0) /* only mark as available if not inactivated */ + usbRxLen = 0; +#else + usbRxLen = 0; /* mark rx buffer as available */ +#endif + } + if(usbMsgLen != 0xff){ /* transmit data pending? */ + if(usbTxLen & 0x10) /* transmit system idle */ + usbBuildTxBlock(); + } + if(isNotSE0()){ /* SE0 state */ + usbIsReset = 0; + }else{ + /* check whether SE0 lasts for more than 2.5us (3.75 bit times) */ + if(!usbIsReset){ + uchar i; + for(i=100;i;i--){ + if(isNotSE0()) + goto notUsbReset; + } + usbIsReset = 1; + usbNewDeviceAddr = 0; + usbDeviceAddr = 0; +#if USB_CFG_IMPLEMENT_HALT + usbTxLen1 = USBPID_NAK; +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxLen3 = USBPID_NAK; +#endif +#endif + DBG1(0xff, 0, 0); +notUsbReset:; + } + } +} + +/* ------------------------------------------------------------------------- */ + +void usbInit(void) +{ + usbInputBuf = (uchar)usbRxBuf[0]; + usbAppBuf = (uchar)usbRxBuf[1]; +#if USB_INTR_CFG_SET != 0 + USB_INTR_CFG |= USB_INTR_CFG_SET; +#endif +#if USB_INTR_CFG_CLR != 0 + USB_INTR_CFG &= ~(USB_INTR_CFG_CLR); +#endif + USB_INTR_ENABLE |= (1 << USB_INTR_ENABLE_BIT); +} + +/* ------------------------------------------------------------------------- */ diff --git a/firmware/usbdrv/usbdrv.h b/firmware/usbdrv/usbdrv.h new file mode 100644 index 0000000..f2e2e19 --- /dev/null +++ b/firmware/usbdrv/usbdrv.h @@ -0,0 +1,657 @@ +/* Name: usbdrv.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2004-12-29 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbdrv.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#ifndef __usbdrv_h_included__ +#define __usbdrv_h_included__ +#include "usbconfig.h" +#include "iarcompat.h" + +/* +Hardware Prerequisites: +======================= +USB lines D+ and D- MUST be wired to the same I/O port. D+ must (also) be +connected to INT0. D- requires a pullup of 1.5k to +3.5V (and the device +must be powered at 3.5V) to identify as low-speed USB device. A pullup of +1M SHOULD be connected from D+ to +3.5V to prevent interference when no USB +master is connected. We use D+ as interrupt source and not D- because it +does not trigger on keep-alive and RESET states. + +As a compile time option, the 1.5k pullup resistor on D- can be made +switchable to allow the device to disconnect at will. See the definition of +usbDeviceConnect() and usbDeviceDisconnect() further down in this file. + +Please adapt the values in usbconfig.h according to your hardware! + +The device MUST be clocked at 12 MHz. This is more than the 10 MHz allowed by +an AT90S2313 powered at 4.5V. However, if the supply voltage to maximum clock +relation is interpolated linearly, an ATtiny2313 meets the requirement by +specification. In practice, the AT90S2313 can be overclocked and works well. + + +Limitations: +============ +Compiling: +You should link the usbdrv.o module first because it has special alignment +requirements for the receive buffer (the buffer must not cross a 256 byte +page boundary, it must not even touch it at the end). If you can't link it +first, you must use other measures to ensure alignment. +Note: gcc does not always assign variable addresses in the order as the modules +are linked or the variables are declared. You can choose a memory section for +the receive buffer with the configuration option "USB_BUFFER_SECTION". This +option defaults to ".bss". If you use your own section, you can place it at +an arbitrary location with a linker option similar to +"-Wl,--section-start=.mybuffer=0x800060". Use "avr-nm -ng" on the binary and +search for "usbRxBuf" to find tbe base address of the 22 bytes rx buffer. + +Robustness with respect to communication errors: +The driver assumes error-free communication. It DOES check for errors in +the PID, but does NOT check bit stuffing errors, SE0 in middle of a byte, +token CRC (5 bit) and data CRC (16 bit). CRC checks can not be performed due +to timing constraints: We must start sending a reply within 7 bit times. +Bit stuffing and misplaced SE0 would have to be checked in real-time, but CPU +performance does not permit that. The driver does not check Data0/Data1 +toggling, but application software can implement the check. + +Sampling jitter: +The driver guarantees a sampling window of 1/2 bit. The USB spec requires +that the receiver has at most 1/4 bit sampling window. The 1/2 bit window +should still work reliably enough because we work at low speed. If you want +to meet the spec, define the macro "USB_CFG_SAMPLE_EXACT" to 1 in usbconfig.h. +This will unroll a loop which results in bigger code size. + +Input characteristics: +Since no differential receiver circuit is used, electrical interference +robustness may suffer. The driver samples only one of the data lines with +an ordinary I/O pin's input characteristics. However, since this is only a +low speed USB implementation and the specification allows for 8 times the +bit rate over the same hardware, we should be on the safe side. Even the spec +requires detection of asymmetric states at high bit rate for SE0 detection. + +Number of endpoints: +The driver supports up to four endpoints: One control endpoint (endpoint 0), +two interrupt-in (or bulk-in) endpoints (endpoint 1 and 3) and one +interrupt-out (or bulk-out) endpoint (endpoint 1). Please note that the USB +standard forbids bulk endpoints for low speed devices! Most operating systems +allow them anyway, but the AVR will spend 90% of the CPU time in the USB +interrupt polling for bulk data. +By default, only the control endpoint 0 is enabled. To get the other endpoints, +define USB_CFG_HAVE_INTRIN_ENDPOINT, USB_CFG_HAVE_INTRIN_ENDPOINT3 and/or +USB_CFG_IMPLEMENT_FN_WRITEOUT respectively (see usbconfig-prototype.h for +details). + +Maximum data payload: +Data payload of control in and out transfers may be up to 254 bytes. In order +to accept payload data of out transfers, you need to implement +'usbFunctionWrite()'. + +USB Suspend Mode supply current: +The USB standard limits power consumption to 500uA when the bus is in suspend +mode. This is not a problem for self-powered devices since they don't need +bus power anyway. Bus-powered devices can achieve this only by putting the +CPU in sleep mode. The driver does not implement suspend handling by itself. +However, the application may implement activity monitoring and wakeup from +sleep. The host sends regular SE0 states on the bus to keep it active. These +SE0 states can be detected by wiring the INT1 pin to D-. It is not necessary +to enable the interrupt, checking the interrupt pending flag should suffice. +Before entering sleep mode, the application should enable INT1 for a wakeup +on the next bus activity. + +Operation without an USB master: +The driver behaves neutral without connection to an USB master if D- reads +as 1. To avoid spurious interrupts, we recommend a high impedance (e.g. 1M) +pullup resistor on D+. If D- becomes statically 0, the driver may block in +the interrupt routine. + +Interrupt latency: +The application must ensure that the USB interrupt is not disabled for more +than 20 cycles. This implies that all interrupt routines must either be +declared as "INTERRUPT" instead of "SIGNAL" (see "avr/signal.h") or that they +are written in assembler with "sei" as the first instruction. + +Maximum interrupt duration / CPU cycle consumption: +The driver handles all USB communication during the interrupt service +routine. The routine will not return before an entire USB message is received +and the reply is sent. This may be up to ca. 1200 cycles = 100us if the host +conforms to the standard. The driver will consume CPU cycles for all USB +messages, even if they address another (low-speed) device on the same bus. + +*/ + +/* ------------------------------------------------------------------------- */ +/* --------------------------- Module Interface ---------------------------- */ +/* ------------------------------------------------------------------------- */ + +#define USBDRV_VERSION 20060718 +/* This define uniquely identifies a driver version. It is a decimal number + * constructed from the driver's release date in the form YYYYMMDD. If the + * driver's behavior or interface changes, you can use this constant to + * distinguish versions. If it is not defined, the driver's release date is + * older than 2006-01-25. + */ + +#ifndef __ASSEMBLER__ + +#ifndef uchar +#define uchar unsigned char +#endif +#ifndef schar +#define schar signed char +#endif +/* shortcuts for well defined 8 bit integer types */ + +struct usbRequest; /* forward declaration */ + +extern void usbInit(void); +/* This function must be called before interrupts are enabled and the main + * loop is entered. + */ +extern void usbPoll(void); +/* This function must be called at regular intervals from the main loop. + * Maximum delay between calls is somewhat less than 50ms (USB timeout for + * accepting a Setup message). Otherwise the device will not be recognized. + * Please note that debug outputs through the UART take ~ 0.5ms per byte + * at 19200 bps. + */ +extern uchar *usbMsgPtr; +/* This variable may be used to pass transmit data to the driver from the + * implementation of usbFunctionWrite(). It is also used internally by the + * driver for standard control requests. + */ +extern uchar usbFunctionSetup(uchar data[8]); +/* This function is called when the driver receives a SETUP transaction from + * the host which is not answered by the driver itself (in practice: class and + * vendor requests). All control transfers start with a SETUP transaction where + * the host communicates the parameters of the following (optional) data + * transfer. The SETUP data is available in the 'data' parameter which can + * (and should) be casted to 'usbRequest_t *' for a more user-friendly access + * to parameters. + * + * If the SETUP indicates a control-in transfer, you should provide the + * requested data to the driver. There are two ways to transfer this data: + * (1) Set the global pointer 'usbMsgPtr' to the base of the static RAM data + * block and return the length of the data in 'usbFunctionSetup()'. The driver + * will handle the rest. Or (2) return 0xff in 'usbFunctionSetup()'. The driver + * will then call 'usbFunctionRead()' when data is needed. See the + * documentation for usbFunctionRead() for details. + * + * If the SETUP indicates a control-out transfer, the only way to receive the + * data from the host is through the 'usbFunctionWrite()' call. If you + * implement this function, you must return 0xff in 'usbFunctionSetup()' to + * indicate that 'usbFunctionWrite()' should be used. See the documentation of + * this function for more information. If you just want to ignore the data sent + * by the host, return 0 in 'usbFunctionSetup()'. + * + * Note that calls to the functions usbFunctionRead() and usbFunctionWrite() + * are only done if enabled by the configuration in usbconfig.h. + */ +extern uchar usbFunctionDescriptor(struct usbRequest *rq); +/* You need to implement this function ONLY if you provide USB descriptors at + * runtime (which is an expert feature). It is very similar to + * usbFunctionSetup() above, but it is called only to request USB descriptor + * data. See the documentation of usbFunctionSetup() above for more info. + */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT +void usbSetInterrupt(uchar *data, uchar len); +/* This function sets the message which will be sent during the next interrupt + * IN transfer. The message is copied to an internal buffer and must not exceed + * a length of 8 bytes. The message may be 0 bytes long just to indicate the + * interrupt status to the host. + * If you need to transfer more bytes, use a control read after the interrupt. + */ +extern volatile uchar usbTxLen1; +#define usbInterruptIsReady() (usbTxLen1 & 0x10) +/* This macro indicates whether the last interrupt message has already been + * sent. If you set a new interrupt message before the old was sent, the + * message already buffered will be lost. + */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +void usbSetInterrupt3(uchar *data, uchar len); +extern volatile uchar usbTxLen3; +#define usbInterruptIsReady3() (usbTxLen3 & 0x10) +/* Same as above for endpoint 3 */ +#endif +#endif /* USB_CFG_HAVE_INTRIN_ENDPOINT */ +#if USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH /* simplified interface for backward compatibility */ +#define usbHidReportDescriptor usbDescriptorHidReport +/* should be declared as: PROGMEM char usbHidReportDescriptor[]; */ +/* If you implement an HID device, you need to provide a report descriptor. + * The HID report descriptor syntax is a bit complex. If you understand how + * report descriptors are constructed, we recommend that you use the HID + * Descriptor Tool from usb.org, see http://www.usb.org/developers/hidpage/. + * Otherwise you should probably start with a working example. + */ +#endif /* USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH */ +#if USB_CFG_IMPLEMENT_FN_WRITE +extern uchar usbFunctionWrite(uchar *data, uchar len); +/* This function is called by the driver to provide a control transfer's + * payload data (control-out). It is called in chunks of up to 8 bytes. The + * total count provided in the current control transfer can be obtained from + * the 'length' property in the setup data. If an error occurred during + * processing, return 0xff (== -1). The driver will answer the entire transfer + * with a STALL token in this case. If you have received the entire payload + * successfully, return 1. If you expect more data, return 0. If you don't + * know whether the host will send more data (you should know, the total is + * provided in the usbFunctionSetup() call!), return 1. + * NOTE: If you return 0xff for STALL, 'usbFunctionWrite()' may still be called + * for the remaining data. You must continue to return 0xff for STALL in these + * calls. + * In order to get usbFunctionWrite() called, define USB_CFG_IMPLEMENT_FN_WRITE + * to 1 in usbconfig.h and return 0xff in usbFunctionSetup().. + */ +#endif /* USB_CFG_IMPLEMENT_FN_WRITE */ +#if USB_CFG_IMPLEMENT_FN_READ +extern uchar usbFunctionRead(uchar *data, uchar len); +/* This function is called by the driver to ask the application for a control + * transfer's payload data (control-in). It is called in chunks of up to 8 + * bytes each. You should copy the data to the location given by 'data' and + * return the actual number of bytes copied. If you return less than requested, + * the control-in transfer is terminated. If you return 0xff, the driver aborts + * the transfer with a STALL token. + * In order to get usbFunctionRead() called, define USB_CFG_IMPLEMENT_FN_READ + * to 1 in usbconfig.h and return 0xff in usbFunctionSetup().. + */ +#endif /* USB_CFG_IMPLEMENT_FN_READ */ +#if USB_CFG_IMPLEMENT_FN_WRITEOUT +extern void usbFunctionWriteOut(uchar *data, uchar len); +/* This function is called by the driver when data on interrupt-out or bulk- + * out endpoint 1 is received. You must define USB_CFG_IMPLEMENT_FN_WRITEOUT + * to 1 in usbconfig.h to get this function called. + */ +#endif /* USB_CFG_IMPLEMENT_FN_WRITEOUT */ +#ifdef USB_CFG_PULLUP_IOPORTNAME +#define usbDeviceConnect() ((USB_PULLUP_DDR |= (1<device, 1=device->host + * t ..... type: 0=standard, 1=class, 2=vendor, 3=reserved + * r ..... recipient: 0=device, 1=interface, 2=endpoint, 3=other + */ + +/* USB setup recipient values */ +#define USBRQ_RCPT_MASK 0x1f +#define USBRQ_RCPT_DEVICE 0 +#define USBRQ_RCPT_INTERFACE 1 +#define USBRQ_RCPT_ENDPOINT 2 + +/* USB request type values */ +#define USBRQ_TYPE_MASK 0x60 +#define USBRQ_TYPE_STANDARD (0<<5) +#define USBRQ_TYPE_CLASS (1<<5) +#define USBRQ_TYPE_VENDOR (2<<5) + +/* USB direction values: */ +#define USBRQ_DIR_MASK 0x80 +#define USBRQ_DIR_HOST_TO_DEVICE (0<<7) +#define USBRQ_DIR_DEVICE_TO_HOST (1<<7) + +/* USB Standard Requests */ +#define USBRQ_GET_STATUS 0 +#define USBRQ_CLEAR_FEATURE 1 +#define USBRQ_SET_FEATURE 3 +#define USBRQ_SET_ADDRESS 5 +#define USBRQ_GET_DESCRIPTOR 6 +#define USBRQ_SET_DESCRIPTOR 7 +#define USBRQ_GET_CONFIGURATION 8 +#define USBRQ_SET_CONFIGURATION 9 +#define USBRQ_GET_INTERFACE 10 +#define USBRQ_SET_INTERFACE 11 +#define USBRQ_SYNCH_FRAME 12 + +/* USB descriptor constants */ +#define USBDESCR_DEVICE 1 +#define USBDESCR_CONFIG 2 +#define USBDESCR_STRING 3 +#define USBDESCR_INTERFACE 4 +#define USBDESCR_ENDPOINT 5 +#define USBDESCR_HID 0x21 +#define USBDESCR_HID_REPORT 0x22 +#define USBDESCR_HID_PHYS 0x23 + +#define USBATTR_BUSPOWER 0x80 +#define USBATTR_SELFPOWER 0x40 +#define USBATTR_REMOTEWAKE 0x20 + +/* USB HID Requests */ +#define USBRQ_HID_GET_REPORT 0x01 +#define USBRQ_HID_GET_IDLE 0x02 +#define USBRQ_HID_GET_PROTOCOL 0x03 +#define USBRQ_HID_SET_REPORT 0x09 +#define USBRQ_HID_SET_IDLE 0x0a +#define USBRQ_HID_SET_PROTOCOL 0x0b + +/* ------------------------------------------------------------------------- */ + +#endif /* __usbdrv_h_included__ */ diff --git a/firmware/usbdrv/usbdrvasm.S b/firmware/usbdrv/usbdrvasm.S new file mode 100644 index 0000000..ab8be8c --- /dev/null +++ b/firmware/usbdrv/usbdrvasm.S @@ -0,0 +1,784 @@ +/* Name: usbdrvasm.S + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2004-12-29 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbdrvasm.S,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +/* +General Description: +This module implements the assembler part of the USB driver. See usbdrv.h +for a description of the entire driver. +Since almost all of this code is timing critical, don't change unless you +really know what you are doing! Many parts require not only a maximum number +of CPU cycles, but even an exact number of cycles! + + +Timing constraints according to spec (in bit times): +timing subject min max CPUcycles +--------------------------------------------------------------------------- +EOP of OUT/SETUP to sync pattern of DATA0 (both rx) 2 16 16-128 +EOP of IN to sync pattern of DATA0 (rx, then tx) 2 7.5 16-60 +DATAx (rx) to ACK/NAK/STALL (tx) 2 7.5 16-60 +*/ + +#include "iarcompat.h" +#ifndef __IAR_SYSTEMS_ASM__ + /* configs for io.h */ +# define __SFR_OFFSET 0 +# define _VECTOR(N) __vector_ ## N /* io.h does not define this for asm */ +# include /* for CPU I/O register definitions and vectors */ +#endif /* __IAR_SYSTEMS_ASM__ */ +#include "usbdrv.h" /* for common defs */ + + +/* register names */ +#define x1 r16 +#define x2 r17 +#define shift r18 +#define cnt r19 +#define x3 r20 +#define x4 r21 + +/* Some assembler dependent definitions and declarations: */ + +#ifdef __IAR_SYSTEMS_ASM__ + +# define nop2 rjmp $+2 /* jump to next instruction */ +# define XL r26 +# define XH r27 +# define YL r28 +# define YH r29 +# define ZL r30 +# define ZH r31 +# define lo8(x) LOW(x) +# define hi8(x) ((x)>>8) /* not HIGH to allow XLINK to make a proper range check */ + + extern usbRxBuf, usbDeviceAddr, usbNewDeviceAddr, usbInputBuf + extern usbCurrentTok, usbRxLen, usbRxToken, usbAppBuf, usbTxLen + extern usbTxBuf, usbMsgLen, usbTxLen1, usbTxBuf1, usbTxLen3, usbTxBuf3 + public usbCrc16 + public usbCrc16Append + + COMMON INTVEC + ORG INT0_vect + rjmp SIG_INTERRUPT0 + RSEG CODE + +#else /* __IAR_SYSTEMS_ASM__ */ + +# define nop2 rjmp .+0 /* jump to next instruction */ + + .text + .global SIG_INTERRUPT0 + .type SIG_INTERRUPT0, @function + .global usbCrc16 + .global usbCrc16Append + +#endif /* __IAR_SYSTEMS_ASM__ */ + + +SIG_INTERRUPT0: +;Software-receiver engine. Strict timing! Don't change unless you can preserve timing! +;interrupt response time: 4 cycles + insn running = 7 max if interrupts always enabled +;max allowable interrupt latency: 32 cycles -> max 25 cycles interrupt disable +;max stack usage: [ret(2), x1, SREG, x2, cnt, shift, YH, YL, x3, x4] = 11 bytes +usbInterrupt: +;order of registers pushed: +;x1, SREG, x2, cnt, shift, [YH, YL, x3] + push x1 ;2 push only what is necessary to sync with edge ASAP + in x1, SREG ;1 + push x1 ;2 +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;first part has no timeout because it waits for IDLE or SE1 (== disconnected) +#if !USB_CFG_SAMPLE_EXACT + ldi x1, 5 ;1 setup a timeout for waitForK +#endif +waitForJ: + sbis USBIN, USBMINUS ;1 wait for D- == 1 + rjmp waitForJ ;2 +#if USB_CFG_SAMPLE_EXACT +;The following code represents the unrolled loop in the else branch. It +;results in a sampling window of 1/4 bit which meets the spec. + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + nop + nop2 +foundK: +#else +waitForK: + dec x1 ;1 + sbic USBIN, USBMINUS ;1 wait for D- == 0 + brne waitForK ;2 +#endif +;{2, 6} after falling D- edge, average delay: 4 cycles [we want 4 for center sampling] +;we have 1 bit time for setup purposes, then sample again: + push x2 ;2 + push cnt ;2 + push shift ;2 +shortcutEntry: + ldi cnt, 1 ;1 pre-init bit counter (-1 because no dec follows, -1 because 1 bit already sampled) + ldi x2, 1< 8 edge sync ended with D- == 0 +;now wait until SYNC byte is over. Wait for either 2 bits low (success) or 2 bits high (failure) +waitNoChange: + in x1, USBIN ;1 <-- sample, timing: edge + {2, 6} cycles + eor x2, x1 ;1 + sbrc x2, USBMINUS ;1 | 2 + ldi cnt, 2 ;1 | 0 cnt = numBits - 1 (because dec follows) + mov x2, x1 ;1 + dec cnt ;1 + brne waitNoChange ;2 | 1 + sbrc x1, USBMINUS ;2 + rjmp sofError ;0 two consecutive "1" bits -> framing error +;start reading data, but don't check for bitstuffing because these are the +;first bits. Use the cycles for initialization instead. Note that we read and +;store the binary complement of the data stream because eor results in 1 for +;a change and 0 for no change. + in x1, USBIN ;1 <-- sample bit 0, timing: edge + {3, 7} cycles + eor x2, x1 ;1 + ldi shift, 0x00 ;1 prepare for bitstuff check later on in loop + bst x2, USBMINUS ;1 + bld shift, 0 ;1 + push YH ;2 -> 7 + in x2, USBIN ;1 <-- sample bit 1, timing: edge + {2, 6} cycles + eor x1, x2 ;1 + bst x1, USBMINUS ;1 + bld shift, 1 ;1 + push YL ;2 + lds YL, usbInputBuf ;2 -> 8 + in x1, USBIN ;1 <-- sample bit 2, timing: edge + {2, 6} cycles + eor x2, x1 ;1 + bst x2, USBMINUS ;1 + bld shift, 2 ;1 + ldi cnt, USB_BUFSIZE;1 + ldi YH, hi8(usbRxBuf);1 assume that usbRxBuf does not cross a page + push x3 ;2 -> 8 + in x2, USBIN ;1 <-- sample bit 3, timing: edge + {2, 6} cycles + eor x1, x2 ;1 + bst x1, USBMINUS ;1 + bld shift, 3 ;1 + ser x3 ;1 + nop ;1 + rjmp rxbit4 ;2 -> 8 + +shortcutToStart: ;{,43} into next frame: max 5.5 sync bits missed +#if !USB_CFG_SAMPLE_EXACT + ldi x1, 5 ;2 setup timeout +#endif +waitForJ1: + sbis USBIN, USBMINUS ;1 wait for D- == 1 + rjmp waitForJ1 ;2 +#if USB_CFG_SAMPLE_EXACT +;The following code represents the unrolled loop in the else branch. It +;results in a sampling window of 1/4 bit which meets the spec. + sbis USBIN, USBMINUS + rjmp foundK1 + sbis USBIN, USBMINUS + rjmp foundK1 + sbis USBIN, USBMINUS + rjmp foundK1 + nop + nop2 +foundK1: +#else +waitForK1: + dec x1 ;1 + sbic USBIN, USBMINUS ;1 wait for D- == 0 + brne waitForK1 ;2 +#endif + pop YH ;2 correct stack alignment + nop2 ;2 delay for the same time as the pushes in the original code + rjmp shortcutEntry ;2 + +; ################# receiver loop ################# +; extra jobs done during bit interval: +; bit 6: se0 check +; bit 7: or, store, clear +; bit 0: recover from delay [SE0 is unreliable here due to bit dribbling in hubs] +; bit 1: se0 check +; bit 2: se0 check +; bit 3: overflow check +; bit 4: se0 check +; bit 5: rjmp + +; stuffed* helpers have the functionality of a subroutine, but we can't afford +; the overhead of a call. We therefore need a separate routine for each caller +; which jumps back appropriately. + +stuffed5: ;1 for branch taken + in x2, USBIN ;1 <-- sample @ +1 + andi x2, USBMASK ;1 + breq se0a ;1 + andi x3, ~0x20 ;1 + ori shift, 0x20 ;1 + rjmp rxbit6 ;2 + +stuffed6: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0a ;1 + andi x3, ~0x40 ;1 + ori shift, 0x40 ;1 + rjmp rxbit7 ;2 + +; This is somewhat special because it has to compensate for the delay in bit 7 +stuffed7: ;1 for branch taken + andi x1, USBMASK ;1 already sampled by caller + breq se0a ;1 + mov x2, x1 ;1 ensure correct NRZI sequence + ori shift, 0x80 ;1 no need to set reconstruction in x3: shift has already been used + in x1, USBIN ;1 <-- sample bit 0 + rjmp unstuffed7 ;2 + +stuffed0: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0a ;1 + andi x3, ~0x01 ;1 + ori shift, 0x01 ;1 + rjmp rxbit1 ;2 + +;----------------------------- +rxLoop: + breq stuffed5 ;1 +rxbit6: + in x1, USBIN ;1 <-- sample bit 6 + andi x1, USBMASK ;1 + breq se0a ;1 + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 6 ;1 + cpi shift, 0x02 ;1 + brlo stuffed6 ;1 +rxbit7: + in x2, USBIN ;1 <-- sample bit 7 + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 7 ;1 + eor x3, shift ;1 x3 is 0 at bit locations we changed, 1 at others + st y+, x3 ;2 the eor above reconstructed modified bits and inverted rx data + ser x3 ;1 +rxbit0: + in x1, USBIN ;1 <-- sample bit 0 + cpi shift, 0x04 ;1 + brlo stuffed7 ;1 +unstuffed7: + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 0 ;1 + andi shift, 0xf9 ;1 + breq stuffed0 ;1 +rxbit1: + in x2, USBIN ;1 <-- sample bit 1 + andi x2, USBMASK ;1 +se0a: ; enlarge jump range to SE0 + breq se0 ;1 check for SE0 more often close to start of byte + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 1 ;1 + andi shift, 0xf3 ;1 + breq stuffed1 ;1 +rxbit2: + in x1, USBIN ;1 <-- sample bit 2 + andi x1, USBMASK ;1 + breq se0 ;1 + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 2 ;1 + andi shift, 0xe7 ;1 + breq stuffed2 ;1 +rxbit3: + in x2, USBIN ;1 <-- sample bit 3 + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 3 ;1 + dec cnt ;1 check for buffer overflow + breq overflow ;1 + andi shift, 0xcf ;1 + breq stuffed3 ;1 +rxbit4: + in x1, USBIN ;1 <-- sample bit 4 + andi x1, USBMASK ;1 + breq se0 ;1 + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 4 ;1 + andi shift, 0x9f ;1 + breq stuffed4 ;1 +rxbit5: + in x2, USBIN ;1 <-- sample bit 5 + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 5 ;1 + andi shift, 0x3f ;1 + rjmp rxLoop ;2 +;----------------------------- + +stuffed1: ;1 for branch taken + in x2, USBIN ;1 <-- sample @ +1 + andi x2, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x02 ;1 + ori shift, 0x02 ;1 + rjmp rxbit2 ;2 + +stuffed2: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x04 ;1 + ori shift, 0x04 ;1 + rjmp rxbit3 ;2 + +stuffed3: ;1 for branch taken + in x2, USBIN ;1 <-- sample @ +1 + andi x2, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x08 ;1 + ori shift, 0x08 ;1 + rjmp rxbit4 ;2 + +stuffed4: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x10 ;1 + ori shift, 0x10 ;1 + rjmp rxbit5 ;2 + +;################ end receiver loop ############### + +overflow: ; ignore package if buffer overflow + rjmp rxDoReturn ; enlarge jump range + +;This is the only non-error exit point for the software receiver loop +;{4, 20} cycles after start of SE0, typically {10, 18} after SE0 start = {-6, 2} from end of SE0 +;next sync starts {16,} cycles after SE0 -> worst case start: +4 from next sync start +;we don't check any CRCs here because there is no time left. +se0: ;{-6, 2} from end of SE0 / {,4} into next frame + mov cnt, YL ;1 assume buffer in lower 256 bytes of memory + lds YL, usbInputBuf ;2 reposition to buffer start + sub cnt, YL ;1 length of message + ldi x1, 1< 19 = {13, 21} from SE0 end + cpi x1, USBPID_OUT ;1 + breq isSetupOrOut ;2 -> 22 = {16, 24} from SE0 end / {,24} into next frame + cpi x1, USBPID_IN ;1 + breq handleIn ;1 +#define USB_DATA_MASK ~(USBPID_DATA0 ^ USBPID_DATA1) + andi x1, USB_DATA_MASK ;1 + cpi x1, USBPID_DATA0 & USB_DATA_MASK ;1 + brne rxDoReturn ;1 not a data PID -- ignore +isData: + lds x2, usbCurrentTok ;2 + tst x2 ;1 + breq rxDoReturn ;1 for other device or spontaneous data -- ignore + lds x1, usbRxLen ;2 + cpi x1, 0 ;1 + brne sendNakAndReti ;1 no buffer space available / {30, 38} from SE0 end +; 2006-03-11: The following two lines fix a problem where the device was not +; recognized if usbPoll() was called less frequently than once every 4 ms. + cpi cnt, 4 ;1 zero sized data packets are status phase only -- ignore and ack + brmi sendAckAndReti ;1 keep rx buffer clean -- we must not NAK next SETUP + sts usbRxLen, cnt ;2 store received data, swap buffers + sts usbRxToken, x2 ;2 + lds x1, usbAppBuf ;2 + sts usbAppBuf, YL ;2 + sts usbInputBuf, x1 ;2 buffers now swapped + rjmp sendAckAndReti ;2 -> {43, 51} from SE0 end + +handleIn: ; {18, 26} from SE0 end + cp x2, shift ;1 shift contains our device addr + brne rxDoReturn ;1 other device +#if USB_CFG_HAVE_INTRIN_ENDPOINT + sbrc x3, 7 ;2 x3 contains addr + endpoint + rjmp handleIn1 ;0 +#endif + lds cnt, usbTxLen ;2 + sbrc cnt, 4 ;2 + rjmp sendCntAndReti ;0 -> {27, 35} from SE0 end + ldi x1, USBPID_NAK ;1 + sts usbTxLen, x1 ;2 buffer is now free + ldi YL, lo8(usbTxBuf) ;1 + ldi YH, hi8(usbTxBuf) ;1 + rjmp usbSendAndReti ;2 -> {34, 43} from SE0 end + +; Comment about when to set usbTxLen to USBPID_NAK: +; We should set it back when we receive the ACK from the host. This would +; be simple to implement: One static variable which stores whether the last +; tx was for endpoint 0 or 1 and a compare in the receiver to distinguish the +; ACK. However, we set it back immediately when we send the package, +; assuming that no error occurs and the host sends an ACK. We save one byte +; RAM this way and avoid potential problems with endless retries. The rest of +; the driver assumes error-free transfers anyway. + +otherOutOrSetup: + clr x1 + sts usbCurrentTok, x1 +rxDoReturn: + pop x3 ;2 + pop YL ;2 + pop YH ;2 + rjmp sofError ;2 + +isSetupOrOut: ; we must be fast here -- a data package may follow / {,24} into next frame + cp x2, shift ;1 shift contains our device addr + brne otherOutOrSetup ;1 other device -- ignore +#if USB_CFG_IMPLEMENT_FN_WRITEOUT /* if we need second OUT endpoint, store endpoint address */ + andi x1, 0x7f ;1 mask out MSb in token + andi x3, 0x80 ;1 mask out all but endpoint address + or x1, x3 ;1 merge endpoint into currentToken + sts usbCurrentTok, x1 ;2 + brmi dontResetEP0 ;1 endpoint 1 -> don't reset endpoint 0 input +#else + sts usbCurrentTok, x1 ;2 +#endif +;A transmission can still have data in the output buffer while we receive a +;SETUP package with an IN phase. To avoid that the old data is sent as a reply, +;we abort transmission. We don't need to reset usbMsgLen because it is used +;from the main loop only where the setup is processed anyway. + ldi x1, USBPID_NAK ;1 + sts usbTxLen, x1 ;2 abort transmission +dontResetEP0: + pop x3 ;2 + pop YL ;2 + in x1, USB_INTR_PENDING;1 + sbrc x1, USB_INTR_PENDING_BIT;1 check whether data is already arriving {,41} into next frame + rjmp shortcutToStart ;2 save the pops and pushes -- a new interrupt is aready pending +;If the jump above was not taken, we can be at {,2} into the next frame here + pop YH ;2 +txDoReturn: +sofError: ; error in start of frame -- ignore frame + ldi x1, 1< {,21} into next frame -> up to 3 sync bits missed + +sendCntAndReti: ; 19 cycles until SOP + mov x3, cnt ;1 + rjmp usbSendX3 ;2 +sendNakAndReti: ; 19 cycles until SOP + ldi x3, USBPID_NAK ;1 + rjmp usbSendX3 ;2 +sendAckAndReti: ; 17 cycles until SOP + ldi x3, USBPID_ACK ;1 +usbSendX3: + ldi YL, 20 ;1 'x3' is R20 + ldi YH, 0 ;1 + ldi cnt, 2 ;1 +;;;;rjmp usbSendAndReti fallthrough + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) or USBOUT = 0x01 +; K = (D+ = 1), (D- = 0) or USBOUT = 0x02 +; Spec allows 7.5 bit times from EOP to SOP for replies (= 60 cycles) + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte +;uses: x1...x4, shift, cnt, Y +usbSendAndReti: ; SOP starts 13 cycles after call + push x4 ;2 + ldi x4, USBMASK ;1 exor mask + sbi USBOUT, USBMINUS;1 prepare idle state; D+ and D- must have been 0 (no pullups) + in x1, USBOUT ;1 port mirror for tx loop + sbi USBDDR, USBMINUS;1 + sbi USBDDR, USBPLUS ;1 set D+ and D- to output: acquire bus +; need not init x2 (bitstuff history) because sync starts with 0 + ldi shift, 0x80 ;1 sync byte is first byte sent + rjmp txLoop ;2 -> 13 + 3 = 16 cycles until SOP + +#if USB_CFG_HAVE_INTRIN_ENDPOINT /* placed here due to relative jump range */ +handleIn1: ;{23, 31} from SE0 + ldi x1, USBPID_NAK ;1 +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +; 2006-06-10 as suggested by O.Tamura: support second INTR IN / BULK IN endpoint + ldd x2, y+2 ;2 + sbrc x2, 0 ;2 1 + rjmp handleIn3 ;0 2 +#endif + lds cnt, usbTxLen1 ;2 + sbrc cnt, 4 ;2 + rjmp sendCntAndReti ;0 + sts usbTxLen1, x1 ;2 + ldi YL, lo8(usbTxBuf1);1 + ldi YH, hi8(usbTxBuf1);1 + rjmp usbSendAndReti ;2 -> arrives at usbSendAndReti {34, 42} from SE0 + +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +handleIn3: + lds cnt, usbTxLen3 ;2 + sbrc cnt, 4 ;2 + rjmp sendCntAndReti ;0 + sts usbTxLen3, x1 ;2 + ldi YL, lo8(usbTxBuf3);1 + ldi YH, hi8(usbTxBuf3);1 + rjmp usbSendAndReti ;2 -> arrives at usbSendAndReti {39, 47} from SE0 +#endif +#endif + +bitstuff0: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + out USBOUT, x1 ;1 <-- out + rjmp didStuff0 ;2 branch back 2 cycles earlier +bitstuff1: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + sec ;1 set carry so that brsh will not jump + out USBOUT, x1 ;1 <-- out + rjmp didStuff1 ;2 jump back 1 cycle earler +bitstuff2: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff2 ;2 jump back 3 cycles earlier and do out +bitstuff3: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff3 ;2 jump back earlier + +txLoop: + sbrs shift, 0 ;1 + eor x1, x4 ;1 + out USBOUT, x1 ;1 <-- out + ror shift ;1 + ror x2 ;1 +didStuff0: + cpi x2, 0xfc ;1 + brsh bitstuff0 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + out USBOUT, x1 ;1 <-- out + ror x2 ;1 + cpi x2, 0xfc ;1 +didStuff1: + brsh bitstuff1 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff2: + out USBOUT, x1 ;1 <-- out + cpi x2, 0xfc ;1 + brsh bitstuff2 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff3: + cpi x2, 0xfc ;1 + out USBOUT, x1 ;1 <-- out + brsh bitstuff3 ;1 + nop2 ;2 + ld x3, y+ ;2 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + out USBOUT, x1 ;1 <-- out + ror shift ;1 + ror x2 ;1 +didStuff4: + cpi x2, 0xfc ;1 + brsh bitstuff4 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + out USBOUT, x1 ;1 <-- out + ror x2 ;1 + cpi x2, 0xfc ;1 +didStuff5: + brsh bitstuff5 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff6: + out USBOUT, x1 ;1 <-- out + cpi x2, 0xfc ;1 + brsh bitstuff6 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff7: + cpi x2, 0xfc ;1 + out USBOUT, x1 ;1 <-- out + brsh bitstuff7 ;1 + mov shift, x3 ;1 + dec cnt ;1 + brne txLoop ;2 | 1 + cbr x1, USBMASK ;1 prepare SE0 [spec says EOP may be 15 to 18 cycles] + pop x4 ;2 + out USBOUT, x1 ;1 <-- out SE0 -- from now 2 bits = 16 cycles until bus idle + ldi cnt, 2 ;| takes cnt * 3 cycles +se0Delay: ;| + dec cnt ;| + brne se0Delay ;| -> 2 * 3 = 6 cycles +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + lds x2, usbNewDeviceAddr;2 + subi YL, 20 + 2 ;1 + sbci YH, 0 ;1 + breq skipAddrAssign ;2 + sts usbDeviceAddr, x2 ;0 if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ori x1, USBIDLE ;1 + in x2, USBDDR ;1 + cbr x2, USBMASK ;1 set both pins to input + out USBOUT, x1 ;1 <-- out J (idle) -- end of SE0 (EOP signal) + cbr x1, USBMASK ;1 configure no pullup on both pins + pop x3 ;2 + pop YL ;2 + out USBDDR, x2 ;1 <-- release bus now + out USBOUT, x1 ;1 set pullup state + pop YH ;2 + rjmp txDoReturn ;2 [we want to jump to rxDoReturn, but this saves cycles] + + +bitstuff4: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + out USBOUT, x1 ;1 <-- out + rjmp didStuff4 ;2 jump back 2 cycles earlier +bitstuff5: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + sec ;1 set carry so that brsh is not taken + out USBOUT, x1 ;1 <-- out + rjmp didStuff5 ;2 jump back 1 cycle earlier +bitstuff6: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff6 ;2 jump back 3 cycles earlier and do out there +bitstuff7: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff7 ;2 jump back 4 cycles earlier + +; ######################## utility functions ######################## + +#ifdef __IAR_SYSTEMS_ASM__ +/* Register assignments for usbCrc16 on IAR cc */ +/* Calling conventions on IAR: + * First parameter passed in r16/r17, second in r18/r19 and so on. + * Callee must preserve r4-r15, r24-r29 (r28/r29 is frame pointer) + * Result is passed in r16/r17 + * In case of the "tiny" memory model, pointers are only 8 bit with no + * padding. We therefore pass argument 1 as "16 bit unsigned". + */ +RTMODEL "__rt_version", "3" +/* The line above will generate an error if cc calling conventions change. + * The value "3" above is valid for IAR 4.10B/W32 + */ +# define argLen r18 /* argument 2 */ +# define argPtrL r16 /* argument 1 */ +# define argPtrH r17 /* argument 1 */ + +# define resCrcL r16 /* result */ +# define resCrcH r17 /* result */ + +# define ptrL ZL +# define ptrH ZH +# define ptr Z +# define byte r22 +# define bitCnt r19 +# define polyL r20 +# define polyH r21 +# define scratch r23 + +#else /* __IAR_SYSTEMS_ASM__ */ +/* Register assignments for usbCrc16 on gcc */ +/* Calling conventions on gcc: + * First parameter passed in r24/r25, second in r22/23 and so on. + * Callee must preserve r1-r17, r28/r29 + * Result is passed in r24/r25 + */ +# define argLen r22 /* argument 2 */ +# define argPtrL r24 /* argument 1 */ +# define argPtrH r25 /* argument 1 */ + +# define resCrcL r24 /* result */ +# define resCrcH r25 /* result */ + +# define ptrL XL +# define ptrH XH +# define ptr x +# define byte r18 +# define bitCnt r19 +# define polyL r20 +# define polyH r21 +# define scratch r23 + +#endif + +; extern unsigned usbCrc16(unsigned char *data, unsigned char len); +; data: r24/25 +; len: r22 +; temp variables: +; r18: data byte +; r19: bit counter +; r20/21: polynomial +; r23: scratch +; r24/25: crc-sum +; r26/27=X: ptr +usbCrc16: + mov ptrL, argPtrL + mov ptrH, argPtrH + ldi resCrcL, 0xff + ldi resCrcH, 0xff + ldi polyL, lo8(0xa001) + ldi polyH, hi8(0xa001) +crcByteLoop: + subi argLen, 1 + brcs crcReady + ld byte, ptr+ + ldi bitCnt, 8 +crcBitLoop: + mov scratch, byte + eor scratch, resCrcL + lsr resCrcH + ror resCrcL + lsr byte + sbrs scratch, 0 + rjmp crcNoXor + eor resCrcL, polyL + eor resCrcH, polyH +crcNoXor: + dec bitCnt + brne crcBitLoop + rjmp crcByteLoop +crcReady: + com resCrcL + com resCrcH + ret + +; extern unsigned usbCrc16Append(unsigned char *data, unsigned char len); +usbCrc16Append: + rcall usbCrc16 + st ptr+, resCrcL + st ptr+, resCrcH + ret diff --git a/firmware/usbdrv/usbdrvasm.asm b/firmware/usbdrv/usbdrvasm.asm new file mode 100644 index 0000000..75478ed --- /dev/null +++ b/firmware/usbdrv/usbdrvasm.asm @@ -0,0 +1,21 @@ +/* Name: usbdrvasm.asm + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbdrvasm.asm,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +/* +General Description: +The IAR compiler/assembler system prefers assembler files with file extension +".asm". We simply provide this file as an alias for usbdrvasm.S. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#include "usbdrvasm.S" + +end